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>San Francisco Real Estate Agents | Kinoko Real Estate</title> 10 <meta property="og:title" content="San Francisco Real Estate Agents | Kinoko Real Estate"> 11 <meta name="twitter:title" content="San Francisco Real Estate Agents | Kinoko Real Estate"> 12 <meta name="description" content="Kevin & Nini Gueco lead Kinoko Real Estate, San Francisco real estate agents with 500+ transactions and $734M+ in sales. Buy or sell your home with us."> 13 <meta property="og:description" content="Kevin & Nini Gueco lead Kinoko Real Estate, San Francisco real estate agents with 500+ transactions and $734M+ in sales. Buy or sell your home with us."> 14 <meta name="twitter:description" content="Kevin & Nini Gueco lead Kinoko Real Estate, San Francisco real estate agents with 500+ transactions and $734M+ in sales. Buy or sell your home with us."> 15 <meta property="og:image" content="https://media-production.lp-cdn.com/media/0764f1ce-af37-488d-a174-0efe8f742479"> 16 <meta name="twitter:image" content="https://media-production.lp-cdn.com/media/0764f1ce-af37-488d-a174-0efe8f742479"> 17 <meta property="og:url" content="https://kinokorealestate.com/"> 18 <link rel="canonical" href="https://kinokorealestate.com/"> 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=Inter:100,200,300,400,500,600,700,800,900"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:100,100i,300,300i,400,400i,700,700i,900,900i"> 23 <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 24 <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css"></noscript> 25 <link rel="icon" type="image/x-icon" href="/favicon.ico"> 26 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 27 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 28 <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png"> 29 <style id="global-css">:root{--global-primary-font-family:Inter,sans-serif;--global-primary-font-family-short:Inter;--global-secondary-font-family:Lato,sans-serif;--global-secondary-font-family-short:Lato;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:16px;--global-h1-font-size:65px;--global-h2-font-size:43px;--global-h3-font-size:31px;--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:Lato,sans-serif;font-size:16px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:Inter,sans-serif;}h1{font-size:65px;}h2{font-size:43px;}h3{font-size:31px;}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">@font-face{font-family:'Helvetica Neue LT Std';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/HelveticaNeueLT/HelveticaNeueLTStd-BdEx.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/HelveticaNeueLT/HelveticaNeueLTStd-BdEx.woff') format('woff');font-weight:bold;font-style:normal;}@font-face{font-family:'NeueHaasGroteskText Pro';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/NHaasGroteskTXPro/NHaasGroteskTXPro-55Rg.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/NHaasGroteskTXPro/NHaasGroteskTXPro-55Rg.woff') format('woff');font-weight:normal;font-style:normal;}:root{--global-primary-font-family:"Helvetica Neue LT Std",sans-serif;--global-primary-font-family-short:"Helvetica Neue LT Std";--global-secondary-font-family:"NeueHaasGroteskText Pro",sans-serif;--global-secondary-font-family-short:"NeueHaasGroteskText Pro";}footer#global-footer h3:before{content:'';background-image:url(https://res.cloudinary.com/luxuryp/images/f_auto,q_auto/fca8lyef3opuxjqid13h/kinoko-footer-resized-small-1);content:"";width:200px!important;height:50px;display:block;-webkit-background-size:contain;-webkit-background-size:contain;background-size:contain;white-space:pre;background-repeat:no-repeat;}@media only screen and (max-width: 820px){#modal-global-contact-us .close{margin-top:-30px;}}nav#global-navbar .header .navigation .sub-nav ul{background-color:transparent;}nav#global-navbar .header .navigation .sub-nav ul li{background-color:#fff;}nav#global-navbar .header .navigation .sub-nav ul li:hover{background-color:#F9F3F0;}nav#global-navbar .header .navigation .sub-nav ul a{color:#000;}nav#global-navbar.scroll{background-color:#fff!important;}nav#global-navbar.scroll li.navigation__item a.navigation__link{color:#000;}nav#global-navbar.scroll li.navigation__item a.navigation__link span:after{background-color:#000;}nav#global-navbar.scroll button.hamburger-component.hamburger{color:#354764;}nav#global-navbar .header .logo img{max-height:40px;}#global-navbar.scroll .header a.logo__link img:last-child{display:block!important;}#global-navbar.scroll .header a.logo__link img:first-child{display:none!important;}div#modal-global-contact-us div.modal-content div.contact-form.redesign:after{background-color:#354764!important;}div#modal-global-contact-us .contact-form .section-message label{color:#fff;}footer#global-footer .footer.no_newsletter .info-wrap-contact{padding-left:0;}footer#global-footer .footer.no_newsletter .info-wrap-contact h4{display:none!important;}footer#global-footer div.info-wrap{padding-top:40px;}@media only screen and (max-width: 767px){footer#global-footer div.info-wrap{padding-top:55px;}}footer#global-footer h3{font-size:0px;}footer#global-footer h3:after{font-family:var(--global-secondary-font-family);position:relative;line-height:25px;top:30px;font-size:14px;white-space:pre-wrap;text-transform:none;margin-top:40px;padding-top:40px;content:"\a We are guided by connection, collaboration, and consciousness. Our long term success depends on being \a more than transactional, and our goal at Kinoko is to establish clients for life. It's that simple.";}footer#global-footer .lp-link:after{background-color:#C44628;}
31#global-footer div.footer .info-wrap-contact_zone svg path{fill:#354764;}#global-footer div.footer .info-wrap-contact_title{color:#354764;}#global-footer div.footer .info-wrap .contact_title{color:#354764;}@media only screen and (min-width: 769px){#global-footer .footer .info-privacy{border-top:1px solid #354764;}}@media only screen and (max-width: 768px){#global-footer .footer .info-privacy .socials_zone{margin-top:25px;}#global-footer .footer .info-privacy .copy_zone{border-top:1px solid #354764;}}div#global-mobile-contact .buttons-holder a{background:#C44628;border:2px solid #a6a6a6!important;}div#global-mobile-contact .buttons-holder a i{color:#fff;}footer#global-footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:21px;}footer#global-footer .info-wrap-contact_zone{margin-bottom:21px;}@media only screen and (max-width: 768px){footer#global-footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:20px;}}@media only screen and (max-width: 768px){footer#global-footer .info-wrap-contact_zone{margin-bottom:0;}}@media only screen and (max-width: 768px){footer#global-footer .footer.no_newsletter h3{margin-bottom:20px;}}div#modal-global-contact-us .contact-form .section-message textarea{border:solid 1px #fff;}div#modal-global-contact-us .contact-form .lp-input{border-color:#fff;}div#modal-global-contact-us .contact-form .section-message:after{background:#fff;}div#modal-global-contact-us .contact-form .info-zone .info-zone_contact_cell{margin-bottom:21px;}div#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:21px;}@media only screen and (max-width: 768px){div#modal-global-contact-us .contact-form .info-zone .type_user{margin-bottom:25px;}}div#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:14px;}div#modal-global-contact-us .contact-form .section-message h2{font-size:38px;}@media only screen and (max-width: 768px){div#modal-global-contact-us .contact-form .section-message h2{font-size:28px;}}div#modal-global-contact-us .contact-form h2{font-size:38px;}@media only screen and (max-width: 768px){div#modal-global-contact-us .contact-form h2{font-size:28px;}}div#modal-global-contact-us .contact-form .section-message form{max-width:490px;}@media only screen and (max-width:1080px){div#modal-global-contact-us .contact-form h2{font-size:37px;}}@media only screen and (max-width:925px){div#modal-global-contact-us .contact-form h2{font-size:28px;}}div#modal-global-contact-us .close{top:7vh;}div#modal-global-contact-us div.modal-content div.contact-form.redesign:after{background-color:rgba(0, 0, 0, 0.75);}.redesign .btn--small{padding:20px 46px!important;}.lp-btn{padding:20px 46px!important;}button.newsletter-signup__form-item{line-height:1;font-weight:700;}#modal-global-contact-us .contact-form .section-message form .submitButton{padding:14px 20px;}#modal-global-contact-us .redesign .link:after{background-color:#fff;}footer#global-footer .footer .info-privacy .copy_zone a,footer#global-footer .footer .info-privacy .powered_zone a{font-weight:400;}#modal-global-contact-us .section-message:after{background:#fff!important;}#modal-global-contact-us .lp-input-group .lp-input{border-color:#fff!important;}#modal-global-contact-us .lp-input-group .lp-label{text-transform:uppercase;}#modal-global-contact-us .lp-input-group textarea{border:solid 1px #fff!important;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:22px;}#modal-global-contact-us .contact-form .info-zone .type_user{margin-bottom:22px!important;}}#global-footer .info-wrap-contact_zone h4{line-height:.8;}@media (max-width: 768px){#global-footer .info-wrap-contact_zone h4{line-height:1.5;}}#global-navbar .navbar .navigation ul .sub-nav-container .sub-nav ul li a{color:#C44628;}nav#global-navbar .header .navigation__link{font-size:11px;}h1{font-size:50px!important;}h2{font-size:30px!important;}h3{font-size:27px!important;}h4{font-size:16px!important;}h5{font-size:11px!important;}div#global-sidemenu a{font-size:16px;}.custom-intro h1.custom-intro__title{font-size:40px!important;}.custom-intro .custom-intro__subtitle{font-size:17px!important;}nav .header .navigation .sub-nav__link{font-size:11px!important;}footer .footer.no_newsletter h3{color:#fff;}footer .footer.no_newsletter h3:after{color:#354864!important;}</style> 32 <style id="wow-hide-elements">.wow{visibility:hidden!important}</style> 33 <style id="page-css"> 34 #section-bcabfae8-4664-4efa-a488-eceb5362ee27{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;}@media (max-width: 560px){#section-bcabfae8-4664-4efa-a488-eceb5362ee27 div.collection .btn-container{padding-bottom:50px;}}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .item{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .lp-title-group{text-align:left;margin:0px 0 0px;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .lp-text--pretitle{font-size:30px;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .video-wrapper video,#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .video-wrapper div.poster{z-index:0!important;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27>.video-wrapper>.full-screen-video-component>.video-wrapper::before{content:'';position:absolute;width:100%;height:100%;top:0;left:0;background-color:#000;z-index:-1000;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27>.video-wrapper>.full-screen-video-component>.video-wrapper >video{-webkit-transition:opacity 2s cubic-bezier(0.835, 0, 0.19, 1);transition:opacity 2s cubic-bezier(0.835, 0, 0.19, 1);opacity:0;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27>.video-wrapper>.full-screen-video-component>.video-wrapper.playing>
34video{opacity:1;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection{padding:120px 0 0;min-height:100vh;margin: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-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection.slick-initialized{pointer-events:none;}}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .item{text-align:center;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;min-height:calc(100vh - 240px);}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .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-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .btn-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:10px;}}@media (max-width: 768px){#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .lp-btn{pointer-events:initial;}}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .slick-active .animation{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);opacity:1;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .animation{-webkit-transition:all .6s;transition:all .6s;-webkit-transform:translateX(-100px);-moz-transform:translateX(-100px);-ms-transform:translateX(-100px);transform:translateX(-100px);opacity:0;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .lp-title-group,#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .lp-text--pretitle{max-width:100%;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .slick-dots{margin:30px auto 85px;padding:0;position:relative;top:0;bottom:0;left:0;right:0;list-style-type:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:360px;max-width:100%;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .slick-dots li{margin:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;width:auto;height:auto;position:static;display:block;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .slick-dots li.slick-active button:after{opacity:1;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .slick-dots button{display:block;font-size:0;color:inherit;border-radius:0;border:none;width:100%;height:30px;cursor:pointer;position:relative;background-color:transparent;padding:0;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .slick-dots button:before{display:none;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection .slick-dots button:after{display:block;content:'';width:100%;position:absolute;left:0;top:50%;height:1px;background-color:currentColor;opacity:0.5;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection:not(.slick-initialized) .item{margin-bottom:145px;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .collection:not(.slick-initialized) .item:nth-child(n + 2){display:none;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 >*:last-child{position:relative;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .overlay-component{position:absolute;top:0;bottom:0;left:0;right:0;background-color:var(--overlay-color, var(--section-overlay, rgba(0, 0, 0, 0.3)));transition-property:opacity;transition-timing-function:linear;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .video-wrapper{position:absolute;top:0;left:0;height:100%;width:100%;}@media screen and (max-width: 900px){#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .video-wrapper.hidable{display:none;}}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .full-screen-video-component{position:relative;height:100%;overflow:hidden;}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 video{position:absolute;z-index:-1000;width:100%;object-fit:cover;}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){#section-bcabfae8-4664-4efa-a488-eceb5362ee27 video{overflow:hidden;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);-moz-transform:translateX(-50%) translateY(-50%);-ms-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);min-width:100%;min-height:100%;width:auto;height:auto!important;}}#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .poster{display:none;position:absolute;top:0;left:0;bottom:0;right:0;z-index:-1000;background:center center/cover;}@media screen and (max-width: 900px){#section-bcabfae8-4664-4efa-a488-eceb5362ee27 .poster{display:block;}}#section-951a1889-3429-42e7-8d93-31df407aeb20{color:#354764;--fontColor:#354764;--fontColor_H:217;--fontColor_S:31%;--fontColor_L:30%;--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-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-section--full-bleed{padding-top:0;}@media (min-width: 993px){#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-section--full-bleed{padding-bottom:0;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 992px){#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image--reverse{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;}@media (max-width: 992px){#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image--reverse{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image--reverse .hoverable-image__text-col{padding-right:120px;padding-left:0;}@media (max-width: 992px){#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image--reverse .hoverable-image__text-col{padding:0;margin-top:29px;margin-bottom:0;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__img-col{-webkit-flex:50%;-ms-flex:50%;flex:50%;z-index:1;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__img-col>div{width:100%;height:100%;position:relative;padding-bottom:79%;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .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-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__img-col>div .main-image{visibility:visible;opacity:1;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__img-col>div .secondary-image{visibility:hidden;opacity:0;}@media (hover: hover) and (pointer: fine){#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__img-col--on-hover:hover .main-image{visibility:hidden;opacity:0;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__img-col--on-hover:hover .
34secondary-image{visibility:visible;opacity:1;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__img-col--on-hover.active .main-image{visibility:hidden;opacity:0;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__img-col--on-hover.active .secondary-image{visibility:visible;opacity:1;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .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-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__text-col{padding-left:0;margin-top:29px;margin-bottom:0;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__text-col .lp-text--subtitle{max-width:100%;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .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-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__text-col .buttons-wrapper{margin:0;}}@media (max-width: 576px){#section-951a1889-3429-42e7-8d93-31df407aeb20 .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-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__text-col .buttons-wrapper .lp-btn{vertical-align:top;margin:24px 12px 0;}@media (max-width: 560px){#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__text-col .buttons-wrapper .lp-btn{margin-left:0;margin-right:0;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__text-wrap{-webkit-flex:1;-ms-flex:1;flex:1;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .hoverable-image__text-wrap p:last-child{margin-bottom:0;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .full-bleed-container{padding:0;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .full-bleed-container .hoverable-image__text-col{padding:69px;}@media (max-width: 992px){#section-951a1889-3429-42e7-8d93-31df407aeb20 .full-bleed-container .hoverable-image__text-col{padding:0;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .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-951a1889-3429-42e7-8d93-31df407aeb20 .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-951a1889-3429-42e7-8d93-31df407aeb20 .full-bleed-container .hoverable-image__img-col>div{max-height:none;}#section-951a1889-3429-42e7-8d93-31df407aeb20 .full-bleed-container .hoverable-image--straight .hoverable-image__text-wrap{padding-left:calc(50% + 69px);}@media (max-width: 992px){#section-951a1889-3429-42e7-8d93-31df407aeb20 .full-bleed-container .hoverable-image--straight .hoverable-image__text-wrap{padding-left:0;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .full-bleed-container .hoverable-image--reverse .hoverable-image__text-wrap{padding-right:calc(50% + 69px);}@media (max-width: 992px){#section-951a1889-3429-42e7-8d93-31df407aeb20 .full-bleed-container .hoverable-image--reverse .hoverable-image__text-wrap{padding-right:0;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .lp-h2{margin-bottom:16px;}@media (max-width: 992px){#section-951a1889-3429-42e7-8d93-31df407aeb20 .lp-h2{margin-bottom:8px;}}#section-951a1889-3429-42e7-8d93-31df407aeb20 .redesign p{margin-bottom:1.666rem;text-transform:none;}#section-21378400-f49d-4db7-a004-7a7eafce8687{color:#354764;--fontColor:#354764;--fontColor_H:217;--fontColor_S:31%;--fontColor_L:30%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 0.2);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:0.2;--bgColor_darkenDir:-1;background-color:rgba(255, 255, 255, 0.2);}#section-21378400-f49d-4db7-a004-7a7eafce8687 a[href*="/neighborhoods/"]{border:none!important;box-shadow:none!important;}#section-21378400-f49d-4db7-a004-7a7eafce8687 a[href*="/neighborhoods/"]:not(:has(img)){background:transparent!important;background-color:transparent!important;border:2px solid #C44628!important;color:#C44628!important;box-shadow:none!important;}#section-21378400-f49d-4db7-a004-7a7eafce8687 a[href*="/neighborhoods/"]:not(:has(img)) *{color:#C44628!important;}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid{text-align:center;}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items{display:-ms-gri
34d;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;gap:0px 0px;}@media (min-width: 769px){#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items.three-columns{-ms-grid-columns:1fr 1fr 1fr;grid-template-columns:1fr 1fr 1fr;}}@media(max-width: 768px){#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items{-ms-grid-columns:1fr;grid-template-columns:1fr;}}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item{width:100%;overflow:hidden;}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item h3{margin-bottom:1.666rem;}@media (max-width: 768px){#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item h3{margin-bottom:0;}}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item .item-wrapper{padding-bottom:70%;position:relative;display:block;width:100%;}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item .item-wrapper .image-holder{-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out;position:absolute;left:0;right:0;top:0;bottom:0;background:center no-repeat;-webkit-background-size:cover;background-size:cover;}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item .item-wrapper .image-holder img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item .item-wrapper .overlay{position:absolute;left:0;right:0;top:0;bottom:0;background-color:rgba(0, 0, 0, 0.3);-webkit-transition:all .4s ease-in-out;transition:all .4s ease-in-out;}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item .item-wrapper .content-container{color:white;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);max-width:600px;width:70%;}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item .item-wrapper .content-container .button-wrapper{-webkit-transition:all linear 0.4s;transition:all linear 0.4s;}@media (min-width: 1025px){#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item .item-wrapper .content-container .button-wrapper{max-height:0;opacity:0;}}@media (max-width: 768px){#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item .item-wrapper .content-container .button-wrapper{display:none;}}@media (min-width: 1025px){#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item:hover .item-wrapper .image-holder,#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item:hover .item-wrapper .overlay{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1);}}@media (min-width: 1025px){#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .items .grid-item:hover .item-wrapper .content-container .button-wrapper{max-height:90px;opacity:1;}}#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .lp-pagination{margin-top:60px;}@media(max-width: 768px){#section-21378400-f49d-4db7-a004-7a7eafce8687 .featured-neighborhoods-grid .lp-pagination{margin-top:40px;}}#section-21378400-f49d-4db7-a004-7a7eafce8687 .lp-text--subtitle,#section-21378400-f49d-4db7-a004-7a7eafce8687 .lp-text--pretitle{margin-left:auto;margin-right:auto;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:rgba(0, 0, 0, 0.52);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:0%;--bgColor_A:0.52;--bgColor_darkenDir:1;background-color:rgba(0, 0, 0, 0.52);}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4>.double-image-grid:last-child{padding-top:0!important;padding-bottom:0!important;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .Half-Screen{min-height:50vh;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .Three-Quarters{min-height:75vh;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .Full-Bleed{min-height:100vh;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .double-image-grid{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;overflow:hidden;}@media (max-width: 768px){#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .double-image-grid{min-height:auto;}}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .cta-section{position:relative;width:100%;padding-left:15px;padding-right:15px;background:center/cover no-repeat;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-top:var(--section-padding-top, var(--global-section-padding));padding-bottom:var(--section-padding-bottom, var(--global-section-padding));-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}@media (min-width: 769px){#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .cta-section{max-width:50%;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;}}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .cta-section__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;-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;z-index:1;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .cta-section__overlay{position:absolute;left:0;right:0;bottom:0;top:0;background:#000;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .cta-section__text-block{width:100%;margin-left:auto;margin-right:auto;text-align:center;}@media (min-width: 769px){#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .cta-section__text-block{max-width:500px;}}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .cta-section h2{margin-bottom:15px;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .cta-section__lead{margin-bottom:40px;white-space:pre-line;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;max-width:100%;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .cta-section__btn-wrap{margin-top:40px;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .image-back{position:absolute;width:100%;height:100%;left:0;top:0;z-index:0;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .image-back:after{content:"";position:absolute;display:block;width:100%;height:100%;top:0;left:0;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .image-back img{height:100%;width:100%;object-fit:cover;}#section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4 .background{width:100%;height:100%;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e{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;background-color:#ffffff;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e div.testimonials.redesign .custom-arrows--dark.arrows button.slick-arrow{background-color:#D5A390;border-color:#D5A390;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e div.testimonials.redesign .custom-arrows--dark.arrows button.slick-arrow:before{color:#fff;opacity:1;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e div.testimonials.redesign .custom-arrows--dark.arrows button.slick-arrow:hover{background-color:#C44628;border-color:#C44628;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e div.testimonials.redesign .custom-arrows--dark.arrows button.slick-arrow:hover:before{color:#fff;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e div.slick-center.sl-active .userpic{background-color:#354764;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e div.slick-center.sl-active .userpic .userpic-initials{color:#fff;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e div.testimonials .userpic{background-color:#354764;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e div.testimonials .userpic .userpic-initials{color:#fff;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e>div:last-child{margin-top:96px;margin-bottom:96px;padding-top:0px!important;padding-bottom:0px!important;}@media only screen and (max-width:768px){#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e>div:last-child{margin-top:64px;margin-bottom:64px;}}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e h1,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e h2,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e h3{color:#354764;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials{--animTime:.3s;--slidePads:285px;padding:80px 0;}@media (max-width: 1340px){#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials{--slidePads:160px;}}@media (max-width: 991px){#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials{--slidePads:0;}}@media (max-width: 768px){#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials{padding:50px 0;}}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .title{text-align:center;margin:0 0 20px;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .subtitle{width:100%;max-width:640px;text-align:center;margin:0 auto 50px;}@media (max-width: 768px){#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .subtitle{margin-bottom:30px;}}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .title+.items-slider{margin-top:50px;}@media (max-width: 768px){#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .title+.items-slider{margin-top:30px;}}@media (max-width: 767px){#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .slider-container{padding:0;}}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .top-block{z-index:2;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;margin:0 auto;text-align:center;max-width:540px;
34display:-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;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .userpic{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:104px;height:104px;margin:0 auto 25px;border-radius:50%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;background-color:#000000;color:#fff;overflow:hidden;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .userpic img{display:block;width:100%;height:100%;object-fit:cover;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .userpic .userpic-initials{font-size:36px;line-height:1.3;font-weight:normal;text-align:center;margin:0 0 0.14em;display:inline;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .card-button{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;z-index:3;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .author{margin-bottom:20px;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .card{padding:50px 20px;box-shadow:0 2px 4px 0 rgba(0, 0, 0, 0.15);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-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;position:relative;}@media (max-width: 767px){#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .card{padding:30px 20px;}}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .card .video-wrapper,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .card .overlay-component,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .card .poster{position:absolute;top:0;left:0;width:100%;height:100%;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .card .poster{background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;z-index:-1;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item{padding:3px;position:relative;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.slick-slide{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:auto;-webkit-transition:all var(--animTime) ease;transition:all var(--animTime) ease;}@media (min-width: 992px){#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.sl-next,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.slick-slide.sl-next,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.sl-prev,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.slick-slide.sl-prev{opacity:0.5;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.sl-next .card,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.slick-slide.sl-next .card,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.sl-prev .card,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.slick-slide.sl-prev .card{padding-top:30px;padding-bottom:30px;margin:20px 0;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.sl-prev .card,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.slick-slide.sl-prev .card{-webkit-transform:translateX(calc(100% - var(--slidePads)));-moz-transform:translateX(calc(100% - var(--slidePads)));-ms-transform:translateX(calc(100% - var(--slidePads)));transform:translateX(calc(100% - var(--slidePads)));}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.sl-next .card,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.slick-slide.sl-next .card{-webkit-transform:translateX(calc(var(--slidePads) - 100%));-moz-transform:translateX(calc(var(--slidePads) - 100%));-ms-transform:translateX(calc(var(--slidePads) - 100%));transform:translateX(calc(var(--slidePads) - 100%));}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.sl-active,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .item.slick-slide.sl-active{z-index:1;}}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .items-slider .slick-track,#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .items-slider .slick-list{height:100%;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .items-slider .slick-track{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .items-slider:not(.slick-slider){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .items-slider:not(.slick-slider) .item{opacity:1;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:100%;padding-left:var(--slidePads);padding-right:var(--slidePads);}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .in-transition .card{-webkit-transition:all var(--animTime) ease;transition:all var(--animTime) ease;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .arrows{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;margin-top:30px;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .testimonials .arrows .slick-arrow{margin:0 13px;position:relative;top:auto;left:auto;bottom:auto;right:auto;}#section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e .description{margin-bottom:15px;}#section-a1b98f91-47eb-47b4-bb02-5c2c74f6f975{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-da5a7210-1edb-47e6-b554-6eb250d17dad{color:#354764;--fontColor:#354764;--fontColor_H:217;--fontColor_S:31%;--fontColor_L:30%;--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-da5a7210-1edb-47e6-b554-6eb250d17dad h1,#section-da5a7210-1edb-47e6-b554-6eb250d17dad h2,#section-da5a7210-1edb-47e6-b554-6eb250d17dad h3,#section-da5a7210-1edb-47e6-b554-6eb250d17dad h4,#section-da5a7210-1edb-47e6-b554-6eb250d17dad h5,#section-da5a7210-1edb-47e6-b554-6eb250d17dad h6,#section-da5a7210-1edb-47e6-b554-6eb250d17dad p,#section-da5a7210-1edb-47e6-b554-6eb250d17dad a{color:#354764!important;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad [class*="sold" i],#section-da5a7210-1edb-47e6-b554-6eb250d17dad [class*="status" i],#section-da5a7210-1edb-47e6-b554-6eb250d17dad [class*="badge" i],#section-da5a7210-1edb-47e6-b554-6eb250d17dad [class*="label" i]{background-color:#C44628!important;color:#FFFFFF!important;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad [class*="sold" i] *,#section-da5a7210-1edb-47e6-b554-6eb250d17dad [class*="status" i] *,#section-da5a7210-1edb-47e6-b554-6eb250d17dad [class*="badge" i] *,#section-da5a7210-1edb-47e6-b554-6eb250d17dad [class*="label" i] *{color:#FFFFFF!important;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .btn{width:100%;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .redesign .feature h4{text-transform:initial;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section{padding-bottom:140px;}@media (max-width: 991px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section{padding-bottom:100px;}}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section{padding-bottom:40px;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section h2{text-align:center;margin-bottom:0;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .title-container{padding-top:100px;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .title-container{padding-top:60px;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .title-container +.search-container{margin-top:40px;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .description-container{padding-top:32px;max-width:70%;margin:0 auto;text-align:center;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .description-container{max-width:100%;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container{color:black;padding:25px 30px;background-color:white;display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr 1fr auto;grid-template-columns:1fr 1fr 1fr auto;-ms-grid-rows:1fr;grid-template-rows:1fr;gap:0px 15px;grid-template-areas:". . . . .";}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container.show-neighborhood-select{-ms-grid-columns:1fr 1fr 1fr 1fr auto;grid-template-columns:1fr 1fr 1fr 1fr auto;}@media(max-width: 950px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container.show-neighborhood-select{-ms-grid-columns:1fr;grid-template-columns:1fr;-ms-grid-rows:auto auto auto auto;grid-template-rows:auto auto auto auto;grid-template-areas:"." "." "." ".";gap:25px;}}@media(max-width: 950px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container{-ms-grid-columns:1fr;grid-template-columns:1fr;-ms-grid-rows:auto auto auto auto;grid-template-rows:auto auto auto auto;grid-template-areas:"." "." "." ".";gap:25px;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container input[name="area-slider"],#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container input[name="price-slider"]{position:absolute!important;display:block!important;top:0!important;left:0!important;width:0!important;height:0!important;font-size:0!important;line-height:0!important;padding:0!important;margin:0!important;overflow:hidden;outline:none!important;z-index:-9999!important;background:none!important;border-style:solid!important;border-color:transparent!important;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container select{line-height:1.2!important;width:100%;border:none;border-bottom:1px solid;padding:5px 0;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;border-radius:0px;background-color:transparent;outline:none;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii01NDAgLTMyMCA4MDAgODAwIj48cGF0aCBkPSJNMjI1LjgxMyA0OC45MDdMMTI4IDE0Ni43MiAzMC4xODcgNDguOTA3IDAgNzkuMDkzbDEyOCAxMjggMTI4LTEyOHoiLz48L3N2Zz4K) no-repeat 100% 50%;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .text-search-input{border:none;border-bottom:1px solid;padding:5px 0;width:100%;border-radius:0;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round{height:38px;}@media(max-width: 950px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round{height:50px;}}
34#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-handle{width:10px;height:10px;border-width:1px;border-color:black;top:32px;box-shadow:none;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-bar{background-color:black;height:1px;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-line{height:1px;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-min,#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-max{display:none;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-from:before,#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-to:before,#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-single:before{display:none;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-from,#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-to,#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-single{font-size:13px;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-from{left:0!important;visibility:visible!important;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-to{right:0!important;left:auto!important;visibility:visible!important;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-single{display:none;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-from,#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-to,#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs--round .irs-single{background-color:transparent;color:gray;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs-from,#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs-to,#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .irs-single{top:10px;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .search-item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .search-item .search-title{font-weight:700;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .btn-item{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;}@media(max-width: 950px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list-section .search-container .btn-item{display:none;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;-ms-grid-rows:1fr;grid-template-rows:1fr;gap:55px 80px;grid-template-areas:". .";padding:0;color:#000;list-style:none;}@media (max-width: 991px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list{gap:55px 25px;}}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list{-ms-grid-columns:1fr;grid-template-columns:1fr;grid-template-areas:".";gap:35px 25px;justify-items:center;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list.three-items{-ms-grid-columns:1fr 1fr 1fr;grid-template-columns:1fr 1fr 1fr;grid-template-areas:". . .";gap:55px 40px;}@media (max-width: 1200px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list.three-items{-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;grid-template-areas:". .";gap:55px 80px;}}@media (max-width: 991px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list.three-items{gap:55px 25px;}}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list.three-items{-ms-grid-columns:1fr;grid-template-columns:1fr;grid-template-areas:".";gap:35px 25px;justify-items:center;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list.property-list--share .property-list__share{display:inline-block;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item{background-color:#fff;text-align:center;font-weight:bold;position:relative;min-height:500px;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item{min-height:1px;height:calc(100% - 1px);max-width:325px;width:99%;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item:hover .property-list__hover{opacity:1;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item h4{margin:0 0 7px;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item p{white-space:normal;margin:0 0 7px;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item p{margin-bottom:3px;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item h5{text-transform:none;margin:0;font-family:var(--global-secondary-font-family);}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item-link{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item-link{height:auto;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__img{width:100%;height:315px;vertical-align:top;background-color:gray;position:relative;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__img{height:200px;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__img img{width:100%;height:100%;object-fit:cover;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__text{background-color:#fff;padding:25px 15px 15px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__text{margin-bottom:15px;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__label{position:absolute;top:0;right:0;background:#000;color:#fff;
34padding:4px 35px;z-index:2;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .hover-link{position:absolute;top:0;left:0;width:100%;height:100%;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .hover-link{display:none;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__hover{position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(255, 255, 255, 0.75);opacity:0;-webkit-transition:opacity .2s linear;transition:opacity .2s linear;z-index:3;cursor:pointer;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__hover{opacity:1;background-color:var(--bgColor);position:static;padding:15px 0 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;height:auto;margin:0 -2px;width:calc(100% + 4px);}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__hover h4{text-transform:none;}@media(max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__hover h4{display:none;}}@media (min-width: 769px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__buttons{position:absolute;top:50%;left:50%;width:100%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__view .btn{margin-bottom:20px;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__view .btn{margin-bottom:0;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .btn{vertical-align:top;margin:0 10px;display:none;}@media(max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .btn{margin:0;}}@media(min-width: 769px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .btn.btn--primary-dark{display:inline-block;}}@media(max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .btn.btn--primary-light{display:inline-block;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__share{position:relative;display:none;}@media(max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__share{margin-bottom:25px;margin-top:15px;width:100%;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__share.property-list__share--opened .socials{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__share .socials{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;position:absolute;top:100%;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);display:none;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__share .socials .socials__link{width:70px;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .is-background-color-light ul.property-list .btn.btn--primary-dark{display:inline-block;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .is-background-color-light ul.property-list .btn.btn--primary-light{display:none;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .redesign ul.property-list{margin-bottom:60px;margin-top:60px;margin-left:0;}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .redesign ul.property-list{margin-bottom:30px;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .empty-result{text-align:center;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .label-house{bottom:0;position:absolute;width:100%;padding:8px 0;background:rgba(255, 255, 255, 0.7);}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .label-house{font-size:12px;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item .property-list__mls-attribution{text-shadow:none;width:calc(100% - 200px);margin:0;}@media (max-width: 1024px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad ul.property-list .property-list__item .property-list__mls-attribution{width:100%;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list__item .property-list__mls-attribution+.property-list__mls-logo{position:absolute!important;right:15px!important;bottom:15px!important;}@media (max-width: 1024px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list__item .property-list__mls-attribution+.property-list__mls-logo{position:relative!important;right:unset!important;bottom:unset!important;}}@media (max-width: 768px){#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list__item .property-list__mls-logo{display:inline-block!important;}}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .property-list__item:has(.mls-compliance-container) .property-list__text{padding-bottom:0;}#section-da5a7210-1edb-47e6-b554-6eb250d17dad .mls-compliance-container{margin-top:auto;padding:0 15px 15px;}#section-ba43671b-3100-4991-8247-7989a4b81495{color:#354764;--fontColor:#354764;--fontColor_H:217;--fontColor_S:31%;--fontColor_L:30%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:#ffffff;}#section-ba43671b-3100-4991-8247-7989a4b81495 .slick-dots .slick-active a{border-radius:0px!important;}#section-ba43671b-3100-4991-8247-7989a4b81495 span.lp-play:after{border-left:10px solid #C44628;}#section-ba43671b-3100-4991-8247-7989a4b81495 .slick-slide>div{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;}#section-ba43671b-3100-4991-8247-7989a4b81495 .slick-slide>div:not(:last-child){margin-bottom:50px;}@media (max-width: 767px){#section-ba43671b-3100-4991-8247-7989a4b81495 .slick-slide>div:not(:last-child){margin-bottom:0;}}#section-ba43671b-3100-4991-8247-7989a4b81495 .slick-dotted.slick-slider{margin-bottom:0;}#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .carousel-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-top:30px;}#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .paginationjs ul{width:auto;}#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .paginationjs li{cursor:pointer;}#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .paginationjs li.active,#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .paginationjs li.disabled{cursor:default;}@media (max-width: 575px){#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .paginationjs .paginationjs-pages li.paginationjs-prev{margin-right:3px;margin-left:3px;}#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .paginationjs .paginationjs-pages li.paginationjs-next{margin-left:3px;margin-right:3px;}}#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .slick-dots{position:static;-webkit-transform:translate(0,0);-moz-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0);-webkit-order:2;-ms-flex-order:2;order:2;width:auto;}#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .slick-dots li{width:auto;height:auto;}#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .slick-arrow:first-child{-webkit-order:1;-ms-flex-order:1;order:1;}#section-ba43671b-3100-4991-8247-7989a4b81495 .lp-pagination.pagination-container .slick-arrow:nth-child(2){-webkit-order:3;-ms-flex-order:3;order:3;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery{position:relative;padding-top:80px;padding-bottom:80px;}@media (max-width: 767px){#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery{padding-top:30px;padding-bottom:30px;}}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__header{margin-bottom:2em;max-width:640px;margin-left:auto;margin-right:auto;text-align:center;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__row{margin-left:-15px;margin-right:-15px;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__slide{padding:20px 15px;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-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__dots{position:relative;display:inline-block;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;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;-webkit-text-decoration:none;text-decoration:none;cursor:pointer;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card:hover .video-card__preview img{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1);}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card:hover .video-card__preview:after{opacity:.5;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card__header{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-bottom:10px;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card__title,#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card h6{margin-bottom:0px;font-family:var(--global-primary-font-family);text-transform:uppercase;letter-spacing:4px;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card__description{margin-bottom:0;cursor:pointer;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card__preview{position:relative;width:100%;height:245px;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card__preview:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background-color:#000;opacity:.3;-webkit-transition:all .25s;transition:all .25s;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card__preview>img{width:100%;height:100%;object-fit:cover;-webkit-transition:-webkit-transform 1s ease-out;transition:transform 1s ease-out;position:absolute;left:0;top:0;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-card__btn-play{position:relative;z-index:1;}#section-ba43671b-3100-4991-8247-7989a4b81495 .li-hidden{display:none!important;border:none!important;}#section-ba43671b-3100-4991-8247-7989a4b81495 li:not(.li-hidden)+.li-hidden{display:block!important;}#section-ba43671b-3100-4991-8247-7989a4b81495 li:not(.li-hidden)+.li-hidden button,#section-ba43671b-3100-4991-8247-7989a4b81495 li:not(.li-hidden)+.li-hidden a{display:none!important;--aColor:currentColor;}#section-ba43671b-3100-4991-8247-7989a4b81495 li:not(.li-hidden)+.li-hidden button+li:after,#section-ba43671b-3100-4991-8247-7989a4b81495 li:not(.li-hidden)+.li-hidden a+li:after{color:var(--aColor);}#section-ba43671b-3100-4991-8247-7989a4b81495 li:not(.li-hidden)+.li-hidden:after{content:"...";display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}@media (min-width: 575px){#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery .carousel-container:not(.slick-slider){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;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery .carousel-container:not(.slick-slider).centered{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery .carousel-container>.video-gallery__slide{width:33%;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery .carousel-container>.video-gallery__slide:nth-child(n + 10){display:none!important;}@media (max-width: 990px){#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery .carousel-container>.video-gallery__slide{width:50%;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery .carousel-container>.video-gallery__slide:nth-child(n + 7){display:none!important;}}@media (max-width: 574px){#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery .carousel-container>.video-gallery__slide{width:100%;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery .carousel-container>.video-gallery__slide:nth-child(n + 7){display:block!important;}}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__modals{position:fixed;inset:0;width:100vw;height:100vh;z-index:9999;pointer-events:none;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__modal{display:none;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__modal.visible{position:absolute;inset:0;display:block;background-color:rgba(0, 0, 0, 0.35);pointer-events:auto;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__modal-content{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%);width:calc(100% - 40px);max-width:600px;max-height:80vh;padding:50px 40px 40px;background-color:#fff;color:#000;text-align:left;white-space:normal;overflow-y:auto;cursor:auto;}@media (max-width: 767px){#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__modal-content{width:calc(100% - 40px);max-width:none;max-height:calc(100% - 40px);padding:50px 20px 20px;}}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__modal-close{position:absolute;top:8px;right:12px;background:transparent;border:0;padding:4px 10px;font-size:32px;line-height:1;color:#000;cursor:pointer;}#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__modal-close
34:hover,#section-ba43671b-3100-4991-8247-7989a4b81495 .video-gallery__modal-close:focus{opacity:0.7;}#section-ba43671b-3100-4991-8247-7989a4b81495>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a{color:#354764;--fontColor:#354764;--fontColor_H:217;--fontColor_S:31%;--fontColor_L:30%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#e8e8e8;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:91%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#e8e8e8;}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text{position:relative;}@media (max-width: 768px){#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text{background-color:var(--bgColor);}}@media (max-width: 768px){#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text.lp-vertical-paddings{padding-top:0!important;}}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text .lp-text--subtitle{max-width:100%;}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text.right-to-left .media-text__image{left:auto;right:0;}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text.right-to-left .media-text__content{margin-left:0;margin-right:auto;}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text .lp-description a{color:currentColor;-webkit-text-decoration:underline;text-decoration:underline;}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text .lp-description a:hover{-webkit-text-decoration:none;text-decoration:none;}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text__image{position:absolute;left:0;top:0;height:100%;width:70%;z-index:1;object-fit:cover;display:block;}@media (max-width: 768px){#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text__image{width:100%;height:332px;position:static;}}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text__container{position:relative;z-index:2;}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text__content{width:100%;max-width:745px;padding:77px 60px 77px 86px;margin-left:auto;background-color:var(--bgColor, #fff);}@media (max-width: 768px){#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text__content{padding:24px 0;}}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text__buttons-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 580px){#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text__buttons-group{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text__buttons-group .lp-btn+.lp-btn{margin-left:24px;}@media (max-width: 580px){#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .media-text__buttons-group .lp-btn+.lp-btn{margin-left:0;margin-top:24px;}}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .lp-title-group.text-left{text-align:left;}#section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a .redesign .description p{margin-bottom:1.666rem;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673{color:#354764;--fontColor:#354764;--fontColor_H:217;--fontColor_S:31%;--fontColor_L:30%;--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(4 / 4 * var(--global-section-padding));background-color:#ffffff;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list{display:none;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 div.f-video-carousel{padding-top:96px;padding-bottom:76px;}@media only screen and (max-width: 767px){#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 div.f-video-carousel{padding-top:64px;padding-bottom:64px;}}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 div.v-carousel{height:600px;}@media only screen and (max-width: 767px){#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 div.v-carousel{height:308px;}}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 span.v-carousel__button:after{border-left:7px solid #C44628;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .f-video-carousel{padding-top:70px;padding-bottom:70px;position:relative;}@media(min-width: 769px){#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .f-video-carousel{padding-top:130px;padding-bottom:130px;}}
34#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel{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: 769px){#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;height:384px;}}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__preview{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background:#eeeeee;position:relative;margin-bottom:30px;height:280px;}@media(min-width: 769px){#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__preview{margin-bottom:0;height:auto;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;}}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__preview button{padding:0;border:none;display:block;position:absolute;left:0;top:0;cursor:pointer;height:100%;width:100%;background-color:transparent;}@media (min-width: 769px){#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__preview button:hover .v-carousel__button{background-color:rgba(255,255,255,0.3);}}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__preview-item{height:100%;width:100%;position:absolute;left:0;top:0;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__cover{display:block;width:100%;height:100%;object-fit:cover;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__button{-webkit-transition:all .2s;transition:all .2s;cursor:pointer;background-color:rgba(255,255,255,0.16);border-radius:50%;width:89px;height:89px;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;position:relative;border:none;position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__button:before{content:'';background-color:#fff;border-radius:50%;-webkit-transition:0.2s all;transition:0.2s all;width:44px;height:44px;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__button:after{content:'';width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:7px solid #000;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%);}@media (min-width: 769px){#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__button{width:127px;height:127px;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__button:before{width:63px;height:63px;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__button:after{border-width:6px 0 6px 11px;}}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list{list-style-type:none;margin:0;padding:0 26px 0 0;overflow:auto;max-height:480px;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list::-webkit-scrollbar{width:6px;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list::-webkit-scrollbar-track{background-color:rgba(32, 32, 32, 0.05);}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list::-webkit-scrollbar-button{background-color:transparent;height:0;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list::-webkit-scrollbar-thumb{background-color:#535353;border-radius:3px;}@media(min-width: 769px){#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list{padding:0 50px;height:auto;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;}}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list-item{position:relative;-webkit-transition:0.4s all;transition:0.4s all;padding-right:30px;margin-bottom:0;padding-top:26px;padding-bottom:26px;cursor:pointer;}@media (min-width: 769px){#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carou
34sel__list-item:hover{background-color:rgba(196, 196, 196, 0.1);padding-left:20px;}}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list-item+.v-carousel__list-item:after{content:'';display:block;position:absolute;top:0;left:0;right:0;background-color:currentColor;height:1px;opacity:0.2;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list-item:first-child{padding-top:0;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list-item:last-child{padding-bottom:0;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list-item h3{font-size:20px;line-height:1.33;margin-bottom:10px;}@media(min-width: 769px){#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list-item h3{font-size:24px;}}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673 .v-carousel__list-item p{font-size:14px;line-height:1.57;margin-bottom:0;}#section-97efe40a-6bdb-4a9e-87bc-c47975e11673>div:last-child{padding-top:calc(2 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-c00cff8c-7bf7-439f-a337-b3977159e28e{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.4));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/j3dpehsnikjllclawuua');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-c00cff8c-7bf7-439f-a337-b3977159e28e.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-c00cff8c-7bf7-439f-a337-b3977159e28e.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-c00cff8c-7bf7-439f-a337-b3977159e28e.parallax-enabled .work-with-us:before{display:block;content:'';left:0;top:0;width:100%;background:var(--sectionBackground) center no-repeat;-webkit-background-size:cover;background-size:cover;position:fixed;z-index:-1;height:100%;}#section-c00cff8c-7bf7-439f-a337-b3977159e28e .redesign.work-with-us{position:relative;color:var(--fontColor, #ffffff);}#section-c00cff8c-7bf7-439f-a337-b3977159e28e .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-c00cff8c-7bf7-439f-a337-b3977159e28e .redesign.work-with-us .container{min-height:auto;padding-top:100px;padding-bottom:100px;}}#section-c00cff8c-7bf7-439f-a337-b3977159e28e .redesign.work-with-us h2{position:relative;padding-bottom:28px;margin:0 0 30px;}@media(max-width: 768px){#section-c00cff8c-7bf7-439f-a337-b3977159e28e .redesign.work-with-us h2{padding-bottom:40px;}}#section-c00cff8c-7bf7-439f-a337-b3977159e28e .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-c00cff8c-7bf7-439f-a337-b3977159e28e .redesign.work-with-us .description{margin:0 0 30px;}@media(max-width: 768px){#section-c00cff8c-7bf7-439f-a337-b3977159e28e .redesign.work-with-us .description{margin-bottom:40px;}}#section-c00cff8c-7bf7-439f-a337-b3977159e28e .redesign.work-with-us .btn-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;gap:23px;margin-top:32px;}@media(max-width: 560px){#section-c00cff8c-7bf7-439f-a337-b3977159e28e .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-c00cff8c-7bf7-439f-a337-b3977159e28e{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/j3dpehsnikjllclawuua');}}@media (min-width: 1280px) and (orientation: landscape){#section-c00cff8c-7bf7-439f-a337-b3977159e28e{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/j3dpehsnikjllclawuua');}}@media (min-width: 1920px) and (orientation: landscape){#section-c00cff8c-7bf7-439f-a337-b3977159e28e{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/j3dpehsnikjllclawuua');}}@media (min-width: 2560px) and (orientation: landscape){#section-c00cff8c-7bf7-439f-a337-b3977159e28e{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/j3dpehsnikjllclawuua');}}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d{color:#354764;--fontColor:#354764;--fontColor_H:217;--fontColor_S:31%;--fontColor_L:30%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#f8f8f8;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:97%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#f8f8f8;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d a.slick-arrow{border-width:2px!important;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .ig-feed{padding:80px 0;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .title{margin:0 20px 0 0;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .instagram-link{display:block;margin:0 20px 0 0;color:var(--global-primary-font-color);}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .instagram-link .instagram-name{display:inline;margin:0;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .title+.instagram-link{margin-top:5px;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .top-wrapper{margin-bottom:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .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-1f1e0e09-5bb1-47a1-9029-aeb58682521d .follow-button{margin:20px 0 0 0;display:block;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .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-1f1e0e09-5bb1-47a1-9029-aeb58682521d .nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .nav-button:not(.slick-disabled):hover{background-color:#1a1a1a;border-color:#1a1a1a;color:#fff;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .top-nav-prev{margin-left:30px;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .top-nav-next{margin-left:10px;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .hidden-control{display:none;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-single,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .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-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-single:first-child,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-multi:first-child{margin-left:auto;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-single:last-child,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-multi:last-child{margin-right:auto;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-single.type2,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-multi.type2{width:calc(100% / 5 * 2);}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-single.type3,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-multi.type3{width:calc(100% / 2);}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-single.type4,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-multi.type4{width:calc(100% / 2);}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-single.type5,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-multi.type5{width:100%;}@media (max-width: 440px){#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .ig-feed-container{padding:0;width:100%;}}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .ig-feed-feed{width:calc(100% + 20px);position:relative;
34left:-10px;overflow:hidden;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .ig-feed-slider{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .ig-feed-item__img{position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;background:center/cover no-repeat;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .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-1f1e0e09-5bb1-47a1-9029-aeb58682521d .ig-feed-item:hover .ig-feed-item__info{opacity:1;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .ig-feed-item__caption{text-overflow:ellipsis;-webkit-line-clamp:4;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .video-icon{position:absolute;width:50px;height:50px;background-color:#fff;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border-radius:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;opacity:1;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .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-1f1e0e09-5bb1-47a1-9029-aeb58682521d .ig-feed-item:hover .video-icon{opacity:0;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-single .ig-feed-item__info{padding:15%;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-single .ig-feed-item__caption{-webkit-line-clamp:7;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .ig-feed-item{background-color:var(--tileColor, #000);display:block;width:100%;padding-bottom:125%;overflow:hidden;position:relative;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-multi::before{content:'';display:block;width:100%;padding-bottom:125%;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .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-1f1e0e09-5bb1-47a1-9029-aeb58682521d .slide-multi-content .ig-feed-item{width:calc(50% - 10px);padding-bottom:calc(62.5% - 12.5px);}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .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-1f1e0e09-5bb1-47a1-9029-aeb58682521d .bottom-controls{width:100%;display:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .bottom-nav-button{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin:20px 10px 0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;width:48px;height:48px;color:#1a1a1a;border:1px solid currentColor;cursor:pointer;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .bottom-nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}@media (max-width: 767px){#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .top-right,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .top-left{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .title,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .instagram-link{margin-right:0;text-align:center;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .top-nav-prev,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .top-nav-next{display:none;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .bottom-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .ig-feed{display:none;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d .has-data .ig-feed{display:block;}#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d.has-data .ig-feed,#section-1f1e0e09-5bb1-47a1-9029-aeb58682521d#section-temp .ig-feed{display:block;}#section-8e3e63d5-35c9-455d-980c-9828b97d610d{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-8e3e63d5-35c9-455d-980c-9828b97d610d .container{padding:110px;}#section-8e3e63d5-35c9-455d-980c-9828b97d610d .container img{max-width:100%;}@media(max-width: 768px){#section-8e3e63d5-35c9-455d-980c-9828b97d610d .container ul li p{word-break:break-word;}}@media(max-width: 768px){#section-8e3e63d5-35c9-455d-980c-9828b97d610d .container a[onmouseover]{width:100%;}}@media (max-width: 992px){#section-8e3e63d5-35c9-455d-980c-9828b97d610d .container{padding:40px;}}#modal-global-contact-us .close{z-index:11;}#modal-global-contact-us .description{margin-bottom:15px;}#modal-global-contact-us .close:focus{outline:0;}#modal-global-contact-us .contact-form{padding:70px 0;width:100%;min-height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;color:var(--colorTxt, #ffffff);-webkit-background-size:cover;background-size:cover;}#modal-global-contact-us .contact-form:after{content:'';position:absolute;display:block;background-color:rgba(2, 5, 7, 0.85);height:100%;width:100%;z-index:0;}#modal-global-contact-us .contact-form.loading textarea,#modal-global-contact-us .contact-form.loading input,#modal-global-contact-us .contact-form.loading label,#modal-global-contact-us .contact-form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .submit-icon{display:none;}#modal-global-contact-us .contact-form .contact-form-close{width:40px;height:50px;display:block;padding:0;border:none;background-color:transparent;cursor:pointer;position:absolute;right:50px;top:50px;z-index:110;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close{right:20px;top:20px;width:30px;height:40px;}}#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{content:'';display:block;width:40px;height:1px;background-color:#fff;position:absolute;left:50%;top:50%;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{width:30px;}}#modal-global-contact-us .contact-form .contact-form-close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}#modal-global-contact-us .contact-form .contact-form-close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}#modal-global-contact-us .contact-form .container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:1440px;width:100%;padding:0 160px;margin:0 auto;z-index:10;}@media (max-width: 1320px){#modal-global-contact-us .contact-form .container{padding:0 80px;}}@media (max-width: 1200px){#modal-global-contact-us .contact-form .container{padding:0 30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .container{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}
34@media (max-width: 560px){#modal-global-contact-us .contact-form .container{padding:0 20px;}}#modal-global-contact-us .contact-form h2{margin:0 0 18px 0;padding:0;}@media (max-width: 560px){#modal-global-contact-us .contact-form h2{margin:0 0 24px 0;}}#modal-global-contact-us .contact-form .section-details{width:50%;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-details{padding-right:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-details{width:100%;padding-right:0;max-width:700px;margin-bottom:38px;}}#modal-global-contact-us .contact-form .section-message{width:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;position:relative;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-message{padding-left:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message{width:100%;padding-left:0;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}#modal-global-contact-us .contact-form .section-message:after{content:'';position:absolute;display:block;width:1px;background:#999999;height:calc(100% + 50px);left:0;top:-20px;}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message:after{display:none;}}#modal-global-contact-us .contact-form .section-message form{max-width:435px;width:100%;}#modal-global-contact-us .contact-form .section-message form .submitButton{width:auto;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message form .submitButton{width:100%;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message form{max-width:700px;}}#modal-global-contact-us .contact-form .section-message form.loading textarea,#modal-global-contact-us .contact-form .section-message form.loading input,#modal-global-contact-us .contact-form .section-message form.loading label,#modal-global-contact-us .contact-form .section-message form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form .section-message form.loading .label-loading{display:inline;}#modal-global-contact-us .contact-form .section-message form.loading .label-success,#modal-global-contact-us .contact-form .section-message form.loading .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .section-message form.success .label-loading,#modal-global-contact-us .contact-form .section-message form.success .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.success .label-success{display:inline;}#modal-global-contact-us .contact-form .section-message .label-loading,#modal-global-contact-us .contact-form .section-message .label-success{display:none;}#modal-global-contact-us .contact-form .section-message .submit-icon{display:none;}#modal-global-contact-us .contact-form .section-message h2{margin-bottom:28px;}#modal-global-contact-us .contact-form .section-message .form-group_modal{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:39px;}#modal-global-contact-us .contact-form .section-message .form-group_modal input{border:none;border-bottom:1px solid #c0c0c0;display:block;width:100%;background:transparent;color:#ffffff;height:22px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group_modal input{height:25px;}}#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:23px;}}#modal-global-contact-us .contact-form .section-message label{display:block;width:100%;line-height:1.63;letter-spacing:1px;color:#c0c0c0;font-weight:bold;text-transform:uppercase;}#modal-global-contact-us .contact-form .section-message textarea{resize:none;height:105px;width:100%;background:transparent;border:solid 1px #ffffff;margin:23px 0 0 0;color:#ffffff;padding:10px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message textarea{margin:10px 0 0 0;height:89px;}}#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 16px 0;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 13px 0;}}#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user{margin-bottom:58px;}}#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:23px;}#modal-global-contact-us .contact-form .info-zone_contact:nth-last-child(2){margin-bottom:30px;}#modal-global-contact-us .contact-form .info-zone_contact_cell{position:relative;padding-left:45px;margin-bottom:22px;font-weight:bold;font-size:14px;max-width:90%;letter-spacing:1.5px;text-transform:uppercase;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell{padding-left:0;}}#modal-global-contact-us .contact-form .info-zone_contact_cell:last-of-type{margin-bottom:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:absolute;
34left:0;top:0;display:block;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:relative;margin-bottom:7px;}}#modal-global-contact-us .contact-form .info-zone_contact_cell i svg path{fill:var(--colorTxt);}#modal-global-contact-us .contact-form .info-zone_contact_cell div{padding:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell .contact_title{line-height:1;margin-bottom:5px;}#modal-global-contact-us .contact-form .info-zone_contact_link{color:var(--colorTxt);}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:58px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .hours_box{margin-bottom:52px;}}#modal-global-contact-us .contact-form .socials_zone{padding-left:45px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone{padding-left:0;}}#modal-global-contact-us .contact-form .socials_zone li{margin-bottom:10px;}#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:34px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:12px;}}#modal-global-contact-us .contact-form .success-message.success{margin-top:15px;color:var(--colorTxt);position:absolute;}#modal-global-contact-us .contact-form .success-message.hide{opacity:0;}#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:73px;}@media (max-width: 768px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:51px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:40px;}}#modal-global-contact-us .contact-form.one_contact .hours_box{margin-bottom:38px;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell{padding-left:0;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell i{display:none;}#modal-global-contact-us .contact-form.no_icon .socials_zone{padding-left:0;}#modal-global-contact-us .contact-form .pre-line{white-space:pre-line;}#modal-global-contact-us .lp-input-group{margin-bottom:40px;}#modal-global-contact-us .lp-input-group.m16{margin-bottom:16px;}#modal-global-contact-us .lp-disclaimer{margin-top:0;}#modal-global-contact-us .lp-input{border-color:#ffffff;}#modal-global-contact-us .lp-input:focus,#modal-global-contact-us .lp-input:active{border-color:#5e5e5e;}nav{color:#fff;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;z-index:102;}nav.scroll .logo .logo__img.light{display:block;}nav.scroll .logo .logo__img.dark{display:none;}nav .header{height:100px;-webkit-transform:translateY(24px);-moz-transform:translateY(24px);-ms-transform:translateY(24px);transform:translateY(24px);}@media (max-width: 768px){nav .header{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}nav .header .container{max-width:1440px;padding:0 15px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;}@media (max-width: 1024px){nav .header .container{padding:0 15px;}}nav .header .navbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;min-height:70px;padding:8px 0 7px;width:100%;}nav .header .logo{z-index:911;position:relative;margin-right:10px;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;max-width:300px;}nav .header .logo a{overflow:hidden;display:inline-block;}nav .header .logo img{max-width:100%;max-height:52px;vertical-align:top;object-fit:contain;}@media (max-width: 1024px){nav .header .logo img{max-height:50px;}}nav .header .logo img.dark{display:none;}@media(max-width: 1024px){nav .header .logo img.dark{display:none!important;}}nav .header .logo img.light{display:block;}@media(max-width: 1024px){nav .header .logo img.light{display:inline-block!important;}}
34nav .header .logo__link{-webkit-animation-duration:1s;animation-duration:1s;overflow:hidden;}nav .header .logo__img.light{display:block;}nav .header .logo__img.dark{display:none;}nav .header .navigation{margin-left:auto;color:inherit;}@media (max-width: 1024px){nav .header .navigation{display:none;}}nav .header .navigation ul{position:relative;list-style-type:none;padding-left:0;margin-bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}nav .header .navigation ul li a span,nav .header .navigation ul li button span{position:relative;white-space:nowrap;}nav .header .navigation ul li a span:after,nav .header .navigation ul li button span:after{content:'';position:absolute;display:block;height:1px;background-color:#c6c6c6;width:0;bottom:0;left:0;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation ul li a:hover span:after,nav .header .navigation ul li button:hover span:after{width:100%;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation__item{padding:0;margin:0;}nav .header .navigation__link{display:block;padding:12px 13px;color:inherit;position:relative;font-size:13px;line-height:1.08;font-weight:700;letter-spacing:1.5px;background-color:transparent;border:none;cursor:pointer;text-align:left;text-transform:uppercase;}@media (max-width: 1280px){nav .header .navigation__link{padding:19px 10px;font-size:11.5px;}}nav .header .navigation__link .sub-nav-container .navigation__link:hover{background:#000000;}nav .header .navigation .sub-nav{position:absolute;bottom:0;padding:0;opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav .header .navigation .sub-nav ul{margin:0;padding:12px 0;display:block;background-color:rgba(26, 26, 26, .75);max-width:300px;}nav .header .navigation .sub-nav__item{position:relative;display:block;margin:0;text-align:left;}nav .header .navigation .sub-nav__item:last-child{border-bottom-color:transparent;}nav .header .navigation .sub-nav__link{display:block;max-width:300px;color:#ffffff;margin:0;line-height:1;letter-spacing:1.5px;padding:19px 13px;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, 100%);-moz-transform:translate(0, 100%);-ms-transform:translate(0, 100%);transform:translate(0, 100%);}nav .header .navigation .sub-nav.visible+.navigation__link{background:#000000;}nav .header .hamburger{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;padding:28px 13px;background-color:transparent;color:inherit;vertical-align:middle;cursor:pointer;outline:none;z-index:915;opacity:1;}nav .header .hamburger__bars{position:relative;display:block;width:26px;height:2px;background-color:currentColor;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before,nav .header .hamburger__bars:after{content:'';display:block;width:26px;height:2px;background-color:currentColor;position:absolute;left:0;top:0;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before{-webkit-transform:translateY(-9px);-moz-transform:translateY(-9px);-ms-transform:translateY(-9px);transform:translateY(-9px);}nav .header .hamburger__bars:after{-webkit-transform:translateY(9px);-moz-transform:translateY(9px);-ms-transform:translateY(9px);transform:translateY(9px);}nav .header .hamburger:hover{text-shadow:.5px 0 0,-.5px 0 0;}nav .header .hamburger:hover .hamburger__bars:before{-webkit-transform:translateY(-7px);-moz-transform:translateY(-7px);-ms-transform:translateY(-7px);transform:translateY(-7px);}nav .header .hamburger:hover .hamburger__bars:after{-webkit-transform:translateY(7px);-moz-transform:translateY(7px);-ms-transform:translateY(7px);transform:translateY(7px);}nav .header .hamburger.active .hamburger__bars{-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);opacity:0;}nav .header .hamburger.active .hamburger__bars:before{display:none;}nav .header .hamburger.active .hamburger__bars:after{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}nav .content-container{-webkit-transition:0.2s all ease;transition:0.2s all ease;}nav.scroll .content-container,nav .scroll .content-container{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}nav.scroll .content-container .navigation__link,nav .scroll .content-container .navigation__link{visibility:visible!important;}nav.scroll .content-container .navigation .sub-nav,nav .scroll .content-container .navigation .sub-nav{-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav.scroll .content-container .navigation .sub-nav ul,nav .scroll .content-container .navigation .sub-nav ul{padding:0;}nav.scroll .content-container .navigation .sub-nav.visible,nav .scroll .content-container .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, calc(100% + 23px));-moz-transform:translate(0, calc(100% + 23px));-ms-transform:translate(0, calc(100% + 23px));transform:translate(0, calc(100% + 23px));}nav .dark-opening{background-color:rgb(26, 26, 26)!important;}nav nav.dark-opening .header{margin-top:0;}nav #ctaShowButton,nav #ctaMessage{display:none!important;}nav #ctaShowButton{display:none;opacity:0;pointer-events:none;}nav .search{cursor:pointer;}nav .search svg{display:block;}nav .buttons-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;
34-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}body>div.sidemenu{background-color:#fff;color:rgba(53, 71, 100, 1);--fontColor:rgba(53, 71, 100, 1);--fontColor_H:217;--fontColor_S:31%;--fontColor_L:30%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;}body>div.sidemenu{width:auto!important;left:auto!important;right:-100%;top:0;background-color:transparent;-webkit-transition:right .3s;transition:right .3s;display:block;}body>div.sidemenu:not(.visible){pointer-events:none;visibility:hidden;}body>div.sidemenu.visible{right:0;}body>div.sidemenu .sidebar{position:relative;width:400px;height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-top:40px;padding-bottom:100px;background-color:var(--bgColor, #fff);color:var(--fontColor, #000);font-family:var(--global-primary-font-family);font-size:21px;line-height:1.333333;letter-spacing:.5px;-webkit-transition:all .3s ease-in;transition:all .3s ease-in;}@media (max-width: 767px){body>div.sidemenu .sidebar{width:270px;font-size:18px;}}body>div.sidemenu .sidebar__content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;padding-left:40px;padding-right:40px;text-align:center;overflow-y:auto;}@media (max-width: 767px){body>div.sidemenu .sidebar__content{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding-left:20px;padding-right:20px;}}body>div.sidemenu .sidebar__close{position:absolute;right:30px;top:30px;display:inline-block;width:38px;height:38px;padding:10px;border:none;border-radius:0;background:transparent;color:inherit;z-index:1;cursor:pointer;}body>div.sidemenu .sidebar__close:before,body>div.sidemenu .sidebar__close:after{content:'';display:block;width:22px;height:2px;background-color:currentColor;position:absolute;left:50%;top:50%;}body>div.sidemenu .sidebar__close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}body>div.sidemenu .sidebar__close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}@media (max-width: 767px){body>div.sidemenu .sidebar__close{right:10px;top:10px;}}body>div.sidemenu .sidebar__close:focus{outline:none;}body>div.sidemenu .sidebar__nav{list-style:none;padding:0;margin:auto 0;}body>div.sidemenu .sidebar__nav-item{margin:0;padding-top:4px;padding-bottom:4px;border-bottom:1px solid hsla( 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:rgba(53, 71, 100, 1);--fontColor:rgba(53, 71, 100, 1);--fontColor_H:217;--fontColor_S:31%;--fontColor_L:30%;--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">.button-style-1{color:rgba(255, 255, 255, 1)!important;background-color:rgba(213, 163, 144, 1)!important;border-color:rgba(213, 163, 144, 1)!important;}.button-style-1:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(196, 70, 40, 1)!important;border-color:rgba(196, 70, 40, 1)!important;}.social_icons-style-1 a{border-color:rgba(196, 70, 40, 1)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(196, 70, 40, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(196, 70, 40, 1)!important;background-color:rgba(196, 70, 40, 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;}.pagination-style-1 li a{color:rgba(196, 70, 40, 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(196, 70, 40, 1)!important;border-color:rgba(196, 70, 40, 1)!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(196, 70, 40, 1)!important;border-color:rgba(196, 70, 40, 1)!important;}.hyperlink-style-1{color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-1:hover{color:rgba(196, 70, 40, 1)!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{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(196, 70, 40, 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(196, 70, 40, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.button-style-2{color:rgba(196, 70, 40, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-2:hover{color:#FFFFFF!important;background-color:rgba(0, 0, 0, 0)!important;border-color:#FFFFFF!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(196, 70, 40, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}
65.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.button-style-3{color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-3:hover{color:rgba(196, 70, 40, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:#FFFFFF!important;}.button-style-4{color:rgba(255, 255, 255, 1)!important;background-color:rgba(53, 71, 100, 1)!important;border-color:rgba(53, 71, 100, 1)!important;}.button-style-4:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(84, 114, 160, 1)!important;border-color:rgba(84, 114, 160, 1)!important;}</style> 66 <!-- LP Consent bootstrap: blocking; resolves consent state, pushes Consent Mode 67 defaults, and dynamically loads the locale + main (and banner if needed). --> 68
68<script src="https://cdn.luxurypresence.com/scripts/lp-consent/latest/lp-consent-boot.js" data-website-id="a1e3c847-d1ba-4058-a24c-e7ce6eef6e17"></script>
68 69 70 71 <!-- Follow Up Boss Tracker Code --> 72
72<script type="text/plain" data-consent-category="analytics"> 73 (function(w,i,d,g,e,t){w["WidgetTrackerObject"]=g;(w[g]=w[g]||function() 74 {(w[g].q=w[g].q||[]).push(arguments);}),(w[g].ds=1*new Date());(e="script"), 75 (t=d.createElement(e)),(e=d.getElementsByTagName(e)[0]);t.async=1;t.src=i; 76 e.parentNode.insertBefore(t,e);}) 77 (window,"https://widgetbe.com/agent",document,"widgetTracker"); 78 window.widgetTracker("create", "WT-PRANAHZG"); 79 </script>
79 80 <!-- End Follow Up Boss Tracker Code --> 81
81<script> 82 (function utmParse() { 83 const url = new URL(window.location.href); 84 if (url.search) { 85 const utm = url.search.split(/\?|&/g).reduce((acc, current) => { 86 const matched = current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g); 87 if (matched) { 88 acc[matched[0]] = current.replace(`${matched[0]}=`, ''); 89 } 90 return acc; 91 }, {}); 92 if (Object.keys(utm).length) { 93 window.localStorage.setItem('utm_vars', JSON.stringify(utm)); 94 } else { 95 // Remove old utm vars 96 window.localStorage.removeItem('utm_vars'); 97 } 98 } 99 // Set referrer in local storage 100 // This is meant to be stored once to avoid self-referrals and to have the first referrer only. 101 if (!window.localStorage.getItem('referrer')) { 102 // Capture the Referrer URL 103 const referrer = document.referrer; 104 if (referrer) { 105 // Only store the referrer if it comes from outside the current domain (to avoid self-referrals) 106 const currentDomain = window.location.hostname; 107 const referrerDomain = new URL(referrer).hostname; 108 109 if (referrerDomain !== currentDomain) { 110 // Store it in localStorage 111 localStorage.setItem('referrer', referrer); 112 } 113 } 114 } 115 })(); 116 </script>
116 117
117<script>function loadScript(a){var b=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.src="https://tracker.metricool.com/resources/be.js",c.onreadystatechange=a,c.onload=a,b.appendChild(c)}loadScript(function(){beTracker.t({hash:"235cbe7989331da30341109e505f2c52"})});</script>
117 118<meta name="google-site-verification" content="k8msuRDjpS8w5cYx3ZTT1h5AJWeyq1ByU5bBxj9ZUEE" /> 119<meta name="msvalidate.01" content="49569873596349F04ADED2557784283B" /> 120<!-- Google Tag Manager -->
121<script>
vendor: 327 bytes, lines 121-125
121(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 122new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 123j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 124'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 125})(window,document,'script','dataLayer','
125GTM-W33LVZF2
vendor: 3 bytes, line 125
125');
125</script>
125 126<!-- End Google Tag Manager --> 127 128<!-- Kinoko Real Estate â RealEstateAgent JSON-LD schema (added Aug 2026) -->
129<script> 130(function() { 131 var ldJson = { 132 "@context": "https://schema.org", 133 "@type": "RealEstateAgent", 134 "name": "Kinoko Real Estate", 135 "url": "https://kinokorealestate.com/", 136 "logo": "https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tarsax9jujpdxfrwajvk", 137 "telephone": "+1-650-291-4409", 138 "email": "[email protected]", 139 "address": { 140 "@type": "PostalAddress", 141 "streetAddress": "592 3rd Street", 142 "addressLocality": "San Francisco", 143 "addressRegion": "CA", 144 "postalCode": "94107", 145 "addressCountry": "US" 146 }, 147 "areaServed": { 148 "@type": "City", 149 "name": "San Francisco" 150 }, 151 "founder": [ 152 { "@type": "Person", "name": "Kevin Gueco" }, 153 { "@type": "Person", "name": "Nini Gueco" } 154 ], 155 "foundingDate": "2003", 156 "sameAs": [ 157 "https://www.facebook.com/houseofkinoko/", 158 "https://www.instagram.com/house.of.kinoko/", 159 "https://www.linkedin.com/company/houseofkinoko/", 160 "https://www.youtube.com/channel/UCsP_bGxHYo_Gm_U9uWDc3kQ" 161 ] 162 }; 163 var script = document.createElement('script'); 164 script.type = 'application/ld+json'; 165 script.text = JSON.stringify(ldJson); 166 document.head.appendChild(script); 167})(); 168</script>
168 169<!-- End Kinoko Real Estate JSON-LD schema --> 170 171 <!-- GOOGLE TRANSLATE STYLES are moved to external CSS --> 172</head> 173<body> 174 <div id="google_translate_element" style="display: none"></div> 175 176 <nav id="global-navbar" data-el-id="43e7a874-fb1e-4cdd-91fe-eb6bf5b9179b"> 177 <div class="redesign"> 178 <div class="content-container header"> 179 <div class="container header__container"> 180 <div class="navbar"> 181 <div class="logo"> 182 <a href="/" class="logo__link"> 183 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tarsax9jujpdxfrwajvk" 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/tarsax9jujpdxfrwajvk 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/tarsax9jujpdxfrwajvk 795w" class="logo__img light" alt=""> 184 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/vgwbvhzngnc194zy6n53" 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/vgwbvhzngnc194zy6n53 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/vgwbvhzngnc194zy6n53 795w" class="logo__img dark" alt=""> 185 </a> 186 </div> 187 <div class="navigation"> 188 <ul> 189 <li class="navigation__item sub-nav-container"> 190 <a href="#" class="navigation__link wow fadeInUp">About Us</a> 191 <div class="sub-nav"> 192 <ul> 193 <li class="sub-nav__item"><a href="/testimonials-kevin" class="nav-link sub-nav__link feature"><span>Raving Fans of Kevin and Nini</span></a></li> 194 <li class="sub-nav__item"><a href="/team" class="nav-link sub-nav__link feature"><span>Our Amazing Humans</span></a></li> 195 <li class="sub-nav__item"><a href="/we-know-tech-buyers" class="nav-link sub-nav__link feature"><span>We Know Tech Buyers</span></a></li> 196 <li class="sub-nav__item"><a href="/testimonials" class="nav-link sub-nav__link feature"><span>Endless Client Testimonials</span></a></li> 197 </ul> 198 </div> 199 </li> 200 <li class="navigation__item sub-nav-container"> 201 <a href="#" class="navigation__link wow fadeInUp">Kinoko TV</a> 202 <div class="sub-nav"> 203 <ul> 204 <li class="sub-nav__item"><a href="/buy-the-bay" class="nav-link sub-nav__link feature"><span>Buy the Bay</span></a></li> 205 <li class="sub-nav__item"><a href="/list-with-us" class="nav-link sub-nav__link feature"><span>List with Us</span></a></li> 206 <li class="sub-nav__item"><a target="_blank" href="https://www.youtube.com/channel/UCsP_bGxHYo_Gm_U9uWDc3kQ/videos" class="nav-link sub-nav__link feature"><span>Kinoko TV</span></a></li> 207 </ul> 208 </div> 209 </li> 210 <li class="navigation__item sub-nav-container"> 211 <a href="#" class="navigation__link wow fadeInUp">Properties</a> 212 <div class="sub-nav"> 213 <ul> 214 <li class="sub-nav__item"><a href="/casestudies" class="nav-link sub-nav__link feature"><span>Case Studies</span></a></li> 215 <li class="sub-nav__item"><a href="/properties/sale" class="nav-link sub-nav__link feature"><span>Featured Properties</span></a></li> 216 <li class="sub-nav__item"><a href="/properties/sold" class="nav-link sub-nav__link feature"><span>Featured Sales</span></a></li> 217 </ul> 218 </div> 219 </li> 220 <li class="navigation__item"> 221 <a href="/blog" class="navigation__link wow fadeInUp" data-wow-delay="2.3"><span>Blog</span></a> 222 </li> 223 <li class="navigation__item"> 224 <a href="/san-francisco-bay-area-neighborhood-and-city-guides" class="navigation__link wow fadeInUp" data-wow-delay="2.4"><span>Neighborhoods</span></a> 225 </li> 226 <li class="navigation__item"> 227 <a href="/worldwide-network" class="navigation__link wow fadeInUp" data-wow-delay="2.5"><span>Worldwide Network</span></a> 228 </li> 229 <li class="navigation__item"> 230 <a data-type="CONTACT_US" class="navigation__link wow fadeInUp"><span>Contact Us</span></a> 231 </li> 232 </ul> 233 </div> 234 <div class="buttons-wrapper"> 235 <button type="button" class="hamburger-component hamburger">
236 <span class="hamburger__bars"></span> 237 </button> 238 </div> 239 </div> 240 </div> 241 </div> 242</div> 243 244 </nav> 245 <div id="global-sidemenu" class="sidemenu" data-el-id="11fa925d-d2dd-4213-a0fa-d46f769e2c18"> 246 <div class="sidebar"> 247 248 <button class="toggle sidebar__close close"></button> 249 <div class="sidebar__content"> 250 251 <ul class="sidebar__nav"> 252 <li class="sidebar__nav-item"> 253 <a href="/" class="sidebar__nav-link">Home</a> 254 </li> 255 <li class="sidebar__nav-item sub-nav-container"> 256 <div class="sub-nav"> 257 <ul class="sidebar__subnav"> 258 <li class="sidebar__subnav-item"><a href="/testimonials-and-rosewood-referral-giveaway" class="sidebar__subnav-link">Raving Fans of Kevin and Nini</a></li> 259 <li class="sidebar__subnav-item"><a href="/team" class="sidebar__subnav-link">Our Amazing Humans</a></li> 260 <li class="sidebar__subnav-item"><a href="/we-know-tech-buyers" class="sidebar__subnav-link">We Know Tech Buyers</a></li> 261 <li class="sidebar__subnav-item"><a href="/testimonials" class="sidebar__subnav-link">Endless Client Testimonials</a></li> 262 </ul> 263 </div> 264 <a href="#" class="sidebar__nav-link link main-nav">About Us</a> 265 </li> 266 <li class="sidebar__nav-item sub-nav-container"> 267 <div class="sub-nav"> 268 <ul class="sidebar__subnav"> 269 <li class="sidebar__subnav-item"><a href="/properties/sale" class="sidebar__subnav-link">Featured Properties</a></li> 270 <li class="sidebar__subnav-item"><a href="/properties/sold" class="sidebar__subnav-link">Featured Sales</a></li> 271 </ul> 272 </div> 273 <a href="#" class="sidebar__nav-link link main-nav">Properties</a> 274 </li> 275 <li class="sidebar__nav-item"> 276 <a href="/home-search/listings" class="sidebar__nav-link">Home Search</a> 277 </li> 278 <li class="sidebar__nav-item"> 279 <a href="/home-valuation" class="sidebar__nav-link">Home Valuation</a> 280 </li> 281 <li class="sidebar__nav-item"> 282 <a href="/san-francisco-bay-area-neighborhood-and-city-guides" class="sidebar__nav-link">Neighborhoods</a> 283 </li> 284 <li class="sidebar__nav-item sub-nav-container"> 285 <div class="sub-nav"> 286 <ul class="sidebar__subnav"> 287 <li class="sidebar__subnav-item"><a href="/buyers" class="sidebar__subnav-link">Buyers</a></li> 288 <li class="sidebar__subnav-item"><a href="/sellers" class="sidebar__subnav-link">Sellers</a></li> 289 <li class="sidebar__subnav-item"><a href="/district-guide" class="sidebar__subnav-link">SF District Guide</a></li> 290 </ul> 291 </div> 292 <a href="#" class="sidebar__nav-link link main-nav">Resources</a> 293 </li> 294 <li class="sidebar__nav-item sub-nav-container"> 295 <div class="sub-nav"> 296 <ul class="sidebar__subnav"> 297 <li class="sidebar__subnav-item"><a href="/buy-the-bay" class="sidebar__subnav-link">Buy the Bay</a></li> 298 <li class="sidebar__subnav-item"><a href="/list-with-us" class="sidebar__subnav-link">List with Us</a></li> 299 <li class="sidebar__subnav-item"><a target="_blank" href="https://www.youtube.com/channel/UCsP_bGxHYo_Gm_U9uWDc3kQ/videos" class="sidebar__subnav-link">Kinoko TV</a></li> 300 </ul> 301 </div> 302 <a href="#" class="sidebar__nav-link link main-nav">Kinoko TV</a> 303 </li> 304 <li class="sidebar__nav-item"> 305 <a href="/market-updates-in-san-francisco-bay-area" class="sidebar__nav-link">Market Update</a> 306 </li> 307 <li class="sidebar__nav-item"> 308 <a href="/blog" class="sidebar__nav-link">Blog</a> 309 </li> 310 <li class="sidebar__nav-item"> 311 <a href="/worldwide-network" class="sidebar__nav-link">Worldwide Network</a> 312 </li> 313 <li class="sidebar__nav-item"> 314 <a target="_blank" href="https://www.luxurypresence.com/global-collective/" class="sidebar__nav-link">Exclusive Referral Group</a> 315 </li> 316 <li class="sidebar__nav-item"> 317 <a href="/contact" class="sidebar__nav-link">Contact Us</a> 318 </li> 319 <li class="sidebar__nav-item"> 320 <a href="/home-search/account" class="sidebar__nav-link">My Search Portal</a> 321 </li> 322 </ul> 323 </div> 324</div> 325 </div> 326 <div id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="ca33406a-b24a-4100-b315-87fd53d5adc2"> 327 <div class="mobile-contact dark">
328 <div class="buttons-holder"> 329 <a href="/cdn-cgi/l/email-protection#a3c8c6d5cacde3cbccd6d0c6ccc5c8cacdccc8cc8dc0ccce"> 330 <i class="lp-i lp-i--envelope"></i> 331 </a> 332 <a href="tel:4154188850"> 333 <i class="lp-i lp-i--phone"></i> 334 </a> 335 </div> 336</div> 337 338 </div> 339 <section id="section-bcabfae8-4664-4efa-a488-eceb5362ee27" class="video-section is-font-color-light is-background-color-light" data-el-id="8ec37bf8-cdc6-4e6c-bec9-381ff2117972"> 340 <div class="video-wrapper"> 341 <div class="full-screen-video-component"> 342 <div class="video-wrapper hidable"> 343 <video class="lazy" 344 poster="https://res.cloudinary.com/luxuryp/videos/f_auto,q_auto/so_0,eo_0/xmpbkxuqliqr3n4hpgaq/opening-video-1.jpg" 345 style="height:100%;" 346 loop 347 muted 348 autoplay 349 playsinline> 350 <source data-src="https://res.cloudinary.com/luxuryp/videos/f_webm,vc_vp9,q_auto:best,w_1920,c_limit/xmpbkxuqliqr3n4hpgaq/opening-video-1.webm" type="video/webm;codecs=vp9"> 351<source data-src="https://res.cloudinary.com/luxuryp/videos/f_mp4,vc_h265,q_auto:best,w_1920,c_limit/xmpbkxuqliqr3n4hpgaq/opening-video-1.mp4" type="video/mp4;codecs=hvc1"> 352<source data-src="https://res.cloudinary.com/luxuryp/videos/f_mp4,vc_h264,q_auto:best,w_1920,c_limit/xmpbkxuqliqr3n4hpgaq/opening-video-1.mp4" type="video/mp4"> 353 </video> 354 </div> 355 <div class="poster" style="background-image: url('https://media-production.lp-cdn.com/media/0764f1ce-af37-488d-a174-0efe8f742479')"></div> 356 </div> 357 </div> 358 <div class="overlay-component"style="--section-overlay: rgba(0, 0, 0, 0.4);"></div> 359<div class="redesign"> 360 <div class="lp-container lp-container--l"> 361 <div class="collection"> 362 <div class="item"> 363 <div class="lp-title-group"> 364 365 <h1 class="lp-h1 animation"><p>San Francisco Real Estate Agents</p></h1> 366 <div class="lp-text--subtitle lp-pre-line"><p>Kevin & Nini Gueco â San Francisco Real Estate Agents. 500+ real estate transactions, $734M+ in sales, RealTrends Verified top 1.5% nationwide. Serving Noe Valley, SoMa, the Sunset, and every SF neighborhood since 2003.</p></div> 367 </div> 368 <div class="btn-container"> 369 <a 370 href="/home-search/listings" 371 372 class="lp-btn lp-btn--dark lp-btn--filled lp-btn--mob-full-width button-style-2" 373 374 375 376 377 378 > 379 Home Search 380 </a> 381 <a 382 role="button" 383 data-type="CONTACT_US" 384 class="lp-btn lp-btn--light lp-btn--filled lp-btn--mob-full-width button-style-3" 385 386 387 388 389 390 > 391 Contact Us 392 </a> 393 </div> 394 </div> 395 396 </div> 397 </div> 398</div> 399</section> 400<section id="section-951a1889-3429-42e7-8d93-31df407aeb20" class="solid-section is-font-color-dark is-background-color-light" data-el-id="e004cbf9-19e4-44e4-8a4c-3de3b2ce0df6"> 401 <div class="hoverable-section lp-vertical-paddings redesign"> 402 <div class="lp-container"> 403 404 <div class="hoverable-image hoverable-image--straight"> 405 406 <div class="hoverable-image__img-col"> 407 <div class=""> 408 <div class=""> 409 <img src="https://images.unsplash.com/photo-1614549483067-aac9b1273dd7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDI2fHxHT0xERU4lMjBHQVRFJTIwV0lUSCUyMENJVFl8ZW58MHx8fHwxNzg3NzcwMjUxfDA&ixlib=rb-4.1.0&q=80&w=1280" srcset="https://images.unsplash.com/photo-1614549483067-aac9b1273dd7?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDI2fHxHT0xERU4lMjBHQVRFJTIwV0lUSCUyMENJVFl8ZW58MHx8fHwxNzg3NzcwMjUxfDA&ixlib=rb-4.1.0&q=80&w=200 320w, https://images.unsplash.com/photo-1614549483067-aac9b1273dd7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDI2fHxHT0xERU4lMjBHQVRFJTIwV0lUSCUyMENJVFl8ZW58MHx8fHwxNzg3NzcwMjUxfDA&ixlib=rb-4.1.0&q=80&w=960 960w, https://images.unsplash.com/photo-1614549483067-aac9b1273dd7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDI2fHxHT0xERU4lMjBHQVRFJTIwV0lUSCUyMENJVFl8ZW58MHx8fHwxNzg3NzcwMjUxfDA&ixlib=rb-4.1.0&q=80&w=1280 1280w, https://images.unsplash.com/photo-1614549483067-aac9b1273dd7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDI2fHxHT0xERU4lMjBHQVRFJTIwV0lUSCUyMENJVFl8ZW58MHx8fHwxNzg3NzcwMjUxfDA&ixlib=rb-4.1.0&q=80&w=1920 1920w, https://images.unsplash.com/photo-1614549483067-aac9b1273dd7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDI2fHxHT0xERU4lMjBHQVRFJTIwV0lUSCUyMENJVFl8ZW58MHx8fHwxNzg3NzcwMjUxfDA&ixlib=rb-4.1.0&q=80&w=2560 2560w, https://images.unsplash.com/photo-1614549483067-aac9b1273dd7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDI2fHxHT0xERU4lMjBHQVRFJTIwV0lUSCUyMENJVFl8ZW58MHx8fHwxNzg3NzcwMjUxfDA&ixlib=rb-4.1.0&q=80&w=3456 3456w" sizes="(max-width: 992px) 100vw, 50vw" alt="main" class="main-image" loading="lazy"> 410 411 </div> 412 </div> 413 </div> 414 415 <div class="hoverable-image__text-col"> 416 417 <div class="hoverable-image__text-wrap"> 418 <h2 class="lp-h2">Trust the perspective of experience</h2> 419 <div class="lp-a lp-text--subtitle"> 420 <p dir="ltr" class="font-claude-response-body break-words whitespace-normal"><a href="https://kinokorealestate.com/sell-or-buy">Selling or buying</a>
420 a home in today's San Francisco market takes more than good fortune â it demands experience, sharp marketing, skilled negotiation, and data-driven strategy. We've closed over 500 transactions and $734M+ in combined sales, and we're RealTrends Verified among the top 1.5% of agents nationwide. From the condos of <a href="https://kinokorealestate.com/neighborhoods/mission-bay">Mission Bay</a> and <a href="https://kinokorealestate.com/neighborhoods/south-beach">South Beach</a> to the homes of <a href="https://kinokorealestate.com/neighborhoods/noe-valley">Noe Valley</a> and <a href="https://kinokorealestate.com/neighborhoods/bernal-heights">Bernal Heights</a>, we're a trusted choice for buyers and sellers across the city. 421 422</p><p dir="ltr" class="font-claude-response-body break-words whitespace-normal">Two decades of combined real estate and mortgage consulting experience means we know how to navigate any market condition. Whether you're selling a condo in SoMa or a house in the Sunset or <a href="https://kinokorealestate.com/neighborhoods/richmond-district">Richmond</a>, we understand the nuances of each neighborhood and tailor our approach to your goals. Let's talk about what's next for your San Francisco home.</p> 423 </div> 424 <div class="buttons-wrapper"> 425 <a 426 href="/sell-or-buy" 427 target="_blank" 428 class="lp-btn lp-btn--dark lp-btn--outline lp-btn--big lp-btn--mob-full-width button-style-1" 429 430 431 432 433 434 > 435 Learn More 436 </a> 437 </div> 438 </div> 439 440 441 </div> 442 </div> 443 </div> 444</div> 445</section> 446<section id="section-21378400-f49d-4db7-a004-7a7eafce8687" class="solid-section is-font-color-dark is-background-color-light" data-el-id="3dc6645b-a999-4349-b46c-693c2d0500c9">
vendor: 109 bytes, lines 446-447
446 447<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
447<script type="text/x-handlebars-template" class="gridItem pagination-script"><div class="grid-item"> 448 <a href="/neighborhoods/{{slug}}" class="item-wrapper"> 449 <div class="image-holder" > 450 {{{mediaImage media.[0] sizes="(max-width: 768px) 100vw, 50vw" alt=name}}} 451 </div> 452 <div class="overlay"></div> 453 <div class="content-container"> 454 <h3 class="lp-h3">{{name}}</h3> 455 <div class="button-wrapper"> 456 <span class="lp-btn lp-btn--light lp-btn--filled lp-btn--big ">Learn More</span> 457 </div> 458 </div> 459 </a> 460</div> 461</script>
461 462<div class="featured-neighborhoods-grid lp-vertical-paddings redesign"> 463 464 <div class="lp-container"> 465 <div class="lp-title-group"> 466 467 <h2 class="lp-h2">Neighborhoods</h2> 468 <div class="lp-text--subtitle"><p>Explore the unique character of San Francisco, from distinctive architecture and local culture to the neighborhoods and real estate opportunities that define the city.</p></div> 469 </div> 470 </div> 471 472 <div class="items "> 473 <div class="grid-item"> 474 <a href="/neighborhoods/potrero-hill" class="item-wrapper"> 475 <div class="image-holder" > 476 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/f24cd4ad-6e22-48b6-be2d-14a2d27f196e" 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/f24cd4ad-6e22-48b6-be2d-14a2d27f196e 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/f24cd4ad-6e22-48b6-be2d-14a2d27f196e 1080w" alt="Aerial View Of Residential Potrero Hill in San Francisco" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy"> 477 </div> 478 <div class="overlay"></div> 479 <div class="content-container"> 480 <h3 class="lp-h3">Potrero Hill</h3> 481 <div class="button-wrapper"> 482 <span class="lp-btn lp-btn--light lp-btn--filled lp-btn--big ">Learn More</span> 483 </div> 484 </div> 485 </a> 486 </div> 487 <div class="grid-item"> 488 <a href="/neighborhoods/dogpatch" class="item-wrapper"> 489 <div class="image-holder" > 490 <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/ymeecsfgsuoyafolfbbt" 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/ymeecsfgsuoyafolfbbt 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/ymeecsfgsuoyafolfbbt 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ymeecsfgsuoyafolfbbt 1920w" alt="Longboat Key Condos for Sale" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy"> 491 </div> 492 <div class="overlay"></div> 493 <div class="content-container"> 494 <h3 class="lp-h3">Dogpatch</h3> 495 <div class="button-wrapper"> 496 <span class="lp-btn lp-btn--light lp-btn--filled lp-btn--big ">Learn More</span> 497 </div> 498 </div> 499 </a> 500 </div> 501 <div class="grid-item"> 502 <a href="/neighborhoods/st-francis-wood" class="item-wrapper"> 503 <div class="image-holder" > 504 <img src="https://images.unsplash.com/photo-1688506900123-0ae2c0b063a7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDQxMHx8bHV4dXJ5JTIwaG9tZXxlbnwwfHx8fDE3NjAxMjY5MzV8MA&ixlib=rb-4.1.0&q=80&w=1280" srcset="https://images.unsplash.com/photo-1688506900123-0ae2c0b063a7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDQxMHx8bHV4dXJ5JTIwaG9tZXxlbnwwfHx8fDE3NjAxMjY5MzV8MA&ixlib=rb-4.1.0&q=80&w=960 960w, https://images.unsplash.com/photo-1688506900123-0ae2c0b063a7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDQxMHx8bHV4dXJ5JTIwaG9tZXxlbnwwfHx8fDE3NjAxMjY5MzV8MA&ixlib=rb-4.1.0&q=80&w=1280 1280w, https://images.unsplash.com/photo-1688506900123-0ae2c0b063a7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDQxMHx8bHV4dXJ5JTIwaG9tZXxlbnwwfHx8fDE3NjAxMjY5MzV8MA&ixlib=rb-4.1.0&q=80&w=1920 1920w, https://images.unsplash.com/photo-1688506900123-0ae2c0b063a7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDQxMHx8bHV4dXJ5JTIwaG9tZXxlbnwwfHx8fDE3NjAxMjY5MzV8MA&ixlib=rb-4.1.0&q=80&w=2560 2560w, https://images.unsplash.com/photo-1688506900123-0ae2c0b063a7?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDQxMHx8bHV4dXJ5JTIwaG9tZXxlbnwwfHx8fDE3NjAxMjY5MzV8MA&ixlib=rb-4.1.0&q=80&w=3456 3024w" alt="St. Francis Wood" sizes="(max-width: 768px) 100vw, 50vw" class="portrait" loading="lazy"> 505 </div> 506 <div class="overlay"></div> 507 <div class="content-container"> 508 <h3 class="lp-h3">St. Francis Wood</h3> 509 <div class="button-wrapper">
510 <span class="lp-btn lp-btn--light lp-btn--filled lp-btn--big ">Learn More</span> 511 </div> 512 </div> 513 </a> 514 </div> 515 <div class="grid-item"> 516 <a href="/neighborhoods/forest-hill" class="item-wrapper"> 517 <div class="image-holder" > 518 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/9b3858b8-7365-46f9-92b5-943901434229" 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/9b3858b8-7365-46f9-92b5-943901434229 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/9b3858b8-7365-46f9-92b5-943901434229 1080w" alt="Forest Hill" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy"> 519 </div> 520 <div class="overlay"></div> 521 <div class="content-container"> 522 <h3 class="lp-h3">Forest Hill</h3> 523 <div class="button-wrapper"> 524 <span class="lp-btn lp-btn--light lp-btn--filled lp-btn--big ">Learn More</span> 525 </div> 526 </div> 527 </a> 528 </div> 529 <div class="grid-item"> 530 <a href="/neighborhoods/west-portal" class="item-wrapper"> 531 <div class="image-holder" > 532 <img src="https://images.unsplash.com/photo-1621693722835-44c9dcb724fd?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGx1eHVyeSUyMGNvdW50cnklMjBob21lfGVufDB8fHx8MTc2MDEyODM4N3ww&ixlib=rb-4.1.0&q=80&w=1280" srcset="https://images.unsplash.com/photo-1621693722835-44c9dcb724fd?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGx1eHVyeSUyMGNvdW50cnklMjBob21lfGVufDB8fHx8MTc2MDEyODM4N3ww&ixlib=rb-4.1.0&q=80&w=960 960w, https://images.unsplash.com/photo-1621693722835-44c9dcb724fd?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGx1eHVyeSUyMGNvdW50cnklMjBob21lfGVufDB8fHx8MTc2MDEyODM4N3ww&ixlib=rb-4.1.0&q=80&w=1280 1280w, https://images.unsplash.com/photo-1621693722835-44c9dcb724fd?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGx1eHVyeSUyMGNvdW50cnklMjBob21lfGVufDB8fHx8MTc2MDEyODM4N3ww&ixlib=rb-4.1.0&q=80&w=1920 1920w, https://images.unsplash.com/photo-1621693722835-44c9dcb724fd?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGx1eHVyeSUyMGNvdW50cnklMjBob21lfGVufDB8fHx8MTc2MDEyODM4N3ww&ixlib=rb-4.1.0&q=80&w=2560 2560w, https://images.unsplash.com/photo-1621693722835-44c9dcb724fd?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDl8fGx1eHVyeSUyMGNvdW50cnklMjBob21lfGVufDB8fHx8MTc2MDEyODM4N3ww&ixlib=rb-4.1.0&q=80&w=3456 3456w" alt="West Portal" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy"> 533 </div> 534 <div class="overlay"></div> 535 <div class="content-container"> 536 <h3 class="lp-h3">West Portal</h3> 537 <div class="button-wrapper"> 538 <span class="lp-btn lp-btn--light lp-btn--filled lp-btn--big ">Learn More</span> 539 </div> 540 </div> 541 </a> 542 </div> 543 <div class="grid-item"> 544 <a href="/neighborhoods/sunset-district" class="item-wrapper"> 545 <div class="image-holder" > 546 <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/kympqkesjlwcegveozhp" 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/kympqkesjlwcegveozhp 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/kympqkesjlwcegveozhp 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/kympqkesjlwcegveozhp 1920w" alt="Sunset District" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy"> 547 </div> 548 <div class="overlay"></div> 549 <div class="content-container"> 550 <h3 class="lp-h3">Sunset District</h3> 551 <div class="button-wrapper"> 552 <span class="lp-btn lp-btn--light lp-btn--filled lp-btn--big ">Learn More</span> 553 </div> 554 </div> 555 </a> 556 </div> 557 <div class="grid-item"> 558 <a href="/neighborhoods/richmond-district" class="item-wrapper"> 559 <div class="image-holder" > 560 <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/mnrjcgwgcexkudmgkx8o" 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/mnrjcgwgcexkudmgkx8o 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/mnrjcgwgcexkudmgkx8o 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/mnrjcgwgcexkudmgkx8o 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/mnrjcgwgcexkudmgkx8o 2304w" alt="Richmond District" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy"> 561 </div> 562 <div class="overlay"></div> 563 <div class="content-container"> 564 <h3 class="lp-h3">Richmond District</h3> 565 <div class="button-wrapper">
566 <span class="lp-btn lp-btn--light lp-btn--filled lp-btn--big ">Learn More</span> 567 </div> 568 </div> 569 </a> 570 </div> 571 <div class="grid-item"> 572 <a href="/neighborhoods/golden-gate-heights" class="item-wrapper"> 573 <div class="image-holder" > 574 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/99a166df-6a4f-41c0-8cad-e64d18bcd3f7" 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/99a166df-6a4f-41c0-8cad-e64d18bcd3f7 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/99a166df-6a4f-41c0-8cad-e64d18bcd3f7 1080w" alt="Golden Gate Heights" sizes="(max-width: 768px) 100vw, 50vw" loading="lazy"> 575 </div> 576 <div class="overlay"></div> 577 <div class="content-container"> 578 <h3 class="lp-h3">Golden Gate Heights</h3> 579 <div class="button-wrapper"> 580 <span class="lp-btn lp-btn--light lp-btn--filled lp-btn--big ">Learn More</span> 581 </div> 582 </div> 583 </a> 584 </div> 585 </div> 586</div> 587</section> 588<section id="section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4" class="solid-section is-font-color-light is-background-color-dark" data-el-id="eb10e45e-8560-43c3-9725-c920b68d3653"> 589 <div class="double-image-grid Full-Bleed redesign"> 590 <div class="cta-section"> 591 <div class="left-image image-back"> 592 <div class="image-subsection background" style="color: #ffffff; background-image: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), url('https://media-production.lp-cdn.com/media/0bfc04d9-6e70-412a-a1eb-ad6a1b691191'); background-repeat: no-repeat; background-position: center; background-size: cover;"> 593 </div> 594 595 </div> 596 <div class="cta-section__content" style="color: #ffffff"> 597 <div class="cta-section__text-block"> 598 <h2 class="lp-h2">Our Properties</h2> 599 <div class="cta-section__lead lp-text--subtitle"><p>View some of our most exclusive available listings.</p></div> 600 601 <div class="cta-section__btn-wrap"> 602 <a 603 href="/properties/sale" 604 605 class="lp-btn lp-btn--light lp-btn--filled button-style-2" 606 607 608 609 610 611 > 612 Explore 613 </a> 614 </div> 615 616 </div> 617 </div> 618 </div> 619 620 621 <div class="cta-section"> 622 <div class="right-image image-back"> 623 <div class="image-subsection background" style="color: #FFF; background-image: linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)), url('https://media-production.lp-cdn.com/media/085d5ee8-aafc-4dbc-889a-2a295843523e'); background-repeat: no-repeat; background-position: center; background-size: cover;"> 624 </div> 625 626 </div> 627 <div class="cta-section__content" style="color: #FFF"> 628 <div class="cta-section__text-block"> 629 <h2 class="lp-h2">Our Team</h2> 630 <div class="cta-section__lead lp-text--subtitle"><p>Meet our team of dedicated and talented agents.</p></div> 631 632 <div class="cta-section__btn-wrap"> 633 <a 634 href="/team" 635 636 class="lp-btn lp-btn--light lp-btn--filled button-style-2" 637 638 639 640 641 642 > 643 Meet the Team 644 </a> 645 </div> 646 647 </div> 648 </div> 649 </div> 650</div> 651</section> 652<section id="section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e" class="solid-section is-font-color-dark is-background-color-light" data-el-id="1296c4a2-2800-4a54-95a4-c30fa6be4ba5"> 653<div class="testimonials redesign"> 654 <div class="container"> 655 <h2 class="title">Hear From Our Clients</h2> 656 657 </div> 658 <div class="container slider-container"> 659 <div class="items-slider" data-autoscroll-interval="6" data-arrows-style=""> 660 <div class="item"> 661 <div class="image-subsection card" style="color: rgba(0, 0, 0, 1); background-image: linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2)), url('https://media-production.lp-cdn.com/media/745a631e-331d-4fa8-8073-7bef7fe3f875'); background-repeat: no-repeat; background-position: center; background-size: cover;"> 662 <div class="top-block"> 663 <div class="userpic"> 664 <h3 class="userpic-initials">A</h3> 665 </div> 666 <h4 class="author">Alan H.</h4> 667 <blockquote class="testimonial-text">We feel so fortunate to have selected Kinoko Real Estate to sell our luxury South Beach SF condo. Even though market conditions were challenging and interest rates were rising, Kevin, Nini, Catherine and the rest of their team ...</blockquote> 668 </div> 669 <a 670 href="/testimonials" 671 672 class="btn btn--primary-dark card-button button-style-1" 673 674 675 676 677 678 > 679 Read More 680 </a> 681 </div> 682 </div> 683 <div class="item"> 684 <div class="image-subsection card" style="color: rgba(0, 0, 0, 1); background-image: linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2)), url('https://media-production.lp-cdn.com/media/745a631e-331d-4fa8-8073-7bef7fe3f875'); background-repeat: no-repeat; background-position: center; background-size: cover;"> 685 <div class="top-block"> 686 <div class="userpic"> 687 <h3 class="userpic-initials">K</h3> 688 </div> 689 <h4 class="author">Karen K.</h4> 690 <blockquote class="testimonial-text">My husband and I had a property in SF that was listed on the MLS for over two years and we switched agents twice. We were losing hope and thought it might never sell. Kinoko was highly recommended by a broker friend in the Peni...</blockquote> 691 </div> 692 <a 693 href="/testimonials" 694 695 class="btn btn--primary-dark card-button button-style-1" 696 697 698 699 700 701 > 702 Read More 703 </a> 704 </div> 705 </div> 706 <div class="item"> 707 <div class="image-subsection card" style="color: rgba(0, 0, 0, 1); background-image: linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2)), url('https://media-production.lp-cdn.com/media/745a631e-331d-4fa8-8073-7bef7fe3f875'); background-repeat: no-repeat; background-position: center; background-size: cover;"> 708 <div class="top-block"> 709 <div class="userpic"> 710 <h3 class="userpic-initials">L</h3> 711 </div> 712 <h4 class="author">Leon L.</h4> 713 <blockquote class="testimonial-text">I had the great pleasure of working with Nini and Marcell at Kinoko. In short, they helped me close on the home of my dreams during incredibly challenging times. It was my first home purchase and I couldn't have been happier wi...</blockquote> 714 </div> 715 <a 716 href="/testimonials" 717 718 class="btn btn--primary-dark card-button button-style-1" 719 720 721 722 723 724 > 725 Read More 726 </a> 727 </div> 728 </div> 729 <div class="item"> 730 <div class="image-subsection card" style="color: rgba(0, 0, 0, 1); background-image: linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2)), url('https://media-production.lp-cdn.com/media/745a631e-331d-4fa8-8073-7bef7fe3f875'); background-repeat: no-repeat; background-position: center; background-size: cover;"> 731 <div class="top-block"> 732 <div class="userpic"> 733 <h3 class="userpic-initials">B</h3> 734 </div> 735 <h4 class="author">Buyer</h4> 736 <blockquote class="testimonial-text">I highly recommend Kevin if youâre looking to get into the real estate market. My wife and I were renting a 1 BR in the Beacon, and wanting to start a family, began looking to stay in the city and buy a 2BR. Since we both can g...</blockquote> 737 </div> 738 <a 739 href="/testimonials" 740 741 class="btn btn--primary-dark card-button button-style-1" 742 743 744 745 746 747 > 748 Read More 749 </a> 750 </div> 751 </div> 752 <div class="item"> 753 <div class="image-subsection card" style="color: rgba(0, 0, 0, 1); background-image: linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2)), url('https://media-production.lp-cdn.com/media/745a631e-331d-4fa8-8073-7bef7fe3f875'); background-repeat: no-repeat; background-position: center; background-size: cover;"> 754 <div class="top-block"> 755 <div class="userpic"> 756 <h3 class="userpic-initials">J</h3> 757 </div> 758 <h4 class="author">J. Sinskey</h4> 759 <blockquote class="testimonial-text">Strongly recommend Nini and Kevin. Nini and Kevin and their team at Gueco Real Estate are simply amazing. My husband and I would not have been able to buy our first home without them. We met Nini in person on a Saturday and wer...</blockquote> 760 </div> 761 <a 762 href="/testimonials" 763 764 class="btn btn--primary-dark card-button button-style-1" 765 766 767 768 769 770 > 771 Read More 772 </a> 773 </div> 774 </div> 775 <div class="item"> 776 <div class="image-subsection card" style="color: rgba(0, 0, 0, 1); background-image: linear-gradient(rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0.2)), url('https://media-production.lp-cdn.com/media/745a631e-331d-4fa8-8073-7bef7fe3f875'); background-repeat: no-repeat; background-position: center; background-size: cover;"> 777 <div class="top-block"> 778 <div class="userpic"> 779 <h3 class="userpic-initials">S</h3> 780 </div> 781 <h4 class="author">Seller</h4> 782 <blockquote class="testimonial-text">Kevin really does know what it takes to get a place sold (at a great price). When I first reached out to Kevin, I wasnât entirely set on selling my Mission Bay condo. It was the marketing materials I was getting from him that g...</blockquote> 783 </div> 784 <a 785 href="/testimonials" 786 787 class="btn btn--primary-dark card-button button-style-1" 788 789 790 791 792 793 > 794 Read More 795 </a> 796 </div> 797 </div> 798 </div> 799 <div class="arrows custom-arrows--dark"> 800 </div> 801 </div> 802</div> 803 804</section> 805<section id="section-a1b98f91-47eb-47b4-bb02-5c2c74f6f975" class="solid-section is-font-color-dark is-background-color-light" data-el-id="a261202b-cc2b-4a7e-912a-a4b8ffe6ab1b"> 806 <!-- ââââââââââââââââââââââââââââââââââââââââââââââââââââââ 807 KINOKO · Case Studies Embed Block 808 For Luxury Presence custom HTML blocks 809 TO SWAP A LISTING: 810 Duplicate one <a class="kre-embed-card"> block below and 811 edit its address, hood, price, headline, image, and url. 812 TO CHANGE WHERE THE BUTTON LINKS: 813 Search for "/casestudies" below and update the path. 814 Font family and size are intentionally left unset â 815 this block inherits typography from the site theme. 816âââââââââââââââââââââââââââââââââââââââââââââââââââââââ --> 817<style> 818 .kre-embed { 819 background: #354764; 820 padding: 3rem 2.5rem; 821 position: relative; 822 overflow: hidden; 823 } 824 .kre-embed::before { 825 content: ''; 826 position: absolute; 827 inset: 0; 828 background: radial-gradient(ellipse 60% 80% at 80% 20%, rgba(213,163,144,.12) 0%, transparent 70%); 829 pointer-events: none; 830 } 831 .kre-embed > * { position: relative; } 832 .kre-embed-eyebrow { 833 letter-spacing: .28em; 834 text-transform: uppercase; 835 color: #D5A390; 836 margin-bottom: .9rem; 837 } 838 .kre-embed-headline { 839 color: #fff; 840 line-height: 1.1; 841 margin-bottom: .7rem; 842 } 843 .kre-embed-divider { 844 width: 2.5rem; 845 height: 2px; 846 background: #C44628; 847 margin-bottom: 1.2rem; 848 } 849 .kre-embed-tagline { 850 color: rgba(255,255,255,.45); 851 font-style: italic; 852 line-height: 1.65;
853 max-width: 36rem; 854 margin-bottom: 2rem; 855 } 856 .kre-embed-tagline a { 857 color: #D5A390; 858 text-decoration: underline; 859 text-decoration-color: rgba(213,163,144,.4); 860 text-underline-offset: .2em; 861 transition: color .2s, text-decoration-color .2s; 862 } 863 .kre-embed-tagline a:hover { 864 color: #fff; 865 text-decoration-color: #fff; 866 } 867 .kre-embed-grid { 868 display: grid; 869 grid-template-columns: repeat(3, 1fr); 870 gap: 2px; 871 margin-bottom: 2rem; 872 } 873 .kre-embed-card { 874 text-decoration: none; 875 color: inherit; 876 display: flex; 877 flex-direction: column; 878 background: #1e2e45; 879 overflow: hidden; 880 position: relative; 881 } 882 .kre-embed-card::before { 883 content: ''; 884 position: absolute; 885 top: 0; left: 0; right: 100%; 886 height: 2px; 887 background: #D5A390; 888 transition: right .4s cubic-bezier(.33,1,.68,1); 889 z-index: 2; 890 } 891 .kre-embed-card:hover::before { right: 0; } 892 .kre-embed-photo { 893 aspect-ratio: 4/3; 894 overflow: hidden; 895 } 896 .kre-embed-photo img { 897 width: 100%; height: 100%; 898 object-fit: cover; 899 display: block; 900 opacity: .8; 901 transition: transform .6s cubic-bezier(.33,1,.68,1), opacity .3s; 902 } 903 .kre-embed-card:hover .kre-embed-photo img { 904 transform: scale(1.04); 905 opacity: 1; 906 } 907 .kre-embed-card-body { 908 padding: 1.1rem 1.2rem 1.3rem; 909 } 910 .kre-embed-hood { 911 letter-spacing: .25em; 912 text-transform: uppercase; 913 color: #D5A390; 914 display: block; 915 margin-bottom: .5rem; 916 } 917 .kre-embed-address { 918 color: rgba(255,255,255,.5); 919 margin-bottom: .4rem; 920 } 921 .kre-embed-price { 922 color: #fff; 923 line-height: 1; 924 margin-bottom: .25rem; 925 } 926 .kre-embed-card-headline { 927 font-style: italic; 928 color: #C44628; 929 } 930 .kre-embed-seo-text { 931 color: rgba(255,255,255,.5); 932 line-height: 1.7; 933 max-width: 44rem; 934 margin-bottom: 2rem; 935 } 936 .kre-embed-cta-row { 937 display: flex;
938 align-items: center; 939 gap: 1.8rem; 940 flex-wrap: wrap; 941 } 942 .kre-embed-btn { 943 display: inline-block; 944 letter-spacing: .2em; 945 text-transform: uppercase; 946 color: #fff; 947 background: #C44628; 948 padding: .75rem 1.8rem; 949 text-decoration: none; 950 transition: background .2s; 951 } 952 .kre-embed-btn:hover { background: #a33920; } 953 @media (max-width: 640px) { 954 .kre-embed { padding: 2rem 1.5rem; } 955 .kre-embed-grid { grid-template-columns: 1fr 1fr; } 956 .kre-embed-grid .kre-embed-card:last-child { display: none; } 957 } 958</style> 959<div class="kre-embed"> 960 <div class="kre-embed-eyebrow">Kinoko Real Estate · San Francisco</div> 961 <h2 class="kre-embed-headline">Recent results.</h2> 962 <div class="kre-embed-divider"></div> 963 <p class="kre-embed-tagline">We do not simply list homes. We manufacture leverage, curate exposure, and protect property values, and we help you find the <a href="https://kinokorealestate.com/blog/best-time-to-sell-a-home-in-san-francisco">best time to sell in San Francisco,</a> whatever month that turns out to be.</p> 964 965 <div class="kre-embed-grid"> 966 <a class="kre-embed-card" href="/850-wisconsin-st-case-study"> 967 <div class="kre-embed-photo"> 968 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/4aab461c-859d-4a40-9694-31d4700bd680" alt="850 Wisconsin Street, Potrero Hill â San Francisco multi-unit residence sold by Kinoko Real Estate" loading="lazy"> 969 </div> 970 <div class="kre-embed-card-body"> 971 <span class="kre-embed-hood">Potrero Hill</span> 972 <h3 class="kre-embed-address">850 Wisconsin Street</h3> 973 <div class="kre-embed-price">$4,540,000</div> 974 <div class="kre-embed-card-headline">Fastest offer timeline in its tier</div> 975 </div> 976 </a> 977 978 <a class="kre-embed-card" href="#"> 979 <div class="kre-embed-photo"> 980 <img src="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/5b3d90db-0d3d-480d-a69d-a0cb85e71778" alt="154 San Pablo Avenue, St. Francis Wood â San Francisco single-family home sold by Kinoko Real Estate" loading="lazy"> 981 </div> 982 <div class="kre-embed-card-body"> 983 <span class="kre-embed-hood">St. Francis Wood</span> 984 <h3 class="kre-embed-address">154 San Pablo Avenue</h3> 985 <div class="kre-embed-price">$4,200,000</div> 986 <div class="kre-embed-card-headline">Top-3 price/SF in St. Francis Wood</div> 987 </div> 988 </a> 989 990 <a class="kre-embed-card" href="/255-crestlake-drive-case-study"> 991 <div class="kre-embed-photo"> 992 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/2cb57509-3c6d-4e1f-8b8c-00bebc2b8124" alt="255 Crestlake Drive, Pine Lake Park â San Francisco single-family home sold by Kinoko Real Estate" loading="lazy"> 993 </div> 994 <div class="kre-embed-card-body"> 995 <span class="kre-embed-hood">Pine Lake Park</span> 996 <h3 class="kre-embed-address">255 Crestlake Drive</h3> 997 <div class="kre-embed-price">$3,125,000</div> 998 <div class="kre-embed-card-headline">All-time neighborhood record</div> 999 </div> 1000 </a> 1001 </div> 1002 1003 <p class="kre-embed-seo-text">Every sale above reflects the same approach Kinoko Real Estate brings to San Francisco's most competitive housing markets: sharp pricing, precise buyer targeting, and marketing built around what makes each home different.</p> 1004 1005 <div class="kre-embed-cta-row"> 1006 <a class="kre-embed-btn" href="https://kinokorealestate.com/casestudies">View all case studies</a> 1007 </div> 1008</div> 1009</section> 1010<section id="section-da5a7210-1edb-47e6-b554-6eb250d17dad" class="solid-section is-font-color-dark is-background-color-light" data-el-id="aeaf061e-5cc8-4b4a-9963-23f50ba3820f">
1011<script type="text/x-handlebars-template" class="gridItem pagination-script"><li class="property-list__item feature"> 1012 <a class="property-list__item-link" href="{{#if fromMLS}}/home-search/listings/{{id}}{{^}}/properties/{{slug}}{{/if}}" {{#if fromMLS}} data-turbolinks="false" {{/if}}> 1013 <div class="property-list__img"> 1014 {{{mediaImage media.[0]}}} 1015 {{#if openHouseHours}} 1016 <div class="open-house label-house bf1">Open House: {{openHouseHours}}</div> 1017 {{/if}} 1018 </div> 1019 <span class="property-list__label"> 1020 {{formatPropertyStatus status false (hbFormatDate soldDate)}} 1021 </span> 1022 <div class="property-list__text"> 1023 <h4 class="serif">{{name}}</h4> 1024 {{#if privateAddress}} 1025 <p> 1026 Call for Address 1027 </p> 1028 {{else}} 1029 {{#if fullAddress}} 1030 <p> 1031 {{fullAddress}} 1032 </p> 1033 {{else}} 1034 <p> 1035 Call For Address 1036 </p> 1037 {{/if}} 1038 {{/if}} 1039 <p> 1040 {{#if bedroomCount}} 1041 {{bedroomCount}} BD | 1042 {{else}} 1043 {{#ifIn "daf8aaa2-8b6f-4f2d-a324-754e0316d2b6" (JSONstringify types)}} 1044 {{#ifEquals bedroomCount 0}} 1045 Studio | 1046 {{/ifEquals}} 1047 {{else}} 1048 {{#ifIn "dea9daeb-4eb9-4bd8-8380-1a5c9384e817" (JSONstringify types)}} 1049 {{#ifEquals bedroomCount 0}} 1050 Studio | 1051 {{/ifEquals}} 1052 {{else}} 1053 {{#ifIn "d6b17d8b-a7a2-4de5-95c0-c2783b26de7a" (JSONstringify types)}} 1054 {{#ifEquals bedroomCount 0}} 1055 Studio | 1056 {{/ifEquals}} 1057 {{else}} 1058 {{#ifIn "9ac67b4b-bf76-4e0d-999e-701908f8f9ab" (JSONstringify types)}} 1059 {{#ifEquals bedroomCount 0}} 1060 Studio | 1061 {{/ifEquals}} 1062 {{else}} 1063 {{#ifIn "9a70fec3-5946-4d04-9acb-74d98781f636" (JSONstringify types)}} 1064 {{#ifEquals bedroomCount 0}} 1065 Studio | 1066 {{/ifEquals}} 1067 {{else}} 1068 {{#ifIn "c68279bc-2904-4ab8-9e84-42ecf6af008c" (JSONstringify types)}} 1069 {{#ifEquals bedroomCount 0}} 1070 Studio | 1071 {{/ifEquals}} 1072 {{/ifIn}} 1073 {{/ifIn}} 1074 {{/ifIn}} 1075 {{/ifIn}} 1076 {{/ifIn}} 1077 {{/ifIn}} 1078 {{/if}} 1079 {{#if bathCount}} 1080 {{bathCount}} BA 1081 {{#if livingSpaceSize}} 1082 | 1083 {{/if}} 1084 {{/if}} 1085 {{#ifIn "2c63593e-4869-41f8-bc78-03fa80e24580" (JSONstringify types)}} 1086 {{#if lotAreaSize}} {{lpFormatNumber lotAreaSize}} {{formatAreaUnit lotAreaUnits}}{{/if}} 1087 {{else}} 1088 {{#if livingSpaceSize}} {{lpFormatNumber livingSpaceSize}} {{formatAreaUnit livingSpaceUnits}}{{/if}} 1089 {{/ifIn}} 1090 </p> 1091 <h5 style="text-transform: capitalize"> 1092 {{formatPropertyPrice this precision=2}} 1093 </h5> 1094 </div> 1095 </a> 1096 1097 1098 <div class="property-list__hover"> 1099 <a href="{{#if fromMLS}}/home-search/listings/{{id}}{{^}}/properties/{{slug}}{{/if}}" {{#if fromMLS}} data-turbolinks="false" {{/if}} class="hover-link"></a> 1100 <div class="property-list__buttons"> 1101 <a class="property-list__view" href="{{#if fromMLS}}/home-search/listings/{{id}}{{^}}/properties/{{slug}}{{/if}}" {{#if fromMLS}} data-turbolinks="false" {{/if}}> 1102 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1103 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1104 </a> 1105 <div class="property-list__share"> 1106 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1107 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1108 <ul class="socials socials--block-dark"> 1109 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/{{slug}}" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1110 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/{{slug}}&text={{name}}" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1111 <li><a href="mailto:?subject={{name}}&body={{name}} - https://kinokorealestate.com/properties/{{slug}}" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1112 </ul> 1113 </div> 1114 </div> 1115 </div> 1116</li> 1117</script>
1117 1118<div class="redesign property-list-section"> 1119 <div> 1120 <div class="container title-container"> 1121 <h2 class="serif">Recent Sales</h2> 1122 </div> 1123 <div class="container description-container"> 1124 <div class="description"><p>Explore recent San Francisco real estate sales, featuring luxury homes, condos, and distinctive properties across San Francisco and the Bay Area. Discover the homes and neighborhoods represented by Kinoko Real Estate and see the latest sales shaping the local market.</p></div> 1125 </div> 1126 <div class="container"> 1127 <ul class="property-list data-container"> 1128 <li class="property-list__item feature"> 1129 <a class="property-list__item-link" href="/properties/bridge_sfar-426106115" > 1130 <div class="property-list__img"> 1131 <img src="https://dlajgvw9htjpb.cloudfront.net/cms/f62f900d-59fc-4354-b573-bcc1e7da46a2/426106115/-641064247574515614.jpg" alt="" loading="lazy"> 1132 </div> 1133 <span class="property-list__label"> 1134 Sold 1135 </span> 1136 <div class="property-list__text"> 1137 <h4 class="serif">Private Address</h4> 1138 <p> 1139 Call for Address 1140 </p> 1141 <p> 1142 2 BD | 1143 3 BA 1144 | 1145 3,178 Sq.Ft. 1146 </p> 1147 <h5 style="text-transform: capitalize"> 1148 $6,425,000 1149 </h5> 1150 </div> 1151 </a> 1152 1153 1154 <div class="property-list__hover"> 1155 <a href="/properties/bridge_sfar-426106115" class="hover-link"></a> 1156 <div class="property-list__buttons"> 1157 <a class="property-list__view" href="/properties/bridge_sfar-426106115" > 1158 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1159 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1160 </a> 1161 <div class="property-list__share"> 1162 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1163 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1164 <ul class="socials socials--block-dark"> 1165 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/bridge_sfar-426106115" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1166 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/bridge_sfar-426106115&text=Private Address" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1167 <li><a href="/cdn-cgi/l/email-protection#7d420e081f17181e09402d0f140b1c09185d3c19190f180e0e5b1f121904402d0f140b1c09185d3c19190f180e0e5d505d1509090d0e4752521614131216120f181c11180e091c0918531e1210520d0f120d180f0914180e521f0f14191a18220e1b1c0f50494f4b4c4d4b4c4c48" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1168 </ul> 1169 </div> 1170 </div> 1171 </div> 1172 </li> 1173 <li class="property-list__item feature"> 1174 <a class="property-list__item-link" href="/properties/249-fair-oaks-street-san-francisco-ca-us-94110-426110513" > 1175 <div class="property-list__img"> 1176 <img src="https://dlajgvw9htjpb.cloudfront.net/cms/f62f900d-59fc-4354-b573-bcc1e7da46a2/426110513/997703908960950663.jpg" alt="" loading="lazy"> 1177 </div> 1178 <span class="property-list__label"> 1179 Sold 1180 </span> 1181 <div class="property-list__text"> 1182 <h4 class="serif">249 Fair Oaks Street</h4> 1183 <p> 1184 249 Fair Oaks Street, San Francisco, CA 94110 1185 </p> 1186 <p> 1187 3 BD | 1188 3 BA 1189 | 1190 2,275 Sq.Ft. 1191 </p> 1192 <h5 style="text-transform: capitalize"> 1193 $4,700,000 1194 </h5> 1195 </div> 1196 </a> 1197 1198 1199 <div class="property-list__hover">
1200 <a href="/properties/249-fair-oaks-street-san-francisco-ca-us-94110-426110513" class="hover-link"></a> 1201 <div class="property-list__buttons"> 1202 <a class="property-list__view" href="/properties/249-fair-oaks-street-san-francisco-ca-us-94110-426110513" > 1203 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1204 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1205 </a> 1206 <div class="property-list__share"> 1207 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1208 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1209 <ul class="socials socials--block-dark"> 1210 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/249-fair-oaks-street-san-francisco-ca-us-94110-426110513" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1211 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/249-fair-oaks-street-san-francisco-ca-us-94110-426110513&text=249 Fair Oaks Street" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1212 <li><a href="/cdn-cgi/l/email-protection#dce3afa9beb6b9bfa8e1eee8e5fc9abdb5aefc93bdb7affc8fa8aeb9b9a8fabeb3b8a5e1eee8e5fc9abdb5aefc93bdb7affc8fa8aeb9b9a8fcf1fcb4a8a8acafe6f3f3b7b5b2b3b7b3aeb9bdb0b9afa8bda8b9f2bfb3b1f3acaeb3acb9aea8b5b9aff3eee8e5f1babdb5aef1b3bdb7aff1afa8aeb9b9a8f1afbdb2f1baaebdb2bfb5afbfb3f1bfbdf1a9aff1e5e8ededecf1e8eeeaededece9edef" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1213 </ul> 1214 </div> 1215 </div> 1216 </div> 1217 </li> 1218 <li class="property-list__item feature"> 1219 <a class="property-list__item-link" href="/properties/850-wisconsin-street-san-francisco-ca-us-94107-426128995" > 1220 <div class="property-list__img"> 1221 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/3bc0570a-b8df-4ad9-855e-32283fb33dbd" 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/3bc0570a-b8df-4ad9-855e-32283fb33dbd 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/3bc0570a-b8df-4ad9-855e-32283fb33dbd 1000w" alt="" loading="lazy"> 1222 </div> 1223 <span class="property-list__label"> 1224 Sold 1225 </span> 1226 <div class="property-list__text"> 1227 <h4 class="serif">850 Wisconsin Street</h4> 1228 <p> 1229 850 Wisconsin Street, San Francisco, CA 94107 1230 </p> 1231 <p> 1232 5 BD | 1233 3 BA 1234 | 1235 3,015 Sq.Ft. 1236 </p> 1237 <h5 style="text-transform: capitalize"> 1238 $4,540,000 1239 </h5> 1240 </div> 1241 </a> 1242 1243 1244 <div class="property-list__hover"> 1245 <a href="/properties/850-wisconsin-street-san-francisco-ca-us-94107-426128995" class="hover-link"></a> 1246 <div class="property-list__buttons"> 1247 <a class="property-list__view" href="/properties/850-wisconsin-street-san-francisco-ca-us-94107-426128995" > 1248 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1249 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1250 </a> 1251 <div class="property-list__share"> 1252 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1253 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1254 <ul class="socials socials--block-dark"> 1255 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/850-wisconsin-street
1255-san-francisco-ca-us-94107-426128995" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1256 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/850-wisconsin-street-san-francisco-ca-us-94107-426128995&text=850 Wisconsin Street" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1257 <li><a href="/cdn-cgi/l/email-protection#87b8f4f2e5ede2e4f3babfb2b7a7d0eef4e4e8e9f4eee9a7d4f3f5e2e2f3a1e5e8e3febabfb2b7a7d0eef4e4e8e9f4eee9a7d4f3f5e2e2f3a7aaa7eff3f3f7f4bda8a8eceee9e8ece8f5e2e6ebe2f4f3e6f3e2a9e4e8eaa8f7f5e8f7e2f5f3eee2f4a8bfb2b7aaf0eef4e4e8e9f4eee9aaf4f3f5e2e2f3aaf4e6e9aae1f5e6e9e4eef4e4e8aae4e6aaf2f4aabeb3b6b7b0aab3b5b1b6b5bfbebeb2" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1258 </ul> 1259 </div> 1260 </div> 1261 </div> 1262 </li> 1263 <li class="property-list__item feature"> 1264 <a class="property-list__item-link" href="/properties/154-san-pablo-avenue-san-francisco-ca-us-94127-426106533" > 1265 <div class="property-list__img"> 1266 <img src="https://dlajgvw9htjpb.cloudfront.net/cms/f62f900d-59fc-4354-b573-bcc1e7da46a2/426106533/8128713842757077308.jpg" alt="" loading="lazy"> 1267 </div> 1268 <span class="property-list__label"> 1269 Sold 1270 </span> 1271 <div class="property-list__text"> 1272 <h4 class="serif">154 San Pablo Avenue</h4> 1273 <p> 1274 154 San Pablo Avenue, San Francisco, CA 94127 1275 </p> 1276 <p> 1277 4 BD | 1278 4 BA 1279 | 1280 2,734 Sq.Ft. 1281 </p> 1282 <h5 style="text-transform: capitalize"> 1283 $4,200,000 1284 </h5> 1285 </div> 1286 </a> 1287 1288 1289 <div class="property-list__hover"> 1290 <a href="/properties/154-san-pablo-avenue-san-francisco-ca-us-94127-426106533" class="hover-link"></a> 1291 <div class="property-list__buttons"> 1292 <a class="property-list__view" href="/properties/154-san-pablo-avenue-san-francisco-ca-us-94127-426106533" > 1293 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1294 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1295 </a> 1296 <div class="property-list__share"> 1297 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1298 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1299 <ul class="socials socials--block-dark"> 1300 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/154-san-pablo-avenue-san-francisco-ca-us-94127-426106533" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1301 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/154-san-pablo-avenue-san-francisco-ca-us-94127-426106533&text=154 San Pablo Avenue" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1302 <li><a href="/cdn-cgi/l/email-protection#caf5b9bfa8a0afa9bef7fbfffeea99aba4ea9aaba8a6a5ea8bbcafa4bfafeca8a5aeb3f7fbfffeea99aba4ea9aaba8a6a5ea8bbcafa4bfafeae7eaa2bebebab9f0e5e5a1a3a4a5a1a5b8afaba6afb9beabbeafe4a9a5a7e5bab8a5baafb8bea3afb9e5fbfffee7b9aba4e7baaba8a6a5e7abbcafa4bfafe7b9aba4e7acb8aba4a9a3b9a9a5e7a9abe7bfb9e7f3fefbf8fde7fef8fcfbfafcfff9f9" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1303 </ul> 1304 </div> 1305 </div> 1306 </div> 1307 </li> 1308 <li class="property-list__item feature"> 1309 <a class="property-list__item-link" href="/properties/32-eagle-rock-rd" > 1310 <div class="property-list__img"> 1311 <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/jxt6momgjdr4i9dsrcsi" 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/jxt6momgjdr4i9dsrcsi 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/jxt6momgjdr4i9dsrcsi 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/jxt6momgjdr4i9dsrcsi 1920w" alt="" loading="lazy"> 1312 </div>
1313 <span class="property-list__label"> 1314 Sold 1315 </span> 1316 <div class="property-list__text"> 1317 <h4 class="serif">32 Eagle Rock Rd</h4> 1318 <p> 1319 32 Eagle Rock Rd, Mill Valley, CA 94941 1320 </p> 1321 <p> 1322 5 BD | 1323 6 BA 1324 | 1325 4,434 Sq.Ft. 1326 </p> 1327 <h5 style="text-transform: capitalize"> 1328 $4,150,000 1329 </h5> 1330 </div> 1331 </a> 1332 1333 1334 <div class="property-list__hover"> 1335 <a href="/properties/32-eagle-rock-rd" class="hover-link"></a> 1336 <div class="property-list__buttons"> 1337 <a class="property-list__view" href="/properties/32-eagle-rock-rd" > 1338 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1339 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1340 </a> 1341 <div class="property-list__share"> 1342 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1343 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1344 <ul class="socials socials--block-dark"> 1345 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/32-eagle-rock-rd" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1346 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/32-eagle-rock-rd&text=32 Eagle Rock Rd" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1347 <li><a href="/cdn-cgi/l/email-protection#97a8e4e2f5fdf2f4e3aaa4a5b7d2f6f0fbf2b7c5f8f4fcb7c5f3b1f5f8f3eeaaa4a5b7d2f6f0fbf2b7c5f8f4fcb7c5f3b7bab7ffe3e3e7e4adb8b8fcfef9f8fcf8e5f2f6fbf2e4e3f6e3f2b9f4f8fab8e7e5f8e7f2e5e3fef2e4b8a4a5baf2f6f0fbf2bae5f8f4fcbae5f3" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1348 </ul> 1349 </div> 1350 </div> 1351 </div> 1352 </li> 1353 <li class="property-list__item feature"> 1354 <a class="property-list__item-link" href="/properties/255-crestlake-drive-san-francisco-ca-us-94132-425047340" > 1355 <div class="property-list__img"> 1356 <img src="https://dlajgvw9htjpb.cloudfront.net/cms/f62f900d-59fc-4354-b573-bcc1e7da46a2/425047340/-5186751848538244651.jpg" alt="" loading="lazy"> 1357 </div> 1358 <span class="property-list__label"> 1359 Sold 1360 </span> 1361 <div class="property-list__text"> 1362 <h4 class="serif">255 Crestlake Drive</h4> 1363 <p> 1364 255 Crestlake Drive, San Francisco, CA 94132 1365 </p> 1366 <p> 1367 5 BD | 1368 4 BA 1369 | 1370 2,837 Sq.Ft. 1371 </p> 1372 <h5 style="text-transform: capitalize"> 1373 $3,125,000 1374 </h5> 1375 </div> 1376 </a> 1377 1378 1379 <div class="property-list__hover"> 1380 <a href="/properties/255-crestlake-drive-san-francisco-ca-us-94132-425047340" class="hover-link"></a> 1381 <div class="property-list__buttons"> 1382 <a class="property-list__view" href="/properties/255-crestlake-drive-san-francisco-ca-us-94132-425047340" > 1383 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1384 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1385 </a> 1386 <div class="property-list__share"> 1387 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1388 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1389 <ul class="socials socials--block-dark"> 1390 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/255-crestlake-drive-san-francisco-ca-us-94132-425047340" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1391 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/255-crestlake-drive-san-francisco-ca-us-94132-425047340&text=255 Crestlake Drive" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1392 <li><a href="/cdn-cgi/l/email-protection#ebd4989e89818e889fd6d9dedecba8998e989f878a808ecbaf99829d8ecd89848f92d6d9dedecba8998e989f878a808ecbaf99829d8ecbc6cb839f9f9b98d1c4c4808285848084998e8a878e989f8a9f8ec5888486c49b99849b8e999f828e98c4d9dedec688998e989f878a808ec68f99829d8ec6988a85c68d998a858882988884c6888ac69e98c6d2dfdad8d9c6dfd9dedbdfdcd8dfdb" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1393 </ul> 1394 </div> 1395 </div> 1396 </div> 1397 </li> 1398 <li class="property-list__item feature"> 1399 <a class="property-list__item-link" href="/properties/926-laguna-ave" > 1400 <div class="property-list__img"> 1401 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/n0r1inpaydpgoacmglwj" 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/n0r1inpaydpgoacmglwj 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/n0r1inpaydpgoacmglwj 1280w" alt="" loading="lazy"> 1402 </div>
1403 <span class="property-list__label"> 1404 Sold 1405 </span> 1406 <div class="property-list__text"> 1407 <h4 class="serif">926 Laguna Ave</h4> 1408 <p> 1409 926 Laguna Ave, Burlingame, CA 94010 1410 </p> 1411 <p> 1412 3 BD | 1413 2 BA 1414 | 1415 1,764 Sq.Ft. 1416 </p> 1417 <h5 style="text-transform: capitalize"> 1418 $2,888,000 1419 </h5> 1420 </div> 1421 </a> 1422 1423 1424 <div class="property-list__hover"> 1425 <a href="/properties/926-laguna-ave" class="hover-link"></a> 1426 <div class="property-list__buttons"> 1427 <a class="property-list__view" href="/properties/926-laguna-ave" > 1428 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1429 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1430 </a> 1431 <div class="property-list__share"> 1432 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1433 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1434 <ul class="socials socials--block-dark"> 1435 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/926-laguna-ave" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1436 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/926-laguna-ave&text=926 Laguna Ave" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1437 <li><a href="/cdn-cgi/l/email-protection#b08fc3c5d2dad5d3c48d89828690fcd1d7c5ded190f1c6d596d2dfd4c98d89828690fcd1d7c5ded190f1c6d5909d90d8c4c4c0c38a9f9fdbd9dedfdbdfc2d5d1dcd5c3c4d1c4d59ed3dfdd9fc0c2dfc0d5c2c4d9d5c39f8982869ddcd1d7c5ded19dd1c6d5" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1438 </ul> 1439 </div> 1440 </div> 1441 </div> 1442 </li> 1443 <li class="property-list__item feature"> 1444 <a class="property-list__item-link" href="/properties/2007-new-brunswick-drive" > 1445 <div class="property-list__img"> 1446 <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/vl4k10a6nezzcave9a8a" 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/vl4k10a6nezzcave9a8a 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/vl4k10a6nezzcave9a8a 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/vl4k10a6nezzcave9a8a 1920w" alt="" loading="lazy"> 1447 </div> 1448 <span class="property-list__label"> 1449 Sold 1450 </span> 1451 <div class="property-list__text"> 1452 <h4 class="serif">2007 New Brunswick Drive</h4> 1453 <p> 1454 2007 New Brunswick Drive, San Mateo, CA 94402 1455 </p> 1456 <p> 1457 4 BD | 1458 2 BA 1459 | 1460 1,710 Sq.Ft. 1461 </p> 1462 <h5 style="text-transform: capitalize"> 1463 $2,700,000 1464 </h5> 1465 </div> 1466 </a> 1467 1468 1469 <div class="property-list__hover"> 1470 <a href="/properties/2007-new-brunswick-drive" class="hover-link"></a> 1471 <div class="property-list__buttons"> 1472 <a class="property-list__view" href="/properties/2007-new-brunswick-drive" > 1473 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1474 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1475 </a> 1476 <div class="property-list__share"> 1477 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1478 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1479 <ul class="socials socials--block-dark"> 1480 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/2007-new-brunswick-drive" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1481 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/2007-new-brunswick-drive&text=2007 New Brunswick Drive" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1482 <li><a href="/cdn-cgi/l/email-protection#ad92ded8cfc7c8ced9909f9d9d9a8de3c8da8defdfd8c3dedac4cec68de9dfc4dbc88bcfc2c9d4909f9d9d9a8de3c8da8defdfd8c3dedac4cec68de9dfc4dbc88d808dc5d9d9ddde978282c6c4c3c2c6c2dfc8ccc1c8ded9ccd9c883cec2c082dddfc2ddc8dfd9c4c8de829f9d9d9a80c3c8da80cfdfd8c3dedac4cec680c9dfc4dbc8" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1483 </ul> 1484 </div> 1485 </div> 1486 </div> 1487 </li> 1488 <li class="property-list__item feature"> 1489 <a class="property-list__item-link" href="/properties/2350-hale-dr" > 1490 <div class="property-list__img"> 1491 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/65f66d14-a9f1-49bc-9dc9-f7fa521834af" 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/65f66d14-a9f1-49bc-9dc9-f7fa521834af 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/65f66d14-a9f1-49bc-9dc9-f7fa521834af 1280w" alt="" loading="lazy"> 1492 </div>
1493 <span class="property-list__label"> 1494 Sold 1495 </span> 1496 <div class="property-list__text"> 1497 <h4 class="serif">2350 Hale Dr</h4> 1498 <p> 1499 2350 Hale Dr, Burlingame, CA 94010 1500 </p> 1501 <p> 1502 4 BD | 1503 2 BA 1504 | 1505 1,900 Sq.Ft. 1506 </p> 1507 <h5 style="text-transform: capitalize"> 1508 $2,700,000 1509 </h5> 1510 </div> 1511 </a> 1512 1513 1514 <div class="property-list__hover"> 1515 <a href="/properties/2350-hale-dr" class="hover-link"></a> 1516 <div class="property-list__buttons"> 1517 <a class="property-list__view" href="/properties/2350-hale-dr" > 1518 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1519 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1520 </a> 1521 <div class="property-list__share"> 1522 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1523 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1524 <ul class="socials socials--block-dark"> 1525 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/2350-hale-dr" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1526 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/2350-hale-dr&text=2350 Hale Dr" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1527 <li><a href="/cdn-cgi/l/email-protection#a09fd3d5c2cac5c3d49d9293959080e8c1ccc580e4d286c2cfc4d99d9293959080e8c1ccc580e4d2808d80c8d4d4d0d39a8f8fcbc9cecfcbcfd2c5c1ccc5d3d4c1d4c58ec3cfcd8fd0d2cfd0c5d2d4c9c5d38f929395908dc8c1ccc58dc4d2" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1528 </ul> 1529 </div> 1530 </div> 1531 </div> 1532 </li> 1533 <li class="property-list__item feature"> 1534 <a class="property-list__item-link" href="/properties/3525-cabrillo-street-san-francisco-ca-us-94121-425019545" > 1535 <div class="property-list__img"> 1536 <img src="https://dlajgvw9htjpb.cloudfront.net/cms/f62f900d-59fc-4354-b573-bcc1e7da46a2/425019545/2789896665901376066.jpg" alt="" loading="lazy"> 1537 </div> 1538 <span class="property-list__label"> 1539 Sold 1540 </span> 1541 <div class="property-list__text"> 1542 <h4 class="serif">3525 Cabrillo Street</h4> 1543 <p> 1544 3525 Cabrillo Street, San Francisco, CA 94121 1545 </p> 1546 <p> 1547 4 BD | 1548 4 BA 1549 | 1550 2,232 Sq.Ft. 1551 </p> 1552 <h5 style="text-transform: capitalize"> 1553 $2,343,500 1554 </h5> 1555 </div> 1556 </a> 1557 1558 1559 <div class="property-list__hover"> 1560 <a href="/properties/3525-cabrillo-street-san-francisco-ca-us-94121-425019545" class="hover-link"></a> 1561 <div class="property-list__buttons"> 1562 <a class="property-list__view" href="/properties/3525-cabrillo-street-san-francisco-ca-us-94121-425019545" > 1563 <button class="btn btn--primary-dark button-style-1">VIEW PROPERTY</button> 1564 <button class="btn btn--primary-light button-style-1">VIEW PROPERTY</button> 1565 </a> 1566 <div class="property-list__share"> 1567 <a class="btn btn--primary-dark button-style-1">SHARE PROPERTY</a> 1568 <a class="btn btn--primary-light button-style-1">SHARE PROPERTY</a> 1569 <ul class="socials socials--block-dark"> 1570 <li><a href="https://www.facebook.com/sharer/sharer.php?u=https://kinokorealestate.com/properties/3525-cabrillo-street
1570-san-francisco-ca-us-94121-425019545" target="_blank" class="socials__link"><i class="lp-i lp-i--facebook"></i></a></li> 1571 <li><a href="https://twitter.com/intent/tweet?url=https://kinokorealestate.com/properties/3525-cabrillo-street-san-francisco-ca-us-94121-425019545&text=3525 Cabrillo Street" target="_blank" class="socials__link"><i class="lp-i lp-i--twitter"></i></a></li> 1572 <li><a href="/cdn-cgi/l/email-protection#4f703c3a2d252a2c3b727c7a7d7a6f0c2e2d3d262323206f1c3b3d2a2a3b692d202b36727c7a7d7a6f0c2e2d3d262323206f1c3b3d2a2a3b6f626f273b3b3f3c7560602426212024203d2a2e232a3c3b2e3b2a612c2022603f3d203f2a3d3b262a3c607c7a7d7a622c2e2d3d26232320623c3b3d2a2a3b623c2e2162293d2e212c263c2c20622c2e623a3c62767b7e7d7e627b7d7a7f7e767a7b7a" class="socials__link" target="_blank"><i class="lp-i lp-i--envelope"></i></a></li> 1573 </ul> 1574 </div> 1575 </div> 1576 </div> 1577 </li> 1578 </ul> 1579 <div class="empty-result" style="display: none"> 1580 <h3>No Results Found. Please Try Another Search.</h3> 1581 </div> 1582 <div class="lp-pagination pagination-container pagination-style-2"></div> 1583 </div> 1584 </div> 1585</div> 1586 1587</section> 1588<section id="section-ba43671b-3100-4991-8247-7989a4b81495" class="solid-section is-font-color-dark is-background-color-light" data-el-id="ac02c806-12cd-4935-a9ef-ee0ce348a752"> 1589 <div class="video-gallery redesign"> 1590 <div class="lp-container"> 1591 1592 <div class="video-gallery__header"> 1593 <h2 class="video-gallery__heading lp-h2">List With Us</h2> 1594 <div class="video-gallery__lead pre-line lp-text--subtitle"><p data-start="1441" data-end="1480">Your home deserves more than a listing. 1595 1596</p><p data-start="1441" data-end="1480"> </p><p data-start="1482" data-end="1728">Kinoko creates cinematic listing films that highlight the craftsmanship, lifestyle, and story behind each property. From first impression to final offer, our marketing is designed to help your home stand out in San Franciscoâs competitive market. 1597 1598</p><p data-start="1482" data-end="1728"> </p><p data-start="1730" data-end="1785">Explore a selection of our recent listing videos below.</p></div> 1599 </div> 1600 1601 <div class="video-gallery__row"> 1602 <div class="carousel-container " data-columns=3> 1603 <div class="video-gallery__slide"> 1604 <a class="video-card" data-type="VIDEO" data-src="https://www.youtube.com/watch?v=pUjFTLamHeE&t=23s"> 1605 <div class="video-card__header"> 1606 <h6 class="video-card__title lp-h6">154 San Pablo Avenue</h6> 1607 </div> 1608 1609 <div class="video-card__preview"> 1610 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/feb96f6d-fb1e-45a2-8390-2d0bc9e97375" 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/feb96f6d-fb1e-45a2-8390-2d0bc9e97375 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/feb96f6d-fb1e-45a2-8390-2d0bc9e97375 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/feb96f6d-fb1e-45a2-8390-2d0bc9e97375 1280w" sizes="(max-width: 574px) 100vw, (max-width: 990px) 50vw, 33vw" alt="154 San Pablo Avenue" loading="lazy"> 1611 <span class="lp-play lp-play--light video-card__btn-play" aria-label="play video"></span> 1612 </div> 1613 </a> 1614 </div> 1615 <div class="video-gallery__slide"> 1616 <a class="video-card" data-type="VIDEO" data-src="https://www.youtube.com/watch?v=UJefF-gSTEw&t=2s"> 1617 <div class="video-card__header"> 1618 <h6 class="video-card__title lp-h6">850 Wisconsin Sreet</h6> 1619 </div> 1620 1621 <div class="video-card__preview"> 1622 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/b6660a73-16c6-461c-abb1-1b46375bceb2" 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/b6660a73-16c6-461c-abb1-1b46375bceb2 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/b6660a73-16c6-461c-abb1-1b46375bceb2 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/b6660a73-16c6-461c-abb1-1b46375bceb2 1280w" sizes="(max-width: 574px) 100vw, (max-width: 990px) 50vw, 33vw" alt="850 Wisconsin Sreet" loading="lazy">
1623 <span class="lp-play lp-play--light video-card__btn-play" aria-label="play video"></span> 1624 </div> 1625 </a> 1626 </div> 1627 <div class="video-gallery__slide"> 1628 <a class="video-card" data-type="VIDEO" data-src="https://www.youtube.com/watch?v=Ns3g_v49StQ"> 1629 <div class="video-card__header"> 1630 <h6 class="video-card__title lp-h6">255 Crestlake Drive</h6> 1631 </div> 1632 1633 <div class="video-card__preview"> 1634 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/a697bb8d-347f-4c87-9b94-1cb5ad293b2b" 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/a697bb8d-347f-4c87-9b94-1cb5ad293b2b 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/a697bb8d-347f-4c87-9b94-1cb5ad293b2b 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/a697bb8d-347f-4c87-9b94-1cb5ad293b2b 1280w" sizes="(max-width: 574px) 100vw, (max-width: 990px) 50vw, 33vw" alt="255 Crestlake Drive" loading="lazy"> 1635 <span class="lp-play lp-play--light video-card__btn-play" aria-label="play video"></span> 1636 </div> 1637 </a> 1638 </div> 1639 <div class="video-gallery__slide"> 1640 <a class="video-card" data-type="VIDEO" data-src="https://www.youtube.com/watch?v=v5ARdAbSuaQ"> 1641 <div class="video-card__header"> 1642 <h6 class="video-card__title lp-h6">3525 Cabrillo Street</h6> 1643 </div> 1644 1645 <div class="video-card__preview"> 1646 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/5c2529e8-383d-4a92-910d-9ea50638dda0" 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/5c2529e8-383d-4a92-910d-9ea50638dda0 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/5c2529e8-383d-4a92-910d-9ea50638dda0 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/5c2529e8-383d-4a92-910d-9ea50638dda0 1280w" sizes="(max-width: 574px) 100vw, (max-width: 990px) 50vw, 33vw" alt="3525 Cabrillo Street" loading="lazy"> 1647 <span class="lp-play lp-play--light video-card__btn-play" aria-label="play video"></span> 1648 </div> 1649 </a> 1650 </div> 1651 <div class="video-gallery__slide"> 1652 <a class="video-card" data-type="VIDEO" data-src="https://www.youtube.com/watch?v=ugyx1TfVFQ4"> 1653 <div class="video-card__header"> 1654 <h6 class="video-card__title lp-h6">1555 21st Avenue</h6> 1655 </div> 1656 1657 <div class="video-card__preview"> 1658 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/0806821e-9618-4c27-809c-fb4a5f2f94e6" 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/0806821e-9618-4c27-809c-fb4a5f2f94e6 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/0806821e-9618-4c27-809c-fb4a5f2f94e6 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/0806821e-9618-4c27-809c-fb4a5f2f94e6 1280w" sizes="(max-width: 574px) 100vw, (max-width: 990px) 50vw, 33vw" alt="1555 21st Avenue" loading="lazy"> 1659 <span class="lp-play lp-play--light video-card__btn-play" aria-label="play video"></span> 1660 </div> 1661 </a> 1662 </div> 1663 <div class="video-gallery__slide"> 1664 <a class="video-card" data-type="VIDEO" data-src="https://www.youtube.com/watch?v=O0ym9AyTjnY"> 1665 <div class="video-card__header"> 1666 <h6 class="video-card__title lp-h6">239 8th Street</h6> 1667 </div> 1668 1669 <div class="video-card__preview"> 1670 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/5ec37428-db7f-458e-8837-8e0b32b93a82" 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/5ec37428-db7f-458e-8837-8e0b32b93a82 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/5ec37428-db7f-458e-8837-8e0b32b93a82 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/5ec37428-db7f-458e-8837-8e0b32b93a82 1280w" sizes="(max-width: 574px) 100vw, (max-width: 990px) 50vw, 33vw" alt="239 8th Street" loading="lazy">
1671 <span class="lp-play lp-play--light video-card__btn-play" aria-label="play video"></span> 1672 </div> 1673 </a> 1674 </div> 1675 <div class="video-gallery__slide"> 1676 <a class="video-card" data-type="VIDEO" data-src="https://www.youtube.com/watch?v=MjfEWGF5aI0"> 1677 <div class="video-card__header"> 1678 <h6 class="video-card__title lp-h6">1515 15th St #404</h6> 1679 </div> 1680 1681 <div class="video-card__preview"> 1682 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/8a23c957-5361-4648-9553-e20740e877d7" 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/8a23c957-5361-4648-9553-e20740e877d7 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/8a23c957-5361-4648-9553-e20740e877d7 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/8a23c957-5361-4648-9553-e20740e877d7 1280w" sizes="(max-width: 574px) 100vw, (max-width: 990px) 50vw, 33vw" alt="1515 15th St #404" loading="lazy"> 1683 <span class="lp-play lp-play--light video-card__btn-play" aria-label="play video"></span> 1684 </div> 1685 </a> 1686 </div> 1687 <div class="video-gallery__slide"> 1688 <a class="video-card" data-type="VIDEO" data-src="https://youtu.be/1Rci5fWXGGo"> 1689 <div class="video-card__header"> 1690 <h6 class="video-card__title lp-h6">Arden 717</h6> 1691 </div> 1692 1693 <div class="video-card__preview"> 1694 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/06519229-83f8-482c-8254-f772b02e48bb" 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/06519229-83f8-482c-8254-f772b02e48bb 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/06519229-83f8-482c-8254-f772b02e48bb 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/06519229-83f8-482c-8254-f772b02e48bb 1280w" sizes="(max-width: 574px) 100vw, (max-width: 990px) 50vw, 33vw" alt="Arden 717" loading="lazy"> 1695 <span class="lp-play lp-play--light video-card__btn-play" aria-label="play video"></span> 1696 </div> 1697 </a> 1698 </div> 1699 <div class="video-gallery__slide"> 1700 <a class="video-card" data-type="VIDEO" data-src="https://youtu.be/nj7OTvpffK4"> 1701 <div class="video-card__header"> 1702 <h6 class="video-card__title lp-h6">Madrone 1401</h6> 1703 </div> 1704 1705 <div class="video-card__preview"> 1706 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/bd53afc1-a5a5-4202-8a7c-8b357c52a5aa" 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/bd53afc1-a5a5-4202-8a7c-8b357c52a5aa 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/bd53afc1-a5a5-4202-8a7c-8b357c52a5aa 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/bd53afc1-a5a5-4202-8a7c-8b357c52a5aa 1280w" sizes="(max-width: 574px) 100vw, (max-width: 990px) 50vw, 33vw" alt="Madrone 1401" loading="lazy"> 1707 <span class="lp-play lp-play--light video-card__btn-play" aria-label="play video"></span> 1708 </div> 1709 </a> 1710 </div> 1711 </div> 1712 </div> 1713 1714 <div class="lp-pagination pagination-container pagination-style-1"> 1715 <div class="paginationjs"> 1716 <div class="paginationjs-pages">
1717 <div class="carousel-controls"></div> 1718 </div> 1719 </div> 1720 </div> 1721 1722 </div> 1723 1724 <div class="video-gallery__modals"> 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 </div> 1735</div> 1736</section> 1737<section id="section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a" class="solid-section is-font-color-dark is-background-color-light" data-el-id="80774f76-9c97-4268-8614-e44ca8fbb255"> 1738 <div class="media-text lp-vertical-paddings right-to-left redesign" style="--bgColor: #ffffff"> 1739 1740 <img src="https://images.unsplash.com/photo-1616137356540-b13b2a04a507?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDE0fHxsdXh1cnklMjBsaXZpbmclMjByb29tJTIwc2FuJTIwZnJhbmNpc2NvJTIwY2FsaWZvcm5pYXxlbnwwfHx8fDE3ODc3Njc2MjB8MA&ixlib=rb-4.1.0&q=80&w=1280" srcset="https://images.unsplash.com/photo-1616137356540-b13b2a04a507?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDE0fHxsdXh1cnklMjBsaXZpbmclMjByb29tJTIwc2FuJTIwZnJhbmNpc2NvJTIwY2FsaWZvcm5pYXxlbnwwfHx8fDE3ODc3Njc2MjB8MA&ixlib=rb-4.1.0&q=80&w=200 320w, https://images.unsplash.com/photo-1616137356540-b13b2a04a507?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDE0fHxsdXh1cnklMjBsaXZpbmclMjByb29tJTIwc2FuJTIwZnJhbmNpc2NvJTIwY2FsaWZvcm5pYXxlbnwwfHx8fDE3ODc3Njc2MjB8MA&ixlib=rb-4.1.0&q=80&w=960 960w, https://images.unsplash.com/photo-1616137356540-b13b2a04a507?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDE0fHxsdXh1cnklMjBsaXZpbmclMjByb29tJTIwc2FuJTIwZnJhbmNpc2NvJTIwY2FsaWZvcm5pYXxlbnwwfHx8fDE3ODc3Njc2MjB8MA&ixlib=rb-4.1.0&q=80&w=1280 1280w, https://images.unsplash.com/photo-1616137356540-b13b2a04a507?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDE0fHxsdXh1cnklMjBsaXZpbmclMjByb29tJTIwc2FuJTIwZnJhbmNpc2NvJTIwY2FsaWZvcm5pYXxlbnwwfHx8fDE3ODc3Njc2MjB8MA&ixlib=rb-4.1.0&q=80&w=1920 1920w, https://images.unsplash.com/photo-1616137356540-b13b2a04a507?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDE0fHxsdXh1cnklMjBsaXZpbmclMjByb29tJTIwc2FuJTIwZnJhbmNpc2NvJTIwY2FsaWZvcm5pYXxlbnwwfHx8fDE3ODc3Njc2MjB8MA&ixlib=rb-4.1.0&q=80&w=2560 2560w, https://images.unsplash.com/photo-1616137356540-b13b2a04a507?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDE0fHxsdXh1cnklMjBsaXZpbmclMjByb29tJTIwc2FuJTIwZnJhbmNpc2NvJTIwY2FsaWZvcm5pYXxlbnwwfHx8fDE3ODc3Njc2MjB8MA&ixlib=rb-4.1.0&q=80&w=3456 3456w" sizes="(max-width: 768px) 70vw, 100vw" alt="Buying a Home in San Francisco" class="media-text__image" loading="lazy"> 1741 1742 <div class="lp-container media-text__container"> 1743 <div class="media-text__content" style="--bgColor: #ffffff"> 1744 1745 <div class="lp-title-group text-left"> 1746 <p class="lp-h4 lp-text--pretitle"></p> 1747 <h2 class="lp-h2">Buying a Home in San Francisco</h2> 1748 <p class="lp-h4 lp-text--subtitle">Find the right home with a strategy built around your goals.</p> 1749 <div class="description lp-pre-line"><p>Buying a home in San Francisco takes more than finding the right property. Our local real estate agents help buyers identify the right neighborhoods, evaluate opportunities, and negotiate with confidence. From the first search to the final offer, we bring market knowledge and a strategic approach to every purchase.</p></div> 1750 </div> 1751 1752 <div class="media-text__buttons-group"> 1753 1754 <a 1755 href="https://kinokorealestate.com/buyers" 1756 1757 class="lp-btn lp-btn--outline lp-btn--dark lp-btn--mob-full-width button-style-1" 1758 1759 1760 1761 1762 1763 > 1764 LEARN MORE 1765 </a> 1766 1767 1768 </div> 1769 1770 </div> 1771 </div> 1772</div> 1773</section> 1774<section id="section-97efe40a-6bdb-4a9e-87bc-c47975e11673" class="solid-section is-font-color-dark is-background-color-light" data-el-id="82839aae-f69e-4e11-91f3-ec3542792936"> 1775 <div class="f-video-carousel redesign"> 1776 <div class="container lp-container"> 1777 <div class="lp-title-group"> 1778 <h2 class="f-video-carousel__title lp-h2">Sell Your San Francisco Home for Top Dollar</h2> 1779 <div class="f-video-carousel__description pre-line lp-text--subtitle lp-description"><p>We believe in aligning our interests with yours. We believe in creating wealth for you and everyone around you. We know selling a home can be extremely stressful and we take pride in our
1779collaborative, technological approach to make the process as seamless as possible.<br><br><br></p><div><p><a class="lp-btn lp-btn--outline lp-btn--dark media-card__button button-style-1" href="../sellers">Learn More</a><br><br></p></div></div> 1780 </div> 1781 1782 <div class="f-video-carousel__wrap v-carousel"> 1783 1784 <div class="v-carousel__preview"> 1785 <div class="v-carousel__preview-item v-carousel__preview-item-0" > 1786 <button class="videoPlayButton" data-type="VIDEO" data-src="https://www.youtube.com/embed/3weFIS72qsI?autoplay=1"><span class="v-carousel__button"></span></button> 1787 <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/l65q5utg9qmauqpmk8un" 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/l65q5utg9qmauqpmk8un 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/l65q5utg9qmauqpmk8un 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/l65q5utg9qmauqpmk8un 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/l65q5utg9qmauqpmk8un 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/l65q5utg9qmauqpmk8un 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/l65q5utg9qmauqpmk8un 3000w" sizes="(max-width: 768px) 100vw, 50vw" alt="" class="v-carousel__cover videoCover" loading="lazy"> 1788 </div> 1789 </div> 1790 1791 <ul class="v-carousel__list"> 1792 </ul> 1793 </div> 1794 </div> 1795 </div> 1796</section> 1797<section class="image-section is-font-color-light is-background-color-light" id="section-c00cff8c-7bf7-439f-a337-b3977159e28e" data-el-id="e6b1ae9f-5b8d-4ac5-a23f-bfb55ef91c3c">
vendor: 113 bytes, lines 1797-1798
1797 1798 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1798<script> 1799 (function(){ 1800 const sectionId = 'section-c00cff8c-7bf7-439f-a337-b3977159e28e' 1801 const section = document.querySelector(`#${sectionId}`); 1802 var sectionBg = window.getComputedStyle(section, null).getPropertyValue('background-image'); 1803 1804 if('false' === 'true') { 1805 section.classList.add('parallax-enabled'); 1806 section.style.setProperty('--sectionBackground', sectionBg); 1807 section.style.setProperty('background', 'none'); 1808 } 1809 })() 1810</script>
1810 1811<div class="redesign work-with-us "> 1812 <div class="container"> 1813 <h2 class="serif">Letâs Talk</h2> 1814 <div class="description">Youâve got questions and we canât wait to answer them.</div> 1815 <div class="btn-container"> 1816 <a 1817 role="button" 1818 data-type="CONTACT_US" 1819 class="btn btn--primary-light button-style-3" 1820 1821 1822 1823 1824 1825 > 1826 Contact Us 1827 </a> 1828 </div> 1829 </div> 1830</div> 1831</section> 1832<section id="section-1f1e0e09-5bb1-47a1-9029-aeb58682521d" class="solid-section is-font-color-dark is-background-color-light" data-el-id="5db65d6a-01e9-4ee3-babf-2748e074a284"> 1833
1833<script type="text/x-handlebars-template" class="jsIGItem"> 1834 <a href="{{permalink}}" target="_blank" class="ig-feed-item insta-type-{{mediaType}}"> 1835 <div class="ig-feed-item__img" style="background-image: url('{{#ifEquals mediaType 'VIDEO'}}{{thumbnailUrl}}{{^}}{{mediaUrl}}{{/ifEquals}}');"></div> 1836 <div class="ig-feed-item__info"><div class="ig-feed-item__caption">{{caption}}</div></div> 1837 {{#ifEquals mediaType 'VIDEO'}}<div class="video-icon"></div>{{/ifEquals}} 1838 </a> 1839</script>
1839 1840<div class="ig-feed redesign"> 1841 <div class="ig-feed-top lp-container"> 1842 <div class="top-wrapper"> 1843 <div class="top-left"> 1844 <h3 class="lp-h3 title">Follow Us on Instagram</h3> 1845 <a href="#" target="_blank" class="instagram-link jsIGLink"><h4 class="lp-h4 instagram-name jsIGName"></h4></a> 1846 </div> 1847 <div class="top-right"> 1848 <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> 1849 <a class="nav-button top-nav-prev hidden-control button-style-1"> 1850 <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> 1851 </a> 1852 <a class="nav-button top-nav-next hidden-control button-style-1"> 1853 <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> 1854 </a> 1855 </div> 1856 </div> 1857 </div> 1858 <div class="lp-container ig-feed-container "> 1859 <div class="ig-feed-feed" data-limit="33"> 1860 </div> 1861 </div> 1862 <div class="bottom-controls"> 1863 <a class="bottom-nav-button bottom-nav-prev button-style-1"> 1864 <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> 1865 </a> 1866 <a class="bottom-nav-button bottom-nav-next button-style-1"> 1867 <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> 1868 </a> 1869 </div> 1870</div> 1871 1872</section> 1873<section id="section-8e3e63d5-35c9-455d-980c-9828b97d610d" class="solid-section is-font-color-dark is-background-color-light" data-el-id="212dc92d-e64b-4b5f-a7ad-eaa77f5a1eab"> 1874 <div class="container"> 1875 <div></div><div id="i4v6"></div><div id="i033"></div><style>* { box-sizing: border-box; } body {margin: 0;}*{box-sizing:border-box;}body{margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;}ul{list-style:inherit;}</style> 1876</div> 1877 1878</section> 1879 1880 <div id="modals" class="modals"></div> 1881 <footer id="global-footer" class="is-font-color-dark is-background-color-light" data-el-id="874a9373-949d-4275-b72f-04c2a6ec373b"> 1882 <div class="footer redesign no_newsletter "> 1883 <div class="container"> 1884 <div class="info-wrap"> 1885 <div class="info-wrap-contact agent_box"> 1886 <div class="info-wrap-contact_zone type_user"> 1887 <h4 class="serif">Get in Touch</h4> 1888 <div class="info-wrap-contact_cell"> 1889 <i> 1890 <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 1891 <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" /> 1892 </svg> 1893 </i> 1894 <p class="contact_title">Email</p> 1895 <a href="/cdn-cgi/l/email-protection#bdd4d3dbd2fdd5d2c8ced8d2dbd6d4d3d2d6d293ded2d0" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1"><span class="__cf_email__" data-cfemail="d6bfb8b0b996beb9a3a5b3b9b0bdbfb8b9bdb9f8b5b9bb">[email protected]</span></a> 1896 </div> 1897 <div class="info-wrap-contact_cell"> 1898 <i>
1898<svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 1899 <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" /> 1900 </svg></i> 1901 <p class="contact_title">Phone Number</p> 1902 <a href="tel:6502914409" class="lp-link info-wrap-contact_link grey-text hyperlink-style-1">(650) 291-4409</a> 1903 </div> 1904 </div> 1905 <div class="info-wrap-contact_zone"> 1906 <div class="info-wrap-contact_cell"> 1907 <i> 1908 <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 1909 <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" /> 1910 <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" /> 1911 <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" /> 1912 </svg> 1913 </i> 1914 <p class="info-wrap-contact_title">Address</p> 1915 <p class="info-wrap-contact_link grey-text"><p>592 3rd Street<br />San Francisco CA 94107<br /><br />DRE# 02014153</p></p> 1916 </div> 1917 </div> 1918 </div> 1919 </div> 1920 <div class="text_footer first_text_footer"> 1921 <div class="luxury-text"> 1922 <div id="ipql"> 1923<p style="font-size: 14px;">Kevin Gueco | CA DRE# 01461677<br><br></p> 1924<p id="iaa1">All information is deemed reliable but not guaranteed and should be independently reviewed and verified.<br><br>All data, including all measurements and calculations of area, is obtained from various sources and has not been, and will not be, verified by broker or MLS. All information should be independently reviewed and verified for accuracy. Properties may or may not be listed by the office/agent presenting the information.<br><br>Listing Information © 2021 San Francisco Association of REALTORS®. All Rights Reserved.<br><img id="iivu" src="https://media-production.lp-cdn.com/media/1222c7a3-60c9-401b-b2c7-2360b9a5c814" width="100px;" height="auto"></p> 1925</div> 1926<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}#iaa1{font-size:12px;}#iivu{margin-top:20px;}</style> 1927 </div> 1928 </div> 1929 <div class="text_footer second_text_footer"> 1930 <div class="text_content_wrap"> 1931 <div> 1932 All information is deemed reliable but not guaranteed and should be independently reviewed and verified. 1933 </div> 1934 <div> 1935 <div> </div> 1936<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style> 1937 </div> 1938 </div> 1939 </div> 1940 <div class="info-privacy"> 1941 <div class="form-row info-privacy__row"> 1942 1943 <div class="form-col form-col--powered powered-box"> 1944 <div class="img-wrap"> 1945 <img src="https://media-production.lp-cdn.com/media/bae89f31-2f1f-429c-8d7d-bb929eaa17b9" alt=""> 1946 </div> 1947 <div class="powered_zone"> 1948 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> 1949 </div> 1950 </div> 1951 1952 <div class="form-col form-col--copyright"> 1953 <div class="copy_zone">
1954 <span class="copy_words">Copyright ©</span> <span class="auto-year-update">2026</span> 1955 | <a href="/terms-and-conditions" class="lp-link grey-text hyperlink-style-1">Privacy Policy</a> 1956 1957 </div> 1958 </div> 1959 1960 <div class="form-col form-col--socials"> 1961 <ul class="lp-socials social_icons-style-1 socials socials--grey socials_zone"> 1962 1963 <li> 1964 <a 1965 href="https://www.facebook.com/houseofkinoko/" 1966 class="lp-socials__link socials__item socials__link wow fadeInUp" 1967 data-wow-delay="0s" 1968 target="_blank" 1969 aria-label="FACEBOOK" 1970 > 1971 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 1972 </a> 1973 </li> 1974 <li> 1975 <a 1976 href="https://www.instagram.com/house.of.kinoko/" 1977 class="lp-socials__link socials__item socials__link wow fadeInUp" 1978 data-wow-delay="0.1s" 1979 target="_blank" 1980 aria-label="INSTAGRAM" 1981 > 1982 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 1983 </a> 1984 </li> 1985 <li> 1986 <a 1987 href="https://www.linkedin.com/company/houseofkinoko/" 1988 class="lp-socials__link socials__item socials__link wow fadeInUp" 1989 data-wow-delay="0.2s" 1990 target="_blank" 1991 aria-label="LINKEDIN" 1992 > 1993 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 1994 </a> 1995 </li> 1996 <li> 1997 <a 1998 href="https://www.youtube.com/channel/UCsP_bGxHYo_Gm_U9uWDc3kQ" 1999 class="lp-socials__link socials__item socials__link wow fadeInUp" 2000 data-wow-delay="0.3s" 2001 target="_blank" 2002 aria-label="YOUTUBE" 2003 > 2004 <span class="lp-i lp-i--youtube" aria-hidden="true"></span> 2005 </a> 2006 </li> 2007 </ul> </div> 2008 </div> 2009 </div> 2010 </div> 2011</div> 2012 2013 </footer> 2014 2015 <div id="modal-global-contact-us" class="modal " 2016 data-el-id="" 2017 style="background-color: ;" 2018 > 2019 <div class="modal-content"> 2020 <div class="contact-form redesign " style="background-image: url('')"> 2021 <div class="container"> 2022 <div class="section-details" style="--colorTxt: #ffffff"> 2023 <h2>Contact Details</h2> 2024 2025 <div class="info-zone"> 2026 2027 <div class="info-zone_contact type_user"> 2028 <h4 class="serif">Kinoko</h4> 2029 <div class="info-zone_contact_cell"> 2030 <i> 2031 <svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg"> 2032 <path fill-rule="evenodd" clip-rule="evenodd" d="M10.7964 8.1207H19.2036V8.7279C19.2036 10.8195 20.9082 12.5259 23.001 12.5259H24.741L25.2852 20.7051C25.3776 22.1235 24.2868 23.2719 22.8822 23.2719H7.0032C5.5944 23.2719 4.5084 22.1085 4.6002 20.7039C4.782 17.9895 4.9152 15.2313 5.154 12.5265H6.9996C9.0918 12.5265 10.797 10.8207 10.797 8.7285V8.1207H10.7964ZM11.46 16.5807C11.46 14.6565 13.0188 13.0977 14.943 13.0977C16.8666 13.0977 18.4254 14.6571 18.4254 16.5807C18.4254 18.5055 16.8678 20.0631 14.943 20.0631C13.02 20.0637 11.46 18.5043 11.46 16.5807ZM14.943 12.0381C12.4344 12.0381 10.4004 14.0721 10.4004 16.5807C10.4004 19.0887 12.435 21.1233 14.943 21.1233C17.4486 21.1233 19.485 19.0869 19.485 16.5807C19.485 14.0727 17.451 12.0381 14.943 12.0381ZM9.0846 4.8363C8.22 4.8363 7.512 5.5443 7.512 6.4089V8.7285C7.512 9.0093 7.2804 9.2415 6.999 9.2415H1.5726C1.2906 9.2415 1.0596 9.0111 1.0596 8.7285V6.9285C1.0596 6.4797 1.1628 6.0945 1.3902 5.7069C1.896 4.8465 2.7294 4.1013 3.795 3.4749C9.279 0.2517 20.7192 0.2523 26.2044 3.4749C27.2706 4.1013 28.104 4.8465 28.6098 5.7069C28.8354 6.0921 28.9398 6.48
203215 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"/> 2033 </svg> 2034 </i> 2035 <p class="contact_title">Phone</p> 2036 <a href="tel:(650) 291-4409" class="lp-link info-zone_contact_link link hyperlink-style-2">(650) 291-4409</a> 2037 </div> 2038 <div class="info-zone_contact_cell"> 2039 <i> 2040 <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg"> 2041 <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"/> 2042 </svg> 2043 </i> 2044 <p class="contact_title">Email</p> 2045 <a href="/cdn-cgi/l/email-protection#84efe1f2edeac4ecebf1f7e1ebe2efedeaebefebaae7ebe9" class="lp-link info-zone_contact_link link hyperlink-style-2"><span class="__cf_email__" data-cfemail="157e70637c7b557d7a6066707a737e7c7b7a7e7a3b767a78">[email protected]</span></a> 2046 </div> 2047 </div> 2048 <div class="info-zone_contact"> 2049 <div class="info-zone_contact_cell"> 2050 <i> 2051 <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg"> 2052 <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"/> 2053 <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"/> 2054 <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"/> 2055 </svg> 2056 </i> 2057 <p class="info-wrap-contact_title">Address</p> 2058 <p class="info-zone_contact_link pre-line">592 3rd Street 2059 San Francisco CA 94107 2060 2061 Kevin Gueco | CA DRE# 01461677</p> 2062 </div> 2063 </div> 2064 <div class="info-zone_contact"> 2065 <div class="info-zone_contact_cell"> 2066 <p class="pre-line"><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style><div></div></p> 2067 </div> 2068 </div> 2069 <ul class="lp-socials social_icons-style-2 socials socials--grey socials_zone footer__c
2069ontact-column"> 2070 2071 <li> 2072 <a 2073 href="https://www.facebook.com/houseofkinoko/" 2074 class="lp-socials__link socials__item wow fadeInUp socials__link" 2075 data-wow-delay="0s" 2076 target="_blank" 2077 aria-label="FACEBOOK" 2078 > 2079 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 2080 </a> 2081 </li> 2082 <li> 2083 <a 2084 href="https://www.instagram.com/house.of.kinoko/" 2085 class="lp-socials__link socials__item wow fadeInUp socials__link" 2086 data-wow-delay="0.1s" 2087 target="_blank" 2088 aria-label="INSTAGRAM" 2089 > 2090 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 2091 </a> 2092 </li> 2093 <li> 2094 <a 2095 href="https://www.linkedin.com/company/houseofkinoko/" 2096 class="lp-socials__link socials__item wow fadeInUp socials__link" 2097 data-wow-delay="0.2s" 2098 target="_blank" 2099 aria-label="LINKEDIN" 2100 > 2101 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 2102 </a> 2103 </li> 2104 <li> 2105 <a 2106 href="https://www.youtube.com/channel/UCsP_bGxHYo_Gm_U9uWDc3kQ" 2107 class="lp-socials__link socials__item wow fadeInUp socials__link" 2108 data-wow-delay="0.3s" 2109 target="_blank" 2110 aria-label="YOUTUBE" 2111 > 2112 <span class="lp-i lp-i--youtube" aria-hidden="true"></span> 2113 </a> 2114 </li> 2115 </ul> </div> 2116 </div> 2117 <div class="section-message"> 2118 <form data-type="contact-form"> 2119 <h2>Submit a Message</h2> 2120 <div class="h-pot"> 2121 <label for="-middleName">Middle Name</label> 2122 <input id="-middleName" name="middleName" value="" autocomplete="off" tabindex="-1"> 2123 </div> 2124 2125 2126 <div class="lp-input-group"> 2127 <label for="prod-name" class="lp-label">Name</label> 2128 <input id="prod-name" name="name" value="" required="" class="lp-input lp-input--light"> 2129 </div> 2130 <div class="lp-input-group"> 2131 <label for="prod-email" class="lp-label">Email</label> 2132 <input id="prod-email" type="email" name="email" value="" required="" class="lp-input lp-input--light"> 2133 </div> 2134 <div class="lp-input-group"> 2135 <label for="prod-phone" class="lp-label">Phone</label> 2136 <input id="prod-phone" type="tel" name="phoneNumber" value="" required="" class="lp-input lp-input--light"> 2137 </div> 2138 <div class="lp-input-group m16"> 2139 <label for="prod-message" class="lp-label">Message</label> 2140 <textarea id="prod-message" name="message" value="" required="" class="lp-in
2140put"></textarea> 2141 </div> 2142 2143 <div class="lp-disclaimer"> <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label> 2144 <label class='lp-tcr-content'> 2145 <span class='lp-tcr-checkbox'> 2146 <input 2147 type='checkbox' 2148 id='-termsAccepted' 2149 name='termsAccepted' 2150 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 2151 oninput="this.setCustomValidity('')" 2152 required 2153 /></span> 2154 <span class='lp-tcr-message'> 2155 2156 I agree to be contacted by 2157 Kinoko Real Estate 2158 via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 2159 You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. 2160 <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. 2161 </span> 2162 </label> 2163 2164 </div> 2165 2166 <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" /> 2167 2168 2169 <button type="submit" class="submitButton lp-btn button-style-2"> 2170 <span class="label-initial">Submit</span> 2171 <span class="label-loading">Submitting</span> 2172 <span class="label-success">Submitted</span> 2173 <span class="submit-icon lp-i lp-i--circle-notch lp-i--spin"></span> 2174 </button> 2175 <p class="success-message success hide"> 2176 Message sent successfully! 2177 </p> 2178 </form> 2179 2180 2181 </div> 2182 </div> 2183 </div> 2184 2185 </div> 2186 <button class="close lp-close" type="button" aria-label="close modal"> 2187 <span class="lp-close-icon" aria-hidden="true"></span> 2188 </button> 2189 </div> 2190 <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;"> 2191 <style> 2192 #qualifying-questions-modal .custom-select-toggle { 2193 border: 1px solid #848484; 2194 border-radius: 8px; 2195 padding: 12px 16px; 2196 } 2197 2198 #qualifying-questions-modal .custom-select-toggle.is-placeholder { 2199 color: #848484; 2200 } 2201 2202 #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder { 2203 color: #848484; 2204 opacity: 1; 2205 } 2206 2207 #qualifying-questions-modal .disclaimer-more { 2208 display: none; 2209 } 2210 2211 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more { 2212 display: inline; 2213 } 2214 2215 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis { 2216 display: none; 2217 } 2218 </style>
vendor: 119 bytes, lines 2218-2219
2218 2219 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
2219<script> 2220 function toggleDisclaimerQualifyingQuestionsModal() { 2221 const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text'); 2222 const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer'); 2223 2224 if (disclaimerText.classList.contains('collapsed')) { 2225 disclaimerText.classList.remove('collapsed'); 2226 toggleButton.textContent = 'Read less'; 2227 toggleButton.setAttribute('aria-expanded', 'true'); 2228 } else { 2229 disclaimerText.classList.add('collapsed'); 2230 toggleButton.textContent = 'Read more'; 2231 toggleButton.setAttribute('aria-expanded', 'false'); 2232 } 2233 } 2234 </script>
2234 2235 <div style="max-width: 400px; width: 95%; margin: 0 auto;"> 2236 <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;"> 2237 <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;"> 2238 <span aria-hidden="true">×</span> 2239 </button> 2240 <div style="padding: 40px 30px 32px;"> 2241 <div style="text-align: left; margin-bottom: 32px;"> 2242 <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;"> 2243 Thanks, please provide more information to help serve you 2244 </h2> 2245 </div> 2246 <form id="qualifying-questions-modal-form" data-type="contact-form"> 2247 <input type="hidden" name="source" value="PROFILE_UPDATE" /> 2248 <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" /> 2249 <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" /> 2250 <label for="qualifying-questions-modal-email" style="display:none;"> 2251 Email 2252 </label> 2253 <label for="qualifying-questions-modal-triggerSource" style="display:none;"> 2254 Trigger Source 2255 </label> 2256 2257 <div style="margin-bottom: 20px;"> 2258 <label for="qualifying-questions-modal-phoneNumber" style="display:none;"> 2259 Phone Number 2260 </label> 2261 <input 2262 type="tel" 2263 id="qualifying-questions-modal-phoneNumber" 2264 name="phoneNumber" 2265 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;" 2266 pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$" 2267 required 2268 placeholder="Phone" 2269 aria-label="Phone Number" 2270 inputmode="tel" 2271 autocomplete="tel" 2272 onfocus="this.style.borderColor='black';" 2273 onblur="this.style.borderColor='#848484';" 2274 /> 2275 </div> 2276 2277 <div style="margin-bottom: 20px;"> 2278 <label for="qualifying-questions-modal-interest" style="display:none;"> 2279 Interest 2280 </label> 2281 <select 2282 id="qualifying-questions-modal-interest" 2283 name="interest" 2284 required 2285 data-label="Interest" 2286 aria-label="Interest" 2287 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;" 2288 onfocus="this.style.borderColor='black'; this.style.color='black';" 2289 onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';" 2290 > 2291 <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option> 2292 <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option> 2293 <option value="Selling" style="background: #fff; color: black;">Selling</option> 2294 <option value="Buying" style="background: #fff; color: black;">Buying</option> 2295 <option value="Renting" style="background: #fff; color: black;">Renting</option> 2296 <option value="Other" style="background: #fff; color: black;">Other</option> 2297 </select> 2298 </div> 2299 2300 <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;"> 2301 <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label> 2302 <label class='lp-tcr-content'>
2303 <span class='lp-tcr-checkbox'> 2304 <input 2305 type='checkbox' 2306 id='qualifying-questions-modal-qualifying-questions-termsAccepted' 2307 name='termsAccepted' 2308 aria-describedby='qualifying-questions-modal-disclaimer-text' 2309 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 2310 oninput="this.setCustomValidity('')" 2311 required 2312 /></span> 2313 <span class='lp-tcr-message'> 2314 <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;"> 2315 2316 I agree to be contacted by 2317 <strong>Kinoko Real Estate</strong> 2318 via call, email, and text <span class="disclaimer-more">for real estate services. 2319 To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 2320 You can also click the unsubscribe link in the emails. 2321 Message and data rates may apply. Message frequency may vary.</span> 2322 <span class="disclaimer-ellipsis">...</span> 2323 <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>. 2324 </div> 2325 <button 2326 id="qualifying-questions-modal-toggle-disclaimer" 2327 type="button" 2328 style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;" 2329 aria-expanded="false" 2330 onclick="toggleDisclaimerQualifyingQuestionsModal()" 2331 > 2332 Read more 2333 </button> 2334 </span> 2335 </label> 2336 </div> 2337 2338 <div> 2339 <button 2340 type="submit" 2341 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;" 2342 onmouseover="this.style.background='transparent'; this.style.color='black';" 2343 onmouseout="this.style.background='black'; this.style.color='white';" 2344 > 2345 Submit 2346 </button> 2347 </div> 2348 </form> 2349 </div> 2350 </div> 2351 </div> 2352 </div> 2353 2354
2354<script> 2355 (function() { 2356 var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy")); 2357 2358 if ("IntersectionObserver" in window && lazyVideos.length > 0) { 2359 var lazyVideoObserver = new IntersectionObserver(function(entries, observer) { 2360 entries.forEach(function(video) { 2361 if (video.isIntersecting) { 2362 for (var source in video.target.children) { 2363 var videoSource = video.target.children[source]; 2364 if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") { 2365 videoSource.src = videoSource.dataset.src; 2366 } 2367 } 2368 2369 video.target.load(); 2370 video.target.classList.remove("lazy"); 2371 lazyVideoObserver.unobserve(video.target); 2372 } 2373 }); 2374 }); 2375 2376 lazyVideos.forEach(function(lazyVideo) { 2377 lazyVideoObserver.observe(lazyVideo); 2378 }); 2379 } 2380 })(); 2381 </script>
2381 2382 2383 <!-- Global site tag (gtag.js) - Google Analytics --> 2384
2384<script defer src="https://www.googletagmanager.com/gtag/js"></script>
2384 2385 2386 <!-- Google Tag Manager --> 2387
2387<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 2388 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 2389 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src= 2390 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 2391 })(window,document,'script','dataLayer','GTM-T9B3XMG5');</script>
2391 2392 <!-- End Google Tag Manager --> 2393 <!-- Google Tag Manager --> 2394
2394<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 2395 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 2396 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src= 2397 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 2398 })(window,document,'script','dataLayer','GTM-KS6CK7T');</script>
2398 2399 <!-- End Google Tag Manager --> 2400 <!-- Google Tag Manager --> 2401
2401<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 2402 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 2403 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src= 2404 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 2405 })(window,document,'script','dataLayer','GTM-W33LVZF2');</script>
2405 2406 <!-- End Google Tag Manager --> 2407 <!-- Google Tag Manager --> 2408
2408<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 2409 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 2410 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src= 2411 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 2412 })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
2412 2413 <!-- End Google Tag Manager --> 2414 2415 2416 <!-- LP Tracker (divolte.js) - LP Divolte --> 2417
2417<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
2417 2418 <!-- LP Tracker (eventBus) - LP EventBus --> 2419
2419<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
2419 2420 2421
2421<script> 2422 window.dataLayer = window.dataLayer || []; 2423 document.sendGoogleTagManagerEvent = function() { 2424 /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */ 2425 if (window.navigator.globalPrivacyControl) { 2426 return; 2427 } 2428 2429 dataLayer.push(arguments); 2430 } 2431 2432 document.sendGoogleTagManagerEvent('js', new Date()); 2433 document.sendGoogleTagManagerEvent('config', 'UA-197320107-41', { page: location.pathname, location: location.href }); 2434 document.sendGoogleTagManagerEvent('config', 'G-L12LHHF80G', { page: location.pathname, location: location.href }); 2435 document.sendGoogleTagManagerEvent('config', 'UA-243524849-1', { page: location.pathname, location: location.href }); 2436 document.sendGoogleTagManagerEvent('config', 'G-LJ6SFSS4WN', { page: location.pathname, location: location.href }); 2437 document.sendGoogleAnalyticsEvent = function(googleEvent) { 2438 document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, { 2439 event_category: googleEvent.eventCategory, 2440 event_label: googleEvent.eventLabel, 2441 value: googleEvent.eventValue, 2442 page: googleEvent.page, 2443 location: googleEvent.location 2444 }) 2445 }; 2446 2447 document.addEventListener("DOMContentLoaded", function() { 2448 (function() { 2449 //If the page has an element with ID of auto-year-update the element will be populated with the current year. 2450 var date = new Date(); 2451 var elements = document.getElementsByClassName('auto-year-update'); 2452 var i; 2453 for (i = 0; i < elements.length; i++) { 2454 elements[i].innerText = date.getFullYear(); 2455 } 2456 })(); 2457 if (window.divolteLp) { 2458 window.divolteLp('sendLpPageView', {}); 2459 } 2460 if (window.eventBusLp) { 2461 window.eventBusLp('sendLpPageView', {}); 2462 } 2463 }); 2464 </script>
2464 2465 2466 <!-- Facebook Pixel Code --> 2467
2467<script type="text/plain" data-consent-category="advertising">
vendor: 575 bytes, lines 2467-2476
2467 2468 !function(f,b,e,v,n,t,s) 2469 {if(f.fbq)return;n=f.fbq=function(){n.callMethod? 2470 n.callMethod.apply(n,arguments):n.queue.push(arguments)}; 2471 if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; 2472 n.queue=[];t=b.createElement(e);t.async=!0; 2473 t.src=v;s=b.getElementsByTagName(e)[0]; 2474 s.parentNode.insertBefore(t,s)}(window, document,'script', 2475 'https://connect.facebook.net/en_US/fbevents.js'); 2476 fbq('init', '
2476664223170851969
vendor: 58 bytes, lines 2476-2478
2476'); 2477 fbq('track', 'PageView'); 2478
2478</script>
2478 2479 <noscript><img height="1" width="1" style="display:none" 2480 src="https://www.facebook.com/tr?id=664223170851969&ev=PageView&noscript=1" 2481 /></noscript> 2482 <!-- End Facebook Pixel Code --> 2483 2484
2484<script> 2485 // Function to dynamically load a script 2486 function loadScript(url, callback) { 2487 var script = document.createElement('script'); 2488 script.type = 'text/javascript'; 2489 script.src = url; 2490 script.defer = true; 2491 script.async = true; 2492 script.onload = callback; 2493 document.head.appendChild(script); 2494 } 2495 2496 // Function to dynamically load CSS file 2497 function loadCSS(url) { 2498 var link = document.createElement("link"); 2499 link.rel = "stylesheet"; 2500 link.href = url; 2501 document.head.appendChild(link); 2502 } 2503 2504 // Global methods / variables that can be accessed by element js 2505 window.luxuryPresence = { 2506 libs: { 2507 loadJs: loadScript, 2508 loadCss: loadCSS, 2509 jsLibsMap: { 2510 paroller: { 2511 jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js', 2512 isLoaded: false, 2513 }, 2514 ionRangeSlider: { 2515 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js', 2516 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css', 2517 isLoaded: false, 2518 requires: ['jquery'], 2519 }, 2520 splide: { 2521 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js', 2522 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css', 2523 isLoaded: false, 2524 }, 2525 wow: { 2526 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js', 2527 isLoaded: false, 2528 }, 2529 jquery: { 2530 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js', 2531 isLoaded: false, 2532 }, 2533 slick: { 2534 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js', 2535 isLoaded: false, 2536 requires: ['jquery'], 2537 }, 2538 libphonenumber: { 2539 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js', 2540 isLoaded: false, 2541 }, 2542 }, 2543 }, 2544 }; 2545 </script>
2545 2546
2546<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>
2546 2547
2547<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
2547 2548
2548<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
2548 2549
2549<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
2549 2550
2550<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>
2550 2551
2551<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>
2551 2552
2552<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>
2552 2553 2554 <!-- GOOGLE TRANSLATE SCRIPT --> 2555
2555<script> 2556 function googleTranslateElementInit() { 2557 // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'` 2558 // Language codes can be taken from here https://cloud.google.com/translate/docs/languages 2559 const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt'; 2560 document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){ 2561 translate.innerText = ''; 2562 new google.translate.TranslateElement({ 2563 pageLanguage: 'en', 2564 layout: google.translate.TranslateElement.InlineLayout.SIMPLE, 2565 includedLanguages: window.customLanguages || DEFAULT_LANGUAGES, 2566 }, translate); 2567 }); 2568 } 2569 </script>
2569 2570
2570<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
2570 2571
2571<script defer src="https://accounts.google.com/gsi/intermediate"></script>
2571 2572 2573 <!-- GOOGLE TRANSLATE SCRIPT END--> 2574
2574<script> 2575 2576 // UI helpers 2577 (function () { 2578 2579 function getSideMenu () { 2580 return document.querySelector('body > div.sidemenu'); 2581 } 2582 2583 function sideMenuHide (instant) { 2584 var sideMenu = getSideMenu(); 2585 if (!sideMenu || !sideMenu.classList.contains('visible')) { 2586 return; 2587 } 2588 sideMenu.classList.remove('visible'); 2589 sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } })); 2590 window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} })); 2591 } 2592 2593 function sideMenuShow () { 2594 var sideMenu = getSideMenu(); 2595 if (!sideMenu || sideMenu.classList.contains('visible')) { 2596 return; 2597 } 2598 sideMenu.classList.add('visible'); 2599 sideMenu.dispatchEvent(new Event('lpui-show')); 2600 window.dispatchEvent(new Event('lpui-sidemenu-show')); 2601 } 2602 2603 function sideMenuToggle () { 2604 var sideMenu = getSideMenu(); 2605 if (!sideMenu) { 2606 return; 2607 } 2608 var isSideMenuVisible = sideMenu.classList.contains('visible'); 2609 if (isSideMenuVisible) { 2610 sideMenuHide(); 2611 } else { 2612 sideMenuShow(); 2613 } 2614 } 2615 2616 var scrollLockRequests = {}; 2617 window.__debug_scrollLockRequests = scrollLockRequests; 2618 var hideScrollStyles = ''+ 2619 'body {'+ 2620 'overflow: hidden;' + 2621 '}'; 2622 var hideScrollId = 'hide-body-scroll-style'; 2623 2624 function scrollLock () { 2625 var style = document.createElement('style'); 2626 style.id = hideScrollId; 2627 style.textContent = hideScrollStyles; 2628 document.head.appendChild(style); 2629 window.dispatchEvent(new Event('lpui-scroll-locked')); 2630 } 2631 2632 function scrollUnlock () { 2633 document.getElementById(hideScrollId)?.remove(); 2634 window.dispatchEvent(new Event('lpui-scroll-unlocked')); 2635 } 2636 2637 function requestScrollLock (lockId) { 2638 var wasLocked = Object.keys(scrollLockRequests).length > 0; 2639 scrollLockRequests[lockId || '__anonymous_lock'] = true; 2640 if (!wasLocked) { 2641 scrollLock(); 2642 } 2643 } 2644 2645 function releaseScrollLock (lockId) { 2646 if (lockId) { 2647 delete scrollLockRequests[lockId]; 2648 if (!Object.keys(scrollLockRequests).length) { 2649 scrollUnlock(); 2650 } 2651 } else { 2652 scrollLockRequests = {}; 2653 window.__debug_scrollLockRequests = scrollLockRequests; 2654 scrollUnlock(); 2655 } 2656 } 2657 2658 function showModal (modalId, options) { 2659 var modal = document.getElementById(modalId); 2660 if (!modal) { 2661 return; 2662 } 2663 2664 if (!modal.classList.contains('visible')) { 2665 modal.classList.add('visible'); 2666 if (options && options.scrollLock) { 2667 window.lpUI.requestScrollLock(modalId); 2668 } 2669 modal.dispatchEvent(new Event('lpui-show')); 2670 window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } })); 2671 } 2672 2673 const visibleModals = document.querySelectorAll('.modal.visible'); 2674 2675 if (visibleModals.length > 1) { 2676 2677 const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => { 2678 const zIndex = window.getComputedStyle(modal).zIndex; 2679 const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0; 2680 return Math.max(maxZIndex, parsedZIndex); 2681 }, 0); 2682 2683 modal.style.zIndex = maxZIndex + 1; 2684 } 2685 2686 } 2687 2688 function _hideModal (modalEl) { 2689 if (!modalEl) { 2690 return; 2691 } 2692 if (!modalEl.classList.contains('visible')) { 2693 return; 2694 } 2695 modalEl.classList.remove('visible'); 2696 modalEl.style.zIndex = '';
2697 modalEl.dispatchEvent(new Event('lpui-hide')); 2698 var modalId = modalEl.getAttribute('id'); 2699 if (modalId) { 2700 window.lpUI.releaseScrollLock(modalId); 2701 window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } })); 2702 } 2703 } 2704 2705 function hideModal (modalId) { 2706 _hideModal(document.getElementById(modalId)); 2707 } 2708 2709 function hideClosestModal (el) { 2710 const modal = el?.closest('.modal'); 2711 if (!modal) { 2712 return; 2713 } 2714 if (modal.classList) { 2715 _hideModal(modal); 2716 return; 2717 } 2718 if (modal.length && modal[0].classList) { 2719 _hideModal(modal[0]); 2720 } 2721 } 2722 2723 window.lpUI = { 2724 sideMenuHide: sideMenuHide, 2725 sideMenuShow: sideMenuShow, 2726 sideMenuToggle: sideMenuToggle, 2727 requestScrollLock: requestScrollLock, 2728 releaseScrollLock: releaseScrollLock, 2729 showModal: showModal, 2730 hideModal: hideModal, 2731 hideClosestModal: hideClosestModal 2732 } 2733 })(); 2734 2735 var stringifyPrimitive = function(v) { 2736 switch (typeof v) { 2737 case 'string': 2738 return v; 2739 2740 case 'boolean': 2741 return v ? 'true' : 'false'; 2742 2743 case 'number': 2744 return isFinite(v) ? v : ''; 2745 2746 default: 2747 return ''; 2748 } 2749 }; 2750 2751 function objectToQuerystring(obj, sep, eq, name) { 2752 // https://github.com/Gozala/querystring/blob/master/encode.js 2753 sep = sep || '&'; 2754 eq = eq || '='; 2755 if (obj === null) { 2756 obj = undefined; 2757 } 2758 2759 if (typeof obj === 'object') { 2760 return Object.keys(obj).map(function(k) { 2761 var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; 2762 if (Array.isArray(obj[k])) { 2763 return obj[k].map(function(v) { 2764 return ks + encodeURIComponent(stringifyPrimitive(v)); 2765 }).join(sep); 2766 } else { 2767 return ks + encodeURIComponent(stringifyPrimitive(obj[k])); 2768 } 2769 }).filter(Boolean).join(sep); 2770 2771 } 2772 2773 if (!name) return ''; 2774 return encodeURIComponent(stringifyPrimitive(name)) + eq + 2775 encodeURIComponent(stringifyPrimitive(obj)); 2776 } 2777 2778 function getPath(url, options) { 2779 var parser = document.createElement('a'); 2780 parser.href = url || ''; 2781 var path = parser.pathname || ''; 2782 if (path[0] !== '/') { 2783 // IE does not return path starting with a slash 2784 path = '/' + path; 2785 } 2786 2787 if (options && options.queryString) { 2788 path += parser.search; 2789 } 2790 2791 return path; 2792 } 2793 2794 function getMLSAutocomplete(keyword) { 2795 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 2796 var query = { 2797 kind: 'listings', 2798 query: keyword 2799 }; 2800 2801 return superagent 2802 .get(searchURL) 2803 .query(query) 2804 .then(function(res) { 2805 var data = res.body || []; 2806 // Array of listing_auto_complete documents: id, display_address, city, state, 2807 // price, sold_price, status, status_modified_at, photo_urls (array of URLs). 2808 2809 return data; 2810 }); 2811 } 2812 2813 function getMLSAutocompleteWithFilters(keyword, filters = {}) { 2814 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 2815 2816 return superagent 2817 .get(searchURL) 2818 .query({ kind: 'listings', query: keyword, ...filters }) 2819 .then(function(res) { 2820 // Same response shape as getMLSAutocomplete. 2821 return res.body || []; 2822 }); 2823 } 2824 2825 function makeMlsLink(data) { 2826 // Code Dupe from utils/googlePlace 2827 // mapping of google data type to mls data type 2828 var mapping = { 2829 neighborhood: 'neighborhood', 2830 locality: 'place', 2831 administrative_area_level_2: 'county', 2832 administrative_area_level_1: 'state', 2833 postal_code: 'postalcode', 2834 }; 2835 2836 function _filterTypes(types) { 2837 return types.filter(function(type) { return type !== 'political' }); 2838 } 2839 2840 if (!data || !Object.keys(data).length) { 2841 return '/home-search/listings'; 2842 } 2843 2844 var newData = {};
2845 _filterTypes(data.types).forEach(function(type) { 2846 if (mapping[type]) { 2847 newData.search_type = mapping[type]; 2848 } 2849 }); 2850 newData.omnibox = data.formatted_address; 2851 data.address_components.forEach(function(component) { 2852 _filterTypes(component.types).forEach(function(type) { 2853 if (mapping[type]) { 2854 newData[mapping[type]] = component.long_name; 2855 } 2856 }); 2857 }); 2858 var bounds = data.geometry.bounds; 2859 var convertedData = Object.assign(bounds, newData); 2860 2861 return '/home-search/listings?' + objectToQuerystring(convertedData); 2862 } 2863 2864 function debounce(func, wait) { 2865 let timeout; 2866 return function(...args) { 2867 const context = this; 2868 clearTimeout(timeout); 2869 timeout = setTimeout(() => func.apply(context, args), wait) 2870 } 2871 } 2872 2873 // Global methods / variables that can be accessed by element js 2874 window.luxuryPresence = { 2875 ...window.luxuryPresence, 2876 defaults: { 2877 companyId: 'f62f900d-59fc-4354-b573-bcc1e7da46a2', 2878 apiGatewayUrl: '/api-gw', 2879 routerUrl: '/api-nv', 2880 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\
2880n }\n propertiesCount(\n \n agentIds: $agentIds\n teamIds: $teamIds\n propertyId: $propertyId\n propertyIds: $propertyIds\n prioritizeIds: $prioritizeIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n statusId: $statusId\n statusIds: $statusIds\n excludeStatusId: $excludeStatusId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n officeIds: $officeIds\n addressState: $addressState\n addressCity: $addressCity\n developmentId: $developmentId\n featuredListing: $featuredListing\n leaseProperty: $leaseProperty\n search: $search\n searchTermMode: $searchTermMode\n salesPriceGTE: $salesPriceGTE\n salesPriceLTE: $salesPriceLTE\n leasePriceGTE: $leasePriceGTE\n leasePriceLTE: $leasePriceLTE\n livingSpaceSizeGTE: $livingSpaceSizeGTE\n livingSpaceSizeLTE: $livingSpaceSizeLTE\n bathCountGTE: $bathCountGTE\n bathCountLTE: $bathCountLTE\n bedroomCountGTE: $bedroomCountGTE\n bedroomCountLTE: $bedroomCountLTE\n architectureStyle: $architectureStyle\n lifestyle: $lifestyle\n propertyTypeId: $propertyTypeId\n propertyTypeIds: $propertyTypeIds\n spaceTypeIds: $spaceTypeIds\n tag: $tag\n archived: $archived\n globalProperty: $globalProperty\n withGeo: $withGeo\n openHouse: $openHouse\n displayMLSListings: $displayMLSListings\n advancedFilters: $advancedFilters\n seasonalPriceId: $seasonalPriceId\n\n ) {\n count\n }\n }\n","pressReleases":"\n query PressReleases (\n $companyId: ID\n $pressReleaseIds: [ID!]\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n $categories: [String!]\n $propertyId: [ID!]\n $developmentId: [ID!]\n $agentId: [ID!]\n $teamId: [ID!]\n $year: [Int!]\n ) {\n pressReleases (\n companyId: $companyId\n pressReleaseIds: $pressReleaseIds\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n categories: $categories\n propertyId: $propertyId\n developmentId: $developmentId\n agentId: $agentId\n teamId: $teamId\n year: $year\n ) {\n items {\n id\n title\n description\n author\n externalUrl\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n publishedAt\n categories\n }\n total\n }\n }\n","posts":"\n query Posts (\n $companyId: String\n $postId: [ID!]\n $slug: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n $featured: Boolean\n $categoryId: [String!]\n $neighborhoodId: [String!]\n ) {\n posts (\n companyId: $companyId\n postId: $postId\n slug: $slug\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n featured: $featured\n postStatusId: \"5f528253-abb7-484e-95c3-330269ac1102\"\n categoryId: $categoryId\n neighborhoodId: $neighborhoodId\n ) {\n items {\n id\n postId\n title\n subtitle\n description\n status: postStatus\n featured\n slug\n categories {\n id\n name\n }\n createdAt\n publishedAt\n scheduledAt\n createdBy {\n ... on Agent {\n firstName\n lastName\n }\n }\n customAuthor\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n seoTitle\n seoDescription\n }\n total\n }\n }\n","testimonials":"\n query Testimonials (\n $companyId: String\n $agentId: ID\n $teamId: ID\n $testimonialIds: [ID!]\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n ) {\n testimonials (\n companyId: $companyId\n agentId: $agentId\n teamId: $teamId\n testimonialIds: $testimonialIds\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n ) {\n items {\n id\n testimonialId\n body\n author\n position\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n seoTitle\n seoDescription\n agents {\n slug\n email\n firstName\n lastName\n avatar {\n smallUrl\n height\n width\n }\n }\n }\n total\n }\n }\n","neighborhoods":"\n query Neighborhoods (\n $neighborhoodId: ID\n $companyId: String\n $search: String\n $tag: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n ) {\n neighborhoods (\n neighborhoodId: $neighborhoodId\n companyId: $companyId\n search: $search\n tag: $tag\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n ) {\n id\n name\n description\n descriptionShort\n slug\n tags\n googlePlaceData\n mlsLink\n createdAt\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n seoTitle\n seoDescription\n }\n neighborhoodsCount(\n companyId: $companyId\n search: $search\n tag: $tag\n ) {\n count\n }\n }\n","developments":"\n query Developments (\n $developmentId: ID\n $companyId: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n $tag: [String!]\n $agentId: [ID!]\n $neighborhoodId: ID\n $neighborhoodIds: [ID!]\n ) {\n developments (\n developmentId: $developmentId\n companyId: $companyId\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n tag: $tag\n agentId: $agentId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n ) {\n id\n name\n description\n descriptionShort\n slug\n createdAt\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n googlePlaceData\n seoTitle\n seoDescription\n tags\n }\n developmentsCount(\n companyId: $companyId\n search: $search\n tag: $tag\n agentId: $agentId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n ) {\n count\n }\n }\n","pois":"\n query PointsOfInterest (\n $regionId: UUID!\n $radiu
2880s: 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"}, 2881 propertyPlaceholderImage: {"id":"52a563d7-98e2-469e-96c6-37ab73ba87ce","alt":null,"bytes":3999,"width":1920,"format":"png","height":1200,"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/uixzlxhexwnvh9x21ncd","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/uixzlxhexwnvh9x21ncd","authorUrl":null,"createdAt":"2023-08-18T19:13:19.001Z","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/uixzlxhexwnvh9x21ncd","sourceUrl":null,"updatedAt":"2023-08-18T19:13:19.001Z","xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/uixzlxhexwnvh9x21ncd","__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/uixzlxhexwnvh9x21ncd","description":null,"displayName":"kinoko-property-placeholder","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/uixzlxhexwnvh9x21ncd","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/uixzlxhexwnvh9x21ncd","originalFileName":"Kinoko Property Placeholder"} 2882 }, 2883 objectToQuerystring: objectToQuerystring, 2884 getPath: getPath, 2885 getMLSAutocomplete: getMLSAutocomplete, 2886 getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters, 2887 makeMlsLink: makeMlsLink, 2888 debounce: debounce, 2889 }; 2890 2891 var wowOffset = 100; 2892 </script>
2892 2893
2893<script> 2894 (()=>{function e(e){return e&&e.__esModule?e.default:e}var t={},i={};i={getVideoFirstFrame(e){let t="https://res.cloudinary.com/";if(!e||!e.startsWith(t))return null;let i=e.replace(t,"").replace("f_auto:video","f_auto").split("/");if(-1===i[1].toLowerCase().indexOf("video"))return null;let s=i[i.length-1];s.lastIndexOf(".")>-1?s=`${s.slice(0,s.lastIndexOf("."))}.jpg`:s+=".jpg",i[i.length-1]=s;let r=3;"videos"===i[1].toLowerCase()&&""!==i[2]&&(r=2);let a=/^(?:[a-z]{1,3}|\$\w+)_\S+$/;for(;r<i.length-1&&a.test(i[r]);)r++;return i.splice(r,0,"so_0,eo_0"),t+i.join("/")}},t=function(e,{isEqual:t}){let s=[{field:"thumbnailUrl",w:320},{field:"smallUrl",w:960},{field:"mediumUrl",w:1280},{field:"largeUrl",w:1920},{field:"xLargeUrl",w:2560},{field:"xxLargeUrl",w:3456}],r=function(e,t,i){let s="en-US";if(!e)return"";if("string"==typeof e){let t=e.trim();if(/[^+\-0-9.]/.test(t))return e;if(!(e=parseFloat(t)))return""}let r="number"==typeof i?i:0,a=Number.isInteger(e)?0:r,o={minimumFractionDigits:a,maximumFractionDigits:a};return"USD"===t?`$${e.toLocaleString(s,o)}`:"CAD"===t?`$${e.toLocaleString(s,o)} CAD`:"EUR"===t?`\u{20AC}${e.toLocaleString(s,o)}`:"GBP"===t?`\xa3${e.toLocaleString(s,o)}`:"PERCENT"===t?`${e}%`:"number"==typeof i&&i>-1?e.toLocaleString(s,{maximumFractionDigits:i}):e.toLocaleString(s)},a=function(e){switch(e){case"DAY":return"daily";case"MONTH":return"monthly";case"WEEK":return"weekly";case"YEAR":return"yearly";case"QUARTER":return"quarterly";case"HALF_YEAR":return"semi-annually";case"NIGHTLY":return"nightly";case"SEASONAL":return"seasonally";default:return""}},o=function(e){switch(e){case"DAY":return"day";case"WEEK":return"wk";case"MONTH":return"mo";case"YEAR":return"yr";case"QUARTER":return"3 mos";case"HALF_YEAR":return"6 mos";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},n=function(e){switch(e){case"DAY":return"day";case"WEEK":return"week";case"MONTH":return"month";case"YEAR":return"year";case"QUARTER":return"quarter";case"HALF_YEAR":return"6 months";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},l=function(e,t){let i,s,r=t||{};switch(r.mode){case"short":i=o(e),s=r.frequencySeparator||"/";break;case"standard":case"std":i=n(e),s=r.frequencySeparator||"/";break;default:i=a(e),s=r.frequencySeparator||" "}return i?r.frequencyTag||r.frequencyClass?`${s}<${r.frequencyTag||"span"}${r.frequencyClass?` class="${r.frequencyClass}"`:""}>${i}</${r.frequencyTag||"span"}>`:s+i:""};return{isEmpty(e,t){let i=!e||"string"==typeof e&&!e.trim()||!Object.keys(e).length;return t.fn?i?t.fn(this):t.inverse(this):i},ifEquals(e,i,s){return t(e,i)?s.fn(this):s.inverse(this)},"raw-helper":function(e){return e.fn()},striptags:e=>e?(e=(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,"")).replace(/ /g," ")).replace(/<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g,""):"",striptagsLineBreaks:e=>e?(e=(e=(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,"")).replace(/(<br\s*\/?>)|(<\/p\s*>)(?=.*(<\/p\s*>|<br\s*\/?>))/g," ")).replace(/ /g," ")).replace(/<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g,""):"",truncate:(e,t,i)=>e?e.length>t?"string"==typeof i?e.slice(0,t-i.length)+i:e.slice(0,t):e:"",setSubArray(e=[],t,i,s,r){r.data.root[s]=e.slice(t,i)},formatAreaUnit(e){switch(e){case"ACRE":return"Acres";case"SQUARE_METER":return"Sq.M.";case"SQUARE_YARD":return"Sq.Yd.";default:return"Sq.Ft."}},formatFrequency:a,formatFrequencyShort:o,lpFormatFrequency:(e,t)=>l(e,t&&t.hash),subArray(e,t,i,s){return e>=t&&e<i?s.fn(this):s.inverse(this)},formatPropertyStatus(e,t,i){let s="";switch(e){case"SOLD":s="Sold";break;case"FOR_SALE":s="For Sale";break;case"COMING_SOON":s="Coming Soon";break;case"INACTIVE":s="Inactive";break;case"POCKET_LISTING":s="Pocket Listing";break;case"PENDING":s="Pending";break;case"UNDER_CONTRACT":s="Under Contract";break;case"ACTIVE_UNDER_CONTRACT":s="Active Under Contract";break;default:s=e}return("Sold"===s||"Leased"===s)&&t&&"string"==typeof i&&i&&(s+=` on ${i}`),s},formatGrade(e){switch(e){case"UNDERGRADUATE_COURSES":return"Undergrad";case"PRE_KINDERGARTEN":return"PreK";case"KINDERGARTEN":return"K";case"FIRST_GRADE":return"1st";case"SECOND_GRADE":return"2nd";case"THIRD_GRADE":return"3rd";case"FOURTH_GRADE":return"4th";case"FIFTH_GRADE":return"5th";case"SIXTH_GRADE":return"6th";case"SEVENTH_GRADE":return"7th";case"EIGHTH_GRADE":return"8th";case"NINTH_GRADE":return"9th";case"TENTH_GRADE":return"10th";case"ELEVENTH_GRADE":return"11th";case"TWELFTH_GRADE":return"12th";default:return""}},encodeURI:e=>encodeURI(e),encodeURIComponent:e=>encodeURIComponent(e),hbFormatDate(e,t){if(!e)return"";let i="current"===e?new Date:new Date(e);if(Number.isNaN(i.getTime()))return"";if("YYYY"===t||"year"===t)return`${i.getFullYear()}`;if("MM/DD/YY"===t){let e=i.getMonth()+1;return e<10&&(e=`0${e.toString()}`),`${e}/${i.getDate()}/${i.getFullYear().toString().substr(-2)}`}return`${["January","February","March","April","May","June","July","August","September","October","November","December"][i.getMonth()]} ${i.getDate()}, ${i.getFullYear()}`},openHousesFormat(e,t,i){if(!e||!t)return"";let s=e=>{let t=e.getHours();t>12&&(t-=12);let i=`${t}:${e.getMinutes()>9?e.getMinutes():"0"+e.getMinutes()}`;return e.getHours()>11?i+="PM":i+="AM",i},r="",a=e,o=t;
2894i&&(a=new Date(e).toLocaleString("en-US",{timeZone:i}),o=new Date(t).toLocaleString("en-US",{timeZone:i}),[,,,r]=new Date(t).toLocaleString("en-US",{timeZone:i,timeZoneName:"short"}).split(" "));let n=new Date(a),l=n.toLocaleDateString("en-US"),d=s(n),c=s(new Date(o));return`${l} ${d} - ${c} ${r}`},math:(e,t,i)=>(e=parseFloat(e),({"+":e+(i=parseFloat(i)),"-":e-i,"*":e*i,"/":e/i,"%":e%i})[t]),findByKey(e,t,i,s){let r=(e||[]).find(e=>e[t]===i);return s.fn(r)},capitalize(e,t,i){let s;return"string"==typeof e&&e.length&&(s=e.toLowerCase().split(t).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ").toString()),s},and:(...e)=>Array.prototype.slice.call(e).every(Boolean),or:(...e)=>Array.prototype.slice.call(e,0,-1).some(Boolean),not:e=>!e,orderByIds(t,i,s){let r="",a=null;s.data&&(a=e.createFrame(s.data));let o=(i||[]).filter(Boolean);if(o&&o.length){let e=0;r=o.reduce((i,r,o)=>{let n=(t||[]).find(e=>e.id===r);return n?(a&&(a.index=o-e),i+s.fn(n,{data:a})):(e+=1,i)},"")}else for(let e=0,i=(t||[]).length;e<i;e++)a&&(a.index=e),r+=s.fn(t[e],{data:a});return r},ifIn(e,t,i){return t&&t.indexOf(e)>-1?i.fn(this):i.inverse(this)},partial:(t,i)=>(e.registerPartial(t,e.compile(i.fn())),`
2894<script type="text/x-handlebars-template" class="${t} pagination-script">${i.fn()}<\/script>`),numCompare(e,t,i,s){return({"==":function(e,t){return e==t},"===":function(e,t){return e===t},"!=":function(e,t){return e!=t},"<":function(e,t){return e<t},">":function(e,t){return e>t},"<=":function(e,t){return e<=t},">=":function(e,t){return e>=t}})[i](e,t)?!s.fn||s.fn(this):!!s.fn&&s.inverse(this)},lpFormatNumber:r,arrayToHtmlList:(e,t)=>e.reduce((e,t)=>{try{if("object"==typeof t||null===t)return e;return e+=`<li>${t}</li>`}catch(e){}},""),join:(e,t,i)=>e&&e.join?e.join("string"==typeof t?t:", "):"",dedupe(t,i,s){let r=null,a=0,o=new Set;return s.data&&(r=e.createFrame(s.data)),(t||[]).reduce((e,t,n)=>{let l=i?t[i]:t;return!o.has(l)||i&&void 0===l?(o.add(l),r&&(r.index=n-a),e+s.fn(t,{data:r})):(a+=1,e)},"")},JSONstringify:(e,t)=>JSON.stringify(e),formatPropertyPrice(...t){let i=t[t.length-1].hash,s=t.length>1?t[0]:i.property,a=i.precision||0;t.length>2&&(i.mode=t[1]),i.mode||(i.mode="short");let o=t.length>3?t[2]:i.separator;if("string"!=typeof o&&(o=" | "),s.isPasswordProtected)return"Exclusive Listing";let n=t.length>4?t[3]:i.priceUponRequestText;if("string"!=typeof n&&(n="Price Upon Request"),s.priceUponRequest)return n;let d=s.salesPrice,c=null;"SOLD"!==s.status&&"Leased"!==s.status&&s.reducedPrice&&(i.reducedClass?c=s.reducedPrice:d=s.reducedPrice);let u="";c&&(u+=`<${i.reducedTag||"span"} class="${i.reducedClass}">${r(c,s.currency,a)}</${i.reducedTag||"span"}>`),d&&(d=r(d,s.currency,a),i.priceTag||i.priceClass?u+=`<${i.priceTag||"span"}${i.priceClass?` class="${i.priceClass}"`:""}>${d}</${i.priceTag||"span"}>`:u+=d);let h=s.leasePrice&&r(s.leasePrice,s.currency,a);if(h){u&&(u+=o);let e=`${h}${l(s.leasePeriod,i)}`;i.leaseTag||i.leaseClass?u+=`<${i.leaseTag||"span"}${i.leaseClass?` class="${i.leaseClass}"`:""}>${e}</${i.leaseTag||"span"}>`:u+=e}
2894return new e.SafeString(u)},mediaImage(t,i={}){if(!t)return;let{lazy:r,...a}=i.hash,o="",n="";if("string"==typeof t)o=t;else{let e={},{height:r,width:l,altTagText:d}=t;s.forEach(i=>{t[i.field]&&!e[t[i.field]]&&(e[t[i.field]]=i.w)});let c=Object.keys(e);if(!c.length)return;if(d&&(a.alt=d),r&&l&&(r>=l&&(a.class?a.class+=" portrait":a.class="portrait"),"setDims"in i.hash&&(a.width=l,a.height=r)),c.length>1&&l&&l<e[c[c.length-1]]){let t=c.findIndex(t=>e[t]>=l);c.splice(t+1),e[c[c.length-1]]=l}c.length>1&&(n=c.map(t=>`${t} ${e[t]}w`).join(", "),c.sort((t,i)=>Math.abs(e[t]-1280)-Math.abs(e[i]-1280))),o=c[0]}delete a.setDims,n||delete a.sizes,"alt"in a||(a.alt=""),!("loading"in a)&&(i?.data?.root?.sectionIndex>1||r)&&(a.loading="lazy");let l=Object.keys(a).map(t=>`${e.escapeExpression(t)}="${e.escapeExpression(a[t])}"`).join(" ");return new e.SafeString(`<img src="${o}"${n?` srcset="${n}"`:""}${l?` ${l}`:""}>`)},bgImage:e=>e?"string"==typeof e?e:e.largeUrl||e.url||"":"",concat(...e){let t="";for(let i in e)null!==e[i]&&void 0!==e[i]&&"object"!=typeof e[i]&&(t+=e[i]);return t},setVideoExtension(e,t){if(!e||!t)return"";let i=new URL(e);if("res.cloudinary.com"!==i.host)return i.pathname.endsWith(`.${t}`)?e:"";let s=i.pathname.lastIndexOf("."),r=i.pathname;return -1!==s&&(r=i.pathname.substr(0,s)),i.pathname=`${r}.${t}`,i.toString()},addVideoSources(e){if(!e)return"";if(!e.includes("res.cloudinary.com"))return`<source data-src="${e}">`;let t=e.replace(/\.(?:3gp|mpeg|mp4|m4v|m4p|ogv|ogg|mov|webm)$/,"");return[{format:"webm",codec:"vp9",htmlCodecs:";codecs=vp9"},{format:"mp4",codec:"h265",htmlCodecs:";codecs=hvc1"},{format:"mp4",codec:"h264",htmlCodecs:""}].map(e=>{let i=`${t.replace(/f_auto(?::video)?(?:,q_auto(?::\w+)?)?/,`f_${e.format},vc_${e.codec},q_auto:best,w_1920,c_limit`)}.${e.format}`;return`<source data-src="${i}" type="video/${e.format}${e.htmlCodecs}">`}).join("\n")},cloudinaryVideoFirstFrame:i.getVideoFirstFrame,initials(e,t){if(!e)return"";t?.hash?.endChar&&(e=e.split(t.hash.endChar)[0]);let i=+t?.hash?.maxChars||2,s=e.match(/\b\w/g)?.slice(0,i);return s?(t?.hash?.addText&&(s=s.map(e=>e+t.hash.addText)),s.join(t?.hash?.joinWith||"").toUpperCase()):""},normalizePhone(e){if(!e)return"";let t=String(e).trim();return(t.startsWith("+")?"+":"")+t.replace(/\D/g,"")}}};class s{constructor(e,t,i){if(this.config=e,this.window=t,this.document=i,!this.destroy)throw Error("Controllers must implement a deconstructor")}}let r="lp_lead_form_conversion_fired";function a(e,t){if(e&&t&&"function"==typeof t.sendGoogleTagManagerEvent&&!function(e){try{return"true"===e.sessionStorage.getItem(r)}catch{return!1}}(e))try{t.sendGoogleTagManagerEvent("event","generate_lead");try{e.sessionStorage.setItem(r,"true")}catch{}}catch{}}function o(e){return!!e&&(!!e.expired||Date.now()>=e.expiresAt)}let n="/api/v1/home-valuation";class l extends s{destroy(){}_cleanAddressString(e){if(!e||"string"!=typeof e)return"";let t=e.trim();if(t.includes("User entered address:")){let e=t.match(/User entered address:\s*\n?\s*([^\n]+)/);e&&e[1]&&(t=e[1].trim())}let i=t.indexOf(", call time frame:");return -1!==i&&(t=t.substring(0,i).trim()),t}_transformAddressComponents(e){let t=t=>(e.find(e=>e.componentType===t)||{}).componentName?.text,i={},s=t("street_number"),r=t("route"),a=t("administrative_area_level_1"),o=t("postal_code"),n=t("subpremise"),l=t("locality")||t("sublocality_level_1")||t("neighborhood");return s&&(i.streetNumber=s),r&&(i.streetName=r),l&&(i.city=l),a&&(i.state=a),o&&(i.zipcode=o),n&&(i.addressLine2=n),i}_extractAddressAndCoordinates(e){let t=null,i=null;if(e?.result){let{result:s}=e;s.address?.addressComponents&&(t=this._transformAddressComponents(s.address.addressComponents)),s.geocode?.location&&(i={latitude:s.geocode.location.latitude,longitude:s.geocode.location.longitude})}return{structuredAddress:t,coordinates:i}}_filterEmptyStrings(e){let t={};for(let[i,s]of Object.entries(e))""!==s&&null!=s&&(t[i]=s);return t}_getRawAddress(e){let t=e.activity.content||{},i=e.activity.comments_attributes?.[0]?.text;return[t.address,t["property-address"],t.property_address,t.Property_Address,i,t.message,t.homeValuationAddress,t.propertyAddress].map(e=>e&&this._cleanAddressString(e)).find(Boolean)||""}_logLeadEvent(e,t,i=null){let s={event:e,companyId:this.config.companyId,websiteId:this.config.websiteId,timestamp:new Date().toISOString(),hasEmail:!!t.activity?.author_email,hasAddress:!!this._getRawAddress(t)};if(i&&(s.errorMessage=i.userMessage||(i.status?`Request failed with status ${i.status}`:"An error occurred"),s.errorName=i.name,s.errorStatus=i.status),console.error(`[HomeValuation] ${e}`,JSON.stringify(s)),this.window.posthog)try{this.window.posthog.capture(e,s)}catch(e){console.error("[HomeValuation] PostHog capture failed:",e)}}_getUserFriendlyErrorMessage(e){return"AbortError"===e.name||e.message?.includes("timeout")?"Connection timed out. Please try again.":"TypeError"===e.name&&e.message?.includes("fetch")?"Unable to connect. Please check your internet connection and try again.":503===e.status||502===e.status||504===e.status?"Service temporarily unavailable. Please try again in a moment.":400===e.status?"Please check your information and try again.":"Something went wrong. Please try again or c
2894ontact us directly."}_formatStructuredAddress(e){if(!e||0===Object.keys(e).length)return"";let t=[];return t.push([e.streetNumber,e.streetName,e.addressLine2].filter(Boolean).join(" ")),t.push([[e.city,e.state].filter(Boolean).join(", "),e.zipcode].filter(Boolean).join(" ")),t.filter(Boolean).join(", ")}_buildHomeValuationData(e,t,i,s){let r=this._formatStructuredAddress(i)||this._getRawAddress(e);if(!r)throw Error("Unable to extract home valuation address from form data");let a={companyId:e.companyId,homeValuationAddress:r,homeValuationEstimate:t?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0,minimumFractionDigits:0}).format(t):null,websiteId:e.page.websiteId,sourceUrl:e.activity.source_url},o={leadEmailAddress:e.activity.author_email,leadFullName:e.activity.author_name,leadFirstName:e.activity.firstName,leadLastName:e.activity.lastName,leadPhoneNumber:e.activity.author_phone,parcelId:e.activity.content?.parcelId,resourceId:e.page.pageMeta?.resourceId,pageId:e.page.pageId,sourceResource:e.page.pageMeta?.s
2894ourceResource,pageElementId:e.page.pageMeta?.pageElementId,formId:e.page.pageMeta?.formId,utmSource:e.activity.content?.utm_source,utmMedium:e.activity.content?.utm_medium,utmCampaign:e.activity.content?.utm_campaign,utmTerm:e.activity.content?.utm_term,utmContent:e.activity.content?.utm_content,utmId:e.activity.content?.utm_id,timeToSell:e.activity.content?.timeToSell,lookingToBuy:e.activity.content?.lookingToBuy,consented:!!e.activity.content?.termsAccepted,referrer:e.referrer,content:e.activity.content||{},fields:e.fields||{}},n=this._filterEmptyStrings(o);return{...a,...n,...i&&{address:i},...s&&{coordinates:s}}}async _validateAddressSafely(e){if(!e)return console.error("Home valuation: No address found in form data"),null;try{return await this._validateAddressWithGoogleMaps(e)}catch(e){throw console.error("Error validating address with Google Maps:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}async _getHomeValuationEstimateSafely(e){try{return await this._getHomeValuationEstimate(e)}catch(e){throw console.error("Error getting home valuation estimate:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}_isSafeRedirectUrl(e){try{let{protocol:t}=new URL(e,this.window.location.href);return"https:"===t||"http:"===t}catch{return!1}}_parseResponsePayload(e){try{return e?JSON.parse(e):{}}catch{return{raw:e}}}_createResponseError(e,t){let i=Error(e&&"object"==typeof e&&Object.keys(e).length?e.message||JSON.stringify(e):"Request failed");return e&&"object"==typeof e&&Object.keys(e).length&&Object.assign(i,e),i.status=t,i}_resolveValuationApiBase(){let{config:e}=this;if(void 0!==e.valuationApiBase&&null!==e.valuationApiBase&&(""!==e.valuationApiBase||!e.isBuilder))return e.valuationApiBase;if(e.websiteApiGatewayUrl)return e.websiteApiGatewayUrl;throw Error("websiteApiGatewayUrl/valuationApiBase not configured for home valuation")}async _submitLead(e,t,i){let s=new AbortController,r=setTimeout(()=>s.abort(),1e4);try{let a=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),signal:s.signal});clearTimeout(r);let n=await a.text(),l=this._parseResponsePayload(n);if(!a.ok)throw this._createResponseError(l,a.status);if(l&&"success"===l.status&&l.redirectUrl){if(o(i))return l;if(!this._isSafeRedirectUrl(l.redirectUrl))return console.error("Home valuation: refusing redirect to unsupported protocol"),l;return this.window.location.href=l.redirectUrl,{redirected:!0,url:l.redirectUrl}}return l}catch(e){throw clearTimeout(r),e}}async _submitHomeValuationRequest(e){let t=this._resolveValuationApiBase();this._logLeadEvent("home_valuation_submission_started",e);try{let i=this._getRawAddress(e),s=null;try{s=await this._validateAddressSafely(i)}catch(t){throw this._logLeadEvent("home_valuation_address_validation_failed",e,t),t}let r=null;try{r=await this._getHomeValuationEstimateSafely(s)}catch(t){this._logLeadEvent("home_valuation_estimate_failed",e,t),r=null}let{structuredAddress:a,coordinates:o}=this._extractAddressAndCoordinates(s),l=`${t}${n}`,d=this._buildHomeValuationData(e,r,a,o),c=await this._submitLead(l,d,e.deadline);return this._logLeadEvent("home_valuation_submission_success",e),c}catch(t){throw t.userMessage||(t.userMessage=this._getUserFriendlyErrorMessage(t)),this._logLeadEvent("home_valuation_submission_failed",e,t),t}}async _validateAddressWithGoogleMaps(e){let{config:t,window:i}=this,s=t.googleMapsAPIKey;if(!s&&i.luxuryPresence?.mapApiLoader&&(s=await i.luxuryPresence.mapApiLoader.getMapApiKey()),!s)throw Error("Google Maps API key not configured");let r=new AbortController,a=setTimeout(()=>r.abort(),1e4);try{let t=await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key=${s}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({address:{addressLines:[e]},enableUspsCass:!1}),signal:r.signal});if(clearTimeout(a),!t.ok){let e=Error(`Address validation failed: ${t.status}`);throw e.status=t.status,e}return t.json()}catch(e){throw clearTimeout(a),e}}_hasMandatoryAddressFields(e){return!!(e.streetNumber&&e.streetName&&e.city&&e.state&&e.zipcode)}_logMissingAddressFields(e){let t=[];e.streetNumber||t.push("streetNumber"),e.streetName||t.push("streetName"),e.city||t.push("city"),e.state||t.push("state"),e.zipcode||t.push("zipcode"),console.log("Home valuation estimate skipped - missing required fields:",t.join(", "),"Available fields:",Object.keys(e).join(", "))}_buildAddressQueryString(e){return Object.entries(e).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}async _getHomeValuationEstimate(e=null){let t=`${this._resolveValuationApiBase()}${n}`;if(!e?.result?.address?.addressComponents)return null;let i=this._transformAddressComponents(e.result.address.addressComponents);if(!this._hasMandatoryAddressFields(i))return this._logMissingAddressFields(i),null;let s=this._buildAddressQueryString(i),r=`${t}?${s}`,a=new AbortController,o=setTimeout(()=>a.abort(),1e4);try{let e=await fetch(r,{headers:{Accept:"application/json"},signal:a.signal});if(clearTimeout(o),!e.ok){let t=Error(`Home valuation estimate failed: ${e.status}`);throw t.status=e.status,t}let t=await e.json();return t?.valueDollars??null}catch(e){throw clearTimeout(o),e}}}let d="middleName",c="redirect-pending",u=["name","firstName","lastName",d,"email","phone","phoneNumber","source","message","mlsId","sourceUrl"],h="lp_map_key_failed",p="oauthSuccess",m={cookieyes:{eventName:"cookieyes_consent_update",hasAnalyticsConsent:e=>(function(e){let t=e.cookie.match(/cookieyes-consent=([^;
2894]+)/);if(!t)return!1;try{let e=decodeURIComponent(t[1]);if(e.includes(",")){let t=e.split(",").map(e=>e.trim());if(t.some(e=>e.includes(":")))return t.some(e=>"analytics:yes"===e);return t.includes("analytics")}return e.includes("analytics")}catch(e){return!1}})(e),isAnalyticsAccepted:e=>Array.isArray(e?.accepted)&&e.accepted.includes("analytics")},"lp-consent":{eventName:"lp_consent_update",hasAnalyticsConsent:(e,t)=>!!t.__lpConsent?.state?.c?.analytics,isAnalyticsAccepted:e=>!!e?.choices?.analytics}};function g(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function y(e,t){t.forEach(t=>{let i=e[t];Array.isArray(i)&&0===i.length&&delete e[t]})}function f(e,t,i,s){let r=t.map(t=>(function e(t){return Array.isArray(t)?t.flatMap(t=>e(t)):"string"==typeof t?t.split(/\s+/).filter(Boolean):null==t?[]:[t]})(e[t])),a=s?.merge?r.flat():r.find(e=>e.length>0)??[];t.forEach(t=>{delete e[t]}),a.length>0&&(e[i]=[...new Set(a)])}function w(e){let t={...e};if(t.urlWebsite||(t.urlWebsite=null),t.urlYoutube=null,t.urlFacebook=null,t.urlInstagram=null,t.urlLinkedin=null,t.urlPodcast=null,t.urlTwitter=null,Array.isArray(e.socialLinks)){let i=[...e.socialLinks].sort((e,t)=>{let i=e.type?.toLowerCase()||"",s=t.type?.toLowerCase()||"";return i.localeCompare(s)});t.socialLinks=i;let s={youtube:"urlYoutube",facebook:"urlFacebook",instagram:"urlInstagram",linkedin:"urlLinkedin",podcast:"urlPodcast",twitter:"urlTwitter"};i.forEach(e=>{let i=s[e.type?.toLowerCase()??""];i&&(t[i]=e.link)})}return t}function v(e){return e&&Array.isArray(e)?e.map(e=>w(e)):e}function b(e){let{region:t}=e;if(!g(t))return e;let{schools:i,pois:s,...r}=t,a={...r,schools:g(i)?i.data??[]:[],...Array.isArray(s)?{pois:s.map(e=>({...e,category:"string"==typeof e.category?e.category.toUpperCase():e.category}))}:{}};return{...e,region:a}}function S(e){return e&&Array.isArray(e)?e.map(e=>b(e)):e}function _(e){let t=e.featuresAndAmenities;if(!Array.isArray(t))return e;let i=t.map(e=>({featureIds:e.featureIds??[],features:e.features??[],description:e.description}));return{...e,featuresAndAmenities:i}}function E(e){return e&&Array.isArray(e)?e.map(e=>_(e)):e}function I(e,t){return g(e)?t(e):e}function A(e,t){return Array.isArray(e)?t(e):e}var L={};L=` 2895 query PropertyDisclaimers($input: PropertyDisclaimersInput!) { 2896 propertyDisclaimers(input: $input) { 2897 feedId 2898 listingId 2899 resolvedFromListing 2900 listingCardAttribution 2901 listingDetailCourtesy 2902 listingDetailFooter 2903 logo 2904 } 2905 } 2906`;let $={mlsAttribution:"listingCardAttribution",mlsLogo:"logo",listingDetailCourtesy:"listingDetailCourtesy",listingDetailFooter:"listingDetailFooter"},x=new class{constructor(e){this.isBuilder=!1,this.companyId=null,this.websiteId=null,this.pageId=null,this.shareId=null,this.pageMeta=null,this.websiteApiGatewayUrl=null,this.buyerSellerServiceUrl=null,this.leadIngesterUrl=null,this.divolteServiceUrl=null,this.eventBus=null,this.templateId=null,this.myhomeDashboardEnabled=!1,this.mlsEnabled=!1,this.hstValuationRedirectEnabled=!1,this.hvStepTwoCaptureEnabled=!1,this.googleMapsAPIKey=null}get valuationApiBase(){return this.isBuilder?this.websiteApiGatewayUrl:""}destroy(){}setPage(e,t={}){this.pageId=e,this.shareId=t.shareId||null,this.pageMeta={sourceResource:t.sourceResource,pageElementId:t.pageElementId,pageQueryVariables:t.pageQueryVariables||{}}}setIsBuilder(e){this.isBuilder=e}setCompany(e,t={}){this.companyId=e}setWebsite(e,t={}){this.websiteId=e,t.myhomeDashboardEnabled&&(this.myhomeDashboardEnabled=t.myhomeDashboardEnabled),t.mlsEnabled&&(this.mlsEnabled=t.mlsEnabled),t.hstValuationRedirectEnabled&&(this.hstValuationRedirectEnabled=t.hstValuationRedirectEnabled),t.hvStepTwoCaptureEnabled&&(this.hvStepTwoCaptureEnabled=t.hvStepTwoCaptureEnabled)}setWebsiteApiGatewayUrl(e,t={}){this.websiteApiGatewayUrl=e}setBuyerSellerServiceUrl(e,t={}){this.buyerSellerServiceUrl=e}setDivolteServiceUrl(e,t={}){this.divolteServiceUrl=e}setEventBusUrl(e,t={}){this.eventBusUrl=e}setTemplateId(e,t={}){this.templateId=e}setLeadIngesterUrl(e,t={}){this.leadIngesterUrl=e}setGoogleMapsAPIKey(e,t={}){this.googleMapsAPIKey=e}setEventBus({enabled:e,apiKey:t,url:i}){this.eventBus={enabled:e,apiKey:t,url:i}}}({}),T=new class extends s{constructor(e,t,i){super(e,t,i),this.setLoginState=this.setLoginState.bind(this),this.pageId=null,this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}initialize(e){try{let{config:t,document:i}=this;this.pageId=t.pageId,this.modals=i.querySelectorAll("body > #modals >
2906 .modal"),e.modals.forEach(e=>{this._attachModalHandler(e)})}catch(e){console.log(e)}}destroy(){let{document:e}=this;this.exitModalEventListeners.forEach(t=>{e.removeEventListener("mouseout",t)}),this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}setModalWithExpiry(e){let{window:t}=this,i=new Date().getTime()+864e5,s=`modal-controller-${e}`;try{t.localStorage.setItem(s,JSON.stringify(i))}catch(e){}}setLoginState(){let{window:e}=this;try{e.localStorage.setItem("isSignedUp","true")}catch(e){}}getModalWithExpiry(e){let{window:t}=this,i=t.localStorage,s=i.getItem(`modal-controller-${e}`);if(!s)return!1;let r=JSON.parse(s);return!(new Date().getTime()>r)||(i.removeItem(`modal-controller-${e}`),!1)}show(e,t={}){let{window:i}=this,s=this.getModalWithExpiry(e);(e&&!s||!0===t.forced)&&(i.lpUI.showModal(`modal-${e}`,t),this.setModalWithExpiry(e))}_attachModalHandler(e){let{pageId:t}=this,{trigger:i,pageSpecific:s}=e;(!s||e.pages.map(e=>e.pageId).includes(t))&&("EXIT"===i?this._exitModalHandler(e):"TIMER"===i?this._timerModalHandler(e):"FORCED"===i&&this._forcedModalHandler(e))}_exitModalHandler(e){let t=this,{document:i,exitModalTriggered:s}=this,{modalId:r}=e;function a(e){!s[r]&&(e.toElement||e.relatedTarget||(t.show(r),s[r]=!0))}i.addEventListener("mouseout",a),this.exitModalEventListeners.push(a)}_timerModalHandler(e){let{modalId:t,timerDelay:i}=e;setTimeout(()=>{this.show(t)},i)}_forcedModalHandler(e){let{modalId:t}=e,{window:i,document:s}=this;if("true"!==i.localStorage.getItem("isSignedUp")){let e=s.querySelector(`#modal-${t}`),r=e?.querySelector("form"),a=r?.dataset.delay||2e3;r.addEventListener("formsubmitted",()=>{this.setLoginState()}),i.addEventListener("oauthSuccess",()=>{this.setLoginState(),r.classList.add("success"),setTimeout(()=>{i.lpUI.hideModal(`modal-${t}`),r.reset(),r.classList.remove("success")},a)}),this.show(t,{forced:!0})}}}(x,window,document),k=new class extends s{constructor(e,t,i){super(e,t,i),this._boundClickHandler=this._buttonClickHandler.bind(this)}initialize(e={}){try{let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler),e.body.addEventListener("click",this._boundClickHandler)}catch(e){console.error(e)}}destroy(){let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler)}_buttonClickHandler(e){this._handleButtonClick(e).catch(e=>console.error(e))}async _handleButtonClick(e){let{window:t,document:i}=this,s=e.target.closest("button, a");if(!s)return;let r=s.dataset.type||"",a=s.href||s.dataset.href||"",o=s.target||"",{submit:n}=s.dataset;if(n){try{await this._handleSubmit(s)}catch(e){console.error(e)}((e,t=!1)=>{if(e){if(t)return window.open(e);window.location.assign(e)}})(a,"_blank"===o)}if(this._trackConversion(s),"VIDEO"===r)return void this._handleVideoButton(s);if("CONTACT_US"===r)return void this._handleContactUsButton(s);if("SUBSCRIBE"===r)return void t.lpUI.showModal("modal-global-subscribe");if("MY_ACCOUNT"===r)return void t.lpUI.showModal("modal-global-my-account");if("SHARE_POPUP"===r){let t=s.querySelector(".share-popup");t&&(t.style.display="flex"),e.stopPropagation();return}if("MODAL_"===r.substring(0,6)){let e=r.substring(6);t.lpUI.showModal(`modal-${e}`);return}if(a?.startsWith("mailto:")){let e=a.substring(7);i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Email",eventValue:e})}else if(a?.startsWith("tel:")){let e=a.substring(4);i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Phone",eventValue:e})}}async _handleSubmit(e){let t=e.closest("form"),{window:i}=this;return t?await i.luxuryPresence.contactForms.submitForm(t):null}_getVimeoSrc(e){if(!e||!e.includes("vimeo.com")||e.length>2e3)return null;let t=e.match(/(?:(?:www\.)?vimeo\.com\/(?:showcase\/\d+(?:\/video\/|\?video[=/])|channels\/(?:\w+\/)?|groups\/(?:[^/]*)\/videos\/|)|player\.vimeo\.com\/video\/)(\d+)(?:(?:\?.*&*h=|\/)+([\d,a-f]+))?/);if(!t)return null;let[,i,s]=t,r=`https://player.vimeo.com/video/${i}?`;return s&&(r+=`h=${s}&`),r+="autoplay=1"}_handleVideoButton(e){let{document:t}=this,i=e.closest("section"),{src:s}=e.dataset,r="";if(s&&(s.includes("youtube.com")||s.includes("youtu.be"))&&!s.includes("youtube.com/embed")){let e=s.match(/(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v=)
2906)|youtu.be\/)([a-zA-Z0-9_-]{6,11})/);e&&(r=e[1])}let a=this._getVimeoSrc(s);if(r?s=`https://youtube.com/embed/${r}?autoplay=1&controls=0`:a&&(s=a),!s||!i)return;let o=s.endsWith(".mp4")||s.endsWith(".webm")||s.includes("cloudinary.com"),n=` 2907 <div id="modal-${i.id}" class="modal visible"> 2908 <div class="modal-content"> 2909 <div class="lightbox-video"> 2910 <div class="video-player"> 2911 <div class="embed-container"> 2912 ${o?`<video controls autoplay src="${s}"></video>`:`<iframe frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="${s}"></iframe>`} 2913 </div> 2914 </div> 2915 </div> 2916 </div> 2917 <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button> 2918 </div> 2919 `;t.body.insertAdjacentHTML("beforeend",n);let l=t.getElementById(`modal-${i.id}`);l.querySelector(".close").addEventListener("click",()=>{l.remove()})}_handleContactUsButton(e){let{window:t,document:i}=this;i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"contact"}),t.lpUI.showModal("modal-global-contact-us",{scrollLock:!0})}_trackConversion(e){let{window:t,document:i}=this,{gtagConversionId:s,gtagConversionLabel:r,fbEventName:a}=e.dataset;if(s&&r){t.dataLayer&&t.dataLayer.length&&(t.dataLayer.some(e=>e.length&&"config"===e[0]&&e[1]===s)||i.sendGoogleTagManagerEvent("config",s));let e=`${s}/${r}`;i.sendGoogleTagManagerEvent("event","conversion",{send_to:e})}t.fbq&&a&&t.fbq("track",a,{})}}(x,window,document),C=new class extends s{constructor(e,t,i){super(e,t,i),this.validatedForms=[]}initialize(e={}){try{let{window:t,document:i}=this,{selector:s}=e,r=[];if(r=s?i.querySelectorAll(`${s} form[data-type="contact-form"]`):i.querySelectorAll('form[data-type="contact-form"]'),i.querySelectorAll('input[type="tel"]').length&&!t.libphonenumber&&t?.luxuryPresence?.libs){let{loadJs:e,jsLibsMap:i}=t.luxuryPresence.libs,{libphonenumber:s}=i;e(s.jsSrc,this.attachValidation.bind(this,r))}else this.attachValidation(r);this.validatedForms=this.validatedForms.concat(r)}catch(e){console.log(e)}}destroy(){this.validatedForms=[]}attachValidation(e){e.forEach(e=>{e.querySelectorAll("input, select, textarea").forEach(e=>{this.applyFieldValidation(e)})})}applyFieldValidation(e){"tel"===e.getAttribute("type")&&this._applyPhoneValidation(e)}_applyPhoneValidation(e){let{window:t}=this;if(t.libphonenumber){let i=t.libphonenumber.isValidPhoneNumber;e.addEventListener("keyup",function(){if(this.hasAttribute("required")||this.value.replace(/\s/g,"").length)try{let e=this.value;i(e,"US")?this.setCustomValidity(""):this.setCustomValidity("Please enter a valid phone number.")}catch(e){this.setCustomValidity("Please enter a valid phone number.")}else this.setCustomValidity("")})}}}(x,window,document),M=new class extends s{constructor(e,t,i){super(e,t,i),this.forms=[],this.homeValuationService=new l(e,t,i)}initialize(e={}){try{let{document:t}=this,{selector:i}=e,s=[];(s=i?t.querySelectorAll(`${i} form[data-type="contact-form"]`):t.querySelectorAll('form[data-type="contact-form"]')).forEach(e=>{this._attachSubmitHandler(e)}),this.forms=this.forms.concat(s)}catch(e){console.log(e)}}destroy(){this.forms=[]}submitForm(e){this._handleSubmit(null,e).catch(e=>console.error(e))}_attachValidation(e){let{window:t}=this;e.querySelectorAll("input, select, textarea").forEach(e=>{t.luxuryPresence.validation.applyFieldValidation(e)})}_attachSubmitHandler(e){e.addEventListener("submit",t=>this._handleSubmit(t,e))}_extractFormValues(e){let t=new FormData(e),i={},s=[],r=/^name(?:-\d+)?$/;return t.forEach((e,t)=>{if("string"==typeof e){let a=e.trim();r.test(t)&&a&&s.push(a);let o=i[t];i[t]=o?`${o} ${a}`:a}else i[t]=e}),s.length?i.name=s.join(" ").trim():!i.name&&i.firstName&&(i.name=i.firstName,i.lastName&&(i.name+=` ${i.lastName}`)),this._deriveNameParts(i)}_deriveNameParts(e){if(e.firstName||!e.name)return e;let t=e.name.indexOf(" ");return -1===t?{...e,firstName:e.name}:{...e,firstName:e.name.slice(0,t),lastName:e.lastName||e.name.slice(t+1).trim()}}_buildSubmissionData(e,t,i){let{window:s,config:r}=this,a=Object.keys(e).filter(e=>!u.includes(e)).reduce((t,i)=>(t[i]=e[i],t),{}),{pageId:o,companyId:n,websiteId:l,pageMeta:d}=r,c=s.localStorage.getItem("utm_vars")||"{}",h=s.localStorage.getItem("referrer")||"",p=this._getFormId(i);return{activity:{author_email:e.email,author_name:e.name,firstName:e.firstName||void 0,lastName:e.lastName||void 0,author_phone:e.phone||e.phoneNumber,activity_source:e.source||"CONTACT_INQUIRY",comments_attributes:[{text:e.message||void 0}],source_url:s.location.href,content:{...a,...JSON.parse(c)}},page:{pageId:o,companyId:n,websiteId:l,pageMeta:{...d,formId:p}},companyId:n,referrer:h,fields:t}}_handleSubmissionSuccess(e){let{window:t}=this,i=e.dataset.delay||2e3;e.classList.remove("loading"),e.classList.remove("error"),e.classList.add("success"),e.querySelectorAll(".success").forEach(e
2919=>e.classList.remove("hide")),e.dispatchEvent(new Event("formsubmitted")),setTimeout(()=>{t.lpUI.hideClosestModal(e),e.reset(),t.lpUI.sideMenuHide(),e.querySelectorAll(".success").forEach(e=>e.classList.add("hide")),e.classList.remove("success")},i)}async _handleSubmit(e,t){if(e&&e.preventDefault(),!t.classList.contains("loading")){this._hideSubmissionError(t),t.classList.remove("error"),t.classList.add("loading");try{let e=this._extractFormValues(t);if(e.middleName)return void t.classList.remove("loading");let i=this._getFields(t),s=this._buildSubmissionData(e,i,t);a(this.window,this.document);let r=await this._waitForLeadSubmit(e=>this._submitLeadRequest(s,e));if(this._sendGAEvent(s),r?.redirected)return void this._showRedirectPending(t);this._handleSubmissionSuccess(t)}catch(e){console.error("Form submission failed:",e),t.dispatchEvent(new Event("formsubmiterror")),t.classList.remove("loading"),t.classList.add("error"),e.userMessage?this._showSubmissionError(t,e.userMessage):this._showSubmissionError(t,"Something went wrong. Please try again.")}}}async _waitForLeadSubmit(e){let t,i={expired:!1,expiresAt:Date.now()+6e3},s=new Promise(e=>{t=setTimeout(()=>{i.expired=!0,e(null)},6e3)}),r=e(i).catch(e=>{if(o(i))return null;throw e});try{return await Promise.race([r,s])}finally{clearTimeout(t)}}_showRedirectPending(e){if(e.classList.add(c),e.querySelector(`.${c}__indicator`))return;let t=this.document.createElement("div");t.className=`${c}__indicator`,t.setAttribute("role","status"),t.setAttribute("aria-label","Loading"),t.innerHTML='<span class="lp-i lp-i--spinner lp-i--pulse" aria-hidden="true"></span>',e.appendChild(t)}_aliasUserWithEventBus(e){try{if(!this.window.eventBusProvider?.alias||!this.window.eventBusProvider?.isIdentified||!this.window.eventBusProvider?.getDistinctId||!this.window.LuxuryPresenceEventBus?.generateUUIDv5FromCompanyEmail)return;if(this.window.eventBusProvider.isIdentified())return void console.log("[EventBus] User already identified, skipping alias");let t=e.activity?.author_email,{companyId:i}=this.config;if(!t||!i)return void console.warn("[EventBus] Missing required data for user alias");let s=this.window.eventBusProvider.getDistinctId();if(!s)return void console.warn("[EventBus] No anonymous ID available for alias");let r=this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(i,t);this.window.eventBusProvider.alias({anonId:s,canonicalId:r}),console.log("[EventBus] User aliased with canonical ID")}catch(e){console.error("[EventBus] User alias failed:",e)}}async _submitLeadRequest(e,t){let{config:i}=this;return(this._aliasUserWithEventBus(e),i.myhomeDashboardEnabled&&(e.activity?.activity_source==="HOME_VALUATION"||e.activity?.activity_source==="HOME_VALUE"))?this.homeValuationService._submitHomeValuationRequest({...e,deadline:t}):fetch(`${i.leadIngesterUrl}/api/v1/leads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.ok?e.json():e.json().then(e=>{throw e}))}_sendGAEvent(e){let{document:t}=this,i={hitType:"event",eventCategory:"button",eventAction:"click"};switch(e.activity.activity_source){case"NEWSLETTER_SIGNUP":i.eventLabel="Newsletter",t.sendGoogleTagManagerEvent("event","newsletter_signup");break;case"HOME_SEARCH":i.eventLabel="HomeSearch",t.sendGoogleTagManagerEvent("event","home_search");break;case"HOME_VALUE":case"HOME_VALUATION":i.eventLabel="HomeValue",t.sendGoogleTagManagerEvent("event","home_valuation");break;case"EBOOK":i.eventLabel="Ebook",t.sendGoogleTagManagerEvent("event","ebook_download");break;default:i={hitType:"pageview",page:"/thank-you"},t.sendGoogleTagManagerEvent("event","contact_inquiry")}t.sendGoogleAnalyticsEvent(i)}_getFields(e){let t=e.querySelectorAll("input, select, textarea"),i={};return t.forEach(t=>{let{id:s,name:r,type:a}=t;if(r===d)return!0;let o="";if(s){let i=e.querySelector(`label[for='${s}']`);i?o=i.textContent.trim():t.placeholder&&(o=t.placeholder.trim())}i[r]={label:o,type:t.tagName,inputType:"INPUT"===t.tagName?a:"text"}}),i}_getFormId(e){let t=e.closest("section[id^='section-'], footer[id], .modal[id^='modal-']");return t?.id?this._cleanFormId(t.id):""}_cleanFormId(e){for(let t of["section-","modal-"])if(e.startsWith(t))return e.substring(t.length);return e}_showSubmissionError(e,t){let i=e.querySelector(".submission-error-message");i||((i=this.document.createElement("div")).className="submission-error-message",i.setAttribute("role","alert"),e.appendChild(i)),i.textContent=t||"Something went wrong. Please try again.",i.style.display="block"}_hideSubmissionError(e){let t=e.querySelector(".submission-error-message");t&&(t.style.display="none")}}(x,window,document),P=new class extends s{constructor(e,t,i){super(e,t,i),this.retries=3,this.callbacks=[],this.id=`__googleMapsScriptId${Date.now()}`,this._apiKey="",this.reset()}set apiKey(e){this._apiKey=e,this.config.setGoogleMapsAPIKey(e)}get apiKey(){return this._apiKey}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.failed=!1,this.errors=[],this.onerrorEvent=null}destroy(){this.reset()}async getMapApiKey(){if(this.apiKey)return this.apiKey;let e=this._hadPreviousFailure(),t=!1;for(let i=1;i<=3;i+=1){let s=e&&!t;try{let e=await fetch(this._getMapKeyUrl(i,s));if(t=t||s,this._setFailureFlag(!1),!e.ok)throw Error(`Failed to fetch API key: ${e.status}`);let r=await e.text();if(!r)return"";return this.apiKey=r,this.apiKey}catch(e){console.error(e),i<3&&await this._delay(300*2**(i-1))}}return this._setFailureFlag(!0),""}_getMapKeyUrl(e,t){let i=[];e>1&&i.push(`attempt=${e}`),t&&i.push("recovered_after_failure=1");let s=i.length?`?${i.join("&")}`:"";return`${this._getBaseUrl()}/api/v1/map${s}`}_hadPreviousFailure(){try{return"1"===this.window.sessionStorage.getItem(h)}catch(e){return!1}}_setFailureFlag(e){try{e?this.window.sessionStorage.setItem(h,"1"):this.window.sessionStorage.removeItem(h)}catch(e){}}_delay(e){return new Promise(t=>{this.window.setTimeout(t,e)})}async createUrl(){let e=await this.getMapApiKey();if(!e)throw Error("Refusing to load Google Maps without an API key");
2919let t="https://maps.googleapis.com/maps/api/js";return t+`?callback=__googleMapsCallback&key=${e}&libraries=places`}async setScript(){let e;if(this.document.getElementById(this.id))return void this.callback();try{e=await this.createUrl()}catch(e){console.error(e),this.failed=!0,this.loading=!1,this.onerrorEvent=e,this.callback();return}let t=this.document.createElement("script");t.id=this.id,t.type="text/javascript",t.src=e,t.onerror=this.loadErrorCallback.bind(this),t.defer=!0,t.async=!0,this.document.head.appendChild(t)}loadErrorCallback(e){if(this.errors.push(e),this.errors.length<=this.retries){let e=this.errors.length*2**this.errors.length;console.log(`Failed to load Google Maps script, retrying in ${e} ms.`),setTimeout(()=>{this.deleteScript(),this.setScript().catch(e=>console.error(e))},e)}else this.failed=!0,this.onerrorEvent=e,this.callback()}deleteScript(){let e=this.document.getElementById(this.id);e&&e.remove()}load(){return this.loadPromise()}loadPromise(){return new Promise((e,t)=>{this.loadCallback(i=>{i?t(i):e()})})}loadCallback(e){this.callbacks.push(e),this.execute()}setCallback(){this.window.__googleMapsCallback=this.callback.bind(this)}resetIfRetryingFailed(){this.failed&&this.reset()}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach(e=>{e(this.onerrorEvent)}),this.callbacks=[]}execute(){this.window.google&&this.window.google.maps&&this.window.google.maps.version&&this.callback(),this.resetIfRetryingFailed(),this.done?this.callback():this.loading||(this.loading=!0,this.setCallback(),this.setScript().catch(e=>console.error(e)))}_getBaseUrl(){let{isBuilder:e,websiteApiGatewayUrl:t}=this.config;return e?t:""}resizeStaticMapDimensions(e,t){if(e<=1024&&t<=1024)return{width:e,height:t};let i=Math.min(1024/e,1024/t);return{width:parseInt(e*i),height:parseInt(t*i)}}convertThemeToStaticApiUrl(e){return e.map(e=>{let t=e.stylers.reduce((e,t)=>{let i=t.visibility?`visibility:${t.visibility}`:"",s=t.color?`color:${t.color.replace("#","0x")}`:"",r=t.lightness?`lightness:${t.lightness}`:"";return`${e}|${i}${s}${r}`},""),i=e.elementType?`|element:${e.elementType}`:"";return`feature:${e.featureType}${i}${t}`})}async getMapApiSignedUrl(e){try{let t=await fetch(`${this._getBaseUrl()}/api/v1/map/signature?${e}`);if(!t.ok)throw Error("Failed to fetch signed URL");let{url:i}=await t.json();return i}catch(e){return console.error(e),""}}generateStaticMapUrl(e,t,i,s,r,a){let{width:o,height:n}=this.resizeStaticMapDimensions(r,a),l={center:`${e},${t}`,zoom:i,scale:2,size:`${o}x${n}`,key:this.apiKey};s&&(l.style=this.convertThemeToStaticApiUrl(s));let d=new URLSearchParams;return Object.entries(l).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>d.append(e,t.toString())):d.append(e,t.toString())}),`https://maps.googleapis.com/maps/api/staticmap?${d.toString()}`}async generateDigitallySignedStaticMapUrl({srcWidth:e,srcHeight:t,theme:i,...s}){let{width:r,height:a}=this.resizeStaticMapDimensions(e,t),o={...s,size:`${r}x${a}`};i&&(o.style=this.convertThemeToStaticApiUrl(i));let n=new URLSearchParams;Object.entries(o).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.append(e,t.toString())):n.append(e,t.toString())});let l=n.toString();try{return await this.getMapApiSignedUrl(l)}catch(e){return console.error(e),""}}}(x,window,document),U=new class extends s{destroy(){}updateQueryString(e,t,i){i||(i=this.window.location.href);let s=RegExp(`([?&])${e}=.*?(&|#|$)`,"i"),r="";null!=t&&(Array.isArray(t)?t.length&&(r=this.serializeArray(e,t)):"object"==typeof t?(s=RegExp(`([?&])${e}\\[[^=]*\\]=.*?(&|#|$)`,"i"),r=this.serializeObj(t,"",e)):r=`${e}=${encodeURIComponent(t)}`);let a=i.split("#"),o=a[0];if(s.test(i)){let e=o;for(r=r?`$1${r}$2`:"$1";s.test(e);)o=e.replace(s,r),e=e.replace(s,"$1");o=o.replace(/(&|\?)$/,"")}else if(r){let e=-1!==o.indexOf("?")?"&":"?";o+=`${e}${r}`}return void 0!==a[1]&&null!==a[1]&&(o+=`#${a[1]}`),o}getParameterByName(e,t){t||(t=this.window.location.href),e=e.replace(/[[\]]/g,"\\$&");let i=RegExp(`[?&]${e}(=([^&#]*)|&|#|$)`),s=Array.from(RegExp.prototype[Symbol.matchAll].call(i,t)).flat();if(!s.length){let i=RegExp(`[?&]${e}(\\[.*?\\])=(.*?)(?=&|#|$)`,"g");return s=Array.from(RegExp.prototype[Symbol.matchAll].call(i,t)).flat(),this._parseParamToObject(s,"advancedFilters"===e)}return s.length>3?s.reduce((e,t,i)=>((i+1)%3==0&&e.push(decodeURIComponent(t.replace(/\+/g," "))),e),[]):s[2]?decode
2919URIComponent(s[2].replace(/\+/g," ")):""}makePageKey(e){return e.replace("section-","").replace(/-/g,"")}makeParamKey(e,t){return e.global?e.urlKey:`${t}-${e.urlKey}`}deserializeParams(e,t){let i={},s=this.makePageKey(t),r=this.getParameterByName(s);return r&&(i.page=parseInt(r)),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,s),r=this.getParameterByName(t);if("int"===e.type)isFinite(r=parseInt(r))||(r=null);else if("bool"===e.type||"boolean"===e.type)r="true"===r||"false"!==r&&null;else if("json"===e.type)try{r=JSON.parse(r)}catch(e){}i[e.formKey||e.param]=r}),i}serializeParams(e,t,i){let s=this.window.location.href,r=this.makePageKey(t);return s=this.updateQueryString(r,i.page,s),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,r),a=i[e.formKey||e.param];"json"===e.type&&null!=a&&(a=JSON.stringify(a)),s=this.updateQueryString(t,a,s)}),s}formatSliderAtom(e,t=""){return t+(Number.isInteger(e)?e:e.toFixed(2))}formatSliderValue(e,t="",i=""){return e<1e3?this.formatSliderAtom(e,t):e<1e6?`${this.formatSliderAtom(e/1e3,t)}${i}K`:`${this.formatSliderAtom(e/1e6,t)}${i}M`}formatSliderPriceRange(e,t,i,s){return t.min===e&&0!==e?`${s.lowPrefix}${this.formatSliderValue(e,i," ")}`:t.max===e?`${this.formatSliderValue(e,i," ")}${s.highSuffix}`:`${this.formatSliderValue(e,i," ")}`}formatSliderAreaRange(e,t,i,s){return t.min===e&&0!==e?`${s.lowPrefix}${this.formatSliderValue(e)} ${i}`:t.max===e?`${this.formatSliderValue(e)}${s.highSuffix} ${i}`:`${this.formatSliderValue(e)} ${i}`}getSearchFormValues(e){let{queryElement:t,priceSliderElement:i,areaSliderElement:s,neighborhoodSelect:r}=e,a={};if(t&&(a.search=t.value||null),i){let e=i.value.split(";"),t=parseInt(i.dataset.min),s=parseInt(i.dataset.max),r=parseInt(e[0]),o=parseInt(e[1]);a.priceMin=r!==t?r:null,a.priceMax=o!==s?o:null}if(s){let e=s.value.split(";"),t=parseInt(s.dataset.min),i=parseInt(s.dataset.max),r=parseInt(e[0]),o=parseInt(e[1]);a.areaMin=r!==t?r:null,a.areaMax=o!==i?o:null}return r&&(a.neighborhoodId=r.value||null),a}serializeObj(e,t="",i=""){let s=[];for(let r in e)if(e.hasOwnProperty(r)){let a,o=e[r];if(i){let e=t?`[${t}][${r}]`:`[${r}]`;a=`${i}${e}`}else a=t?`${t}[${r}]`:r;null!==o&&Array.isArray(o)?o.length&&s.push(this.serializeArray(a,o)):null!==o&&"object"==typeof o?s.push(this.serializeObj(o,a)):s.push(`${a}=${encodeURIComponent(o)}`)}return s.join("&")}serializeArray(e,t,i=""){let s=[];return t.forEach(t=>{let r=i?`${i}${e}`:e;s.push(`${r}=${encodeURIComponent(t)}`)}),s.join("&")}_parseParamToObject(e,t=!1){if(!e.length)return null;let i={};for(let s=0;s<e.length;s++)if((s+1)%3==0){let r=decodeURIComponent(e[s].replace(/\+/g," ")),a=e[s-1];Object.assign(i,this._setObjectPath(a,r,i,t))}return i}_setObjectPath(e,t,i,s=!1){let r=e.split(/[\[\]]/).filter(Boolean),a=["in","nin","btw","ciin","cinin"],o={},n=o,l=((e,t,i)=>{if(!t)return;let s=(Array.isArray(t)?t:t.match(/([^[.\]])+/g)).reduce((e,t)=>e&&e[t],e);return void 0===s?i:s})(i,r.join("."));return r.forEach((e,o)=>{o===r.length-1?l?n[e]=Array.isArray(l)?[...l,t]:[l,t]:n[e]=s&&a.includes(e)?[t]:t:(n[e]=i[e]?i[e]:{},n=n[e])}),o}}(x,window,document),N=new class extends s{constructor(e,t,i){super(e,t,i),this._createLightbox=this._createLightbox.bind(this),this.expandSliders=[]}initialize(e={}){try{let{document:e}=this,t=e.querySelectorAll(".has-mobile-expand");t.forEach(e=>{this._addExpandButton(e)}),this.expandSliders=this.expandSliders.concat(t)}catch(e){console.log(e)}}destroy(){let{document:e}=this;e.querySelectorAll(".lp-expand-btn, .lp-expand-btn-wrapper").forEach(e=>e.remove()),this.expandSliders=[]}_addExpandButton(e){let{document:t}=this,i=e.closest("section[id]"),s=e.dataset.append,r=i.querySelector(".lp-expand-btn");if(!r)if((r=t.createElement("button")).className="lp-expand-btn",r.setAttribute("aria-label","Open a lightbox"),r.innerHTML='<span class="lp-i lp-i--expand-alt" aria-hidden="true"></span>',s){let e=i.querySelector(s);e&&e.appendChild(r)}else{let i=t.createElement("div");i.className="lp-expand-btn-wrapper",i.style.position="relative",i.appendChild(r),e.parentNode.insertBefore(i,e.nextSibling)}r.addEventListener("click",()=>{this._createLightbox({slider:e,section:i})})}_createLightbox({slider:e,section:t,initialIndex:i}){let{window:s,document:r}=this,a=`lightbox-for-${t?.id}`,o=s.$&&s.$.fn.slick,n=o&&e.slick,l="function"==typeof s.Splide,d=e.classList.contains("is-initialized")&&e.classList.contains("splide");function c(){let t=r.createElement("div");t.id=a,t.className="lp-lightbox",t.setAttribute("tabindex","-1"),t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.innerHTML=` 2920 <button class="lp-lightbox__close" aria-label="close modal"></button> 2921 <div class="lp-lightbox__content"> 2922 <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery"> 2923 <div class="splide__arrows"> 2924 <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button> 2925 <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button> 2926 </div> 2927 <div class="splide__track"> 2928 <ul class="splide__list"></ul> 2929 </div> 2930 </div> 2931 </div> 2932 `,"function"==typeof s.lpUI.requestScrollLock?s.lpUI.requestScrollLock(a):r.body.style.overflow="hidden",r.body.appendChild(t);let o=t.querySelector(".lp-lightbox__carousel"),n=o.querySelector(".splide__list");t.classList.add("show"),(d?e.querySelectorAll(".splide__slide:not(.splide__slide--clone) img"):e.querySelectorAll("img")).forEac
2932h(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let i=r.createElement("li");i.className="lp-lightbox__slide splide__slide",i.appendChild(t),n.appendChild(i)});let l=new s.Splide(o,{rewind:!0,arrows:!0,arrowPath:"",type:"loop",clones:1,pagination:!1,perPage:1,perMove:1});l.mount(),void 0!==i&&i>=0&&l.go(i),setTimeout(()=>{t.focus()},100);let c=e=>{if(!t.classList.contains("show"))return;let i=t.querySelector(".splide__arrow--prev"),s=t.querySelector(".splide__arrow--next"),r=t.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&i?(e.preventDefault(),i.click()):"ArrowRight"===e.key&&s?(e.preventDefault(),s.click()):"Escape"===e.key&&r&&(e.preventDefault(),r.click())};r.addEventListener("keydown",c),t.querySelector(".lp-lightbox__close").addEventListener("click",()=>{r.removeEventListener("keydown",c),t.classList.remove("show"),l&&l.destroy(),"function"==typeof s.lpUI.releaseScrollLock?s.lpUI.releaseScrollLock(a):r.body.style.overflow="",t.remove()})}if("function"==typeof s.lpUI.requestScrollLock?s.lpUI.requestScrollLock(a):r.body.style.overflow="hidden",o&&!d){let t,i,o,l,d;i={arrows:!0,dots:!1,infinite:!0,draggable:!0,prevArrow:'<button type="button" class="lp-lightbox-arrow--prev lp-lightbox-arrow" aria-label="Previous"></button>',nextArrow:'<button type="button" class="lp-lightbox-arrow--next lp-lightbox-arrow" aria-label="Next"></button>'},(o=r.createElement("div")).id=a,o.className="lp-lightbox",o.setAttribute("tabindex","-1"),o.setAttribute("role","dialog"),o.setAttribute("aria-modal","true"),o.innerHTML=` 2933 <button class="lp-lightbox__close" aria-label="close modal"></button> 2934 <div class="lp-lightbox__content"> 2935 <div class="lp-lightbox__carousel"></div> 2936 </div> 2937 `,r.body.appendChild(o),l=o.querySelector(".lp-lightbox__carousel"),o.classList.add("show"),n?(t=e.slick.$slides.find("img"),i.initialSlide=e.slick?.currentSlide||0,t.each(function(){s.$(".lp-lightbox__carousel").append(s.$(this).clone(!1).removeAttr("style").wrap('<div class="lp-lightbox__slide"></div>').parent())})):(t=e.querySelectorAll("img")).forEach(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let i=r.createElement("div");i.className="lp-lightbox__slide",i.appendChild(t),l.appendChild(i)}),s.$(l).slick(i),setTimeout(()=>{o.focus()},100),d=e=>{if(!o.classList.contains("show"))return;let t=o.querySelector(".lp-lightbox-arrow--prev"),i=o.querySelector(".lp-lightbox-arrow--next"),s=o.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&t?(e.preventDefault(),t.click()):"ArrowRight"===e.key&&i?(e.preventDefault(),i.click()):"Escape"===e.key&&s&&(e.preventDefault(),s.click())},r.addEventListener("keydown",d),o.querySelector(".lp-lightbox__close").addEventListener("click",()=>{r.removeEventListener("keydown",d),o.classList.remove("show");let t=l?.slick?s.$(l).slick("slickCurrentSlide"):0;l?.slick&&s.$(l).slick("unslick"),n&&s.$(e).slick("slickGoTo",t),"function"==typeof s.lpUI.releaseScrollLock?s.lpUI.releaseScrollLock(a):r.body.style.overflow="",o.remove()})}else l?c():(s.luxuryPresence.libs.loadCss(s.luxuryPresence.libs.jsLibsMap.splide.cssSrc),s.luxuryPresence.libs.loadJs(s.luxuryPresence.libs.jsLibsMap.splide.jsSrc,()=>{c(),s.luxuryPresence.libs.jsLibsMap.splide.isLoaded=!0}))}}(x,window,document),R=new class extends s{destroy(){this.window.divolte||(this.window.divolteLp=function(){(this.window.divolteLp.q=this.window.divolteLp.q||[]).push(arguments)})}initialize(e={}){let{divolteServiceUrl:t}=this.config;t&&!this.window.divolte&&this.loadScript()}loadScript(){let{divolteServiceUrl:e}=this.config,t=this.document.createElement("script");t.id="divolte-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/divolte.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){(this.window.divolteLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.divolteLp=this.divolteLp.bind(this)}divolteLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpEvent(e,t){if(!e.includes("pageView"))return void console.log(`${e} IS NOT SUPPORTED`);let{companyId:i,templateId:s,websiteId:r,pageId:a,shareId:o,pageMeta:n}=this.config;this.window.divolte.signal(e,Object.assign({companyId:i,templateId:s,websiteId:r,pageId:a,shareId:o,pageMeta:n},t))}sendLpPageView(){this.sendLpEvent("pageView",{})}}(x,window,document),B=new class extends s{constructor(e,t,i){super(e,t,i)}initialize(e={}){(void 0!==e.enabled?e.enabled:this.config.eventBus?.enabled)&&this.config.eventBus?.apiKey&&this.config.eventBus?.url&&this.loadScript()}loadScript(){let{eventBusUrl:e}=this.config,t=this.document.createElement("script");t.id="posthog-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/v2.8.0/event-bus-js.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){this.window.LuxuryPresenceEventBus&&(this.window.eventBusProvider=this.window.LuxuryPresenceEventBus.createEventBusProvider({apiKey:this.config.eventBus.apiKey,host:this.config.eventBus.url,defaultSource:"frontend://website-render-engine"}
2937)),(this.window.eventBusLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.eventBusLp=this.eventBusLp.bind(this)}destroy(){if(!this.window.eventBusProvider){this.window.eventBusLp=function(){(this.window.eventBusLp.q=this.window.eventBusLp.q||[]).push(arguments)};return}this.window.eventBusProvider.shutdown()}sendLpEvent(e,t){if("user.activity.page.viewed"!==e)return void console.log(`${e} IS NOT SUPPORTED`);if(!this.window.eventBusProvider)return;let{companyId:i}=this.config;try{this.window.eventBusProvider.capture(e,{company:i,data:{}})}catch(e){console.log("EventBus capture error:",e)}}eventBusLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpPageView(){this.sendLpEvent("user.activity.page.viewed",{})}}(x,window,document),D=new class extends s{constructor(e,t,i){super(e,t,i),this.successListeners=[],this._listenToMessages=this._listenToMessages.bind(this),this._listenToOneTapMessage=this._listenToOneTapMessage.bind(this)}initialize(e={}){try{e.googleSignOnEnabled&&!e.iframe&&this._renderGoogleOneTap(),this.document.querySelectorAll('div[data-signin-type="google-sign-in"]').forEach(e=>this._convertGoogleSignIn(e)),this.document.querySelectorAll('div[data-signin-type="facebook-sign-in"]').forEach(e=>this._convertFacebookSignIn(e))}catch(e){console.log(e)}}destroy(){this.successListeners.forEach(e=>{this.window.removeEventListener("message",this._listenToMessages),this.window.removeEventListener("message",this._listenToOneTapMessage),this.window.removeEventListener(p,this.window[e])})}_renderGoogleOneTap(){if(!this._isGoogleOneTapOnCooldown()){let e=this.document.createElement("div");google.accounts.id.initializeIntermediate({src:this._buildUrlAndCopyAttributes(e,e,"googleOneTap")}),this.window.localStorage.removeItem("googleOneTapExpiration"),this.window.addEventListener("message",this._listenToOneTapMessage)}}_listenToOneTapMessage(e){let t="show_intermediate_iframe",{buyerSellerServiceUrl:i}=this.config,{data:s,origin:r}=e,{type:a,height:o,event:n,source:l,token:d}=s;if(a===t||"hide_intermediate_iframe"===a){let e=this.document.getElementById("onetap_google_intermediate_iframe");e&&(e.style.height=o,e.style.display=a===t?"unset":"none")}r===i&&"GOOGLE_SIGN_ON"===l&&("success"===n?(this._setExpirationLsItem(864e5),this._handleQualifyingQuestionsModal(d)):"cancel"===n&&this._setExpirationLsItem(72e5))}_setExpirationLsItem(e){let t=new Date().getTime()+e;this.window.localStorage.setItem("googleOneTapExpiration",t)}_isGoogleOneTapOnCooldown(){return Number(this.window.localStorage.getItem("googleOneTapExpiration"))>new Date().getTime()}_convertGoogleSignIn(e){this._replaceWithIframe("googleSignIn",e)}_convertFacebookSignIn(e){this._replaceWithIframe("facebookSignIn",e)}_replaceWithIframe(e,t){this._attachSuccessCallback(t);let i=this.document.createElement("iframe");i.src=this._buildUrlAndCopyAttributes(t,i,e),i.dataset.isSocialOauthButton=!0,t.replaceWith(i)}_listenToMessages(e){let{buyerSellerServiceUrl:t}=this.config;if(e.origin===t&&"success"===e.data.event){let e=new Event(p);this.window.dispatchEvent(e),a(this.window,this.document),this.successListeners.forEach(t=>{this.window[t]?this.window[t](e):console.error(`Callback function ${t} not found on window object`)}),this.document.documentElement.classList.add("is-login-success")}}_attachSuccessCallback(e){this.window.addEventListener("message",this._listenToMessages);let t=e.dataset.onSuccessFunctionName;t&&this.successListeners.push(t)}_buildUrlAndCopyAttributes(e,t,i){let{buyerSellerServiceUrl:s,companyId:r,websiteId:a,pageId:o,pageMeta:n}=this.config,{location:l}=this.window,d=l.origin+l.pathname,c=new URL(`${s}/buttons/${i}`),u=this.window.localStorage.getItem("utm_vars"),h=this.window.localStorage.getItem("referrer");c.searchParams.append("companyId",r),c.searchParams.append("websiteId",a),c.searchParams.append("pageId",o),c.searchParams.append("sourceUrl",d),c.searchParams.append("pageMeta",JSON.stringify(n)),u&&c.searchParams.append("utm",u),h&&c.searchParams.append("referrer",h);let p=["data-size","data-width","data-text","data-button-type","data-shape","data-layout","data-max-rows","data-use-continue-as","data-type","data-theme","data-logo_alignment","data-locale"];
2937return Array.from(e.attributes).forEach(e=>{p.includes(e.nodeName)?c.searchParams.append(e.nodeName,e.nodeValue):t.setAttribute("id"===e.nodeName?"data-id":e.nodeName,e.nodeValue)}),c.toString()}_decodeToken(e){try{let t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),i=4-t.length%4,s=4===i?t:t+"=".repeat(i);return JSON.parse(atob(s))}catch(e){return null}}_handleQualifyingQuestionsModal(e){if(e&&this.window.luxuryPresence&&this.window.luxuryPresence.qualifyingQuestionsModal){let t=this._decodeToken(e);t&&t.email&&this.window.luxuryPresence.qualifyingQuestionsModal.showModal(t.email,"Google Sign On")}}}(x,window,document),O=new class extends s{constructor(e,t,i){super(e,t,i),this.showModal=this.showModal.bind(this),this.hasModalBeenSubmitted=this.hasModalBeenSubmitted.bind(this),this.modalId="qualifying-questions-modal",this.cookieKey="qualifyingQuestionsModalSubmitted",this.qualifyingQuestionsModalEnabled=!0,this.eventListeners=[],this.timeouts=[]}initialize(e={}){this.qualifyingQuestionsModalEnabled=e.qualifyingQuestionsModalEnabled??this.qualifyingQuestionsModalEnabled,this.qualifyingQuestionsModalEnabled&&this.attachModalCloseListeners()}destroy(){this.eventListeners.forEach(({element:e,event:t,handler:i})=>{e&&e.removeEventListener&&e.removeEventListener(t,i)}),this.timeouts.forEach(e=>{clearTimeout(e)}),this.restoreBodyScroll(),this.eventListeners=[],this.timeouts=[]}hasModalBeenSubmitted(){return"true"===this.getCookie(this.cookieKey)}setModalSubmittedCookie(){this.setCookie(this.cookieKey,"true",365)}showModal(e,t){!this.qualifyingQuestionsModalEnabled||this.hasModalBeenSubmitted()||(this.updateEmailValue(e),this.updateTriggerSourceValue(t),this.showModalElement())}getModalElement(){let e=this.document.getElementById(this.modalId);return e||console.error("Modal element not found:",this.modalId),e}updateEmailValue(e){let t=this.getModalElement();if(!t)return;let i=t.querySelector('input[name="email"]');i&&"string"==typeof e&&(i.value=e)}updateTriggerSourceValue(e){let t=this.getModalElement();if(!t)return;let i=t.querySelector(`#${this.modalId}-triggerSource`);i&&"string"==typeof e&&(i.value=e)}showModalElement(){let e=this.getModalElement();e&&(e.style.display="flex",this.blockBodyScroll())}getCookie(e){let t=`; ${this.document.cookie}`.split(`; ${e}=`);return 2===t.length?decodeURIComponent(t.pop().split(";").shift()):null}setCookie(e,t,i){let s="";if(i){let e=new Date;e.setTime(e.getTime()+864e5*i),s=`; expires=${e.toUTCString()}`}let r="; path=/; SameSite=Lax";this.window&&this.window.location&&"https:"===this.window.location.protocol&&(r+="; Secure"),this.document.cookie=`${e}=${encodeURIComponent(t||"")}${s}${r}`}blockBodyScroll(){this._prevOverflow=this.document.body.style.overflow,this.document.body.style.overflow="hidden"}restoreBodyScroll(){this.document.body.style.overflow=this._prevOverflow||"",this._prevOverflow=null}attachModalCloseListeners(){let e=this.getModalElement();if(!e)return;let t=this.document.getElementById(`${this.modalId}-form`);if(t){let i=()=>{this.setModalSubmittedCookie();let t=setTimeout(()=>{e.style.display="none",this.restoreBodyScroll()},100);this.timeouts.push(t)};t.addEventListener("formsubmitted",i),this.eventListeners.push({element:t,event:"formsubmitted",handler:i})}let i=e.querySelector('[data-dismiss="modal"]');if(i){let t=()=>{e.style.display="none",this.restoreBodyScroll()};i.addEventListener("click",t),this.eventListeners.push({element:i,event:"click",handler:t})}let s=t=>{(t.target===e||t.target.id===this.modalId)&&(e.style.display="none",this.restoreBodyScroll())};e.addEventListener("click",s),this.eventListeners.push({element:e,event:"click",handler:s})}}(x,window,document),q=new class extends s{constructor(e,t,i){super(e,t,i),this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null,this.validationCacheDuration=3e5}destroy(){this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null}async validateSession(e={}){let{useCache:t=!0}=e;if(t&&null!==this.lastValidationResult&&this.lastValidationTime&&Date.now()-this.lastValidationTime<this.validationCacheDuration)return this.lastValidationResult;if(this.isValidating)return null!==this.lastValidationResult&&this.lastValidationResult;this.isValidating=!0;let i=` 2938 query { 2939 validSession { 2940 success 2941 } 2942 } 2943 `;try{let e=await this.window.fetch("/graphql",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({query:i})});if(!e.ok)return console.error("SessionController: HTTP error during session validation",e.status),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let t=await e.json();if(t.errors)return this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let s=t.data?.validSession?.success===!0;return this.lastValidationResult=s,this.lastValidationTime=Date.now(),s}catch(e){return console.error("SessionController: Error validating session",e),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1}finally{this.isValidating=!1}}clearCache(){this.lastValidationResult=null,this.lastValidationTime=null}}(x,window,document),V=new class extends s{constructor(e,t,i){super(e,t,i),this.consentListener=null,this.eventName=null}destroy(){this.consentListener&&this.eventName&&(this.document.removeEventListener(this.eventName,this.consentListener),this.consentListener=null)}loadScript(){this.document.getElementById("posthog-script")||this.window.luxuryPresence.eventBus.initialize({enabled:this.config.eventBus?.enabled}),this.document.getElementById("divolte-script")||this.window.luxuryPresence.divolte.initialize({})}removeScripts(){this.window.luxuryPresence?.eventBus?.destroy?.(),this.window.luxuryPresence?.divolte?.destroy?.(),this.document.getElementById("posthog-script")?.remove(),this.document.getElementById("divolte-script")?.remove()}async initialize(e={}){let t=m[e.provider];if(!t)return;this.eventName=t.eventName;let i=await this.window.luxuryPresence.session.validateSession();(t.hasAnalyticsConsent(this.document,this.window)||i)&&this.loadScript(),this.consentListener||(this.consentListener=e=>{t.isAnalyticsAccepted(e.detail)?this.loadScript():this.removeScripts()},this.document.addEventListener(t.eventName,this.consentListener))}}(x,window,document),F=new class extends s{destroy(){}transformVariables(e,t){let i;return y(i={...t},["testimonialId"]),f(i,["testimonialId"],"testimonialIds"),0===i.limit&&delete i.limit,(void 0===i.limit||null===i.limit)&&(("testimonials"===e||"testimonialsCount"===e)&&(i.limit=50),("agents"===e||"agentsCount"===e||"neighborhoods"===e||"neighborhoodsCount"===e||"posts"===e||"postsCount"===e||"pressReleases"===e||"pressReleasesCount"===e)&&(i.limit=100)),!function(e){let{sortDir:t}=e;"string"==typeof t&&t.includes("_")&&(e.sortDir=t.replace(/_/g," "))}(i),!function(e,t){switch(t){case"agent":break;case"testimonials":case"testimonialsCount":y(e,["testimonialIds"]);break;case"agents":case"agentsCount":y(e,["officeId","teamId","developmentId","agentIds","tags"]),f(e,["officeId"],"officeIds"),f(e,["teamId"],"teamIds"),f(e,["developmentId"],"developmentIds");break;case"neighborhoods":case"neighborhoodsCount":y(e,["neighborhoodIds","neighborhoodId"]),f(e,["neighborhoodIds","neighborhoodId"],"neighborhoodId");break;case"developments":case"developmentsCount":y(e,["agentId","neighborhoodIds","neighborhoodId","developmentIds","tag"]),e.agentId&&Array.isArray(e.agentId)&&([e.agentId]=e.agentId),f(e,["neighborhoodIds","neighborhoodId"],"neighborhoodIds");break;case"properties":case"propertiesCount":y(e,["statusIds","statusId","propertyTypeIds","propertyTypeId","propertyId","networkId","propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","
2943spaceTypeIds","addressState","addressCity","backfillProviders","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"]),["propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","spaceTypeIds","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"].forEach(t=>f(e,[t],t)),f(e,["statusIds","statusId"],"propertyStatusId"),e.excludeStatusId&&(e.excludePropertyStatusId=e.excludeStatusId,delete e.excludeStatusId),f(e,["propertyTypeIds","propertyTypeId"],"propertyTypeId"),f(e,["networkId"],"networkId"),f(e,["propertyId"],"propertyIds"),["salesPriceGTE","salesPriceLTE","leasePriceGTE","leasePriceLTE","livingSpaceSizeGTE","livingSpaceSizeLTE"].forEach(t=>{null!=e[t]&&(e[t]=Math.trunc(Number(e[t])))});break;case"posts":case"postsCount":y(e,["categoryIds","categoryId","neighborhoodId"]),void 0!==e.order&&(e.sort=e.order,delete e.order),f(e,["categoryIds","categoryId"],"categoryId");break;case"postCategories":y(e,["categoryId","categoryIds"]),void 0!==e.order&&(e.sort=e.order,delete e.order),f(e,["categoryIds","categoryId"],"categoryId");break;case"pressReleases":case"pressReleasesCount":y(e,["pressReleaseId","categories","propertyId","developmentId","agentId","teamId"]),f(e,["pressReleaseId"],"pressReleaseIds");break;case"offices":case"officesCount":y(e,["officeId","officeIds","tags"]),f(e,["officeId"],"officeIds");break;case"teams":case"teamsCount":y(e,["teamId","teamIds"]),f(e,["teamId"],"teamIds");break;case"pois":y(e,["categories"]),Array.isArray(e.categories)&&(e.categories=e.categories.map(e=>e.toLowerCase())),"string"==typeof e.sortBy&&(e.sortBy=e.sortBy.toLowerCase())}}(i,e),i}transformResponse(e,t){return"agent"===e?I(t,w):"agents"===e||"agentsCount"===e?A(t,v):"neighborhood"===e?I(t,b):"neighborhoods"===e||"neighborhoodsCount"===e?A(t,S):"development"===e?I(t,_):"developments"===e||"developmentsCount"===e?A(t,E):t}transformPage(e){return{items:e&&e.items||[],count:e&&e.total||0}}applyPropertyDisclaimers(t,i){if(!Array.isArray(t)||!t.length||!i||!i.length)return Promise.resolve(t);let s=t.filter(e=>e&&e.vendorId&&e.mlsId).map(e=>({feedId:e.vendorId,listingId:e.mlsId,officeName:e.officeName??null,agentMlsId:e.mlsAgentId??null,officeMlsId:e.mlsOfficeId??null,attributionContact:e.attributionContact??null,status:e.status??null,syncedAt:e.syncedAt??null})),r=e=>{let s={};return(e||[]).forEach(e=>{s[`${e.feedId}:${e.listingId}`]=e}),t.map(e=>{let t=e&&s[`${e.vendorId}:${e.mlsId}`],r={};return i.forEach(e=>{let i=t?t[$[e]]:void 0;r[e]=i??null}),{...e,...r}})};if(!s.length)return Promise.resolve(r([]));let{websiteId:a}=this.config;return this.window.superagent?this.window.superagent.post(`${this.window.luxuryPresence.defaults.routerUrl}/graphql`).withCredentials().send({query:e(L),variables:{input:{websiteId:"string"==typeof a?a:void 0,properties:s}}}).then(e=>r(e.body&&e.body.data&&e.body.data.propertyDisclaimers),e=>(console.warn("[RouterApiController] propertyDisclaimers lookup failed:",e),r([]))):Promise.resolve(r([]))}}(x,window,document);function j(e,t){if(window.luxuryPresence[e])try{window.luxuryPresence[e].destroy()}catch(e){console.log(e)}window.luxuryPresence[e]=t}j("config",x),j("modals",T),j("buttons",k),j("validation",C),j("contactForms",M),j("mapApiLoader",P),j("pagination",U),j("expandSliders",N),j("divolte",R),j("eventBus",B),j("oauth",D),j("qualifyingQuestionsModal",O),j("session",q),j("consent",V),j("redirects",{checkHstRedirect:function(e){let{config:t}=window.luxuryPresence;return!t.hvStepTwoCaptureEnabled&&!!t.hstValuationRedirectEnabled&&!!t.mlsEnabled&&!!t.myhomeDashboardEnabled&&(window.location.href=`/home-search/home-valuation?address=${encodeURIComponent(e)}`,!0)},destroy(){}}),j("routerApi",F),window.luxuryPresence.formatSliderPriceRange=U.formatSliderPriceRange.bind(U),window.luxuryPresence.formatSliderAreaRange=U.formatSliderAreaRange.bind(U),window.luxuryPresence.getSearchFormValues=U.getSearchFormValues.bind(U),window.luxuryPresence.handlebarsHelpersFactory=function(i){return e(t)(i,{isEqual:(e,t)=>e==t})}})(); 2944//# sourceMappingURL=lp-sdk.js.map 2945 2946 </script>
2946 2947 2948
2948<script> 2949 var lpGlobalInitialized = false; 2950 2951 function lpGlobalInit () { 2952 if (lpGlobalInitialized) { 2953 return; 2954 } 2955 lpGlobalInitialized = true; 2956 // Initialize wow animation plugin only according to turbolinks 2957 var wow; 2958 if (window.WOW) { 2959 wow = new WOW({ 2960 animateClass: 'animated', 2961 offset: wowOffset, 2962 live: false, 2963 callback: function(box) {} 2964 }); 2965 } 2966 // Initialize handlebar helpers only once 2967 function handlebarsInit() { 2968 if (!window.Handlebars) { 2969 return; 2970 } 2971 HandlebarsIntl.registerWith(Handlebars); 2972 Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars)); 2973 } 2974 2975 handlebarsInit(); 2976 2977 var modalContentUrl = "/modals.html"; 2978 const modalsContainer = document.getElementById('modals'); 2979 if (modalsContainer) { 2980 fetch(modalContentUrl).then(function(res) { 2981 if (!res.ok) { 2982 throw new Error(`HTTP error! Status: ${res.status}`); 2983 } 2984 return res.text(); 2985 }).then(function(resultText) { 2986 modalsContainer.innerHTML = resultText; 2987 2988 // now we need to execute all script elements 2989 Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) { 2990 const script = document.createElement("script"); 2991 script.text = s.innerHTML; 2992 Array.from(s.attributes).forEach(function (a) { 2993 script.setAttribute(a.name, a.value); 2994 }) 2995 s.parentNode.replaceChild(script, s); 2996 }); 2997 2998 try { 2999 window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes); 3000 window.luxuryPresence.contactForms.initialize({ selector: '#modals' }); 3001 window.luxuryPresence.validation.initialize({ selector: '#modals' }); 3002 window.luxuryPresence.oauth.initialize({ 3003 googleSignOnEnabled: true, 3004 iframe: false }); 3005 } catch (e) { 3006 console.log(e); 3007 } 3008 document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => { 3009 closeModalBtn.addEventListener('click', function() { 3010 window.lpUI.hideClosestModal(closeModalBtn); 3011 }); 3012 }); 3013 }).catch((e) => console.log(e)); 3014 } 3015 /* Initialize Luxury Presence SDK */ 3016 try { 3017 window.luxuryPresence.config.setCompany("f62f900d-59fc-4354-b573-bcc1e7da46a2", {}); 3018 window.luxuryPresence.config.setWebsite("a1e3c847-d1ba-4058-a24c-e7ce6eef6e17", { 3019 myhomeDashboardEnabled: true, 3020 mlsEnabled: true, 3021 hstValuationRedirectEnabled: true, 3022 hvStepTwoCaptureEnabled: false 3023 }); 3024 const url = new URL(window.location.href); 3025 const shareId = url.searchParams.get('shareId'); 3026 window.luxuryPresence.config.setPage("40d5caca-148e-443e-9b67-5cdc022265da", { 3027 sourceResource: "", 3028 pageElementId: "", 3029 pageQueryVariables: {}, 3030 shareId: "", 3031 }); 3032 window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {}); 3033 window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {}); 3034 window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {}); 3035 window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {}); 3036 window.luxuryPresence.config.setEventBus({ 3037 enabled: true, 3038 apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr", 3039 url: "https://p.luxurypresence.com", 3040 }); 3041 window.luxuryPresence.config.setTemplateId("dbfbedc7-c7e2-4812-86ee-0ee198862c21", {}); 3042 window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {}); 3043 window.luxuryPresence.buttons.initialize({}); 3044 window.luxuryPresence.consent.initialize({ provider: 'lp-consent' }); 3045 window.luxuryPresence.contactForms.initialize({}); 3046 window.luxuryPresence.validation.initialize({}); 3047 window.luxuryPresence.expandSliders.initialize({}); 3048 window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false }); 3049 window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true }); 3050 } catch (e) { 3051 console.log(e); 3052 } 3053 3054 /* Inject Section Specific Javascript */ 3055 try { 3056(function init(sectionDomId) { 3057 const disclaimerLabel = document.querySelector('#' + sectionDomId + ' .lp-tcr-content'); 3058 if (disclaimerLabel) { 3059 const input = disclaimerLabel.querySelector('input'); 3060 if (input) { 3061 input.setAttribute('id', `${sectionDomId}-termsAccepted`); 3062 input.value = 'true'; 3063 const label = document.createElement('label'); 3064 label.setAttribute('for', `${sectionDomId}-termsAccepted`); 3065 label.classList.add('lp-visually-hidden'); 3066 label.textContent = 'Opt in/Disclaimer Consent:'; 3067 disclaimerLabel.prepend(label); 3068 } 3069 } 3070 function setHttp(link) { 3071 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 3072 link = 'https://' + link; 3073 } 3074 return link; 3075 } 3076 const socialLinks = document.querySelectorAll('#' + sectionDomId + ' .socials__link, #' + sectionDomId + ' .lp-socials__link'); 3077 socialLinks.forEach(linkElement => { 3078 const href = linkElement.getAttribute('href'); 3079 if (href) { 3080 linkElement.setAttribute('href', setHttp(href)); 3081 } 3082 }); 3083 const redirectLink = $('#' + sectionDomId + ' .redirect-link'); 3084 if (redirectLink.length) { 3085 const rawHref = setHttp(redirectLink.attr('href')); 3086 let formEvent; 3087 if (rawHref) { 3088 formEvent = redirectLink.data('redirect') ? 'formsubmitted' : 'reset'; 3089 $('#' + sectionDomId + ' .contact-form').find('form').on(formEvent, function () { 3090 redirectLink.attr('href', rawHref); 3091 redirectLink[0].click(); 3092 }); 3093 } 3094 } 3095})('modal-global-contact-us'); 3096} catch(e) { 3097console.log(e); 3098} 3099 3100 try { 3101(function init(sectionDomId) { 3102 const $section = $('#' + sectionDomId); 3103 const $hamburger = $section.find('.hamburger-component'); 3104 function onSideMenuShow() { 3105 if (!$hamburger.hasClass('active')) { 3106 $hamburger.addClass('active'); 3107 } 3108 } 3109 function onSideMenuHide() { 3110 $hamburger.removeClass('active'); 3111 } 3112 const $window = $(window); 3113 $window.on('lpui-sidemenu-show.lpui-auto-clean', onSideMenuShow); 3114 $window.on('lpui-sidemenu-hide.lpui-auto-clean', onSideMenuHide); 3115 const $subContainers = $section.find('.navigation__item.sub-nav-container'); 3116 $subContainers.hover(function () { 3117 $(this).find('.sub-nav').addClass('visible'); 3118 }, function () { 3119 $(this).find('.sub-nav').removeClass('visible'); 3120 }); 3121 $window.on('click.lpui-auto-clean', function () { 3122 $('.sub-nav-container.visible-dropdown').removeClass('visible-dropdown'); 3123 }); 3124 let fixedWidth = 0; 3125 const rightPad = 20; 3126 function fixSubsPosition() { 3127 const wWidth = window.innerWidth; 3128 if (innerWidth === fixedWidth) { 3129 return; 3130 } 3131 fixedWidth = wWidth; 3132 $subContainers.each(function () { 3133 const $sub = $(this).find('.sub-nav'); 3134 $sub[0].style.right = '';
3135 const sRect = $sub[0].getBoundingClientRect(); 3136 const sRight = sRect.left + sRect.width; 3137 if (sRight > wWidth - rightPad) { 3138 const parentRect = $sub[0].offsetParent.getBoundingClientRect(); 3139 const parentRight = parentRect.left + parentRect.width; 3140 $sub[0].style.right = `${parentRight - wWidth + rightPad}px`; 3141 } 3142 }); 3143 } 3144 var debouncer; 3145 $window.on('resize.lpui-auto-clean', function () { 3146 clearTimeout(debouncer); 3147 debouncer = setTimeout(fixSubsPosition, 500); 3148 }); 3149 fixSubsPosition(); 3150 if ($('.property-intro').length || $('.property-intro-2').length) { 3151 $('nav').addClass('dark-opening'); 3152 $("#global-navbar").css({ 3153 "background-color": "rgb(26, 26, 26)", 3154 "color": "rgb(255, 255, 255)" 3155 }); 3156 } 3157 function initAutoTruncateMenu() { 3158 const $navbar = $section.find('.navbar'); 3159 const $navList = $section.find('.navigation > ul'); 3160 if (!$navbar.length || !$navList.length) { 3161 return; 3162 } 3163 const $logo = $section.find('.logo'); 3164 const $buttonsWrapper = $section.find('.buttons-wrapper'); 3165 const $allItems = $navList.children('.navigation__item'); 3166 const $phoneItem = $allItems.filter(function () { 3167 return $(this).find('a[href^="tel:"]').length > 0; 3168 }); 3169 const $menuItems = $allItems.not($phoneItem); 3170 if (!$menuItems.length) { 3171 return; 3172 } 3173 const buffer = 8; 3174 function measureFixedWidth() { 3175 let width = buffer; 3176 if ($logo.length) { 3177 width += $logo.outerWidth(true) || 0; 3178 } 3179 if ($buttonsWrapper.length) { 3180 width += $buttonsWrapper.outerWidth(true) || 0; 3181 } 3182 if ($phoneItem.length) { 3183 width += $phoneItem.outerWidth(true) || 0; 3184 } 3185 return width; 3186 } 3187 function truncateMenu() { 3188 if (!$navList.is(':visible')) { 3189 return; 3190 } 3191 $menuItems.css('display', ''); 3192 const availableWidth = $navbar[0].getBoundingClientRect().width - measureFixedWidth(); 3193 let widthSoFar = 0; 3194 let overflowed = false; 3195 $menuItems.each(function () { 3196 const $item = $(this); 3197 if (overflowed) { 3198 $item.css('display', 'none'); 3199 return; 3200 } 3201 widthSoFar += $item.outerWidth(true); 3202 if (widthSoFar > availableWidth) { 3203 $item.css('display', 'none'); 3204 overflowed = true; 3205 } 3206 }); 3207 } 3208 let truncateFrame; 3209 function scheduleTruncate() { 3210 if (truncateFrame) { 3211 return; 3212 } 3213 truncateFrame = window.requestAnimationFrame(function () { 3214 truncateFrame = null; 3215 truncateMenu(); 3216 }); 3217 } 3218 scheduleTruncate(); 3219 if (window.ResizeObserver) { 3220 const resizeObserver = new ResizeObserver(scheduleTruncate); 3221 resizeObserver.observe($navbar[0]); 3222 } else { 3223 $(window).on('resize.lpui-auto-truncate', scheduleTruncate); 3224 } 3225 $section.find('img').on('load.lpui-auto-truncate', scheduleTruncate); 3226 $(window).on('load.lpui-auto-truncate', scheduleTruncate); 3227 if (document.fonts && document.fonts.ready) { 3228 document.fonts.ready.then(scheduleTruncate); 3229 } 3230 } 3231 initAutoTruncateMenu(); 3232})('global-navbar'); 3233} catch(e) { 3234console.log(e); 3235} 3236 try { 3237(function init(sectionDomId, options) { 3238 var elementSelector = options.elementSelector || 'nav'; 3239 var element = document.querySelector(elementSelector); 3240 var sections = document.querySelectorAll('body > section'); 3241 var subNavContainers = element.querySelectorAll('.sub-nav'); 3242 var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor; 3243 var backgroundColorScroll = options.backgroundColorScroll || '#191919'; 3244 var fontColor = options.fontColor || '#fff'; 3245 var fontColorScroll = options.fontColorScroll || '#000'; 3246 var didScroll = false; 3247 var lastScrollTop = 0; 3248 var delta = 5; 3249 3250 // eslint-disable-next-line sonarjs/no-collapsible-if 3251 if (wow) { 3252 // Wowjs might not trigger for position fixed elements 3253 if (window.scrollY > 0) { 3254 element.querySelectorAll('.wow').forEach(el => wow.show(el)); 3255 } 3256 } 3257 function adjustNavPinState() { 3258 // Remove 'visible' class from all subNavContainers 3259 for (let i = 0; i < subNavContainers.length; i++) { 3260 subNavContainers[i].classList.remove('visible'); 3261 } 3262 if (window.scrollY > 0) { 3263 element.style.backgroundColor = backgroundColorScroll; 3264 element.style.color = fontColorScroll; 3265 element.classList.add('scroll'); 3266 } else {
3267 element.style.backgroundColor = initialBackgroundColor; 3268 element.style.color = fontColor; 3269 element.classList.remove('scroll'); 3270 } 3271 } 3272 adjustNavPinState(); 3273 function onScroll() { 3274 didScroll = true; 3275 } 3276 window.addEventListener('scroll', onScroll); 3277 3278 // eslint-disable-next-line 3279 var debounceInterval = setInterval(() => { 3280 if (didScroll) { 3281 // eslint-disable-next-line 3282 hasScrolled(); 3283 didScroll = false; 3284 } 3285 }, 250); 3286 function hasScrolled() { 3287 adjustNavPinState(); 3288 // eslint-disable-next-line 3289 var navbarHeight = element.offsetHeight; 3290 // eslint-disable-next-line 3291 var st = window.scrollY; 3292 3293 // Make sure they scroll more than delta 3294 if (Math.abs(lastScrollTop - st) <= delta) { 3295 return; 3296 } 3297 if (st > lastScrollTop && st > navbarHeight) { 3298 // Scroll Down 3299 element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`; 3300 document.documentElement.style.setProperty('--global-header-height', '0px'); 3301 3302 // Some sections "follow" the navbar with class sticky (i.e. Producer search) 3303 sections.forEach(section => { 3304 if (section.classList.contains('sticky')) { 3305 section.style.top = '0px'; 3306 } 3307 }); 3308 } else { 3309 // Scroll Up 3310 // eslint-disable-next-line 3311 if (st + window.innerHeight < document.documentElement.scrollHeight) { 3312 element.style.transform = `translateY(0) scaleY(1)`; 3313 document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`); 3314 sections.forEach(section => { 3315 if (section.classList.contains('sticky')) { 3316 section.style.top = `${navbarHeight}px`; 3317 } 3318 }); 3319 } 3320 } 3321 lastScrollTop = st; 3322 } 3323})('NAVBAR', JSON.parse("{\"fontColor\":\"#fff\",\"elementSelector\":\"nav\",\"fontColorScroll\":\"#fff\",\"initialFontColor\":\"#fff\",\"backgroundColorScroll\":\"#1a1a1a\",\"initialBackgroundColor\":\"rgba(0,0,0,0)\"}")); 3324} catch(e) { 3325console.log(e); 3326} 3327 try { 3328(function init(sectionDomId) { 3329 var sidemenu = $('#' + sectionDomId); 3330 sidemenu.on('lpui-sidemenu-show.lpui-auto-clean', function () { 3331 window.lpUI.requestScrollLock(sectionDomId); 3332 }); 3333 $(window).on('lpui-sidemenu-hide.lpui-auto-clean', function () { 3334 window.lpUI.releaseScrollLock(sectionDomId); 3335 }); 3336 $(window).click(function (e) { 3337 let targetContactForm = $(e.target).closest('#modal-global-contact-us').length; 3338 let targetSideMenu = $(e.target).closest('.sidemenu').length; 3339 let targetContactItem = $(e.target).closest('[data-type="CONTACT_US"]').length; 3340 let targetHamburger = $(e.target).closest('.hamburger-component').length; 3341 if (!(targetContactForm || targetSideMenu || targetContactItem || targetHamburger)) { 3342 $('body').removeClass('locked'); 3343 $('.hamburger').removeClass('active'); 3344 $('.sidemenu').removeClass('visible'); 3345 $('#modal-global-contact-us').removeClass('visible'); 3346 } 3347 }); 3348})('global-sidemenu'); 3349} catch(e) { 3350console.log(e); 3351} 3352 3353 try { 3354(function init(footerId) { 3355 var textContent = $(".text_content_wrap p").text().trim().length; 3356 const socialLinks = $(`#${footerId} .lp-socials__link`); 3357 if (textContent < 1) { 3358 $(".text_content_wrap").remove(); 3359 $(".second_text_footer").css({ 3360 'margin-bottom': 0 3361 }); 3362 } 3363 if (socialLinks.length > 0) { 3364 socialLinks.attr('data-wow-offset', '10'); 3365 } 3366 if ($(window).width() > 1280) { 3367 let footer = document.querySelector("#" + footerId); 3368 let copyrightElem = footer.querySelector(".copy_zone"); 3369 if (copyrightElem) { 3370 copyrightElem.style.whiteSpace = "nowrap"; 3371 let nowrapElemWidth = copyrightElem.clientWidth; 3372 copyrightElem.style.whiteSpace = ""; 3373 let normalElemWidth = copyrightElem.clientWidth; 3374 if (nowrapElemWidth > normalElemWidth) { 3375 footer.querySelector(".form-col--socials").classList.add("form-col--xl-auto"); 3376 } 3377 } 3378 } 3379 const form = $("#" + footerId).find("form"); 3380 const redirectLink = $('#' + footerId + ' .redirect-link'); 3381 form.on("reset", function () { 3382 redirectPage(redirectLink); 3383 }); 3384 function redirectPage(link) { 3385 if (link.length) { 3386 const rawHref = link.attr('href'); 3387 link.attr('href', setHttp(rawHref)); 3388 link[0].click(); 3389 } 3390 } 3391 function setHttp(link) { 3392 if (link.search(/^http[s]?\:\/\/|\//) == -1) { 3393 link = 'http://' + link; 3394 } 3395 return link; 3396 } 3397})('global-footer'); 3398} catch(e) { 3399console.log(e); 3400} 3401 3402 try { 3403(function init(options) {})('global-mobile-contact'); 3404} catch(e) { 3405console.log(e); 3406} 3407 3408 try { 3409(function init(sectionDomId) { 3410 var $section = $('#' + sectionDomId); 3411 var $carousel = $section.find('.collection'); 3412 var currentPreTitle = ''; 3413 var currentTitle = ''; 3414 const $videoWrap = $section.find('.full-screen-video-component > .video-wrapper'); 3415 if ($videoWrap.length) { 3416 const $video = $videoWrap.find('video'); 3417 $video.each(function () { 3418 var v = this; 3419 if (v.readyState > 0) { 3420 $videoWrap.addClass('playing'); 3421 } else { 3422 v.addEventListener('canplay', function () { 3423 $videoWrap.addClass('playing'); 3424 }, { 3425 once: true 3426 }); 3427 } 3428 }); 3429 } 3430 $('#' + sectionDomId + ' .collection').slick({ 3431 dots: $('#' + sectionDomId + ' .collection').find('.item').length > 1 ? true : false,
3432 arrows: false, 3433 speed: 0, 3434 fade: true, 3435 autoplay: true, 3436 autoplaySpeed: 6000, 3437 pauseOnHover: false, 3438 pauseOnFocus: false 3439 }); 3440 $carousel.on('beforeChange', function () { 3441 currentPreTitle = $(this).find('.slick-current').find('.lp-text--pretitle').text(); 3442 currentTitle = $(this).find('.slick-current').find('.lp-h1').text(); 3443 $(this).find('.slick-current').find('.lp-h1').addClass('animation'); 3444 $(this).find('.slick-current').find('.lp-text--pretitle').addClass('animation'); 3445 }); 3446 $carousel.on('afterChange', function () { 3447 if (currentPreTitle === $(this).find('.slick-current').find('.lp-text--pretitle').text()) { 3448 $(this).find('.slick-current').find('.lp-text--pretitle').removeClass('animation'); 3449 } 3450 if (currentTitle === $(this).find('.slick-current').find('.lp-h1').text()) { 3451 $(this).find('.slick-current').find('.lp-h1').removeClass('animation'); 3452 } 3453 }); 3454})('section-bcabfae8-4664-4efa-a488-eceb5362ee27', 'undefined'); 3455} catch(e) { 3456console.log(e); 3457} 3458 try { 3459(function init(sectionDomId) { 3460 var textBlock = $('#' + sectionDomId + ' .hoverable-image__text-wrap'); 3461 var textBlockPaddingTop = parseInt($('#' + sectionDomId + ' .hoverable-image__text-col').css('padding-top')); 3462 var textBlockPaddingBottom = parseInt($('#' + sectionDomId + ' .hoverable-image__text-col').css('padding-bottom')); 3463 var imageBlock = $('#' + sectionDomId + ' .hoverable-image__img-col > div'); 3464 function resizeImage() { 3465 if (window.matchMedia('(min-width: 993px)').matches) { 3466 imageBlock.css('min-height', textBlock.height() + textBlockPaddingTop + textBlockPaddingBottom); 3467 } 3468 } 3469 $('#' + sectionDomId + ' .hoverable-image__img-col--on-hover').click(function () { 3470 if (window.matchMedia('(hover: none) and (pointer: coarse)').matches) { 3471 $(this).toggleClass('active'); 3472 } 3473 }); 3474 resizeImage(); 3475 $(window).on('resize.lpui-auto-clean', resizeImage); 3476})('section-951a1889-3429-42e7-8d93-31df407aeb20', 'undefined'); 3477} catch(e) { 3478console.log(e); 3479} 3480 try { 3481(function init(sectionDomId, options) { 3482 let section = null; 3483 switch (sectionDomId) { 3484 case 'NAVBAR': 3485 section = document.querySelector('body > nav, #global-navbar'); 3486 break; 3487 case 'FOOTER': 3488 section = document.querySelector('body > footer, #global-footer'); 3489 break; 3490 case 'SIDEMENU': 3491 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 3492 break; 3493 case 'CONTACT': 3494 section = document.querySelector('#modal-global-contact-us'); 3495 break; 3496 case 'MOBILE_CONTACT': 3497 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 3498 break; 3499 case 'SUBSCRIBE': 3500 // Subscribe Not Implemented 3501 section = null; 3502 break; 3503 case 'ACCOUNT': 3504 // Account Not Implemented 3505 section = null; 3506 break; 3507 default: 3508 section = document.querySelector('#' + sectionDomId); 3509 } 3510 if (!section) { 3511 return; 3512 } 3513 3514 // Where content / items are rendered 3515 const dataContainer = section.querySelector('.data-container'); 3516 if (!dataContainer) { 3517 // no place to render items = no need to query server or do anything else 3518 return; 3519 } 3520 let variables = options.variables || {}; 3521 3522 // Some variables in options may not have been injected - remove 3523 Object.keys(variables).forEach(function (variableName) { 3524 if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) { 3525 delete variables[variableName]; 3526 } 3527 }); 3528 3529 // Merge page query variables 3530 if (options.usePageResource) { 3531 variables = { 3532 ...variables, 3533 ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource] 3534 }; 3535 } 3536 3537 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers 3538 // resolve the flag â fetchData reads the section stamp, aux fetches read 3539 // their own resource's stamp (auxUsesRouter). 3540 function apiUrl(useRouter) { 3541 return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl); 3542 } 3543 3544 // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's 3545 // (options.routerApiAux is stamped per aux resource server-side). 3546 function auxUsesRouter(resource) { 3547 return !!(options.routerApiAux && options.routerApiAux[resource]); 3548 } 3549 3550 // Pagination Executes on a Numbered Pagination Container 3551 // Or via a load more button 3552 let mode = 'BUTTONLESS_PAGINATION'; 3553 const container = section.querySelector('.pagination-container');
3554 const loadMoreButton = section.querySelector(options?.loadMoreSelector); 3555 if (container) { 3556 mode = 'NUMBERED_PAGINATION'; 3557 } 3558 if (loadMoreButton) { 3559 mode = 'LOAD_MORE_BUTTON'; 3560 } 3561 let searchContainer = section.querySelector('.search-container'); 3562 const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false; 3563 const eventPrefix = '__pagination-'; 3564 const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{ 3565 param: 'neighborhoodId', 3566 urlKey: 'neighborhood' 3567 }, { 3568 param: 'search', 3569 urlKey: 'search' 3570 }, { 3571 param: 'salesPriceGTE', 3572 urlKey: 'pricemin', 3573 formKey: 'priceMin', 3574 type: 'int' 3575 }, { 3576 param: 'salesPriceLTE', 3577 urlKey: 'pricemax', 3578 formKey: 'priceMax', 3579 type: 'int' 3580 }, { 3581 param: 'livingSpaceSizeGTE', 3582 urlKey: 'areamin', 3583 formKey: 'areaMin', 3584 type: 'int' 3585 }, { 3586 param: 'livingSpaceSizeLTE', 3587 urlKey: 'areamax', 3588 formKey: 'areaMax', 3589 type: 'int' 3590 }] : []); 3591 3592 // Total entries - initialized in first render 3593 let totalNumber = 0; 3594 const DefaultSearchParams = { 3595 page: 1 3596 }; 3597 searchFormParams.forEach(function (formParam) { 3598 DefaultSearchParams[formParam.formKey || formParam.param] = null; 3599 }); 3600 let searchParams = { 3601 ...DefaultSearchParams 3602 }; 3603 const offset = options.variables?.offset || 0; 3604 let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section; 3605 let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100; 3606 3607 // entries of per page 3608 // when query variables for a given section would't be filled options.pageSize can store 3609 // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value 3610 let pageSize = parseInt(options.pageSize, 10) || 9; 3611 3612 // Adding mobile pageRange support 3613 var NARROW_BREAKPOINT = 600; 3614 var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT; 3615 var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`); 3616 3617 // Page range (pages on both sides of the current page) 3618 var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0; 3619 var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2; 3620 var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange; 3621 3622 // Whether to display the 'Previous' button 3623 var showPrevious = true; 3624 3625 // Whether to display the 'Next' button 3626 var showNext = true; 3627 3628 // Whether to display the page buttons 3629 var showPageNumbers = true; 3630 3631 // 'Previous' text 3632 var prevText = options.prevText || '«'; 3633 3634 // 'Next' text 3635 var nextText = options.nextText || '»'; 3636 3637 // Ellipsis text 3638 var ellipsisText = '…'; 3639 var classPrefix = 'paginationjs'; 3640 3641 // Default active class 3642 var activeClassName = 'active'; 3643 3644 // Default disable class 3645 var disableClassName = 'disabled'; 3646 3647 // Pagination element's position in the container 3648 var position = 'bottom'; 3649 3650 // Whether to trigger pagination at initialization 3651 var triggerPagingOnInit = !options.skipInitialLoad; 3652 var showFirstOnEllipsisShow = true; 3653 var showLastOnEllipsisShow = true; 3654 3655 // Instantiated in init() 3656 var el = null; 3657 3658 // Controls scrollTop logic 3659 var firstRender = true; 3660 var renderBySearch = false; 3661 var disabled = false; 3662 3663 // Pagination script class selector 3664 var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script'; 3665 3666 // Property Specific Image Override if No Image 3667 var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage; 3668 3669 // Construct template 3670 var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || ''; 3671 var template = Handlebars.compile(templateHTML); 3672 3673 // Initialize 3674 init(); 3675 function init() { 3676 Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 3677 3678 // Append/prepend pagination element to the pagination container 3679 if (mode === 'NUMBERED_PAGINATION') { 3680 el = document.createElement('div'); 3681 el.className = 'paginationjs';
3682 container[position === 'bottom' ? 'append' : 'prepend'](el); 3683 } 3684 if (searchContainer) { 3685 initSearchContainer({ 3686 fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true', 3687 fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true', 3688 fetchOffices: searchContainer.dataset.fetchOffices === 'true', 3689 fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true' 3690 }, function () { 3691 syncSearchFormState(searchParams); 3692 }); 3693 } 3694 3695 // Bind events 3696 observer(); 3697 } 3698 function syncSearchFormState(params) { 3699 searchContainer.dispatchEvent(new CustomEvent('sync', { 3700 detail: params 3701 })); 3702 } 3703 function initSearchContainer(options, done) { 3704 var promises = []; 3705 if (options.fetchNeighborhoods) { 3706 promises.push(fetchAllNeighborhoods(function (neighborhoods) { 3707 searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', { 3708 detail: { 3709 data: neighborhoods.map(function (item) { 3710 return { 3711 value: item.id, 3712 label: item.name 3713 }; 3714 }) 3715 } 3716 })); 3717 })); 3718 } 3719 if (options.fetchPostCategories) { 3720 promises.push(fetchPostCategories(function (categories) { 3721 searchContainer.dispatchEvent(new CustomEvent('post-categories-data', { 3722 detail: { 3723 data: categories 3724 } 3725 })); 3726 })); 3727 } 3728 if (options.fetchOffices) { 3729 promises.push(fetchOffices(function (offices) { 3730 searchContainer.dispatchEvent(new CustomEvent('offices-data', { 3731 detail: { 3732 data: offices 3733 } 3734 })); 3735 })); 3736 } 3737 if (options.fetchRentalRates) { 3738 promises.push(fetchAllRentalRates(function (rentalRates) { 3739 searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', { 3740 detail: { 3741 data: rentalRates 3742 } 3743 })); 3744 })); 3745 } 3746 if (promises.length > 0) { 3747 Promise.all(promises).then(function () { 3748 done(); 3749 }); 3750 } else { 3751 // element's custom code is not executed yet, so we're scheduling callback to after element's code 3752 setTimeout(done); 3753 } 3754 } 3755 function fetchAllNeighborhoods(done) { 3756 var useRouter = auxUsesRouter('neighborhoods'); 3757 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same 3758 // args on both APIs (the federated neighborhoods field accepts 3759 // withProperties/withBlogPosts); only the selection set differs. 3760 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') + '}}'; 3761 var payload = {}; 3762 payload.offset = 0; 3763 payload.limit = 100; 3764 payload.companyId = variables.companyId; 3765 if (options.resource === 'properties') { 3766 payload.withProperties = { 3767 active: true 3768 }; 3769 ['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) { 3770 if (variables[field] !== undefined && variables[field] !== null) { 3771 payload.withProperties[field] = variables[field]; 3772 } 3773 }); 3774 } 3775 if (options.resource === 'posts') { 3776 payload.withBlogPosts = { 3777 active: true 3778 }; 3779 ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) { 3780 if (variables[field] !== undefined && variables[field] !== null) { 3781 payload.withBlogPosts[field] = variables[field]; 3782 } 3783 }); 3784 } 3785 3786 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3787 if (useRouter) { 3788 payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload); 3789 } 3790 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 3791 query: gqlQuery, 3792 variables: payload 3793 }).then(function (res) { 3794 var value = res.body.data && res.body.data.neighborhoods || {}; 3795 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3796 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 3797 done(items, items.length); 3798 }); 3799 } 3800 function fetchPostCategories(done) { 3801 var featured = options.resource === 'posts' && !!variables.featured; 3802 var useRouter = auxUsesRouter('postCategories'); 3803 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 3804 // selection set differs ({ items {...} } on the router). 3805 var selection = 'id, name, publishedCount, featuredPublishedCount'; 3806 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) + '}}'; 3807 var payload = {}; 3808 payload.offset = 0; 3809 payload.limit = 100; 3810 payload.companyId = variables.companyId; 3811 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 3812 query: gqlQuery, 3813 variables: payload 3814 }).then(function (res) { 3815 var value = res.body.data && res.body.data.postCategories || {}; 3816 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3817 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 3818 done(items.map(function (item) { 3819 item.count = featured ? item.featuredPublishedCount : item.publishedCount; 3820 return item; 3821 }), items.length); 3822 }); 3823 } 3824 function fetchOffices(done) { 3825 var useRouter = auxUsesRouter('offices'); 3826 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 3827 // selection set differs ({ items {...} } on the router). 3828 var selection = 'id, name, tags'; 3829 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two 3830 // APIs differ in more than the items wrapper: federated offices takes 3831 // companyId: ID! (legacy gateway: String), so each branch builds its whole doc. 3832 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 + '}}'; 3833 var payload = { 3834 offset: 0, 3835 limit: 100, 3836 companyId: variables.companyId 3837 }; 3838 3839 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3840 if (useRouter) { 3841 payload = window.luxuryPresence.routerApi.transformVariables('office
3841s', payload); 3842 } 3843 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 3844 query: gqlQuery, 3845 variables: payload 3846 }).then(function (res) { 3847 var value = res.body.data && res.body.data.offices || {}; 3848 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3849 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 3850 done(items, items.length); 3851 }); 3852 } 3853 3854 // ROUTER-CLEANUP: no rentalRates field on the federated router â legacy only. 3855 function fetchAllRentalRates(done) { 3856 var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl; 3857 var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}'; 3858 var payload = { 3859 offset: 0, 3860 limit: 100, 3861 companyId: variables.companyId 3862 }; 3863 superagent.post(url + '/graphql').withCredentials().send({ 3864 query: gqlQuery, 3865 variables: payload 3866 }).then(function (res) { 3867 var items = res.body.data && res.body.data.rentalRates || []; 3868 done(items, items.length); 3869 }).catch(function (err) { 3870 console.error('Error fetching rental rates:', err); 3871 done([], 0); 3872 }); 3873 } 3874 function fetchData(params, done) { 3875 var resource = options.resource; 3876 var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource]; 3877 var payload = {}; 3878 try { 3879 payload = JSON.parse(JSON.stringify(variables)); 3880 } catch (e) { 3881 Object.keys(variables).forEach(function (variableName) { 3882 payload[variableName] = variables[variableName]; 3883 }); 3884 } 3885 payload.offset = (params.page - 1) * pageSize + offset; 3886 payload.limit = pageSize; 3887 payload.companyId = options.companyId; 3888 searchFormParams.forEach(function (formParam) { 3889 var val = params[formParam.formKey || formParam.param]; 3890 if (val !== null && val !== undefined) { 3891 objSet(payload, formParam.param, val); 3892 } 3893 }); 3894 3895 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3896 if (options.useRouterApi) { 3897 payload = window.luxuryPresence.routerApi.transformVariables(resource, payload); 3898 } 3899 3900 // TODO: Disabled loading due to jarring effect 3901 // dataContainer.html('Loading...'); 3902 superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({ 3903 query: gqlQuery, 3904 variables: payload 3905 }).then(function (res) { 3906 if (res.body.errors) { 3907 done(res.body.errors); 3908 return; 3909 } 3910 var data = res.body.data || {}; 3911 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3912 var resources; 3913 var resourceCount; 3914 if (options.useRouterApi) { 3915 var page = window.luxuryPresence.routerApi.transformPage(data[resource]); 3916 resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items); 3917 resourceCount = page.count; 3918 } else { 3919 resources = data[resource] || []; 3920 resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0; 3921 } 3922 const finish = function (items) { 3923 if (resource === 'properties' && propertyPlaceholderImage?.id) { 3924 items = items.map(item => { 3925 if (item.media?.length === 0) { 3926 return Object.assign(item, { 3927 media: [propertyPlaceholderImage] 3928 }); 3929 } 3930 return item; 3931 }); 3932 } 3933 done(null, items, resourceCount); 3934 }; 3935 3936 // ROUTER-CLEANUP: client half of PLAT-4073 â resolve the requested 3937 // disclaimers before rendering; older SDKs skip (keys stay unset). 3938 if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') { 3939 window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish); 3940 return; 3941 } 3942 finish(resources); 3943 }); 3944 } 3945 function getTotalPage() { 3946 return Math.ceil(totalNumber / pageSize); 3947 } 3948 function renderPaginationList() { 3949 var totalPages = getTotalPage(); 3950 var rangeStart = searchParams.page - pageRange; 3951 var rangeEnd = searchParams.page + pageRange; 3952 if (rangeEnd > totalPages) { 3953 rangeEnd = totalPages; 3954 rangeStart = totalPages - pageRange * 2; 3955 rangeStart = rangeStart < 1 ? 1 : rangeStart; 3956 } 3957 if (rangeStart <= 1) { 3958 rangeStart = 1; 3959 rangeEnd = Math.min(pageRange * 2 + 1, totalPages); 3960 } 3961 3962 // Making sure that 1 more page button is shown in edge positions 3963 if (pageRange === 0) { 3964 if (searchParams.page === totalPages) { 3965 rangeStart = totalPages <= 1 ? 1 : totalPages - 1; 3966 } 3967 if (searchParams.page === 1) { 3968 rangeEnd = Math.min(2, totalPages); 3969 } 3970 } 3971 3972 // Render pagination list 3973 if (mode === 'NUMBERED_PAGINATION') { 3974 el.innerHTML = generateHTML({ 3975 currentPage: searchParams.page, 3976 pageRange: pageRange, 3977 rangeStart: rangeStart, 3978 rangeEnd: rangeEnd 3979 }); 3980 if (totalPages < 2 && hidePaginationOnFirstPage) { 3981 container.style.display = 'none'; 3982 } else { 3983 container.style.display = ''; 3984 } 3985 } else if (mode === 'LOAD_MORE_BUTTON') { 3986 if (searchParams.page >= totalPages) {
3987 loadMoreButton.style.display = 'none'; 3988 } else { 3989 loadMoreButton.style.display = ''; 3990 } 3991 } 3992 } 3993 function render(data) { 3994 renderPaginationList(); 3995 3996 // Render new content with handlebars 3997 var html = ''; 3998 if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) { 3999 // If using load more, append search results to existing results 4000 html = dataContainer.innerHTML; 4001 } 4002 for (var i = 0; i < data.length; i++) { 4003 var itemData = recursivelyParse(data[i]); 4004 itemData.sectionIndex = options.sectionIndex; 4005 itemData.renderOptions = options.renderOptions; 4006 html += template(itemData); 4007 } 4008 dataContainer.innerHTML = html; 4009 4010 // Scroll Top 4011 if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) { 4012 // Only animate to the top if we replace dataContainer (numbered pagination) 4013 setTimeout(() => { 4014 const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset; 4015 window.scrollTo({ 4016 top: scrollTargetOffsetTop, 4017 behavior: 'smooth' 4018 }); 4019 }, 250); 4020 } 4021 return true; 4022 } 4023 function generateHTML(args) { 4024 const totalPages = getTotalPage(); 4025 const { 4026 rangeStart, 4027 rangeEnd 4028 } = args; 4029 const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 4030 ...searchParams, 4031 page 4032 }); 4033 let html = ''; 4034 if (showPrevious || showPageNumbers || showNext) { 4035 html += '<div class="paginationjs-pages"><ul>'; 4036 4037 // Previous button 4038 if (showPrevious) { 4039 if (searchParams.page <= 1) { 4040 html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`; 4041 } else { 4042 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>`; 4043 } 4044 } 4045 4046 // Pages 4047 if (showPageNumbers) { 4048 if (rangeStart <= 3) { 4049 for (let i = 1; i < rangeStart; i++) { 4050 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>`; 4051 } 4052 } else { 4053 if (showFirstOnEllipsisShow) { 4054 html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`; 4055 } 4056 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 4057 } 4058 for (let i = rangeStart; i <= rangeEnd; i++) { 4059 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>`; 4060 } 4061 if (rangeEnd < totalPages - 2) { 4062 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 4063 if (showLastOnEllipsisShow) { 4064 html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`; 4065 } 4066 } else { 4067 for (let i = rangeEnd + 1; i <= totalPages; i++) { 4068 html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`; 4069 } 4070 } 4071 } 4072 4073 // Next button 4074 if (showNext) { 4075 if (searchParams.page >= totalPages) { 4076 html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`; 4077 } else { 4078 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>`; 4079 } 4080 } 4081 html += '</ul></div>'; 4082 } 4083 return html; 4084 } 4085 function go(newSearchParams, callback, restorationVisit) { 4086 if (disabled) return; 4087 var goToPageNumber = newSearchParams.page; 4088 4089 // Page number is out of bounds 4090 if (!goToPageNumber || goToPageNumber < 1) return; 4091 var totalPage = getTotalPage(); 4092 4093 // Page number is out of bounds 4094 if (!restorationVisit && totalNumber > 0) { 4095 if (goToPageNumber > totalPage) return; 4096 } 4097 if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
4098 var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 4099 ...newSearchParams, 4100 page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null 4101 }); 4102 if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) { 4103 window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, { 4104 queryString: true 4105 })); 4106 } 4107 } 4108 4109 // Fetch and update page 4110 fetchData(newSearchParams, renderWithData); 4111 disabled = true; 4112 function renderWithData(err, data, count) { 4113 if (err) { 4114 dataContainer.dispatchEvent(new Event('error')); 4115 } else { 4116 searchParams = { 4117 ...newSearchParams 4118 }; 4119 totalNumber = count - offset; 4120 if (data.length === 0) { 4121 dataContainer.dispatchEvent(new Event('no-data')); 4122 } else { 4123 dataContainer.dispatchEvent(new Event('data')); 4124 } 4125 render(data); 4126 firstRender = false; 4127 } 4128 disabled = false; 4129 renderBySearch = false; 4130 } 4131 } 4132 function areQueryParamsEqual(first, second) { 4133 var differ = Object.keys(first).find(function (key) { 4134 return first[key] !== undefined && first[key] !== null && first[key] !== second[key]; 4135 }); 4136 if (differ) { 4137 return false; 4138 } 4139 differ = Object.keys(second).find(function (key) { 4140 return second[key] !== undefined && second[key] !== null && second[key] !== first[key]; 4141 }); 4142 return !differ; 4143 } 4144 function next(callback) { 4145 go({ 4146 ...searchParams, 4147 page: searchParams.page + 1 4148 }, callback); 4149 } 4150 function previous(callback) { 4151 go({ 4152 ...searchParams, 4153 page: searchParams.page - 1 4154 }, callback); 4155 } 4156 function refresh(callback) { 4157 go(searchParams, callback); 4158 } 4159 function update(params, callback) { 4160 renderBySearch = true; 4161 go(params, callback); 4162 } 4163 function observer() { 4164 if (searchContainer) { 4165 searchContainer.addEventListener('search', function (event, newSearchParams) { 4166 newSearchParams = event.detail || newSearchParams; 4167 update({ 4168 ...searchParams, 4169 ...newSearchParams, 4170 page: 1 4171 }); 4172 }); 4173 searchContainer.addEventListener('clear-search', function () { 4174 const defaultSearchParams = { 4175 ...DefaultSearchParams 4176 }; 4177 const isCurrentSearchFormStateDefault = areQueryParamsEqual({ 4178 ...defaultSearchParams, 4179 page: null 4180 }, { 4181 ...searchParams, 4182 page: null 4183 }); 4184 4185 // if mode is LOAD_MORE_BUTTON we should't make anything on clear 4186 // when search form have default state 4187 if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') { 4188 return; 4189 } 4190 4191 // if someone initially go to some page and click 'Clear' on search from 4192 // we should't navigate to first page. We should preserve page value 4193 if (isCurrentSearchFormStateDefault) { 4194 defaultSearchParams.page = searchParams.page; 4195 } 4196 syncSearchFormState(defaultSearchParams); 4197 update(defaultSearchParams); 4198 }); 4199 } 4200 if (mode === 'LOAD_MORE_BUTTON') { 4201 loadMoreButton.addEventListener('click', function (event) { 4202 go({ 4203 ...searchParams, 4204 page: searchParams.page + 1 4205 }); 4206 return false; 4207 }); 4208 } 4209 if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') { 4210 // Do initial render 4211 go(Object.assign({}, searchParams, { 4212 page: 1 4213 })); 4214 return; 4215 } 4216 if (mode === 'NUMBERED_PAGINATION') { 4217 // Go to specified page number 4218 container.addEventListener(eventPrefix + 'go', function (event) { 4219 let { 4220 pageNumber, 4221 done 4222 } = event.detail || {}; 4223 pageNumber = parseInt(pageNumber, 10); 4224 if (!pageNumber) { 4225 return; 4226 } 4227 go({ 4228 ...searchParams, 4229 page: pageNumber 4230 }, done); 4231 }); 4232 4233 // Page number button click 4234 el.addEventListener('click', function (event) { 4235 let clickTarget = event.target; 4236 let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next'); 4237 let pageNumber = current?.getAttribute('data-num'); 4238 if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) { 4239 return; 4240 } else { 4241 go({ 4242 ...searchParams, 4243 page: parseInt(pageNumber, 10) 4244 }); 4245 } 4246 event.preventDefault(); 4247 }); 4248 4249 // Whether to load the default page 4250 var defaultPageNumber = searchParams.page; 4251 if (triggerPagingOnInit) {
4252 container.dispatchEvent(new CustomEvent(eventPrefix + 'go', { 4253 detail: { 4254 pageNumber: defaultPageNumber 4255 } 4256 })); 4257 } 4258 } 4259 window.addEventListener('popstate', function (event) { 4260 var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 4261 if (!areQueryParamsEqual(newParams, searchParams)) { 4262 go(newParams, null, true); 4263 if (searchContainer) { 4264 syncSearchFormState(newParams); 4265 } 4266 } 4267 }); 4268 } 4269 function replaceVariables(template, variables) { 4270 var formattedString; 4271 for (var key in variables) { 4272 var value = variables[key]; 4273 var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img'); 4274 formattedString = (formattedString || template).replace(regexp, value); 4275 } 4276 return formattedString; 4277 } 4278 function isTextEditorValue(obj) { 4279 return 'raw' in obj || 'gjs' in obj; 4280 } 4281 function getTextEditorValue(obj) { 4282 if (!obj.html) { 4283 return ''; 4284 } 4285 var data = obj.html; 4286 var css = (obj.raw || obj.gjs || {}).css; 4287 if (css) { 4288 data = data + '<style>' + css + '</style>'; 4289 } 4290 return data; 4291 } 4292 4293 /** 4294 * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor. 4295 * strips out raw proprties and returns only HTML if it exists. 4296 * @param {Object} resources a collection retrieved from the database 4297 * @return {Object} the newly modified object. 4298 */ 4299 function recursivelyParse(resources) { 4300 forEach(resources, function (value, key) { 4301 if (!value) { 4302 return; 4303 } 4304 if (value instanceof Object) { 4305 if (isTextEditorValue(value)) { 4306 resources[key] = getTextEditorValue(value); 4307 return; 4308 } else { 4309 return recursivelyParse(value); 4310 } 4311 } 4312 try { 4313 var parsedData = JSON.parse(value); 4314 if (isTextEditorValue(parsedData)) { 4315 resources[key] = getTextEditorValue(parsedData); 4316 } 4317 } catch (e) { 4318 // do nothing if we failed to parse value as JSON 4319 } 4320 }); 4321 return resources; 4322 } 4323 function forEach(collection, iteratee) { 4324 var func = Array.isArray(collection) ? arrayEach : baseFor; 4325 return func(collection, iteratee); 4326 } 4327 function baseFor(object, iteratee) { 4328 if (!object) { 4329 return; 4330 } 4331 var iterable = Object(object); 4332 var props = Object.keys(object); 4333 var length = props.length; 4334 var index = -1; 4335 while (length--) { 4336 var key = props[++index]; 4337 if (iteratee(iterable[key], key, iterable) === false) { 4338 break; 4339 } 4340 } 4341 return object; 4342 } 4343 function objSet(obj, path, value) { 4344 const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g); 4345 pathArray.reduce((acc, key, i) => { 4346 if (acc[key] === undefined) acc[key] = {}; 4347 if (i === pathArray.length - 1) acc[key] = value; 4348 return acc[key]; 4349 }, obj); 4350 } 4351 function arrayEach(array, iteratee) { 4352 var index = -1; 4353 var length = array.length; 4354 while (++index < length) { 4355 if (iteratee(array[index], index, array) === false) { 4356 break; 4357 } 4358 } 4359 return array; 4360 } 4361 function selectPageRangeMode(e) { 4362 pageRange = e.matches ? mobilePageRange : desktopPageRange; 4363 renderPaginationList(); 4364 } 4365 paginationMql.addEventListener('change', selectPageRangeMode); 4366})('section-21378400-f49d-4db7-a004-7a7eafce8687', JSON.parse("{\"pageSize\":\"8\",\"resource\":\"neighborhoods\",\"pageRange\":0,\"variables\":{\"limit\":8,\"order\":\"{{variables.sort}}\",\"offset\":0,\"sortDir\":\"{{variables.sortDir}}\",\"companyId\":\"f62f900d-59fc-4354-b573-bcc1e7da46a2\",\"neighborhoodIds\":[\"ee8248e8-bf65-4886-8ead-1cfce9336b7a\",\"e85e901d-a310-4fc0-90e2-84f3e6e528fb\",\"2eb92464-3c8e-4db3-8095-e200acc274f9\",\"e5d357ce-137c-46b2-9f98-a76cf21ccd8a\",\"2be96388-5207-417b-b2d1-05005d79544e\",\"7ea75070-ce70-4018-b1fc-c0c5648bba2c\",\"d1ba3790-c31d-4757-bdea-a9b0b874a2e1\",\"7a738802-085a-4d76-b276-5ea947562fcd\"]},\"hidePaginationOnFirstPage\":true,\"companyId\":\"f62f900d-59fc-4354-b573-bcc1e7da46a2\",\"usePageResource\":false,\"sectionIndex\":3,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 4367} catch(e) { 4368console.log(e); 4369} 4370 try { 4371(function init(sectionDomId) {})('section-21378400-f49d-4db7-a004-7a7eafce8687', JSON.parse("{\"resource\":\"neighborhoods\",\"useRouterApi\":false,\"companyId\":\"f62f900d-59fc-4354-b573-bcc1e7da46a2\",\"usePageResource\":false,\"sectionIndex\":3,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 4372} catch(e) { 4373console.log(e); 4374} 4375 try { 4376(function init(sectionDomId) { 4377 // please write all js here and use sectionDomId in selectors in order of DOM encapsulation 4378})('section-fc696d32-3cf4-47d5-9539-22cb97d1c7a4', 'undefined'); 4379} catch(e) { 4380console.log(e); 4381} 4382 try { 4383(function init(sectionDomId) { 4384 const $section = $('#' + sectionDomId); 4385 const $slider = $section.find('.items-slider'); 4386 let $slides = $slider.children(); 4387 $slides.each(function () { 4388 const $el = $(this); 4389 const $initials = $el.find('.userpic-initials'); 4390 if (!$initials.length) { 4391 return; 4392 } 4393 const author = $el.find('.author').text() || ''; 4394 if (!author) { 4395 return; 4396 } 4397 $initials.text(author.split('|')[0].split(/\s+/).map(w => w[0] ? w[0].toUpperCase() : '').join('')); 4398 }); 4399 let slidesCount = $slider.children().length; 4400 if (slidesCount < 2) { 4401 return; 4402 } 4403 while (slidesCount < 5) { 4404 $slides.each(function () { 4405 $(this).clone().appendTo($slider); 4406 }); 4407 slidesCount = $slider.children().length; 4408 } 4409 const arrowsStyle = $slider.data('arrows-style') || ''; 4410 $slider.slick({ 4411 centerMode: true, 4412 centerPadding: '285px', 4413 infinite: true, 4414 appendArrows: $section.find('.arrows'), 4415 arrows: true, 4416 nextArrow: `<button class="slick-next slick-arrow ${arrowsStyle}"></button>`, 4417 prevArrow: `<button class="slick-prev slick-arrow ${arrowsStyle}"></button>`, 4418 speed: 300, 4419 autoplay: !!$slider.data('autoplay'), 4420 autoplaySpeed: (parseInt($slider.data('autoscroll-interval'), 10) || 6) * 1000, 4421 responsive: [{ 4422 breakpoint: 1340, 4423 settings: { 4424 centerPadding: '164px' 4425 } 4426 }, {
4427 breakpoint: 991, 4428 settings: { 4429 centerMode: false 4430 } 4431 }] 4432 }); 4433 updateSlides(0); 4434 function updateSlides(active) { 4435 $slider.find('.slick-slide').each(function (i) { 4436 const $el = $(this); 4437 const idx = $el.data('slick-index'); 4438 const r = ((idx - active) % slidesCount + slidesCount) % slidesCount; 4439 $el.removeClass(['sl-prev', 'sl-next', 'sl-active']); 4440 if (r === 0) { 4441 $el.addClass('sl-active'); 4442 } else if (r === 1 || r === 2) { 4443 $el.addClass('sl-next'); 4444 } else if (r === slidesCount - 1 || r === slidesCount - 2) { 4445 $el.addClass('sl-prev'); 4446 } 4447 }); 4448 } 4449 $slider.on('beforeChange', function (ev, slick, current, next) { 4450 $slider.addClass('in-transition'); 4451 updateSlides(next); 4452 }); 4453 $slider.on('afterChange', function () { 4454 $slider.removeClass('in-transition'); 4455 }); 4456})('section-b89e9295-e2d0-492f-9db1-0fee3e6f7c1e', JSON.parse("{\"resource\":\"testimonials\",\"useRouterApi\":true,\"companyId\":\"f62f900d-59fc-4354-b573-bcc1e7da46a2\",\"usePageResource\":false,\"sectionIndex\":5,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 4457} catch(e) { 4458console.log(e); 4459} 4460 try { 4461(function init(sectionDomId) {// please write all js here and use sectionDomId in selectors in order of DOM encapsulation 4462})('section-a1b98f91-47eb-47b4-bb02-5c2c74f6f975', 'undefined'); 4463} catch(e) { 4464console.log(e); 4465} 4466 try { 4467(function init(sectionDomId, options) { 4468 let section = null; 4469 switch (sectionDomId) { 4470 case 'NAVBAR': 4471 section = document.querySelector('body > nav, #global-navbar'); 4472 break; 4473 case 'FOOTER': 4474 section = document.querySelector('body > footer, #global-footer'); 4475 break; 4476 case 'SIDEMENU': 4477 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 4478 break; 4479 case 'CONTACT': 4480 section = document.querySelector('#modal-global-contact-us'); 4481 break; 4482 case 'MOBILE_CONTACT': 4483 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 4484 break; 4485 case 'SUBSCRIBE': 4486 // Subscribe Not Implemented 4487 section = null; 4488 break; 4489 case 'ACCOUNT': 4490 // Account Not Implemented 4491 section = null; 4492 break; 4493 default: 4494 section = document.querySelector('#' + sectionDomId); 4495 } 4496 if (!section) { 4497 return; 4498 } 4499 4500 // Where content / items are rendered 4501 const dataContainer = section.querySelector('.data-container'); 4502 if (!dataContainer) { 4503 // no place to render items = no need to query server or do anything else 4504 return; 4505 } 4506 let variables = options.variables || {}; 4507 4508 // Some variables in options may not have been injected - remove 4509 Object.keys(variables).forEach(function (variableName) { 4510 if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) { 4511 delete variables[variableName]; 4512 } 4513 }); 4514 4515 // Merge page query variables 4516 if (options.usePageResource) { 4517 variables = { 4518 ...variables, 4519 ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource] 4520 }; 4521 } 4522 4523 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers 4524 // resolve the flag â fetchData reads the section stamp, aux fetches read 4525 // their own resource's stamp (auxUsesRouter). 4526 function apiUrl(useRouter) { 4527 return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl); 4528 } 4529 4530 // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's 4531 // (options.routerApiAux is stamped per aux resource server-side). 4532 function auxUsesRouter(resource) { 4533 return !!(options.routerApiAux && options.routerApiAux[resource]); 4534 } 4535 4536 // Pagination Executes on a Numbered Pagination Container 4537 // Or via a load more button 4538 let mode = 'BUTTONLESS_PAGINATION'; 4539 const container = section.querySelector('.pagination-container');
4540 const loadMoreButton = section.querySelector(options?.loadMoreSelector); 4541 if (container) { 4542 mode = 'NUMBERED_PAGINATION'; 4543 } 4544 if (loadMoreButton) { 4545 mode = 'LOAD_MORE_BUTTON'; 4546 } 4547 let searchContainer = section.querySelector('.search-container'); 4548 const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false; 4549 const eventPrefix = '__pagination-'; 4550 const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{ 4551 param: 'neighborhoodId', 4552 urlKey: 'neighborhood' 4553 }, { 4554 param: 'search', 4555 urlKey: 'search' 4556 }, { 4557 param: 'salesPriceGTE', 4558 urlKey: 'pricemin', 4559 formKey: 'priceMin', 4560 type: 'int' 4561 }, { 4562 param: 'salesPriceLTE', 4563 urlKey: 'pricemax', 4564 formKey: 'priceMax', 4565 type: 'int' 4566 }, { 4567 param: 'livingSpaceSizeGTE', 4568 urlKey: 'areamin', 4569 formKey: 'areaMin', 4570 type: 'int' 4571 }, { 4572 param: 'livingSpaceSizeLTE', 4573 urlKey: 'areamax', 4574 formKey: 'areaMax', 4575 type: 'int' 4576 }] : []); 4577 4578 // Total entries - initialized in first render 4579 let totalNumber = 0; 4580 const DefaultSearchParams = { 4581 page: 1 4582 }; 4583 searchFormParams.forEach(function (formParam) { 4584 DefaultSearchParams[formParam.formKey || formParam.param] = null; 4585 }); 4586 let searchParams = { 4587 ...DefaultSearchParams 4588 }; 4589 const offset = options.variables?.offset || 0; 4590 let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section; 4591 let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100; 4592 4593 // entries of per page 4594 // when query variables for a given section would't be filled options.pageSize can store 4595 // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value 4596 let pageSize = parseInt(options.pageSize, 10) || 9; 4597 4598 // Adding mobile pageRange support 4599 var NARROW_BREAKPOINT = 600; 4600 var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT; 4601 var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`); 4602 4603 // Page range (pages on both sides of the current page) 4604 var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0; 4605 var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2; 4606 var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange; 4607 4608 // Whether to display the 'Previous' button 4609 var showPrevious = true; 4610 4611 // Whether to display the 'Next' button 4612 var showNext = true; 4613 4614 // Whether to display the page buttons 4615 var showPageNumbers = true; 4616 4617 // 'Previous' text 4618 var prevText = options.prevText || '«'; 4619 4620 // 'Next' text 4621 var nextText = options.nextText || '»'; 4622 4623 // Ellipsis text 4624 var ellipsisText = '…'; 4625 var classPrefix = 'paginationjs'; 4626 4627 // Default active class 4628 var activeClassName = 'active'; 4629 4630 // Default disable class 4631 var disableClassName = 'disabled'; 4632 4633 // Pagination element's position in the container 4634 var position = 'bottom'; 4635 4636 // Whether to trigger pagination at initialization 4637 var triggerPagingOnInit = !options.skipInitialLoad; 4638 var showFirstOnEllipsisShow = true; 4639 var showLastOnEllipsisShow = true; 4640 4641 // Instantiated in init() 4642 var el = null; 4643 4644 // Controls scrollTop logic 4645 var firstRender = true; 4646 var renderBySearch = false; 4647 var disabled = false; 4648 4649 // Pagination script class selector 4650 var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script'; 4651 4652 // Property Specific Image Override if No Image 4653 var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage; 4654 4655 // Construct template 4656 var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || ''; 4657 var template = Handlebars.compile(templateHTML); 4658 4659 // Initialize 4660 init(); 4661 function init() { 4662 Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 4663 4664 // Append/prepend pagination element to the pagination container 4665 if (mode === 'NUMBERED_PAGINATION') { 4666 el = document.createElement('div'); 4667 el.className = 'paginationjs';
4668 container[position === 'bottom' ? 'append' : 'prepend'](el); 4669 } 4670 if (searchContainer) { 4671 initSearchContainer({ 4672 fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true', 4673 fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true', 4674 fetchOffices: searchContainer.dataset.fetchOffices === 'true', 4675 fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true' 4676 }, function () { 4677 syncSearchFormState(searchParams); 4678 }); 4679 } 4680 4681 // Bind events 4682 observer(); 4683 } 4684 function syncSearchFormState(params) { 4685 searchContainer.dispatchEvent(new CustomEvent('sync', { 4686 detail: params 4687 })); 4688 } 4689 function initSearchContainer(options, done) { 4690 var promises = []; 4691 if (options.fetchNeighborhoods) { 4692 promises.push(fetchAllNeighborhoods(function (neighborhoods) { 4693 searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', { 4694 detail: { 4695 data: neighborhoods.map(function (item) { 4696 return { 4697 value: item.id, 4698 label: item.name 4699 }; 4700 }) 4701 } 4702 })); 4703 })); 4704 } 4705 if (options.fetchPostCategories) { 4706 promises.push(fetchPostCategories(function (categories) { 4707 searchContainer.dispatchEvent(new CustomEvent('post-categories-data', { 4708 detail: { 4709 data: categories 4710 } 4711 })); 4712 })); 4713 } 4714 if (options.fetchOffices) { 4715 promises.push(fetchOffices(function (offices) { 4716 searchContainer.dispatchEvent(new CustomEvent('offices-data', { 4717 detail: { 4718 data: offices 4719 } 4720 })); 4721 })); 4722 } 4723 if (options.fetchRentalRates) { 4724 promises.push(fetchAllRentalRates(function (rentalRates) { 4725 searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', { 4726 detail: { 4727 data: rentalRates 4728 } 4729 })); 4730 })); 4731 } 4732 if (promises.length > 0) { 4733 Promise.all(promises).then(function () { 4734 done(); 4735 }); 4736 } else { 4737 // element's custom code is not executed yet, so we're scheduling callback to after element's code 4738 setTimeout(done); 4739 } 4740 } 4741 function fetchAllNeighborhoods(done) { 4742 var useRouter = auxUsesRouter('neighborhoods'); 4743 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same 4744 // args on both APIs (the federated neighborhoods field accepts 4745 // withProperties/withBlogPosts); only the selection set differs. 4746 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') + '}}'; 4747 var payload = {}; 4748 payload.offset = 0; 4749 payload.limit = 100; 4750 payload.companyId = variables.companyId; 4751 if (options.resource === 'properties') { 4752 payload.withProperties = { 4753 active: true 4754 }; 4755 ['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) { 4756 if (variables[field] !== undefined && variables[field] !== null) { 4757 payload.withProperties[field] = variables[field]; 4758 } 4759 }); 4760 } 4761 if (options.resource === 'posts') { 4762 payload.withBlogPosts = { 4763 active: true 4764 }; 4765 ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) { 4766 if (variables[field] !== undefined && variables[field] !== null) { 4767 payload.withBlogPosts[field] = variables[field]; 4768 } 4769 }); 4770 } 4771 4772 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4773 if (useRouter) { 4774 payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload); 4775 } 4776 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 4777 query: gqlQuery, 4778 variables: payload 4779 }).then(function (res) { 4780 var value = res.body.data && res.body.data.neighborhoods || {}; 4781 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4782 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 4783 done(items, items.length); 4784 }); 4785 } 4786 function fetchPostCategories(done) { 4787 var featured = options.resource === 'posts' && !!variables.featured; 4788 var useRouter = auxUsesRouter('postCategories'); 4789 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 4790 // selection set differs ({ items {...} } on the router). 4791 var selection = 'id, name, publishedCount, featuredPublishedCount'; 4792 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) + '}}'; 4793 var payload = {}; 4794 payload.offset = 0; 4795 payload.limit = 100; 4796 payload.companyId = variables.companyId; 4797 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 4798 query: gqlQuery, 4799 variables: payload 4800 }).then(function (res) { 4801 var value = res.body.data && res.body.data.postCategories || {}; 4802 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4803 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 4804 done(items.map(function (item) { 4805 item.count = featured ? item.featuredPublishedCount : item.publishedCount; 4806 return item; 4807 }), items.length); 4808 }); 4809 } 4810 function fetchOffices(done) { 4811 var useRouter = auxUsesRouter('offices'); 4812 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 4813 // selection set differs ({ items {...} } on the router). 4814 var selection = 'id, name, tags'; 4815 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two 4816 // APIs differ in more than the items wrapper: federated offices takes 4817 // companyId: ID! (legacy gateway: String), so each branch builds its whole doc. 4818 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 + '}}'; 4819 var payload = { 4820 offset: 0, 4821 limit: 100, 4822 companyId: variables.companyId 4823 }; 4824 4825 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4826 if (useRouter) { 4827 payload = window.luxuryPresence.routerApi.transformVariables('office
4827s', payload); 4828 } 4829 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 4830 query: gqlQuery, 4831 variables: payload 4832 }).then(function (res) { 4833 var value = res.body.data && res.body.data.offices || {}; 4834 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4835 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 4836 done(items, items.length); 4837 }); 4838 } 4839 4840 // ROUTER-CLEANUP: no rentalRates field on the federated router â legacy only. 4841 function fetchAllRentalRates(done) { 4842 var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl; 4843 var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}'; 4844 var payload = { 4845 offset: 0, 4846 limit: 100, 4847 companyId: variables.companyId 4848 }; 4849 superagent.post(url + '/graphql').withCredentials().send({ 4850 query: gqlQuery, 4851 variables: payload 4852 }).then(function (res) { 4853 var items = res.body.data && res.body.data.rentalRates || []; 4854 done(items, items.length); 4855 }).catch(function (err) { 4856 console.error('Error fetching rental rates:', err); 4857 done([], 0); 4858 }); 4859 } 4860 function fetchData(params, done) { 4861 var resource = options.resource; 4862 var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource]; 4863 var payload = {}; 4864 try { 4865 payload = JSON.parse(JSON.stringify(variables)); 4866 } catch (e) { 4867 Object.keys(variables).forEach(function (variableName) { 4868 payload[variableName] = variables[variableName]; 4869 }); 4870 } 4871 payload.offset = (params.page - 1) * pageSize + offset; 4872 payload.limit = pageSize; 4873 payload.companyId = options.companyId; 4874 searchFormParams.forEach(function (formParam) { 4875 var val = params[formParam.formKey || formParam.param]; 4876 if (val !== null && val !== undefined) { 4877 objSet(payload, formParam.param, val); 4878 } 4879 }); 4880 4881 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4882 if (options.useRouterApi) { 4883 payload = window.luxuryPresence.routerApi.transformVariables(resource, payload); 4884 } 4885 4886 // TODO: Disabled loading due to jarring effect 4887 // dataContainer.html('Loading...'); 4888 superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({ 4889 query: gqlQuery, 4890 variables: payload 4891 }).then(function (res) { 4892 if (res.body.errors) { 4893 done(res.body.errors); 4894 return; 4895 } 4896 var data = res.body.data || {}; 4897 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 4898 var resources; 4899 var resourceCount; 4900 if (options.useRouterApi) { 4901 var page = window.luxuryPresence.routerApi.transformPage(data[resource]); 4902 resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items); 4903 resourceCount = page.count; 4904 } else { 4905 resources = data[resource] || []; 4906 resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0; 4907 } 4908 const finish = function (items) { 4909 if (resource === 'properties' && propertyPlaceholderImage?.id) { 4910 items = items.map(item => { 4911 if (item.media?.length === 0) { 4912 return Object.assign(item, { 4913 media: [propertyPlaceholderImage] 4914 }); 4915 } 4916 return item; 4917 }); 4918 } 4919 done(null, items, resourceCount); 4920 }; 4921 4922 // ROUTER-CLEANUP: client half of PLAT-4073 â resolve the requested 4923 // disclaimers before rendering; older SDKs skip (keys stay unset). 4924 if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') { 4925 window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish); 4926 return; 4927 } 4928 finish(resources); 4929 }); 4930 } 4931 function getTotalPage() { 4932 return Math.ceil(totalNumber / pageSize); 4933 } 4934 function renderPaginationList() { 4935 var totalPages = getTotalPage(); 4936 var rangeStart = searchParams.page - pageRange; 4937 var rangeEnd = searchParams.page + pageRange; 4938 if (rangeEnd > totalPages) { 4939 rangeEnd = totalPages; 4940 rangeStart = totalPages - pageRange * 2; 4941 rangeStart = rangeStart < 1 ? 1 : rangeStart; 4942 } 4943 if (rangeStart <= 1) { 4944 rangeStart = 1; 4945 rangeEnd = Math.min(pageRange * 2 + 1, totalPages); 4946 } 4947 4948 // Making sure that 1 more page button is shown in edge positions 4949 if (pageRange === 0) { 4950 if (searchParams.page === totalPages) { 4951 rangeStart = totalPages <= 1 ? 1 : totalPages - 1; 4952 } 4953 if (searchParams.page === 1) { 4954 rangeEnd = Math.min(2, totalPages); 4955 } 4956 } 4957 4958 // Render pagination list 4959 if (mode === 'NUMBERED_PAGINATION') { 4960 el.innerHTML = generateHTML({ 4961 currentPage: searchParams.page, 4962 pageRange: pageRange, 4963 rangeStart: rangeStart, 4964 rangeEnd: rangeEnd 4965 }); 4966 if (totalPages < 2 && hidePaginationOnFirstPage) { 4967 container.style.display = 'none'; 4968 } else { 4969 container.style.display = ''; 4970 } 4971 } else if (mode === 'LOAD_MORE_BUTTON') { 4972 if (searchParams.page >= totalPages) {
4973 loadMoreButton.style.display = 'none'; 4974 } else { 4975 loadMoreButton.style.display = ''; 4976 } 4977 } 4978 } 4979 function render(data) { 4980 renderPaginationList(); 4981 4982 // Render new content with handlebars 4983 var html = ''; 4984 if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) { 4985 // If using load more, append search results to existing results 4986 html = dataContainer.innerHTML; 4987 } 4988 for (var i = 0; i < data.length; i++) { 4989 var itemData = recursivelyParse(data[i]); 4990 itemData.sectionIndex = options.sectionIndex; 4991 itemData.renderOptions = options.renderOptions; 4992 html += template(itemData); 4993 } 4994 dataContainer.innerHTML = html; 4995 4996 // Scroll Top 4997 if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) { 4998 // Only animate to the top if we replace dataContainer (numbered pagination) 4999 setTimeout(() => { 5000 const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset; 5001 window.scrollTo({ 5002 top: scrollTargetOffsetTop, 5003 behavior: 'smooth' 5004 }); 5005 }, 250); 5006 } 5007 return true; 5008 } 5009 function generateHTML(args) { 5010 const totalPages = getTotalPage(); 5011 const { 5012 rangeStart, 5013 rangeEnd 5014 } = args; 5015 const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 5016 ...searchParams, 5017 page 5018 }); 5019 let html = ''; 5020 if (showPrevious || showPageNumbers || showNext) { 5021 html += '<div class="paginationjs-pages"><ul>'; 5022 5023 // Previous button 5024 if (showPrevious) { 5025 if (searchParams.page <= 1) { 5026 html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`; 5027 } else { 5028 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>`; 5029 } 5030 } 5031 5032 // Pages 5033 if (showPageNumbers) { 5034 if (rangeStart <= 3) { 5035 for (let i = 1; i < rangeStart; i++) { 5036 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>`; 5037 } 5038 } else { 5039 if (showFirstOnEllipsisShow) { 5040 html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`; 5041 } 5042 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 5043 } 5044 for (let i = rangeStart; i <= rangeEnd; i++) { 5045 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>`; 5046 } 5047 if (rangeEnd < totalPages - 2) { 5048 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 5049 if (showLastOnEllipsisShow) { 5050 html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`; 5051 } 5052 } else { 5053 for (let i = rangeEnd + 1; i <= totalPages; i++) { 5054 html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`; 5055 } 5056 } 5057 } 5058 5059 // Next button 5060 if (showNext) { 5061 if (searchParams.page >= totalPages) { 5062 html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`; 5063 } else { 5064 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>`; 5065 } 5066 } 5067 html += '</ul></div>'; 5068 } 5069 return html; 5070 } 5071 function go(newSearchParams, callback, restorationVisit) { 5072 if (disabled) return; 5073 var goToPageNumber = newSearchParams.page; 5074 5075 // Page number is out of bounds 5076 if (!goToPageNumber || goToPageNumber < 1) return; 5077 var totalPage = getTotalPage(); 5078 5079 // Page number is out of bounds 5080 if (!restorationVisit && totalNumber > 0) { 5081 if (goToPageNumber > totalPage) return; 5082 } 5083 if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
5084 var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 5085 ...newSearchParams, 5086 page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null 5087 }); 5088 if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) { 5089 window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, { 5090 queryString: true 5091 })); 5092 } 5093 } 5094 5095 // Fetch and update page 5096 fetchData(newSearchParams, renderWithData); 5097 disabled = true; 5098 function renderWithData(err, data, count) { 5099 if (err) { 5100 dataContainer.dispatchEvent(new Event('error')); 5101 } else { 5102 searchParams = { 5103 ...newSearchParams 5104 }; 5105 totalNumber = count - offset; 5106 if (data.length === 0) { 5107 dataContainer.dispatchEvent(new Event('no-data')); 5108 } else { 5109 dataContainer.dispatchEvent(new Event('data')); 5110 } 5111 render(data); 5112 firstRender = false; 5113 } 5114 disabled = false; 5115 renderBySearch = false; 5116 } 5117 } 5118 function areQueryParamsEqual(first, second) { 5119 var differ = Object.keys(first).find(function (key) { 5120 return first[key] !== undefined && first[key] !== null && first[key] !== second[key]; 5121 }); 5122 if (differ) { 5123 return false; 5124 } 5125 differ = Object.keys(second).find(function (key) { 5126 return second[key] !== undefined && second[key] !== null && second[key] !== first[key]; 5127 }); 5128 return !differ; 5129 } 5130 function next(callback) { 5131 go({ 5132 ...searchParams, 5133 page: searchParams.page + 1 5134 }, callback); 5135 } 5136 function previous(callback) { 5137 go({ 5138 ...searchParams, 5139 page: searchParams.page - 1 5140 }, callback); 5141 } 5142 function refresh(callback) { 5143 go(searchParams, callback); 5144 } 5145 function update(params, callback) { 5146 renderBySearch = true; 5147 go(params, callback); 5148 } 5149 function observer() { 5150 if (searchContainer) { 5151 searchContainer.addEventListener('search', function (event, newSearchParams) { 5152 newSearchParams = event.detail || newSearchParams; 5153 update({ 5154 ...searchParams, 5155 ...newSearchParams, 5156 page: 1 5157 }); 5158 }); 5159 searchContainer.addEventListener('clear-search', function () { 5160 const defaultSearchParams = { 5161 ...DefaultSearchParams 5162 }; 5163 const isCurrentSearchFormStateDefault = areQueryParamsEqual({ 5164 ...defaultSearchParams, 5165 page: null 5166 }, { 5167 ...searchParams, 5168 page: null 5169 }); 5170 5171 // if mode is LOAD_MORE_BUTTON we should't make anything on clear 5172 // when search form have default state 5173 if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') { 5174 return; 5175 } 5176 5177 // if someone initially go to some page and click 'Clear' on search from 5178 // we should't navigate to first page. We should preserve page value 5179 if (isCurrentSearchFormStateDefault) { 5180 defaultSearchParams.page = searchParams.page; 5181 } 5182 syncSearchFormState(defaultSearchParams); 5183 update(defaultSearchParams); 5184 }); 5185 } 5186 if (mode === 'LOAD_MORE_BUTTON') { 5187 loadMoreButton.addEventListener('click', function (event) { 5188 go({ 5189 ...searchParams, 5190 page: searchParams.page + 1 5191 }); 5192 return false; 5193 }); 5194 } 5195 if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') { 5196 // Do initial render 5197 go(Object.assign({}, searchParams, { 5198 page: 1 5199 })); 5200 return; 5201 } 5202 if (mode === 'NUMBERED_PAGINATION') { 5203 // Go to specified page number 5204 container.addEventListener(eventPrefix + 'go', function (event) { 5205 let { 5206 pageNumber, 5207 done 5208 } = event.detail || {}; 5209 pageNumber = parseInt(pageNumber, 10); 5210 if (!pageNumber) { 5211 return; 5212 } 5213 go({ 5214 ...searchParams, 5215 page: pageNumber 5216 }, done); 5217 }); 5218 5219 // Page number button click 5220 el.addEventListener('click', function (event) { 5221 let clickTarget = event.target; 5222 let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next'); 5223 let pageNumber = current?.getAttribute('data-num'); 5224 if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) { 5225 return; 5226 } else { 5227 go({ 5228 ...searchParams, 5229 page: parseInt(pageNumber, 10) 5230 }); 5231 } 5232 event.preventDefault(); 5233 }); 5234 5235 // Whether to load the default page 5236 var defaultPageNumber = searchParams.page; 5237 if (triggerPagingOnInit) {
5238 container.dispatchEvent(new CustomEvent(eventPrefix + 'go', { 5239 detail: { 5240 pageNumber: defaultPageNumber 5241 } 5242 })); 5243 } 5244 } 5245 window.addEventListener('popstate', function (event) { 5246 var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 5247 if (!areQueryParamsEqual(newParams, searchParams)) { 5248 go(newParams, null, true); 5249 if (searchContainer) { 5250 syncSearchFormState(newParams); 5251 } 5252 } 5253 }); 5254 } 5255 function replaceVariables(template, variables) { 5256 var formattedString; 5257 for (var key in variables) { 5258 var value = variables[key]; 5259 var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img'); 5260 formattedString = (formattedString || template).replace(regexp, value); 5261 } 5262 return formattedString; 5263 } 5264 function isTextEditorValue(obj) { 5265 return 'raw' in obj || 'gjs' in obj; 5266 } 5267 function getTextEditorValue(obj) { 5268 if (!obj.html) { 5269 return ''; 5270 } 5271 var data = obj.html; 5272 var css = (obj.raw || obj.gjs || {}).css; 5273 if (css) { 5274 data = data + '<style>' + css + '</style>'; 5275 } 5276 return data; 5277 } 5278 5279 /** 5280 * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor. 5281 * strips out raw proprties and returns only HTML if it exists. 5282 * @param {Object} resources a collection retrieved from the database 5283 * @return {Object} the newly modified object. 5284 */ 5285 function recursivelyParse(resources) { 5286 forEach(resources, function (value, key) { 5287 if (!value) { 5288 return; 5289 } 5290 if (value instanceof Object) { 5291 if (isTextEditorValue(value)) { 5292 resources[key] = getTextEditorValue(value); 5293 return; 5294 } else { 5295 return recursivelyParse(value); 5296 } 5297 } 5298 try { 5299 var parsedData = JSON.parse(value); 5300 if (isTextEditorValue(parsedData)) { 5301 resources[key] = getTextEditorValue(parsedData); 5302 } 5303 } catch (e) { 5304 // do nothing if we failed to parse value as JSON 5305 } 5306 }); 5307 return resources; 5308 } 5309 function forEach(collection, iteratee) { 5310 var func = Array.isArray(collection) ? arrayEach : baseFor; 5311 return func(collection, iteratee); 5312 } 5313 function baseFor(object, iteratee) { 5314 if (!object) { 5315 return; 5316 } 5317 var iterable = Object(object); 5318 var props = Object.keys(object); 5319 var length = props.length; 5320 var index = -1; 5321 while (length--) { 5322 var key = props[++index]; 5323 if (iteratee(iterable[key], key, iterable) === false) { 5324 break; 5325 } 5326 } 5327 return object; 5328 } 5329 function objSet(obj, path, value) { 5330 const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g); 5331 pathArray.reduce((acc, key, i) => { 5332 if (acc[key] === undefined) acc[key] = {}; 5333 if (i === pathArray.length - 1) acc[key] = value; 5334 return acc[key]; 5335 }, obj); 5336 } 5337 function arrayEach(array, iteratee) { 5338 var index = -1; 5339 var length = array.length; 5340 while (++index < length) { 5341 if (iteratee(array[index], index, array) === false) { 5342 break; 5343 } 5344 } 5345 return array; 5346 } 5347 function selectPageRangeMode(e) { 5348 pageRange = e.matches ? mobilePageRange : desktopPageRange; 5349 renderPaginationList(); 5350 } 5351 paginationMql.addEventListener('change', selectPageRangeMode); 5352})('section-da5a7210-1edb-47e6-b554-6eb250d17dad', JSON.parse("{\"pageSize\":\"10\",\"resource\":\"properties\",\"pageRange\":0,\"variables\":{\"limit\":10,\"order\":\"salesPrice\",\"offset\":0,\"sortDir\":\"ASC\",\"statusId\":\"{{variables.statusId}}\",\"companyId\":\"f62f900d-59fc-4354-b573-bcc1e7da46a2\",\"categoryId\":\"{{pageElement.categoryId}}\",\"sort\":\"salesPrice\",\"propertyIds\":[\"e9b5ea96-5bf8-42f9-ad17-f43d1d63967d\",\"d2ab93f4-7d4b-4eae-ae0f-2da81abd914e\",\"edf8ff7a-356b-4840-a45f-7ba3d61de0eb\",\"2add7141-a4e0-441b-84cd-69562d87db78\",\"7d5a21ae-6cd6-4833-a47e-fbe9405ffc09\",\"cf056b6c-8cbc-43d3-8701-731deb0a3d94\",\"46bbd6cf-12e9-4e82-8852-15a2e29d0527\",\"2353b191-7c67-47b9-a512-3439af93273d\",\"34988cf4-466d-432a-9eb7-49406b37e543\",\"485d989e-c1d8-4f63-8dca-ae8adc75d8fb\",\"8e800923-5612-4d5b-ae01-d9e3e6271c31\",\"44c6fa54-8a76-4a6a-86bc-4ee4e757c560\"],\"advancedFilters\":{\"query\":{\"statusIds\":{\"in\":[]}}},\"websiteId\":\"a1e3c847-d1ba-4058-a24c-e7ce6eef6e17\"},\"searchFormParams\":[{\"param\":\"neighborhoodId\",\"urlKey\":\"neighborhood\"},{\"param\":\"search\",\"urlKey\":\"search\"},{\"type\":\"int\",\"param\":\"salesPriceGTE\",\"urlKey\":\"pricemin\",\"formKey\":\"priceMin\"},{\"type\":\"int\",\"param\":\"salesPriceLTE\",\"urlKey\":\"pricemax\",\"formKey\":\"priceMax\"},{\"type\":\"int\",\"param\":\"leasePriceGTE\",\"urlKey\":\"lpricemin\",\"formKey\":\"lpriceMin\"},{\"type\":\"int\",\"param\":\"leasePriceLTE\",\"urlKey\":\"lpricemax\",\"formKey\":\"lpriceMax\"},{\"type\":\"int\",\"param\":\"livingSpaceSizeGTE\",\"urlKey\":\"areamin\",\"formKey\":\"areaMin\"},{\"type\":\"int\",\"param\":\"livingSpaceSizeLTE\",\"urlKey\":\"areamax\",\"formKey\":\"areaMax\"}],\"resourceQueryOption\":\"query\",\"hidePaginationOnFirstPage\":true,\"query\":\"query Properties($agentIds: [ID!], $teamIds: [ID!], $neighborhoodIds: [ID!], $officeIds: [ID!], $propertyId: ID, $companyId: String, $networkId: String, $network: Boolean, $statusId: String, $propertyIds: [ID!], $prioritizeIds: Boolean, $statusIds: [String!], $excludeStatusId: [String!], $neighborhoodId: String, $addressState: [String!], $addressCity: [String!], $relatedNeighborhoodPropertyId: String, $developmentId: String, $featuredListing: Boolean, $leaseProperty: Boolean, $search: String, $searchTermMode: SearchTermModeEnum, $globalProperty: Boolean, $archived: Boolean, $salesPriceGTE: Float, $salesPriceLTE: Float, $leasePriceGTE: Float, $leasePriceLTE: Float, $livingSpaceSizeGTE: Float, $livingSpaceSizeLTE: Float, $bathCountGTE: Float, $bathCountLTE: Float, $bedroomCountGTE: Float, $bedroomCountLTE: Float, $architectureStyle: String, $lifestyle: String, $propertyTypeId: String, $propertyTypeIds: [String!], $spaceTypeIds: [ID!], $tag: String, $backfillMLSResults: Boolean, $displayMLSListings: String, $hostname: String, $websiteId: ID, $backfillProviders: [String!], $backfillMLSListingIds: [String!], $backfillMLSAgentIds: [String!], $backfillMLSOfficeIds: [String!], $backfillBoundary: JSON, $openHouse: Boolean, $withGeo: Boolean, $advancedFilters: JSON, $seasonalPriceId: ID, $offset: Int, $limit: Int, $sort: String, $sortDir: SortDirectionEnum) {\\n properties(\\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 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 slug\\n name\\n status\\n priceUponRequest\\n currency\\n salesPrice\\n reducedPrice\\n isPasswordProtected\\n leaseProperty\\n leasePrice\\n leasePeriod\\n privateAddress\\n fromMLS\\n mlsId\\n mlsLogo\\n mlsAttribution\\n openHouseHours\\n fullAddress\\n lotAreaSize\\n lotAreaUnits\\n media {\\n smallUrl\\n mediumUrl\\n largeUrl\\n xLargeUrl\\n xxLargeUrl\\n width\\n height\\n altTagText\\n }\\n bedroomCount\\n bathCount\\n soldDate\\n livingSpaceSize\\n livingSpaceUnits\\n types {\\n id\\n name\\n }\\n }\\n propertiesCount(\\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 count\\n }\\n}\",\"routerPropertyDisclaimers\":[\"mlsAttribution\",\"mlsLogo\"],\"companyId\":\"f62f900d-59fc-4354-b573-bcc1e7da46a2\",\"usePageResource\":false,\"sectionIndex\":7,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 5353} catch(e) { 5354console.log(e); 5355} 5356 try { 5357(function init(sectionDomId) { 5358 $(document).on("click", '#' + sectionDomId + ' .property-list__share .btn', function () { 5359 if ($(this).parent().hasClass('property-list__share--opened')) { 5360 $(this).parent().removeClass('property-list__share--opened'); 5361 } else { 5362 $('#' + sectionDomId + ' .property-list__share').removeClass('property-list__share--opened'); 5363 $(this).parent().addClass('property-list__share--opened'); 5364 } 5365 }); 5366 const emptyResultElement = $('#' + sectionDomId + ' .empty-result'); 5367 const searchContainer = $('#' + sectionDomId + ' .search-container'); 5368 const dataContainer = $('#' + sectionDomId + ' .data-container'); 5369 const paginationContainer = $(`#${sectionDomId} .pagination-container`); 5370 const priceSlider = searchContainer.find('input[name="price-slider"]');
5371 const areaSlider = searchContainer.find('input[name="area-slider"]'); 5372 const neighborhoodSelect = searchContainer.find('select[name="neighborhood-select"]'); 5373 const searchInput = searchContainer.find('input[name="search-input"]'); 5374 const clearBtn = searchContainer.find('.clear'); 5375 const priceMin = parseInt(priceSlider.attr('data-min')); 5376 const priceMax = parseInt(priceSlider.attr('data-max')); 5377 const areaMin = parseInt(areaSlider.attr('data-min')); 5378 const areaMax = parseInt(areaSlider.attr('data-max')); 5379 const rangeSliderInitialized = $(`#${sectionDomId} .search-item .irs`).length >= 1; 5380 const filterLease = searchContainer.data('filter-lease'); 5381 function onSearch() { 5382 const params = window.luxuryPresence.getSearchFormValues({ 5383 queryElement: searchInput[0], 5384 priceSliderElement: priceSlider[0], 5385 areaSliderElement: areaSlider[0], 5386 neighborhoodSelect: neighborhoodSelect[0] 5387 }); 5388 if (filterLease) { 5389 params.lpriceMin = params.priceMin; 5390 params.lpriceMax = params.priceMax; 5391 delete params.priceMin; 5392 delete params.priceMax; 5393 } 5394 if (!areaSlider.attr('data-min')) params.areaMin = null; 5395 if (!areaSlider.attr('data-max')) params.areaMax = null; 5396 searchContainer[0]?.dispatchEvent(new CustomEvent('search', { 5397 detail: params 5398 })); 5399 } 5400 searchContainer.on('neighborhoods-data', function (ev, neighborhoods) { 5401 neighborhoods = ev.detail || neighborhoods; 5402 neighborhoodSelect.append(neighborhoods.data.map(item => `<option value="${item.value}">${item.label}</option>`).join('\n')); 5403 }); 5404 searchContainer.on('sync', function (ev, params) { 5405 params = ev.detail || params; 5406 searchInput.val(params.search); 5407 neighborhoodSelect.val(params.neighborhoodId); 5408 priceSlider.data('ionRangeSlider').update({ 5409 from: filterLease ? params.lpriceMin : params.priceMin, 5410 to: filterLease ? params.lpriceMax : params.priceMax 5411 }); 5412 areaSlider.data('ionRangeSlider').update({ 5413 from: params.areaMin, 5414 to: params.areaMax 5415 }); 5416 }); 5417 dataContainer.on('no-data', function () { 5418 emptyResultElement.show(); 5419 }); 5420 dataContainer.on('data', function () { 5421 emptyResultElement.hide(); 5422 }); 5423 clearBtn.click(function () { 5424 searchContainer[0]?.dispatchEvent(new Event('clear-search')); 5425 }); 5426 searchInput.on('input', window.luxuryPresence.debounce(onSearch, 1000)); 5427 neighborhoodSelect.change(onSearch); 5428 if (rangeSliderInitialized) { 5429 if (!priceSlider.destroy) { 5430 $(`#${sectionDomId} .search-item.price >.irs`).remove(); 5431 initPriceSlider(); 5432 } 5433 if (!areaSlider.destroy) { 5434 $(`#${sectionDomId} .search-item.area >.irs`).remove(); 5435 initAreaSlider(); 5436 } 5437 } else { 5438 initPriceSlider(); 5439 initAreaSlider(); 5440 } 5441 function initPriceSlider() { 5442 priceSlider.ionRangeSlider({ 5443 type: "double", 5444 skin: 'round', 5445 grid: false, 5446 force_edges: false, 5447 hide_min_max: false, 5448 hide_from_to: false, 5449 block: false, 5450 prettify: function (val) { 5451 return window.luxuryPresence.formatSliderPriceRange(val, { 5452 min: priceMin, 5453 max: priceMax 5454 }, "$", { 5455 lowPrefix: "<", 5456 highSuffix: "+" 5457 }); 5458 }, 5459 onFinish: onSearch 5460 }); 5461 } 5462 function initAreaSlider() { 5463 areaSlider.ionRangeSlider({ 5464 type: "double", 5465 skin: 'round', 5466 grid: false, 5467 force_edges: false, 5468 hide_min_max: false, 5469 hide_from_to: false, 5470 block: false, 5471 prettify: function (val) { 5472 return window.luxuryPresence.formatSliderAreaRange(val, { 5473 min: areaMin, 5474 max: areaMax 5475 }, "sqft", { 5476 lowPrefix: "<", 5477 highSuffix: "+" 5478 }); 5479 }, 5480 onFinish: onSearch 5481 }); 5482 } 5483})('section-da5a7210-1edb-47e6-b554-6eb250d17dad', JSON.parse("{\"resource\":\"properties\",\"useRouterApi\":false,\"companyId\":\"f62f900d-59fc-4354-b573-bcc1e7da46a2\",\"usePageResource\":false,\"sectionIndex\":7,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 5484} catch(e) { 5485console.log(e); 5486} 5487 try { 5488(function init(sectionDomId) { 5489 var $section = $("#" + sectionDomId); 5490 var $slider = $section.find(".carousel-container"); 5491 var columnsCount = $slider.data('columns'); 5492 var sliedsCount; 5493 var itemsCount = $slider.find(".video-gallery__slide").length; 5494 if (itemsCount % columnsCount > 0) { 5495 $slider.addClass('centered'); 5496 }
5497 var $carouselControls = $section.find(".carousel-controls"); 5498 var headerHeight = $("body > header").height(); 5499 if (!headerHeight || headerHeight < 100) headerHeight = 100; 5500 const sliderOptions = { 5501 "dots": true, 5502 "fade": true, 5503 "rows": columnsCount == 2 ? 3 : 2, 5504 "arrows": true, 5505 "infinite": false, 5506 "touchMove": false, 5507 "appendDots": $carouselControls, 5508 "slidesPerRow": columnsCount, 5509 "adaptiveHeight": true, 5510 "appendArrows": $carouselControls, 5511 "nextArrow": "<ul><li class='paginationjs-next'><a></a></li></ul>", 5512 "prevArrow": "<ul><li class='paginationjs-prev'><a></a></li></ul>", 5513 "customPaging": function (slider, i) { 5514 return '<a>' + (i + 1) + '</a>'; 5515 }, 5516 "responsive": [{ 5517 "settings": { 5518 "rows": 3, 5519 "slidesPerRow": 2, 5520 "adaptiveHeight": true 5521 }, 5522 "breakpoint": 991 5523 }, { 5524 "settings": { 5525 "rows": 2, 5526 "slidesPerRow": 1 5527 }, 5528 "breakpoint": 575 5529 }] 5530 }; 5531 $section.find('.carousel-container').not('.slick-initialized').slick(sliderOptions); 5532 function showHidePages() { 5533 $section.find('.carousel-controls .slick-disabled li').addClass('disabled'); 5534 $section.find('.carousel-controls .slick-dots .slick-active').addClass('active'); 5535 slidesCount = $slider.find('.slick-slide').length; 5536 if (slidesCount < 2) { 5537 $section.find('.carousel-controls').hide(); 5538 } else { 5539 $section.find('.carousel-controls').show(); 5540 } 5541 } 5542 showHidePages(); 5543 function scrollToSectionTop() { 5544 $section.find('.carousel-controls .slick-disabled li').removeClass('disabled'); 5545 $('html, body').animate({ 5546 scrollTop: $slider.offset().top - headerHeight 5547 }, 1000, 'linear'); 5548 } 5549 $slider.on("beforeChange", scrollToSectionTop); 5550 $slider.on("afterChange", function () { 5551 $section.find('.pagination-container').find('.slick-dots .active').removeClass('active'); 5552 $section.find('.pagination-container').find('.slick-dots .slick-active').addClass('active'); 5553 $section.find('.carousel-controls .slick-disabled li').addClass('disabled'); 5554 }); 5555 function renderDots() { 5556 var $dots = $("#" + sectionDomId + " .slick-dots"); 5557 var $dotsItems = $dots.children("li"); 5558 $dotsItems.removeClass("li-hidden"); 5559 var dotsWidth = $carouselControls.width() - $carouselControls.find(".paginationjs-prev").outerWidth(true) - $carouselControls.find(".paginationjs-next").outerWidth(true); 5560 var dotItemWidth = $dotsItems.last().outerWidth(true); 5561 var totalDotsCount = $dotsItems.length; 5562 var dotsToShow = Math.floor(dotsWidth / dotItemWidth); 5563 var activeItem = $dots.find(".slick-active")[0]; 5564 var activeItemIndex = $dotsItems.index(activeItem); 5565 var mql = window.matchMedia('(min-width: 576px)').matches; 5566 var dummyFirstSlide = activeItemIndex === 0 ? 1 : ''; 5567 var dummyLastSlide = activeItemIndex === totalDotsCount - 1 ? totalDotsCount - 2 : ''; 5568 var showIndices = mql ? [0, totalDotsCount - 1, activeItemIndex - 1, activeItemIndex, activeItemIndex + 1] : [0, dummyFirstSlide, dummyLastSlide, activeItemIndex, totalDotsCount - 1]; 5569 if (totalDotsCount > dotsToShow) { 5570 $dotsItems.filter(function (index) { 5571 return showIndices.indexOf(index) === -1; 5572 }).addClass("li-hidden").filter(function () { 5573 return !$(this).next().hasClass("li-hidden") && !$(this).prev().hasClass("li-hidden"); 5574 }).removeClass("li-hidden"); 5575 } 5576 } 5577 renderDots(); 5578 $slider.on("afterChange", renderDots); 5579 $(window).on("resize", renderDots); 5580 var resizeTimer; 5581 $(window).on('resize', function (e) { 5582 clearTimeout(resizeTimer); 5583 resizeTimer = setTimeout(function () { 5584 showHidePages(); 5585 }, 100); 5586 }); 5587 var $modalsContainer = $section.find('.video-gallery__modals'); 5588 var $modals = $modalsContainer.find('.video-gallery__modal'); 5589 var scrollLockId = sectionDomId + '_popup'; 5590 function handleEscapeKey(e) { 5591 if (e.key === 'Escape') closeActiveModal(); 5592 } 5593 function closeActiveModal() { 5594 var $active = $modals.filter('.visible'); 5595 if (!$active.length) return; 5596 $active.removeClass('visible').attr('aria-hidden', 'true'); 5597 if (window.lpUI && window.lpUI.releaseScrollLock) { 5598 window.lpUI.releaseScrollLock(scrollLockId); 5599 } 5600 document.removeEventListener('keydown', handleEscapeKey); 5601 } 5602 function openModalFor($trigger) { 5603 var index = $trigger.data('video-index'); 5604 closeActiveModal();
5605 var $targetModal = $modals.filter('[data-video-index="' + index + '"]'); 5606 if (!$targetModal.length) return; 5607 $targetModal.addClass('visible').attr('aria-hidden', 'false'); 5608 if (window.lpUI && window.lpUI.requestScrollLock) { 5609 window.lpUI.requestScrollLock(scrollLockId); 5610 } 5611 document.addEventListener('keydown', handleEscapeKey); 5612 } 5613 $section.on('click', '.js-read-more', function (e) { 5614 e.preventDefault(); 5615 e.stopPropagation(); 5616 openModalFor($(this)); 5617 }); 5618 $section.on('keydown', '.js-read-more', function (e) { 5619 if (e.key === 'Enter' || e.key === ' ') { 5620 e.preventDefault(); 5621 e.stopPropagation(); 5622 openModalFor($(this)); 5623 } 5624 }); 5625 $section.on('click', '.video-card__description', function (e) { 5626 var $readMore = $(this).siblings('.js-read-more'); 5627 if (!$readMore.length) return; 5628 e.preventDefault(); 5629 e.stopPropagation(); 5630 openModalFor($readMore); 5631 }); 5632 $modalsContainer.on('click', '.video-gallery__modal', function (e) { 5633 if (e.target === this) closeActiveModal(); 5634 }); 5635 $modalsContainer.on('click', '.js-modal-close', function (e) { 5636 e.preventDefault(); 5637 e.stopPropagation(); 5638 closeActiveModal(); 5639 }); 5640})('section-ba43671b-3100-4991-8247-7989a4b81495', 'undefined'); 5641} catch(e) { 5642console.log(e); 5643} 5644 try { 5645(function init(sectionDomId) {})('section-26ef12a8-1616-4b4e-a92a-f7e63cf93b7a', 'undefined'); 5646} catch(e) { 5647console.log(e); 5648} 5649 try { 5650(function init(sectionDomId) { 5651 $('#' + sectionDomId + ' .videoListLink').click(function (e) { 5652 $('#' + sectionDomId).find('.v-carousel__preview-item').hide(); 5653 $('#' + sectionDomId).find(String($(this).attr('data-tab'))).show(); 5654 }); 5655})('section-97efe40a-6bdb-4a9e-87bc-c47975e11673', 'undefined'); 5656} catch(e) { 5657console.log(e); 5658} 5659 try { 5660(function init(sectionDomId) { 5661 const $section = $('#' + sectionDomId); 5662 if ($section.find('.parallax').length) $section.addClass('parallax-enabled'); 5663 if ($section.find('.video-wrapper').length) $section.addClass('video'); 5664})('section-c00cff8c-7bf7-439f-a337-b3977159e28e', 'undefined'); 5665} catch(e) { 5666console.log(e); 5667} 5668 try { 5669(function init(sectionDomId, options) { 5670 let section = null; 5671 switch (sectionDomId) { 5672 case 'NAVBAR': 5673 section = document.querySelector('body > nav, #global-navbar'); 5674 break; 5675 case 'FOOTER': 5676 section = document.querySelector('body > footer, #global-footer'); 5677 break; 5678 case 'SIDEMENU': 5679 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 5680 break; 5681 case 'CONTACT': 5682 section = document.querySelector('#modal-global-contact-us'); 5683 break; 5684 case 'MOBILE_CONTACT': 5685 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 5686 break; 5687 case 'SUBSCRIBE': 5688 // Subscribe Not Implemented 5689 section = null; 5690 break; 5691 case 'ACCOUNT': 5692 // Account Not Implemented 5693 section = null; 5694 break; 5695 default: 5696 section = document.querySelector('#' + sectionDomId); 5697 } 5698 if (!section) { 5699 return; 5700 } 5701 var url = window.luxuryPresence.defaults.routerUrl; 5702 var companyId = window.luxuryPresence.defaults.companyId; 5703 var limit = options.limit || 8; 5704 if (typeof limit === 'string') { 5705 limit = parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected 5706 } 5707 var templateSelector = options.templateSelector || '.jsIGTemplate'; 5708 var containerSelector = options.containerSelector || '.jsIGContainer'; 5709 var hasDataClass = options.hasDataClass || 'has-data'; 5710 var hideActivateMessage = options.hasDataClass || false; 5711 var payload = { 5712 companyId: companyId, 5713 limit: limit 5714 }; 5715 if (options.resourceId && typeof options.resourceId === 'string' && !options.resourceId.match(/^{{.*}}$/)) { 5716 payload.resourceId = options.resourceId; 5717 // Federated enum values are uppercase (AGENT/TEAM); element configs carry lowercase 5718 payload.resource = String(options.resource || 'agent').toUpperCase(); 5719 payload.fallbackToNoResource = options.fallbackToNoResource === 'true' || options.fallbackToNoResource === true; 5720 } 5721 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'; 5722 var templateHTML = section.querySelector(templateSelector)?.innerHTML || ''; 5723 var template = Handlebars.compile(templateHTML); 5724 var container = section.querySelector(containerSelector); 5725 if (options.variables) {
5726 Object.keys(options.variables).forEach(function (key) { 5727 if (options.variables.hasOwnProperty(key) && (typeof options.variables[key] !== 'string' || !options.variables[key].match(/^{{.*}}$/))) { 5728 payload[key] = options.variables[key]; 5729 } 5730 }); 5731 } 5732 function getData() { 5733 var feed = { 5734 error: true 5735 }; 5736 if (payload.companyId == null || payload.companyId === '') { 5737 // instagramContentFeed requires companyId (ID!) â nothing to fetch without it. 5738 // Checked after the options.variables merge, which may override the default. 5739 // Deferred so element listeners (attached after this template runs) still receive it. 5740 setTimeout(function () { 5741 section.dispatchEvent(new CustomEvent('ig-data', { 5742 detail: feed 5743 })); 5744 }, 0); 5745 return; 5746 } 5747 superagent.post(url + '/graphql').send({ 5748 query: query, 5749 variables: payload 5750 }).then(res => { 5751 try { 5752 if (!res.body.errors) { 5753 feed = res.body.data.instagramContentFeed; 5754 if (!feed.active) { 5755 if (!hideActivateMessage && sectionDomId === 'section-temp' && container) { 5756 if (payload.resourceId) { 5757 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>'; 5758 } else { 5759 container.innerHTML = '<div style="text-align: center">Instagram account is not connected.<br /> Connect it on <a href="/profile">Profile page</a></div>'; 5760 } 5761 } 5762 } else { 5763 if (feed.items.length) { 5764 if (hasDataClass) { 5765 section.classList.add(hasDataClass); 5766 } 5767 const feedName = feed.username; 5768 section.querySelectorAll('.jsIGLink').forEach(link => link.setAttribute('href', feed.feedUrl)); 5769 section.querySelectorAll('.jsIGName').forEach(name => { 5770 name.textContent = '@' + feedName; 5771 name.setAttribute('title', '@' + feedName); 5772 }); 5773 if (container && template) { 5774 container.innerHTML = template(feed); 5775 } 5776 } 5777 } 5778 } 5779 } catch (e) {} 5780 section.dispatchEvent(new CustomEvent('ig-data', { 5781 detail: feed 5782 })); 5783 }).catch(e => { 5784 console.log('err', e); 5785 section.dispatchEvent(new CustomEvent('ig-data', { 5786 detail: feed 5787 })); 5788 }); 5789 } 5790 getData(); 5791})('section-1f1e0e09-5bb1-47a1-9029-aeb58682521d', JSON.parse("{\"limit\":33,\"resource\":\"agent\",\"resourceId\":\"\",\"fallbackToNoResource\":\"true\",\"companyId\":\"f62f900d-59fc-4354-b573-bcc1e7da46a2\",\"usePageResource\":false,\"sectionIndex\":12,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 5792} catch(e) { 5793console.log(e); 5794} 5795 try { 5796(function init(sectionDomId) { 5797 const $section = $('#' + sectionDomId); 5798 var templateHTML = $section.find('.jsIGItem').html(); 5799 var itemTemplate = templateHTML && Handlebars.compile(templateHTML); 5800 const $container = $section.find('.ig-feed-feed'); 5801 const $topPrev = $section.find('.top-nav-prev'); 5802 const $topNext = $section.find('.top-nav-next'); 5803 const $bottomPrev = $section.find('.bottom-nav-prev'); 5804 const $bottomNext = $section.find('.bottom-nav-next'); 5805 let limit = 33; 5806 try { 5807 limit = parseInt($container[0].dataset['limit']); 5808 } catch (e) {} 5809 if (!limit) { 5810 limit = 33; 5811 } 5812 let igFeed = {}; 5813 let usedWidth = 0; 5814 let slider = null; 5815 $section.on('ig-data', function (ev, feed) { 5816 feed = ev.detail || feed; 5817 igFeed = feed; 5818 if (feed.active && feed.items.length) { 5819 buildSlider(); 5820 } 5821 }); 5822 $(window).on('resize.lpui-auto-clean', onResize); 5823 let timer = null; 5824 function onResize() { 5825 clearTimeout(timer); 5826 timer = window.setTimeout(buildSlider, 50); 5827 } 5828 function getLayout(w, n) { 5829 if (w > 1100) { 5830 if (n > 7) { 5831 return { 5832 type: 'type1', 5833 single: 1, 5834 multi: n, 5835 slides: 3, 5836 slider: n > 9 5837 }; 5838 } 5839 if (n > 5) { 5840 return { 5841 type: 'type1', 5842 single: 2, 5843 multi: n, 5844 slides: 3, 5845 slider: false 5846 }; 5847 } 5848 return { 5849 type: 'type1', 5850 single: n, 5851 multi: n, 5852 slides: 3, 5853 slider: n > 3 5854 }; 5855 } else if (w > 880) { 5856 if (n > 4) { 5857 return { 5858 type: 'type2', 5859 single: 1, 5860 multi: n, 5861 slides: 2.5, 5862 slider: n > 7 5863 }; 5864 } 5865 return { 5866 type: 'type1', 5867 single: n, 5868 multi: n, 5869 slides: 3, 5870 slider: n > 3 5871 }; 5872 } else if (w > 767) { 5873 if (n > 4) { 5874 return { 5875 type: 'type3', 5876 single: 1, 5877 multi: n, 5878 slides: 2, 5879 slider: n > 5 5880 }; 5881 } 5882 return { 5883 type: 'type4', 5884 single: n, 5885 multi: n, 5886 slides: 2, 5887 slider: n > 2 5888 }; 5889 } else if (w > 460) { 5890 return { 5891 type: 'type4', 5892 single: n, 5893 multi: n, 5894 slides: 2, 5895 slider: n > 2 5896 }; 5897 } 5898 return { 5899 type: 'type5', 5900 single: n, 5901 multi: n, 5902 slides: 1, 5903 slider: n > 1 5904 }; 5905 } 5906 function ensureClass($el, className) { 5907 if ($el.hasClass(className)) { 5908 return; 5909 } 5910 $el.addClass(className); 5911 } 5912 function makeSquare($el) { 5913 const el = $el[0]; 5914 el.style.width = ''; 5915 el.style.height = ''; 5916 const rect = el.getBoundingClientRect(); 5917 if (rect.width !== rect.height) { 5918 el.style.width = rect.height + 'px'; 5919 } 5920 } 5921 function buildSlider() { 5922 const cWidth = $container[0].getBoundingClientRect().width; 5923 if (cWidth === usedWidth) { 5924 return; 5925 } 5926 $container.empty();
5927 slider = $('<div class="ig-feed-slider"></div>'); 5928 const items = igFeed.items.slice(0, limit); 5929 const layout = getLayout(cWidth, items.length); 5930 let i = 0; 5931 let slide = null; 5932 while (i < layout.single) { 5933 slide = $(`<div class="slide-single ${layout.type}"></div>`).append(itemTemplate(items[i])).appendTo(slider); 5934 i++; 5935 } 5936 while (i < layout.multi) { 5937 slide = $(`<div class="slide-multi ${layout.type}"></div>`).appendTo(slider); 5938 let slideContent = $('<div class="slide-multi-content"></div>').appendTo(slide); 5939 const lim = i + 4; 5940 while (i < lim && i < layout.multi) { 5941 slideContent.append(itemTemplate(items[i])); 5942 i++; 5943 } 5944 } 5945 $container.append(slider); 5946 if (layout.slider) { 5947 $topPrev.removeClass('hidden-control'); 5948 $topNext.removeClass('hidden-control'); 5949 $bottomPrev.removeClass('hidden-control'); 5950 $bottomNext.removeClass('hidden-control'); 5951 let prev, next; 5952 if ($bottomPrev.parent()[0].getBoundingClientRect().width) { 5953 prev = $bottomPrev; 5954 next = $bottomNext; 5955 } else { 5956 prev = $topPrev; 5957 next = $topNext; 5958 makeSquare($topPrev); 5959 makeSquare($topNext); 5960 } 5961 slider.children().each(function () { 5962 this.style.width = this.getBoundingClientRect().width + 'px'; 5963 }); 5964 slider.slick({ 5965 dots: false, 5966 prevArrow: prev, 5967 nextArrow: next, 5968 slidesToScroll: 1, 5969 infinite: false, 5970 slidesToShow: layout.slides 5971 }); 5972 } else { 5973 ensureClass($topPrev, 'hidden-control'); 5974 ensureClass($topNext, 'hidden-control'); 5975 ensureClass($bottomPrev, 'hidden-control'); 5976 ensureClass($bottomNext, 'hidden-control'); 5977 } 5978 } 5979})('section-1f1e0e09-5bb1-47a1-9029-aeb58682521d', JSON.parse("{\"resource\":\"agent\",\"useRouterApi\":false,\"companyId\":\"f62f900d-59fc-4354-b573-bcc1e7da46a2\",\"usePageResource\":false,\"sectionIndex\":12,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 5980} catch(e) { 5981console.log(e); 5982} 5983 5984 var { body } = document; 5985 var globalNav = body.querySelector(':scope > nav'); 5986 var globalSideMenu = body.querySelector(':scope > div.sidemenu'); 5987 5988 document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => { 5989 modalCloseBtn.addEventListener('click', function() { 5990 window.lpUI.hideClosestModal(modalCloseBtn); 5991 }); 5992 }); 5993 5994 window.addEventListener('click', function() { 5995 document.querySelectorAll('.share-popup').forEach(sharedPopup => { 5996 sharedPopup.style.display = 'none' ; 5997 }); 5998 }); 5999 6000 /* Misc Partials / Addons */ 6001 function initWOW() { 6002 if (wow) { 6003 wow.init(); 6004 wow.scrollHandler(); 6005 setTimeout(function () { 6006 const wowHideStyle = document.getElementById('wow-hide-elements'); 6007 if(wowHideStyle) { 6008 wowHideStyle.disabled = true; 6009 } 6010 }, 1); 6011 } 6012 } 6013 6014 const wowHideElements = document.getElementById('wow-hide-elements'); 6015 if (wowHideElements) { 6016 wowHideElements.disabled = false; 6017 } 6018 6019 initWOW(); 6020 6021 /* Generic Navbar Handling */ 6022 globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => { 6023 hamburgerComponent.addEventListener('click', function() { 6024 window.lpUI.sideMenuToggle(); 6025 }); 6026 }); 6027 globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => { 6028 toggleEl.addEventListener('click', function() { 6029 window.lpUI.sideMenuToggle(); 6030 }); 6031 }); 6032 6033 document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => { 6034 linkEl.addEventListener('click', function(e) { 6035 e.preventDefault(); 6036 e.stopPropagation();
6037 var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav'); 6038 if (subNav && subNav.classList.contains('visible')){ 6039 subNav.classList.remove('visible'); 6040 } else { 6041 globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => { 6042 globalSubNav.classList.remove('visible'); 6043 }); 6044 globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => { 6045 sideMenuSubNav.classList.remove('visible'); 6046 }); 6047 subNav?.classList.add('visible'); 6048 } 6049 }); 6050 }); 6051 window.addEventListener('click', function() { 6052 document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => { 6053 subNavEl.classList.remove('visible'); 6054 }); 6055 }); 6056 6057 } 6058 6059 document.addEventListener('DOMContentLoaded', lpGlobalInit); 6060 6061 </script>
6061 6062 6063
6063<script type="module"> 6064 function selectorExists(selector) { 6065 return document.querySelector(selector) !== null; 6066 } 6067 6068 // Function to initialize the third-party library 6069 function initParoller(selector = '.my-paroller') { 6070 var $parollerElements = $(selector); 6071 if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') { 6072 $parollerElements.paroller(); 6073 } 6074 } 6075 6076 const parollerSelector = '.my-paroller'; 6077 6078 if (selectorExists(parollerSelector)) { 6079 window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() { 6080 initParoller(parollerSelector); 6081 window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true; 6082 }); 6083 } 6084 </script>
6084 6085 6086 <!-- Follow Up Boss Page View Tracker--> 6087
6087<script type="text/plain" data-consent-category="analytics"> 6088 window.widgetTracker("send", "pageview"); 6089 </script>
6089 6090 <!-- End Follow Up Boss Page View Tracker --> 6091 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 6091-6092
6091 6092 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
6092GTM-T9B3XMG5
vendor: 107 bytes, lines 6092-6094
6092" 6093 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 6094
6094<!-- End Google Tag Manager --> 6095 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 6095-6096
6095 6096 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
6096GTM-KS6CK7T
vendor: 107 bytes, lines 6096-6098
6096" 6097 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 6098
6098<!-- End Google Tag Manager --> 6099 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 6099-6100
6099 6100 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
6100GTM-W33LVZF2
vendor: 107 bytes, lines 6100-6102
6100" 6101 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 6102
6102<!-- End Google Tag Manager --> 6103 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 6103-6104
6103 6104 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
6104GTM-T9SFQGHZ
vendor: 107 bytes, lines 6104-6106
6104" 6105 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 6106
6106<!-- End Google Tag Manager --> 6107 <meta name="google-site-verification" content="k8msuRDjpS8w5cYx3ZTT1h5AJWeyq1ByU5bBxj9ZUEE" />
6108<script>function loadScript(a){var b=document.getElementsByTagName("head")[0],c=document.createElement("script");c.type="text/javascript",c.src="https://tracker.metricool.com/resources/be.js",c.onreadystatechange=a,c.onload=a,b.appendChild(c)}loadScript(function(){beTracker.t({hash:"235cbe7989331da30341109e505f2c52"})});</script>
6108 6109<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 6109-6110
6109 6110<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
6110GTM-W33LVZF2
vendor: 83 bytes, lines 6110-6111
6110" 6111height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
6112<!-- End Google Tag Manager (noscript) --> 6113
6114<script> 6115 // Store UTM parameters in localStorage 6116 (function() { 6117 const urlParams = new URLSearchParams(window.location.search); 6118 const utms = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content']; 6119 utms.forEach(param => { 6120 const value = urlParams.get(param); 6121 if (value) localStorage.setItem(param, value); 6122 }); 6123 })(); 6124 6125 // Append stored UTM parameters to internal links 6126 document.addEventListener("DOMContentLoaded", function () { 6127 const utms = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content']; 6128 const storedParams = utms 6129 .map(p => `${p}=${localStorage.getItem(p)}`) 6130 .filter(p => !p.includes('null')) 6131 .join('&'); 6132 6133 if (storedParams) { 6134 document.querySelectorAll('a[href^="/"], a[href^="https://kinokorealestate.com"]').forEach(link => { 6135 if (!link.href.includes('utm_')) { 6136 const delimiter = link.href.includes('?') ? '&' : '?'; 6137 link.href += delimiter + storedParams; 6138 } 6139 }); 6140 } 6141 }); 6142</script>
6142 6143
6144<script> (function (h,b) { var w = window, d = document, s = 'script', x, y; w['__hb_namespace'] = h; w[h] = w[h] || function () { (w[h].q=w[h].q||[]).push(arguments) }; y = d.createElement(s); x = d.getElementsByTagName(s)[0]; y.async = 1; y.src = b; x.parentNode.insertBefore(y,x) })('Homebot','https://embed.homebotapp.com/lgw/v1/widget.js'); Homebot('#homebot_homeowner', 'ac1c4f656f51751237fbb8f91d5c3ef6e874d5a79d9c7268',{'theme':'dark-mode-theme'}) </script>
6144 6145 6146
6146<script 6147 src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js" 6148 data-website-id="a1e3c847-d1ba-4058-a24c-e7ce6eef6e17" 6149 6150 defer></script>
vendor: 1 bytes, line 6150
6150
6151<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:'a42e2da88fdd36b2',t:'MTc5MDcxODM2Mg=='};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>
6151<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"d2a8f4b3d65944edb8fcd6ffce49ee5e","spa":2}' crossorigin="anonymous"></script>
6151 6152</body> 6153</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.