Help
RSS
API
Feed
Maltego
Contact
Domain > bhgmckenzierealty.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2022-12-05
35.173.72.149
(
ClassC
)
2025-01-27
52.36.242.46
(
ClassC
)
2026-02-16
104.16.160.240
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Mon, 16 Feb 2026 22:24:47 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveCache-Control: max-age3600Expires: Mon, 16 Feb 2026 23:24:47 GMTLocation: https://bhgmckenzierealty.com/Set-Cookie: __cf_bm.DA9g442HGH7ocV6LaTbEsqIH25lLF0b22No3q9HiBE-1771280687-1.0.1.1-dSdfN2ghP7nyTlgYDGSb6QfKNpq8hu5CkUPORg6ituO1oh7De2MNgDISVXRjB38PQTaKUS_jkdTce2f0F7aqFtp8D_RSD1qeOIxPFrB4Tgc; path/; expiresMon, 16-Feb-26 22:54:47 GMT; domain.bhgmckenzierealty.com; HttpOnlyServer: cloudflareCF-RAY: 9cf0750b1a268636-PDX html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>cloudflare/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Mon, 16 Feb 2026 22:24:48 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveCF-RAY: 9cf0750b6e4ea509-PDXx-powered-by: Luxury Presencex-amz-id-2: ByiyXswZgwVDJPFuI0Pfg96pymHz8W+sXwREeT+sTHWU+nOzgOnPQ322XnfTi37dwPyM/wYsjQ1ozqN6ZwdRDs9PsIg0g2V5x-amz-request-id: 5PK14GMKWV5XAPFMlast-modified: Mon, 16 Feb 2026 21:21:26 GMTx-amz-server-side-encryption: AES256Cache-Control: max-age600, stale-while-revalidate1200, publicCF-Cache-Status: EXPIREDAccept-Ranges: bytesSet-Cookie: __cf_bmNDBp0VXfo6mXKpUpKAye.P0yvH5HgkJBeJBlVJJFirI-1771280688-1.0.1.1-CtlNLgPc3FzD8FDXCqxF2pGKywLa.u2V7rYYKUYUHT8bzCx3I9UCscwwwT30HsX1.CldRSuLuPjkvXCEhdjhZ6brZXTEWewiFlCJiQ1G4Ys; path/; expiresMon, 16-Feb-26 22:54:48 GMT; domain.bhgmckenzierealty.com; HttpOnly; SecureServer: cloudflare !DOCTYPE html>html classno-js langen>head> meta charsetutf-8> meta http-equivx-ua-compatible contentieedge> meta nameviewport contentwidthdevice-width, initial-scale1.0> meta nametwitter:card contentsummary_large_image> title>Better Homes and Gardens McKenzie Realty Seattle Experts/title> meta propertyog:title contentBetter Homes and Gardens McKenzie Realty Seattle Experts> meta nametwitter:title contentBetter Homes and Gardens McKenzie Realty Seattle Experts> meta namedescription contentLooking to buy or sell in Seattle? Trust Better Homes and Gardens McKenzie Realty – your local experts. Find your dream home or sell for top dollar with us!> meta propertyog:description contentLooking to buy or sell in Seattle? Trust Better Homes and Gardens McKenzie Realty – your local experts. Find your dream home or sell for top dollar with us!> meta nametwitter:description contentLooking to buy or sell in Seattle? Trust Better Homes and Gardens McKenzie Realty – your local experts. Find your dream home or sell for top dollar with us!> meta propertyog:image contenthttps://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/2ec9d3ae-d770-4b16-8c96-6e6a4b4c6cda> meta nametwitter:image contenthttps://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/2ec9d3ae-d770-4b16-8c96-6e6a4b4c6cda> meta propertyog:url contenthttps://bhgmckenzierealty.com/> link relcanonical hrefhttps://bhgmckenzierealty.com/> script>(function(html){html.className html.className.replace(/\bno-js\b/,js)})(document.documentElement);/script> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link relstylesheet hrefhttps://fonts.googleapis.com/css?familyRoboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i>link relstylesheet hrefhttps://fonts.googleapis.com/css?familyLato:100,100i,300,300i,400,400i,700,700i,900,900i> link relpreload hrefhttps://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css asstyle onloadthis.onloadnull;this.relstylesheet> noscript>link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css>/noscript> link relicon typeimage/x-icon href/favicon.ico> link relicon typeimage/png sizes16x16 href/favicon-16x16.png> link relicon typeimage/png sizes32x32 href/favicon-32x32.png> link relicon typeimage/png sizes48x48 href/favicon-48x48.png> style idglobal-css>:root{--global-primary-font-family:Roboto,sans-serif;--global-primary-font-family-short:Roboto;--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:70px;--global-h2-font-size:43px;--global-h3-font-size:30px;--global-h4-font-size:21px;--global-h5-font-size:17px;--global-h6-font-size:16px;--global-section-padding:96px;}@media (max-width: 768px){:root{--global-section-padding:64px;}}body{padding:0px;background-color:#fff;font-family: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:Roboto,sans-serif;}h1{font-size:70px;}h2{font-size:43px;}h3{font-size:30px;}h4{font-size:21px;}h5{font-size:17px;}h6{font-size:16px;}/style> link relstylesheet typetext/css hrefhttps://styles.luxurypresence.com/producer/index.css /> style idwebsite-css>.J-paginationjs-page a{margin:0 3px;}#modal-global-contact-us .redesign .link:after{background-color:#fff;}#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:21px!important;}@media only screen and (max-width: 768px){#modal-global-contact-us>div>div>div>div.section-details>h2{margin-top:40px;}}.lp-btn,.redesign .lp-btn,.redesign .btn{padding:20px 46px;}.lp-btn,.redesign .lp-btn,.redesign .btn{text-overflow:initial;}#modal-global-contact-us .contact-form .section-message form .submitButton{padding:14px 20px;}body>div.mobile-contact-wrapper div.mobile-contact{bottom:150px;}@media only screen and (max-width: 768px){iframenamewidgetCta{bottom:55px!important;right:15px!important;}}iframenamewidgetCta{bottom:70px!important;right:15px!important;}body>div.mobile-contact-wrapper{z-index:9999!important;}body>div.mobile-contact-wrapper .mobile-contact{z-index:9999!important;}:root{--accent:#007728;--darkAccent:#000;--lightAccent:#fff;--BG:#007728;}#global-mobile-contact>div.pop-up>div{border:1px solid var(--darkAccent);border-radius:15px;}#modal-global-contact-us .redesign .link:after{background-color:var(--lightAccent);}#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:21px!important;}@media only screen and (max-width: 768px){#modal-global-contact-us>div>div>div>div.section-details>h2{margin-top:40px;}}.lp-btn,.redesign .lp-btn,.redesign .btn{padding:20px 46px;}.lp-btn,.redesign .lp-btn,.redesign .btn{text-overflow:initial;}#modal-global-contact-us .contact-form .section-message form .submitButton{padding:14px 20px;}body>div.mobile-contact-wrapper div.mobile-contact{bottom:150px;}@media only screen and (max-width: 768px){iframenamewidgetCta{bottom:55px!important;right:15px!important;}}iframenamewidgetCta{bottom:70px!important;right:15px!important;}body>div.mobile-contact-wrapper{z-index:9999!important;}body>div.mobile-contact-wrapper .mobile-contact{z-index:9999!important;}@media (max-width: 768px){.custom-intro__title{font-size:30px!important;}}@media (max-width: 768px){.lp-h1{font-size:30px!important;}}@media (max-width: 768px){.redesign .h1,.redesign h1{font-size:30px!important;}}@media only screen and (max-width: 1024px){.close{right:3vw!important;top:2vh!important;}}@media only screen and (max-width: 768px){.close{right:5vw!important;top:3vh!important;}}@media (max-width: 768px){footer .footer .first_text_footer{margin-bottom:10px!important;}}footer#global-footer .text_footer.first_text_footer .link{cursor:pointer;}body>div.mobile-contact-wrapper .connect-btn{border:2px solid rgba(255, 255, 255, 0.2);}body>div.mobile-contact-wrapper{z-index:9999!important;}@media only screen and (max-width: 820px){#modal-global-contact-us .close{margin-top:-30px;}}body>div.mobile-contact-wrapper .mobile-contact.with-search div.buttons-holder{bottom:150px;}@media only screen and (max-width: 768px){iframenamewidgetCta{bottom:55px!important;right:15px!important;}}iframenamewidgetCta{bottom:70px!important;right:15px!important;}#modal-global-contact-us .section-message:after{background:var(--lightAccent)!important;}#modal-global-contact-us .lp-input-group .lp-input{border-color:var(--lightAccent)!important;}#modal-global-contact-us .lp-input-group .lp-label{text-transform:uppercase;}#modal-global-contact-us .lp-input-group textarea{border:solid 1px var(--lightAccent)!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;}}footer .footer.no_newsletter h3{font-size:29px;}.lp-btn,.redesign .lp-btn{padding:20px 46px;}#modal-global-contact-us .contact-form .section-message form .submitButton{padding:20px 46px;}nav#global-navbar .header .navigation__link{font-weight:700!important;}#modal-global-contact-us .close{margin-top:-15px;}@media (max-width:768px){#modal-global-contact-us .close{width:30px;}}@media (min-width:768px){footer#global-footer .footer .container{padding-top:20px;}}div#global-sidemenu.sidemenu a:hover{color:var(--accent);}.lp-link,.link{font-weight:400;}footer#global-footer .redesign p{font-weight:400;}footer#global-footer .footer .text_footer .images_box{margin-top:5px;}nav#global-navbar .header .navigation .sub-nav ul a:hover{color:var(--lightAccent);background:var(--accent);}button.newsletter-signup__form-item{line-height:1;font-weight:700;}body>div.sidemenu .sidebar__nav-link{text-transform:uppercase!important;}body>div.sidemenu .sidebar__subnav-link{text-transform:uppercase!important;}h1,.lp-h1{text-transform:uppercase!important;}h2,h3,h4,h5,.lp-h2,.lp-h3,.lp-h4,.lp-h5{text-transform:uppercase!important;}div#global-sidemenu.sidemenu a{text-transform:uppercase!important;}div#global-sidemenu.sidemenu button{text-transform:uppercase!important;}@media (max-width:768px){body>div.sidemenu .section-options a,body>div.sidemenu .section-options button{font-size:27px!important;}}footer#global-footer .footer-navigation__link,#modal-global-contact-us .contact-form__input,.input-container .lp-input{text-transform:none;}nav#global-navbar .header .logo img{max-height:110px;}@media (max-width:768px){nav#global-navbar .header .logo img{max-height:80px;}}nav#global-navbar .header .navigation ul li a span,nav .header .navigation ul li button span{font-weight:700;}nav#global-navbar .header .navigation .sub-nav ul{background-color:transparent;}nav#global-navbar .header .navigation .sub-nav ul li{background-color:rgba(255, 255, 255, 0.9);}nav#global-navbar .header .navigation .sub-nav ul li:hover{background-color:rgba(255, 255, 255, 1);}nav#global-navbar .header .navigation .sub-nav ul a{color:var(--darkAccent);}nav#global-navbar.scroll{background-color:var(--lightAccent)!important;}nav#global-navbar.scroll li.navigation__item a.navigation__link{color:var(--darkAccent);}nav#global-navbar.scroll li.navigation__item a.navigation__link span:after{background-color:var(--darkAccent);}nav#global-navbar.scroll button.hamburger-component.hamburger{color:var(--accent);}.lp-link:after{background-color:var(--lightAccent)!important;}.redesign .link:after{background-color:var(--accent);}@media (max-width:768px){#modal-global-contact-us .contact-form .info-zone_contact_link{font-size:15px;}footer#global-footer .lp-link{font-size:15px;}}#modal-global-contact-us .lp-disclaimer a:hover{color:inherit;opacity:0.8;-webkit-text-decoration:underline;text-decoration:underline;}#modal-global-contact-us div.contact-form .lp-input{border-color:var(--lightAccent);}#modal-global-contact-us div.contact-form .section-message label{color:var(--lightAccent);}#modal-global-contact-us div.contact-form .info-zone_contact{margin-bottom:22px!important;}footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:40px!important;}@media (max-width:768px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:20px!important;}}#modal-global-contact-us div.contact-form .socials_zone{padding-top:20px!important;}#modal-global-contact-us div.contact-form .section-message:after{background:var(--lightAccent);}#modal-global-contact-us div.contact-form .section-message textarea{border:solid 1px var(--lightAccent);}.lp-link:after{background-color:var(--darkAccent);}footer .footer .info-privacy .powered_zone a{font-weight:400;}footer .footer .info-privacy .copy_zone a{font-weight:400;}nav#global-navbar .header .navigation .sub-nav ul{max-width:370px;}nav#global-navbar .header .navigation .sub-nav__link{max-width:370px;}@media (max-width: 768px){footer .footer .info-privacy .socials_zone li{padding:0px 6px 10px 6px!important;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:6px!important;padding-left:6px!important;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone li{padding-left:6px!important;padding-right:6px!important;}}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:25px;}}div#modal-global-contact-us .close{top:4vh;}@media (max-width:768px){div#modal-global-contact-us .close{top:9vh;}}#modal-global-contact-us div.contact-form .section-message label{color:var(--lightAccent);text-transform:uppercase;}@media only screen and (min-width: 769px){#global-footer .footer .info-privacy{border-top:1px solid var(--accent);}}@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 var(--accent);}}@media (max-width:768px){.redesign .socials{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}footer#global-footer a.hvr_animation,footer#global-footer .lp-link{position:relative!important;color:var(--darkAccent)!important;-webkit-transition:0.4s;transition:0.4s;}footer#global-footer a.hvr_animation:hover,footer#global-footer .lp-link:hover{color:var(--accent)!important;}footer#global-footer a.hvr_animation:before,footer#global-footer .lp-link:before,footer#global-footer a.hvr_animation:after,footer#global-footer .lp-link:after{-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none!important;text-decoration:none!important;line-height:1;content: ;height:1px;position:absolute!important;bottom:0;left:0;}footer#global-footer a.hvr_animation:before,footer#global-footer .lp-link:before{width:100%!important;background-color:a3a3a3!important;}footer#global-footer a.hvr_animation:after,footer#global-footer .lp-link:after{width:0%!important;background-color:var(--accent)!important;}footer#global-footer a.hvr_animation:hover:after,footer#global-footer .lp-link:hover:after{width:100%!important;}footer .footer.no_newsletter .info-wrap-contact h4{margin-top:-6px;}nav#global-navbar.scroll{padding:10px 10px;}@media (max-width:768px){nav#global-navbar{padding:10px 10px;}}#global-footer div.footer .info-wrap-contact_zone svg path{fill:var(--accent);}#global-footer div.footer .info-wrap-contact_title{color:var(--darkAccent);}#global-footer div.footer .info-wrap .contact_title{color:var(--darkAccent);}@media (min-width:768px){footer#global-footer .footer .first_text_footer .img_size img{width:100%;height:80px;}}@media (max-width: 767px){body>div.sidemenu .sidebar__close{right:35px!important;top:40px!important;}body>div.sidemenu button.toggle{right:30px!important;}}body>div.mobile-contact-wrapper .mobile-contact.with-search div.buttons-holder{bottom:150px;}@media only screen and (max-width: 768px){iframenamewidgetCta{bottom:50px!important;right:10px!important;}}iframenamewidgetCta{bottom:50px!important;right:15px!important;}div#modal-global-contact-us .contact-form:after{background-color:rgba(2, 5, 7, 0.7);}.lp-btn.lp-btn--dark.lp-btn--filled{background-color:var(--accent);border-color:var(--accent);color:var(--lightAccent);}.lp-btn.lp-btn--dark.lp-btn--filled:hover{background-color:transparent;border-color:var(--accent);color:var(--accent);}footer .footer.no_newsletter h3{color:var(--darkAccent);}body>div.sidemenu .sidebar__nav-item{border-bottom:1px solid var(--accent)!important;}@media (max-width:768px){body>div.mobile-contact-wrapper .pop-up .lp-container{padding-top:10px!important;padding-bottom:0px!important;}}section:not(.parallax-enabled){-webkit-transform:none;-moz-transform:none;-ms-transform:none;transform:none;}body>div.mobile-contact-wrapper .contact-form h3{color:var(--darkAccent);}footer#global-footer .text_footer.first_text_footer .link{color:var(--darkAccent);font-weight:normal;}footer#global-footer .text_footer.first_text_footer .link:after{background-color:var(--accent);}@media only screen and (max-width: 1280px){footer#global-footer .text_footer.first_text_footer .link{overflow-wrap:anywhere;-webkit-text-decoration:underline!important;text-decoration:underline!important;white-space:normal!important;}footer#global-footer .text_footer.first_text_footer .link:before{background-color:transparent;}footer#global-footer .text_footer.first_text_footer .link:after{background-color:transparent;}}@media (min-width:768px){footer#global-footer .redesign .description{display:inline-block!important;padding-left:250px;margin-top:-40px;}footer#global-footer .redesign .broker-logo{max-height:35px;z-index:1!important;}}@media (max-width:430px){footer#global-footer .redesign .broker-logo{max-height:90px;padding-bottom:40px;}}footer#global-footer .footer .broker-logo img{z-index:2!important;position:relative;}footer#global-footer .footer .description{z-index:1!important;}@media (max-width:768px){footer .footer.no_newsletter h3{padding-top:54px;}}.custom-select-item{text-transform:uppercase;}.custom-select-item:hover{background-color:var(--accent);color:var(--lightAccent);}body>div.mobile-contact-wrapper .contact-form__item .is-placeholder{text-transform:uppercase;}#modal-global-contact-us .contact-form .section-message label{font-weight:normal!important;}nav.scroll .logo .logo__img.light{display:none!important;}nav.scroll .logo .logo__img.dark{display:block!important;}footer#global-footer a.hvr_animation,footer#global-footer .lp-link{text-transform:none;}#modal-global-contact-us .contact-form .info-zone_contact_link{text-transform:none;}.lp-btn{white-space:inherit!important;}@media (max-width: 400px){h2{font-size:28px!important;}h1{font-size:32px!important;}}.lp-input::-webkit-input-placeholder{text-transform:uppercase;}.lp-input::-moz-placeholder{text-transform:uppercase;}.lp-input:-ms-input-placeholder{text-transform:uppercase;}.lp-input::placeholder{text-transform:uppercase;}/style> style idwow-hide-elements>.wow{visibility:hidden!important}/style> style idpage-css> #section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df{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;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df div.collection .btn-container{margin-top:0px;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .lp-title-group .lp-text--subtitle{margin-bottom:10px;}@media (min-width:768px){#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .lp-btn{min-width:250px;}}@media (max-width:768px){#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df h1{font-size:40px!important;}}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .video-wrapper video,#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .video-wrapper div.poster{z-index:0!important;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df>.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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df>.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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df>.video-wrapper>.full-screen-video-component>.video-wrapper.playing>video{opacity:1;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .collection.slick-initialized{pointer-events:none;}}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .collection .btn-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:10px;}}@media (max-width: 768px){#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .collection .lp-btn{pointer-events:initial;}}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .collection .slick-active .animation{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);opacity:1;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .collection .lp-title-group,#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .collection .lp-text--pretitle{max-width:100%;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .collection .slick-dots li.slick-active button:after{opacity:1;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .collection .slick-dots button:before{display:none;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .collection:not(.slick-initialized) .item{margin-bottom:145px;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .collection:not(.slick-initialized) .item:nth-child(n + 2){display:none;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df >*:last-child{position:relative;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .video-wrapper{position:absolute;top:0;left:0;height:100%;width:100%;}@media screen and (max-width: 900px){#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .video-wrapper.hidable{display:none;}}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .full-screen-video-component{position:relative;height:100%;overflow:hidden;}#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df video{position:absolute;z-index:-1000;width:100%;object-fit:cover;}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){#section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df 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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .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-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df .poster{display:block;}}#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#007728;--bgColor_H:140;--bgColor_S:100%;--bgColor_L:23%;--bgColor_A:1;--bgColor_darkenDir:1;--section-padding-bottom:calc(0 / 4 * var(--global-section-padding));background-color:#007728;}#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .boxed-text__description{margin-bottom:50px;text-align:center;}@media (max-width: 768px){#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .boxed-text__description{margin-bottom:30px;}}#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .lp-title-group .lp-h2{margin-top:0;}#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media(max-width: 600px){#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .button-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .button-container .lp-btn{margin-right:20px;}#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .button-container .lp-btn:last-of-type{margin-right:0;}@media(max-width: 600px){#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .button-container .lp-btn{margin-right:0px;margin-bottom:20px;width:100%;}#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .button-container .lp-btn:last-of-type{margin-bottom:0;}}#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de .redesign p{margin-bottom:1.666rem;}#section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de>div:last-child{padding-bottom:calc(0 / 4 * var(--global-section-padding))!important;}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#007728;--bgColor_H:140;--bgColor_S:100%;--bgColor_L:23%;--bgColor_A:1;--bgColor_darkenDir:1;--section-padding-top:calc(0 / 4 * var(--global-section-padding));background-color:#007728;}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5{overflow:hidden;}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .company-stats__row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:-64px;padding-top:32px;}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .company-stats__row--four .company-stats__col{max-width:25%;-webkit-flex-basis:25%;-ms-flex-preferred-size:25%;flex-basis:25%;}@media (max-width: 768px){#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .company-stats__row--four .company-stats__col{max-width:100%;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%;}}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .company-stats__col{padding-left:15px;padding-right:15px;width:100%;min-height:1px;max-width:33.33%;-webkit-flex-basis:33.33%;-ms-flex-preferred-size:33.33%;flex-basis:33.33%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}@media (max-width: 768px){#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .company-stats__col{max-width:100%;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%;}}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .company-stats__cta-wrap{text-align:center;padding-top:96px;}@media (max-width: 768px){#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .company-stats__cta-wrap{padding-top:48px;}}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .stat-card{max-width:364px;margin-left:auto;margin-right:auto;padding-bottom:64px;text-align:center;}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .stat-card__value{margin-top:0;margin-bottom:16px;line-height:1;min-height:var(--global-h3-font-size);}@media (max-width: 768px){#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .stat-card__value{min-height:auto;}}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .stat-card__title{margin-top:0;margin-bottom:0;}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5 .lp-text--subtitle{margin-left:auto;margin-right:auto;}#section-b9d14e3f-0e16-46fb-9feb-abd442a463b5>div:last-child{padding-top:calc(0 / 4 * var(--global-section-padding))!important;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(0 / 4 * var(--global-section-padding));--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:#fff;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c div.gallery-component__header{max-width:1200px;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c div.gallery-component{padding-top:96px;padding-bottom:48px;}@media (max-width: 768px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c div.gallery-component{padding-top:64px;padding-bottom:44px;}}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card__title{text-align:center;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c{background-image:linear-gradient(to bottom, rgb(0, 119, 40) 50%, rgba(255, 255, 255, 1) 50%);}@media (max-width: 992px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c{background-image:linear-gradient(to bottom, rgb(0, 119, 40) 50%, rgba(255, 255, 255, 1) 50%);}}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component{padding-top:30px;padding-bottom:10px;}@media (min-width: 769px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component{padding:80px 0 60px;}}@media (min-width: 1200px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component{padding:80px 0 30px;}}@media (max-width: 767px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__container{padding-left:20px;padding-right:20px;}}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__header{margin-bottom:30px;max-width:640px;margin-left:auto;margin-right:auto;text-align:center;}@media (min-width: 768px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__header{margin-bottom:50px;}}@media (min-width: 1200px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__header{margin-bottom:70px;}}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__header img{max-width:260px;height:auto;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__header img:not(:only-child){margin-bottom:30px;}@media (min-width: 768px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__header img:not(:only-child){margin-bottom:50px;}}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__heading{margin-bottom:20px;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__lead{margin-bottom:0;font-size:20px;line-height:1.4;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__row{margin-left:-7px;margin-right:-7px;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-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__col{width:100%;margin-bottom:20px;padding:0 7px;}@media (min-width: 768px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__col{max-width:33.333333%;-webkit-flex-basis:33.333333%;-ms-flex-preferred-size:33.333333%;flex-basis:33.333333%;}}@media (min-width: 1200px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__col{max-width:25%;-webkit-flex-basis:25%;-ms-flex-preferred-size:25%;flex-basis:25%;margin-bottom:50px;}}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__col:first-child{margin-left:auto;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component__col:last-child{margin-right:auto;}@media (min-width: 992px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component .cols-2 .gallery-component__col{max-width:50%;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;}}@media (min-width: 1200px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component .cols-3 .gallery-component__col{max-width:33.333333%;-webkit-flex-basis:33.333333%;-ms-flex-preferred-size:33.333333%;flex-basis:33.333333%;}}@media (min-width: 992px){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-component .cols-4 .gallery-component__col{max-width:25%;-webkit-flex-basis:25%;-ms-flex-preferred-size:25%;flex-basis:25%;}}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card{position:relative;-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-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;padding:20px 15px;-webkit-text-decoration:none;text-decoration:none;overflow:hidden;cursor:pointer;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card:after{content:;width:0;padding-top:121.5%;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card:before{content:;position:absolute;left:0;bottom:0;width:100%;height:100%;background-color:transparent;background-image:linear-gradient(to bottom, rgba(0, 0, 0, 0) 76.6%, #000000);opacity:0.6;-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:background-color .3s;transition:background-color .3s;z-index:1;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card:focus{outline:none;}@media (hover: hover) and (pointer: fine){#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card:hover:before{background-color:#000;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card:hover .gallery-card__title{-webkit-transform:translateY(-51px);-moz-transform:translateY(-51px);-ms-transform:translateY(-51px);transform:translateY(-51px);}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card:hover .gallery-card__title:after{opacity:.3;-webkit-transform:translateY(20px);-moz-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px);}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card:hover .gallery-card__preview img{-webkit-transform:scale(1.05);-moz-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05);}}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card__title{position:relative;width:100%;margin-bottom:0;color:#fff;letter-spacing:0;text-shadow:none;z-index:1;-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:all .3s;transition:all .3s;text-transform:none;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card__title:after{content:;position:absolute;left:0;bottom:0;width:100%;border-bottom:1px solid currentColor;opacity:0;-webkit-transition:all .3s;transition:all .3s;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card__preview{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c .gallery-card__preview>img{width:100%;height:100%;object-fit:cover;-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:-webkit-transform .75s ease-out;transition:transform .75s ease-out;}#section-f96bdd90-3af0-427b-9ffa-25504afec18c>div:last-child{padding-top:calc(0 / 4 * var(--global-section-padding))!important;padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#007728;--bgColor_H:140;--bgColor_S:100%;--bgColor_L:23%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#007728;}#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd h2,#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd p{text-wrap:balance;}#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .boxed-text__description{margin-bottom:50px;text-align:center;}@media (max-width: 768px){#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .boxed-text__description{margin-bottom:30px;}}#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .lp-title-group .lp-h2{margin-top:0;}#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media(max-width: 600px){#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .button-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .button-container .lp-btn{margin-right:20px;}#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .button-container .lp-btn:last-of-type{margin-right:0;}@media(max-width: 600px){#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .button-container .lp-btn{margin-right:0px;margin-bottom:20px;width:100%;}#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .button-container .lp-btn:last-of-type{margin-bottom:0;}}#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd .redesign p{margin-bottom:1.666rem;}#section-067df2af-3078-4998-ad24-4efc6460d75d{color:#000;--fontColor:#000;--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-067df2af-3078-4998-ad24-4efc6460d75d .gallery{position:relative;}#section-067df2af-3078-4998-ad24-4efc6460d75d .gallery__holder{position:relative;}#section-067df2af-3078-4998-ad24-4efc6460d75d .gallery__item{position:relative;background-color:#ccc;height:680px;}@media(max-width: 580px){#section-067df2af-3078-4998-ad24-4efc6460d75d .gallery__item{height:280px;}}#section-067df2af-3078-4998-ad24-4efc6460d75d .gallery__poster{height:100%;width:100%;display:block;object-fit:cover;}#section-067df2af-3078-4998-ad24-4efc6460d75d .gallery__poster.portrait{object-fit:contain;}#section-067df2af-3078-4998-ad24-4efc6460d75d .gallery__play{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-067df2af-3078-4998-ad24-4efc6460d75d .gallery__arrow.lp-arrow{position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:1;}#section-067df2af-3078-4998-ad24-4efc6460d75d .gallery__arrow.lp-arrow--next{right:30px;left:auto;}@media(max-width: 768px){#section-067df2af-3078-4998-ad24-4efc6460d75d .gallery__arrow.lp-arrow--next{right:24px;}}#section-067df2af-3078-4998-ad24-4efc6460d75d .gallery__arrow.lp-arrow--prev{left:30px;right:auto;}@media(max-width: 768px){#section-067df2af-3078-4998-ad24-4efc6460d75d .gallery__arrow.lp-arrow--prev{left:24px;}}#section-067df2af-3078-4998-ad24-4efc6460d75d .lp-expand-btn-wrapper{position:unset!important;}#section-067df2af-3078-4998-ad24-4efc6460d75d .lp-expand-btn{right:20px;top:20px;left:unset;}#section-067df2af-3078-4998-ad24-4efc6460d75d .button-container{padding-top:48px;text-align:center;}#section-067df2af-3078-4998-ad24-4efc6460d75d .lp-text--pretitle,#section-067df2af-3078-4998-ad24-4efc6460d75d .lp-text--subtitle{margin-left:auto;margin-right:auto;}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8{display:none;color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(0 / 4 * var(--global-section-padding));--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:#ffffff;}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 div.press-item-inner{border-left:1.5px solid var(--accent);}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .carousel-entity{height:105px;width:250px;}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .section-title{text-align:center;padding:0;margin:0 0 40px 0;}@media(max-width: 768px){#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .section-title{margin:0 0 20px 0;}}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .press-carousel-component{padding:80px 0;}@media(max-width: 786px){#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .press-carousel-component{padding:50px 0;}}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .press-item-inner{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;height:100%;border-left:1.5px solid hsla(0,7%,78%,.35);}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .press-item-inner img{width:50%;height:100%;object-fit:contain;}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .carousel-slide:not(.slick-slide):first-child .press-item-inner{border-left:none;}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .slick-track{will-change:transform;}@media (-webkit-min-device-pixel-ratio: 1.5){#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .slick-track{image-rendering:-webkit-optimize-contrast;}}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 .carousel-container:not(.slick-initialized){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;overflow:hidden;}#section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8>div:last-child{padding-top:calc(0 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#007728;--bgColor_H:140;--bgColor_S:100%;--bgColor_L:23%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#007728;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 div.hoverable-image--straight .hoverable-image__img-col,#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 div.hoverable-image--reverse .hoverable-image__img-col{aspect-ratio:1/1;}@media only screen and (max-width: 768px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 div.hoverable-image--straight .hoverable-image__img-col>div,#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 div.hoverable-image--reverse .hoverable-image__img-col>div{min-height:auto!important;}}@media (min-width: 993px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 div.hoverable-section .hoverable-image__text-col{background-color:#fff;padding:50px 70px!important;}}@media (max-width: 993px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 div.hoverable-section .hoverable-image__text-col{background-color:#fff;padding:50px 25px!important;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__img-col>div .main-image{object-position:top;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 h2,#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 h4{margin-bottom:5px;}@media (min-width:768px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .lp-btn{min-width:210px;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__text-col .buttons-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 h4{color:var(--accent);}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-section--full-bleed{padding-top:0;}@media (min-width: 993px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-section--full-bleed{padding-bottom:0;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 992px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image--reverse{-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;}@media (max-width: 992px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image--reverse{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image--reverse .hoverable-image__text-col{padding-right:120px;padding-left:0;}@media (max-width: 992px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image--reverse .hoverable-image__text-col{padding:0;margin-top:29px;margin-bottom:0;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__img-col{-webkit-flex:50%;-ms-flex:50%;flex:50%;z-index:1;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__img-col>div{width:100%;height:100%;position:relative;padding-bottom:79%;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .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-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__img-col>div .main-image{visibility:visible;opacity:1;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__img-col>div .secondary-image{visibility:hidden;opacity:0;}@media (hover: hover) and (pointer: fine){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__img-col--on-hover:hover .main-image{visibility:hidden;opacity:0;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__img-col--on-hover:hover .secondary-image{visibility:visible;opacity:1;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__img-col--on-hover.active .main-image{visibility:hidden;opacity:0;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__img-col--on-hover.active .secondary-image{visibility:visible;opacity:1;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .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-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__text-col{padding-left:0;margin-top:29px;margin-bottom:0;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__text-col .lp-text--subtitle{max-width:100%;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .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-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__text-col .buttons-wrapper{margin:0;}}@media (max-width: 576px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .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-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__text-col .buttons-wrapper .lp-btn{vertical-align:top;margin:24px 12px 0;}@media (max-width: 560px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__text-col .buttons-wrapper .lp-btn{margin-left:0;margin-right:0;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__text-wrap{-webkit-flex:1;-ms-flex:1;flex:1;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .hoverable-image__text-wrap p:last-child{margin-bottom:0;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .full-bleed-container{padding:0;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .full-bleed-container .hoverable-image__text-col{padding:69px;}@media (max-width: 992px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .full-bleed-container .hoverable-image__text-col{padding:0;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .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-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .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-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .full-bleed-container .hoverable-image__img-col>div{max-height:none;}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .full-bleed-container .hoverable-image--straight .hoverable-image__text-wrap{padding-left:calc(50% + 69px);}@media (max-width: 992px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .full-bleed-container .hoverable-image--straight .hoverable-image__text-wrap{padding-left:0;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .full-bleed-container .hoverable-image--reverse .hoverable-image__text-wrap{padding-right:calc(50% + 69px);}@media (max-width: 992px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .full-bleed-container .hoverable-image--reverse .hoverable-image__text-wrap{padding-right:0;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .lp-h2{margin-bottom:16px;}@media (max-width: 992px){#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .lp-h2{margin-bottom:8px;}}#section-3fcaccf1-a64c-485e-a3bd-c4503ede3643 .redesign p{margin-bottom:1.666rem;text-transform:none;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:#ffffff;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .lp-arrow{border-color:var(--accent);background:var(--accent);}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .lp-arrow:hover{background:transparent;border-color:var(--accent);}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .lp-arrow:hover:before{border-color:var(--accent);}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .lp-arrow:before{border-color:var(--lightAccent);}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .lp-text--pretitle{width:100%;max-width:100%;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider{margin-left:-8px;margin-right:-8px;}@media (max-width: 768px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider{margin-left:0px;margin-right:0px;padding:0 48px;}}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider:not(.slick-initialized){display:none;}@media (max-width: 768px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider .slick-list{overflow:visible;}}@media (max-width: 768px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider .slick-active .slider__img-holder{aspect-ratio:280/334;}}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .arrows-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:12px;margin-top:56px;}@media (max-width: 768px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .arrows-container{margin-top:32px;}}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider__item{color:inherit;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:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;margin-left:8px;margin-right:8px;text-align:center;}@media (max-width: 768px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider__item{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:12px;margin-right:12px;}}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider__img-holder{position:relative;aspect-ratio:354/380;margin-bottom:16px;background-color:#f2f2f2;width:100%;-webkit-transition:all .3s;transition:all .3s;}@media (max-width: 1024px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider__img-holder{aspect-ratio:340/414;}}@media (max-width: 768px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider__img-holder{aspect-ratio:280/294;}}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider__img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider__first-name{margin:0;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider__last-name{margin:0 0 8px;width:100%;}@media (max-width: 768px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider__last-name{margin-bottom:12px;}}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .slider__tag{color:currentColor;margin:0;width:100%;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .empty-message{display:none;text-align:center;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .empty-message.empty-message--visible{display:block;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:30px;padding-right:30px;margin-bottom:40px;position:relative;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}@media (max-width: 1024px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider{margin-bottom:24px;}}@media (max-width: 768px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider{margin-bottom:16px;}}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider .slick-list{min-width:100%;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider .lp-arrow{border:transparent;position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:10;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider .lp-arrow.slick-disabled{display:none!important;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider .lp-arrow--prev{left:0;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider .lp-arrow--next{right:0;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider__item{background-color:transparent;padding:32px 5px;text-align:center;border-width:0 0 1px;border-style:solid;border-color:transparent;font-weight:600;cursor:pointer;-webkit-transition:all .3s;transition:all .3s;white-space:nowrap;margin-right:6px;margin-left:6px;overflow:hidden;text-overflow:ellipsis;color:currentColor;}@media (max-width: 1024px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider__item{border-bottom-color:transparent;}}@media (max-width: 768px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider__item{padding:10px 16px;}}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider__item:hover,#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider__item.nav-slider__item--active{border-bottom-color:currentColor;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .nav-slider__item.nav-slider__item--active{pointer-events:none;}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .agents-slider-with-office-filter__btn-holder{text-align:center;margin-top:40px;}@media (max-width: 1024px){#section-23c82208-1c10-4501-9ad8-e2e98f58b00e .agents-slider-with-office-filter__btn-holder{margin-top:24px;}}#section-23c82208-1c10-4501-9ad8-e2e98f58b00e>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--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;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.30));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/8dd79281-fa6a-469e-aa4c-1d5424886046);background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 h2{color:var(--lightAccent);}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 div.testimonials.redesign .custom-arrows--dark.arrows button.slick-arrow{background-color:transparent;border:2px solid var(--lightAccent);}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 div.testimonials.redesign .custom-arrows--dark.arrows button.slick-arrow:before{color:var(--lightAccent);opacity:1;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 div.testimonials.redesign .custom-arrows--dark.arrows button.slick-arrow:hover{background-color:var(--lightAccent);border-color:var(--lightAccent);}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 div.testimonials.redesign .custom-arrows--dark.arrows button.slick-arrow:hover:before{color:var(--accent);}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .userpic img{background-color:var(--lightAccent);}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41{background-attachment:fixed;-webkit-background-position:center;background-position:center;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;}@media only screen and (max-width: 768px){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41{-webkit-background-position:center;background-position:center;}}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials{--animTime:.3s;--slidePads:285px;padding:80px 0;}@media (max-width: 1340px){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials{--slidePads:160px;}}@media (max-width: 991px){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials{--slidePads:0;}}@media (max-width: 768px){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials{padding:50px 0;}}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .title{text-align:center;margin:0 0 20px;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .subtitle{width:100%;max-width:640px;text-align:center;margin:0 auto 50px;}@media (max-width: 768px){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .subtitle{margin-bottom:30px;}}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .title+.items-slider{margin-top:50px;}@media (max-width: 768px){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .title+.items-slider{margin-top:30px;}}@media (max-width: 767px){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .slider-container{padding:0;}}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .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;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;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .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-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .userpic img{display:block;width:100%;height:100%;object-fit:cover;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .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-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .card-button{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;z-index:3;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .author{margin-bottom:20px;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .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-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .card{padding:30px 20px;}}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .card .video-wrapper,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .card .overlay-component,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .card .poster{position:absolute;top:0;left:0;width:100%;height:100%;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .card .poster{background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;z-index:-1;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item{padding:3px;position:relative;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .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-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.sl-next,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.slick-slide.sl-next,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.sl-prev,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.slick-slide.sl-prev{opacity:0.5;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.sl-next .card,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.slick-slide.sl-next .card,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.sl-prev .card,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.slick-slide.sl-prev .card{padding-top:30px;padding-bottom:30px;margin:20px 0;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.sl-prev .card,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .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-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.sl-next .card,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .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-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.sl-active,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .item.slick-slide.sl-active{z-index:1;}}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .items-slider .slick-track,#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .items-slider .slick-list{height:100%;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .items-slider .slick-track{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .items-slider:not(.slick-slider){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;overflow:hidden;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .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-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .in-transition .card{-webkit-transition:all var(--animTime) ease;transition:all var(--animTime) ease;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .arrows{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;margin-top:30px;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41 .testimonials .arrows .slick-arrow{margin:0 13px;position:relative;top:auto;left:auto;bottom:auto;right:auto;}#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}@media (min-width: 960px) and (orientation: landscape){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/8dd79281-fa6a-469e-aa4c-1d5424886046);}}@media (min-width: 1280px) and (orientation: landscape){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/8dd79281-fa6a-469e-aa4c-1d5424886046);}}@media (min-width: 1920px) and (orientation: landscape){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/8dd79281-fa6a-469e-aa4c-1d5424886046);}}@media (min-width: 2560px) and (orientation: landscape){#section-ad284b19-a4c8-4993-83b7-d0fd822b9f41{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/8dd79281-fa6a-469e-aa4c-1d5424886046);}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:#fff;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 h2{color:var(--darkAccent);}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 div.f-properties{padding-top:96px;padding-bottom:96px;}@media only screen and (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 div.f-properties{padding-top:64px;padding-bottom:64px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .lp-arrow{border:solid 2px var(--accent);background-color:var(--accent);}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .lp-arrow:before{border-color:var(--lightAccent);}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .lp-arrow:hover{border:solid 2px var(--accent);background-color:transparent;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .lp-arrow:hover::before{border-color:var(--accent);}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__arrows-container .lp-arrow--next{margin-left:10px!important;}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__title{font-size:32px!important;}}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .btn-all{min-width:325px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 div.f-properties__property-status{background:var(--accent);text-transform:uppercase;color:var(--lightAccent);}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties{padding:81px 0;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties .slick-slide{padding-left:40px;padding-right:40px;}@media (max-width: 1024px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties .slick-slide{padding-left:20px;padding-right:20px;}}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties .slick-slide{padding-left:15px;padding-right:15px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties .slick-list{padding-right:20px;}@media (max-width: 480px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties .single{max-width:343px;margin:0 auto 32px auto;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties .single .slick-list{padding-right:0;}@media (max-width: 767px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties .single .slick-slide{padding-left:16px;padding-right:16px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__property-open-house,#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__property-status{padding:5px 10px;position:absolute;line-height:1;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__property-status{background:rgba(0, 0, 0, 0.3);top:16px;right:16px;color:#fff;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__property-open-house{background:#fff;color:#000;top:16px;left:16px;}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__property-open-house{display:none;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__property-open-house--mobile{display:none;}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__property-open-house--mobile{display:block;top:-41px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__title{text-align:center;padding:0 16px;margin:0 0 37px 0;}@media (max-width: 560px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__title{max-width:343px;margin:0 auto 32px auto;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__description{max-width:600px;text-align:center;margin:0 auto 70px;white-space:pre-line;padding:0 16px;}@media (max-width: 576px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__description{max-width:343px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item{height:81%;position:relative;display:block;-webkit-transition:.3s all linear;transition:.3s all linear;}@media (max-width: 560px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item{height:90%;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-img{height:calc(100% - 151px);}}@media (max-width: 560px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-img{height:calc(100% - 166px);}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item:hover .f-properties__item-info{color:var(--infoTextHover);background-color:var(--infoBgHover);}@media (min-width: 769px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item:hover .f-properties__item-info{width:580px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .slick-slide{height:559px;}@media (max-width: 560px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .slick-slide{height:377px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-info{padding:20px 24px;position:absolute;left:0;bottom:0;color:var(--infoTextColor);background-color:var(--infoBgColor);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:564px;max-width:100%;-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;-webkit-transition:.3s all;transition:.3s all;opacity:0;}@media (max-width: 1024px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-info{max-width:calc(100% - 100px);}}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-info{max-width:unset;width:100%;min-height:151px;}}@media (max-width: 560px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-info{min-height:166px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-info .arrow-more{border:none;}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-info .arrow-more{display:none;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-info .arrow-more .lp-i-chevron-right:before{font-size:20px;}@-webkit-keyframes fadeIn{0%{opacity:0;}100%{opacity:1;}}@keyframes fadeIn{0%{opacity:0;}100%{opacity:1;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .slick-current .f-properties__item{height:100%;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .slick-current .f-properties__item-info{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.9s;animation-duration:.9s;-webkit-animation-delay:.3s;animation-delay:.3s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-price{margin-top:16px;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-left{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-name{margin-bottom:5px;color:inherit;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-features{opacity:.85;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__action{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:calc(100% - 480px);margin:0 auto;padding-top:46px;}@media (max-width: 1439px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__action{width:calc(100% - 430px);}}@media (max-width: 1199px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__action{width:calc(100% - 280px);}}@media (max-width: 1024px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__action{width:calc(100% - 160px);}}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__action{padding:32px 20px 0 20px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;}}@media (max-width: 560px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__action{padding:32px 0 0 0;}}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-info-left{width:100%;}}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .btn-all{margin-top:32px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__arrows-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (min-width: 769px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__arrows-container .lp-arrow--next{margin-left:5px;}}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__arrows-container .lp-arrow{margin:0 5px;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__arrows{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__carousel .f-properties__item-mls-logo{position:absolute!important;bottom:1rem!important;right:1rem!important;}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__carousel .f-properties__item-mls-logo{display:none!important;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-mls-attribution{margin:0;}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .f-properties__item-mls-attribution{max-width:calc(100% - 100px);}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .mls-compliance-container .f-properties__item-mls-logo{display:none!important;}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .mls-compliance-container .f-properties__item-mls-logo{display:block!important;position:relative!important;bottom:unset!important;right:unset!important;}}@media (max-width: 768px){#section-97cebd01-af8f-4915-afbe-73c5f041d1c9 .mls-compliance-container .f-properties__item-mls-attribution+.f-properties__item-mls-logo{display:inline-block!important;position:absolute!important;bottom:unset!important;right:0!important;}}#section-97cebd01-af8f-4915-afbe-73c5f041d1c9>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--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;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.30));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/27a72cb2-2052-42a0-b321-11dabe6d07f4);background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .search-wrapper.js-address-search .loader .line{background-color:var(--accent);}@media only screen and (max-width: 768px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-a a,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-link{white-space:nowrap;text-wrap:balance;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-a a,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-link{color:var(--darkAccent);font-weight:400;text-transform:uppercase!important;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-a a:hover,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-link:hover{color:var(--accent)!important;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-a a,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-link:after{background-color:var(--accent)!important;}@media only screen and (max-width: 768px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-a a,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-link{white-space:normal;-webkit-text-decoration:underline;text-decoration:underline;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-a a:after,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-link:after,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-a a:before,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-link:before{width:0%;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 div.home-valuation .search-wrapper .lp-btn{white-space:inherit;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-form__footer .lp-btn{white-space:inherit;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 div.home-valuation .search-wrapper .lp-btndisabled{opacity:.3;}@media (max-width: 767px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 div.home-valuation .search-wrapper .lp-btndisabled{opacity:.8;}}@media (max-width: 767px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 div.home-valuation .search-wrapper .lp-btn{border:2px solid var(--lightAccent)!important;color:var(--lightAccent)!important;background-color:transparent!important;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 div.home-valuation .search-wrapper .lp-btn:hover{background-color:var(--BG)!important;color:var(--accent)!important;border:2px solid var(--BG)!important;}}@media (max-width: 768px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-btn,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .redesign .lp-btn{font-size:12px!important;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 class*button-style-:disabled{opacity:1;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 div.home-valuation .benefits .benefit{text-transform:uppercase;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-wrapper{z-index:99;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 div.home-valuation .content{padding-top:200px;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 div.home-valuation .content{padding-top:184px;padding-bottom:60px;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .content{background-color:rgba(0, 0, 0, 0)!important;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .background:after{background:rgba(33, 34, 39, 0.3)!important;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .search-wrapper.js-address-search .loader .line{background-color:var(--accent);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .benefits{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .mb-3{text-align:center;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 path{fill:var(--accent);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__title{font-size:25px!important;text-transform:uppercase;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-checklist--small{text-transform:uppercase;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-input-group .lp-label{text-transform:uppercase;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8{--lp-icon-check:url(data:image/svg+xml,%3Csvg xmlnshttp://www.w3.org/2000/svg width25 height25 fillnone%3E%3Cpath strokeblack stroke-linecapround stroke-linejoinround stroke-width2.5 dm6.5 12.26 4.15 4.15 8-8/%3E%3C/svg%3E);--lp-dropdown-arrow:url(data:image/svg+xml,%3Csvg width13 height7 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM11 1.167 6.333 5.833 1.667 1.167 stroke%23C8E2E8 stroke-width1.5 stroke-miterlimit10 stroke-linecapsquare/%3E%3C/svg%3E);--lp-icon-back:url(data:image/svg+xml,%3Csvg xmlnshttp://www.w3.org/2000/svg width24 height24 fillnone%3E%3Cpath stroke%23000 stroke-linecapround stroke-linejoinround stroke-width2 dm15 5-7 7 7 7/%3E%3C/svg%3E);--lp-icon-done:url(data:image/svg+xml,%3Csvg xmlnshttp://www.w3.org/2000/svg width25 height25 fillnone%3E%3Cpath strokeblack stroke-linecapround stroke-linejoinround stroke-width2.5 dm6.5 12.26 4.15 4.15 8-8/%3E%3C/svg%3E);--lp-icon-success:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM22 11.0799V11.9999C21.9988 14.1563 21.3005 16.2545 20.0093 17.9817C18.7182 19.7088 16.9033 20.9723 14.8354 21.5838C12.7674 22.1952 10.5573 22.1218 8.53447 21.3744C6.51168 20.6271 4.78465 19.246 3.61096 17.4369C2.43727 15.6279 1.87979 13.4879 2.02168 11.3362C2.16356 9.18443 2.99721 7.13619 4.39828 5.49694C5.79935 3.85768 7.69279 2.71525 9.79619 2.24001C11.8996 1.76477 14.1003 1.9822 16.07 2.85986 strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3Cpath dM22 4L12 14.01L9 11.01 strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);--lp-icon-close:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM1.72102 22.2787C1.79068 22.3485 1.8734 22.4038 1.96444 22.4415C2.05549 22.4793 2.15309 22.4987 2.25165 22.4987C2.35021 22.4987 2.44781 22.4793 2.53885 22.4415C2.6299 22.4038 2.71262 22.3485 2.78227 22.2787L11.9998 13.0612L21.221 22.2787C21.3618 22.4195 21.5526 22.4985 21.7516 22.4985C21.9507 22.4985 22.1415 22.4195 22.2823 22.2787C22.423 22.138 22.5021 21.9471 22.5021 21.7481C22.5021 21.5491 22.423 21.3582 22.2823 21.2175L13.061 12L22.2785 2.77872C22.4193 2.63799 22.4983 2.44712 22.4983 2.2481C22.4983 2.04907 22.4193 1.8582 22.2785 1.71747C22.1378 1.57674 21.9469 1.49768 21.7479 1.49768C21.5489 1.49768 21.358 1.57674 21.2173 1.71747L11.9998 10.9387L2.77852 1.72122C2.63505 1.59835 2.45049 1.53415 2.26173 1.54144C2.07298 1.54873 1.89392 1.62698 1.76035 1.76055C1.62678 1.89412 1.54853 2.07318 1.54124 2.26193C1.53395 2.45069 1.59815 2.63525 1.72102 2.77872L10.9385 12L1.72102 21.2212C1.58134 21.3617 1.50293 21.5518 1.50293 21.75C1.50293 21.9481 1.58134 22.1382 1.72102 22.2787Z fill%23212227/%3E%3C/svg%3E);--lp-icon-location:url(data:image/svg+xml,%3Csvg xmlnshttp://www.w3.org/2000/svg width24 height24%3E%3Cpath dM5 10.5C5 6 8 3 12.5 3S20 6.75 20 10.5c0 2.33-2.18 5.54-6.53 9.6a1.5 1.5 0 0 1-2 .06C7.17 16.51 5 13.29 5 10.5Zm7.5 1.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z/%3E%3C/svg%3E);--lp-icon-mail:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM4 4H20C21.1 4 22 4.9 22 6V18C22 19.1 21.1 20 20 20H4C2.9 20 2 19.1 2 18V6C2 4.9 2.9 4 4 4Z strokeblack stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3Cpath dM22 6L12 13L2 6 strokeblack stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);--lp-icon-question-mark:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z strokeblack stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3Cpath dM9.08984 9.00002C9.32495 8.33169 9.789 7.76813 10.3998 7.40915C11.0106 7.05018 11.7287 6.91896 12.427 7.03873C13.1253 7.15851 13.7587 7.52154 14.2149 8.06355C14.6712 8.60555 14.9209 9.29154 14.9198 10C14.9198 12 11.9198 13 11.9198 13 strokeblack stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3Cpath dM12 17H12.01 strokeblack stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);--lp-icon-checkmark:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM9 11L12 14L22 4 strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3Cpath dM21 12V19C21 19.5304 20.7893 20.0391 20.4142 20.4142C20.0391 20.7893 19.5304 21 19 21H5C4.46957 21 3.96086 20.7893 3.58579 20.4142C3.21071 20.0391 3 19.5304 3 19V5C3 4.46957 3.21071 3.96086 3.58579 3.58579C3.96086 3.21071 4.46957 3 5 3H16 strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);--lp-icon-data:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM14 2H6C5.46957 2 4.96086 2.21071 4.58579 2.58579C4.21071 2.96086 4 3.46957 4 4V20C4 20.5304 4.21071 21.0391 4.58579 21.4142C4.96086 21.7893 5.46957 22 6 22H18C18.5304 22 19.0391 21.7893 19.4142 21.4142C19.7893 21.0391 20 20.5304 20 20V8L14 2Z strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3Cpath dM14 2V8H20 strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3Cpath dM16 13H8 strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3Cpath dM16 17H8 strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3Cpath dM10 9H9H8 strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);--lp-icon-home:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM3 9L12 2L21 9V20C21 20.5304 20.7893 21.0391 20.4142 21.4142C20.0391 21.7893 19.5304 22 19 22H5C4.46957 22 3.96086 21.7893 3.58579 21.4142C3.21071 21.0391 3 20.5304 3 20V9Z strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3Cpath dM9 22V12H15V22 strokewhite stroke-width2 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);--lp-icon-thunder-move:url(data:image/svg+xml,%3Csvg xmlnshttp://www.w3.org/2000/svg width24 height24%3E%3Cpath dm16.37 19.94 5.85-8.77A.75.75 0 0 0 21.6 10H17V4.48a.75.75 0 0 0-1.37-.42l-5.85 8.77A.75.75 0 0 0 10.4 14H15v5.52a.75.75 0 0 0 1.37.42ZM4.5 5h5a1.5 1.5 0 0 1 0 3h-5a1.5 1.5 0 1 1 0-3Zm0 12h5a1.5 1.5 0 0 1 0 3h-5a1.5 1.5 0 0 1 0-3Zm-2-6h4a1.5 1.5 0 0 1 0 3h-4a1.5 1.5 0 0 1 0-3Z /%3E%3C/svg%3E);--col-padding:16px;--textNeutralColor:#848484;position:relative;overflow:visible;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation{padding:var(--header-height, 96px) 72px 0 72px;}@media (max-width: 1024px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation{padding:0;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation__container{width:100%;max-width:none;padding-left:72px;padding-right:72px;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation__container{padding-left:16px;padding-right:16px;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation--fullbleed{padding:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .opening-wrapper{min-height:calc(60vh - var(--header-height, 96px));position:relative;width:100%;height:100%;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .opening-wrapper{min-height:80vh;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .background{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;overflow:hidden;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .background:after{content:;display:block;position:absolute;top:0;bottom:0;left:0;right:0;background:linear-gradient(180deg, rgba(33, 34, 39, 0) 0%, #212227 100%);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .background>img{object-fit:cover;height:100%;width:100%;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .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:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;padding:224px 112px min(15vh, 80px) 112px;}@media (max-width: 1024px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .content{padding:216px 24px 60px 24px;}}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .content{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;padding-top:124px;padding-bottom:24px;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .benefits{margin:0;list-style:none;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;gap:16px 24px;font-size:14px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .benefits .benefit{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;margin-bottom:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .benefits .benefit::before{content:;-webkit-mask-image:var(--lp-icon-check);mask-image:var(--lp-icon-check);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:24px;height:24px;margin-right:12px;background-color:var(--highlightColor, currentColor);}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .benefits .benefit{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper{position:relative;margin-top:22px;padding:24px;background-color:#fff;color:#000;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper{padding:0;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;background-color:transparent;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper .search-icon{padding:0 12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper .search-icon{display:none;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper .search-input{-webkit-box-flex:100;-webkit-flex-grow:100;-ms-flex-positive:100;flex-grow:100;border:none;padding:12px 24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper .search-input:focus{outline:none;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper .search-input{width:100%;margin-bottom:0.5rem;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper .lp-btn{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-checklist{margin:0;list-style:none;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;gap:16px 24px;padding:0;font-size:14px;line-height:2;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-checklist li{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;margin-bottom:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-checklist li::before{font-size:inherit;content:;display:inline-block;vertical-align:middle;-webkit-mask-image:var(--lp-icon-done);mask-image:var(--lp-icon-done);-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:24px;height:24px;margin-right:12px;background-color:var(--bgcolor, currentColor);}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-checklist li{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-checklist--golden li::before{background-color:var(--highlightColor, #CCB091);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-checklist--small{margin-left:0;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:24px 16px;font-size:12px;line-height:1.33333;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-checklist--small li{-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-checklist--small li::before{width:16px;height:16px;margin-right:8px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-wrapper{position:absolute;left:0;top:100%;width:100%;max-width:584px;z-index:12;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-wrapper{top:46px;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .search-results{line-height:normal;text-align:left;background-color:var(--lp-color-light, #fff);position:relative;top:0;width:100%;border:none;overflow:hidden;border-radius:0;-webkit-transition:height 0.3s ease;transition:height 0.3s ease;height:0;z-index:1;box-shadow:0px 15px 40px rgba(0, 0, 0, 0.08);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .search-results.show{margin-top:4px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .search-results.on-top{top:auto;bottom:calc(100% + 1.25rem);box-shadow:none;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .search-in-progress{padding:30px 0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:30px;opacity:0.5;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .not-visible{display:none!important;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .nothing-found{width:100%;padding:20px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .predefined-links{max-height:400px;overflow-x:hidden;overflow-y:auto;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-container,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .predefined-links{padding:12px 24px;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-container,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .predefined-links{padding-top:8px;padding-bottom:8px;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-search__input{font-size:16px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-link{cursor:pointer;width:100%;padding-top:18px;padding-bottom:17px;border-bottom:1px solid #f3f3f3;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;color:#848484;-webkit-transition:color 0.3s ease;transition:color 0.3s ease;white-space:nowrap;overflow:hidden;font-weight:400;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-link:last-child{border-bottom:none;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-link .highlighted{color:var(--lp-color-dark, #000);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-link .main-text{max-width:100%;text-overflow:ellipsis;overflow:hidden;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-link .secondary-text{margin-left:0.3em;-webkit-flex:1;-ms-flex:1;flex:1;max-width:100%;text-overflow:ellipsis;overflow:hidden;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-link:hover,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-link.selected-link{color:var(--lp-color-dark-2, #000);font-weight:500;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-block-title{margin-bottom:0.125rem;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .results-title-label{padding-left:var(--res-h-pads);padding-right:var(--res-h-pads);font-weight:700;line-height:1.625;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal{position:fixed;top:0;left:0;width:100%;height:100%;padding:0;background-color:rgba(0,0,0,.75);z-index:1010;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal.visible{-webkit-animation:fadeIn .6s ease;animation:fadeIn .6s ease;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal:not(.visible){display:none;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal ::-webkit-scrollbar{width:6px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal ::-webkit-scrollbar-track{border-radius:6px;background-color:#f3f3f3;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal ::-webkit-scrollbar-thumb{border-radius:6px;background-color:#c4c4c4;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__content{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;width:100%;height:100%;margin:auto;background-color:#fff;color:#000;overflow:hidden;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__back{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;margin-bottom:16px;font-size:12px;line-height:16px;font-weight:600;border:none;background:transparent;-webkit-text-decoration:none;text-decoration:none;padding:0;cursor:pointer;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__back .hv-icon{margin-right:8px;font-size:16px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__back .hv-icon::after{width:16px;height:16px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__body{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;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;overflow-y:auto;scrollbar-color:#C4C4C4 #f3f3f3;scrollbar-width:thin;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__row{height:100%;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:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin-left:-16px;margin-right:-16px;}@media(max-width: 1024px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__row{margin-left:0;margin-right:0;-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;height:-webkit-max-content;height:-moz-max-content;height:max-content;min-height:100%;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__sso-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:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:12px;margin-bottom:24px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__col{position:relative;max-width:50%;-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;padding-left:16px;padding-right:16px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__col:not(:first-child)::before{content:;position:absolute;left:-0.5px;top:0;height:100%;border-right:1px solid #E7E7E7;pointer-events:none;}@media (max-width: 1024px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__col:not(:first-child)::before{display:none;}}@media(max-width: 1024px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__col{max-width:100%;-webkit-flex:0;-ms-flex:0;flex:0;padding:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__col:not(:first-child){border-top:1px solid #e7e7e7;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__content-block{padding-top:40px;padding-bottom:40px;width:max(415px, 66.66667%);margin:15vh auto;}@media(max-width: 1024px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__content-block{width:100%;margin:auto;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__title{margin-bottom:8px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__lead{margin-bottom:24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__powered-by{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:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__powered-by svg{margin-left:.5em;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-modal__how-calc{margin-top:12px;margin-bottom:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .content-item:not(:last-of-type){padding-bottom:24px;border-bottom:1px solid #e7e7e7;margin-bottom:24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .content-item__label{margin-bottom:8px;font-size:12px;line-height:16px;text-transform:uppercase;letter-spacing:0.5px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .content-item__address{margin-bottom:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .plunk-result{-webkit-order:2;-ms-flex-order:2;order:2;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-form{width:100%;margin-bottom:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-form__line{margin-bottom:16px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-form__footer{margin-top:24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-form__footer:only-child{margin-top:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-form__footer .lp-btn{width:100%;margin-bottom:8px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .agent-card__row{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;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .agent-card__avatar{width:72px;height:72px;-webkit-flex:0 0 72px;-ms-flex:0 0 72px;flex:0 0 72px;border-radius:50%;margin-right:20px;overflow:hidden;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .agent-card__avatar{width:56px;height:56px;-webkit-flex-basis:56px;-ms-flex-preferred-size:56px;flex-basis:56px;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .agent-card__avatar>img{width:100%;height:100%;object-fit:cover;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .agent-card__avatar>img.portrait{object-position:top;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .agent-card__name{margin-bottom:4px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .agent-card__name:last-child{margin-bottom:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .agent-card__label{margin-bottom:0;font-size:14px;line-height:16px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .agent-card__label .hv-icon:after{width:16px;height:16px;vertical-align:middle;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon{font-size:inherit;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon:after{--width:24px;--height:24px;--bgcolor:var(--lp-color-dark);content:;display:inline-block;vertical-align:middle;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;width:var(--width, 1em);height:var(--height, 1em);background-color:var(--bgcolor, currentColor);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-success:after{-webkit-mask-image:var(--lp-icon-success);mask-image:var(--lp-icon-success);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-done:after{-webkit-mask-image:var(--lp-icon-done);mask-image:var(--lp-icon-done);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-close{width:21px;height:21px;background:transparent;cursor:pointer;border:unset;}@media (hover: hover) and (pointer: fine){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-close:hover{opacity:0.7;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-close:focus{outline:none;opacity:0.7;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-close:after{-webkit-mask-image:var(--lp-icon-close);mask-image:var(--lp-icon-close);height:100%;width:100%;background-color:var(--lp-color-primary-dark-blue);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-location:after{-webkit-mask-image:var(--lp-icon-location);mask-image:var(--lp-icon-location);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-mail:after{-webkit-mask-image:var(--lp-icon-mail);mask-image:var(--lp-icon-mail);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-question-mark:after{-webkit-mask-image:var(--lp-icon-question-mark);mask-image:var(--lp-icon-question-mark);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-checkmark:after{-webkit-mask-image:var(--lp-icon-checkmark);mask-image:var(--lp-icon-checkmark);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-back:after{-webkit-mask-image:var(--lp-icon-back);mask-image:var(--lp-icon-back);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-data:after{-webkit-mask-image:var(--lp-icon-data);mask-image:var(--lp-icon-data);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-home:after{-webkit-mask-image:var(--lp-icon-home);mask-image:var(--lp-icon-home);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-icon-thunder-move:after{-webkit-mask-image:var(--lp-icon-thunder-move);mask-image:var(--lp-icon-thunder-move);}@-webkit-keyframes grow{from{width:40%;}to{width:100%;}}@keyframes grow{from{width:40%;}to{width:100%;}}@-webkit-keyframes rotate{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);transform-origin:50% 50%;}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);transform-origin:50% 50%;}}@keyframes rotate{from{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);transform-origin:50% 50%;}to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);transform-origin:50% 50%;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .valuation-placeholder{max-width:200px;margin-bottom:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .valuation-placeholder::before,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .valuation-placeholder::after{content:;display:block;width:80px;height:.5rem;background-color:#f3f3f3;border-radius:1rem;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .valuation-placeholder::before{width:144px;margin-bottom:.75rem;-webkit-animation-delay:2s;animation-delay:2s;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .valuation-output{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;gap:16px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .valuation-output .lp-socials{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;text-align:right;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;margin-bottom:-1em;row-gap:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .valuation-output .lp-socials li{margin-bottom:1em;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .text-neutral{color:var(--textNeutralColor, #848484);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .mb-0{margin-bottom:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .mb-1{margin-bottom:8px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .mb-2{margin-bottom:16px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .mb-3{margin-bottom:24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .mt-0{margin-bottom:0;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .mt-1{margin-top:8px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .mt-2{margin-top:16px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .mt-3{margin-top:24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup{height:100vh;width:100%;padding:24px;background-color:rgba(0, 0, 0, 0.3);position:fixed;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;top:0;left:0;z-index:1010;overflow-y:auto;scrollbar-color:#C4C4C4 #f3f3f3;scrollbar-width:thin;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup ::-webkit-scrollbar{width:6px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup ::-webkit-scrollbar-track{border-radius:6px;background-color:#f3f3f3;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup ::-webkit-scrollbar-thumb{border-radius:6px;background-color:#c4c4c4;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__text-header{padding-right:80px;margin-bottom:24px;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__text-header{padding-right:40px;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__title{margin-bottom:8px;padding-right:24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__lead{margin-bottom:24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__close{position:absolute;right:40px;top:44px;cursor:pointer;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__close{right:16px;top:24px;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__container{position:relative;width:100%;max-width:631px;margin:auto;background:#fff;color:#000;padding:40px;-webkit-animation-duration:.3s;animation-duration:.3s;}@media (max-width: 620px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__container{padding:24px 16px;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__label{display:block;margin-bottom:8px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__btn-group{margin-top:24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__btn-group button,#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__btn-group .lp-btn{display:block;width:100%;margin-top:12px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hv-popup__footer{margin-top:12px;text-align:center;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .close-icon{width:24px;height:24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .close-icon:after{content:;display:block;background-color:#000000;width:24px;height:24px;-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM7 7L17 17 strokeblack stroke-width2 stroke-miterlimit10 stroke-linecapround/%3E%3Cpath dM7 17L17 7 strokeblack stroke-width2 stroke-miterlimit10 stroke-linecapround/%3E%3C/svg%3E%0A);mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM7 7L17 17 strokeblack stroke-width2 stroke-miterlimit10 stroke-linecapround/%3E%3Cpath dM7 17L17 7 strokeblack stroke-width2 stroke-miterlimit10 stroke-linecapround/%3E%3C/svg%3E%0A);-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM7 7L17 17 strokeblack stroke-width2 stroke-miterlimit10 stroke-linecapround/%3E%3Cpath dM7 17L17 7 strokeblack stroke-width2 stroke-miterlimit10 stroke-linecapround/%3E%3C/svg%3E%0A);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .map-container{width:100%;height:152px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .hint{cursor:pointer;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 hidden{display:none!important;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .redesign p{white-space:normal;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .conditional-desktop-only{display:block;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .conditional-mobile-only{display:none;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .schedule-consultation{border-top:none!important;}@media (max-width: 1024px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .js-result-shown{max-width:100%;-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .js-result-shown:not(:first-child){border-bottom:1px solid #e7e7e7;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .js-result-shown .hv-modal__col{border-top:none;-webkit-order:2;-ms-flex-order:2;order:2;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .js-result-shown .plunk-result{-webkit-order:-1;-ms-flex-order:-1;order:-1;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .js-result-shown .conditional-desktop-only{display:none;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .js-result-shown .conditional-mobile-only{display:block;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .loader{position:absolute;right:0;left:0;bottom:-36px;color:var(--fontColor, #ffffff);}@media(max-width: 768px){#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .loader{margin-top:.75rem;}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .loader .line-wrapper{background:#ffffff;height:3px;position:relative;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .loader .line{position:absolute;top:0;left:0;bottom:0;right:0;height:3px;width:0;background-color:var(--highlightColor);}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .loader .text{margin-top:8px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-h5{text-transform:none;font-weight:400;font-family:var(--global-primary-font-family);font-size:24px;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .lp-input{color:currentColor;}@media (min-width: 960px) and (orientation: landscape){#section-83ada1dc-c514-464f-aab7-b87138bdadd8{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/27a72cb2-2052-42a0-b321-11dabe6d07f4);}}@media (min-width: 1280px) and (orientation: landscape){#section-83ada1dc-c514-464f-aab7-b87138bdadd8{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/27a72cb2-2052-42a0-b321-11dabe6d07f4);}}@media (min-width: 1920px) and (orientation: landscape){#section-83ada1dc-c514-464f-aab7-b87138bdadd8{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/27a72cb2-2052-42a0-b321-11dabe6d07f4);}}@media (min-width: 2560px) and (orientation: landscape){#section-83ada1dc-c514-464f-aab7-b87138bdadd8{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/27a72cb2-2052-42a0-b321-11dabe6d07f4);}}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper .search-input::-webkit-input-placeholder{color:#848484;opacity:1;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper .search-input::-moz-placeholder{color:#848484;opacity:1;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper .search-input:-ms-input-placeholder{color:#848484;opacity:1;}#section-83ada1dc-c514-464f-aab7-b87138bdadd8 .home-valuation .search-wrapper .search-input::placeholder{color:#848484;opacity:1;}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5{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;}@media (max-width: 560px){#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .redesign .button-container{padding-left:25px;padding-right:25px;}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .redesign .lp-btn{width:100%;}}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid{text-align:center;}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .lp-text--pretitle,#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .lp-text--subtitle{margin-left:auto;margin-right:auto;}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items{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-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items.items-1 .item{margin-left:auto;margin-right:auto;}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items.three-columns .item{width:calc(100% / 3);}@media (max-width: 768px){#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items.three-columns .item{width:100%;}}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item{width:50%;overflow:hidden;}@media (max-width: 768px){#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item{width:100%;}}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item h3{margin-bottom:1.666rem;}@media (max-width: 768px){#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item h3{margin-bottom:0;}}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item .item-wrapper{padding-bottom:70%;position:relative;display:block;}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .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;background-color:#eeeeee;}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item .item-wrapper .image-holder img{position:absolute;width:100%;height:100%;top:0;left:0;object-fit:cover;}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item .item-wrapper .overlay{position:absolute;left:0;right:0;top:0;bottom:0;background-color:rgba(0, 0, 0, 0.3);}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .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%;}@media (max-width: 1024px){#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item .item-wrapper .content-container{width:calc(100% - 40px);}}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item .item-wrapper .content-container .button-wrapper{-webkit-transition:all linear 0.4s;transition:all linear 0.4s;}@media (min-width: 1025px){#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item .item-wrapper .content-container .button-wrapper{max-height:0;opacity:0;}}@media (max-width: 1024px){#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item .item-wrapper .content-container .button-wrapper{display:none;}}@media (min-width: 1025px){#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item:hover .item-wrapper .image-holder{-webkit-transform:scale(1.1);-moz-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1);}}@media (min-width: 1025px){#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .featured-neighborhoods-grid .items .item:hover .item-wrapper .content-container .button-wrapper{max-height:90px;opacity:1;}}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .neighborhood-name{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;}#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .button-container{padding-top:60px;}@media(max-width: 768px){#section-ccabc689-9fc7-4e77-9811-812a3780cdb5 .button-container{padding-top:40px;}}#section-d539c121-e859-45ec-8884-5b5c00e2d103{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#007728;--bgColor_H:140;--bgColor_S:100%;--bgColor_L:23%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#007728;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .lp-input{border-color:var(--lightAccent);}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup{min-height:80vh;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup .lp-container-custom{padding:0 25px;}}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form{margin:0;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form.success .newsletter-signup__form-container{display:none;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form.success .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__inputs-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__inputs-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form-container{position:relative;z-index:1;}@media (max-width: 768px){#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form-container .lp-h2{margin-bottom:32px;}}@media (max-width: 768px){#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form-container .lp-text--subtitle{margin-bottom:32px;}}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form-item +.newsletter-signup__form-item{margin-left:16px;}@media (max-width: 768px){#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form-item +.newsletter-signup__form-item{margin-left:0px;margin-top:32px;}}@media (min-width: 769px){#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form-item.lp-input{padding-top:0;padding-bottom:0;width:250px;}}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form-item.lp-btn{text-transform:uppercase;font-weight:700;}@media (min-width: 769px){#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup__form-item.lp-btn{width:200px;}}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;visibility:visible;opacity:1;z-index:2;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;text-align:center;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .newsletter-signup .success-block.hide{display:none;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .lp-h-pot{max-width:1px;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .lp-title-group{max-width:unset;padding:0 20px;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 input:-webkit-autofill,#section-d539c121-e859-45ec-8884-5b5c00e2d103 input:-webkit-autofill:hover,#section-d539c121-e859-45ec-8884-5b5c00e2d103 input:-webkit-autofill:focus,#section-d539c121-e859-45ec-8884-5b5c00e2d103 input:-webkit-autofill:active{-webkit-text-fill-color:var(--fontColor);-webkit-box-shadow:0 0 0px 1000px var(--bgColor) inset;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s;}#section-d539c121-e859-45ec-8884-5b5c00e2d103 .lp-disclaimer{max-width:730px;margin:20px auto 0 auto;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(4 / 4 * var(--global-section-padding));--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:#fff;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press h4 span.link{text-decoration-color:transparent;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press h4 span.link:hover{text-decoration-color:transparent;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f div.featured-press-section header{max-width:1200px;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press-section header h2{margin:0 0 0!important;}@media (max-width: 767px){#section-440ed424-ead1-49d9-ac86-f7431c4d252f .redesign .container{padding-left:21px!important;padding-right:21px!important;}}#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press-section{padding:140px 0;text-align:center;}@media(max-width: 768px){#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press-section{padding:40px 0;}}@media(min-width:769px){#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press-section{padding:82px 0;}}#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press-section header{max-width:700px;margin:0 auto 50px;}@media(max-width: 768px){#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press-section header{margin-bottom:40px;}}#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press-section header h2{margin:0 0 25px;}@media(max-width: 768px){#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press-section header h2{margin-bottom:20px;}}#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press-section header p{margin:0;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press__details{list-style-type:none;display:block;margin:0 0 9px;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press__details >li{display:inline-block;position:relative;font-size:14px;font-weight:700;line-height:1;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f .featured-press__details >li+li{margin-left:6px;padding-left:10px;border-left:2px solid;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press{margin:auto;padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-evenly;-ms-flex-pack:space-evenly;-webkit-justify-content:space-evenly;justify-content:space-evenly;text-align:left;list-style:none;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;max-width:1130px;}@media(max-width: 1100px){#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press{margin-left:-10px;margin-right:-10px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}@media(max-width: 769px){#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press{margin:0 auto 50px;max-width:100%;}}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press >li{max-width:unset;width:calc(45% - 20px);margin:0 10px 40px;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press >li:hover figure:before{opacity:1;}@media(max-width: 769px){#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press >li{max-width:100%;width:100%;margin-left:40px;margin-right:40px;margin-bottom:0;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press >li+li{margin-top:65px;}}@media(min-width: 770px){#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press.three-columns >li{width:calc(33% - 20px);}}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press figure{height:300px;position:relative;margin-bottom:25px;background-color:gray;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press figure:before{content:;position:absolute;top:0;bottom:0;right:0;left:0;background:rgba(0, 0, 0, .4);-webkit-transition:.3s linear;transition:.3s linear;opacity:0;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press img{vertical-align:top;height:100%;width:100%;object-fit:cover;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press .label{position:absolute;top:0;left:0;max-width:100%;background-color:#fff;color:#000;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press h4{margin:0 0 10px;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press h4 .link{white-space:normal;-webkit-text-decoration:underline;text-decoration:underline;font-weight:400;text-underline-offset:5px;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press h4 .link:before,#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press h4 .link:after{content:none;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press p{margin:0 0 20px;white-space:normal;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press strong{display:inline-block;vertical-align:top;font-weight:700;font-size:14px;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press time{position:relative;display:inline;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.featured-press time:before{content:;display:inline-block;height:11px;background-color:#c6c6c6;width:1px;margin:8px 15px 0 12px;vertical-align:top;}@media (min-width: 769px){#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.one-item >li{max-width:610px;width:100%;}#section-440ed424-ead1-49d9-ac86-f7431c4d252f ul.one-item figure{height:250px;}}#section-440ed424-ead1-49d9-ac86-f7431c4d252f>div:last-child{padding-top:calc(4 / 4 * var(--global-section-padding))!important;padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-51327815-1017-4d13-8c6f-4d5eaa4c8850{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.30));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/f371a49e-69ad-4488-a198-524f802340d0);background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-51327815-1017-4d13-8c6f-4d5eaa4c8850.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-51327815-1017-4d13-8c6f-4d5eaa4c8850.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-51327815-1017-4d13-8c6f-4d5eaa4c8850.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-51327815-1017-4d13-8c6f-4d5eaa4c8850 .redesign.work-with-us{position:relative;color:var(--fontColor, #ffffff);}#section-51327815-1017-4d13-8c6f-4d5eaa4c8850 .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-51327815-1017-4d13-8c6f-4d5eaa4c8850 .redesign.work-with-us .container{min-height:auto;padding-top:100px;padding-bottom:100px;}}#section-51327815-1017-4d13-8c6f-4d5eaa4c8850 .redesign.work-with-us h2{position:relative;padding-bottom:28px;margin:0 0 30px;}@media(max-width: 768px){#section-51327815-1017-4d13-8c6f-4d5eaa4c8850 .redesign.work-with-us h2{padding-bottom:40px;}}#section-51327815-1017-4d13-8c6f-4d5eaa4c8850 .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-51327815-1017-4d13-8c6f-4d5eaa4c8850 .redesign.work-with-us p{margin:0 0 30px;}@media(max-width: 768px){#section-51327815-1017-4d13-8c6f-4d5eaa4c8850 .redesign.work-with-us p{margin-bottom:40px;}}#section-51327815-1017-4d13-8c6f-4d5eaa4c8850 .redesign.work-with-us .btn-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;gap:23px;margin-top:32px;}@media(max-width: 560px){#section-51327815-1017-4d13-8c6f-4d5eaa4c8850 .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-51327815-1017-4d13-8c6f-4d5eaa4c8850{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/f371a49e-69ad-4488-a198-524f802340d0);}}@media (min-width: 1280px) and (orientation: landscape){#section-51327815-1017-4d13-8c6f-4d5eaa4c8850{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1920/https://media-production.lp-cdn.com/media/f371a49e-69ad-4488-a198-524f802340d0);}}@media (min-width: 1920px) and (orientation: landscape){#section-51327815-1017-4d13-8c6f-4d5eaa4c8850{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/f371a49e-69ad-4488-a198-524f802340d0);}}@media (min-width: 2560px) and (orientation: landscape){#section-51327815-1017-4d13-8c6f-4d5eaa4c8850{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/f371a49e-69ad-4488-a198-524f802340d0);}}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#007728;--bgColor_H:140;--bgColor_S:100%;--bgColor_L:23%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#007728;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .ig-feed{padding:80px 0;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .title{margin:0 20px 0 0;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .instagram-link{display:block;margin:0 20px 0 0;color:var(--global-primary-font-color);}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .instagram-link .instagram-name{display:inline;margin:0;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .title+.instagram-link{margin-top:5px;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .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-b506bd7f-e011-4ce3-8bf7-583fae4f992f .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-b506bd7f-e011-4ce3-8bf7-583fae4f992f .follow-button{margin:20px 0 0 0;display:block;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .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-b506bd7f-e011-4ce3-8bf7-583fae4f992f .nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .nav-button:not(.slick-disabled):hover{background-color:#1a1a1a;border-color:#1a1a1a;color:#fff;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .top-nav-prev{margin-left:30px;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .top-nav-next{margin-left:10px;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .hidden-control{display:none;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-single,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .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-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-single:first-child,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-multi:first-child{margin-left:auto;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-single:last-child,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-multi:last-child{margin-right:auto;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-single.type2,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-multi.type2{width:calc(100% / 5 * 2);}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-single.type3,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-multi.type3{width:calc(100% / 2);}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-single.type4,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-multi.type4{width:calc(100% / 2);}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-single.type5,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-multi.type5{width:100%;}@media (max-width: 440px){#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .ig-feed-container{padding:0;width:100%;}}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .ig-feed-feed{width:calc(100% + 20px);position:relative;left:-10px;overflow:hidden;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .ig-feed-slider{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .ig-feed-item__img{position:absolute;left:-1px;top:-1px;bottom:-1px;right:-1px;background:center/cover no-repeat;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .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-b506bd7f-e011-4ce3-8bf7-583fae4f992f .ig-feed-item:hover .ig-feed-item__info{opacity:1;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .ig-feed-item__caption{text-overflow:ellipsis;-webkit-line-clamp:4;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .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-b506bd7f-e011-4ce3-8bf7-583fae4f992f .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-b506bd7f-e011-4ce3-8bf7-583fae4f992f .ig-feed-item:hover .video-icon{opacity:0;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-single .ig-feed-item__info{padding:15%;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-single .ig-feed-item__caption{-webkit-line-clamp:7;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .ig-feed-item{background-color:var(--tileColor, #000);display:block;width:100%;padding-bottom:100%;overflow:hidden;position:relative;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-multi::before{content:;display:block;width:100%;padding-bottom:100%;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .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-b506bd7f-e011-4ce3-8bf7-583fae4f992f .slide-multi-content .ig-feed-item{width:calc(50% - 10px);padding-bottom:calc(50% - 10px);}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .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-b506bd7f-e011-4ce3-8bf7-583fae4f992f .bottom-controls{width:100%;display:none;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .bottom-nav-button{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin:20px 10px 0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:48px;height:48px;color:#1a1a1a;border:1px solid currentColor;cursor:pointer;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .bottom-nav-button.slick-disabled{opacity:0.6;pointer-events:none;cursor:default;}@media (max-width: 767px){#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .top-right,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .top-left{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .title,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .instagram-link{margin-right:0;text-align:center;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .top-nav-prev,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .top-nav-next{display:none;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .bottom-controls{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .ig-feed{display:none;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f .has-data .ig-feed{display:block;}#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f.has-data .ig-feed,#section-b506bd7f-e011-4ce3-8bf7-583fae4f992f#section-temp .ig-feed{display:block;}#modal-global-contact-us .close{z-index:11;}#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;}}@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;left:0;top:0;display:block;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:relative;margin-bottom:7px;}}#modal-global-contact-us .contact-form .info-zone_contact_cell i svg path{fill:var(--colorTxt);}#modal-global-contact-us .contact-form .info-zone_contact_cell div{padding:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell .contact_title{line-height:1;margin-bottom:5px;}#modal-global-contact-us .contact-form .info-zone_contact_link{color:var(--colorTxt);}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:58px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .hours_box{margin-bottom:52px;}}#modal-global-contact-us .contact-form .socials_zone{padding-left:45px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone{padding-left:0;}}#modal-global-contact-us .contact-form .socials_zone li{margin-bottom:10px;}#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:34px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:12px;}}#modal-global-contact-us .contact-form .success-message.success{margin-top:15px;color:var(--colorTxt);position:absolute;}#modal-global-contact-us .contact-form .success-message.hide{opacity:0;}#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:73px;}@media (max-width: 768px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:51px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:40px;}}#modal-global-contact-us .contact-form.one_contact .hours_box{margin-bottom:38px;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell{padding-left:0;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell i{display:none;}#modal-global-contact-us .contact-form.no_icon .socials_zone{padding-left:0;}#modal-global-contact-us .contact-form .pre-line{white-space:pre-line;}#modal-global-contact-us .lp-input-group{margin-bottom:40px;}#modal-global-contact-us .lp-input-group.m16{margin-bottom:16px;}#modal-global-contact-us .lp-disclaimer{margin-top:0;}#modal-global-contact-us .lp-input{border-color:#ffffff;}#modal-global-contact-us .lp-input:focus,#modal-global-contact-us .lp-input:active{border-color:#5e5e5e;}nav{color:#fff;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;z-index:102;}nav.scroll .logo .logo__img.light{display:block;}nav.scroll .logo .logo__img.dark{display:none;}nav .header{height:100px;-webkit-transform:translateY(24px);-moz-transform:translateY(24px);-ms-transform:translateY(24px);transform:translateY(24px);}@media (max-width: 768px){nav .header{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}nav .header .container{max-width:1440px;padding:0 15px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:100%;}@media (max-width: 1024px){nav .header .container{padding:0 15px;}}nav .header .navbar{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-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;}nav .header .logo a{overflow:hidden;display:inline-block;}nav .header .logo img{max-width:100%;max-height:52px;vertical-align:top;object-fit:contain;}@media (max-width: 1024px){nav .header .logo img{max-height:50px;}}nav .header .logo img.dark{display:none;}@media(max-width: 1024px){nav .header .logo img.dark{display:none!important;}}nav .header .logo img.light{display:block;}@media(max-width: 1024px){nav .header .logo img.light{display:inline-block!important;}}nav .header .logo__link{-webkit-animation-duration:1s;animation-duration:1s;overflow:hidden;}nav .header .logo__img.light{display:block;}nav .header .logo__img.dark{display:none;}nav .header .navigation{margin-left:auto;color:inherit;}@media (max-width: 1024px){nav .header .navigation{display:none;}}nav .header .navigation ul{position:relative;list-style-type:none;padding-left:0;margin-bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}nav .header .navigation ul li a span,nav .header .navigation ul li button span{position:relative;white-space:nowrap;}nav .header .navigation ul li a span:after,nav .header .navigation ul li button span:after{content:;position:absolute;display:block;height:1px;background-color:#c6c6c6;width:0;bottom:0;left:0;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation ul li a:hover span:after,nav .header .navigation ul li button:hover span:after{width:100%;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation__item{padding:0;margin:0;}nav .header .navigation__link{display:block;padding:12px 13px;color:inherit;position:relative;font-size:13px;line-height:1.08;font-weight:700;letter-spacing:1.5px;background-color:transparent;border:none;cursor:pointer;text-align:left;text-transform:uppercase;}@media (max-width: 1280px){nav .header .navigation__link{padding:19px 10px;font-size:11.5px;}}nav .header .navigation__link .sub-nav-container .navigation__link:hover{background:#000000;}nav .header .navigation .sub-nav{position:absolute;bottom:0;padding:0;opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transform:translate(0, calc(100% + -10px));-moz-transform:translate(0, calc(100% + -10px));-ms-transform:translate(0, calc(100% + -10px));transform:translate(0, calc(100% + -10px));}nav .header .navigation .sub-nav ul{margin:0;padding:12px 0;display:block;background-color:rgba(26, 26, 26, .75);max-width:300px;}nav .header .navigation .sub-nav__item{position:relative;display:block;margin:0;text-align:left;}nav .header .navigation .sub-nav__item:last-child{border-bottom-color:transparent;}nav .header .navigation .sub-nav__link{display:block;max-width:300px;color:#ffffff;margin:0;line-height:1;letter-spacing:1.5px;padding:19px 13px;-webkit-transition:all .2s ease;transition:all .2s ease;}nav .header .navigation .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, 100%);-moz-transform:translate(0, 100%);-ms-transform:translate(0, 100%);transform:translate(0, 100%);}nav .header .navigation .sub-nav.visible+.navigation__link{background:#000000;}nav .header .hamburger{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;padding:28px 13px;background-color:transparent;color:inherit;vertical-align:middle;cursor:pointer;outline:none;z-index:915;opacity:1;}nav .header .hamburger__bars{position:relative;display:block;width:26px;height:2px;background-color:currentColor;-webkit-transition:0.2s -webkit-transform ease;transition:0.2s transform ease;}nav .header .hamburger__bars:before,nav .header .hamburger__bars:after{content:;display:block;width:26px;height:2px;background-color:currentColor;position:absolute;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;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}body>div.sidemenu{background-color:#fff;color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;}body>div.sidemenu{width:auto!important;left:auto!important;right:-100%;top:0;background-color:transparent;-webkit-transition:right .3s;transition:right .3s;display:block;}body>div.sidemenu:not(.visible){pointer-events:none;visibility:hidden;}body>div.sidemenu.visible{right:0;}body>div.sidemenu .sidebar{position:relative;width:400px;height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-top:40px;padding-bottom:100px;background-color:var(--bgColor, #fff);color:var(--fontColor, #000);font-family:var(--global-primary-font-family);font-size:21px;line-height:1.333333;letter-spacing:.5px;-webkit-transition:all .3s ease-in;transition:all .3s ease-in;}@media (max-width: 767px){body>div.sidemenu .sidebar{width:270px;font-size:18px;}}body>div.sidemenu .sidebar__content{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;padding-left:40px;padding-right:40px;text-align:center;overflow-y:auto;}@media (max-width: 767px){body>div.sidemenu .sidebar__content{-webkit-box-pack:start;-ms-flex-pack:start;-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( var(--bgColor_H, 0), var(--bgColor_S, 0%), calc(50% + (var(--bgColor_L, 100%) - 50%) * 0.9), var(--bgColor_A, 1) );}body>div.sidemenu .sidebar__nav-link{display:inline-block;padding:10px;border:none;border-radius:0;background:transparent;text-transform:none;-webkit-transition:all .25s;transition:all .25s;cursor:pointer;color:inherit;}body>div.sidemenu .sidebar__nav-link:focus{outline:none;}body>div.sidemenu .sidebar__subnav{list-style:none;padding:4px 0 10px;margin:0;font-size:17px;}@media (max-width: 767px){body>div.sidemenu .sidebar__subnav{font-size:14px;letter-spacing:.3px;}}body>div.sidemenu .sidebar__subnav-item{margin-bottom:10px;}body>div.sidemenu .sidebar__subnav-item:last-child{margin-bottom:0;}body>div.sidemenu .sidebar__subnav-link{display:inline-block;padding:0;border:none;border-radius:0;background:transparent;text-transform:none;opacity:.7;-webkit-transition:all .25s;transition:all .25s;cursor:pointer;color:inherit;}body>div.sidemenu .sidebar__subnav-link:focus{outline:none;}body>div.sidemenu .sub-nav{visibility:hidden;opacity:0;max-height:0;-webkit-transition:all .3s;transition:all .3s;}body>div.sidemenu .sub-nav.visible{display:block;visibility:visible;opacity:1;max-height:100vh;}body>div.sidemenu .sub-nav.visible+.main-nav{color:#7a7a7a;}body>div.sidemenu .sub-nav.visible+.main-nav:after{margin-left:40px;border-bottom:2px solid var(--fontColor, #7a7a7a);border-right:2px solid var(--fontColor, #7a7a7a);}body>div.sidemenu .sub-nav-container{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;}body>div.sidemenu .sub-nav-container:hover .main-nav:after{border-bottom:2px solid var(--fontColor, #7a7a7a);border-right:2px solid var(--fontColor, #7a7a7a);}body>div.sidemenu .sub-nav-container .main-nav{position:relative;display:inline-block;}body>div.sidemenu .sub-nav-container .main-nav:after{content:;display:inline-block;position:relative;width:8px;height:8px;margin-left:25px;-webkit-transform:rotate(45deg) translateX(-100%);-moz-transform:rotate(45deg) translateX(-100%);-ms-transform:rotate(45deg) translateX(-100%);transform:rotate(45deg) translateX(-100%);border-bottom:2px solid var(--fontColor, #000000);border-right:2px solid var(--fontColor, #000000);top:0;bottom:auto;left:auto;-webkit-transition:0.5s all ease;transition:0.5s all ease;background-color:transparent;}body>div.sidemenu #main-section .sidebar{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);}footer{background-color:#fff;color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--greyColor:hsla(var(--fontColor_H),var(--fontColor_S),calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445),var(--fontColor_A));}footer .redesign .inp--dark-bg input{color:var(--fontColor);border-color:hsla( var(--fontColor_H), var(--fontColor_S), calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445), var(--fontColor_A));}footer .redesign .inp--dark-bg input:hover{border-color:var(--fontColor);}footer .redesign .inp+.inp{margin-top:24px;}footer .redesign .btn--primary-light{border-color:var(--fontColor);color:var(--fontColor);}footer .redesign .btn--primary-light:hover{background-color:var(--fontColor);color:var(--bgColor);}footer.is-background-color-light .redesign .btn--primary-light{border-width:1px;}footer .redesign .socials--grey{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}footer .redesign .socials--grey .socials__link{background-color:hsla( var(--bgColor_H), var(--bgColor_S), calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.15), 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( var(--bgColor_H), var(--bgColor_S), calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.4), 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;left:0;bottom:0;width:0%;height:1px;background:var(--greyColor);-webkit-transition:.3s linear;transition:.3s linear;}footer .footer .hvr_animation:hover:after{width:100%;}footer .footer .hvr_animation.underlined:after{width:100%;}footer .footer .hvr_animation.underlined:hover:after{width:0%;}footer .footer .form-content{padding:0!important;}footer .footer .form-content label{color:var(--fontColor);text-transform:none;letter-spacing:1;}footer .footer .form-content input{padding:2px 24px 2px 0;}footer .footer .form-content .subscribe_btn{margin-top:20px;position:relative;}footer .footer .form-content .subscribe_btn i{font-size:18px;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);opacity:0;}footer .footer .form-content.success i{opacity:1;}footer .footer .form-content.success .subscribe_btn span{opacity:0;}footer .footer .form-content.success .hide{opacity:0;}footer .footer .form-content.success .hide +span{opacity:1;}footer .footer .text_footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;margin-bottom:39px;}@media (max-width: 1280px){footer .footer .text_footer{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}@media (max-width: 560px){footer .footer .text_footer{text-align:center;}}footer .footer .text_footer p{white-space:normal;}footer .footer .text_footer .images_box{max-width:186px;width:100%;margin-right:43px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}@media (max-width: 560px){footer .footer .text_footer .images_box{margin:0 auto 20px auto;}}@media (max-width: 1280px){footer .footer .text_footer .img_size{margin-bottom:20px;}}@media (max-width: 560px){footer .footer .text_footer .img_size{margin-bottom:0;}}footer .footer .text_footer .img_size img{width:100%;height:100%;object-fit:contain;}footer .footer .first_text_footer .img_size{width:100%;height:63px;}footer .footer .first_text_footer .img_size img{width:100%;height:100%;object-fit:contain;}@media (max-width: 768px){footer .footer .first_text_footer{margin-bottom:51px;}}footer .footer .second_text_footer .first_img_size{width:45px;height:45px;margin-right:15px;}footer .footer .second_text_footer .second_img_size{width:100px;height:45px;}@media (max-width: 560px){footer .footer .second_text_footer{margin-bottom:21px;}}footer .footer .info-privacy{padding-top:45px;padding-bottom:30px;border-top:1px solid hsla( var(--bgColor_H), var(--bgColor_S), calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55), 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( var(--bgColor_H), var(--bgColor_S), calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55), 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;-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (max-width: 768px){footer .footer .info-privacy .socials_zone{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:0;margin-bottom:20px;}footer .footer .info-privacy .socials_zone li{padding:0 7px 10px 7px;}}footer .footer.one_contact .type_user{margin-bottom:73px;}@media (max-width: 768px){footer .footer.one_contact .type_user{margin-bottom:51px;}}footer .footer.no_newsletter h3{margin-bottom:46px;}footer .footer.no_newsletter .newsletter_box{display:none;}footer .footer.no_newsletter .info-wrap-contact{width:calc(70% + 230px);width:100%;padding-left:230px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact{padding-left:0;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact{width:100%;}}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact_cell{width:50%;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_cell{width:100%;}}footer .footer.no_newsletter .info-wrap-contact h4{position:absolute;margin-top:-8px;left:0;max-width:200px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact h4{position:relative;left:auto;max-width:100%;width:100%;margin-bottom:20px;margin-top:0;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact h4{position:relative;left:auto;max-width:100%;}}footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:71px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:39px;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:51px;}}footer .footer.no_newsletter .info-wrap-contact_zone:last-child{margin-bottom:0;}footer .footer.no_icon .info-wrap-contact_cell{padding-left:0;}footer .footer.no_icon .info-wrap-contact_cell i{display:none;}footer .footer.no-names .info-wrap-contact{padding-left:0;}footer .form-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-left:-15px;margin-right:-15px;}@media (min-width: 1281px){footer .form-row{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}@media (max-width: 900px){footer .form-row{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .form-col{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-left:15px;padding-right:15px;}@media (min-width: 768px){footer .form-col{-webkit-flex:1 1 0;-ms-flex:1 1 0;flex:1 1 0;}}@media (min-width: 768px){footer .form-col--socials{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}}@media (min-width: 1281px){footer .form-col--socials{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;}}@media (max-width: 768px){footer .form-col--socials{-webkit-order:-1;-ms-flex-order:-1;order:-1;}}@media (min-width: 1281px){footer .form-col--xl-auto{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}}footer .additional-links-separator{display:block;width:100%;height:0;overflow:hidden;}@media (min-width: 768px){footer .additional-links-separator{display:inline;width:auto;height:auto;}footer .additional-links-separator:before{content:|;}}footer .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;}footer .img-wrap{max-width:100px;width:100%;display:block;margin-right:20px;}@media (max-width: 900px){footer .img-wrap{margin-right:0;margin-bottom:10px;}}footer .img-wrap img{width:100%;object-fit:cover;}footer .powered-box{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;}@media (max-width: 900px){footer .powered-box{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .form-col--copyright{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;margin:10px 0;}footer .luxury-link{white-space:nowrap;}footer .footer__disclaimers{padding-top:24px;padding-bottom:24px;}@media (max-width: 900px){footer .footer__disclaimers{text-align:center;}}body>div.mobile-contact-wrapper{z-index:100;position:relative;}body>div.mobile-contact-wrapper .lp-ico:before{content:;width:1em;height:1em;background-color:currentColor;-webkit-background-size:cover;background-size:cover;display:block;-webkit-mask-position:center;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-transition:all .3s;transition:all .3s;}body>div.mobile-contact-wrapper .lp-ico-search:before{-webkit-mask-image:url(data:image/svg+xml,%3Csvg width25 height25 viewBox0 0 25 25 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z strokeblack stroke-width1.82813 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);-webkit-mask-image:url(data:image/svg+xml,%3Csvg width25 height25 viewBox0 0 25 25 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z strokeblack stroke-width1.82813 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);mask-image:url(data:image/svg+xml,%3Csvg width25 height25 viewBox0 0 25 25 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z strokeblack stroke-width1.82813 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);}body>div.mobile-contact-wrapper .lp-ico-arrow-top:before{-webkit-mask-image:url(data:image/svg+xml,%3Csvg width17 height16 viewBox0 0 17 16 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM12.8716 9.99976L8.87158 5.99976L4.87158 9.99976 strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);-webkit-mask-image:url(data:image/svg+xml,%3Csvg width17 height16 viewBox0 0 17 16 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM12.8716 9.99976L8.87158 5.99976L4.87158 9.99976 strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);mask-image:url(data:image/svg+xml,%3Csvg width17 height16 viewBox0 0 17 16 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM12.8716 9.99976L8.87158 5.99976L4.87158 9.99976 strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);}body>div.mobile-contact-wrapper .lp-ico-scroll-top:before{-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21 3H3M12 21V7M12 7L5 14M12 7L19 14 strokewhite stroke-width1.5 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E );-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21 3H3M12 21V7M12 7L5 14M12 7L19 14 strokewhite stroke-width1.5 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E );mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21 3H3M12 21V7M12 7L5 14M12 7L19 14 strokewhite stroke-width1.5 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E );}body>div.mobile-contact-wrapper .lp-ico-close:before{-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262 strokewhite stroke-width1.5 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E );-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262 strokewhite stroke-width1.5 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E );mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262 strokewhite stroke-width1.5 stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E );}body>div.mobile-contact-wrapper .lp-ico-phone:before{-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);}body>div.mobile-contact-wrapper .lp-ico-sms:before{-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);}body>div.mobile-contact-wrapper .lp-ico-email:before{-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);-webkit-mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);mask-image:url(data:image/svg+xml,%3Csvg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg%3E%3Cpath dM21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z strokewhite stroke-linecapround stroke-linejoinround/%3E%3C/svg%3E);}body>div.mobile-contact-wrapper a{-webkit-text-decoration:none;text-decoration:none;}body>div.mobile-contact-wrapper .btn-holder{bottom:-50px;left:19px;position:fixed;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:13px;opacity:0;-webkit-transition:all .3s;transition:all .3s;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .btn-holder{right:19px;padding:0 48px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}body>div.mobile-contact-wrapper .btn-holder.visible{bottom:28px;opacity:1;}body>div.mobile-contact-wrapper .search-btn{width:48px;height:48px;border-radius:999px;font-size:0;line-height:0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-transition:all .3s;transition:all .3s;padding:12px;color:#141414;background:#fff;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .search-btn{position:absolute;left:0;bottom:0;}}body>div.mobile-contact-wrapper .search-btn:before{width:24px;height:24px;}body>div.mobile-contact-wrapper .connect-btn{height:48px;padding:0 24px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;text-transform:uppercase;border-radius:25px;color:var(--pillTextColor);background:var(--pillBackgroundColor);border:1px solid rgba(255, 255, 255, 0.2);cursor:pointer;font-size:10px;font-style:normal;font-weight:500;line-height:16px;letter-spacing:0.4px;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-transition:all .4s;transition:all .4s;box-shadow:0 0 0 0 rgba(255, 255, 255, 0.2);-webkit-animation:pulsate 2s ease infinite;animation:pulsate 2s ease infinite;}body>div.mobile-contact-wrapper .connect-btn:before{width:16px;height:16px;}body>div.mobile-contact-wrapper .pop-up{display:none;position:fixed;bottom:0;left:0;width:100%;-webkit-transition:all .3s;transition:all .3s;border-radius:16px 16px 0 0;color:var(--textColor);background:var(--backgroundColor);}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up{max-width:637px;border-radius:16px;bottom:28px;left:19px;}}body>div.mobile-contact-wrapper .pop-up .lp-container{padding-top:24px;padding-bottom:24px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up .lp-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-top:40px;padding-bottom:40px;min-height:450px;padding-left:56px;padding-right:56px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}body>div.mobile-contact-wrapper .pop-up .close-btn{width:44px;height:44px;background-color:transparent;border-color:transparent;display:block;margin:24px auto 0;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--textColor);cursor:pointer;padding:10px;border:0;}body>div.mobile-contact-wrapper .pop-up .close-btn:before{width:24px;height:24px;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up .close-btn{position:absolute;top:14px;right:12px;margin:0;}}body>div.mobile-contact-wrapper .pop-up .icon-btn{width:44px;height:44px;border-radius:999px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:8px;color:var(--textColor);position:relative;}body>div.mobile-contact-wrapper .pop-up .icon-btn:after{position:absolute;bottom:0;width:100%;left:0;border-radius:999px;height:100%;content:;border:solid 1px var(--textColor);opacity:.3;}body>div.mobile-contact-wrapper .pop-up .icon-btn:before{width:24px;height:24px;}body>div.mobile-contact-wrapper .success-block{display:none;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .success-block{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}body>div.mobile-contact-wrapper .success-block .lp-btn{margin-top:24px;}body>div.mobile-contact-wrapper .contact-form{margin:0;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .contact-form__item{width:100%;}}body>div.mobile-contact-wrapper .contact-form__item .lp-input{width:100%;}body>div.mobile-contact-wrapper .contact-form__item .is-placeholder{color:#818181;}body>div.mobile-contact-wrapper .contact-form__item+.contact-form__item{margin-top:16px;}body>div.mobile-contact-wrapper .contact-form.show-success .contact-form__container,body>div.mobile-contact-wrapper .contact-form.success .contact-form__container{display:none;}body>div.mobile-contact-wrapper .contact-form.show-success .success-block,body>div.mobile-contact-wrapper .contact-form.success .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.mobile-contact-wrapper .contact-form .lp-disclaimer{margin-top:16px;}body>div.mobile-contact-wrapper .contact-form .lp-h3{margin-bottom:16px;}body>div.mobile-contact-wrapper .success-message{font-size:22px;}@-webkit-keyframes pulsate{0%{box-shadow:0 0 0 0 rgba(255, 255, 255, 0.2);}50%{box-shadow:0 0 4px 6px rgba(255, 255, 255, .5);}100%{box-shadow:0 0 12px 12px rgba(255, 255, 255, 0);}} /style> style idcustom-style-css>.button-style-1{color:#007728!important;background-color:rgba(0, 0, 0, 0)!important;border-color:#007728!important;}.button-style-1:hover{color:rgba(255,255,255,1)!important;background-color:#007728!important;border-color:#007728!important;}.hyperlink-style-1{color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-1:hover{color:#007728!important;}.pagination-style-1 li a{color:#007728!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:#007728!important;border-color:#007728!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:#007728!important;border-color:#007728!important;}.social_icons-style-1 a{border-color:#007728!important;background-color:#007728!important;color:#FFFFFF!important;}.social_icons-style-1 a:hover{border-color:#007728!important;background-color:rgba(0, 0, 0, 0)!important;color:#007728!important;}.social_icons-style-1 a i{color:inherit!important;}.social_icons-style-1 a svg,.social_icons-style-1 a svg path{fill:currentColor!important;}.social_icons-style-2 a{border-color:rgba(255, 255, 255, 1)!important;background-color:#FFFFFF!important;color:#007728!important;}.social_icons-style-2 a:hover{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;color:#FFFFFF!important;}.social_icons-style-2 a i{color:inherit!important;}.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.button-style-2{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-2:hover{color:#007728!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.pagination-style-2 li a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-2 li a:hover{color:#007728!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.pagination-style-2 li.active a{color:#007728!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:rgba(255, 255, 255, 0.7)!important;}.button-style-3{color:#FFFFFF!important;background-color:#007728!important;border-color:#007728!important;}.button-style-3:hover{color:#007728!important;background-color:rgba(0, 0, 0, 0)!important;border-color:#007728!important;}.button-style-4{color:#007728!important;background-color:#FFFFFF!important;border-color:#FFFFFF!important;}.button-style-4:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:#FFFFFF!important;}/style> script> (function utmParse() { const url new URL(window.location.href); if (url.search) { const utm url.search.split(/\?|&/g).reduce((acc, current) > { const matched current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g); if (matched) { accmatched0 current.replace(`${matched0}`, ); } return acc; }, {}); if (Object.keys(utm).length) { window.localStorage.setItem(utm_vars, JSON.stringify(utm)); } else { // Remove old utm vars window.localStorage.removeItem(utm_vars); } } // Set referrer in local storage // This is meant to be stored once to avoid self-referrals and to have the first referrer only. if (!window.localStorage.getItem(referrer)) { // Capture the Referrer URL const referrer document.referrer; if (referrer) { // Only store the referrer if it comes from outside the current domain (to avoid self-referrals) const currentDomain window.location.hostname; const referrerDomain new URL(referrer).hostname; if (referrerDomain ! currentDomain) { // Store it in localStorage localStorage.setItem(referrer, referrer); } } } })(); /script> !-- Bing Webmaster Tools Verification -->script> // Check if on the homepage before the body loads if (window.location.pathname / || window.location.pathname /index.html) { document.write(meta namemsvalidate.01 content6F6D563899A42C028420CB015EF73B27 />); }/script>meta namegoogle-site-verification contenthECnv2PK8UAfrPNYDconBeish4euxJ7ygjnWdNQpuKw /> !-- GOOGLE TRANSLATE STYLES are moved to external CSS -->/head>body> div idgoogle_translate_element styledisplay: none>/div> nav idglobal-navbar data-el-id43e7a874-fb1e-4cdd-91fe-eb6bf5b9179b> div classredesign> div classcontent-container header> div classcontainer header__container> div classnavbar> div classlogo> a href/ classlogo__link> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/c3b4528d-775e-40b5-8d3a-76e0e8968c1d srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/c3b4528d-775e-40b5-8d3a-76e0e8968c1d 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/c3b4528d-775e-40b5-8d3a-76e0e8968c1d 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/c3b4528d-775e-40b5-8d3a-76e0e8968c1d 1024w classlogo__img light alt> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/0ff8d0c8-88c3-4ad3-bce8-a53534076898 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/0ff8d0c8-88c3-4ad3-bce8-a53534076898 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/0ff8d0c8-88c3-4ad3-bce8-a53534076898 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/0ff8d0c8-88c3-4ad3-bce8-a53534076898 1024w classlogo__img dark alt> /a> /div> div classnavigation> ul> li classnavigation__item sub-nav-container> a href# classnavigation__link wow fadeInUp>Properties/a> div classsub-nav> ul> li classsub-nav__item>a href/properties/sale classnav-link sub-nav__link feature>span>Featured Properties/span>/a>/li> li classsub-nav__item>a href/properties/sold classnav-link sub-nav__link feature>span>Past Transactions/span>/a>/li> /ul> /div> /li> li classnavigation__item> a href/home-search/listings classnavigation__link wow fadeInUp data-wow-delay2.1>span>Home Search/span>/a> /li> li classnavigation__item> a href/home-valuation classnavigation__link wow fadeInUp data-wow-delay2.2>span>Home Valuation/span>/a> /li> li classnavigation__item> a href/neighborhoods classnavigation__link wow fadeInUp data-wow-delay2.3>span>Neighborhoods/span>/a> /li> li classnavigation__item> a data-typeCONTACT_US classnavigation__link wow fadeInUp>span>Contact Us/span>/a> /li> li classnavigation__item> a hreftel:3602184790 classnavigation__link wow fadeInUp data-wow-delay2.5>span>(360) 218-4790/span>/a> /li> /ul> /div> div classbuttons-wrapper> button typebutton classhamburger-component hamburger> span classhamburger__bars>/span> /button> /div> /div> /div> /div>/div> /nav> div idglobal-sidemenu classsidemenu data-el-id11fa925d-d2dd-4213-a0fa-d46f769e2c18> div classsidebar> button classtoggle sidebar__close close>/button> div classsidebar__content> ul classsidebar__nav> li classsidebar__nav-item> a href/ classsidebar__nav-link>Home/a> /li> li classsidebar__nav-item> a href/team classsidebar__nav-link>Meet the Team/a> /li> li classsidebar__nav-item sub-nav-container> div classsub-nav> ul classsidebar__subnav> li classsidebar__subnav-item>a href/properties/sale classsidebar__subnav-link>Featured Properties/a>/li> li classsidebar__subnav-item>a href/properties/sold classsidebar__subnav-link>Past Transactions/a>/li> /ul> /div> a href# classsidebar__nav-link link main-nav>Properties/a> /li> li classsidebar__nav-item> a href/home-search/listings classsidebar__nav-link>Home Search/a> /li> li classsidebar__nav-item> a href/home-valuation classsidebar__nav-link>Home Valuation/a> /li> li classsidebar__nav-item> a href/neighborhoods classsidebar__nav-link>Neighborhoods/a> /li> li classsidebar__nav-item> a href/testimonials classsidebar__nav-link>Testimonials/a> /li> li classsidebar__nav-item> a href/homes-for-heroes classsidebar__nav-link>Homes for Heroes/a> /li> li classsidebar__nav-item sub-nav-container> div classsub-nav> ul classsidebar__subnav> li classsidebar__subnav-item>a href/buyers classsidebar__subnav-link>Buyer's Guide/a>/li> li classsidebar__subnav-item>a href/sellers classsidebar__subnav-link>Seller's Guide/a>/li> /ul> /div> a href# classsidebar__nav-link link main-nav>Resources/a> /li> li classsidebar__nav-item> a href/blog classsidebar__nav-link>Blog/a> /li> li classsidebar__nav-item> a href/contact classsidebar__nav-link>Contact Us/a> /li> li classsidebar__nav-item> a href/home-search/account classsidebar__nav-link>My Search Portal/a> /li> /ul> /div>/div> /div> div idglobal-mobile-contact classmobile-contact-wrapper data-el-idbefe5af2-a6ca-4119-924a-a85d96d36b51> div classbtn-holder style--backgroundColor: rgba(255, 255, 255, 1); --textColor: rgba(0, 0, 0, 1); --pillTextColor: rgba(255, 255, 255, 1); --pillBackgroundColor: rgba(0, 119, 40, 1);> button typebutton classconnect-btn lp-ico lp-ico-arrow-top visible>Contact Us/button>/div>div classpop-up style--backgroundColor: rgba(255, 255, 255, 1); --textColor: rgba(0, 0, 0, 1);> div classlp-container> form data-typecontact-form classcontact-form> div classcontact-form__container> h3 classlp-h3>Leave a Message/h3> div classcontact-form__content> div classcontact-form__inputs-container> div classcontact-form__item> input id__FullName typetext namename classlp-input lp-input--dark required placeholderFull Name> /div> div classcontact-form__item> input id__Email typeemail nameemail classlp-input js-email-input lp-input--dark required placeholderEmail> /div> div classcontact-form__item> input classlp-input lp-input--dark typetel placeholderPhone id__Phone namephone required> /div> div classcontact-form__item input-group-select> select nameinterest id-field-interest placeholderInterest classlp-input dropdown-select js-select js-form-element lp-input--dark required> option value disabled selected data-labelInterest>Interested in.../option> option valueSelling & Buying>Selling & Buying/option> option valueSelling>Selling/option> option valueBuying>Buying/option> option valueRenting>Renting/option> option valueOther>Other/option> /select> label for-field-interest classlp-label sr-only>Interest/label> /div> div classcontact-form__item> textarea namemessage rows4 id__Message classlp-input lp-input--dark placeholderMessage required>/textarea> /div> div classlp-disclaimer> label styledisplay: none; for-termsAccepted>Opt In/Disclaimer Consent:/label> label classlp-tcr-content> span classlp-tcr-checkbox> input typecheckbox id-termsAccepted nametermsAccepted oninvalidthis.setCustomValidity(Please accept the terms and conditions) oninputthis.setCustomValidity() required />/span> span classlp-tcr-message> I agree to be contacted by Better Homes and Gardens McKenzie Realty via call, email, and text for real estate services. To opt out, you can reply stop at any time or reply help for assistance. You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. a href/terms-and-conditions target_blank>Privacy Policy/a>. /span> /label>/div> button typesubmit classlp-btn lp-btn--filled lp-btn--dark submit contact-form__item>Submit/button> div classlp-h-pot> input id__newsSignMiddleName namemiddleName value autocompleteoff tabindex-1> /div> input styledisplay: none; typetext namesource valueCONTACT_INQUIRY /> input typehidden namebutton_text valueContact Us> /div> /div> /div> div classsuccess-block> h3 classlp-h3 success-message>Thank you for your message. We will be in touch with you shortly./h3> /div> /form> button typebutton classclose-btn lp-ico lp-ico-close>/button> /div>/div> /div> section idsection-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df classvideo-section is-font-color-light is-background-color-light data-el-id8ec37bf8-cdc6-4e6c-bec9-381ff2117972> div classvideo-wrapper> div classfull-screen-video-component> div classvideo-wrapper hidable> video classlazy posterhttps://res.cloudinary.com/luxuryp/videos/f_auto,q_auto/so_0,eo_0/vahooisqf3ov0eseprfw/hov-aerial-view-of-a-town-beside-a-lake-1920-x-1080.jpg styleheight:100%; loop muted autoplay playsinline> source data-srchttps://res.cloudinary.com/luxuryp/videos/f_webm,vc_vp9,q_auto/vahooisqf3ov0eseprfw/hov-aerial-view-of-a-town-beside-a-lake-1920-x-1080.webm typevideo/webm;codecsvp9>source data-srchttps://res.cloudinary.com/luxuryp/videos/f_mp4,vc_h265,q_auto/vahooisqf3ov0eseprfw/hov-aerial-view-of-a-town-beside-a-lake-1920-x-1080.mp4 typevideo/mp4;codecshvc1>source data-srchttps://res.cloudinary.com/luxuryp/videos/f_mp4,vc_h264,q_auto/vahooisqf3ov0eseprfw/hov-aerial-view-of-a-town-beside-a-lake-1920-x-1080.mp4 typevideo/mp4> /video> /div> div classposter stylebackground-image: url(https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/2ec9d3ae-d770-4b16-8c96-6e6a4b4c6cda)>/div> /div> /div> div classoverlay-componentstyle--section-overlay: rgba(0, 0, 0, 0.30);>/div>div classredesign> div classlp-container lp-container--l> div classcollection> div classitem> div classlp-title-group> h1 classlp-h1 animation>p>Better Homes and Gardensbr>McKenzie Realty/p>/h1> div classlp-text--subtitle lp-pre-line>h3>Lets Bring You Home/h3>/div> /div> div classbtn-container> a href/home-search/listings classlp-btn lp-btn--dark lp-btn--filled lp-btn--mob-full-width button-style-2 > Home Search /a> a href/home-valuation classlp-btn lp-btn--light lp-btn--filled lp-btn--mob-full-width button-style-2 > Home Valuation /a> /div> /div> /div> /div>/div>/section>section idsection-d6aa0cf2-22a8-43ba-b2da-0aa574e461de classsolid-section is-font-color-light is-background-color-dark data-el-id21c5a117-61cb-4f43-8635-2da86e3ae7dd> div classboxed-text lp-vertical-paddings redesign> div classlp-container> div classboxed-text__description>p>img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/6d0c6ce7-32da-4eed-8aaf-08b4d1652521 width425 heightauto>/p>/div> /div>/div>/section>section idsection-b9d14e3f-0e16-46fb-9feb-abd442a463b5 classsolid-section is-font-color-light is-background-color-dark data-el-idf5d446fb-a520-4f8d-8eda-49f27fa7ba8b> div classcompany-stats lp-vertical-paddings > div classlp-container> div classlp-title-group> h2 classlp-h2>Excellence Through Teamwork/h2> p classlp-text--subtitle lp-pre-line>A clear look at the results, achievements, and milestones that define our success as a trusted real estate leader./p> /div> div classcompany-stats__row > div classcompany-stats__col> div classstat-card> h3 classstat-card__value jsValue>32+/h3> p classstat-card__title> Years of Real Estate Experience /p> /div> /div> div classcompany-stats__col> div classstat-card> h3 classstat-card__value jsValue>2,044+/h3> p classstat-card__title> Closed Transactions /p> /div> /div> div classcompany-stats__col> div classstat-card> h3 classstat-card__value jsValue>$491K/h3> p classstat-card__title> Average Price /p> /div> /div> /div> /div>/div>/section>section idsection-f96bdd90-3af0-427b-9ffa-25504afec18c classsolid-section is-font-color-dark is-background-color-light data-el-idee87d271-1520-42d7-88f2-27f85a797fa1> div classgallery-component redesign> div classlp-container gallery-component__container> div classrow gallery-component__row cols-3> div classgallery-component__col> a classgallery-card href/buyers > div classgallery-card__preview> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/f682ff98-f3a8-41b3-9c5b-323ebfe787a7 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/f682ff98-f3a8-41b3-9c5b-323ebfe787a7 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/f682ff98-f3a8-41b3-9c5b-323ebfe787a7 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/f682ff98-f3a8-41b3-9c5b-323ebfe787a7 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1920/https://media-production.lp-cdn.com/media/f682ff98-f3a8-41b3-9c5b-323ebfe787a7 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/f682ff98-f3a8-41b3-9c5b-323ebfe787a7 2048w classportrait alt loadinglazy> /div> h3 classlp-h3 gallery-card__title>Buyers/h3> /a> /div> div classgallery-component__col> a classgallery-card href/sellers > div classgallery-card__preview> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/077f127b-187e-4ca6-993a-7fe2be8d61fb srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/077f127b-187e-4ca6-993a-7fe2be8d61fb 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/077f127b-187e-4ca6-993a-7fe2be8d61fb 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/077f127b-187e-4ca6-993a-7fe2be8d61fb 1024w classportrait alt loadinglazy> /div> h3 classlp-h3 gallery-card__title>Sellers/h3> /a> /div> div classgallery-component__col> a classgallery-card href/contact > div classgallery-card__preview> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/959c6d27-9a72-4c4c-9db5-de9dd076ed3c srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/959c6d27-9a72-4c4c-9db5-de9dd076ed3c 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/959c6d27-9a72-4c4c-9db5-de9dd076ed3c 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/959c6d27-9a72-4c4c-9db5-de9dd076ed3c 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1920/https://media-production.lp-cdn.com/media/959c6d27-9a72-4c4c-9db5-de9dd076ed3c 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/959c6d27-9a72-4c4c-9db5-de9dd076ed3c 2048w classportrait alt loadinglazy> /div> h3 classlp-h3 gallery-card__title>Connect/h3> /a> /div> /div> /div>/div>/section>section idsection-9e4618c4-e785-42fd-a490-ac2c2d63a3cd classsolid-section is-font-color-light is-background-color-dark data-el-id21c5a117-61cb-4f43-8635-2da86e3ae7dd> div classboxed-text lp-vertical-paddings redesign> div classlp-container> div classlp-title-group> h2 classlp-h2 js-title>Homes for Heroes/h2> /div> div classboxed-text__description>p>We have given back over $2.6 million since 2016 and have helped over 824+ heroes with the process of buying and selling their homes. /p>/div> div classbutton-container> a href/homes-for-heroes classlp-btn lp-btn--dark lp-btn--outline button-style-2 > Learn More /a> /div> /div>/div>/section>section idsection-067df2af-3078-4998-ad24-4efc6460d75d classsolid-section is-font-color-dark is-background-color-light data-el-id7d7954b3-4452-46af-a722-a59f20702596> div classsection lp-vertical-paddings redesign> div classlp-container> div classlp-title-group> p classlp-text--pretitle>Giving Back to our Heroes/p> div classlp-text--subtitle lp-pre-line>h2>The Nations Largest Hero Savings Program/h2>/div> /div> /div> div classgallery__holder> div classgallery js-carousel data-arrows-style> div classgallery__item> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/ce3be48f-c765-4bed-b26b-1a2a4dee0692 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/ce3be48f-c765-4bed-b26b-1a2a4dee0692 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/ce3be48f-c765-4bed-b26b-1a2a4dee0692 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/ce3be48f-c765-4bed-b26b-1a2a4dee0692 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/ce3be48f-c765-4bed-b26b-1a2a4dee0692 1920w classgallery__poster js-img sizes100vw alt loadinglazy> button classgallery__play lp-play lp-play--light lp-ico lp-ico--light lp-ico-video data-typeVIDEO data-srchttps://www.youtube.com/embed/Cgt0j3XHugU?si=m55MuUNkrgOp8_K4&autoplay=1>/button> /div> /div> /div> /div>/section>section idsection-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8 classsolid-section is-font-color-dark is-background-color-light data-el-idb4a35264-0bc0-4282-9c41-503d9d017f6f>div classredesign press-carousel-component> div classimage-carousel-component> div classcarousel-container lp-container data-speed10000> div classcarousel-slide> div classcarousel-entity> div classpress-item-inner> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/1b53105a-f6e9-46e0-8215-dd98160610a8 classimage-wrapper alt loadinglazy> /div> /div> /div> /div> /div>/div>/section>section idsection-3fcaccf1-a64c-485e-a3bd-c4503ede3643 classsolid-section is-font-color-dark is-background-color-dark data-el-ide004cbf9-19e4-44e4-8a4c-3de3b2ce0df6> div classhoverable-section lp-vertical-paddings redesign> div classlp-container> div classhoverable-image hoverable-image--straight> div classhoverable-image__img-col> div class> div class> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/79a0f98b-444d-4ed3-beae-42f0921e716f srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/79a0f98b-444d-4ed3-beae-42f0921e716f 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/79a0f98b-444d-4ed3-beae-42f0921e716f 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/79a0f98b-444d-4ed3-beae-42f0921e716f 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1920/https://media-production.lp-cdn.com/media/79a0f98b-444d-4ed3-beae-42f0921e716f 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/79a0f98b-444d-4ed3-beae-42f0921e716f 2049w sizes(max-width: 992px) 100vw, 50vw altmain classmain-image portrait loadinglazy> /div> /div> /div> div classhoverable-image__text-col> div classhoverable-image__text-wrap> div classlp-a lp-text--subtitle> h4 styletext-align: center;>Get to Know/h4>h2 styletext-align: center;>Craig McKenzie/h2>p styletext-align: left;>Craig epitomizes integrity, energy, hard work, and creative service in every detail of his team’s real estate transactions.br>br>He has since helped over 2,000 buyers and sellers fulfill their dream of buying and selling all different types of properties. With an array of experience and education under his belt, he assembled a team in 2016 that together can handle any property sale. Better Homes and Gardens McKenzie Realty is now a firm of qualified real estate agents who can masterfully service any and all of our clients needs in a way that no stand alone agent can./p> /div> div classbuttons-wrapper> a href/agent/craig-mckenzie classlp-btn lp-btn--dark lp-btn--outline lp-btn--big lp-btn--mob-full-width button-style-3 > Learn More /a> /div> /div> /div> /div> /div>/div>/section>section idsection-23c82208-1c10-4501-9ad8-e2e98f58b00e classsolid-section is-font-color-dark is-background-color-light data-el-id92c6c1cb-56d6-41fc-bb2c-29ae44b891b4>script typetext/x-handlebars-template classlistItem pagination-script> a href/agents/{{slug}} classslider__item > div classslider__img-holder lp_animation-img-zoom> {{{mediaImage avatar classslider__img alt(concat firstName lastName photo) sizes(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 30vw}}} /div> {{#if (or firstName lastName)}}p classlp-h4 slider__last-name>{{firstName}} {{lastName}}/p>{{/if}} {{#if position}}p classslider__tag>{{position}}/p>{{/if}} /a>/script> div classlp-container lp-vertical-paddings> div classlp-title-group> h2 classlp-h2>Meet the Team/h2> div classlp-text--subtitle>p>Get to know our team of real estate experts./p>/div> /div> div classslider js-slider data-scrollfalse> a href/agents/jim-woessner classslider__item > div classslider__img-holder lp_animation-img-zoom> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/27ee0dcd-a1b4-4c65-b89e-7d89a8103d2c srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/27ee0dcd-a1b4-4c65-b89e-7d89a8103d2c 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/27ee0dcd-a1b4-4c65-b89e-7d89a8103d2c 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1920/https://media-production.lp-cdn.com/media/27ee0dcd-a1b4-4c65-b89e-7d89a8103d2c 1920w sizes(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 30vw altJim Woessner Oak Harbor, WA Real Estate Agent Headshot classslider__img portrait loadinglazy> /div> p classlp-h4 slider__last-name>Jim Woessner/p> p classslider__tag>REALTOR®/p> /a> a href/agents/evelyn-ortega classslider__item > div classslider__img-holder lp_animation-img-zoom> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/cab75a2d-59a5-4ff5-906f-21a828ae476e srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/cab75a2d-59a5-4ff5-906f-21a828ae476e 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/cab75a2d-59a5-4ff5-906f-21a828ae476e 1008w sizes(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 30vw altEvelyn Ortega Oak Harbor, WA Real Estate Agent Headshot classslider__img portrait loadinglazy> /div> p classlp-h4 slider__last-name>Evelyn Ortega/p> p classslider__tag>REALTOR®/p> /a> a href/agents/will-roberts classslider__item > div classslider__img-holder lp_animation-img-zoom> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/772f307d-e460-451f-bb38-3258d855a14e altWill Roberts Oak Harbor, WA Real Estate Agent Headshot classslider__img portrait loadinglazy> /div> p classlp-h4 slider__last-name>Will Roberts/p> p classslider__tag>REALTOR®/p> /a> a href/agents/brandon-gallmeyer classslider__item > div classslider__img-holder lp_animation-img-zoom> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/351c502c-cc0e-48e9-925b-dacc335fb940 altBrandon Gallmeyer Oak Harbor, WA Real Estate Agent Headshot classslider__img portrait loadinglazy> /div> p classlp-h4 slider__last-name>Brandon Gallmeyer/p> p classslider__tag>REALTOR®/p> /a> a href/agents/zach-pelt classslider__item > div classslider__img-holder lp_animation-img-zoom> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/0756386b-0c7e-457d-b22c-67e9e420f5a0 altZach Van Pelt Oak Harbor, WA Real Estate Agent Headshot classslider__img portrait loadinglazy> /div> p classlp-h4 slider__last-name>Zach Van Pelt/p> p classslider__tag>Real Estate Broker/p> /a> a href/agents/monica-rosenfelt classslider__item > div classslider__img-holder lp_animation-img-zoom> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/6ff0099d-a457-4345-9c4b-2f7606f7993c srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/6ff0099d-a457-4345-9c4b-2f7606f7993c 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/6ff0099d-a457-4345-9c4b-2f7606f7993c 1125w sizes(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 30vw altMonica Rosenfelt Oak Harbor, WA Real Estate Agent Headshot classslider__img portrait loadinglazy> /div> p classlp-h4 slider__last-name>Monica Rosenfelt/p> p classslider__tag>REALTOR®/p> /a> a href/agents/miranda-silverthorn classslider__item > div classslider__img-holder lp_animation-img-zoom> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/96b117ae-dac4-4e83-930e-12ed82f23c0f altMiranda Silverthorn Oak Harbor, WA Real Estate Agent Headshot classslider__img portrait loadinglazy> /div> p classlp-h4 slider__last-name>Miranda Silverthorn/p> p classslider__tag>Staff/p> /a> a href/agents/tenecia-ware classslider__item > div classslider__img-holder lp_animation-img-zoom> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/8dc1143e-4d34-4793-9cb1-1a1292af3a5e srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/8dc1143e-4d34-4793-9cb1-1a1292af3a5e 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/8dc1143e-4d34-4793-9cb1-1a1292af3a5e 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1920/https://media-production.lp-cdn.com/media/8dc1143e-4d34-4793-9cb1-1a1292af3a5e 1920w sizes(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 30vw altTenecia Ware Oak Harbor, WA Real Estate Agent Headshot classslider__img portrait loadinglazy> /div> p classlp-h4 slider__last-name>Tenecia Ware/p> p classslider__tag>Real Estate Salesperson/p> /a> /div> div classarrows-container>/div> h3 classlp-h2 empty-message js-empty-message>No result found/h3> div classagents-slider-with-office-filter__btn-holder> a href/team classlp-btn button-style-3 > View All /a> /div> /div>/section>section classimage-section is-font-color-light is-background-color-light idsection-ad284b19-a4c8-4993-83b7-d0fd822b9f41 data-el-id1296c4a2-2800-4a54-95a4-c30fa6be4ba5>div classtestimonials redesign> div classcontainer> h2 classtitle>Our Testimonials/h2> div classsubtitle>See why our clients love working with us./div> /div> div classcontainer slider-container> div classitems-slider data-arrows-style> div classitem> div classsolid-subsection card stylecolor: #000000; background-color: rgba(255, 255, 255, 1);> div classtop-block> div classuserpic> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a663bcb4-374d-4bd4-b151-ac54e5df470e altMikael B. loadinglazy> /div> h4 classauthor>Mikael B. /h4> blockquote classtestimonial-text>Working with Craig and his team at Better Home and Gardens to sell my previous home was a great experience. It was clear and concise in what we needed to accomplish from our first meeting. This was selling 101 and the cost of s.../blockquote> /div> a href/testimonials classbtn btn--primary-dark card-button button-style-3 > Read More /a> /div> /div> div classitem> div classsolid-subsection card stylecolor: #000000; background-color: rgba(255, 255, 255, 1);> div classtop-block> div classuserpic> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a663bcb4-374d-4bd4-b151-ac54e5df470e altLinda M. loadinglazy> /div> h4 classauthor>Linda M. /h4> blockquote classtestimonial-text>From the very start of walking into these business doors, we were treated with kindness and respect. We recently sold our home with Evelyn and her team's support. The home-selling process was a learning experience for me, and E.../blockquote> /div> a href/testimonials classbtn btn--primary-dark card-button button-style-3 > Read More /a> /div> /div> div classitem> div classsolid-subsection card stylecolor: #000000; background-color: rgba(255, 255, 255, 1);> div classtop-block> div classuserpic> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a663bcb4-374d-4bd4-b151-ac54e5df470e altRebbecka L. loadinglazy> /div> h4 classauthor>Rebbecka L. /h4> blockquote classtestimonial-text>Evelyn was amazing! I bought it while I was in the middle of traveling, and she worked with me even throughout different time zones and difficult schedules. Couldn’t recommend a better real estate agent./blockquote> /div> a href/testimonials classbtn btn--primary-dark card-button button-style-3 > Read More /a> /div> /div> div classitem> div classsolid-subsection card stylecolor: #000000; background-color: rgba(255, 255, 255, 1);> div classtop-block> div classuserpic> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a663bcb4-374d-4bd4-b151-ac54e5df470e altMichael P. loadinglazy> /div> h4 classauthor>Michael P. /h4> blockquote classtestimonial-text>The whole team at Better Homes and Gardens was outstanding! They made the selling of our home easy and provided us with the peace of mind that we would be taken care of, even though we had to leave the area. Our real estate age.../blockquote> /div> a href/testimonials classbtn btn--primary-dark card-button button-style-3 > Read More /a> /div> /div> div classitem> div classsolid-subsection card stylecolor: #000000; background-color: rgba(255, 255, 255, 1);> div classtop-block> div classuserpic> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a663bcb4-374d-4bd4-b151-ac54e5df470e altMichael C. loadinglazy> /div> h4 classauthor>Michael C./h4> blockquote classtestimonial-text>I was partnered with The Craig McKenzie Team through the Homes for Heroes program and got to work with Alicia Turner. Living remote at the time she went above and beyond to get the information I requested. Her persistence and d.../blockquote> /div> a href/testimonials classbtn btn--primary-dark card-button button-style-3 > Read More /a> /div> /div> div classitem> div classsolid-subsection card stylecolor: #000000; background-color: rgba(255, 255, 255, 1);> div classtop-block> div classuserpic> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a663bcb4-374d-4bd4-b151-ac54e5df470e altF. Sledge loadinglazy> /div> h4 classauthor>F. Sledge/h4> blockquote classtestimonial-text>Jim, Debbie, and Miranda made the process of finding a house and finalizing the process seamless and stress free. They were always available to assist with any issues that arose and to answer any questions. I highly recommend t.../blockquote> /div> a href/testimonials classbtn btn--primary-dark card-button button-style-3 > Read More /a> /div> /div> div classitem> div classsolid-subsection card stylecolor: #000000; background-color: rgba(255, 255, 255, 1);> div classtop-block> div classuserpic> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a663bcb4-374d-4bd4-b151-ac54e5df470e altThe Shephard Family loadinglazy> /div> h4 classauthor>The Shephard Family/h4> blockquote classtestimonial-text>The Craig McKenzie Team here on Whidbey Island has been an absolute blessing to our family. Their entire team assisted us in the home-buying and real estate process. They have the mortgage companies, the inspectors, the real es.../blockquote> /div> a href/testimonials classbtn btn--primary-dark card-button button-style-3 > Read More /a> /div> /div> div classitem> div classsolid-subsection card stylecolor: #000000; background-color: rgba(255, 255, 255, 1);> div classtop-block> div classuserpic> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a663bcb4-374d-4bd4-b151-ac54e5df470e altThe Hoffmans loadinglazy> /div> h4 classauthor>The Hoffmans/h4> blockquote classtestimonial-text>The Craig McKenzie Team has helped us immensely in purchasing our very first home. Jim was always very quick to respond to our questions and/or concerns, and made the whole process smoother than we had ever hoped! We love that .../blockquote> /div> a href/testimonials classbtn btn--primary-dark card-button button-style-3 > Read More /a> /div> /div> div classitem> div classsolid-subsection card stylecolor: #000000; background-color: rgba(255, 255, 255, 1);> div classtop-block> div classuserpic> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a663bcb4-374d-4bd4-b151-ac54e5df470e altThe Mcwilliams Family loadinglazy> /div> h4 classauthor>The Mcwilliams Family/h4> blockquote classtestimonial-text>I have been thinking for a while how to properly articulate the way I feel about this team. When we first went to speak with them we had not yet gotten a pre-approval and weren’t sure what we were looking for. We were not the m.../blockquote> /div> a href/testimonials classbtn btn--primary-dark card-button button-style-3 > Read More /a> /div> /div> div classitem> div classsolid-subsection card stylecolor: #000000; background-color: rgba(255, 255, 255, 1);> div classtop-block> div classuserpic> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a663bcb4-374d-4bd4-b151-ac54e5df470e altThe Mckay Family loadinglazy> /div> h4 classauthor>The Mckay Family/h4> blockquote classtestimonial-text>My husband and I were PCSing from South Texas and knew we wanted to buy a home at our next duty station. I reached out to Alicia and from day one I knew it was going to be a positive experience. There was a lot of uncertainty o.../blockquote> /div> a href/testimonials classbtn btn--primary-dark card-button button-style-3 > Read More /a> /div> /div> /div> div classarrows custom-arrows--dark> /div> /div>/div>/section>section idsection-97cebd01-af8f-4915-afbe-73c5f041d1c9 classsolid-section is-font-color-dark is-background-color-light data-el-id40ebb4b2-7193-4e29-916e-2c50af343cf8>script typetext/x-handlebars-template classgridItem pagination-script>div> a {{#if fromMLS}}href/home-search/listings/{{id}}{{else}}href/properties/{{slug}}{{/if}} classf-properties__item> {{{mediaImage media.0 classf-properties__item-img sizes100vw altname}}} {{#if status}}div classf-properties__property-status>{{formatPropertyStatus status}}/div>{{/if}} div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>{{name}}/h3> div classf-properties__item-features> {{#if bedroomCount}} {{#if (or priceUponRequest salesPrice leasePrice)}}{{/if}} {{bedroomCount}} Beds{{/if}} {{#if bathCount}} | {{bathCount}} Baths{{/if}} {{#ifIn 2c63593e-4869-41f8-bc78-03fa80e24580 (JSONstringify types)}} {{#if lotAreaSize}} {{#if (or bedroomCount bathCount)}}|{{/if}} {{lpFormatNumber lotAreaSize}} {{formatAreaUnit lotAreaUnits}}{{/if}} {{else}} {{#if livingSpaceSize}} | {{lpFormatNumber livingSpaceSize}} {{formatAreaUnit livingSpaceUnits}}{{/if}} {{/ifIn}} /div> div classf-properties__item-price lp-h5> {{#if (or priceUponRequest salesPrice leasePrice)}} {{formatPropertyPrice this}} {{/if}} /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a>/div>/script>div classf-properties style --infoTextColor: rgba(255, 255, 255, 1); --infoBgColor: rgba(0, 119, 40, 0.8); --infoTextHover: rgba(255, 255, 255, 1); --infoBgHover: rgba(0, 119, 40, 1); > h2 classf-properties__title>Featured Properties/h2> div classf-properties__description>p>Browse our active property listings./p>/div> div classf-properties__carousel carousel-container data-arrows-stylebutton-style-3> div> a href/properties/107-s-main-street-coupeville-wa-us-98239-nwm2440868 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2440868/687699085637489106.jpg alt107 S Main Street classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>107 S Main Street/h3> div classf-properties__item-features> /div> div classf-properties__item-price lp-h5> $6,300,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/2800-n-goldie-road-oak-harbor-wa-us-98277-nwm2380226 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2380226/1530775703541576070.jpg alt2800 N Goldie Road classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>2800 N Goldie Road/h3> div classf-properties__item-features> /div> div classf-properties__item-price lp-h5> $2,600,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/105-1st-street-langley-wa-us-98260-nwm2410811 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2410811/-727484926999820745.jpg alt105 1st Street classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>105 1st Street/h3> div classf-properties__item-features> /div> div classf-properties__item-price lp-h5> $2,495,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/815-engle-road-coupeville-wa-us-98239-nwm2426554 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2426554/5410905537584975903.jpg alt815 Engle Road classf-properties__item-img loadinglazy> div classf-properties__property-status>Pending/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>815 Engle Road/h3> div classf-properties__item-features> 3 Beds | 3 Baths | 3,123 Sq.Ft. /div> div classf-properties__item-price lp-h5> $1,250,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/1607-b-avenue-anacortes-wa-us-98221-nwm2440480 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2440480/6342262323342027593.jpg alt1607 B Avenue classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>1607 B Avenue/h3> div classf-properties__item-features> 3 Beds | 3 Baths | 1,808 Sq.Ft. /div> div classf-properties__item-price lp-h5> $995,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/4865-saratoga-road-langley-wa-us-98260-nwm2304269 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2304269/3805924978304282265.jpg alt4865 Saratoga Road classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>4865 Saratoga Road/h3> div classf-properties__item-features> 3 Beds | 4 Baths | 2,382 Sq.Ft. /div> div classf-properties__item-price lp-h5> $899,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/0-xxx-state-route-20-lot-3-oak-harbor-wa-us-98277-nwm2397958 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2397958/1607092171677775505.jpg alt0 XXX State Route 20 (Lot 3) classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>0 XXX State Route 20 (Lot 3)/h3> div classf-properties__item-features> 1.78 Acres /div> div classf-properties__item-price lp-h5> $750,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/0-xxx-state-route-20-lot-4-oak-harbor-wa-us-98277-nwm2397959 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2397959/-9139783704456343931.jpg alt0 XXX State Route 20 (Lot 4) classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>0 XXX State Route 20 (Lot 4)/h3> div classf-properties__item-features> 1.78 Acres /div> div classf-properties__item-price lp-h5> $750,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/421-coddington-road-coupeville-wa-us-98239-nwm2408296 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2408296/-5715171269152691689.jpg alt421 Coddington Road classf-properties__item-img loadinglazy> div classf-properties__property-status>Pending/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>421 Coddington Road/h3> div classf-properties__item-features> 3 Beds | 3 Baths | 2,635 Sq.Ft. /div> div classf-properties__item-price lp-h5> $698,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/1400-e-whidbey-avenue-oak-harbor-wa-us-98277-nwm2456124 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2456124/-8763636826891229894.jpg alt1400 E Whidbey Avenue classf-properties__item-img loadinglazy> div classf-properties__property-status>Pending/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>1400 E Whidbey Avenue/h3> div classf-properties__item-features> 4 Beds | 3 Baths | 2,122 Sq.Ft. /div> div classf-properties__item-price lp-h5> $629,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/7589-bailey-road-clinton-wa-us-98236-nwm2421648 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2421648/4431926055788907226.jpg alt7589 Bailey Road classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>7589 Bailey Road/h3> div classf-properties__item-features> 3 Beds | 2 Baths | 1,730 Sq.Ft. /div> div classf-properties__item-price lp-h5> $599,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/6897-helena-street-clinton-wa-us-98236-nwm2478950 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2478950/-5259261790927479479.jpg alt6897 Helena Street classf-properties__item-img loadinglazy> div classf-properties__property-status>Pending/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>6897 Helena Street/h3> div classf-properties__item-features> 3 Beds | 1 Baths | 1,263 Sq.Ft. /div> div classf-properties__item-price lp-h5> $579,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/953-nw-illahee-drive-oak-harbor-wa-us-98277-nwm2476865 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2476865/-3983496454058098469.jpg alt953 NW Illahee Drive classf-properties__item-img loadinglazy> div classf-properties__property-status>Pending/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>953 NW Illahee Drive/h3> div classf-properties__item-features> 3 Beds | 2 Baths | 1,836 Sq.Ft. /div> div classf-properties__item-price lp-h5> $499,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/0-ne-goldie-street-lot-3-oak-harbor-wa-us-98277-nwm2460381 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2460381/-7353384802497075238.jpg alt0 NE Goldie Street (Lot 3) classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>0 NE Goldie Street (Lot 3)/h3> div classf-properties__item-features> 0.78 Acres /div> div classf-properties__item-price lp-h5> $495,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/0-xxx-ne-16th-avenue-oak-harbor-wa-us-98277-nwm2065411 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2065411/6454567576067910085.jpg alt0 XXX NE 16th Avenue classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>0 XXX NE 16th Avenue/h3> div classf-properties__item-features> 1.3 Acres /div> div classf-properties__item-price lp-h5> $487,500 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/1232-rickover-drive-coupeville-wa-us-98239-nwm2472978 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2472978/2576755651250150785.jpg alt1232 Rickover Drive classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>1232 Rickover Drive/h3> div classf-properties__item-features> 2 Beds | 2 Baths | 1,280 Sq.Ft. /div> div classf-properties__item-price lp-h5> $392,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/0-xxx-goldie-road-unit-2-oak-harbor-wa-us-98277-nwm2392069 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2392069/2097955492397023870.jpg alt0 XXX Goldie Road Unit: 2 classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>0 XXX Goldie Road Unit: 2/h3> div classf-properties__item-features> 0.35 Acres /div> div classf-properties__item-price lp-h5> $330,913 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/0-xxx-coles-road-langley-wa-us-98260-nwm2472844 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2472844/743285871470883905.jpg alt0 XXX Coles Road classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>0 XXX Coles Road/h3> div classf-properties__item-features> 14.22 Acres /div> div classf-properties__item-price lp-h5> $330,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/0-xxx-b-avenue-anacortes-wa-us-98221-nwm2440489 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2440489/2326657868193516613.jpg alt0 XXX B Avenue classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>0 XXX B Avenue/h3> div classf-properties__item-features> 7,488 Sq.Ft. /div> div classf-properties__item-price lp-h5> $285,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/2331-sw-freund-street-oak-harbor-wa-us-98277-nwm2315213 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2315213/-567933222631062285.jpg alt2331 SW Freund Street classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>2331 SW Freund Street/h3> div classf-properties__item-features> 0.31 Acres /div> div classf-properties__item-price lp-h5> $249,900 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/1231-red-fox-lane-freeland-wa-us-98249-nwm2365516 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2365516/8674454531162065755.jpg alt1231 Red Fox Lane classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>1231 Red Fox Lane/h3> div classf-properties__item-features> 5 Acres /div> div classf-properties__item-price lp-h5> $199,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/5295-wickersham-road-acme-wa-us-98220-nwm2431164 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2431164/1463753800277794826.jpg alt5295 Wickersham Road classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>5295 Wickersham Road/h3> div classf-properties__item-features> 4.64 Acres /div> div classf-properties__item-price lp-h5> $169,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/0-xxx-sandy-hook-drive-clinton-wa-us-98236-nwm2429270 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2429270/8123916016082242899.jpg alt0 XXX Sandy Hook Drive classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>0 XXX Sandy Hook Drive/h3> div classf-properties__item-features> 0.31 Acres /div> div classf-properties__item-price lp-h5> $159,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/0-nhn-goldie-road-oak-harbor-wa-us-98277-nwm2452974 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2452974/7102645160727163828.jpg alt0 NHN Goldie Road classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>0 NHN Goldie Road/h3> div classf-properties__item-features> 5 Acres /div> div classf-properties__item-price lp-h5> $150,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/5002-deception-circle-oak-harbor-wa-us-98277-nwm2401998 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2401998/-8581237663016192800.jpg alt5002 Deception Circle classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>5002 Deception Circle/h3> div classf-properties__item-features> 9,354 Sq.Ft. /div> div classf-properties__item-price lp-h5> $110,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/2110336487734818117-0-minor-way-lot-55 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2379807/-4816707519608892973.jpg alt0 Minor Way (Lot 55) classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>0 Minor Way (Lot 55)/h3> div classf-properties__item-features> 0.25 Acres /div> div classf-properties__item-price lp-h5> $59,000 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/746-ne-midway-boulevard-oak-harbor-wa-us-98277-nwm2476134 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2476134/2991210245582571151.jpg alt746 NE Midway Boulevard classf-properties__item-img loadinglazy> div classf-properties__property-status>For Sale/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>746 NE Midway Boulevard/h3> div classf-properties__item-features> /div> div classf-properties__item-price lp-h5> $3,500 /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/746-ne-midway-boulevard-oak-harbor-wa-us-98277-nwm2472476 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2472476/7771365309929233795.jpg alt746 NE Midway Boulevard classf-properties__item-img loadinglazy> div classf-properties__property-status>For Lease/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>746 NE Midway Boulevard/h3> div classf-properties__item-features> | 2 Baths | 1,643 Sq.Ft. /div> div classf-properties__item-price lp-h5> $3,500/mo /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> div> a href/properties/4311-meander-lane-langley-wa-us-98260-nwm2478290 classf-properties__item> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/ef21bbb2-46d7-4155-87a3-0369bead35d4/2478290/-2020461945239975333.jpg alt4311 Meander Lane classf-properties__item-img loadinglazy> div classf-properties__property-status>For Lease/div> div classf-properties__item-info> div classf-properties__item-info-left> h3 classf-properties__item-name>4311 Meander Lane/h3> div classf-properties__item-features> 3 Beds | 3 Baths | 2,124 Sq.Ft. /div> div classf-properties__item-price lp-h5> $3,250/mo /div> /div> span classarrow-more>i classlp-i lp-i--chevron-right>/i>/span> /div> /a> /div> /div> div classf-properties__action> div classf-properties__arrows> div classf-properties__arrows-container> /div> /div> a href/properties/sale classlp-btn lp-btn--outline lp-btn--light btn-all button-style-3 > View All /a> /div>/div>/section>section classimage-section is-font-color-light is-background-color-light idsection-83ada1dc-c514-464f-aab7-b87138bdadd8 data-el-id297a2620-2ed9-402f-835c-5c1dff0fb23a> div idmodal-home-valuation-plunk classmodal hv-modal redesign> div classhv-modal__content> div classhv-modal__body> div classlp-container lp-container--l home-valuation__container> div classhv-modal__row> div classhv-modal__col> div classjs-scene-1 hv-modal__content-block data-ui-mainform> button classhv-modal__back text-neutral js-close-form> span classhv-icon hv-icon-back>/span> Back to search /button> h3 classlp-h3 hv-modal__title mb-1>Get your instant home valuation/h3> p classhv-modal__lead text-neutral data-ui-authdefault>Enter your details to see how much your home is worth./p> p classhv-modal__lead text-neutral js-auth-failed data-ui-autherror hidden>*Authentication failed. Please enter your details below to get your free valuation./p> !-- Hide SSO until the backend is ready to support it-->!-- div classhv-modal__sso-row js-auth-row data-ui-authdefault hidden>-->!-- div stylewidth: 321px; border: none; margin: 0; data-shaperectangular-->!-- data-signin-typegoogle-sign-in-->!-- classsocial-oauth-->!-- data-on-success-function-nameonSuccessValCb-->!-- height40-->!-- data-sizelarge-->!-- data-width320-->!-- data-textsignin_with-->!-- data-shapecircle-->!-- data-typestandard-->!-- data-themeoutline>-->!-- /div>-->!-- div stylewidth: 321px; border: none; margin: 0;-->!-- data-signin-typefacebook-sign-in-->!-- classsocial-oauth-->!-- data-on-success-function-nameonSuccessValCb-->!-- height40-->!-- data-sizelarge-->!-- data-width320-->!-- data-button-typecontinue_with-->!-- data-layoutdefault-->!-- data-max-rows1>-->!-- /div>-->!-- /div>--> form classhv-form> label forsection-83ada1dc-c514-464f-aab7-b87138bdadd8-hv-address styledisplay: none;>Home Valuation Address/label> input typehidden idsection-83ada1dc-c514-464f-aab7-b87138bdadd8-hv-address nameproperty-address /> label forsection-83ada1dc-c514-464f-aab7-b87138bdadd8-hv-valuation styledisplay: none;>Home Valuation/label> input typehidden idsection-83ada1dc-c514-464f-aab7-b87138bdadd8-hv-valuation nameproperty-valuation /> div classhv-form__line> div classhv-form__group lp-input-group> label forsection-83ada1dc-c514-464f-aab7-b87138bdadd8-hv-name classlp-label>Full Name*/label> input typetext idsection-83ada1dc-c514-464f-aab7-b87138bdadd8-hv-name namename classlp-input placeholderFull Name required /> /div> /div> div classh-pot lp-h-pot> label forsection-83ada1dc-c514-464f-aab7-b87138bdadd8-middleName>Middle Name/label> input idsection-83ada1dc-c514-464f-aab7-b87138bdadd8-middleName namemiddleName value autocompleteoff tabindex-1 /> /div> div classhv-form__line> div classhv-form__group lp-input-group> label forsection-83ada1dc-c514-464f-aab7-b87138bdadd8-hv-email classlp-label>Email*/label> input typeemail idsection-83ada1dc-c514-464f-aab7-b87138bdadd8-hv-email nameemail classlp-input js-email-input placeholderEmail required /> /div> /div> div classhv-form__line> div classhv-form__group lp-input-group> label forsection-83ada1dc-c514-464f-aab7-b87138bdadd8-hv-phone classlp-label>Phone*/label> input typetel idsection-83ada1dc-c514-464f-aab7-b87138bdadd8-hv-phone namephone classlp-input placeholderPhone pattern0-9\-\(\)+\.\+ {5,} required /> /div> /div> div classlp-disclaimer> label styledisplay: none; forsection-83ada1dc-c514-464f-aab7-b87138bdadd8-termsAccepted>Opt In/Disclaimer Consent:/label> label classlp-tcr-content> span classlp-tcr-checkbox> input typecheckbox idsection-83ada1dc-c514-464f-aab7-b87138bdadd8-termsAccepted nametermsAccepted oninvalidthis.setCustomValidity(Please accept the terms and conditions) oninputthis.setCustomValidity() required />/span> span classlp-tcr-message> I agree to be contacted by Better Homes and Gardens McKenzie Realty via call, email, and text for real estate services. To opt out, you can reply stop at any time or reply help for assistance. You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. a href/terms-and-conditions target_blank>Privacy Policy/a>. /span> /label>/div> div classsubmission-error-message styledisplay: none;>/div> div classhv-form__footer> button typesubmit classlp-btn home-val-btn lp-btn--dark lp-btn--filled lp-btn--mob-full-width custom-ebook__submit-btn button-style-3>Unlock Your Free Valuation/button> /div> ul classhv-checklist hv-checklist--small mt-2> li classp14> Instant result /li> li classp14> Sell for more /li> li classp14> Get expert advice /li> /ul> /form> /div> div classjs-scene-2 hv-modal__content-block data-ui-mainagent hidden> button classhv-modal__back text-neutral js-close-form conditional-desktop-only> span classhv-icon hv-icon-back>/span> Back to search /button> div classcontent-item schedule-consultation> h3 classlp-h3 hv-modal__title mb-1 data-ui-resultdefault>Get the best price for your home/h3> h3 classlp-h3 hv-modal__title mb-1 data-ui-resulterror hidden>Reach out for more information/h3> p classhv-modal__lead text-neutral mb-0>Schedule a free consultation with a top local agent who can help you estimate and understand your homes value./p> /div> div classcontent-item> div classagent-card> div classagent-card__row> div classagent-card__avatar> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/8b06606d-96f7-47cf-b9c0-ba5d9b242fd9 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/8b06606d-96f7-47cf-b9c0-ba5d9b242fd9 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/8b06606d-96f7-47cf-b9c0-ba5d9b242fd9 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/8b06606d-96f7-47cf-b9c0-ba5d9b242fd9 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1920/https://media-production.lp-cdn.com/media/8b06606d-96f7-47cf-b9c0-ba5d9b242fd9 1920w sizes72px altCraig Mckenzie Oak Harbor, WA Real Estate Agent Headshot classportrait loadinglazy> /div> div classagent-card__details> p classagent-card__name lp-h5>Craig Mckenzie /p> p classagent-card__label text-neutral> span classhv-icon hv-icon-thunder-move>/span>Designated Broker /p> /div> /div> /div> /div> div classcontent-item> p classcontent-item__label text-neutral>About Me/p> div classagent-description mb-3> He epitomizes integrity, energy, hard work, and creative service. A Certified Relocation Specialist. /div> div classhv-form__footer> a href/cdn-cgi/l/email-protection#a8cbdac9c1cfe8c5cbc3cdc6d2c1cdcac0cf86cbc7c597dbddcac2cdcbdc95e0c7c5cd8d9a98fec9c4ddc9dcc1c7c6 target_blank classlp-btn lp-btn--dark lp-btn--filled lp-btn--mob-full-width js-schedule js-mail button-style-3>Schedule free consultation/a> a hreftel:(360) 929-1712 data-number(360) 929-1712 classlp-btn lp-btn--dark lp-btn--filled lp-btn--mob-full-width js-schedule js-phone button-style-3>Call (360) 929-1712/a> /div> ul classhv-checklist hv-checklist--small mt-2> li classp14> Trusted agent /li> li classp14> Local expert /li> li classp14> Prompt response /li> /ul> /div> /div> /div> div classhv-modal__col plunk-result> div classhv-modal__content-block> button classhv-modal__back text-neutral js-close-form conditional-mobile-only> span classhv-icon hv-icon-back>/span> Back to search /button> div classcontent-item> h5 classlp-h5 text-neutral mb-2>Luxury Presence Home Value/h5> p classvaluation-placeholder js-valuation-placeholder data-ui-valueplaceholder data-ui-resultdefault>/p> div classvaluation-output js-valuation-output data-ui-valuevalue data-ui-resultdefault hidden> h2 idplunk-value classlp-h1 js-plunk-value mb-0>Estimate not available/h2> /div> p classvaluation-error js-valuation-error mb-0 data-ui-resulterror hidden> We need more information to provide an accurate estimate for this address. Local expert Craig Mckenzie will reach out shortly or you can schedule a consultation now. /p> /div> div classcontent-item> p classcontent-item__label text-neutral>Property Address/p> p classcontent-item__address js-property-address>Address/p> div classmap-container mt-2 idmap data-ui-resultdefault> img srchttps://res.cloudinary.com/dvgalsdp3/image/upload/v1668765837/dummy-map_zkxabi.png altdummy-map /> /div> p classhv-modal__how-calc text-neutral data-ui-resultdefault> a href# classlp-link lp-link--dark idhow-calculate-popup>How we calculate your estimate/a> /p> /div> /div> /div> /div> /div> /div> /div>/div>div classhome-valuation home-valuation--fullbleed style--highlightColor:rgba(255, 255, 255, 1)> div classopening-wrapper> div classbackground> /div> div classcontent> h2 classlp-h2 h2 title mb-3>How Much is Your Home Worth?/h2> ul classbenefits> li classbenefit> Instant property valuation /li> li classbenefit> Expert advice /li> li classbenefit> Sell for more /li> /ul> div classsearch-wrapper js-address-search> div classsearch-icon> svg width24 height24 viewBox0 0 24 24 fillnone xmlnshttp://www.w3.org/2000/svg>path dM5 10.5C5 6 8 3 12.5 3C17 3 20 6.75 20 10.5C20 12.8326 17.8237 16.0357 13.471 20.1093C12.9154 20.6293 12.0585 20.6508 11.4775 20.1595C7.15915 16.5078 5 13.288 5 10.5ZM12.5 12C13.8807 12 15 10.8807 15 9.5C15 8.11929 13.8807 7 12.5 7C11.1193 7 10 8.11929 10 9.5C10 10.8807 11.1193 12 12.5 12Z fillblack/>/svg> /div> input typetext idsection-83ada1dc-c514-464f-aab7-b87138bdadd8-search namehome-address classsearch-input placeholderEnter your home address… /> button classlp-btn home-val-btn lp-btn--filled lp-btn--dark lp-btn--large lp-btn--mob-full-width js-continue button-style-3 disabled>Get a Free Home Valuation/button> div classresults-wrapper> div classsearch-results> div classresults-container>/div> div classsearch-in-progress not-visible> i classlp-i lp-i--spinner lp-i--pulse>/i> /div> div classpredefined-links not-visible> /div> /div> /div> div classloader hidden> div classline-wrapper>div classline>/div>/div> div classtext wow fadeIn>Loading valuation.../div> /div> /div> /div> /div>/div>/section>section idsection-ccabc689-9fc7-4e77-9811-812a3780cdb5 classsolid-section is-font-color-dark is-background-color-light data-el-idef4a3598-d218-4978-bdc4-94d84dee161b>script data-cfasyncfalse src/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js>/script>script typetext/x-handlebars-template classgridItem pagination-script>div classitem> a href/neighborhoods/{{slug}} classitem-wrapper> div classimage-holder> {{{mediaImage media.0 sizes(max-width: 768px) 100vw, 50vw altname}}} /div> div classoverlay>/div> div classcontent-container> h3 classlp-h3 neighborhood-name>{{name}}/h3> div classbutton-wrapper> span classlp-btn lp-btn--light lp-btn--filled lp-btn--big button-style-2>Learn More/span> /div> /div> /a>/div>/script>div classfeatured-neighborhoods-grid lp-vertical-paddings redesign> div classlp-container> div classlp-title-group> h2 classlp-h2>Neighborhood Guides/h2> div classlp-text--subtitle lp-pre-line>p>A vibrant community with something for everyone./p>/div> /div> /div> div classitems items-6 three-columns > div classitem> a href/neighborhoods/oak-harbor classitem-wrapper> div classimage-holder> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/f65bd8fa-8448-4e39-948f-46aee3464be2 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/f65bd8fa-8448-4e39-948f-46aee3464be2 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/f65bd8fa-8448-4e39-948f-46aee3464be2 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/f65bd8fa-8448-4e39-948f-46aee3464be2 1920w altOak Harbor sizes(max-width: 768px) 100vw, 50vw loadinglazy> /div> div classoverlay>/div> div classcontent-container> h3 classlp-h3 neighborhood-name>Oak Harbor/h3> div classbutton-wrapper> span classlp-btn lp-btn--light lp-btn--filled lp-btn--big button-style-2>Learn More/span> /div> /div> /a> /div> div classitem> a href/neighborhoods/coupeville classitem-wrapper> div classimage-holder> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/07a0dced-ee6d-469e-b318-f0cb1a886ae6 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/07a0dced-ee6d-469e-b318-f0cb1a886ae6 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/07a0dced-ee6d-469e-b318-f0cb1a886ae6 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/07a0dced-ee6d-469e-b318-f0cb1a886ae6 1920w altCoupeville sizes(max-width: 768px) 100vw, 50vw loadinglazy> /div> div classoverlay>/div> div classcontent-container> h3 classlp-h3 neighborhood-name>Coupeville/h3> div classbutton-wrapper> span classlp-btn lp-btn--light lp-btn--filled lp-btn--big button-style-2>Learn More/span> /div> /div> /a> /div> div classitem> a href/neighborhoods/clinton classitem-wrapper> div classimage-holder> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/de4fff6e-e1fd-41ae-aa5e-85e91799cc77 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/de4fff6e-e1fd-41ae-aa5e-85e91799cc77 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/de4fff6e-e1fd-41ae-aa5e-85e91799cc77 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/de4fff6e-e1fd-41ae-aa5e-85e91799cc77 1920w altClinton sizes(max-width: 768px) 100vw, 50vw loadinglazy> /div> div classoverlay>/div> div classcontent-container> h3 classlp-h3 neighborhood-name>Clinton/h3> div classbutton-wrapper> span classlp-btn lp-btn--light lp-btn--filled lp-btn--big button-style-2>Learn More/span> /div> /div> /a> /div> div classitem> a href/neighborhoods/nas-whidbey classitem-wrapper> div classimage-holder> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/37d232e8-e8b1-4b2d-89a9-7970435a30ff srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/37d232e8-e8b1-4b2d-89a9-7970435a30ff 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/37d232e8-e8b1-4b2d-89a9-7970435a30ff 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/37d232e8-e8b1-4b2d-89a9-7970435a30ff 1920w altNAS Whidbey sizes(max-width: 768px) 100vw, 50vw loadinglazy> /div> div classoverlay>/div> div classcontent-container> h3 classlp-h3 neighborhood-name>NAS Whidbey/h3> div classbutton-wrapper> span classlp-btn lp-btn--light lp-btn--filled lp-btn--big button-style-2>Learn More/span> /div> /div> /a> /div> div classitem> a href/neighborhoods/greenbank classitem-wrapper> div classimage-holder> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/8338cc85-2e4e-4c08-bd0c-8a1dea7fb50c srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/8338cc85-2e4e-4c08-bd0c-8a1dea7fb50c 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/8338cc85-2e4e-4c08-bd0c-8a1dea7fb50c 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/8338cc85-2e4e-4c08-bd0c-8a1dea7fb50c 1920w altGreenbank sizes(max-width: 768px) 100vw, 50vw loadinglazy> /div> div classoverlay>/div> div classcontent-container> h3 classlp-h3 neighborhood-name>Greenbank/h3> div classbutton-wrapper> span classlp-btn lp-btn--light lp-btn--filled lp-btn--big button-style-2>Learn More/span> /div> /div> /a> /div> div classitem> a href/neighborhoods/bayview classitem-wrapper> div classimage-holder> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/b63e0d5f-017c-4558-9b7a-e89a92090f73 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/b63e0d5f-017c-4558-9b7a-e89a92090f73 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/b63e0d5f-017c-4558-9b7a-e89a92090f73 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/b63e0d5f-017c-4558-9b7a-e89a92090f73 1920w altBayview sizes(max-width: 768px) 100vw, 50vw loadinglazy> /div> div classoverlay>/div> div classcontent-container> h3 classlp-h3 neighborhood-name>Bayview/h3> div classbutton-wrapper> span classlp-btn lp-btn--light lp-btn--filled lp-btn--big button-style-2>Learn More/span> /div> /div> /a> /div> /div> div classbutton-container> a href/neighborhoods classlp-btn lp-btn--outline lp-btn--dark lp-btn--big button-style-3 > View All /a> /div>/div>/section>section idsection-d539c121-e859-45ec-8884-5b5c00e2d103 classsolid-section is-font-color-light is-background-color-dark data-el-id19e4a145-7cee-4338-8873-657ce2636b4c> div classnewsletter-signup lp-vertical-paddings redesign> div classlp-container-custom> form data-typecontact-form classnewsletter-signup__form> div classnewsletter-signup__form-container> div classlp-title-group> h2 classlp-h2>Living Better with McKenzie Realty/h2> div classlp-text--subtitle>p>Stay informed with the latest market trends, pricing data, and expert analysis./p>/div> /div> div classnewsletter-signup-form> div classnewsletter-signup__inputs-container> input idsection-d539c121-e859-45ec-8884-5b5c00e2d103__newsSignFirstName typetext namename classlp-input lp-input--light newsletter-signup__form-item required placeholderName> input idsection-d539c121-e859-45ec-8884-5b5c00e2d103__newsSignEmail typeemail nameemail classlp-input lp-input--light newsletter-signup__form-item required placeholderEmail patterna-zA-Z0-9.!#$%&’*+/?^_`{|}~-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)+> button typesubmit classlp-btn lp-btn--filled lp-btn--light submit button-style-4 newsletter-signup__form-item lp-btn--mob-full-width>Submit/button> div classlp-h-pot> input idsection-d539c121-e859-45ec-8884-5b5c00e2d103__newsSignMiddleName namemiddleName value autocompleteoff tabindex-1> /div> input styledisplay: none; typetext namesource valueNEWSLETTER_SIGNUP /> /div> /div> div classlp-disclaimer> label styledisplay: none; forsection-d539c121-e859-45ec-8884-5b5c00e2d103-termsAccepted>Opt In/Disclaimer Consent:/label> label classlp-tcr-content> span classlp-tcr-checkbox> input typecheckbox idsection-d539c121-e859-45ec-8884-5b5c00e2d103-termsAccepted nametermsAccepted oninvalidthis.setCustomValidity(Please accept the terms and conditions) oninputthis.setCustomValidity() required />/span> span classlp-tcr-message> I agree to be contacted by Better Homes and Gardens McKenzie Realty via call, email, and text for real estate services. To opt out, you can reply stop at any time or reply help for assistance. You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. a href/terms-and-conditions target_blank>Privacy Policy/a>. /span> /label>/div> /div> div classsuccess-block> div classlp-title-group> h2 classlp-h2>Thank You/h2> div classlp-text--subtitle>You have successfully been added to our Newsletter. Stay tuned for the latest updates sent straight to your inbox!/div> /div> /div> /form> /div>/div>/section>section idsection-440ed424-ead1-49d9-ac86-f7431c4d252f classsolid-section is-font-color-dark is-background-color-light data-el-idcbccba56-02a9-4c0c-90bb-602d2d676658> div classredesign featured-press-section> div classcontainer> header> h2 classserif>Blog Posts/h2> p> Helping you make confident, informed real estate decisions. /p> /header> ul classfeatured-press three-columns> li> a href/blog/what-its-like-to-live-in-langley-on-whidbey-island> figure> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/d56be9bb-70dc-448d-85a8-df3d018b40d8 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/d56be9bb-70dc-448d-85a8-df3d018b40d8 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/d56be9bb-70dc-448d-85a8-df3d018b40d8 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/d56be9bb-70dc-448d-85a8-df3d018b40d8 1408w alt loadinglazy> /figure> h4 classserif >span classlink hyperlink-style-1>What It’s Like To Live In Langley On Whidbey Island/span> /h4> ul classfeatured-press__details> /ul> /a> /li> li> a href/blog/spring-cleaning-oak-harbor> figure> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/najzt21htxu8gzrjzspb srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/najzt21htxu8gzrjzspb 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/najzt21htxu8gzrjzspb 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/najzt21htxu8gzrjzspb 1920w alt loadinglazy> /figure> h4 classserif >span classlink hyperlink-style-1>Spring Cleaning Oak Harbor/span> /h4> p> Spruce up your home this spring to attract buyers! Follow these tips for a sparkling Oak Harbor home sale. /p> ul classfeatured-press__details> /ul> /a> /li> li> a href/blog/buying-and-selling-tips> figure> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/g7sntgpyyxnewnxtrcde srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/g7sntgpyyxnewnxtrcde 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/g7sntgpyyxnewnxtrcde 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/g7sntgpyyxnewnxtrcde 1920w altA kitchen with a white island, stainless steel appliances, and a lot of natural light loadinglazy> /figure> h4 classserif >span classlink hyperlink-style-1>Buying & Selling Tips/span> /h4> p> Whether it’s your first home or if you’re an experienced buyer, purchasing a home is a complex process. /p> ul classfeatured-press__details> /ul> /a> /li> /ul> a href/blog classbtn btn--primary-dark button-style-3 > VIEW ALL /a> /div> /div> /section>section classimage-section is-font-color-light is-background-color-light idsection-51327815-1017-4d13-8c6f-4d5eaa4c8850 data-el-ide6b1ae9f-5b8d-4ac5-a23f-bfb55ef91c3c> script> (function(){ const sectionId section-51327815-1017-4d13-8c6f-4d5eaa4c8850 const section document.querySelector(`#${sectionId}`); var sectionBg window.getComputedStyle(section, null).getPropertyValue(background-image); if(true true) { section.classList.add(parallax-enabled); section.style.setProperty(--sectionBackground, sectionBg); section.style.setProperty(background, none); } })()/script>div classredesign work-with-us parallax> div classcontainer> h2 classserif>Join the Team/h2> p>At Better Homes and Gardens McKenzie Realty, you’re more than an agent—you’re family. We believe in creating a supportive, people-first culture where everyone succeeds together. If you value teamwork, community, and meaningful client relationships, you’ll feel right at home with us./p> div classbtn-container> a rolebutton data-typeCONTACT_US classbtn btn--primary-light button-style-2 > Contact Us /a> /div> /div>/div> /section>section idsection-b506bd7f-e011-4ce3-8bf7-583fae4f992f classsolid-section is-font-color-light is-background-color-dark data-el-id5db65d6a-01e9-4ee3-babf-2748e074a284> script typetext/x-handlebars-template classjsIGItem> a href{{permalink}} target_blank classig-feed-item insta-type-{{mediaType}}> div classig-feed-item__img stylebackground-image: url({{#ifEquals mediaType VIDEO}}{{thumbnailUrl}}{{^}}{{mediaUrl}}{{/ifEquals}});>/div> div classig-feed-item__info>div classig-feed-item__caption>{{caption}}/div>/div> {{#ifEquals mediaType VIDEO}}div classvideo-icon>/div>{{/ifEquals}} /a> /script>div classig-feed redesign> div classig-feed-top lp-container> div classtop-wrapper> div classtop-left> h3 classlp-h3 title>Follow Us on Instagram/h3> a href# target_blank classinstagram-link jsIGLink>h4 classlp-h4 instagram-name jsIGName>/h4>/a> /div> div classtop-right> a href# target_blank classlp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width follow-button jsIGLink button-style-4>Follow Us/a> a classnav-button top-nav-prev hidden-control button-style-4> svg width9 height15 viewBox0 0 9 15 fillnone xmlnshttp://www.w3.org/2000/svg>path dM7.099 13.25l-5.25-5.775L7.099 1.7 strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround/>/svg> /a> a classnav-button top-nav-next hidden-control button-style-4> svg width9 height15 viewBox0 0 9 15 fillnone xmlnshttp://www.w3.org/2000/svg>path dM1.90137 1.75L7.15137 7.525L1.90137 13.3 strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround/>/svg> /a> /div> /div> /div> div classlp-container ig-feed-container > div classig-feed-feed data-limit33> /div> /div> div classbottom-controls> a classbottom-nav-button bottom-nav-prev button-style-4> svg width9 height15 viewBox0 0 9 15 fillnone xmlnshttp://www.w3.org/2000/svg>path dM7.099 13.25l-5.25-5.775L7.099 1.7 strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround/>/svg> /a> a classbottom-nav-button bottom-nav-next button-style-4> svg width9 height15 viewBox0 0 9 15 fillnone xmlnshttp://www.w3.org/2000/svg>path dM1.90137 1.75L7.15137 7.525L1.90137 13.3 strokecurrentColor stroke-width2 stroke-linecapround stroke-linejoinround/>/svg> /a> /div>/div>/section> div idmodals classmodals>/div> footer idglobal-footer classis-font-color-dark is-background-color-light data-el-id874a9373-949d-4275-b72f-04c2a6ec373b> div classfooter redesign no_newsletter > div classcontainer> h3>Better Homes and Gardens McKenzie Realty/h3> div classinfo-wrap> div classinfo-wrap-contact agent_box> div classinfo-wrap-contact_zone type_user> h4 classserif>Contact Us/h4> div classinfo-wrap-contact_cell> i> svg width30 height19 viewBox0 0 30 19 fillnone xmlnshttp://www.w3.org/2000/svg> path dM2 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 /> /svg> /i> p classcontact_title>Email/p> a href/cdn-cgi/l/email-protection#355c5b535a7558565e505b4f5c50575d521b565a58 classlp-link info-wrap-contact_link grey-text hyperlink-style-1>span class__cf_email__ data-cfemaild8b1b6beb798b5bbb3bdb6a2b1bdbab0bff6bbb7b5>email protected/span>/a> /div> div classinfo-wrap-contact_cell> i>svg width30 height25 viewBox0 0 30 25 fillnone xmlnshttp://www.w3.org/2000/svg> path fill-ruleevenodd clip-ruleevenodd dM10.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 /> /svg>/i> p classcontact_title>Phone Number/p> a hreftel:(360) 218-4790 classlp-link info-wrap-contact_link grey-text hyperlink-style-1>(360) 218-4790/a> /div> /div> div classinfo-wrap-contact_zone> div classinfo-wrap-contact_cell> i> svg width31 height30 viewBox0 0 31 30 fillnone xmlnshttp://www.w3.org/2000/svg> path dM29.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 /> path dM6.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 /> path dM7.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 /> /svg> /i> p classinfo-wrap-contact_title>Address/p> p classinfo-wrap-contact_link grey-text>p>390 E Whidbey Avebr>Oak Harbor WA 98277/p>/p> /div> /div> /div> /div> div classtext_footer first_text_footer> div classimages_box> div classimg_size> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/0ff8d0c8-88c3-4ad3-bce8-a53534076898 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/0ff8d0c8-88c3-4ad3-bce8-a53534076898 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/0ff8d0c8-88c3-4ad3-bce8-a53534076898 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/0ff8d0c8-88c3-4ad3-bce8-a53534076898 1024w altFooter Image sizes200px> /div> /div> div classluxury-text> p stylefont-size: 12px;>All information is deemed reliable but not guaranteed and should be independently reviewed and verified.br>img idiivu srchttps://res.cloudinary.com/luxuryp/images/f_auto,q_auto/g5qzbyky8ifp5w0ex0ik/realtor-eho-logo-07232021-update-dark width100px heightauto>/p>p> /p>style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}#iaa1{font-size:12px;}#iivu{margin-top:20px;}/style> /div> /div> div classtext_footer second_text_footer> div classtext_content_wrap> div> div> /div>style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}/style> /div> /div> /div> div classinfo-privacy> div classform-row info-privacy__row> div classform-col form-col--powered powered-box> div classimg-wrap> img srchttps://media-production.lp-cdn.com/media/b517d231-d9f5-4e15-870d-852a977c9204 alt> /div> div classpowered_zone> Real Estate Website Design by a hrefhttps://www.luxurypresence.com/real-estate-website-design/ target_blank classlp-link grey-text luxury-link underlined hyperlink-style-1>Luxury Presence/a> /div> /div> div classform-col form-col--copyright> div classcopy_zone> span classcopy_words>Copyright ©/span> span classauto-year-update>2022/span> | a href/terms-and-conditions classlp-link grey-text hyperlink-style-1>Privacy Policy/a> span classadditional-links-separator>/span> a href/dmca-notice classlp-link grey-text >DMCA NOTICE/a> /div> /div> div classform-col form-col--socials> ul classlp-socials social_icons-style-1 socials socials--grey socials_zone> li> a hrefhttps://www.facebook.com/thecraigmckenzieteam classlp-socials__link socials__item socials__link wow fadeInUp data-wow-delay0s target_blank aria-labelFACEBOOK > span classlp-i lp-i--facebook aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.instagram.com/bhgmckenzierealty/ classlp-socials__link socials__item socials__link wow fadeInUp data-wow-delay0.1s target_blank aria-labelINSTAGRAM > span classlp-i lp-i--instagram aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.linkedin.com/in/thecraigmckenzieteam/ classlp-socials__link socials__item socials__link wow fadeInUp data-wow-delay0.2s target_blank aria-labelLINKEDIN > span classlp-i lp-i--linkedin aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.youtube.com/@HomesforHeroes classlp-socials__link socials__item socials__link wow fadeInUp data-wow-delay0.3s target_blank aria-labelYOUTUBE > span classlp-i lp-i--youtube aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.tiktok.com/@bhgmckenzierealty classlp-socials__link socials__item socials__link wow fadeInUp data-wow-delay0.4s target_blank aria-labelTIKTOK > span classlp-i lp-i--tiktok aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.google.com/search?sca_esv=c302aaa6c87d965b&q=Better%20Homes%20and%20Gardens%20McKenzie%20Realty&stick=H4sIAAAAAAAAAONgU1I1qDA1sUizSDQwNLI0MzC3SDG0MqiwTDMzNk1NNTA1NkozMDNMXMSq4ZRaUpJapOCRn5tarJCYl6LgnliUkppXrOCb7J2aV5WZqhCUmphTUgkAPnFpAlQAAAA&mat=CUJKgHTIZph8&ved=2ahUKEwibqsaZtZ2RAxXUNzQIHW2AIUEQrMcEegQIJBAF#lrd=0x548f8a01296078d1:0x9f635ee0532f061a,1,,,, classlp-socials__link socials__item socials__link wow fadeInUp data-wow-delay0.5s target_blank aria-labelGOOGLE > span classlp-i lp-i--google aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.zillow.com/profile/mckenziebhg classlp-socials__link socials__item socials__link wow fadeInUp data-wow-delay0.6s target_blank aria-labelZILLOW > span classlp-i lp-i--zillow aria-hiddentrue>/span> /a> /li> /ul> /div> /div> /div> /div> div classfooter__disclaimers lp-footer-disclaimers> div classcontainer disclaimer-item>div classcmpl-logo data-feed-idmlsgrid_nwmls>img srchttps://res.cloudinary.com/luxuryp/images/f_auto,q_auto/pv3nzs2ntl6l765u6u0g/symbol-color-nwmls alt height50 loadinglazy/>/div>div classcmpl-disclaimer data-feed-idmlsgrid_nwmls>p styletext-align: center;>span stylefont-weight: 400; font-size: 8pt;>The IDX display presents information sourced from the span stylefont-weight: 400;>Northwest Multiple Listing Service/span> as of span classcmpl-date>2/16/2026/span>. The data is intended for personal, non-commercial use and should not be used for any other purpose except to identify potential properties for purchase. While the MLS data displayed is generally deemed reliable, it is NOT guaranteed to be accurate by the MLS. Buyers are responsible for verifying the accuracy of all information and are advised to conduct their own investigations or seek professional assistance. Other sources besides the Listing Agent may have contributed to the MLS data presented. Unless expressly specified in writing, the Broker/Agent has not confirmed any information obtained from external sources. The Broker/Agent, may or may not have acted as the Listing and/or Selling Agent and cannot guarantee the accuracy of property locations displayed on any map. The property locations displayed on any map are merely best approximations and exact locations should be independently verified. /span>span stylefont-weight: 400; font-size: 8pt;>Based on information submitted to the MLS GRID as of span stylefont-size: 8pt;>span classcmpl-date>2/16/2026/span> at span classcmpl-time>6:21 PM UTC/span>/span> . All data is obtained from various sources and may not have been verified by broker or MLS GRID. Supplied Open House Information is subject to change without notice. All information should be independently reviewed and verified for accuracy. Properties may or may not be listed by the office/agent presenting the information./span>/p>p styletext-align: center;>span stylefont-size: 10pt;>strong>Better Homes and Gardens McKenzie Realty/strong>/span>/p>p styletext-align: center;>span stylefont-weight: 400; font-size: 8pt;>©2026 span stylefont-weight: 400;>Northwest Multiple Listing Service/span> all rights reserved./span>/p>p styletext-align: center;>span stylefont-size: 8pt;>img srchttps://res.cloudinary.com/luxuryp/images/f_auto,q_auto/pv3nzs2ntl6l765u6u0g/symbol-color-nwmls alt width63 height62>/span>/p>/div>/div> /div>/div> /footer> div idmodal-global-contact-us classmodal data-el-id stylebackground-color: ; > div classmodal-content> div classcontact-form redesign stylebackground-image: url(https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/27f5cf41-dec3-4dd3-9e82-86e9f42c0eac)> div classcontainer> div classsection-details style--colorTxt: #ffffff> h2>Contact Details/h2> div classinfo-zone> div classinfo-zone_contact type_user> h4 classserif>Better Homes and Gardens McKenzie Realty/h4> div classinfo-zone_contact_cell> i> svg width30 height25 viewBox0 0 30 25 fillnone xmlnshttp://www.w3.org/2000/svg> path fill-ruleevenodd clip-ruleevenodd dM10.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/> /svg> /i> p classcontact_title>Phone/p> a hreftel:(360) 218-4790 classlp-link info-zone_contact_link link hyperlink-style-2>(360) 218-4790/a> /div> div classinfo-zone_contact_cell> i> svg width30 height19 viewBox0 0 30 19 fillnone xmlnshttp://www.w3.org/2000/svg> path dM2 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/> /svg> /i> p classcontact_title>Email/p> a href/cdn-cgi/l/email-protection#b3daddd5dcf3ded0d8d6ddc9dad6d1dbd49dd0dcde classlp-link info-zone_contact_link link hyperlink-style-2>span class__cf_email__ data-cfemail1f767179705f727c747a7165767a7d7778317c7072>email protected/span>/a> /div> /div> div classinfo-zone_contact> div classinfo-zone_contact_cell> i> svg width31 height30 viewBox0 0 31 30 fillnone xmlnshttp://www.w3.org/2000/svg> path dM29.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/> path dM6.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/> path dM7.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/> /svg> /i> p classinfo-wrap-contact_title>Address/p> p classinfo-zone_contact_link pre-line>390 E Whidbey Ave Oak Harbor WA 98277/p> /div> /div> div classinfo-zone_contact> div classinfo-zone_contact_cell> p classpre-line>div>/div>style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}/style>/p> /div> /div> ul classlp-socials social_icons-style-2 socials socials--grey socials_zone footer__contact-column> li> a hrefhttps://www.facebook.com/thecraigmckenzieteam classlp-socials__link socials__item wow fadeInUp socials__link data-wow-delay0s target_blank aria-labelFACEBOOK > span classlp-i lp-i--facebook aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.instagram.com/bhgmckenzierealty/ classlp-socials__link socials__item wow fadeInUp socials__link data-wow-delay0.1s target_blank aria-labelINSTAGRAM > span classlp-i lp-i--instagram aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.linkedin.com/in/thecraigmckenzieteam/ classlp-socials__link socials__item wow fadeInUp socials__link data-wow-delay0.2s target_blank aria-labelLINKEDIN > span classlp-i lp-i--linkedin aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.youtube.com/@HomesforHeroes classlp-socials__link socials__item wow fadeInUp socials__link data-wow-delay0.3s target_blank aria-labelYOUTUBE > span classlp-i lp-i--youtube aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.tiktok.com/@bhgmckenzierealty classlp-socials__link socials__item wow fadeInUp socials__link data-wow-delay0.4s target_blank aria-labelTIKTOK > span classlp-i lp-i--tiktok aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.google.com/search?sca_esv=c302aaa6c87d965b&q=Better%20Homes%20and%20Gardens%20McKenzie%20Realty&stick=H4sIAAAAAAAAAONgU1I1qDA1sUizSDQwNLI0MzC3SDG0MqiwTDMzNk1NNTA1NkozMDNMXMSq4ZRaUpJapOCRn5tarJCYl6LgnliUkppXrOCb7J2aV5WZqhCUmphTUgkAPnFpAlQAAAA&mat=CUJKgHTIZph8&ved=2ahUKEwibqsaZtZ2RAxXUNzQIHW2AIUEQrMcEegQIJBAF#lrd=0x548f8a01296078d1:0x9f635ee0532f061a,1,,,, classlp-socials__link socials__item wow fadeInUp socials__link data-wow-delay0.5s target_blank aria-labelGOOGLE > span classlp-i lp-i--google aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.zillow.com/profile/mckenziebhg classlp-socials__link socials__item wow fadeInUp socials__link data-wow-delay0.6s target_blank aria-labelZILLOW > span classlp-i lp-i--zillow aria-hiddentrue>/span> /a> /li> /ul> /div> /div> div classsection-message> form data-typecontact-form> h2>Submit a Message/h2> div classh-pot> label for-middleName>Middle Name/label> input id-middleName namemiddleName value autocompleteoff tabindex-1> /div> div classlp-input-group> label forprod-name classlp-label>Name/label> input idprod-name namename value required classlp-input lp-input--light> /div> div classlp-input-group> label forprod-email classlp-label>Email/label> input idprod-email typeemail nameemail value required classlp-input lp-input--light> /div> div classlp-input-group> label forprod-phone classlp-label>Phone/label> input idprod-phone typetel namephoneNumber value required classlp-input lp-input--light> /div> div classlp-input-group m16> label forprod-message classlp-label>Message/label> textarea idprod-message namemessage value required classlp-input>/textarea> /div> div classlp-disclaimer> label styledisplay: none; for-termsAccepted>Opt In/Disclaimer Consent:/label> label classlp-tcr-content> span classlp-tcr-checkbox> input typecheckbox id-termsAccepted nametermsAccepted oninvalidthis.setCustomValidity(Please accept the terms and conditions) oninputthis.setCustomValidity() required />/span> span classlp-tcr-message> I agree to be contacted by Better Homes and Gardens McKenzie Realty via call, email, and text for real estate services. To opt out, you can reply stop at any time or reply help for assistance. You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. a href/terms-and-conditions target_blank>Privacy Policy/a>. /span> /label> /div> input styledisplay: none; typetext namesource valueCONTACT_INQUIRY /> button typesubmit classsubmitButton lp-btn button-style-2> span classlabel-initial>Submit/span> span classlabel-loading>Submitting/span> span classlabel-success>Submitted/span> span classsubmit-icon lp-i lp-i--circle-notch lp-i--spin>/span> /button> p classsuccess-message success hide> Message sent successfully! /p> /form> /div> /div> /div> /div> button classclose lp-close typebutton aria-labelclose modal> span classlp-close-icon aria-hiddentrue>/span> /button> /div> div idqualifying-questions-modal tabindex-1 roledialog aria-modaltrue aria-labelledbyqualifying-questions-modal-title aria-hiddentrue styleposition: 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;> style> #qualifying-questions-modal .custom-select-toggle { border: 1px solid #848484; border-radius: 8px; padding: 12px 16px; } #qualifying-questions-modal .custom-select-toggle.is-placeholder { color: #848484; } #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder { color: #848484; opacity: 1; } #qualifying-questions-modal .disclaimer-more { display: none; } #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more { display: inline; } #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis { display: none; } /style> script data-cfasyncfalse src/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js>/script>script> function toggleDisclaimerQualifyingQuestionsModal() { const disclaimerText document.getElementById(qualifying-questions-modal-disclaimer-text); const toggleButton document.getElementById(qualifying-questions-modal-toggle-disclaimer); if (disclaimerText.classList.contains(collapsed)) { disclaimerText.classList.remove(collapsed); toggleButton.textContent Read less; toggleButton.setAttribute(aria-expanded, true); } else { disclaimerText.classList.add(collapsed); toggleButton.textContent Read more; toggleButton.setAttribute(aria-expanded, false); } } /script> div stylemax-width: 400px; width: 95%; margin: 0 auto;> div stylebackground: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;> button typebutton data-dismissmodal aria-labelClose styleposition: 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;> span aria-hiddentrue>×/span> /button> div stylepadding: 40px 30px 32px;> div styletext-align: left; margin-bottom: 32px;> h2 idqualifying-questions-modal-title stylemargin: 0; color: #333; font-size: 18px; line-height: 1.4; text-transform: uppercase; letter-spacing: 0.5px; font-weight: normal;> Thanks, please provide more information to help serve you /h2> /div> form idqualifying-questions-modal-form data-typecontact-form> input typehidden namesource valuePROFILE_UPDATE /> input typehidden nameemail value idqualifying-questions-modal-email /> input typehidden nametriggerSource idqualifying-questions-modal-triggerSource value /> label forqualifying-questions-modal-email styledisplay:none;> Email /label> label forqualifying-questions-modal-triggerSource styledisplay:none;> Trigger Source /label> div stylemargin-bottom: 20px;> label forqualifying-questions-modal-phoneNumber styledisplay:none;> Phone Number /label> input typetel idqualifying-questions-modal-phoneNumber namephoneNumber stylepadding: 12px 16px; font-size: 16px; border: 1px solid #848484; border-radius: 8px; background: transparent; color: black; width: 100%; box-sizing: border-box; outline: none; pattern^\+?1?-.\s?\(?0-9{3}\)?-.\s?0-9{3}-.\s?0-9{4}$ required placeholderPhone aria-labelPhone Number inputmodetel autocompletetel onfocusthis.style.borderColorblack; onblurthis.style.borderColor#848484; /> /div> div stylemargin-bottom: 20px;> label forqualifying-questions-modal-interest styledisplay:none;> Interest /label> select idqualifying-questions-modal-interest nameinterest required data-labelInterest aria-labelInterest stylepadding: 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;charsetutf8,%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; onfocusthis.style.borderColorblack; this.style.colorblack; onblurthis.style.borderColor#848484; if(this.value ) this.style.color#848484; else this.style.colorblack; > option value stylebackground: #fff; color: #848484; disabled selected>Interested in.../option> option valueSelling & Buying stylebackground: #fff; color: black;>Selling & Buying/option> option valueSelling stylebackground: #fff; color: black;>Selling/option> option valueBuying stylebackground: #fff; color: black;>Buying/option> option valueRenting stylebackground: #fff; color: black;>Renting/option> option valueOther stylebackground: #fff; color: black;>Other/option> /select> /div> div stylemargin-bottom: 32px; font-size: 12px; line-height: 1.2;> label styledisplay: none; forqualifying-questions-modal-qualifying-questions-termsAccepted>Opt In/Disclaimer Consent:/label> label classlp-tcr-content> span classlp-tcr-checkbox> input typecheckbox idqualifying-questions-modal-qualifying-questions-termsAccepted nametermsAccepted aria-describedbyqualifying-questions-modal-disclaimer-text oninvalidthis.setCustomValidity(Please accept the terms and conditions) oninputthis.setCustomValidity() required />/span> span classlp-tcr-message> div idqualifying-questions-modal-disclaimer-text classcollapsed stylecolor: #848484;> I agree to be contacted by strong>Better Homes and Gardens McKenzie Realty/strong> via call, email, and text span classdisclaimer-more>for real estate services. To opt out, you can reply stop at any time or reply help for assistance. You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary./span> span classdisclaimer-ellipsis>.../span> a href/terms-and-conditions target_blank relnoopener noreferrer styletext-decoration: underline;>Privacy Policy/a>. /div> button idqualifying-questions-modal-toggle-disclaimer typebutton stylebackground: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer; aria-expandedfalse onclicktoggleDisclaimerQualifyingQuestionsModal() > Read more /button> /span> /label> /div> div> button typesubmit stylepadding: 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; onmouseoverthis.style.backgroundtransparent; this.style.colorblack; onmouseoutthis.style.backgroundblack; this.style.colorwhite; > Submit /button> /div> /form> /div> /div> /div> /div> script> (function() { var lazyVideos .slice.call(document.querySelectorAll(video.lazy)); if (IntersectionObserver in window && lazyVideos.length > 0) { var lazyVideoObserver new IntersectionObserver(function(entries, observer) { entries.forEach(function(video) { if (video.isIntersecting) { for (var source in video.target.children) { var videoSource video.target.childrensource; if (typeof videoSource.tagName string && videoSource.tagName SOURCE) { videoSource.src videoSource.dataset.src; } } video.target.load(); video.target.classList.remove(lazy); lazyVideoObserver.unobserve(video.target); } }); }); lazyVideos.forEach(function(lazyVideo) { lazyVideoObserver.observe(lazyVideo); }); } })(); /script> !-- Global site tag (gtag.js) - Google Analytics --> script defer srchttps://www.googletagmanager.com/gtag/js>/script> !-- Google Tag Manager --> script>(function(w,d,s,l,i){wlwl||;wl.push({gtm.start: new Date().getTime(),event:gtm.js});var fd.getElementsByTagName(s)0, jd.createElement(s),dll!dataLayer?&l+l:;j.defertrue;j.asyncfalse;j.src https://www.googletagmanager.com/gtm.js?id+i+dl;f.parentNode.insertBefore(j,f); })(window,document,script,dataLayer,GTM-T9SFQGHZ);/script> !-- End Google Tag Manager --> !-- LP Tracker (divolte.js) - LP Divolte --> script>window.divolteLpwindow.divolteLp||function(){(divolteLp.qdivolteLp.q||).push(arguments)}/script> !-- LP Tracker (eventBus) - LP EventBus --> script>window.eventBusLpwindow.eventBusLp||function(){(eventBusLp.qeventBusLp.q||).push(arguments)}/script> script> window.dataLayer window.dataLayer || ; document.sendGoogleTagManagerEvent function() { /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */ if (window.navigator.globalPrivacyControl) { return; } dataLayer.push(arguments); } document.sendGoogleTagManagerEvent(js, new Date()); document.sendGoogleTagManagerEvent(config, G-2FD0L1KZL0, { page: location.pathname, location: location.href }); document.sendGoogleAnalyticsEvent function(googleEvent) { /* Now this has a mapping to match ga4 in order to not modify buttons.js and contactForms.js */ document.sendGoogleTagManagerEvent(event, googleEvent.eventAction, { event_category: googleEvent.eventCategory, event_label: googleEvent.eventLabel, value: googleEvent.eventValue }) }; document.addEventListener(DOMContentLoaded, function() { var pageView { hitType: pageview, page: location.pathname, location: location.href }; (function() { //If the page has an element with ID of auto-year-update the element will be populated with the current year. var date new Date(); var elements document.getElementsByClassName(auto-year-update); var i; for (i 0; i elements.length; i++) { elementsi.innerText date.getFullYear(); } })(); if (window.divolteLp) { window.divolteLp(sendLpPageView, {}); } if (window.eventBusLp) { window.eventBusLp(sendLpPageView, {}); } document.sendGoogleAnalyticsEvent(pageView); }); /script> script> // Function to dynamically load a script function loadScript(url, callback) { var script document.createElement(script); script.type text/javascript; script.src url; script.defer true; script.async true; script.onload callback; document.head.appendChild(script); } // Function to dynamically load CSS file function loadCSS(url) { var link document.createElement(link); link.rel stylesheet; link.href url; document.head.appendChild(link); } // Global methods / variables that can be accessed by element js window.luxuryPresence { libs: { loadJs: loadScript, loadCss: loadCSS, jsLibsMap: { paroller: { jsSrc: https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js, isLoaded: false, }, ionRangeSlider: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js, cssSrc: https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css, isLoaded: false, requires: jquery, }, splide: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js, cssSrc: https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css, isLoaded: false, }, wow: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js, isLoaded: false, }, jquery: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js, isLoaded: false, }, slick: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js, isLoaded: false, requires: jquery, }, libphonenumber: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js, isLoaded: false, }, }, }, }; /script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js integritysha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g crossoriginanonymous referrerpolicyno-referrer onloadwindow.luxuryPresence.libs.jsLibsMap.jquery.isLoaded true>/script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js>/script> script defer srchttps://cdn.jsdelivr.net/npm/handlebars-intl@1.1.2/dist/handlebars-intl.min.js>/script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js>/script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js onloadwindow.luxuryPresence.libs.jsLibsMap.slick.isLoaded true>/script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js onloadwindow.luxuryPresence.libs.jsLibsMap.wow.isLoaded true>/script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js onloadwindow.luxuryPresence.libs.jsLibsMap.ionRangeSlider.isLoaded true>/script> !-- GOOGLE TRANSLATE SCRIPT --> script> function googleTranslateElementInit() { // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages en,de,fr,ro,sk,pl` // Language codes can be taken from here https://cloud.google.com/translate/docs/languages const DEFAULT_LANGUAGES en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt; document.querySelectorAll(data-typeTRANSLATE).forEach(function(translate){ translate.innerText ; new google.translate.TranslateElement({ pageLanguage: en, layout: google.translate.TranslateElement.InlineLayout.SIMPLE, includedLanguages: window.customLanguages || DEFAULT_LANGUAGES, }, translate); }); } /script> script defer src//translate.google.com/translate_a/element.js?cbgoogleTranslateElementInit>/script> script defer srchttps://accounts.google.com/gsi/intermediate>/script> !-- GOOGLE TRANSLATE SCRIPT END--> script> // UI helpers (function () { function getSideMenu () { return document.querySelector(body > div.sidemenu); } function sideMenuHide (instant) { var sideMenu getSideMenu(); if (!sideMenu || !sideMenu.classList.contains(visible)) { return; } sideMenu.classList.remove(visible); sideMenu.dispatchEvent(new CustomEvent(lpui-hide, { detail: { instant: !!instant } })); window.dispatchEvent(new CustomEvent(lpui-sidemenu-hide, { detail: {instant: !!instant} })); } function sideMenuShow () { var sideMenu getSideMenu(); if (!sideMenu || sideMenu.classList.contains(visible)) { return; } sideMenu.classList.add(visible); sideMenu.dispatchEvent(new Event(lpui-show)); window.dispatchEvent(new Event(lpui-sidemenu-show)); } function sideMenuToggle () { var sideMenu getSideMenu(); if (!sideMenu) { return; } var isSideMenuVisible sideMenu.classList.contains(visible); if (isSideMenuVisible) { sideMenuHide(); } else { sideMenuShow(); } } var scrollLockRequests {}; window.__debug_scrollLockRequests scrollLockRequests; var hideScrollStyles + body {+ overflow: hidden; + }; var hideScrollId hide-body-scroll-style; function scrollLock () { var style document.createElement(style); style.id hideScrollId; style.textContent hideScrollStyles; document.head.appendChild(style); window.dispatchEvent(new Event(lpui-scroll-locked)); } function scrollUnlock () { document.getElementById(hideScrollId)?.remove(); window.dispatchEvent(new Event(lpui-scroll-unlocked)); } function requestScrollLock (lockId) { var wasLocked Object.keys(scrollLockRequests).length > 0; scrollLockRequestslockId || __anonymous_lock true; if (!wasLocked) { scrollLock(); } } function releaseScrollLock (lockId) { if (lockId) { delete scrollLockRequestslockId; if (!Object.keys(scrollLockRequests).length) { scrollUnlock(); } } else { scrollLockRequests {}; window.__debug_scrollLockRequests scrollLockRequests; scrollUnlock(); } } function showModal (modalId, options) { var modal document.getElementById(modalId); if (!modal) { return; } if (!modal.classList.contains(visible)) { modal.classList.add(visible); if (options && options.scrollLock) { window.lpUI.requestScrollLock(modalId); } modal.dispatchEvent(new Event(lpui-show)); window.dispatchEvent(new CustomEvent(lpui-modal-show, { detail: { id: modalId } })); } const visibleModals document.querySelectorAll(.modal.visible); if (visibleModals.length > 1) { const maxZIndex Array.from(visibleModals).reduce((maxZIndex, modal) > { const zIndex window.getComputedStyle(modal).zIndex; const parsedZIndex zIndex ! auto ? parseInt(zIndex) : 0; return Math.max(maxZIndex, parsedZIndex); }, 0); modal.style.zIndex maxZIndex + 1; } } function _hideModal (modalEl) { if (!modalEl) { return; } if (!modalEl.classList.contains(visible)) { return; } modalEl.classList.remove(visible); modalEl.style.zIndex ; modalEl.dispatchEvent(new Event(lpui-hide)); var modalId modalEl.getAttribute(id); if (modalId) { window.lpUI.releaseScrollLock(modalId); window.dispatchEvent(new CustomEvent(lpui-modal-hide, { detail: { id: modalId } })); } } function hideModal (modalId) { _hideModal(document.getElementById(modalId)); } function hideClosestModal (el) { const modal el?.closest(.modal); if (!modal) { return; } if (modal.classList) { _hideModal(modal); return; } if (modal.length && modal0.classList) { _hideModal(modal0); } } window.lpUI { sideMenuHide: sideMenuHide, sideMenuShow: sideMenuShow, sideMenuToggle: sideMenuToggle, requestScrollLock: requestScrollLock, releaseScrollLock: releaseScrollLock, showModal: showModal, hideModal: hideModal, hideClosestModal: hideClosestModal } })(); var stringifyPrimitive function(v) { switch (typeof v) { case string: return v; case boolean: return v ? true : false; case number: return isFinite(v) ? v : ; default: return ; } }; function objectToQuerystring(obj, sep, eq, name) { // https://github.com/Gozala/querystring/blob/master/encode.js sep sep || &; eq eq || ; if (obj null) { obj undefined; } if (typeof obj object) { return Object.keys(obj).map(function(k) { var ks encodeURIComponent(stringifyPrimitive(k)) + eq; if (Array.isArray(objk)) { return objk.map(function(v) { return ks + encodeURIComponent(stringifyPrimitive(v)); }).join(sep); } else { return ks + encodeURIComponent(stringifyPrimitive(objk)); } }).filter(Boolean).join(sep); } if (!name) return ; return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj)); } function getPath(url, options) { var parser document.createElement(a); parser.href url || ; var path parser.pathname || ; if (path0 ! /) { // IE does not return path starting with a slash path / + path; } if (options && options.queryString) { path + parser.search; } return path; } function getMLSAutocomplete(keyword) { var searchURL window.location.protocol + // + window.location.hostname + /home-search/auto_complete; var query { kind: listings, query: keyword }; return superagent .get(searchURL) .query(query) .then(function(res) { var data res.body || ; /* Of the format: { _index: listing_auto_completes_production_20190723232720775, _type: listing_auto_complete, _id: 235875624, _score: 0, status_modified_at: 1553250708, city: Jupiter, price: 1335743, display_address: 10088 Calabrese Trail Unit: 9 Jupiter FL 33478, sold_price: null, id: 235875624, state: FL, photo_urls: http://cdn.photos.sparkplatform.com/fl/20190322153144208228000000-o.jpg , status: Pending }, ... */ return data; }); } function getMLSAutocompleteWithFilters(keyword, filters {}) { var searchURL window.location.protocol + // + window.location.hostname + /home-search/auto_complete; return superagent .get(searchURL) .query({ kind: listings, query: keyword, ...filters }) .then(function(res) { /* Of the format: { _index: listing_auto_completes_production_20190723232720775, _type: listing_auto_complete, _id: 235875624, _score: 0, status_modified_at: 1553250708, city: Jupiter, price: 1335743, display_address: 10088 Calabrese Trail Unit: 9 Jupiter FL 33478, sold_price: null, id: 235875624, state: FL, photo_urls: http://cdn.photos.sparkplatform.com/fl/20190322153144208228000000-o.jpg , status: Pending }, ... */ return res.body || ; }); } function makeMlsLink(data) { // Code Dupe from utils/googlePlace // mapping of google data type to mls data type var mapping { neighborhood: neighborhood, locality: place, administrative_area_level_2: county, administrative_area_level_1: state, postal_code: postalcode, }; function _filterTypes(types) { return types.filter(function(type) { return type ! political }); } if (!data || !Object.keys(data).length) { return /home-search/listings; } var newData {}; _filterTypes(data.types).forEach(function(type) { if (mappingtype) { newData.search_type mappingtype; } }); newData.omnibox data.formatted_address; data.address_components.forEach(function(component) { _filterTypes(component.types).forEach(function(type) { if (mappingtype) { newDatamappingtype component.long_name; } }); }); var bounds data.geometry.bounds; var convertedData Object.assign(bounds, newData); return /home-search/listings? + objectToQuerystring(convertedData); } function debounce(func, wait) { let timeout; return function(...args) { const context this; clearTimeout(timeout); timeout setTimeout(() > func.apply(context, args), wait) } } // Global methods / variables that can be accessed by element js window.luxuryPresence { ...window.luxuryPresence, defaults: { companyId: ef21bbb2-46d7-4155-87a3-0369bead35d4, apiGatewayUrl: /api-gw, gql: {agents:\n query Agents (\n $agentId: ID\n $agentIds: ID!\n $companyId: String\n $network: Boolean\n $networkId: String\n $officeId: 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 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 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 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 timeZone\n buyerAgencyCompensation\n buyerAgencyCompensationType\n landIdUrl\n }\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 $pressReleaseId: ID\n $companyId: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n $categories: String!\n $propertyId: String!\n $developmentId: String!\n $agentId: String!\n $teamId: String!\n ) {\n pressReleases (\n pressReleaseId: $pressReleaseId\n companyId: $companyId\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 ) {\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 }\n publishedAt\n categories\n }\n pressReleasesCount(\n companyId: $companyId\n search: $search\n categories: $categories\n propertyId: $propertyId\n developmentId: $developmentId\n agentId: $agentId\n teamId: $teamId\n ) {\n count\n }\n }\n,posts:\n query Posts (\n $postId: ID\n $companyId: String\n $offset: Int\n $limit: Int\n $order: String\n $sortDir: SortDirectionEnum\n $search: String\n $featured: Boolean\n $categoryId: String\n $categoryIds: String!\n $neighborhoodId: String!\n ) {\n posts (\n postId: $postId\n companyId: $companyId\n offset: $offset\n limit: $limit\n order: $order\n sortDir: $sortDir\n search: $search\n featured: $featured\n postStatusId: \5f528253-abb7-484e-95c3-330269ac1102\\n categoryId: $categoryId\n categoryIds: $categoryIds\n neighborhoodId: $neighborhoodId\n ) {\n id\n title\n subtitle\n description\n status\n featured\n slug\n categories {\n id\n name\n }\n createdAt\n publishedAt\n scheduledAt\n createdBy {\n firstName\n lastName\n }\n customAuthor\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n seoTitle\n seoDescription\n slug\n }\n postsCount(\n companyId: $companyId\n search: $search\n featured: $featured\n postStatusId: \5f528253-abb7-484e-95c3-330269ac1102\\n categoryId: $categoryId\n categoryIds: $categoryIds\n neighborhoodId: $neighborhoodId\n ) {\n count\n }\n }\n,testimonials:\n query Testimonials(\n $testimonialId: ID\n $agentId: ID\n $teamId: ID\n $companyId: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n ) {\n testimonials(\n testimonialId: $testimonialId\n agentId: $agentId\n teamId: $teamId\n companyId: $companyId\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n ){\n id\n body\n author\n position\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\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 testimonialsCount(\n companyId: $companyId\n agentId: $agentId\n teamId: $teamId\n search: $search\n ) {\n count\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 ) {\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 ) {\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 ) {\n count\n }\n }\n,pois:\nquery PointsOfInterest(\n $regionId: String!,\n $radius: Int,\n $offset: Int,\n $limit: Int,\n $categories: PoiCategoryEnum!,\n $sortBy: PoiSortByEnum\n) {\n pois(\n regionId: $regionId,\n radius: $radius,\n offset: $offset,\n limit: $limit,\n categories: $categories,\n sortBy: $sortBy\n ) {\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 }\n,offices:\n query Offices (\n $officeId: ID\n $officeIds: ID!\n $companyId: String\n $slug: String\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n $tags: String\n $offset: Int\n $limit: Int\n ) {\n offices (\n officeId: $officeId\n officeIds: $officeIds\n companyId: $companyId\n slug: $slug\n sort: $sort\n sortDir: $sortDir\n search: $search\n tags: $tags\n offset: $offset\n limit: $limit\n ) {\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 media {\n id\n originalUrl\n thumbnailUrl\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n }\n }\n officesCount(\n companyId: $companyId\n officeId: $officeId\n officeIds: $officeIds\n slug: $slug\n search: $search\n tags: $tags\n ) {\n count\n }\n }\n,teams:query TeamsAndCount(\n $offset: Int\n $limit: Int\n $search: String\n $sort: String\n $sortDir: SortDirectionEnum\n $companyId: ID\n) {\n teams(\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n companyId: $companyId\n ) {\n \n id\n companyId\n name\n email\n shortBio\n fullBio\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 }\n teamsCount(\n search: $search\n companyId: $companyId\n ) {\n count\n }\n}}, propertyPlaceholderImage: {id:43795741-964f-4de8-b60a-43b0e8e85f0b,alt:null,bytes:84731,width:1920,format:png,height:1200,pngUrl:,shared:true,curated:false,duration:null,largeUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/317b0118-5b99-47d0-955f-358960fb3278,smallUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/317b0118-5b99-47d0-955f-358960fb3278,authorUrl:null,createdAt:2025-12-03T20:47:14.024Z,mediumUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/317b0118-5b99-47d0-955f-358960fb3278,sourceUrl:null,updatedAt:2025-12-03T20:47:14.024Z,xLargeUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/317b0118-5b99-47d0-955f-358960fb3278,__typename:Media,altTagText:null,authorName:null,sourceName:r2,xxLargeUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/317b0118-5b99-47d0-955f-358960fb3278,description:null,displayName:placeholder,originalUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/317b0118-5b99-47d0-955f-358960fb3278,resourceType:image,thumbnailUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/317b0118-5b99-47d0-955f-358960fb3278,originalFileName:placeholder,cloudinaryPublicId:317b0118-5b99-47d0-955f-358960fb3278} }, objectToQuerystring: objectToQuerystring, getPath: getPath, getMLSAutocomplete: getMLSAutocomplete, getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters, makeMlsLink: makeMlsLink, debounce: debounce, }; var wowOffset 100; /script> script> (() > {function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a;}// Entry point for lp-sdk bundle// This file exists to ensure Parcel v2 outputs the correct filename/* global window */ var $53de3c160faf5a81$exports {};/*WARNING!!! This file is used both on the server and in clients web-browserplease dont require/import any server-side related config/functions hereIf we need something, lets pass it as a parameter of the factory*/ var $0ce6edea77f7b81a$exports {};$0ce6edea77f7b81a$exports { getVideoFirstFrame (videoUrl) { // The default Cloudinary asset delivery URL has the following structure: https://res.cloudinary.com/cloud_name>/asset_type>/delivery_type>/transformations>/version>/public_id>.extension> // https://cloudinary.com/documentation/video_manipulation_and_delivery#transformation_url_structure // The problem is that transformations> and version> are optional, and transformations> can be chained separated by / // One more issue to be handled https://cloudinary.com/documentation/advanced_url_delivery_options#seo_friendly_media_asset_urls const CLOUDINARY_URL https://res.cloudinary.com/; const invalid !videoUrl || !videoUrl.startsWith(CLOUDINARY_URL); if (invalid) return null; const urlComponents videoUrl.replace(CLOUDINARY_URL, ).replace(f_auto:video, f_auto).split(/); // checking if asset_type> is not video or videos if (urlComponents1.toLowerCase().indexOf(video) -1) return null; // Filename is last urlComponent public_id>.extension> let filename urlComponentsurlComponents.length - 1; if (filename.lastIndexOf(.) > -1) filename `${filename.slice(0, filename.lastIndexOf(.))}.jpg`; else filename + .jpg; urlComponentsurlComponents.length - 1 filename; // We need to add so_0,eo_0 transformation to the url to target the first frame. // we want to find the position at which we want to insert it as a chained transformation const firstFrameTransformation so_0,eo_0; let firstFrameTransformationPosition 3; // checking cases for SEO-friendly URLs if (urlComponents1.toLowerCase() videos && urlComponents2 ! ) firstFrameTransformationPosition 2; // checking the last transformation position in the url // https://cloudinary.com/documentation/transformation_reference // https://regex101.com/r/lE3W6u/1 const transformationRegex /^(?:a-z{1,3}|\$\w+)_\S+$/; while(firstFrameTransformationPosition urlComponents.length - 1 && transformationRegex.test(urlComponentsfirstFrameTransformationPosition))firstFrameTransformationPosition++; urlComponents.splice(firstFrameTransformationPosition, 0, firstFrameTransformation); return CLOUDINARY_URL + urlComponents.join(/); }};/** * Create helpers with given Handlebars instance * * @param {Object} HandlebarsInstance * @param {Function} isEqual - we use different implementation if isEqual on server and on client * @return {Object} */ function $53de3c160faf5a81$var$handlebarsHelpersFactory(HandlebarsInstance, { isEqual: isEqual }) { // notice!: code below assumes list is ordered lowest to highest width const MEDIA_SIZES { field: thumbnailUrl, w: 320 }, { field: smallUrl, w: 960 }, { field: mediumUrl, w: 1280 }, { field: largeUrl, w: 1920 }, { field: xLargeUrl, w: 2560 }, { field: xxLargeUrl, w: 3456 } ; const MEDIA_SIZE_FOR_SRC 1280; const lpFormatNumber function(number, unit, precision) { const localization en-US; if (!number) return ; if (typeof number string) { const trimmed number.trim(); if (/^+\-0-9./.test(trimmed)) return number; // returning text as is assuming it already has all formatting // eslint-disable-next-line number parseFloat(trimmed); if (!number) return ; } const currencyPrecision typeof precision number ? precision : 0; const currencyFractionDigits Number.isInteger(number) ? 0 : currencyPrecision; const currencyFractionOptions { minimumFractionDigits: currencyFractionDigits, maximumFractionDigits: currencyFractionDigits }; if (unit USD) return `$${number.toLocaleString(localization, currencyFractionOptions)}`; if (unit CAD) return `$${number.toLocaleString(localization, currencyFractionOptions)} CAD`; if (unit EUR) return `\u{20AC}${number.toLocaleString(localization, currencyFractionOptions)}`; if (unit GBP) return `\xa3${number.toLocaleString(localization, currencyFractionOptions)}`; if (unit PERCENT) return `${number}%`; if (precision && typeof precision number && number > -1) return number.toLocaleString(localization, { maximumFractionDigits: precision }); return number.toLocaleString(localization); }; const formatFrequency function(freqUnit) { switch(freqUnit){ 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 ; } }; const formatFrequencyShort function(freqUnit) { switch(freqUnit){ 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 ; } }; const formatFrequencyStd function(freqUnit) { switch(freqUnit){ 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 ; } }; const formatFrequencyExt function(unit, options) { let val; let separator; const opts options || {}; switch(opts.mode){ case short: val formatFrequencyShort(unit); separator opts.frequencySeparator || /; break; case standard: case std: val formatFrequencyStd(unit); separator opts.frequencySeparator || /; break; case long: default: val formatFrequency(unit); separator opts.frequencySeparator || ; } if (!val) return ; if (!opts.frequencyTag && !opts.frequencyClass) return separator + val; return `${separator}${opts.frequencyTag || span}${opts.frequencyClass ? ` class${opts.frequencyClass}` : }>${val}/${opts.frequencyTag || span}>`; }; return { isEmpty (arg1, options) { const result !arg1 || (typeof arg1 string ? !arg1.trim() : false) || !Object.keys(arg1).length; if (options.fn) return result ? options.fn(this) : options.inverse(this); return result; }, ifEquals (arg1, arg2, options) { return isEqual(arg1, arg2) ? options.fn(this) : options.inverse(this); }, raw-helper: function(options) { return options.fn(); }, striptags (txt) { if (!txt) return ; // Remove HTML Comments (escaping something to not make real html comment by expression) // eslint-disable-next-line no-useless-escape,no-param-reassign txt txt.replace(/\!--(.|\r\n)*?-\->/g, ); // Remove XML fragments and style> and svg> tags with content // eslint-disable-next-line txt txt.replace(/(xml|style|svg)(^*|^*|^>)*>(.|\r\n)*?\/\1>/gi, ); // Replace with space // eslint-disable-next-line no-param-reassign txt txt.replace(/ /g, ); // Remove HTML Tags const regexp /\/?(^*|^*|^>)*(>|$)/g; return txt.replace(regexp, ); }, striptagsLineBreaks (txt) { if (!txt) return ; // Remove HTML Comments (escaping something to not make real html comment by expression) // eslint-disable-next-line no-useless-escape,no-param-reassign txt txt.replace(/\!--(.|\r\n)*?-\->/g, ); // Remove XML fragments and style> and svg> tags with content // eslint-disable-next-line no-param-reassign txt txt.replace(/(xml|style|svg)(^*|^*|^>)*>(.|\r\n)*?\/\1>/gi, ); // Replace br> and /p> tags with line break char, skipping last /p> which is not followed by br> or /p> // eslint-disable-next-line no-param-reassign txt txt.replace(/(br\s*\/?>)|(\/p\s*>)(?.*(\/p\s*>|br\s*\/?>))/g, ); // Replace with space // eslint-disable-next-line no-param-reassign txt txt.replace(/ /g, ); // Remove HTML Tags const regexp /\/?(^*|^*|^>)*(>|$)/g; return txt.replace(regexp, ); }, truncate (text, limit, suffix) { if (!text) return ; if (text.length > limit) return typeof suffix string ? text.slice(0, limit - suffix.length) + suffix : text.slice(0, limit); return text; }, // eslint-disable-next-line setSubArray (items , start, end, subArrayName, options) { // eslint-disable-next-line options.data.rootsubArrayName items.slice(start, end); }, formatAreaUnit (areaUnit) { switch(areaUnit){ case ACRE: return Acres; case SQUARE_METER: return Sq.M.; case SQUARE_YARD: return Sq.Yd.; default: return Sq.Ft.; } }, formatFrequency: formatFrequency, formatFrequencyShort: formatFrequencyShort, lpFormatFrequency (freqUnit, options) { return formatFrequencyExt(freqUnit, options && options.hash); }, subArray (index, start, end, options) { return index > start && index end ? options.fn(this) : options.inverse(this); }, formatPropertyStatus (status) { let formattedStatus ; switch(status){ case SOLD: formattedStatus Sold; break; case FOR_SALE: formattedStatus For Sale; break; case COMING_SOON: formattedStatus Coming Soon; break; case INACTIVE: formattedStatus Inactive; break; case POCKET_LISTING: formattedStatus Pocket Listing; break; case PENDING: formattedStatus Pending; break; case UNDER_CONTRACT: formattedStatus Under Contract; break; case ACTIVE_UNDER_CONTRACT: formattedStatus Active Under Contract; break; default: formattedStatus status; } return formattedStatus; }, formatGrade (gradeValue) { switch(gradeValue){ 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 (uri) { return encodeURI(uri); }, encodeURIComponent (txt) { return encodeURIComponent(txt); }, hbFormatDate (date, type) { const newDate date current ? new Date() : new Date(date); const months January, February, March, April, May, June, July, August, September, October, November, December ; if (type YYYY || type year) return `${newDate.getFullYear()}`; if (type MM/DD/YY) { let month newDate.getMonth() + 1; if (month 10) month `0${month.toString()}`; return `${month}/${newDate.getDate()}/${newDate.getFullYear().toString().substr(-2)}`; } return `${monthsnewDate.getMonth()} ${newDate.getDate()}, ${newDate.getFullYear()}`; }, openHousesFormat (startDate, endDate, timeZone) { if (!startDate || !endDate) return ; /** * return formatted time. * @param {date} date * @return {time} time. */ const getTime (date)>{ let hours date.getHours(); if (hours > 12) hours - 12; const prefix 0; let time `${hours}:${date.getMinutes() > 9 ? date.getMinutes() : prefix + date.getMinutes()}`; if (date.getHours() > 11) time + PM; else time + AM; return time; }; let tz ; let startFDate startDate; let endFDate endDate; if (timeZone) { startFDate new Date(startDate).toLocaleString(en-US, { timeZone: timeZone }); endFDate new Date(endDate).toLocaleString(en-US, { timeZone: timeZone }); , , , tz new Date(endDate).toLocaleString(en-US, { timeZone: timeZone, timeZoneName: short }).split( ); } const date new Date(startFDate); const openHouseDate date.toLocaleDateString(en-US); const time1 getTime(date); const date2 new Date(endFDate); const time2 getTime(date2); return `${openHouseDate} ${time1} - ${time2} ${tz}`; }, math (lvalue, operator, rvalue) { // eslint-disable-next-line lvalue parseFloat(lvalue); // eslint-disable-next-line rvalue parseFloat(rvalue); return ({ +: lvalue + rvalue, -: lvalue - rvalue, *: lvalue * rvalue, /: lvalue / rvalue, %: lvalue % rvalue })operator; }, findByKey (values, key, value, options) { const result (values || ).find((entry)>entrykey value); return options.fn(result); }, capitalize (string, split, options) { let capitalized; if (typeof string string && string.length) capitalized string.toLowerCase().split(split).map((w)>w.charAt(0).toUpperCase() + w.slice(1)).join( ).toString(); return capitalized; }, and (...arg) { return Array.prototype.slice.call(arg).every(Boolean); }, or (...arg) { return Array.prototype.slice.call(arg, 0, -1).some(Boolean); }, not (arg) { return !arg; }, orderByIds (items, orderedIds, options) { let ret ; let data null; if (options.data) data HandlebarsInstance.createFrame(options.data); // When passed orderedIds, filter out empty items including empty strings and // only show items (and in that order) in a loop // If no orderedIds provided, show all items const filteredIds (orderedIds || ).filter(Boolean); if (filteredIds && filteredIds.length) { let skippedItems 0; ret filteredIds.reduce((res, id, idx)>{ const item (items || ).find((item)>item.id id); // ID doesnt exist so ditch it if (!item) { skippedItems + 1; return res; } if (data) data.index idx - skippedItems; return res + options.fn(item, { data: data }); }, ); } else for(let i 0, j (items || ).length; i j; i++){ if (data) data.index i; ret + options.fn(itemsi, { data: data }); } return ret; }, ifIn (elem, list, options) { if (list && list.indexOf(elem) > -1) return options.fn(this); return options.inverse(this); }, partial (name, options) { // Register a partial and output the content in a script for clientside rendering HandlebarsInstance.registerPartial(name, HandlebarsInstance.compile(options.fn())); // eslint-disable-next-line const script `script typetext/x-handlebars-template class${name} pagination-script>${options.fn()}/${script}>`; return script; }, numCompare (l, r, operator, options) { const operators { : function(l, r) { // eslint-disable-next-line return l r; }, : function(l, r) { return l r; }, !: function(l, r) { // eslint-disable-next-line return l ! r; }, : function(l, r) { return l r; }, >: function(l, r) { return l > r; }, : function(l, r) { return l r; }, >: function(l, r) { return l > r; } }; const result operatorsoperator(l, r); if (result) return options.fn ? options.fn(this) : true; return options.fn ? options.inverse(this) : false; }, lpFormatNumber: lpFormatNumber, arrayToHtmlList (arr, options) { // eslint-disable-next-line return arr.reduce((acc, current)>{ try { if (typeof current object || current null) return acc; // eslint-disable-next-line return acc + `li>${current}/li>`; } catch (e) { /* empty */ } }, ); }, join (array, separator, options) { if (!array || !array.join) return ; return array.join(typeof separator string ? separator : , ); }, dedupe (items, key, options) { let data null; let skippedItems 0; const list new Set(); if (options.data) data HandlebarsInstance.createFrame(options.data); return (items || ).reduce((res, item, idx)>{ const val key ? itemkey : item; // Item is unique if were passed a key that is not defined const isUnique !list.has(val) || key && val undefined; if (isUnique) list.add(val); else { skippedItems + 1; return res; } if (data) data.index idx - skippedItems; return res + options.fn(item, { data: data }); }, ); }, JSONstringify (obj, options) { return JSON.stringify(obj); }, // eslint-disable-next-line sonarjs/cognitive-complexity formatPropertyPrice (...args) { const options argsargs.length - 1; const opts options.hash; const property args.length > 1 ? args0 : opts.property; const precision opts.precision || 0; if (args.length > 2) // eslint-disable-next-line opts.mode args1; if (!opts.mode) opts.mode short; let separator args.length > 3 ? args2 : opts.separator; if (typeof separator ! string) separator | ; if (property.isPasswordProtected) return Exclusive Listing; let priceUponRequestText args.length > 4 ? args3 : opts.priceUponRequestText; if (typeof priceUponRequestText ! string) priceUponRequestText Price Upon Request; if (property.priceUponRequest) return priceUponRequestText; let price property.salesPrice; let reduced null; // eslint-disable-next-line sonarjs/no-collapsible-if if (property.status ! SOLD && property.status ! Leased) { if (property.reducedPrice) { if (!opts.reducedClass) price property.reducedPrice; else reduced property.reducedPrice; } } let result ; if (reduced) result + `${opts.reducedTag || span} class${opts.reducedClass}>${lpFormatNumber(reduced, property.currency, precision)}/${opts.reducedTag || span}>`; if (price) { price lpFormatNumber(price, property.currency, precision); if (opts.priceTag || opts.priceClass) result + `${opts.priceTag || span}${opts.priceClass ? ` class${opts.priceClass}` : }>${price}/${opts.priceTag || span}>`; else result + price; } const leasePrice property.leasePrice && lpFormatNumber(property.leasePrice, property.currency, precision); if (leasePrice) { if (result) result + separator; const leaseText `${leasePrice}${formatFrequencyExt(property.leasePeriod, opts)}`; if (opts.leaseTag || opts.leaseClass) result + `${opts.leaseTag || span}${opts.leaseClass ? ` class${opts.leaseClass}` : }>${leaseText}/${opts.leaseTag || span}>`; else result + leaseText; } return new HandlebarsInstance.SafeString(result); }, // eslint-disable-next-line sonarjs/cognitive-complexity mediaImage (mediaSource, options {}) { if (!mediaSource) return; const { lazy: lazy, ...attributes } options.hash; let src ; let srcset ; if (typeof mediaSource string) src mediaSource; else { const srcMap {}; const { height: height, width: width, altTagText: altTagText } mediaSource; MEDIA_SIZES.forEach((src)>{ if (mediaSourcesrc.field && !srcMapmediaSourcesrc.field) srcMapmediaSourcesrc.field src.w; }); const srcs Object.keys(srcMap); if (!srcs.length) return; if (altTagText) attributes.alt altTagText; if (height && width) { if (height > width) { if (attributes.class) attributes.class + portrait; else attributes.class portrait; } if (setDims in options.hash) { attributes.width width; attributes.height height; } } if (srcs.length > 1 && width && width srcMapsrcssrcs.length - 1) { const maxSrc srcs.findIndex((src)>srcMapsrc > width); srcs.splice(maxSrc + 1); srcMapsrcssrcs.length - 1 width; } if (srcs.length > 1) { srcset srcs.map((s)>`${s} ${srcMaps}w`).join(, ); srcs.sort((a, b)>Math.abs(srcMapa - MEDIA_SIZE_FOR_SRC) - Math.abs(srcMapb - MEDIA_SIZE_FOR_SRC)); } // eslint-disable-next-line src srcs0; } delete attributes.setDims; if (!srcset) delete attributes.sizes; if (!(alt in attributes)) attributes.alt ; if (!(loading in attributes) && (options?.data?.root?.sectionIndex > 1 || lazy)) attributes.loading lazy; const attrs Object.keys(attributes).map((k)>`${HandlebarsInstance.escapeExpression(k)}${HandlebarsInstance.escapeExpression(attributesk)}`).join( ); return new HandlebarsInstance.SafeString(// eslint-disable-next-line sonarjs/no-nested-template-literals `img src${src}${srcset ? ` srcset${srcset}` : }${attrs ? ` ${attrs}` : }>`); }, bgImage (mediaSource) { if (!mediaSource) return ; if (typeof mediaSource string) return mediaSource; return mediaSource.largeUrl || mediaSource.url || ; }, concat (...rest) { let outStr ; // rest params are Array instances while arguments object is not for(const arg in rest)if (restarg ! null && restarg ! undefined && typeof restarg ! object) outStr + restarg; return outStr; }, setVideoExtension (uri, format) { if (!uri || !format) return ; const decodedUri new URL(uri); if (decodedUri.host ! res.cloudinary.com) { // Not a cloudinary uri, do not rewrite if (decodedUri.pathname.endsWith(`.${format}`)) return uri; return ; } // Rewrite the cloudinary uri const lastPeriodIdx decodedUri.pathname.lastIndexOf(.); let pathWithoutFormat decodedUri.pathname; if (lastPeriodIdx ! -1) pathWithoutFormat decodedUri.pathname.substr(0, lastPeriodIdx); decodedUri.pathname `${pathWithoutFormat}.${format}`; return decodedUri.toString(); }, addVideoSources (uri) { if (!uri) return ; const VIDEO_VARIANTS { format: webm, codec: vp9, htmlCodecs: ;codecsvp9 }, { format: mp4, codec: h265, htmlCodecs: ;codecshvc1 }, { format: mp4, codec: h264, htmlCodecs: } ; const VIDEO_EXT_REGEXP /\.(?:3gp|mpeg|mp4|m4v|m4p|ogv|ogg|mov|webm)$/; if (!uri.includes(res.cloudinary.com)) // keep existing or no extension for non Cloudinary urls return `source data-src${uri}>`; const uriNoExt uri.replace(VIDEO_EXT_REGEXP, ); const sources VIDEO_VARIANTS.map((type)>{ const cloudinaryFormatUrl `${uriNoExt.replace(/f_auto(?::video)?/, `f_${type.format},vc_${type.codec}`)}.${type.format}`; return `source data-src${cloudinaryFormatUrl} typevideo/${type.format}${type.htmlCodecs}>`; }); return sources.join(\n); }, cloudinaryVideoFirstFrame: $0ce6edea77f7b81a$exports.getVideoFirstFrame, initials (text, options) { if (!text) return ; if (options?.hash?.endChar) // eslint-disable-next-line text text.split(options.hash.endChar)0; // eslint-disable-next-line const maxChars +options?.hash?.maxChars || 2; // we do not allow this to be 0 let result text.match(/\b\w/g)?.slice(0, maxChars); if (!result) return ; if (options?.hash?.addText) result result.map((item)>item + options.hash.addText); return result.join(options?.hash?.joinWith || ).toUpperCase(); } };}$53de3c160faf5a81$exports $53de3c160faf5a81$var$handlebarsHelpersFactory;/* global window, document */ // eslint-disable-next-line import/prefer-default-exportclass $dc851cf3939b6ef5$export$ff0712c26d5458f7 { /** * Initialize Modal Controller * @param {Object} options */ constructor(options){ this.isBuilder false; 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 false; this.recaptcha { // Extend for future recaptcha settings enabled: false, recaptchaSiteId: }; this.googleMapsAPIKey null; } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() {} /** * Set page and supporting data * @param {string} pageId * @param {Object} options */ setPage(pageId, options {}) { this.pageId pageId; this.shareId options.shareId || null; this.pageMeta { sourceResource: options.sourceResource, pageElementId: options.pageElementId, pageQueryVariables: options.pageQueryVariables || {} }; } /** * Sets if we are in pagebuilder context or not * @param {boolean} isBuilder */ setIsBuilder(isBuilder) { this.isBuilder isBuilder; } /** * Set Company and supporting data * @param {string} companyId * @param {Object} options */ setCompany(companyId, options {}) { this.companyId companyId; } /** * Set website and supporting data * @param {string} websiteId * @param {Object} options */ setWebsite(websiteId, options {}) { this.websiteId websiteId; if (options.recaptchaSiteId) this.recaptcha { enabled: true, recaptchaSiteId: options.recaptchaSiteId }; if (options.myhomeDashboardEnabled) this.myhomeDashboardEnabled options.myhomeDashboardEnabled; } /** * Set websiteApiGatewayUrl * @param {string} websiteApiGatewayUrl * @param {Object} options */ setWebsiteApiGatewayUrl(websiteApiGatewayUrl, options {}) { this.websiteApiGatewayUrl websiteApiGatewayUrl; } /** * Set buyerSellerServiceUrl * @param {string} buyerSellerServiceUrl * @param {Object} options */ setBuyerSellerServiceUrl(buyerSellerServiceUrl, options {}) { this.buyerSellerServiceUrl buyerSellerServiceUrl; } /** * Set divolteServiceUrl and supporting data * @param {string} divolteServiceUrl * @param {Object} options */ setDivolteServiceUrl(divolteServiceUrl, options {}) { this.divolteServiceUrl divolteServiceUrl; } /** * Set eventBusUrl * @param {string} eventBusUrl * @param {Object} options */ setEventBusUrl(eventBusUrl, options {}) { this.eventBusUrl eventBusUrl; } /** * Set templateId and supporting data * @param {string} templateId * @param {Object} options */ setTemplateId(templateId, options {}) { this.templateId templateId; } /** * Set leadIngesterUrl * @param {string} leadIngesterUrl * @param {Object} options */ setLeadIngesterUrl(leadIngesterUrl, options {}) { this.leadIngesterUrl leadIngesterUrl; } /** * Set googleMapsAPIKey * @param {string} googleMapsAPIKey * @param {Object} options */ setGoogleMapsAPIKey(googleMapsAPIKey, options {}) { this.googleMapsAPIKey googleMapsAPIKey; } /** * Set eventBus * @param {Object} options */ setEventBus({ enabled: enabled, apiKey: apiKey, url: url }) { this.eventBus { enabled: enabled, apiKey: apiKey, url: url }; }}/* eslint-disable import/prefer-default-export */ // eslint-disable-next-line import/prefer-default-exportclass $7c391e2f7931d60d$export$3b5bd9381a52554c { /** * Initialize Base Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ // TODO: Listen for events from configController to update configuration this.config config; this.window window; this.document document; if (!this.destroy) // With turbolinks, we want to ensure that on each page load we have the latest version of the sdk // Controllers are deconstructed and replaced (on the window object) per request // Controllers must use the destory method to remove event handlers to prevent undefined behavior throw new Error(Controllers must implement a deconstructor); }}// eslint-disable-next-line import/prefer-default-exportconst $a3e97e89bbc2a366$export$f037eeffb5561205 2000;class $0ead03fdb95fa9ce$export$d507f25e63650365 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Modal Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.setLoginState this.setLoginState.bind(this); this.pageId null; this.modals ; this.exitModalTriggered {}; this.exitModalEventListeners ; } /** * Initialize Modal Controller at run time * Attach handlers and events to DOM * @param {Object} options */ initialize(options) { try { const { config: config, document: document } this; this.pageId config.pageId; this.modals document.querySelectorAll(body > #modals > .modal); options.modals.forEach((m)>{ this._attachModalHandler(m); }); } catch (e) { // eslint-disable-next-line no-console console.log(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { const { document: document } this; this.exitModalEventListeners.forEach((listener)>{ document.removeEventListener(mouseout, listener); }); this.modals ; this.exitModalTriggered {}; this.exitModalEventListeners ; } /** * Set modal to local storage with expiration * @param {string} modalId */ setModalWithExpiry(modalId) { const { window: window } this; const TTL 86400000; // 24 hours const now new Date(); const expiry now.getTime() + TTL; const key `modal-controller-${modalId}`; try { window.localStorage.setItem(key, JSON.stringify(expiry)); } catch (err) { // catch error when setting item to storage on iOS private browser } } /** * Save success login modal to local storage */ setLoginState() { const { window: window } this; try { window.localStorage.setItem(isSignedUp, true); } catch (err) { // catch error when setting item to storage on iOS private browser } } /** * Get modal and check expiration * @param {string} modalId * @return {boolean} */ getModalWithExpiry(modalId) { const { window: window } this; const storage window.localStorage; const expirationTime storage.getItem(`modal-controller-${modalId}`); if (!expirationTime) return false; const expiry JSON.parse(expirationTime); const now new Date(); if (now.getTime() > expiry) { storage.removeItem(`modal-controller-${modalId}`); return false; } return true; } /** * Make a modal visible * @param {string} modalId * @param {Object} options */ show(modalId, options {}) { // TODO: migrate logic from page.handlebars const { window: window } this; const modalViewed this.getModalWithExpiry(modalId); // Only show a modal if it has not been seen // Does not affect show modal on button click if (modalId && !modalViewed || options.forced true) { window.lpUI.showModal(`modal-${modalId}`, options); this.setModalWithExpiry(modalId); } } /** * Attach events based on Modal type and page settings * @param {Modal} modal */ _attachModalHandler(modal) { const { pageId: pageId } this; const { trigger: trigger, pageSpecific: pageSpecific } modal; if (pageSpecific) { const pageIds modal.pages.map((p)>p.pageId); if (!pageIds.includes(pageId)) // Modal does not belong to this page return; } if (trigger EXIT) this._exitModalHandler(modal); else if (trigger TIMER) this._timerModalHandler(modal); else if (trigger FORCED) this._forcedModalHandler(modal); } /** * Attach events for exit Modals * @param {Modal} modal */ _exitModalHandler(modal) { // eslint-disable-next-line const that this; const { document: document, exitModalTriggered: exitModalTriggered } this; const { modalId: modalId } modal; /** * Handle the mouseout dom event * @param {Event} event */ function triggerExitModal(event) { if (exitModalTriggeredmodalId) return; if (!event.toElement && !event.relatedTarget) { that.show(modalId); exitModalTriggeredmodalId true; } } document.addEventListener(mouseout, triggerExitModal); this.exitModalEventListeners.push(triggerExitModal); } /** * Attach events for timer Modals * @param {Modal} modal */ _timerModalHandler(modal) { const { modalId: modalId, timerDelay: timerDelay } modal; setTimeout(()>{ this.show(modalId); }, timerDelay); } /** * Attach events for Forced Modals * @param {Modal} modal */ _forcedModalHandler(modal) { const { modalId: modalId } modal; const { window: window, document: document } this; const isLoggedIn window.localStorage.getItem(isSignedUp) true; if (!isLoggedIn) { // watch for event triggering success login const forcedModal document.querySelector(`#modal-${modalId}`); const contactForm forcedModal?.querySelector(form); const MODAL_CLOSE_DELAY contactForm?.dataset.delay || (0, $a3e97e89bbc2a366$export$f037eeffb5561205); // form submit autoclose is handled by contactForms controller contactForm.addEventListener(formsubmitted, ()>{ this.setLoginState(); }); window.addEventListener(oauthSuccess, ()>{ this.setLoginState(); contactForm.classList.add(success); setTimeout(()>{ window.lpUI.hideModal(`modal-${modalId}`); contactForm.reset(); contactForm.classList.remove(success); }, MODAL_CLOSE_DELAY); }); this.show(modalId, { forced: true }); } }}/* eslint-disable import/prefer-default-export */ /* global window */ /* eslint-disable import/prefer-default-export */ /** * Handle navigation push * @param {string} href * @param {boolean} _blank */ const $fc0a058ae42af628$export$95e8d77caafa3e06 (href, _blank false)>{ if (!href) return; if (_blank) { window.open(href); return; } window.location.assign(href);};const $fc0a058ae42af628$export$267a1435fe18b8d4 (obj, path, defValue)>{ if (!path) return undefined; const pathArray Array.isArray(path) ? path : path.match(/(^.\)+/g); const result pathArray.reduce((prevObj, key)>prevObj && prevObjkey, obj); return result undefined ? defValue : result;};class $d48f9f944810f613$export$ca3218b7861b9cb0 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Button Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this._boundClickHandler this._buttonClickHandler.bind(this); } /** * Initialize Button Controller at run time * Attach handlers and events to DOM * @param {Object} options */ initialize(options {}) { try { const { document: document } this; document.body.removeEventListener(click, this._boundClickHandler); document.body.addEventListener(click, this._boundClickHandler); } catch (e) { // eslint-disable-next-line no-console console.error(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { const { document: document } this; document.body.removeEventListener(click, this._boundClickHandler); } /** * Buttons click handler * @param {event} e */ _buttonClickHandler(e) { this._handleButtonClick(e).catch((e)>console.error(e)); } /** * Handle button click * We need special function to have easy way to detach listener * @param {Event} e */ async _handleButtonClick(e) { const { window: window, document: document } this; const button e.target.closest(button, a); if (!button) return; const type button.dataset.type || ; const href button.href || button.dataset.href || ; const target button.target || ; const { submit: submit } button.dataset; if (submit) { try { await this._handleSubmit(button); } catch (err) { // eslint-disable-next-line no-console console.error(err); } (0, $fc0a058ae42af628$export$95e8d77caafa3e06)(href, target _blank); } this._trackConversion(button); if (type VIDEO) { this._handleVideoButton(button); return; } if (type CONTACT_US) { this._handleContactUsButton(button); return; } if (type SUBSCRIBE) { // TODO: Extend for an overwritten subscribe window.lpUI.showModal(modal-global-subscribe); return; } if (type MY_ACCOUNT) { // TODO: Extend for an overwritten subscribe window.lpUI.showModal(modal-global-my-account); return; } if (type SHARE_POPUP) { // TODO: Extend for an overwritten subscribe const sharePopup button.querySelector(.share-popup); if (sharePopup) sharePopup.style.display flex; e.stopPropagation(); // this may not work in current delegate mode return; } // Custom modals if (type.substring(0, 6) MODAL_) { const modalId type.substring(6); window.lpUI.showModal(`modal-${modalId}`); return; } // MAILTO / TEL Event if (href?.startsWith(mailto:)) { const email href.substring(7); // TODO: Replace with SDK method document.sendGoogleAnalyticsEvent({ hitType: event, eventCategory: button, eventAction: click, eventLabel: Email, eventValue: email }); } else if (href?.startsWith(tel:)) { const phoneNumber href.substring(4); // TODO: Replace with SDK method document.sendGoogleAnalyticsEvent({ hitType: event, eventCategory: button, eventAction: click, eventLabel: Phone, eventValue: phoneNumber }); } } /** * Handle submit * @param {HTMLButtonElement|HTMLAnchorElement} button */ async _handleSubmit(button) { const form button.closest(form); const { window: window } this; if (form) return await window.luxuryPresence.contactForms.submitForm(form); return null; } _getVimeoSrc(link) { if (!link || !link.includes(vimeo.com) || link.length > 2000) return null; const matchResult link.match(/(?:(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:^/*)\/videos\/|)|player.vimeo.com\/video\/)(\d+)(?:(?:\?.*&*h|\/)+(\d,a-f+))?/); if (!matchResult) return null; const , vimeoId, vimeoHashParameter matchResult; let src `https://player.vimeo.com/video/${vimeoId}?`; if (vimeoHashParameter) src + `h${vimeoHashParameter}&`; src + autoplay1; return src; } /** * Handle type video click * @param {HTMLElement} button */ // eslint-disable-next-line sonarjs/cognitive-complexity _handleVideoButton(button) { const { document: document } this; const section button.closest(section); // Embed youtube/vimeo video url let { src: src } button.dataset; let youtubeId ; if (src && (src.includes(youtube.com) || src.includes(youtu.be)) && !src.includes(youtube.com/embed)) { // test link: https://regexr.com/3anm9 const youtubeRegex /(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v))|youtu.be\/)(a-zA-Z0-9_-{6,11})/; const youtubeResult src.match(youtubeRegex); // eslint-disable-next-line if (youtubeResult) youtubeId youtubeResult1; } const vimeoSrc this._getVimeoSrc(src); if (youtubeId) src `https://youtube.com/embed/${youtubeId}?autoplay1&controls0`; else if (vimeoSrc) src vimeoSrc; if (!src || !section) return; const isVideoFile src.endsWith(.mp4) || src.endsWith(.webm) || src.includes(cloudinary.com); const modalHtml ` div idmodal-${section.id} classmodal visible> div classmodal-content> div classlightbox-video> div classvideo-player> div classembed-container> ${isVideoFile ? `video controls autoplay src${src}>/video>` : `iframe frameborder0 allowfullscreen1 allowaccelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture titleYouTube video player width100% height100% src${src}>/iframe>`} /div> /div> /div> /div> button classclose lp-close typebutton aria-labelclose modal>span classlp-close-icon aria-hiddentrue>/span>/button> /div> `; document.body.insertAdjacentHTML(beforeend, modalHtml); const modal document.getElementById(`modal-${section.id}`); const closeModal modal.querySelector(.close); closeModal.addEventListener(click, ()>{ modal.remove(); }); } /** * Handle type contact us click * @param {HTMLElement} button */ _handleContactUsButton(button) { const { window: window, document: document } this; // TODO: Extend for an overwritten contact us document.sendGoogleAnalyticsEvent({ hitType: event, eventCategory: button, eventAction: click, eventLabel: contact }); window.lpUI.showModal(modal-global-contact-us, { scrollLock: true }); } /** * Track conversion * @param {HTMLElement} button */ _trackConversion(button) { const { window: window, document: document } this; // Conversion Tracking Options const { gtagConversionId: gtagConversionId, gtagConversionLabel: gtagConversionLabel, fbEventName: fbEventName } button.dataset; if (gtagConversionId && gtagConversionLabel) { if (window.dataLayer && window.dataLayer.length) { const configured window.dataLayer.some((layer)>layer.length && layer0 config && layer1 gtagConversionId); if (!configured) document.sendGoogleTagManagerEvent(config, gtagConversionId); } const sentTo `${gtagConversionId}/${gtagConversionLabel}`; document.sendGoogleTagManagerEvent(event, conversion, { send_to: sentTo }); } if (window.fbq && fbEventName) window.fbq(track, fbEventName, {}); }}/* eslint-disable import/prefer-default-export */ class $68a2d4aa500c7a05$export$61ec8f2b6291ec31 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Validation Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.validatedForms ; } /** * Initialize Contact Form Controller at run time * Attach handlers and events to DOM * @param {Object} options */ initialize(options {}) { try { const { window: window, document: document } this; const { selector: selector } options; let validatedForms ; if (selector) validatedForms document.querySelectorAll(`${selector} formdata-typecontact-form`); else validatedForms document.querySelectorAll(formdata-typecontact-form); const isPhoneValidationLibRequired !!document.querySelectorAll(inputtypetel).length; // we are loading the phone validation lib from the globally defined list of libs if (isPhoneValidationLibRequired && !window.libphonenumber && window?.luxuryPresence?.libs) { const { loadJs: loadJs, jsLibsMap: jsLibsMap } window.luxuryPresence.libs; const { libphonenumber: libphonenumber } jsLibsMap; loadJs(libphonenumber.jsSrc, this.attachValidation.bind(this, validatedForms)); } else this.attachValidation(validatedForms); this.validatedForms this.validatedForms.concat(validatedForms); } catch (e) { // eslint-disable-next-line no-console console.log(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { this.validatedForms ; } /** * Validate all forms in the document * @param {NodeListOfHTMLFormElement>} forms */ attachValidation(forms) { forms.forEach((form)>{ const inputs form.querySelectorAll(input, select, textarea); inputs.forEach((input)>{ this.applyFieldValidation(input); }); }); } /** * Field Validation Handler from global context * @param {HTMLInputElement|HTMLTextAreaElement|HTMLSelectElement} inputField */ applyFieldValidation(inputField) { const fieldType inputField.getAttribute(type); if (fieldType tel) this._applyPhoneValidation(inputField); } /** * Phone Field Validation Handler * @param {HTMLInputElement} inputField */ _applyPhoneValidation(inputField) { const { window: window } this; if (window.libphonenumber) { // https://codepen.io/coinscope/pen/BaXBvBp?editors1010 const phoneUtil window.libphonenumber.isValidPhoneNumber; inputField.addEventListener(keyup, function() { if (this.hasAttribute(required) || this.value.replace(/\s/g, ).length) try { const phoneNumber this.value; const region US; const isValidNumber phoneUtil(phoneNumber, region); if (!isValidNumber) this.setCustomValidity(Please enter a valid phone number.); else this.setCustomValidity(); } catch (e) { this.setCustomValidity(Please enter a valid phone number.); } else this.setCustomValidity(); }); } }}const $2aefad83322125c9$var$homeValuationRoute /api/v1/home-valuation;class $2aefad83322125c9$export$2e2bcd8739ae039 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { destroy() { // } /** * Clean address string by removing call time frame suffix and extra whitespace * * Handles 17 templates that append , call time frame: value to the address: * - TheTrailblazerSir_2, TheMasterpiece (2x), TheInspirationSir_1, TheIconSir_3 * - Influencer, GlobalCollective, Evolution, CorcoranAgent_1 * - CompassSE (2x), CompassPrestige (2x), CompassNavigator * - ColdwellBanker (2x), Classic * * @param {string} address - Raw address string that may contain time frame info * @return {string} - Cleaned address string */ _cleanAddressString(address) { if (!address || typeof address ! string) return ; let cleaned address.trim(); // Fix 1: Handle User entered address:\n... pattern from TheProducer templates // Extract only the user entered address, ignore geocoded part if (cleaned.includes(User entered address:)) { const match cleaned.match(/User entered address:\s*\n?\s*(^\n+)/); if (match && match1) cleaned match1.trim(); } // Fix 2: Remove , call time frame: ... suffix if present (affects 17 templates) const timeFrameIndex cleaned.indexOf(, call time frame:); if (timeFrameIndex ! -1) cleaned cleaned.substring(0, timeFrameIndex).trim(); return cleaned; } /** * Transform Google Maps address components to structured format * @param {Array} addressComponents - Google Maps address components * @return {Object} - Structured address object */ _transformAddressComponents(addressComponents) { const get (t)>(addressComponents.find((c)>c.componentType t) || {}).componentName?.text; const structuredAddress {}; const streetNumber get(street_number); const streetName get(route); const state get(administrative_area_level_1); const zipcode get(postal_code); const addressLine2 get(subpremise); // explicit precedence for city const city get(locality) || get(sublocality_level_1) || get(neighborhood); if (streetNumber) structuredAddress.streetNumber streetNumber; if (streetName) structuredAddress.streetName streetName; if (city) structuredAddress.city city; if (state) structuredAddress.state state; if (zipcode) structuredAddress.zipcode zipcode; if (addressLine2) structuredAddress.addressLine2 addressLine2; return structuredAddress; } /** * Extract address and coordinates from Google Maps validation data * @param {Object} validatedAddressData - Google Maps validation result * @return {Object} - Object containing structuredAddress and coordinates */ _extractAddressAndCoordinates(validatedAddressData) { let structuredAddress null; let coordinates null; if (validatedAddressData?.result) { const { result: result } validatedAddressData; // Extract structured address components if (result.address?.addressComponents) structuredAddress this._transformAddressComponents(result.address.addressComponents); // Extract coordinates if (result.geocode?.location) coordinates { latitude: result.geocode.location.latitude, longitude: result.geocode.location.longitude }; } return { structuredAddress: structuredAddress, coordinates: coordinates }; } /** * Filter out empty string values from an object, keeping only non-empty values * @param {Object} obj - Object to filter * @return {Object} - Filtered object without empty strings */ _filterEmptyStrings(obj) { const filtered {}; for (const key, value of Object.entries(obj))if (value ! && value ! null && value ! undefined) filteredkey value; return filtered; } /** * Extract raw address from form data with priority fallback chain. * Order is critical to handle 38 home valuation templates with different field naming: * * IMPORTANT: contactForms.js (line 189) stores namemessage in comments_attributes0.text * because message is in DEFAULT_LEAD_FIELDS. Fields NOT in DEFAULT_LEAD_FIELDS go to content. * * Priority (most specific → most generic): * 1. address - Pattern 1: 9 templates (explicit address, stored in content) * 2. property-address - Pattern 3: 4 templates (dash variant with JS, stored in content) * 3. property_address - Pattern 4: 3 templates (underscore, stored in content - handles VanguardProperties!) * 4. Property_Address - Pattern 5: 1 template (capital P - TheProducer/HomeValuationRansomHouse, stored in content) * 5. comments_attributes0.text - Pattern 2: ALL 17 templates with namemessage store HERE! * (e.g., Evolution/HomeValuation, TheProducer/HomeValuation, etc.) * 6. message - Pattern 6: 4 templates with JS-populated message (rare, checked last) * 7-8. homeValuationAddress, propertyAddress - Legacy/unknown formats * * Critical: Each field is cleaned BEFORE checking, so dropdown values are skipped and we try next field * * @param {Object} data - Form data * @return {string} - Raw address string (may contain trailing text like , call time frame: ...) */ _getRawAddress(data) { const content data.activity.content || {}; const comments data.activity.comments_attributes?.0?.text; const possibleFields content.address, contentproperty-address, content.property_address, content.Property_Address, comments, content.message, content.homeValuationAddress, content.propertyAddress ; return possibleFields.map((field)>field && this._cleanAddressString(field)).find(Boolean) || ; } /** * Logs lead-related events for monitoring * @param {string} eventType - Type of event * @param {Object} data - Form data * @param {Error} error - Optional error object */ _logLeadEvent(eventType, data, error null) { const eventPayload { event: eventType, companyId: this.config.companyId, websiteId: this.config.websiteId, timestamp: new Date().toISOString(), hasEmail: !!data.activity?.author_email, hasAddress: !!this._getRawAddress(data) }; if (error) { // Use userMessage (sanitized) instead of raw message to prevent PII exposure // userMessage is set by _getUserFriendlyErrorMessage() which provides safe messages eventPayload.errorMessage error.userMessage || (error.status ? `Request failed with status ${error.status}` : An error occurred); eventPayload.errorName error.name; eventPayload.errorStatus error.status; } // Log to console with structured format for log aggregation // eslint-disable-next-line no-console console.error(`HomeValuation ${eventType}`, JSON.stringify(eventPayload)); // If PostHog is available, send event for analytics // Wrap in try/catch to prevent SDK failures from blocking submissions if (this.window.posthog) try { this.window.posthog.capture(eventType, eventPayload); } catch (posthogError) { // eslint-disable-next-line no-console console.error(HomeValuation PostHog capture failed:, posthogError); } } /** * Maps error types to user-friendly messages * @param {Error} error - The error object * @returns {string} - User-friendly message */ _getUserFriendlyErrorMessage(error) { if (error.name AbortError || error.message?.includes(timeout)) return Connection timed out. Please try again.; if (error.name TypeError && error.message?.includes(fetch)) return Unable to connect. Please check your internet connection and try again.; if (error.status 503 || error.status 502 || error.status 504) return Service temporarily unavailable. Please try again in a moment.; if (error.status 400) return Please check your information and try again.; return Something went wrong. Please try again or contact us directly.; } /** * Build formatted address string from structured address components * @param {Object} structuredAddress - Structured address object * @return {string} - Formatted address string */ _formatStructuredAddress(structuredAddress) { if (!structuredAddress || Object.keys(structuredAddress).length 0) return ; const parts ; // Line 1: streetNumber streetName addressLine2 const line1 structuredAddress.streetNumber, structuredAddress.streetName, structuredAddress.addressLine2 .filter(Boolean).join( ); parts.push(line1); // Line 2: city, state zipcode const cityState structuredAddress.city, structuredAddress.state .filter(Boolean).join(, ); const line2 cityState, structuredAddress.zipcode .filter(Boolean).join( ); parts.push(line2); return parts.filter(Boolean).join(, ); } /** * Build home valuation data object * @param {Object} data - Form data * @param {string} homeValuationEstimate - Home valuation estimate * @param {Object} structuredAddress - Structured address object * @param {Object} coordinates - Coordinates object * @return {Object} - Home valuation data object */ _buildHomeValuationData(data, homeValuationEstimate, structuredAddress, coordinates) { // Build homeValuationAddress from structured address (validated by Google) if available // Format: streetNumber streetName, city, state zipcode, addressLine2 const homeValuationAddress this._formatStructuredAddress(structuredAddress) || this._getRawAddress(data); // Validate that we have an address before proceeding if (!homeValuationAddress) throw new Error(Unable to extract home valuation address from form data); // Required fields that must always be included const requiredFields { companyId: data.companyId, homeValuationAddress: homeValuationAddress, homeValuationEstimate: homeValuationEstimate ? new Intl.NumberFormat(en-US, { style: currency, currency: USD, maximumFractionDigits: 0, minimumFractionDigits: 0 }).format(homeValuationEstimate) : null, websiteId: data.page.websiteId, sourceUrl: data.activity.source_url }; // Optional fields that will be filtered if empty const optionalFields { leadEmailAddress: data.activity.author_email, leadFullName: data.activity.author_name, leadPhoneNumber: data.activity.author_phone, parcelId: data.activity.content?.parcelId, resourceId: data.page.pageMeta?.resourceId, pageId: data.page.pageId, sourceResource: data.page.pageMeta?.sourceResource, pageElementId: data.page.pageMeta?.pageElementId, formId: data.page.pageMeta?.formId, gRecaptchaResponse: data.g_recaptcha_response, gRecaptchaAction: data.g_recaptcha_action, utmSource: data.activity.content?.utm_source, utmMedium: data.activity.content?.utm_medium, utmCampaign: data.activity.content?.utm_campaign, utmTerm: data.activity.content?.utm_term, utmContent: data.activity.content?.utm_content, utmId: data.activity.content?.utm_id, timeToSell: data.activity.content?.timeToSell, lookingToBuy: data.activity.content?.lookingToBuy, referrer: data.referrer, content: data.activity.content || {}, fields: data.fields || {} }; // Filter out empty strings from optional fields const filteredOptionalFields this._filterEmptyStrings(optionalFields); return { ...requiredFields, ...filteredOptionalFields, // Add structured address and coordinates if they exist ...structuredAddress && { address: structuredAddress }, ...coordinates && { coordinates: coordinates } }; } /** * Validate address with Google Maps * @param {string} rawAddress - Raw address string * @returns {PromiseObject|null>} - Validated address data or null * @throws {Error} - If validation fails, error is thrown with userMessage */ async _validateAddressSafely(rawAddress) { if (!rawAddress) { // eslint-disable-next-line no-console console.error(Home valuation: No address found in form data); return null; } try { return await this._validateAddressWithGoogleMaps(rawAddress); } catch (error) { // eslint-disable-next-line no-console console.error(Error validating address with Google Maps:, error); // Attach user-friendly message and throw so user sees the error error.userMessage this._getUserFriendlyErrorMessage(error); throw error; } } /** * Get home valuation estimate * @param {Object} validatedAddressData - Validated address data * @returns {Promisenumber|null>} - Home valuation estimate or null * @throws {Error} - If estimate fetch fails, error is thrown with userMessage */ async _getHomeValuationEstimateSafely(validatedAddressData) { try { return await this._getHomeValuationEstimate(validatedAddressData); } catch (error) { // eslint-disable-next-line no-console console.error(Error getting home valuation estimate:, error); // Attach user-friendly message and throw so user sees the error error.userMessage this._getUserFriendlyErrorMessage(error); throw error; } } /** * Parse response text into payload object * @param {string} text - Response text * @returns {Object} - Parsed payload */ _parseResponsePayload(text) { try { return text ? JSON.parse(text) : {}; } catch { return { raw: text }; } } /** * Create error from failed response * @param {Object} payload - Response payload * @param {number} status - HTTP status code * @returns {Error} - Error object with status and payload */ _createResponseError(payload, status) { const errorMessage payload && typeof payload object && Object.keys(payload).length ? payload.message || JSON.stringify(payload) : Request failed; const error new Error(errorMessage); // Preserve payload properties if its an object if (payload && typeof payload object && Object.keys(payload).length) Object.assign(error, payload); // Preserve numeric HTTP status - must be set after Object.assign // to ensure it takes precedence over any status in payload error.status status; return error; } /** * Submit lead to API endpoint * @param {string} leadRoute - API endpoint URL * @param {Object} homeValuationData - Data to submit * @returns {PromiseObject>} - Submission result */ async _submitLead(leadRoute, homeValuationData) { const controller new AbortController(); const timeoutId setTimeout(()>controller.abort(), 10000); try { const response await fetch(leadRoute, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(homeValuationData), signal: controller.signal }); clearTimeout(timeoutId); const text await response.text(); const payload this._parseResponsePayload(text); if (!response.ok) throw this._createResponseError(payload, response.status); if (payload && payload.status success && payload.redirectUrl) { this.window.location.href payload.redirectUrl; return { redirected: true, url: payload.redirectUrl }; } return payload; } catch (error) { clearTimeout(timeoutId); throw error; } } /** * Submit home valuation request with Google Maps validation * @param {Object} data * @return {PromiseObject>} */ async _submitHomeValuationRequest(data) { const { config: config } this; // Use websiteApiGatewayUrl from config if (!config.websiteApiGatewayUrl) throw new Error(websiteApiGatewayUrl not configured for home valuation); // Log submission started this._logLeadEvent(home_valuation_submission_started, data); try { // Validate address with Google Maps const rawAddress this._getRawAddress(data); let validatedAddressData null; try { validatedAddressData await this._validateAddressSafely(rawAddress); } catch (error) { // Error already has userMessage from _validateAddressSafely this._logLeadEvent(home_valuation_address_validation_failed, data, error); throw error; } // Get home valuation estimate let homeValuationEstimate null; try { homeValuationEstimate await this._getHomeValuationEstimateSafely(validatedAddressData); } catch (error) { // Error already has userMessage from _getHomeValuationEstimateSafely this._logLeadEvent(home_valuation_estimate_failed, data, error); throw error; } // Extract structured address and coordinates from Google Maps validation const { structuredAddress: structuredAddress, coordinates: coordinates } this._extractAddressAndCoordinates(validatedAddressData); const leadRoute `${config.websiteApiGatewayUrl}${$2aefad83322125c9$var$homeValuationRoute}`; const homeValuationData this._buildHomeValuationData(data, homeValuationEstimate, structuredAddress, coordinates); const result await this._submitLead(leadRoute, homeValuationData); // Log success this._logLeadEvent(home_valuation_submission_success, data); return result; } catch (error) { // Ensure error has user-friendly message (may already be set by helper methods) if (!error.userMessage) error.userMessage this._getUserFriendlyErrorMessage(error); this._logLeadEvent(home_valuation_submission_failed, data, error); throw error; } } /** * Validate address using Google Maps Address Validation API * @param {string} addressStr - The address string to validate * @returns {PromiseObject|null>} - Validated address data or null if validation fails */ async _validateAddressWithGoogleMaps(addressStr) { const { config: config, window: window } this; // Ensure Google Maps API key is loaded let apiKey config.googleMapsAPIKey; if (!apiKey && window.luxuryPresence?.mapApiLoader) apiKey await window.luxuryPresence.mapApiLoader.getMapApiKey(); if (!apiKey) throw new Error(Google Maps API key not configured); const controller new AbortController(); const timeoutId setTimeout(()>controller.abort(), 10000); try { const response await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key${apiKey}`, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ address: { addressLines: addressStr }, enableUspsCass: false }), signal: controller.signal }); clearTimeout(timeoutId); if (!response.ok) { const error new Error(`Address validation failed: ${response.status}`); error.status response.status; throw error; } return response.json(); } catch (error) { clearTimeout(timeoutId); throw error; } } /** * Check if structured address has all mandatory fields * @param {Object} structuredAddress - Structured address object * @return {boolean} */ _hasMandatoryAddressFields(structuredAddress) { return !!(structuredAddress.streetNumber && structuredAddress.streetName && structuredAddress.city && structuredAddress.state && structuredAddress.zipcode); } /** * Log missing mandatory address fields * @param {Object} structuredAddress - Structured address object */ _logMissingAddressFields(structuredAddress) { const missingFields ; if (!structuredAddress.streetNumber) missingFields.push(streetNumber); if (!structuredAddress.streetName) missingFields.push(streetName); if (!structuredAddress.city) missingFields.push(city); if (!structuredAddress.state) missingFields.push(state); if (!structuredAddress.zipcode) missingFields.push(zipcode); // eslint-disable-next-line no-console console.log(Home valuation estimate skipped - missing required fields:, missingFields.join(, ), Available fields:, Object.keys(structuredAddress).join(, )); } /** * Build query string from structured address * @param {Object} structuredAddress - Structured address object * @return {string} */ _buildAddressQueryString(structuredAddress) { return Object.entries(structuredAddress).map((key, value)>`${encodeURIComponent(key)}${encodeURIComponent(value)}`).join(&); } /** * GET home valuation estimate * @param {string} address * @param {Object} validatedAddressData - Google Maps validated address data * @return {Promisenumber|null>} */ async _getHomeValuationEstimate(validatedAddressData null) { const { config: config } this; if (!config.websiteApiGatewayUrl) throw new Error(websiteApiGatewayUrl not configured); const base `${config.websiteApiGatewayUrl}${$2aefad83322125c9$var$homeValuationRoute}`; // Check if we have validated address data if (!validatedAddressData?.result?.address?.addressComponents) return null; const structuredAddress this._transformAddressComponents(validatedAddressData.result.address.addressComponents); // Check if all mandatory fields exist if (!this._hasMandatoryAddressFields(structuredAddress)) { this._logMissingAddressFields(structuredAddress); return null; } // Build URL with query string const qs this._buildAddressQueryString(structuredAddress); const homeValURL `${base}?${qs}`; const controller new AbortController(); const timeoutId setTimeout(()>controller.abort(), 10000); try { const response await fetch(homeValURL, { headers: { Accept: application/json }, signal: controller.signal }); clearTimeout(timeoutId); if (!response.ok) { const error new Error(`Home valuation estimate failed: ${response.status}`); error.status response.status; throw error; } const data await response.json(); return data?.valueDollars ?? null; } catch (error) { clearTimeout(timeoutId); // Re-throw to allow retry logic to handle it throw error; } }}const $e10bd00497be8876$export$97de66002300ed70 middleName;const $e10bd00497be8876$var$GRECAPTCHA_ACTION contact_form;// Default lead fieldsconst $e10bd00497be8876$var$DEFAULT_LEAD_FIELDS name, firstName, lastName, $e10bd00497be8876$export$97de66002300ed70, email, phone, phoneNumber, source, message, mlsId, sourceUrl;class $e10bd00497be8876$export$3c5380623cf51249 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Contact Form Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.forms ; this.homeValuationService new (0, $2aefad83322125c9$export$2e2bcd8739ae039)(config, window, document); } /** * Initialize Contact Form Controller at run time * Attach handlers and events to DOM * @param {Object} options */ initialize(options {}) { try { const { document: document } this; const { selector: selector } options; let forms ; if (selector) forms document.querySelectorAll(`${selector} formdata-typecontact-form`); else forms document.querySelectorAll(formdata-typecontact-form); forms.forEach((form)>{ this._attachSubmitHandler(form); // this._attachValidation(form); }); this.forms this.forms.concat(forms); } catch (e) { // eslint-disable-next-line no-console console.log(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { this.forms ; } /** * Handle submit from global context * @param {HTMLFormElement} form */ submitForm(form) { this._handleSubmit(null, form).catch((e)>console.error(e)); } /** * Attach submit event for form * @param {HTMLFormElement} contactForm */ _attachValidation(contactForm) { const { window: window } this; const inputs contactForm.querySelectorAll(input, select, textarea); inputs.forEach((input)>{ window.luxuryPresence.validation.applyFieldValidation(input); }); } /** * Attach submit event for form * @param {HTMLFormElement} contactForm */ _attachSubmitHandler(contactForm) { contactForm.addEventListener(submit, (e)>this._handleSubmit(e, contactForm)); } /** * Extract and process form values * @param {HTMLFormElement} contactForm * @return {Object} - Processed form values */ _extractFormValues(contactForm) { const formData new FormData(contactForm); const values {}; const nameParts ; const nameKeyRegex /^name(?:-\d+)?$/; formData.forEach((value, key)>{ if (typeof value string) { const curr value.trim(); if (nameKeyRegex.test(key) && curr) nameParts.push(curr); const prev valueskey; valueskey prev ? `${prev} ${curr}` : curr; } else valueskey value; }); if (nameParts.length) values.name nameParts.join( ).trim(); else if (!values.name && values.firstName) { values.name values.firstName; if (values.lastName) values.name + ` ${values.lastName}`; } return values; } /** * Build submission data object * @param {Object} values - Form values * @param {Object} fields - Form fields * @param {string} recaptchaToken - Recaptcha token * @param {HTMLFormElement} contactForm - Form element * @return {Object} - Submission data */ _buildSubmissionData(values, fields, recaptchaToken, contactForm) { const { window: window, config: config } this; const content Object.keys(values).filter((key)>!$e10bd00497be8876$var$DEFAULT_LEAD_FIELDS.includes(key)).reduce((result, key)>{ // eslint-disable-next-line resultkey valueskey; return result; }, {}); const { pageId: pageId, companyId: companyId, websiteId: websiteId, pageMeta: pageMeta } config; const utm window.localStorage.getItem(utm_vars) || {}; const referrer window.localStorage.getItem(referrer) || ; const formId this._getFormId(contactForm); return { g_recaptcha_response: recaptchaToken, g_recaptcha_action: $e10bd00497be8876$var$GRECAPTCHA_ACTION, activity: { author_email: values.email, author_name: values.name, author_phone: values.phone || values.phoneNumber, activity_source: values.source || CONTACT_INQUIRY, comments_attributes: { text: values.message || undefined } , source_url: window.location.href, content: { ...content, ...JSON.parse(utm) } }, page: { pageId: pageId, companyId: companyId, websiteId: websiteId, pageMeta: { ...pageMeta, formId: formId } }, companyId: companyId, referrer: referrer, fields: fields }; } /** * Handle successful form submission * @param {HTMLFormElement} contactForm - Form element */ _handleSubmissionSuccess(contactForm) { const { window: window } this; const closeDelay contactForm.dataset.delay || (0, $a3e97e89bbc2a366$export$f037eeffb5561205); contactForm.classList.remove(loading); contactForm.classList.remove(error); contactForm.classList.add(success); // TODO: Review producer and classic to deprecate hide contactForm.querySelectorAll(.success).forEach((el)>el.classList.remove(hide)); contactForm.dispatchEvent(new Event(formsubmitted)); setTimeout(()>{ window.lpUI.hideClosestModal(contactForm); contactForm.reset(); window.lpUI.sideMenuHide(); contactForm.querySelectorAll(.success).forEach((el)>el.classList.add(hide)); contactForm.classList.remove(success); }, closeDelay); } /** * Submit Contact Form Handler * @param {Event} e * @param {HTMLFormElement} contactForm * @return {PromiseObject>} */ async _handleSubmit(e, contactForm) { const { config: config } this; if (e) e.preventDefault(); if (contactForm.classList.contains(loading)) // Form already submitting return; // Hide any previous error message and clear error state this._hideSubmissionError(contactForm); contactForm.classList.remove(error); contactForm.classList.add(loading); try { // Extract form values first (before async operations) const values this._extractFormValues(contactForm); // TODO: HoneyPot should still send request if (values.middleName) { contactForm.classList.remove(loading); return; } // Get reCAPTCHA token if enabled (inside try/catch to handle failures) let recaptchaToken ; if (config.recaptcha.enabled) recaptchaToken await this._recaptchaToken(); const fields this._getFields(contactForm); const data this._buildSubmissionData(values, fields, recaptchaToken, contactForm); await this._submitLeadRequest(data); this._sendGAEvent(data); this._handleSubmissionSuccess(contactForm); } catch (err) { // eslint-disable-next-line no-console console.error(Form submission failed:, err); contactForm.dispatchEvent(new Event(formsubmiterror)); contactForm.classList.remove(loading); contactForm.classList.add(error); // Show user-friendly error message if available (from home valuation service) if (err.userMessage) this._showSubmissionError(contactForm, err.userMessage); else this._showSubmissionError(contactForm, Something went wrong. Please try again.); } } /** * Get Recaptcha token for assessment * @param {Object} data * @return {Promisestring>} */ _recaptchaToken() { const { window: window, config: config } this; if (!config.recaptcha.recaptchaSiteId) { // eslint-disable-next-line no-console console.log(No recaptchaSiteId provided); return; } return new Promise((resolve, reject)>{ window.grecaptcha.enterprise.ready(()>{ window.grecaptcha.enterprise.execute(config.recaptcha.recaptchaSiteId, { action: $e10bd00497be8876$var$GRECAPTCHA_ACTION }).then((token)>resolve(token)).catch((e)>reject(e)); }); }); } /** * Alias anonymous user with canonical ID using event bus * Links the users anonymous browsing session to their canonical identity * @param {Object} data - Form submission data * @private */ _aliasUserWithEventBus(data) { try { // Check if event bus library and required methods are available if (!this.window.eventBusProvider?.alias || !this.window.eventBusProvider?.isIdentified || !this.window.eventBusProvider?.getDistinctId || !this.window.LuxuryPresenceEventBus?.generateUUIDv5FromCompanyEmail) return; // Event bus or required methods not available // Skip if user is already identified if (this.window.eventBusProvider.isIdentified()) { console.log(EventBus User already identified, skipping alias); return; } const email data.activity?.author_email; const { companyId: companyId } this.config; if (!email || !companyId) { console.warn(EventBus Missing required data for user alias); return; } // Get the anonymous distinct ID from PostHog const anonId this.window.eventBusProvider.getDistinctId(); if (!anonId) { console.warn(EventBus No anonymous ID available for alias); return; } // Generate deterministic canonical ID from company + email const canonicalId this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(companyId, email); // Create alias linking anonymous ID to canonical ID this.window.eventBusProvider.alias({ anonId: anonId, canonicalId: canonicalId }); console.log(EventBus User aliased with canonical ID); } catch (error) { // Never block form submission due to analytics errors console.error(EventBus User alias failed:, error); } } /** * Send Lead Request * @param {Object} data * @return {PromiseObject>} */ async _submitLeadRequest(data) { const { config: config } this; // Alias user with event bus before submitting the lead this._aliasUserWithEventBus(data); if (config.myhomeDashboardEnabled && (data.activity?.activity_source HOME_VALUATION || data.activity?.activity_source HOME_VALUE)) return this.homeValuationService._submitHomeValuationRequest(data); const leadRoute `${config.leadIngesterUrl}/api/v1/leads`; return fetch(leadRoute, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(data) }).then((response)>{ if (!response.ok) return response.json().then((error)>{ throw error; }); return response.json(); }); } /** * Send GA event * @param {Object} data */ _sendGAEvent(data) { const { document: document } this; let event { hitType: event, eventCategory: button, eventAction: click }; switch(data.activity.activity_source){ case NEWSLETTER_SIGNUP: event.eventLabel Newsletter; document.sendGoogleTagManagerEvent(event, newsletter_signup); break; case HOME_SEARCH: event.eventLabel HomeSearch; document.sendGoogleTagManagerEvent(event, home_search); break; case HOME_VALUE: case HOME_VALUATION: event.eventLabel HomeValue; document.sendGoogleTagManagerEvent(event, home_valuation); break; case EBOOK: event.eventLabel Ebook; document.sendGoogleTagManagerEvent(event, ebook_download); break; case CONTACT_INQUIRY: default: // for contact forms, Marketing has requested that they see a page-view of thank-you as indication of success // Note that this will break if we have actual page with url of /thank-you event { hitType: pageview, page: /thank-you }; document.sendGoogleTagManagerEvent(event, contact_inquiry); break; } document.sendGoogleAnalyticsEvent(event); } /** * Gather fields / schema for form, used for display in CRM * @param {HTMLFormElement} form * @return {Object} */ _getFields(form) { const inputs form.querySelectorAll(input, select, textarea); const fields {}; inputs.forEach((input)>{ const { id: id, name: name, type: inputType } input; if (name $e10bd00497be8876$export$97de66002300ed70) // Honeypot continue return true; let label ; if (id) { const labelNode form.querySelector(`labelfor${id}`); if (labelNode) label labelNode.textContent.trim(); else if (input.placeholder) label input.placeholder.trim(); } fieldsname { label: label, type: input.tagName, inputType: input.tagName INPUT ? inputType : text }; }); return fields; } /** * Figure out relevant section or div ID for form * @param {HTMLFormElement} form * @return {string} */ _getFormId(form) { const SELECTORS sectionid^section-, footerid, .modalid^modal-; const parent form.closest(SELECTORS); return parent?.id ? this._cleanFormId(parent.id) : ; } /** * Remove prefix from formID * @param {string} formId * @return {string} */ _cleanFormId(formId) { const PREFIXES section-, modal- ; for (const prefix of PREFIXES){ if (formId.startsWith(prefix)) return formId.substring(prefix.length); } return formId; } /** * Show submission error message on form * @param {HTMLFormElement} form * @param {string} message */ _showSubmissionError(form, message) { const errorEl form.querySelector(.submission-error-message); if (errorEl) { errorEl.textContent message || Something went wrong. Please try again.; errorEl.style.display block; } } /** * Hide submission error message on form * @param {HTMLFormElement} form */ _hideSubmissionError(form) { const errorEl form.querySelector(.submission-error-message); if (errorEl) errorEl.style.display none; }}const $ea6901fdf47e0ec1$var$CALLBACK __googleMapsCallback;const $ea6901fdf47e0ec1$var$GOOGLE_MAPS_URL https://maps.googleapis.com/maps/api/js;const $ea6901fdf47e0ec1$export$76299006759be400 1024;class $ea6901fdf47e0ec1$export$3c19195edca3fa5c extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Button Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.retries 3; this.callbacks ; this.id `__googleMapsScriptId${Date.now()}`; this._apiKey ; this.reset(); } /** * Set the Google Maps api key * @param {string} apiKey */ set apiKey(apiKey) { this._apiKey apiKey; this.config.setGoogleMapsAPIKey(apiKey); } /** * Get the Google Maps api key * @return {string} */ get apiKey() { return this._apiKey; } /** * Reset the loader state. */ reset() { this.deleteScript(); this.done false; this.loading false; this.errors ; this.onerrorEvent null; } /** * Destroy */ destroy() { this.reset(); } /** * get map api Key * @return {Promisestring>} */ async getMapApiKey() { if (this.apiKey) return this.apiKey; try { const response await fetch(`${this._getBaseUrl()}/api/v1/map`); if (!response.ok) throw new Error(Failed to fetch API key); const code await response.text(); this.apiKey code; return this.apiKey; } catch (e) { // eslint-disable-next-line no-console console.error(e); return ; } } /** * CreateUrl returns the Google Maps JavaScript API script url . * @return {string} */ async createUrl() { let url $ea6901fdf47e0ec1$var$GOOGLE_MAPS_URL; url + `?callback${$ea6901fdf47e0ec1$var$CALLBACK}`; const apiKey await this.getMapApiKey(); if (apiKey) url + `&key${apiKey}`; url + `&librariesplaces`; return url; } /** * Set the script on document. */ async setScript() { if (this.document.getElementById(this.id)) { this.callback(); return; } const url await this.createUrl(); const script this.document.createElement(script); script.id this.id; script.type text/javascript; script.src url; script.onerror this.loadErrorCallback.bind(this); script.defer true; script.async true; this.document.head.appendChild(script); } /** * Function to be called if script tag fails * @param {Error} e */ loadErrorCallback(e) { this.errors.push(e); if (this.errors.length this.retries) { const delay this.errors.length * 2 ** this.errors.length; // eslint-disable-next-line no-console console.log(`Failed to load Google Maps script, retrying in ${delay} ms.`); setTimeout(()>{ this.deleteScript(); this.setScript().catch((e)>console.error(e)); }, delay); } else { this.onerrorEvent e; this.callback(); } } /** * Delete the script tag */ deleteScript() { const script this.document.getElementById(this.id); if (script) script.remove(); } /** * Load the Google Maps JavaScript API script and return a Promise. * @return {Promise} */ load() { return this.loadPromise(); } /** * Load the Google Maps JavaScript API script and return a Promise. * @return {Promise} */ loadPromise() { return new Promise((resolve, reject)>{ this.loadCallback((err)>{ if (!err) resolve(); else reject(err); }); }); } /** * Load the Google Maps JavaScript API script with a callback. * @param {FunctionEvent>} fn */ loadCallback(fn) { this.callbacks.push(fn); this.execute(); } /** * Sets the callback function that will be sent as part of the script URL. */ setCallback() { this.window.__googleMapsCallback this.callback.bind(this); } /** * Reset if failed */ resetIfRetryingFailed() { if (this.failed) this.reset(); } /** * This is the function that we set the callback parameter to. */ callback() { this.done true; this.loading false; this.callbacks.forEach((cb)>{ cb(this.onerrorEvent); }); this.callbacks ; } /** * Set the script a if needed; set the callback */ execute() { if (this.window.google && this.window.google.maps && this.window.google.maps.version) // Google Maps already loaded this.callback(); this.resetIfRetryingFailed(); if (this.done) this.callback(); else if (this.loading) ; else { this.loading true; this.setCallback(); this.setScript().catch((e)>console.error(e)); } } /** * get base url based on current config * @return {string} */ _getBaseUrl() { // Special handling for page builder since no wag available const { isBuilder: isBuilder, websiteApiGatewayUrl: websiteApiGatewayUrl } this.config; return isBuilder ? websiteApiGatewayUrl : ; } /** * Resize static map requests to the max 1024px while preserving aspect ratio * @param {number} width * @param {number} height * @return {{width, height}} */ resizeStaticMapDimensions(width, height) { if (width $ea6901fdf47e0ec1$export$76299006759be400 && height $ea6901fdf47e0ec1$export$76299006759be400) return { width: width, height: height }; // Size param ignored if dimensions exceed STATIC_MAP_MAX_DIM const ratio Math.min($ea6901fdf47e0ec1$export$76299006759be400 / width, $ea6901fdf47e0ec1$export$76299006759be400 / height); return { width: parseInt(width * ratio), height: parseInt(height * ratio) }; } /** * Convert theme to static api param object * @param {Object} theme * @return {Object} */ convertThemeToStaticApiUrl(theme) { // https://developers.google.com/maps/documentation/maps-static/style-reference // Google Maps Static API uses a special syntax for its urls based on the interactive map styles return theme.map((t)>{ const styles t.stylers.reduce((acc, s)>{ const visibility s.visibility ? `visibility:${s.visibility}` : ; const color s.color ? `color:${s.color.replace(#, 0x)}` : ; const lightness s.lightness ? `lightness:${s.lightness}` : ; return `${acc}|${visibility}${color}${lightness}`; }, ); const element t.elementType ? `|element:${t.elementType}` : ; return `feature:${t.featureType}${element}${styles}`; }); } /** * generate digital signature for url * @param {string} queryString to sign * @return {Promisestring>} digitally signed url */ async getMapApiSignedUrl(queryString) { try { const response await fetch(`${this._getBaseUrl()}/api/v1/map/signature?${queryString}`); if (!response.ok) throw new Error(Failed to fetch signed URL); const { url: url } await response.json(); return url; } catch (e) { // eslint-disable-next-line no-console console.error(e); return ; } } /** * Generate static map url * @param {number} lat * @param {number} lng * @param {number} zoom * @param {Object} theme * @param {number} srcWidth * @param {number} srcHeight * @return {string} */ generateStaticMapUrl(lat, lng, zoom, theme, srcWidth, srcHeight) { const baseUrl https://maps.googleapis.com/maps/api/staticmap; const { width: width, height: height } this.resizeStaticMapDimensions(srcWidth, srcHeight); const query { center: `${lat},${lng}`, zoom: zoom, scale: 2, size: `${width}x${height}`, key: this.apiKey }; if (theme) query.style this.convertThemeToStaticApiUrl(theme); const params new URLSearchParams(); Object.entries(query).forEach((key, value)>{ if (Array.isArray(value)) value.forEach((v)>params.append(key, v.toString())); else params.append(key, value.toString()); }); return `${baseUrl}?${params.toString()}`; } /** * Generate static map url with digital signature * @param {Object} { * srcWidth {number}, required * srcHeight {number}, required * theme {array}, * center: `${lat},${lng}`, required * zoom: number, required * markers: `${lat},${lng}`, * scale: number, * otherQueryParams... (these must match what is compatible with google maps static api query params) * } * @return {Promisestring>} digitally signed url */ async generateDigitallySignedStaticMapUrl({ srcWidth: srcWidth, srcHeight: srcHeight, theme: theme, ...query }) { const { width: width, height: height } this.resizeStaticMapDimensions(srcWidth, srcHeight); const queryParams { ...query, size: `${width}x${height}` }; if (theme) queryParams.style this.convertThemeToStaticApiUrl(theme); const params new URLSearchParams(); Object.entries(queryParams).forEach((key, value)>{ if (Array.isArray(value)) value.forEach((v)>params.append(key, v.toString())); else params.append(key, value.toString()); }); const queryString params.toString(); try { // fetch digitally signed url return await this.getMapApiSignedUrl(queryString); } catch (e) { console.error(e); return ; } }}/* eslint-disable import/prefer-default-export */ class $0a0ad49f13c0b8fd$export$ba9afeb75f20f616 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { // constructor is not needed as it is inherited from BaseController /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() {} /** * Places (re-places) a value into the query string under specified key * or removes it if new value is null or undefined * @param {string} key * @param {string|null|undefined|object|array} value * @param {string} url - defaults to window.location.href * @return {string} */ // eslint-disable-next-line sonarjs/cognitive-complexity updateQueryString(key, value, url) { // https://stackoverflow.com/questions/5999118/how-can-i-add-or-update-a-query-string-parameter if (!url) // eslint-disable-next-line url this.window.location.href; let re new RegExp(`(?&)${key}.*?(&|#|$)`, i); let replacement ; if (typeof value ! undefined && value ! null) { if (Array.isArray(value)) { if (value.length) replacement this.serializeArray(key, value); } else if (typeof value object) { re new RegExp(`(?&)${key}\\^*\\.*?(&|#|$)`, i); replacement this.serializeObj(value, , key); } else replacement `${key}${encodeURIComponent(value)}`; } const hash url.split(#); let result hash0; if (re.test(url)) { let clean result; replacement replacement ? `$1${replacement}$2` : $1; while(re.test(clean)){ result clean.replace(re, replacement); clean clean.replace(re, $1); } result result.replace(/(&|\?)$/, ); } else if (replacement) { const separator result.indexOf(?) ! -1 ? & : ?; result + `${separator}${replacement}`; } if (typeof hash1 ! undefined && hash1 ! null) result + `#${hash1}`; return result; } /** * Returns variable from query string specified by parameter name * @param {string} name * @param {string} url defaults to window.location.href * @return {string|null} */ getParameterByName(name, url) { if (!url) // eslint-disable-next-line url this.window.location.href; // eslint-disable-next-line name name.replace(/\/g, \\$&); const regex new RegExp(`?&${name}((^*)|&|#|$)`); let results Array.from(RegExp.prototypeSymbol.matchAll.call(regex, url)).flat(); // check for object like syntax where the last value can be an array eg. advancedFiltersquerystatusIdsin0 or advancedFiltersquerycity if (!results.length) { const objRegex new RegExp(`?&${name}(\\.*?\\)(.*?)(?&|#|$)`, g); results Array.from(RegExp.prototypeSymbol.matchAll.call(objRegex, url)).flat(); return this._parseParamToObject(results, name advancedFilters); } // For multiple param values, eg arrays /* Results from regex match all come in this form: &advancedFiltersquerystatusIdsinuuid-segundo-123, querystatusIdsin, uuid-segundo-123 So using every third value will be the actual value and the second value will be the path */ if (results.length > 3) return results.reduce((acc, value, index)>{ if ((index + 1) % 3 0) acc.push(decodeURIComponent(value.replace(/\+/g, ))); return acc; }, ); if (!results2) return ; return decodeURIComponent(results2.replace(/\+/g, )); } /** * Generates section specific key to store page number in the URL * @param {string} sectionDomId * @return {string} */ makePageKey(sectionDomId) { return sectionDomId.replace(section-, ).replace(/-/g, ); } /** * Generates specific key to store parameter in the URL * uses prevsiouly calculated baseKey for section specific parameters * @param {Object} formParam * @param {string} baseKey pre-calculated base for section specific parameters * @return {string} */ makeParamKey(formParam, baseKey) { return formParam.global ? formParam.urlKey : `${baseKey}-${formParam.urlKey}`; } /** * Gets a set of parameters from window query string * always returns value of page parameter if present * @param {Object} formConfig * @param {string} sectionDomId * @return {Object} */ deserializeParams(formConfig, sectionDomId) { const params {}; const urlPageKey this.makePageKey(sectionDomId); const page this.getParameterByName(urlPageKey); if (page) params.page parseInt(page); if (Array.isArray(formConfig)) formConfig.forEach((formParam)>{ const key this.makeParamKey(formParam, urlPageKey); let urlValue this.getParameterByName(key); if (formParam.type int) { urlValue parseInt(urlValue); // eslint-disable-next-line if (!isFinite(urlValue)) urlValue null; } else if (formParam.type bool || formParam.type boolean) urlValue // eslint-disable-next-line urlValue true ? true : urlValue false ? false : null; else if (formParam.type json) try { urlValue JSON.parse(urlValue); } catch (e) { // no need to do anything } paramsformParam.formKey || formParam.param urlValue; }); return params; } /** * Serializes set of parameters defined by formConfig into the URL * adding or replacing or removing required parameters * @param {Object} formConfig * @param {string} sectionDomId * @param {Object} params * @return {string} */ serializeParams(formConfig, sectionDomId, params) { let result this.window.location.href; const urlPageKey this.makePageKey(sectionDomId); result this.updateQueryString(urlPageKey, params.page, result); if (Array.isArray(formConfig)) formConfig.forEach((formParam)>{ const key this.makeParamKey(formParam, urlPageKey); let value paramsformParam.formKey || formParam.param; if (formParam.type json && value ! null && typeof value ! undefined) value JSON.stringify(value); result this.updateQueryString(key, value, result); }); return result; } /** * Formats small number for slider values * @param {number} value * @param {string} currency * @return {string} */ formatSliderAtom(value, currency ) { const formattedValue Number.isInteger(value) ? value : value.toFixed(2); return currency + formattedValue; } /** * Formats a number for slider values * @param {number} value * @param {string} currency * @param {string} delimiter * @return {string} */ formatSliderValue(value, currency , delimiter ) { if (value 1000) return this.formatSliderAtom(value, currency); if (value 1000000) return `${this.formatSliderAtom(value / 1000, currency)}${delimiter}K`; return `${this.formatSliderAtom(value / 1000000, currency)}${delimiter}M`; } /** * Format price slider range * @param {number} value * @param {Object} range * @param {string} currency * @param {Object} options * @return {string} */ formatSliderPriceRange(value, range, currency, options) { if (range.min value && value ! 0) return `${options.lowPrefix}${this.formatSliderValue(value, currency, )}`; if (range.max value) return `${this.formatSliderValue(value, currency, )}${options.highSuffix}`; return `${this.formatSliderValue(value, currency, )}`; } /** * Format area slider range * @param {number} value * @param {Object} range * @param {string} suffix * @param {Object} options * @return {string} */ formatSliderAreaRange(value, range, suffix, options) { if (range.min value && value ! 0) return `${options.lowPrefix}${this.formatSliderValue(value)} ${suffix}`; if (range.max value) return `${this.formatSliderValue(value)}${options.highSuffix} ${suffix}`; return `${this.formatSliderValue(value)} ${suffix}`; } /** * Utility function to get properties search parameters from a set of jQuery objects * @param {Object} options * @param {jQuery|HTMLElement} options.queryElement * @param {jQuery|HTMLElement} options.priceSliderElement * @param {jQuery|HTMLElement} options.areaSliderElement * @param {jQuery|HTMLElement} options.neighborhoodSelect * @return {Object} */ // eslint-disable-next-line sonarjs/cognitive-complexity getSearchFormValues(options) { const { queryElement: queryElement, priceSliderElement: priceSliderElement, areaSliderElement: areaSliderElement, neighborhoodSelect: neighborhoodSelect } options; const result {}; if (queryElement) result.search queryElement.value || null; if (priceSliderElement) { const priceValues priceSliderElement.value.split(;); const priceMinLimit parseInt(priceSliderElement.dataset.min); const priceMaxLimit parseInt(priceSliderElement.dataset.max); const priceMin parseInt(priceValues0); const priceMax parseInt(priceValues1); result.priceMin priceMin ! priceMinLimit ? priceMin : null; result.priceMax priceMax ! priceMaxLimit ? priceMax : null; } if (areaSliderElement) { const areaValues areaSliderElement.value.split(;); const areaMinLimit parseInt(areaSliderElement.dataset.min); const areaMaxLimit parseInt(areaSliderElement.dataset.max); const areaMin parseInt(areaValues0); const areaMax parseInt(areaValues1); result.areaMin areaMin ! areaMinLimit ? areaMin : null; result.areaMax areaMax ! areaMaxLimit ? areaMax : null; } if (neighborhoodSelect) result.neighborhoodId neighborhoodSelect.value || null; return result; } /** * Add supports for object typeof values to be encoded on URL * Ref: https://stackoverflow.com/questions/1714786/query-string-encoding-of-a-javascript-object * @param {*} obj * @param {string} prefix * @param {string} baseParam used for grouping in case of nested objects * @returns */ // eslint-disable-next-line sonarjs/cognitive-complexity serializeObj(obj, prefix , baseParam ) { const result ; for(const prop in obj)if (obj.hasOwnProperty(prop)) { const value objprop; let k; if (baseParam) { const newPrefix prefix ? `${prefix}${prop}` : `${prop}`; k `${baseParam}${newPrefix}`; } else k prefix ? `${prefix}${prop}` : prop; if (value ! null && Array.isArray(value)) { if (value.length) result.push(this.serializeArray(k, value)); } else if (value ! null && typeof value object) result.push(this.serializeObj(value, k)); else result.push(`${k}${encodeURIComponent(value)}`); } return result.join(&); } /** * Adds support for array values to be encoded on URL * @param {string} key * @param {Array} value * @param {string} baseParam */ serializeArray(key, value, baseParam ) { const result ; value.forEach((val)>{ const paramName baseParam ? `${baseParam}${key}` : key; result.push(`${paramName}${encodeURIComponent(val)}`); }); return result.join(&); } /** * Private method to process string search values. * @param {Array} results comes from regex matchAll. * @param {Boolean} isAdvancedFilters flag to determine if the search is for advanced filters. * @returns */ _parseParamToObject(results, isAdvancedFilters false) { if (!results.length) return null; const obj {}; for(let i 0; i results.length; i++)/* Results from regex match all come in this form: &advancedFiltersquerystatusIdsinuuid-segundo-123, querystatusIdsin, uuid-segundo-123 So using every third value will be the actual value and the second value will be the path */ if ((i + 1) % 3 0) { const value decodeURIComponent(resultsi.replace(/\+/g, )); const path resultsi - 1; Object.assign(obj, this._setObjectPath(path, value, obj, isAdvancedFilters)); } return obj; } /** * * Private method to set object value given a path * @param {String} path * @param {*} value * @param {Object} baseObj * @param {Boolean} isAdvancedFilters flag to determine if the search is for advanced filters. */ _setObjectPath(path, value, baseObj, isAdvancedFilters false) { // eslint-disable-next-line const keys path.split(/\\/).filter(Boolean); const afArrayKeys in, nin, btw, ciin, cinin ; const obj {}; let ref obj; const valueExists (0, $fc0a058ae42af628$export$267a1435fe18b8d4)(baseObj, keys.join(.)); keys.forEach((key, index)>{ if (index keys.length - 1) { if (valueExists) refkey Array.isArray(valueExists) ? ...valueExists, value : valueExists, value ; else refkey isAdvancedFilters && afArrayKeys.includes(key) ? value : value; } else { refkey baseObjkey ? baseObjkey : {}; ref refkey; } }); return obj; }}/* eslint-disable import/prefer-default-export */ class $2b1790aa32f109d1$export$43e435c053a109f6 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Expand Slider Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this._createLightbox this._createLightbox.bind(this); this.expandSliders ; } /** * Initialize Expand Slider Controller at run time * Attach handlers and events to DOM * @param {Object} options */ initialize(options {}) { try { const { document: document } this; const expandSliders document.querySelectorAll(.has-mobile-expand); expandSliders.forEach((block)>{ this._addExpandButton(block); }); this.expandSliders this.expandSliders.concat(expandSliders); } catch (e) { // eslint-disable-next-line no-console console.log(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { const { document: document } this; document.querySelectorAll(.lp-expand-btn, .lp-expand-btn-wrapper).forEach((element)>element.remove()); this.expandSliders ; } /** * Create expand button for sliders * @param {HTMLElement} slider */ _addExpandButton(slider) { const { document: document } this; const section slider.closest(sectionid); const appendTargetSelector slider.dataset.append; let expandBtn section.querySelector(.lp-expand-btn); if (!expandBtn) { expandBtn document.createElement(button); expandBtn.className lp-expand-btn; expandBtn.setAttribute(aria-label, Open a lightbox); expandBtn.innerHTML `span classlp-i lp-i--expand-alt aria-hiddentrue>/span>`; if (appendTargetSelector) { const appendTarget section.querySelector(appendTargetSelector); if (appendTarget) appendTarget.appendChild(expandBtn); } else { const wrapper document.createElement(div); wrapper.className lp-expand-btn-wrapper; wrapper.style.position relative; wrapper.appendChild(expandBtn); slider.parentNode.insertBefore(wrapper, slider.nextSibling); } } expandBtn.addEventListener(click, ()>{ this._createLightbox({ slider: slider, section: section }); }); } /** * Creates a lightbox modal for displaying slider images in a larger view. * * @param {Object} params - The parameters for the function. * @param {HTMLElement} params.slider - The slider element containing images. * @param {HTMLElement} params.section - The section element related to the slider. * @param {number} params.initialIndex - Optional index of the image to show initially. */ _createLightbox({ slider: slider, section: section, initialIndex: initialIndex }) { const { window: window, document: document } this; const modalId `lightbox-for-${section?.id}`; const isSlickAvailable window.$ && window.$.fn.slick; const isSectionSlickInitialized isSlickAvailable && slider.slick; const isSplideAvailable typeof window.Splide function; const isSectionSplideInitialized slider.classList.contains(is-initialized) && slider.classList.contains(splide); if (typeof window.lpUI.requestScrollLock function) window.lpUI.requestScrollLock(modalId); else document.body.style.overflow hidden; function createSlickLightbox() { const slickOverlayOptions { arrows: true, dots: false, infinite: true, draggable: true, prevArrow: button typebutton classlp-lightbox-arrow--prev lp-lightbox-arrow aria-labelPrevious>/button>, nextArrow: button typebutton classlp-lightbox-arrow--next lp-lightbox-arrow aria-labelNext>/button> }; const modal document.createElement(div); modal.id modalId; modal.className lp-lightbox; modal.setAttribute(tabindex, -1); modal.setAttribute(role, dialog); modal.setAttribute(aria-modal, true); modal.innerHTML ` button classlp-lightbox__close aria-labelclose modal>/button> div classlp-lightbox__content> div classlp-lightbox__carousel>/div> /div> `; document.body.appendChild(modal); const overlaySlider modal.querySelector(.lp-lightbox__carousel); modal.classList.add(show); let sourceImages; if (isSectionSlickInitialized) { sourceImages slider.slick.$slides.find(img); slickOverlayOptions.initialSlide slider.slick?.currentSlide || 0; sourceImages.each(function() { window.$(.lp-lightbox__carousel).append(window.$(this).clone(false).removeAttr(style).wrap(div classlp-lightbox__slide>/div>).parent()); }); } else { sourceImages slider.querySelectorAll(img); sourceImages.forEach((img)>{ const imgClone img.cloneNode(true); imgClone.removeAttribute(style); const slide document.createElement(div); slide.className lp-lightbox__slide; slide.appendChild(imgClone); overlaySlider.appendChild(slide); }); } window.$(overlaySlider).slick(slickOverlayOptions); // Focus modal after its created setTimeout(()>{ modal.focus(); }, 100); // Keyboard navigation handler const handleKeydown (e)>{ if (!modal.classList.contains(show)) return; const prevArrow modal.querySelector(.lp-lightbox-arrow--prev); const nextArrow modal.querySelector(.lp-lightbox-arrow--next); const closeBtn modal.querySelector(.lp-lightbox__close); if (e.key ArrowLeft && prevArrow) { e.preventDefault(); prevArrow.click(); } else if (e.key ArrowRight && nextArrow) { e.preventDefault(); nextArrow.click(); } else if (e.key Escape && closeBtn) { e.preventDefault(); closeBtn.click(); } }; document.addEventListener(keydown, handleKeydown); modal.querySelector(.lp-lightbox__close).addEventListener(click, ()>{ document.removeEventListener(keydown, handleKeydown); modal.classList.remove(show); const currentSlide overlaySlider?.slick ? window.$(overlaySlider).slick(slickCurrentSlide) : 0; if (overlaySlider?.slick) window.$(overlaySlider).slick(unslick); if (isSectionSlickInitialized) window.$(slider).slick(slickGoTo, currentSlide); if (typeof window.lpUI.releaseScrollLock function) window.lpUI.releaseScrollLock(modalId); else document.body.style.overflow ; modal.remove(); }); } function createSplideLightbox() { const splideOptions { rewind: true, arrows: true, arrowPath: , type: loop, clones: 1, pagination: false, perPage: 1, perMove: 1 }; const modal document.createElement(div); modal.id modalId; modal.className lp-lightbox; modal.setAttribute(tabindex, -1); modal.setAttribute(role, dialog); modal.setAttribute(aria-modal, true); modal.innerHTML ` button classlp-lightbox__close aria-labelclose modal>/button> div classlp-lightbox__content> div classlp-lightbox__carousel splide rolegroup aria-labelImage Gallery> div classsplide__arrows> button classsplide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev>/button> button classsplide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next>/button> /div> div classsplide__track> ul classsplide__list>/ul> /div> /div> /div> `; if (typeof window.lpUI.requestScrollLock function) window.lpUI.requestScrollLock(modalId); else document.body.style.overflow hidden; document.body.appendChild(modal); const overlaySlider modal.querySelector(.lp-lightbox__carousel); const overlaySliderList overlaySlider.querySelector(.splide__list); modal.classList.add(show); let sourceImages; if (isSectionSplideInitialized) sourceImages slider.querySelectorAll(.splide__slide:not(.splide__slide--clone) img); else sourceImages slider.querySelectorAll(img); sourceImages.forEach((img)>{ const imgClone img.cloneNode(true); imgClone.removeAttribute(style); const slide document.createElement(li); slide.className lp-lightbox__slide splide__slide; slide.appendChild(imgClone); overlaySliderList.appendChild(slide); }); const overlaySplide new window.Splide(overlaySlider, splideOptions); overlaySplide.mount(); // Navigate to initial index if provided if (typeof initialIndex ! undefined && initialIndex > 0) overlaySplide.go(initialIndex); // Focus modal after its created and mounted setTimeout(()>{ modal.focus(); }, 100); // Keyboard navigation handler const handleKeydown (e)>{ if (!modal.classList.contains(show)) return; const prevArrow modal.querySelector(.splide__arrow--prev); const nextArrow modal.querySelector(.splide__arrow--next); const closeBtn modal.querySelector(.lp-lightbox__close); if (e.key ArrowLeft && prevArrow) { e.preventDefault(); prevArrow.click(); } else if (e.key ArrowRight && nextArrow) { e.preventDefault(); nextArrow.click(); } else if (e.key Escape && closeBtn) { e.preventDefault(); closeBtn.click(); } }; document.addEventListener(keydown, handleKeydown); modal.querySelector(.lp-lightbox__close).addEventListener(click, ()>{ document.removeEventListener(keydown, handleKeydown); modal.classList.remove(show); if (overlaySplide) overlaySplide.destroy(); if (typeof window.lpUI.releaseScrollLock function) window.lpUI.releaseScrollLock(modalId); else document.body.style.overflow ; modal.remove(); }); } if (isSlickAvailable && !isSectionSplideInitialized) createSlickLightbox(); else if (isSplideAvailable) createSplideLightbox(); else { window.luxuryPresence.libs.loadCss(window.luxuryPresence.libs.jsLibsMap.splide.cssSrc); window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.splide.jsSrc, ()>{ createSplideLightbox(); window.luxuryPresence.libs.jsLibsMap.splide.isLoaded true; }); } }}/* eslint-disable import/prefer-default-export */ class $4f184d9bd3037f15$export$7a6215890afba974 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { // constructor is not needed as it is inherited from BaseController /** * Destroy */ destroy() { if (!this.window.divolte) this.window.divolteLp function() { (this.window.divolteLp.q this.window.divolteLp.q || ).push(// eslint-disable-next-line prefer-rest-params arguments); }; } /** * Initialize divolte controller * @param {Object} options */ initialize(options {}) { const { divolteServiceUrl: divolteServiceUrl } this.config; if (!divolteServiceUrl || this.window.divolte) return; this.loadScript(); } /** * loads divolte */ loadScript() { const { divolteServiceUrl: divolteServiceUrl } this.config; const script this.document.createElement(script); script.id divolte-script; script.type text/javascript; script.defer true; script.async true; script.src `${divolteServiceUrl}/divolte.js`; this.document.head.appendChild(script); script.addEventListener(load, this.executeQueue.bind(this)); } /** * executeQueue */ executeQueue() { (this.window.divolteLp.q || ).forEach((methodName, params)>{ thismethodName(params); }); this.window.divolteLp this.divolteLp.bind(this); } /** * divolteLp * @param {string} name * @param {Object} params */ divolteLp(name, params) { try { thisname(params); } catch (error) { // eslint-disable-next-line no-console console.log(error); } } /** * sendLpEvent * @param {string} name * @param {Object} params */ sendLpEvent(name, params) { // Events must be defined in divolte schema! To ensure correct usage, event names are validated here. if (!name.includes(pageView)) { // Event not defined // eslint-disable-next-line no-console console.log(`${name} IS NOT SUPPORTED`); return; } const { companyId: companyId, templateId: templateId, websiteId: websiteId, pageId: pageId, shareId: shareId, pageMeta: pageMeta } this.config; const baseParams { companyId: companyId, templateId: templateId, websiteId: websiteId, pageId: pageId, shareId: shareId, pageMeta: pageMeta }; this.window.divolte.signal(name, Object.assign(baseParams, params)); } /** * sendLpPageView */ sendLpPageView() { this.sendLpEvent(pageView, {}); }}/* eslint-disable import/prefer-default-export */ const $102039871668a1df$var$EVENT_BUS_SCRIPT event-bus-js.js;const $102039871668a1df$var$EVENT_BUS_VERSION v2.1.0;class $102039871668a1df$export$e22e4b1be0bb6c61 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { // eslint-disable-next-line @typescript-eslint/no-useless-constructor constructor(config, window, document){ super(config, window, document); } /** * Initialize EventBus controller * @param {Object} options */ initialize(options {}) { const enabled options.enabled ! undefined ? options.enabled : this.config.eventBus?.enabled; if (enabled && this.config.eventBus?.apiKey && this.config.eventBus?.url) this.loadScript(); } /** * loads eventBus script */ loadScript() { const { eventBusUrl: eventBusUrl } this.config; const script this.document.createElement(script); script.id posthog-script; script.type text/javascript; script.defer true; script.async true; script.src `${eventBusUrl}/${$102039871668a1df$var$EVENT_BUS_VERSION}/${$102039871668a1df$var$EVENT_BUS_SCRIPT}`; this.document.head.appendChild(script); script.addEventListener(load, this.executeQueue.bind(this)); } /** * executeQueue - Process queued eventBusLp calls */ executeQueue() { // Initialize the event bus provider using the global EventBusJS if (this.window.LuxuryPresenceEventBus) this.window.eventBusProvider this.window.LuxuryPresenceEventBus.createEventBusProvider({ apiKey: this.config.eventBus.apiKey, url: this.config.eventBus.url }); (this.window.eventBusLp.q || ).forEach((methodName, params)>{ thismethodName(params); }); // Replace queue function with real function this.window.eventBusLp this.eventBusLp.bind(this); } /** * Destroy */ destroy() { if (!this.window.eventBusProvider) { // Reset to queue function if no provider exists this.window.eventBusLp function() { (this.window.eventBusLp.q this.window.eventBusLp.q || ).push(// eslint-disable-next-line prefer-rest-params arguments); }; return; } this.window.eventBusProvider.shutdown(); } /** * sendLpEvent * @param {string} eventType * @param {Object} data */ sendLpEvent(eventType, data) { // Events must be defined in event-bus schema! To ensure correct usage, event types are validated here. if (eventType ! user.activity.page.viewed) { // Event type not defined // eslint-disable-next-line no-console console.log(`${eventType} IS NOT SUPPORTED`); return; } if (!this.window.eventBusProvider) return; const { companyId: companyId } this.config; const eventData { company: companyId, data: {} }; try { this.window.eventBusProvider.capture(eventType, eventData); } catch (error) { // eslint-disable-next-line no-console console.log(EventBus capture error:, error); } } /** * eventBusLp * @param {string} name * @param {Object} params */ eventBusLp(name, params) { try { thisname(params); } catch (error) { // eslint-disable-next-line no-console console.log(error); } } /** * sendLpPageView */ sendLpPageView() { this.sendLpEvent(user.activity.page.viewed, {}); }}/* eslint-disable import/prefer-default-export */ const $0d25a3fa2e0f4f92$var$EVENT_NAME oauthSuccess;class $0d25a3fa2e0f4f92$export$b718a981691eae5c extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Button Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.successListeners ; this._listenToMessages this._listenToMessages.bind(this); this._listenToOneTapMessage this._listenToOneTapMessage.bind(this); } /** * Initialize OAuth Controller at run time * Swap out special buttons for the iframe * @param {Object} options */ initialize(options {}) { try { // handle google one tap if (options.googleSignOnEnabled && !options.iframe) this._renderGoogleOneTap(); // handle google sign in buttons this.document.querySelectorAll(divdata-signin-typegoogle-sign-in).forEach((el)>this._convertGoogleSignIn(el)); // handle facebook sign in buttons this.document.querySelectorAll(divdata-signin-typefacebook-sign-in).forEach((el)>this._convertFacebookSignIn(el)); } catch (e) { // eslint-disable-next-line no-console console.log(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { this.successListeners.forEach((callback)>{ this.window.removeEventListener(message, this._listenToMessages); this.window.removeEventListener(message, this._listenToOneTapMessage); this.window.removeEventListener($0d25a3fa2e0f4f92$var$EVENT_NAME, this.windowcallback); }); } /** * Convert google one tap */ _renderGoogleOneTap() { if (!this._isGoogleOneTapOnCooldown()) { const dummyEl this.document.createElement(div); // eslint-disable-next-line no-undef google.accounts.id.initializeIntermediate({ src: this._buildUrlAndCopyAttributes(dummyEl, dummyEl, googleOneTap) }); this.window.localStorage.removeItem(googleOneTapExpiration); this.window.addEventListener(message, this._listenToOneTapMessage); } } /** * Listening for messages from BSS one tap iframes * @param {MessageEvent} e */ _listenToOneTapMessage(e) { const messageTypes { SHOW_INTERMEDIATE_IFRAME: show_intermediate_iframe, HIDE_INTERMEDIATE_IFRAME: hide_intermediate_iframe }; const iframeId onetap_google_intermediate_iframe; const { buyerSellerServiceUrl: buyerSellerServiceUrl } this.config; const { data: data, origin: origin } e; const { type: type, height: height, event: event, source: source, token: token } data; if (type messageTypes.SHOW_INTERMEDIATE_IFRAME || type messageTypes.HIDE_INTERMEDIATE_IFRAME) { const bssIframe this.document.getElementById(iframeId); if (bssIframe) { bssIframe.style.height height; bssIframe.style.display type messageTypes.SHOW_INTERMEDIATE_IFRAME ? unset : none; } } // these events are generated by our code in the bss iframe if (origin buyerSellerServiceUrl && source GOOGLE_SIGN_ON) { if (event success) { this._setExpirationLsItem(86400000); // 24 hours this._handleQualifyingQuestionsModal(token); } else if (event cancel) this._setExpirationLsItem(7200000); // 2 hours } } /** * Set expiration local storage item for google one tap * @param {number} ms */ _setExpirationLsItem(ms) { const expiration new Date().getTime() + ms; this.window.localStorage.setItem(googleOneTapExpiration, expiration); } /** * Check if google one tap is expired * @return {boolean} */ _isGoogleOneTapOnCooldown() { const expirationTime this.window.localStorage.getItem(googleOneTapExpiration); return Number(expirationTime) > new Date().getTime(); } /** * Convert google sign in buttons * @param {HTMLElement} el */ _convertGoogleSignIn(el) { this._replaceWithIframe(googleSignIn, el); } /** * Convert google sign in buttons * @param {HTMLElement} el */ _convertFacebookSignIn(el) { this._replaceWithIframe(facebookSignIn, el); } /** * Convert google sign in buttons * @param {googleSignIn | facebookSignIn} provider * @param {HTMLElement} el */ _replaceWithIframe(provider, el) { this._attachSuccessCallback(el); const iframe this.document.createElement(iframe); iframe.src this._buildUrlAndCopyAttributes(el, iframe, provider); iframe.dataset.isSocialOauthButton true; el.replaceWith(iframe); } /** * Listening for messages from BSS iframes * @param {Event} e */ _listenToMessages(e) { const { buyerSellerServiceUrl: buyerSellerServiceUrl } this.config; // eslint-disable-next-line sonarjs/no-collapsible-if if (e.origin buyerSellerServiceUrl) { if (e.data.event success) { const event new Event($0d25a3fa2e0f4f92$var$EVENT_NAME); this.window.dispatchEvent(event); this.successListeners.forEach((callback)>{ if (this.windowcallback) this.windowcallback(event); else // eslint-disable-next-line no-console console.error(`Callback function ${callback} not found on window object`); }); this.document.documentElement.classList.add(is-login-success); } } } /** * Attach callback to iframe * @param {HTMLElement} el */ _attachSuccessCallback(el) { this.window.addEventListener(message, this._listenToMessages); const callbackFunction el.dataset.onSuccessFunctionName; if (callbackFunction) this.successListeners.push(callbackFunction); } /** * Build Iframe URL * @param {HTMLElement} source * @param {HTMLElement} target * @param {string} provider * @return {string} */ _buildUrlAndCopyAttributes(source, target, provider) { const { buyerSellerServiceUrl: buyerSellerServiceUrl, companyId: companyId, websiteId: websiteId, pageId: pageId, pageMeta: pageMeta } this.config; const { location: location } this.window; const sourceUrl location.origin + location.pathname; const destination new URL(`${buyerSellerServiceUrl}/buttons/${provider}`); const utm this.window.localStorage.getItem(utm_vars); const referrer this.window.localStorage.getItem(referrer); destination.searchParams.append(companyId, companyId); destination.searchParams.append(websiteId, websiteId); destination.searchParams.append(pageId, pageId); destination.searchParams.append(sourceUrl, sourceUrl); destination.searchParams.append(pageMeta, JSON.stringify(pageMeta)); if (utm) destination.searchParams.append(utm, utm); if (referrer) destination.searchParams.append(referrer, referrer); // Google and Facebook Attributes used to style the social button const RESERVED_ATTRIBUTES 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 ; Array.from(source.attributes).forEach((attribute)>{ if (RESERVED_ATTRIBUTES.includes(attribute.nodeName)) destination.searchParams.append(attribute.nodeName, attribute.nodeValue); else target.setAttribute(attribute.nodeName id ? data-id : attribute.nodeName, attribute.nodeValue); }); return destination.toString(); } /** * Decode a JWT token to extract payload information * @param {string} token - The JWT token to decode * @return {Object|null} The decoded payload object or null if decoding fails */ _decodeToken(token) { try { const parts token.split(.); const payload parts1; const base64 payload.replace(/-/g, +).replace(/_/g, /); const padding 4 - base64.length % 4; const padded padding 4 ? base64 : base64 + .repeat(padding); return JSON.parse(atob(padded)); } catch (error) { return null; } } /** * Handle qualifying questions modal showing for Google Sign On * Decodes the JWT token to extract user email and shows the modal if available * @param {string} token - The JWT token containing user information */ _handleQualifyingQuestionsModal(token) { if (token && this.window.luxuryPresence && this.window.luxuryPresence.qualifyingQuestionsModal) { // Decoding only for lead attribution, fine to skip signature verification const decoded this._decodeToken(token); if (decoded && decoded.email) this.window.luxuryPresence.qualifyingQuestionsModal.showModal(decoded.email, Google Sign On); } }}/* eslint-disable import/prefer-default-export */ class $dcf72769f009ff26$export$b900d6fe921fd49c extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Qualifying Questions Modal Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.showModal this.showModal.bind(this); this.hasModalBeenSubmitted this.hasModalBeenSubmitted.bind(this); this.modalId qualifying-questions-modal; this.cookieKey qualifyingQuestionsModalSubmitted; this.qualifyingQuestionsModalEnabled true; // Store references for cleanup this.eventListeners ; this.timeouts ; } initialize(options {}) { this.qualifyingQuestionsModalEnabled options.qualifyingQuestionsModalEnabled ?? this.qualifyingQuestionsModalEnabled; if (!this.qualifyingQuestionsModalEnabled) return; this.attachModalCloseListeners(); } destroy() { // Remove all stored event listeners this.eventListeners.forEach(({ element: element, event: event, handler: handler })>{ if (element && element.removeEventListener) element.removeEventListener(event, handler); }); this.timeouts.forEach((timeoutId)>{ clearTimeout(timeoutId); }); this.restoreBodyScroll(); this.eventListeners ; this.timeouts ; } /** * Check if modal has been submitted using cookie-based deduplication * @return {boolean} */ hasModalBeenSubmitted() { const cookieValue this.getCookie(this.cookieKey); return cookieValue true; } /** * Set cookie to prevent modal from showing again */ setModalSubmittedCookie() { this.setCookie(this.cookieKey, true, 365); // 1 year } showModal(email, triggerSource) { if (!this.qualifyingQuestionsModalEnabled || this.hasModalBeenSubmitted()) return; this.updateEmailValue(email); this.updateTriggerSourceValue(triggerSource); this.showModalElement(); } /** * Get modal element with error handling * @return {Element|null} */ getModalElement() { const modal this.document.getElementById(this.modalId); if (!modal) console.error(Modal element not found:, this.modalId); return modal; } updateEmailValue(email) { const modal this.getModalElement(); if (!modal) return; const emailInput modal.querySelector(inputnameemail); if (emailInput && typeof email string) emailInput.value email; } updateTriggerSourceValue(triggerSource) { const modal this.getModalElement(); if (!modal) return; const triggerSourceInput modal.querySelector(`#${this.modalId}-triggerSource`); if (triggerSourceInput && typeof triggerSource string) triggerSourceInput.value triggerSource; } showModalElement() { const modal this.getModalElement(); if (!modal) return; modal.style.display flex; this.blockBodyScroll(); } /** * Helper method to get cookie value * @param {string} name * @return {string|null} */ getCookie(name) { const value `; ${this.document.cookie}`; const parts value.split(`; ${name}`); if (parts.length 2) return decodeURIComponent(parts.pop().split(;).shift()); return null; } /** * Helper method to set cookie * @param {string} name * @param {string} value * @param {number} days */ setCookie(name, value, days) { let expires ; if (days) { const date new Date(); date.setTime(date.getTime() + days * 86400000); expires `; expires${date.toUTCString()}`; } let attrs ; path/; SameSiteLax; if (this.window && this.window.location && this.window.location.protocol https:) attrs + ; Secure; this.document.cookie `${name}${encodeURIComponent(value || )}${expires}${attrs}`; } 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() { const modal this.getModalElement(); if (!modal) return; // Listen for form submission success (when modal closes automatically) const form this.document.getElementById(`${this.modalId}-form`); if (form) { const formSubmittedHandler ()>{ // Set cookie to prevent showing again and hide modal this.setModalSubmittedCookie(); const timeoutId setTimeout(()>{ modal.style.display none; this.restoreBodyScroll(); }, 100); this.timeouts.push(timeoutId); }; form.addEventListener(formsubmitted, formSubmittedHandler); this.eventListeners.push({ element: form, event: formsubmitted, handler: formSubmittedHandler }); } // Listen for close button clicks const closeButton modal.querySelector(data-dismissmodal); if (closeButton) { const closeButtonHandler ()>{ modal.style.display none; this.restoreBodyScroll(); }; closeButton.addEventListener(click, closeButtonHandler); this.eventListeners.push({ element: closeButton, event: click, handler: closeButtonHandler }); } // Listen for backdrop clicks const backdropClickHandler (e)>{ // Check if click is on the modal backdrop (not on the modal content) if (e.target modal || e.target.id this.modalId) { modal.style.display none; this.restoreBodyScroll(); } }; modal.addEventListener(click, backdropClickHandler); this.eventListeners.push({ element: modal, event: click, handler: backdropClickHandler }); }}/* eslint-disable import/prefer-default-export */ class $50eefeef8d1f2372$export$8a2bf06fbae4dde extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { constructor(configController, window, document){ super(configController, window, document); this.isValidating false; this.lastValidationResult null; this.lastValidationTime null; this.validationCacheDuration 300000; // 5 minutes } /** * Destroy */ destroy() { this.isValidating false; this.lastValidationResult null; this.lastValidationTime null; } /** * Validate user session using GraphQL validSession query * @param {Object} options - Options for session validation * @param {boolean} options.useCache - Whether to use cached validation result * @returns {Promiseboolean>} - true if session is valid, false otherwise */ async validateSession(options {}) { const { useCache: useCache true } options; if (useCache && this.lastValidationResult ! null && this.lastValidationTime) { const timeSinceLastValidation Date.now() - this.lastValidationTime; if (timeSinceLastValidation this.validationCacheDuration) return this.lastValidationResult; } if (this.isValidating) return this.lastValidationResult ! null ? this.lastValidationResult : false; this.isValidating true; const query ` query { validSession { success } } `; try { // query from same domain as the website const response await this.window.fetch(`/graphql`, { method: POST, headers: { Content-Type: application/json }, credentials: include, body: JSON.stringify({ query: query }) }); if (!response.ok) { // eslint-disable-next-line no-console console.error(SessionController: HTTP error during session validation, response.status); this.lastValidationResult false; this.lastValidationTime Date.now(); return false; } const data await response.json(); if (data.errors) { this.lastValidationResult false; this.lastValidationTime Date.now(); return false; } const isValid data.data?.validSession?.success true; this.lastValidationResult isValid; this.lastValidationTime Date.now(); return isValid; } catch (error) { // eslint-disable-next-line no-console console.error(SessionController: Error validating session, error); this.lastValidationResult false; this.lastValidationTime Date.now(); return false; } finally{ this.isValidating false; } } /** * Clear validation cache */ clearCache() { this.lastValidationResult null; this.lastValidationTime null; }}/* eslint-disable import/prefer-default-export */ class $6bb500f67d8e6b7b$export$19036f3e654d7262 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { constructor(config, window, document){ super(config, window, document); this.consentListener null; } /** * Destroy and cleanup event listeners */ destroy() { if (this.consentListener) { this.document.removeEventListener(cookieyes_consent_update, this.consentListener); this.consentListener null; } } /** * Check if cookieyes-consent cookie includes analytics consent * @returns {boolean} True if analytics is consented to */ hasAnalyticsConsent() { const cookieString this.document.cookie; const match cookieString.match(/cookieyes-consent(^;+)/); if (!match) return false; try { const cookieValue decodeURIComponent(match1); try { const parsed JSON.parse(cookieValue); if (parsed.accepted && Array.isArray(parsed.accepted)) return parsed.accepted.includes(analytics); if (parsed.analytics true || parsed.analytics accepted) return true; } catch (jsonError) { // Ignore JSON parsing errors and try other formats } if (cookieValue.includes(,)) { const categories cookieValue.split(,).map((c)>c.trim()); return categories.includes(analytics); } return cookieValue.includes(analytics); } catch (error) { return false; } } /** * Load PostHog and Divolte scripts */ loadScript() { const shouldAddPostHogScript !this.document.getElementById(posthog-script); const shouldAddDivolteScript !this.document.getElementById(divolte-script); if (shouldAddPostHogScript) this.window.luxuryPresence.eventBus.initialize({ enabled: this.config.eventBus?.enabled }); if (shouldAddDivolteScript) this.window.luxuryPresence.divolte.initialize({}); } /** * Remove PostHog and Divolte scripts */ removeScripts() { this.window.luxuryPresence?.eventBus?.destroy?.(); this.window.luxuryPresence?.divolte?.destroy?.(); this.document.getElementById(posthog-script)?.remove(); this.document.getElementById(divolte-script)?.remove(); } /** * Initialize CookieYes controller */ async initialize() { const isAuthenticated await this.window.luxuryPresence.session.validateSession(); if (this.hasAnalyticsConsent() || isAuthenticated) this.loadScript(); if (!this.consentListener) { this.consentListener (eventData)>{ const data eventData.detail; if (data?.accepted && Array.isArray(data.accepted) && data.accepted.includes(analytics)) this.loadScript(); else this.removeScripts(); }; this.document.addEventListener(cookieyes_consent_update, this.consentListener); } }}const $fa0280e505379701$export$1fd2b467a3644d37 new (0, $dc851cf3939b6ef5$export$ff0712c26d5458f7)({});const $fa0280e505379701$export$e12694e911a05f40 new (0, $0ead03fdb95fa9ce$export$d507f25e63650365)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$3de614e59a842917 new (0, $d48f9f944810f613$export$ca3218b7861b9cb0)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$fb9b298fdbf31455 new (0, $68a2d4aa500c7a05$export$61ec8f2b6291ec31)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$178cc3119b453c2a new (0, $e10bd00497be8876$export$3c5380623cf51249)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$9376af1a01686f2 new (0, $ea6901fdf47e0ec1$export$3c19195edca3fa5c)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$94d36f806562393e new (0, $0a0ad49f13c0b8fd$export$ba9afeb75f20f616)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$89e66d1faf94651e new (0, $2b1790aa32f109d1$export$43e435c053a109f6)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$7743b07270cd6d6c new (0, $4f184d9bd3037f15$export$7a6215890afba974)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$40a7039551318c37 new (0, $102039871668a1df$export$e22e4b1be0bb6c61)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$8a0bbf7e7652fcfc new (0, $0d25a3fa2e0f4f92$export$b718a981691eae5c)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$b313b3f6544c97a3 new (0, $dcf72769f009ff26$export$b900d6fe921fd49c)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$b526bc4ac03268ef new (0, $50eefeef8d1f2372$export$8a2bf06fbae4dde)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$ec41309a2e823376 new (0, $6bb500f67d8e6b7b$export$19036f3e654d7262)($fa0280e505379701$export$1fd2b467a3644d37, window, document);/** * Attach controller to window for usage * @param {string} key * @param {any} controller */ function $89a8a84b77163415$var$attachController(key, controller) { if (window.luxuryPresencekey) try { // New version of sdk, destroy previous window.luxuryPresencekey.destroy(); } catch (e) { // eslint-disable-next-line no-console console.log(e); } window.luxuryPresencekey controller;}$89a8a84b77163415$var$attachController(config, (0, $fa0280e505379701$export$1fd2b467a3644d37));$89a8a84b77163415$var$attachController(modals, (0, $fa0280e505379701$export$e12694e911a05f40));$89a8a84b77163415$var$attachController(buttons, (0, $fa0280e505379701$export$3de614e59a842917));$89a8a84b77163415$var$attachController(validation, (0, $fa0280e505379701$export$fb9b298fdbf31455));$89a8a84b77163415$var$attachController(contactForms, (0, $fa0280e505379701$export$178cc3119b453c2a));$89a8a84b77163415$var$attachController(mapApiLoader, (0, $fa0280e505379701$export$9376af1a01686f2));$89a8a84b77163415$var$attachController(pagination, (0, $fa0280e505379701$export$94d36f806562393e));$89a8a84b77163415$var$attachController(expandSliders, (0, $fa0280e505379701$export$89e66d1faf94651e));$89a8a84b77163415$var$attachController(divolte, (0, $fa0280e505379701$export$7743b07270cd6d6c));$89a8a84b77163415$var$attachController(eventBus, (0, $fa0280e505379701$export$40a7039551318c37));$89a8a84b77163415$var$attachController(oauth, (0, $fa0280e505379701$export$8a0bbf7e7652fcfc));$89a8a84b77163415$var$attachController(qualifyingQuestionsModal, (0, $fa0280e505379701$export$b313b3f6544c97a3));$89a8a84b77163415$var$attachController(session, (0, $fa0280e505379701$export$b526bc4ac03268ef));$89a8a84b77163415$var$attachController(cookieyes, (0, $fa0280e505379701$export$ec41309a2e823376));// methods for existing elements (can be removed later after elements updated)window.luxuryPresence.formatSliderPriceRange (0, $fa0280e505379701$export$94d36f806562393e).formatSliderPriceRange.bind((0, $fa0280e505379701$export$94d36f806562393e));window.luxuryPresence.formatSliderAreaRange (0, $fa0280e505379701$export$94d36f806562393e).formatSliderAreaRange.bind((0, $fa0280e505379701$export$94d36f806562393e));// method below doesnt use this, but just to be safe in case of further method updateswindow.luxuryPresence.getSearchFormValues (0, $fa0280e505379701$export$94d36f806562393e).getSearchFormValues.bind((0, $fa0280e505379701$export$94d36f806562393e));window.luxuryPresence.handlebarsHelpersFactory function(handlebarsInstance) { return (0, (/*@__PURE__*/$parcel$interopDefault($53de3c160faf5a81$exports)))(handlebarsInstance, { isEqual (a, b) { // eslint-disable-next-line return a b; } });};})();//# sourceMappingURLlp-sdk.js.map /script> script> var lpGlobalInitialized false; function lpGlobalInit () { if (lpGlobalInitialized) { return; } lpGlobalInitialized true; // Initialize wow animation plugin only according to turbolinks var wow; if (window.WOW) { wow new WOW({ animateClass: animated, offset: wowOffset, live: false, callback: function(box) {} }); } // Initialize handlebar helpers only once function handlebarsInit() { if (!window.Handlebars) { return; } HandlebarsIntl.registerWith(Handlebars); Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars)); } handlebarsInit(); var modalContentUrl /modals.html; const modalsContainer document.getElementById(modals); if (modalsContainer) { fetch(modalContentUrl).then(function(res) { if (!res.ok) { throw new Error(`HTTP error! Status: ${res.status}`); } return res.text(); }).then(function(resultText) { modalsContainer.innerHTML resultText; // now we need to execute all script elements Array.from(modalsContainer.getElementsByTagName(script)).forEach(function (s) { const script document.createElement(script); script.text s.innerHTML; Array.from(s.attributes).forEach(function (a) { script.setAttribute(a.name, a.value); }) s.parentNode.replaceChild(script, s); }); try { window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes); window.luxuryPresence.contactForms.initialize({ selector: #modals }); window.luxuryPresence.validation.initialize({ selector: #modals }); window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false }); } catch (e) { console.log(e); } document.querySelectorAll(.modals > .modal .close).forEach(closeModalBtn > { closeModalBtn.addEventListener(click, function() { window.lpUI.hideClosestModal(closeModalBtn); }); }); }).catch((e) > console.log(e)); } /* Initialize Luxury Presence SDK */ try { window.luxuryPresence.config.setCompany(ef21bbb2-46d7-4155-87a3-0369bead35d4, {}); window.luxuryPresence.config.setWebsite(f3ca115d-d758-4072-8014-01e8edd1e0da, { recaptchaSiteId: , myhomeDashboardEnabled: false }); const url new URL(window.location.href); const shareId url.searchParams.get(shareId); window.luxuryPresence.config.setPage(cea6ed9c-34fb-4166-8b26-ccb26648c1f0, { sourceResource: , pageElementId: , pageQueryVariables: {}, shareId: , }); window.luxuryPresence.config.setWebsiteApiGatewayUrl(https://wgw.luxurypresence.com, {}); window.luxuryPresence.config.setBuyerSellerServiceUrl(https://bss.luxurypresence.com, {}); window.luxuryPresence.config.setDivolteServiceUrl(https://t.luxurypresence.com, {}); window.luxuryPresence.config.setEventBusUrl(https://cdn.luxurypresence.com/scripts/event-bus-js, {}); window.luxuryPresence.config.setEventBus({ enabled: true, apiKey: phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr, url: https://us.i.posthog.com, }); window.luxuryPresence.config.setTemplateId(0c2b9641-6f2a-40f2-a2e0-dabc022eb278, {}); window.luxuryPresence.config.setLeadIngesterUrl(https://leads.luxurypresence.com, {}); window.luxuryPresence.buttons.initialize({}); window.luxuryPresence.eventBus.initialize({}); window.luxuryPresence.contactForms.initialize({}); window.luxuryPresence.validation.initialize({}); window.luxuryPresence.expandSliders.initialize({}); window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false }); window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true }); window.luxuryPresence.divolte.initialize({}); } catch (e) { console.log(e); } /* Inject Section Specific Javascript */ try {(function init(sectionDomId) { const disclaimerLabel document.querySelector(# + sectionDomId + .lp-tcr-content); if (disclaimerLabel) { const input disclaimerLabel.querySelector(input); if (input) { input.setAttribute(id, `${sectionDomId}-termsAccepted`); input.value true; const label document.createElement(label); label.setAttribute(for, `${sectionDomId}-termsAccepted`); label.classList.add(lp-visually-hidden); label.textContent Opt in/Disclaimer Consent:; disclaimerLabel.prepend(label); } } function setHttp(link) { if (link.search(/^https?\:\/\/|\//) -1) { link https:// + link; } return link; } const socialLinks document.querySelectorAll(# + sectionDomId + .socials__link, # + sectionDomId + .lp-socials__link); socialLinks.forEach(linkElement > { const href linkElement.getAttribute(href); if (href) { linkElement.setAttribute(href, setHttp(href)); } }); const redirectLink $(# + sectionDomId + .redirect-link); if (redirectLink.length) { const rawHref setHttp(redirectLink.attr(href)); let formEvent; if (rawHref) { formEvent redirectLink.data(redirect) ? formsubmitted : reset; $(# + sectionDomId + .contact-form).find(form).on(formEvent, function () { redirectLink.attr(href, rawHref); redirectLink0.click(); }); } }})(modal-global-contact-us);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $section $(# + sectionDomId); const $hamburger $section.find(.hamburger-component); function onSideMenuShow() { if (!$hamburger.hasClass(active)) { $hamburger.addClass(active); } } function onSideMenuHide() { $hamburger.removeClass(active); } const $window $(window); $window.on(lpui-sidemenu-show.lpui-auto-clean, onSideMenuShow); $window.on(lpui-sidemenu-hide.lpui-auto-clean, onSideMenuHide); const $subContainers $section.find(.navigation__item.sub-nav-container); $subContainers.hover(function () { $(this).find(.sub-nav).addClass(visible); }, function () { $(this).find(.sub-nav).removeClass(visible); }); $window.on(click.lpui-auto-clean, function () { $(.sub-nav-container.visible-dropdown).removeClass(visible-dropdown); }); let fixedWidth 0; const rightPad 20; function fixSubsPosition() { const wWidth window.innerWidth; if (innerWidth fixedWidth) { return; } fixedWidth wWidth; $subContainers.each(function () { const $sub $(this).find(.sub-nav); $sub0.style.right ; const sRect $sub0.getBoundingClientRect(); const sRight sRect.left + sRect.width; if (sRight > wWidth - rightPad) { const parentRect $sub0.offsetParent.getBoundingClientRect(); const parentRight parentRect.left + parentRect.width; $sub0.style.right `${parentRight - wWidth + rightPad}px`; } }); } var debouncer; $window.on(resize.lpui-auto-clean, function () { clearTimeout(debouncer); debouncer setTimeout(fixSubsPosition, 500); }); fixSubsPosition(); if ($(.property-intro).length || $(.property-intro-2).length) { $(nav).addClass(dark-opening); $(#global-navbar).css({ background-color: rgb(26, 26, 26), color: rgb(255, 255, 255) }); }})(global-navbar);} catch(e) {console.log(e);} try {(function init(sectionDomId, options) { var elementSelector options.elementSelector || nav; var element document.querySelector(elementSelector); var sections document.querySelectorAll(body > section); var subNavContainers element.querySelectorAll(.sub-nav); var initialBackgroundColor options.initialBackgroundColor || element.style.backgroundColor; var backgroundColorScroll options.backgroundColorScroll || #191919; var fontColor options.fontColor || #fff; var fontColorScroll options.fontColorScroll || #000; var didScroll false; var lastScrollTop 0; var delta 5; // eslint-disable-next-line sonarjs/no-collapsible-if if (wow) { // Wowjs might not trigger for position fixed elements if (window.scrollY > 0) { element.querySelectorAll(.wow).forEach(el > wow.show(el)); } } function adjustNavPinState() { // Remove visible class from all subNavContainers for (let i 0; i subNavContainers.length; i++) { subNavContainersi.classList.remove(visible); } if (window.scrollY > 0) { element.style.backgroundColor backgroundColorScroll; element.style.color fontColorScroll; element.classList.add(scroll); } else { element.style.backgroundColor initialBackgroundColor; element.style.color fontColor; element.classList.remove(scroll); } } adjustNavPinState(); function onScroll() { didScroll true; } window.addEventListener(scroll, onScroll); // eslint-disable-next-line var debounceInterval setInterval(() > { if (didScroll) { // eslint-disable-next-line hasScrolled(); didScroll false; } }, 250); function hasScrolled() { adjustNavPinState(); // eslint-disable-next-line var navbarHeight element.offsetHeight; // eslint-disable-next-line var st window.scrollY; // Make sure they scroll more than delta if (Math.abs(lastScrollTop - st) delta) { return; } if (st > lastScrollTop && st > navbarHeight) { // Scroll Down element.style.transform `translateY(-${navbarHeight}px) scaleY(0)`; document.documentElement.style.setProperty(--global-header-height, 0px); // Some sections follow the navbar with class sticky (i.e. Producer search) sections.forEach(section > { if (section.classList.contains(sticky)) { section.style.top 0px; } }); } else { // Scroll Up // eslint-disable-next-line if (st + window.innerHeight document.documentElement.scrollHeight) { element.style.transform `translateY(0) scaleY(1)`; document.documentElement.style.setProperty(--global-header-height, `${navbarHeight}px`); sections.forEach(section > { if (section.classList.contains(sticky)) { section.style.top `${navbarHeight}px`; } }); } } lastScrollTop st; }})(NAVBAR, JSON.parse({\fontColor\:\#fff\,\elementSelector\:\nav\,\fontColorScroll\:\#fff\,\initialFontColor\:\#fff\,\backgroundColorScroll\:\#1a1a1a\,\initialBackgroundColor\:\rgba(0,0,0,0)\}));} catch(e) {console.log(e);} try {(function init(sectionDomId) { var sidemenu $(# + sectionDomId); sidemenu.on(lpui-sidemenu-show.lpui-auto-clean, function () { window.lpUI.requestScrollLock(sectionDomId); }); $(window).on(lpui-sidemenu-hide.lpui-auto-clean, function () { window.lpUI.releaseScrollLock(sectionDomId); }); $(window).click(function (e) { let targetContactForm $(e.target).closest(#modal-global-contact-us).length; let targetSideMenu $(e.target).closest(.sidemenu).length; let targetContactItem $(e.target).closest(data-typeCONTACT_US).length; let targetHamburger $(e.target).closest(.hamburger-component).length; if (!(targetContactForm || targetSideMenu || targetContactItem || targetHamburger)) { $(body).removeClass(locked); $(.hamburger).removeClass(active); $(.sidemenu).removeClass(visible); $(#modal-global-contact-us).removeClass(visible); } });})(global-sidemenu);} catch(e) {console.log(e);} try {(function init(footerId) { var textContent $(.text_content_wrap p).text().trim().length; const socialLinks $(`#${footerId} .lp-socials__link`); if (textContent 1) { $(.text_content_wrap).remove(); $(.second_text_footer).css({ margin-bottom: 0 }); } if (socialLinks.length > 0) { socialLinks.attr(data-wow-offset, 10); } if ($(window).width() > 1280) { let footer document.querySelector(# + footerId); let copyrightElem footer.querySelector(.copy_zone); if (copyrightElem) { copyrightElem.style.whiteSpace nowrap; let nowrapElemWidth copyrightElem.clientWidth; copyrightElem.style.whiteSpace ; let normalElemWidth copyrightElem.clientWidth; if (nowrapElemWidth > normalElemWidth) { footer.querySelector(.form-col--socials).classList.add(form-col--xl-auto); } } } const form $(# + footerId).find(form); const redirectLink $(# + footerId + .redirect-link); form.on(reset, function () { redirectPage(redirectLink); }); function redirectPage(link) { if (link.length) { const rawHref link.attr(href); link.attr(href, setHttp(rawHref)); link0.click(); } } function setHttp(link) { if (link.search(/^https?\:\/\/|\//) -1) { link http:// + link; } return link; }})(global-footer);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var _section $(# + sectionDomId); var _footer document.getElementById(global-footer); const emailInput _section.find(.js-email-input); const emailRegex /a-zA-Z0-9.!#$%&*+/?^_`{|}~\-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)+/; emailInput.on(input, function () { if (emailRegex.test(this.value)) { this.setCustomValidity(); } else { this.setCustomValidity(Please enter a valid email address.); } this.reportValidity(); }); _section.find(inputnamename).on(keyup, function () { if (this.value.replaceAll(/\d/g, ).trim().split( ).length 2 || this.value.replaceAll(/\d/g, ).trim() ) { this.setCustomValidity(Please input your first name and last name.); } else { this.setCustomValidity(); } }); _section.find(form).on(reset, function () { $(this).addClass(show-success); }); $(window).scroll(function () { if ($(this).scrollTop() > 150) _section.find(.btn-holder).addClass(visible);else _section.find(.btn-holder).removeClass(visible); }); _section.find(.close-btn, .connect-btn).click(function () { _section.find(.pop-up).toggle(); _section.find(.btn-holder).toggle(); }); if (!_footer) return; const observer new IntersectionObserver(entries > { entries.forEach(entry > { if (entry.isIntersecting) _section.hide();else _section.show(); }); }, { threshold: 0.1 }); observer.observe(_footer); function selectToDropdown(selectItem) { let customDropdown ` div classcustom-select rolepresentation> button classcustom-select-toggle is-placeholder typebutton aria-haspopuptrue aria-expandedfalse>/button> div classcustom-select-menu styledisplay: none;max-height: none;> div classcustom-select-content> /div> /div> /div>`; $(customDropdown).insertAfter(selectItem); let $dropdown $($(selectItem).next()); let $dropdownToggle $dropdown.find(.custom-select-toggle); let $dropdownMenu $dropdown.find(.custom-select-menu); let $dropdownContent $dropdown.find(.custom-select-content); $dropdownToggle.addClass($(selectItem).attr(class)).removeClass(dropdown-select); $dropdownToggle.attr(id, $(selectItem).attr(id) + custom); $dropdownMenu.attr(aria-labelledby, $dropdownToggle.attr(id)); appendOptionButtons(selectItem, $dropdownContent); $(selectItem).removeClass().addClass(sr-only); var toggleText $(selectItem).find(:selected).first().text() || $(selectItem).children().first().text(); $dropdownToggle.html(toggleText); $dropdown.on(click, .custom-select-item, function (e) { if ($(this).hasClass(is-disabled)) return; let elementNumber $(this).index(); let $originalSelect $(this).closest(.custom-select).siblings(select); let $linkedOption $originalSelect.find(option).eq(elementNumber); if (!$linkedOption.prop(selected)) { $linkedOption.prop(selected, true); $originalSelect.change(); $(this).addClass(is-selected).siblings(.custom-select-item).removeClass(is-selected); $dropdownToggle.html($(this).html()); closeSelectMenu($(this).closest(.custom-select-menu)); } $dropdownToggle.removeClass(is-placeholder); }); function convertOptionToButton(option) { var optionText $(option).text(); var optionValue $(option).attr(value) || $(option).text(); var optionIsDisabled $(option).prop(disabled); var outputButton `button value${optionValue} classcustom-select-item typebutton ${optionIsDisabled ? disabled : }>${optionText}/button>`; return outputButton; } function appendOptionButtons(selectItem, appendTarget) { $(selectItem).find(option).each(function () { let currentButton convertOptionToButton(this); $(appendTarget).append(currentButton); }); } function showSelectMenu(selectMenu) { var customSelect $(selectMenu).closest(.custom-select)0; $(customSelect).addClass(open); $(selectMenu).slideDown(); } function closeSelectMenu(selectMenu) { var customSelect $(selectMenu).closest(.custom-select)0; $(customSelect).removeClass(open); $(selectMenu).slideUp(); } $dropdown.on(click, .custom-select-toggle, function (e) { var $customSelect $(this).closest(.custom-select); var selectMenu $customSelect.find(.custom-select-menu)0; if ($customSelect.hasClass(open)) { closeSelectMenu(selectMenu); } else { showSelectMenu(selectMenu); } }); $(document).on(click, function (e) { if ($(e.target).closest(.custom-select).length 1 && $(.custom-select).hasClass(open)) { $(.custom-select.open).each(function () { var selectMenu $(this).find(.custom-select-menu)0; closeSelectMenu(selectMenu); }); } }); } $(.pop-up selectnameinterest).each(function () { selectToDropdown(this); });})(global-mobile-contact);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var $section $(# + sectionDomId); var $carousel $section.find(.collection); var currentPreTitle ; var currentTitle ; const $videoWrap $section.find(.full-screen-video-component > .video-wrapper); if ($videoWrap.length) { const $video $videoWrap.find(video); $video.each(function () { var v this; if (v.readyState > 0) { $videoWrap.addClass(playing); } else { v.addEventListener(canplay, function () { $videoWrap.addClass(playing); }, { once: true }); } }); } $(# + sectionDomId + .collection).slick({ dots: $(# + sectionDomId + .collection).find(.item).length > 1 ? true : false, arrows: false, speed: 0, fade: true, autoplay: true, autoplaySpeed: 6000, pauseOnHover: false, pauseOnFocus: false }); $carousel.on(beforeChange, function () { currentPreTitle $(this).find(.slick-current).find(.lp-text--pretitle).text(); currentTitle $(this).find(.slick-current).find(.lp-h1).text(); $(this).find(.slick-current).find(.lp-h1).addClass(animation); $(this).find(.slick-current).find(.lp-text--pretitle).addClass(animation); }); $carousel.on(afterChange, function () { if (currentPreTitle $(this).find(.slick-current).find(.lp-text--pretitle).text()) { $(this).find(.slick-current).find(.lp-text--pretitle).removeClass(animation); } if (currentTitle $(this).find(.slick-current).find(.lp-h1).text()) { $(this).find(.slick-current).find(.lp-h1).removeClass(animation); } });})(section-5ddbae43-eb0e-4b14-9f4a-6fe2befc19df, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) {})(section-d6aa0cf2-22a8-43ba-b2da-0aa574e461de, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var $section $(# + sectionDomId); var $window $(window); var duration 3000; var step 50; var items ; var started false; function analyze() { var elems $section.find(.jsValue); elems.each(function () { var $el $(this); var match $el.text().match(/^(\D*)(\d(.*\d)?)(.*)$/); if (match) { var str match2; var frac 0; var fSep ; var nmb; if (!/\..*\./.test(str)) { var m str.match(/\.(\d+)$/); if (m) { frac m1.length; fSep .; nmb parseFloat(str.replace(/^\d\./g, )); } } if (!frac) { if (!/,.*,/.test(str)) { var _m str.match(/,(\d+)$/); if (_m) { frac _m1.length; fSep ,; nmb parseFloat(str.replace(,, .).replace(/^\d\./g, )); } } } if (!frac) { nmb parseInt(str.replace(/\D/g, )); } items.push({ el: $el, prefix: match1 || , suffix: match4 || , str: match2, nmb: nmb, frac: frac, fSep: fSep }); } }); if (!items.length) { started true; return; } } function animate() { if (started) { return; } started true; setTimeout(iterate, step); } var pos 0; function iterate() { if (pos > duration) { items.forEach(function (item) { item.el.text(item.prefix + item.str + item.suffix); }); } else { items.forEach(function (item) { var valStr formatValue(item, pos / duration); item.el.text(item.prefix + valStr + item.suffix); }); pos + step; setTimeout(iterate, step); } } function formatValue(item, val) { var str (item.nmb * val).toFixed(item.frac).replace(/\D/, ); var i 0; var j 0; var res ; while (i item.str.length && j str.length) { var c item.stritem.str.length - i - 1; var code c.charCodeAt(0); if (code > 48 && code 57) { res strstr.length - j - 1 + res; j++; } else { res c + res; } i++; } return res; } function calculateVisibility() { if ($window.height() + $window.scrollTop() > $section.offset().top) { $window.off(scroll, calculateVisibility); animate(); } } analyze(); if (items.length) { $window.on(scroll.lpui-auto-clean, calculateVisibility); calculateVisibility(); }})(section-b9d14e3f-0e16-46fb-9feb-abd442a463b5, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) {})(section-f96bdd90-3af0-427b-9ffa-25504afec18c, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) {})(section-9e4618c4-e785-42fd-a490-ac2c2d63a3cd, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId, options) { var section null; switch (sectionDomId) { case NAVBAR: section $(body > nav); break; case FOOTER: section $(body > footer); break; case SIDEMENU: section $(body > div.sidemenu); break; case CONTACT: section $(#modal-global-contact-us); break; case MOBILE_CONTACT: section $(body > div.mobile-contact-wrapper); break; case SUBSCRIBE: // Subscribe Not Implemented section null; break; case ACCOUNT: // Account Not Implemented section null; break; default: section $(`#${sectionDomId}`); } if (!section.length) { return; } if (options.nextArrow) { // eslint-disable-next-line options.nextArrow `#${sectionDomId} ${options.nextArrow}`; } if (options.prevArrow) { // eslint-disable-next-line options.prevArrow `#${sectionDomId} ${options.prevArrow}`; } if (options.asNavFor) { // eslint-disable-next-line var mainImageOptions { slidesToShow: 1, slidesToScroll: 1, fade: true, asNavFor: `#${sectionDomId} .carousel-container`, nextArrow: options.nextArrow, prevArrow: options.prevArrow, swipe: true }; $(options.asNavFor).not(.slick-initialized).slick(mainImageOptions); section.find(.carousel-container).not(.slick-initialized).slick(options); } else { section.find(.carousel-container).not(.slick-initialized).slick(options); }})(section-067df2af-3078-4998-ad24-4efc6460d75d, JSON.parse({\companyId\:\ef21bbb2-46d7-4155-87a3-0369bead35d4\,\sectionIndex\:6}));} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $section $(# + sectionDomId); const $slider $section.find(.js-carousel); const arrowsStyle $slider.data(arrows-style) || ; $section.find(.js-carousel).slick({ nextArrow: `button classlp-arrow lp-arrow--next lp-arrow--light gallery__arrow gallery__arrow--next ${arrowsStyle}>/button>`, prevArrow: `button classlp-arrow lp-arrow--prev lp-arrow--light gallery__arrow gallery__arrow--prev ${arrowsStyle}>/button>` }); const $images $section.find(.js-img); var rtime; var timeout false; var delta 100; var mediaSlider $section.find(.js-carousel); $(window).resize(function () { rtime new Date(); if (timeout false) { timeout true; setTimeout(resizeend, delta); } }); function resizeend() { if (new Date() - rtime delta) { setTimeout(resizeend, delta); } else { timeout false; mediaSlider.slick(resize); } } $images.each(function () { if (this.complete) { adjustImageType(this); } else { $(this).on(load, function () { adjustImageType(this); }); } }); function adjustImageType(img) { if (img.naturalWidth img.naturalHeight) { img.classList.add(portrait); } }})(section-067df2af-3078-4998-ad24-4efc6460d75d, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var WIDTH_TOLERANCE_PERCENT 10; var isSliderInitialized false; var $slider $(# + sectionDomId + .carousel-container); var slickOptions { speed: +$slider.data(speed) || 10000, cssEase: linear, autoplay: true, infinite: true, nextArrow: , prevArrow: , pauseOnFocus: false, pauseOnHover: false, slidesToShow: 1, autoplaySpeed: 0, variableWidth: true, slidesToScroll: 1 }; var $slides $(# + sectionDomId + .carousel-slide); function doSlidesFit() { var containerWidth $slider.width(); var totalSlidesWidth 0; $slider.find(.carousel-slide).not(.slick-cloned).each(function () { totalSlidesWidth + $(this).outerWidth(); }); return totalSlidesWidth containerWidth * (100 - WIDTH_TOLERANCE_PERCENT) / 100; } if ($slides.length > 0 && doSlidesFit() && !isSliderInitialized) { $slides.clone().appendTo($slider); while (doSlidesFit()) { $slides.clone().appendTo($slider); } } if ($slides.length > 0) { $slider.slick(slickOptions); isSliderInitialized true; $(window).on(resize.lpui-auto-clean orientationchange.lpui-auto-clean, function () { if (!doSlidesFit() && !isSliderInitialized) { $slider.slick(slickOptions); isSliderInitialized true; } else if (doSlidesFit() && isSliderInitialized) { $slider.slick(unslick); $slider.slick(slickOptions); } }); }})(section-9139beab-5cf6-40f4-9cfd-bc7ec4b414f8, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var textBlock $(# + sectionDomId + .hoverable-image__text-wrap); var textBlockPaddingTop parseInt($(# + sectionDomId + .hoverable-image__text-col).css(padding-top)); var textBlockPaddingBottom parseInt($(# + sectionDomId + .hoverable-image__text-col).css(padding-bottom)); var imageBlock $(# + sectionDomId + .hoverable-image__img-col > div); function resizeImage() { if (window.matchMedia((min-width: 993px)).matches) { imageBlock.css(min-height, textBlock.height() + textBlockPaddingTop + textBlockPaddingBottom); } } $(# + sectionDomId + .hoverable-image__img-col--on-hover).click(function () { if (window.matchMedia((hover: none) and (pointer: coarse)).matches) { $(this).toggleClass(active); } }); resizeImage(); $(window).on(resize.lpui-auto-clean, resizeImage);})(section-3fcaccf1-a64c-485e-a3bd-c4503ede3643, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId, options) { let section null; switch (sectionDomId) { case NAVBAR: section document.querySelector(body > nav, #global-navbar); break; case FOOTER: section document.querySelector(body > footer, #global-footer); break; case SIDEMENU: section document.querySelector(body > div.sidemenu, #global-sidemenu); break; case CONTACT: section document.querySelector(#modal-global-contact-us); break; case MOBILE_CONTACT: section document.querySelector(body > div.mobile-contact-wrapper, #global-mobile-contact); break; case SUBSCRIBE: // Subscribe Not Implemented section null; break; case ACCOUNT: // Account Not Implemented section null; break; default: section document.querySelector(# + sectionDomId); } if (!section) { return; } // Where content / items are rendered const dataContainer section.querySelector(.data-container); if (!dataContainer) { // no place to render items no need to query server or do anything else return; } let variables options.variables || {}; // Some variables in options may not have been injected - remove Object.keys(variables).forEach(function (variableName) { if (typeof variablesvariableName string && variablesvariableName.match(/^{{.*}}$/)) { delete variablesvariableName; } }); // Merge page query variables if (options.usePageResource) { variables { ...variables, ...window.luxuryPresence.config.pageMeta.pageQueryVariablesoptions.resource }; } // Pagination Executes on a Numbered Pagination Container // Or via a load more button let mode BUTTONLESS_PAGINATION; const container section.querySelector(.pagination-container); const loadMoreButton section.querySelector(options?.loadMoreSelector); if (container) { mode NUMBERED_PAGINATION; } if (loadMoreButton) { mode LOAD_MORE_BUTTON; } let searchContainer section.querySelector(.search-container); const hidePaginationOnFirstPage options.hidePaginationOnFirstPage || false; const eventPrefix __pagination-; const searchFormParams options.searchFormParams || (options.resource properties ? { param: neighborhoodId, urlKey: neighborhood }, { param: search, urlKey: search }, { param: salesPriceGTE, urlKey: pricemin, formKey: priceMin, type: int }, { param: salesPriceLTE, urlKey: pricemax, formKey: priceMax, type: int }, { param: livingSpaceSizeGTE, urlKey: areamin, formKey: areaMin, type: int }, { param: livingSpaceSizeLTE, urlKey: areamax, formKey: areaMax, type: int } : ); // Total entries - initialized in first render let totalNumber 0; const DefaultSearchParams { page: 1 }; searchFormParams.forEach(function (formParam) { DefaultSearchParamsformParam.formKey || formParam.param null; }); let searchParams { ...DefaultSearchParams }; const offset options.variables?.offset || 0; let scrollTarget options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section; let scrollOffset (parseInt(options.scrollOffset, 10) || 0) ?? 100; // entries of per page // when query variables for a given section wouldt be filled options.pageSize can store // template string, ex: {{variables.limit}}, below code handles that case and set 9 as a default value let pageSize parseInt(options.pageSize, 10) || 9; // Adding mobile pageRange support var NARROW_BREAKPOINT 600; var mobileBreakpoint options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT; var paginationMql window.matchMedia(`(max-width: ${mobileBreakpoint}px)`); // Page range (pages on both sides of the current page) var mobilePageRange options.mobilePageRange > 0 ? options.mobilePageRange : 0; var desktopPageRange options.pageRange > 0 ? options.pageRange : 2; var pageRange paginationMql.matches ? mobilePageRange : desktopPageRange; // Whether to display the Previous button var showPrevious true; // Whether to display the Next button var showNext true; // Whether to display the page buttons var showPageNumbers true; // Previous text var prevText options.prevText || «; // Next text var nextText options.nextText || »; // Ellipsis text var ellipsisText …; var classPrefix paginationjs; // Default active class var activeClassName active; // Default disable class var disableClassName disabled; // Pagination elements position in the container var position bottom; // Whether to trigger pagination at initialization var triggerPagingOnInit !options.skipInitialLoad; var showFirstOnEllipsisShow true; var showLastOnEllipsisShow true; // Instantiated in init() var el null; // Controls scrollTop logic var firstRender true; var renderBySearch false; var disabled false; // Pagination script class selector var paginationScriptSelector options.paginationPartialName ? `.${options.paginationPartialName}` : .pagination-script; // Property Specific Image Override if No Image var propertyPlaceholderImage window.luxuryPresence.defaults.propertyPlaceholderImage; // Construct template var templateHTML section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || ; var template Handlebars.compile(templateHTML); // Initialize init(); function init() { Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); // Append/prepend pagination element to the pagination container if (mode NUMBERED_PAGINATION) { el document.createElement(div); el.className paginationjs; containerposition bottom ? append : prepend(el); } if (searchContainer) { initSearchContainer({ fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods true, fetchPostCategories: searchContainer.dataset.fetchPostCategories true, fetchOffices: searchContainer.dataset.fetchOffices true, fetchRentalRates: searchContainer.dataset.fetchRentalRates true }, function () { syncSearchFormState(searchParams); }); } // Bind events observer(); } function syncSearchFormState(params) { searchContainer.dispatchEvent(new CustomEvent(sync, { detail: params })); } function initSearchContainer(options, done) { var promises ; if (options.fetchNeighborhoods) { promises.push(fetchAllNeighborhoods(function (neighborhoods) { searchContainer.dispatchEvent(new CustomEvent(neighborhoods-data, { detail: { data: neighborhoods.map(function (item) { return { value: item.id, label: item.name }; }) } })); })); } if (options.fetchPostCategories) { promises.push(fetchPostCategories(function (categories) { searchContainer.dispatchEvent(new CustomEvent(post-categories-data, { detail: { data: categories } })); })); } if (options.fetchOffices) { promises.push(fetchOffices(function (offices) { searchContainer.dispatchEvent(new CustomEvent(offices-data, { detail: { data: offices } })); })); } if (options.fetchRentalRates) { promises.push(fetchAllRentalRates(function (rentalRates) { searchContainer.dispatchEvent(new CustomEvent(rental-rates-data, { detail: { data: rentalRates } })); })); } if (promises.length > 0) { Promise.all(promises).then(function () { done(); }); } else { // elements custom code is not executed yet, so were scheduling callback to after elements code setTimeout(done); } } function fetchAllNeighborhoods(done) { var url options.url || window.luxuryPresence.defaults.apiGatewayUrl; var gqlQuery query ($companyId: String, $withProperties: NeighborhoodPropertiesFilter, $withBlogPosts: NeighborhoodBlogPostsFilter, $offset: Int, $limit: Int) { + neighborhoods (companyId: $companyId, withProperties: $withProperties, withBlogPosts: $withBlogPosts, offset: $offset, limit: $limit) {id, name}}; var payload {}; payload.offset 0; payload.limit 100; payload.companyId variables.companyId; if (options.resource properties) { payload.withProperties { active: true }; 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) { if (variablesfield ! undefined && variablesfield ! null) { payload.withPropertiesfield variablesfield; } }); } if (options.resource posts) { payload.withBlogPosts { active: true }; search, postStatusId, featured, categoryId, categoryIds, neighborhoodId, slug.forEach(function (field) { if (variablesfield ! undefined && variablesfield ! null) { payload.withBlogPostsfield variablesfield; } }); } superagent.post(url + /graphql).withCredentials().send({ query: gqlQuery, variables: payload }).then(function (res) { var items res.body.data && res.body.data.neighborhoods || ; done(items, items.length); }); } function fetchPostCategories(done) { var url options.url || window.luxuryPresence.defaults.apiGatewayUrl; var featured options.resource posts && !!variables.featured; var gqlQuery query ($companyId: String, $offset: Int, $limit: Int) { + postCategories (companyId: $companyId, offset: $offset, limit: $limit + (featured ? withFeaturedPublishedOnly: true : withPublishedOnly: true) + ) {id, name, publishedCount, featuredPublishedCount}}; var payload {}; payload.offset 0; payload.limit 100; payload.companyId variables.companyId; superagent.post(url + /graphql).withCredentials().send({ query: gqlQuery, variables: payload }).then(function (res) { var items res.body.data && res.body.data.postCategories || ; done(items.map(function (item) { item.count featured ? item.featuredPublishedCount : item.publishedCount; return item; }), items.length); }); } function fetchOffices(done) { var url options.url || window.luxuryPresence.defaults.apiGatewayUrl; var gqlQuery query ($companyId: String, $offset: Int, $limit: Int) { + offices (companyId: $companyId, offset: $offset, limit: $limit) { + id, name, tags}}; var payload { offset: 0, limit: 100, companyId: variables.companyId }; superagent.post(url + /graphql).withCredentials().send({ query: gqlQuery, variables: payload }).then(function (res) { var items res.body.data && res.body.data.offices || ; done(items, items.length); }); } function fetchAllRentalRates(done) { var url options.url || window.luxuryPresence.defaults.apiGatewayUrl; var gqlQuery query ($companyId: String, $offset: Int, $limit: Int) { + rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}; var payload { offset: 0, limit: 100, companyId: variables.companyId }; superagent.post(url + /graphql).withCredentials().send({ query: gqlQuery, variables: payload }).then(function (res) { var items res.body.data && res.body.data.rentalRates || ; done(items, items.length); }).catch(function (err) { console.error(Error fetching rental rates:, err); done(, 0); }); } function fetchData(params, done) { var url options.url || window.luxuryPresence.defaults.apiGatewayUrl; var resource options.resource; var gqlQuery options.query || window.luxuryPresence.defaults.gqlresource; var payload {}; try { payload JSON.parse(JSON.stringify(variables)); } catch (e) { Object.keys(variables).forEach(function (variableName) { payloadvariableName variablesvariableName; }); } payload.offset (params.page - 1) * pageSize + offset; payload.limit pageSize; payload.companyId options.companyId; searchFormParams.forEach(function (formParam) { var val paramsformParam.formKey || formParam.param; if (val ! null && val ! undefined) { objSet(payload, formParam.param, val); } }); // TODO: Disabled loading due to jarring effect // dataContainer.html(Loading...); superagent.post(url + /graphql).withCredentials().send({ query: gqlQuery, variables: payload }).then(function (res) { if (res.body.errors) { done(res.body.errors); return; } var data res.body.data || {}; var resources dataresource || ; var resourceCount dataresource + Count && dataresource + Count.count ? dataresource + Count.count : 0; if (resource properties && propertyPlaceholderImage?.id) { resources resources.map(resource > { if (resource.media?.length 0) { return Object.assign(resource, { media: propertyPlaceholderImage }); } return resource; }); } done(null, resources, resourceCount); }); } function getTotalPage() { return Math.ceil(totalNumber / pageSize); } function renderPaginationList() { var totalPages getTotalPage(); var rangeStart searchParams.page - pageRange; var rangeEnd searchParams.page + pageRange; if (rangeEnd > totalPages) { rangeEnd totalPages; rangeStart totalPages - pageRange * 2; rangeStart rangeStart 1 ? 1 : rangeStart; } if (rangeStart 1) { rangeStart 1; rangeEnd Math.min(pageRange * 2 + 1, totalPages); } // Making sure that 1 more page button is shown in edge positions if (pageRange 0) { if (searchParams.page totalPages) { rangeStart totalPages 1 ? 1 : totalPages - 1; } if (searchParams.page 1) { rangeEnd Math.min(2, totalPages); } } // Render pagination list if (mode NUMBERED_PAGINATION) { el.innerHTML generateHTML({ currentPage: searchParams.page, pageRange: pageRange, rangeStart: rangeStart, rangeEnd: rangeEnd }); if (totalPages 2 && hidePaginationOnFirstPage) { container.style.display none; } else { container.style.display ; } } else if (mode LOAD_MORE_BUTTON) { if (searchParams.page > totalPages) { loadMoreButton.style.display none; } else { loadMoreButton.style.display ; } } } function render(data) { renderPaginationList(); // Render new content with handlebars var html ; if (mode LOAD_MORE_BUTTON && searchParams.page > 1) { // If using load more, append search results to existing results html dataContainer.innerHTML; } for (var i 0; i data.length; i++) { var itemData recursivelyParse(datai); itemData.sectionIndex options.sectionIndex; itemData.renderOptions options.renderOptions; html + template(itemData); } dataContainer.innerHTML html; // Scroll Top if (!firstRender && mode NUMBERED_PAGINATION && (!renderBySearch || !options.skipScrollOnSearch)) { // Only animate to the top if we replace dataContainer (numbered pagination) setTimeout(() > { const scrollTargetOffsetTop scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset; window.scrollTo({ top: scrollTargetOffsetTop, behavior: smooth }); }, 250); } return true; } function generateHTML(args) { const totalPages getTotalPage(); const { rangeStart, rangeEnd } args; const makeLnk page > window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { ...searchParams, page }); let html ; if (showPrevious || showPageNumbers || showNext) { html + div classpaginationjs-pages>ul>; // Previous button if (showPrevious) { if (searchParams.page 1) { html + `li class${classPrefix}-prev ${disableClassName}>a>${prevText}/a>/li>`; } else { html + `li class${classPrefix}-prev J-paginationjs-previous data-num${searchParams.page - 1} titlePrevious page>a href${makeLnk(searchParams.page - 1)}>${prevText}/a>/li>`; } } // Pages if (showPageNumbers) { if (rangeStart 3) { for (let i 1; i rangeStart; i++) { 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>`; } } else { if (showFirstOnEllipsisShow) { html + `li class${classPrefix}-page ${classPrefix}-first J-paginationjs-page data-num1>a href${makeLnk(1)}>1/a>/li>`; } html + `li class${classPrefix}-ellipsis ${disableClassName}>a>${ellipsisText}/a>/li>`; } for (let i rangeStart; i rangeEnd; i++) { 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>`; } if (rangeEnd totalPages - 2) { html + `li class${classPrefix}-ellipsis ${disableClassName}>a>${ellipsisText}/a>/li>`; if (showLastOnEllipsisShow) { html + `li class${classPrefix}-page ${classPrefix}-last J-paginationjs-page data-num${totalPages}>a href${makeLnk(totalPages)}>${totalPages}/a>/li>`; } } else { for (let i rangeEnd + 1; i totalPages; i++) { html + `li class${classPrefix}-page J-paginationjs-page data-num${i}>a href${makeLnk(i)}>${i}/a>/li>`; } } } // Next button if (showNext) { if (searchParams.page > totalPages) { html + `li class${classPrefix}-next ${disableClassName}>a>${nextText}/a>/li>`; } else { html + `li class${classPrefix}-next J-paginationjs-next data-num${searchParams.page + 1} titleNext page>a href${makeLnk(searchParams.page + 1)}>${nextText}/a>/li>`; } } html + /ul>/div>; } return html; } function go(newSearchParams, callback, restorationVisit) { if (disabled) return; var goToPageNumber newSearchParams.page; // Page number is out of bounds if (!goToPageNumber || goToPageNumber 1) return; var totalPage getTotalPage(); // Page number is out of bounds if (!restorationVisit && totalNumber > 0) { if (goToPageNumber > totalPage) return; } if (!options.skipSerialization && (mode NUMBERED_PAGINATION || searchContainer)) { var newURL window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { ...newSearchParams, page: goToPageNumber ! 1 && mode NUMBERED_PAGINATION ? newSearchParams.page : null }); if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) { window.history.pushState({}, , window.luxuryPresence.getPath(newURL, { queryString: true })); } } // Fetch and update page fetchData(newSearchParams, renderWithData); disabled true; function renderWithData(err, data, count) { if (err) { dataContainer.dispatchEvent(new Event(error)); } else { searchParams { ...newSearchParams }; totalNumber count - offset; if (data.length 0) { dataContainer.dispatchEvent(new Event(no-data)); } else { dataContainer.dispatchEvent(new Event(data)); } render(data); firstRender false; } disabled false; renderBySearch false; } } function areQueryParamsEqual(first, second) { var differ Object.keys(first).find(function (key) { return firstkey ! undefined && firstkey ! null && firstkey ! secondkey; }); if (differ) { return false; } differ Object.keys(second).find(function (key) { return secondkey ! undefined && secondkey ! null && secondkey ! firstkey; }); return !differ; } function next(callback) { go({ ...searchParams, page: searchParams.page + 1 }, callback); } function previous(callback) { go({ ...searchParams, page: searchParams.page - 1 }, callback); } function refresh(callback) { go(searchParams, callback); } function update(params, callback) { renderBySearch true; go(params, callback); } function observer() { if (searchContainer) { searchContainer.addEventListener(search, function (event, newSearchParams) { newSearchParams event.detail || newSearchParams; update({ ...searchParams, ...newSearchParams, page: 1 }); }); searchContainer.addEventListener(clear-search, function () { const defaultSearchParams { ...DefaultSearchParams }; const isCurrentSearchFormStateDefault areQueryParamsEqual({ ...defaultSearchParams, page: null }, { ...searchParams, page: null }); // if mode is LOAD_MORE_BUTTON we shouldt make anything on clear // when search form have default state if (isCurrentSearchFormStateDefault && mode ! NUMBERED_PAGINATION) { return; } // if someone initially go to some page and click Clear on search from // we shouldt navigate to first page. We should preserve page value if (isCurrentSearchFormStateDefault) { defaultSearchParams.page searchParams.page; } syncSearchFormState(defaultSearchParams); update(defaultSearchParams); }); } if (mode LOAD_MORE_BUTTON) { loadMoreButton.addEventListener(click, function (event) { go({ ...searchParams, page: searchParams.page + 1 }); return false; }); } if (mode LOAD_MORE_BUTTON || mode BUTTONLESS_PAGINATION) { // Do initial render go(Object.assign({}, searchParams, { page: 1 })); return; } if (mode NUMBERED_PAGINATION) { // Go to specified page number container.addEventListener(eventPrefix + go, function (event) { let { pageNumber, done } event.detail || {}; pageNumber parseInt(pageNumber, 10); if (!pageNumber) { return; } go({ ...searchParams, page: pageNumber }, done); }); // Page number button click el.addEventListener(click, function (event) { let clickTarget event.target; let current clickTarget.closest(.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next); let pageNumber current?.getAttribute(data-num); if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) { return; } else { go({ ...searchParams, page: parseInt(pageNumber, 10) }); } event.preventDefault(); }); // Whether to load the default page var defaultPageNumber searchParams.page; if (triggerPagingOnInit) { container.dispatchEvent(new CustomEvent(eventPrefix + go, { detail: { pageNumber: defaultPageNumber } })); } } window.addEventListener(popstate, function (event) { var newParams Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); if (!areQueryParamsEqual(newParams, searchParams)) { go(newParams, null, true); if (searchContainer) { syncSearchFormState(newParams); } } }); } function replaceVariables(template, variables) { var formattedString; for (var key in variables) { var value variableskey; var regexp new RegExp(%\\s* + key + \\s*%>, img); formattedString (formattedString || template).replace(regexp, value); } return formattedString; } function isTextEditorValue(obj) { return raw in obj || gjs in obj; } function getTextEditorValue(obj) { if (!obj.html) { return ; } var data obj.html; var css (obj.raw || obj.gjs || {}).css; if (css) { data data + style> + css + /style>; } return data; } /** * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor. * strips out raw proprties and returns only HTML if it exists. * @param {Object} resources a collection retrieved from the database * @return {Object} the newly modified object. */ function recursivelyParse(resources) { forEach(resources, function (value, key) { if (!value) { return; } if (value instanceof Object) { if (isTextEditorValue(value)) { resourceskey getTextEditorValue(value); return; } else { return recursivelyParse(value); } } try { var parsedData JSON.parse(value); if (isTextEditorValue(parsedData)) { resourceskey getTextEditorValue(parsedData); } } catch (e) { // do nothing if we failed to parse value as JSON } }); return resources; } function forEach(collection, iteratee) { var func Array.isArray(collection) ? arrayEach : baseFor; return func(collection, iteratee); } function baseFor(object, iteratee) { if (!object) { return; } var iterable Object(object); var props Object.keys(object); var length props.length; var index -1; while (length--) { var key props++index; if (iteratee(iterablekey, key, iterable) false) { break; } } return object; } function objSet(obj, path, value) { const pathArray Array.isArray(path) ? path : path.match(/(^.\)+/g); pathArray.reduce((acc, key, i) > { if (acckey undefined) acckey {}; if (i pathArray.length - 1) acckey value; return acckey; }, obj); } function arrayEach(array, iteratee) { var index -1; var length array.length; while (++index length) { if (iteratee(arrayindex, index, array) false) { break; } } return array; } function selectPageRangeMode(e) { pageRange e.matches ? mobilePageRange : desktopPageRange; renderPaginationList(); } paginationMql.addEventListener(change, selectPageRangeMode);})(section-23c82208-1c10-4501-9ad8-e2e98f58b00e, JSON.parse({\pageSize\:\{{variables.limit}}\,\resource\:\agents\,\pageRange\:0,\variables\:{\limit\:\{{variables.limit}}\,\offset\:0,\companyId\:\ef21bbb2-46d7-4155-87a3-0369bead35d4\,\categoryId\:\{{pageElement.categoryId}}\,\agentIds\:\642082e0-967b-47be-90e8-274be49416ee\,\812566bb-75c1-41d2-9f4b-64cb5ba3d937\,\cfbdf163-80f3-4cdd-b1bf-0e3af9bd3713\,\5bbb26dc-445b-49cd-acad-0729ba4401a5\,\f68f5e54-bcd6-4f6e-8dc3-d02eb08a1790\,\62318496-a520-4bf8-be4d-d375d850bb41\,\88677b28-0636-4d5c-a79c-a0574a39ea82\,\239f5dfb-84af-455a-b6b0-a35c810aedf4\,\68a01cd4-0756-4d6d-a114-5ec1bccf2ea6\,\ec1ce4df-13a7-45ff-8bae-bc0c743cae9a\},\searchFormParams\:{\param\:\search\,\urlKey\:\search\},{\param\:\officeId\,\global\:true,\urlKey\:\officeId\},{\param\:\tags\,\global\:true,\urlKey\:\area\},\skipScrollOnSearch\:false,\scrollTargetSelector\:\.search-form\,\hidePaginationOnFirstPage\:true,\companyId\:\ef21bbb2-46d7-4155-87a3-0369bead35d4\,\usePageResource\:false,\sectionIndex\:9}));} catch(e) {console.log(e);} try {(function init(sectionDomId) { const section $(# + sectionDomId); const searchContainer section.find(.search-container); const slider section.find(.js-slider); const arrowsContainer section.find(.arrows-container); const isScrollEnabled slider.data(scroll) true ? true : false; const emptyMsg section.find(.js-empty-message); const dataContainer section.find(.data-container); const navSlider section.find(.js-nav-slider); const allCategoryBtn navSlider.data(all-category) true ? button classnav-slider__item data-id typebutton>Show All/button> : ; const sliderOptions { slidesToShow: 3, slidesToScroll: 1, arrows: true, dots: false, appendArrows: arrowsContainer, infinite: isScrollEnabled, prevArrow: button classlp-arrow lp-arrow--prev lp-arrow--dark>/button>, nextArrow: button classlp-arrow lp-arrow--next lp-arrow--dark>/button>, responsive: { breakpoint: 1024, settings: { slidesToShow: 2 } }, { breakpoint: 768, settings: { slidesToShow: 1 } } }; if (!navSlider.length) { slider.slick(sliderOptions); return; } const navSliderOptions { slidesToShow: 5, slidesToScroll: 5, arrows: true, prevArrow: button classlp-arrow lp-arrow--prev lp-arrow--dark>/button>, nextArrow: button classlp-arrow lp-arrow--next lp-arrow--dark>/button>, dots: false, infinite: false, responsive: { breakpoint: 1024, settings: { slidesToShow: 1, slidesToScroll: 1, variableWidth: true } } }; dataContainer.on(data, function () { emptyMsg.removeClass(empty-message--visible); arrowsContainer.show(); if (slider.hasClass(slick-initialized)) slider.slick(unslick); setTimeout(() > { slider.slick(sliderOptions); navSlider.slick(refresh); }, 1); }); dataContainer.on(no-data, function () { arrowsContainer.hide(); emptyMsg.addClass(empty-message--visible); }); function onSearch(officeId) { const params {}; params.officeId officeId ? null : officeId; searchContainer0?.dispatchEvent(new CustomEvent(search, { detail: params })); } searchContainer.on(offices-data, function (evt, { data } {}) { data evt.detail?.data || data; const newButtons data.map(office > `button classnav-slider__item data-id${office.id} typebutton>${office.name}/button>`).join(\n); navSlider.append(allCategoryBtn).append(newButtons); navSlider.slick(navSliderOptions); navSlider.find(.nav-slider__item).first().addClass(nav-slider__item--active); onSearch(navSlider.find(.nav-slider__item).first().data(id)); }); navSlider.on(click, .nav-slider__item, function () { navSlider.find(.nav-slider__item--active).removeClass(nav-slider__item--active); $(this).addClass(nav-slider__item--active); onSearch($(this).data(id)); });})(section-23c82208-1c10-4501-9ad8-e2e98f58b00e, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $section $(# + sectionDomId); const $slider $section.find(.items-slider); let $slides $slider.children(); $slides.each(function () { const $el $(this); const $initials $el.find(.userpic-initials); if (!$initials.length) { return; } const author $el.find(.author).text() || ; if (!author) { return; } $initials.text(author.split(|)0.split(/\s+/).map(w > w0 ? w0.toUpperCase() : ).join()); }); let slidesCount $slider.children().length; if (slidesCount 2) { return; } while (slidesCount 5) { $slides.each(function () { $(this).clone().appendTo($slider); }); slidesCount $slider.children().length; } const arrowsStyle $slider.data(arrows-style) || ; $slider.slick({ centerMode: true, centerPadding: 285px, infinite: true, appendArrows: $section.find(.arrows), arrows: true, nextArrow: `button classslick-next slick-arrow ${arrowsStyle}>/button>`, prevArrow: `button classslick-prev slick-arrow ${arrowsStyle}>/button>`, speed: 300, autoplay: !!$slider.data(autoplay), autoplaySpeed: 6000, responsive: { breakpoint: 1340, settings: { centerPadding: 164px } }, { breakpoint: 991, settings: { centerMode: false } } }); updateSlides(0); function updateSlides(active) { $slider.find(.slick-slide).each(function (i) { const $el $(this); const idx $el.data(slick-index); const r ((idx - active) % slidesCount + slidesCount) % slidesCount; $el.removeClass(sl-prev, sl-next, sl-active); if (r 0) { $el.addClass(sl-active); } else if (r 1 || r 2) { $el.addClass(sl-next); } else if (r slidesCount - 1 || r slidesCount - 2) { $el.addClass(sl-prev); } }); } $slider.on(beforeChange, function (ev, slick, current, next) { $slider.addClass(in-transition); updateSlides(next); }); $slider.on(afterChange, function () { $slider.removeClass(in-transition); });})(section-ad284b19-a4c8-4993-83b7-d0fd822b9f41, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $section $(`#${sectionDomId}`); const $arrowsContainer $section.find(.f-properties__arrows-container); const $slider $section.find(.carousel-container); const arrowsStyle $slider.data(arrows-style) || ; let itemsLength $section.find(.f-properties__item).length; if (itemsLength 1) { $section.find(.carousel-container).addClass(single); } $section.find(.carousel-container).on(init, function () { let nextSlide $section.find(.carousel-container .slick-current).next(.slick-slide).find(.f-properties__item-name).text(); if (itemsLength > 1) { $section.find(.f-properties__next-slide).text(NEXT: + nextSlide); } }); $section.find(.carousel-container).slick({ infinite: true, nextArrow: `button classlp-arrow lp-arrow--next lp-arrow--light ${arrowsStyle}>/button>`, prevArrow: `button classlp-arrow lp-arrow--prev lp-arrow--light ${arrowsStyle}>/button>`, appendArrows: $arrowsContainer, centerMode: true, centerPadding: 200px, responsive: { breakpoint: 1440, settings: { centerPadding: 175px } }, { breakpoint: 1200, settings: { centerPadding: 100px } }, { breakpoint: 1024, settings: { centerPadding: 60px } }, { breakpoint: 768, settings: { centerPadding: 36px } } }); $section.find(.carousel-container).on(afterChange, function () { let nextSlide $section.find(.carousel-container .slick-current).next(.slick-slide).find(.f-properties__item-name).text(); $section.find(.f-properties__next-slide).text(NEXT: + nextSlide); });})(section-97cebd01-af8f-4915-afbe-73c5f041d1c9, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $section $(`#${sectionDomId}`); const content $section.find(.js-content-1); const inputAddress $section.find(namehome-address); const btnContinue $section.find(.js-continue); const btnMail $section.find(.js-mail); const btnBack $section.find(.js-close-form); const btnContact $section.find(data-typeCONTACT_US); const btnPhone $section.find(.js-phone); const $loader $section.find(.loader); const emailInput $section.find(.js-email-input); const emailRegex /a-zA-Z0-9.!#$%&*+/?^_`{|}~\-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)+/; const howWeCalcBtn $section.find(#how-calculate-popup); let inputAddressVal; let addressValuation; let addressValuationRedirectUrl; let service; let validAddressData; const MODAL_ID modal-home-valuation-plunk; const $valueModal $section.find(# + MODAL_ID); const $form $valueModal.find(.hv-form); const $propertyAddressInput $form.find(nameproperty-address); const $propertyValuationInput $form.find(nameproperty-valuation); const $propertyAddressOutput $valueModal.find(.js-property-address); const $propertyValuationOutput $valueModal.find(.js-plunk-value); const VALUATION_ERROR Estimate not available.; emailInput.on(input, function () { if (emailRegex.test(this.value)) { this.setCustomValidity(); } else { this.setCustomValidity(Please enter a valid email address.); } this.reportValidity(); }); function isRetryableError(error) { return error.name TypeError && error.message.includes(fetch) || error.status 503 || error.status 502 || error.status 504 || error.message?.includes(timeout) || error.name AbortError; } async function executeWithRetry(fn) { let maxRetries arguments.length > 1 && arguments1 ! undefined ? arguments1 : 2; let lastError; for (let attempt 0; attempt maxRetries; attempt++) { try { return await fn(); } catch (error) { lastError error; if (attempt maxRetries || !isRetryableError(error)) { throw error; } const delay 2 ** attempt * 1000; await new Promise(resolve > setTimeout(resolve, delay)); } } throw lastError; } function getUserFriendlyErrorMessage(error) { if (error.name AbortError || error.message?.includes(timeout)) { return Connection timed out. Please try again.; } if (error.name TypeError && error.message.includes(fetch)) { return Unable to connect. Please check your internet connection and try again.; } if (error.status 503 || error.status 502 || error.status 504) { return Service temporarily unavailable. Please try again in a moment.; } if (error.status 400) { return Please check your information and try again.; } return Something went wrong. Please try again or contact us directly.; } function logLeadEvent(eventType, data) { let error arguments.length > 2 && arguments2 ! undefined ? arguments2 : null; const eventPayload { event: eventType, companyId: window.luxuryPresence.config.companyId, websiteId: window.luxuryPresence.config.websiteId, timestamp: new Date().toISOString(), hasEmail: !!data.leadEmailAddress, hasAddress: !!data.homeValuationAddress }; if (error) { eventPayload.errorMessage error.message; eventPayload.errorName error.name; eventPayload.errorStatus error.status; console.error(`HomeValuation ${eventType}`, JSON.stringify(eventPayload)); } else { console.log(`HomeValuation ${eventType}`, JSON.stringify(eventPayload)); } if (window.posthog) { window.posthog.capture(eventType, eventPayload); } } function showSubmissionError(message) { const $errorEl $section.find(.submission-error-message); if ($errorEl.length) { $errorEl.text(message || Something went wrong. Please try again.); $errorEl.show(); } } function hideSubmissionError() { const $errorEl $section.find(.submission-error-message); if ($errorEl.length) { $errorEl.hide(); } } function uiShowScene(sceneName, state) { const selector `data-ui-${sceneName}`; const dataName ui + sceneName.charAt(0).toUpperCase() + sceneName.slice(1); $(selector).each(function () { if ($(this).data(dataName) state) { this.hidden false; } else { this.hidden true; } }); } function setAddress(address) { $propertyAddressInput.val(address); $propertyAddressOutput.text(address); } const initMap place > { if (!place) { throw new Error(No place provided for map!); } const center new google.maps.LatLng(place.geocode.location.latitude, place.geocode.location.longitude); map new google.maps.Map($section.find(#map)0, { center, width: 415, height: 152, zoom: 17, disableDefaultUI: true, gestureHandling: none }); }; $form.find(inputnamename).on(keyup, function () { if (this.value.replaceAll(/\d/g, ).trim().split( ).length 2 || this.value.replaceAll(/\d/g, ).trim() ) { this.setCustomValidity(Please input your first name and last name.); } else { this.setCustomValidity(); } }); const openPopup htmlString > { const overlay document.createElement(div); $section.append(overlay); $(overlay).addClass(hv-popup); $(overlay).append(` div classhv-popup__container slideInUp> div classhv-popup__close close-icon idpopup-close>/div> div classhv-popup__content> ${htmlString} /div> /div> `); const closeIcon $(overlay).find(#popup-close); closeIcon.on(click, () > closePopup(overlay)); $(overlay).on(click, e > { if (e.target e.currentTarget) { closePopup(overlay); } }); window.lpUI.requestScrollLock(sectionDomId + _popup); return overlay; }; const closePopup popupEl > { window.lpUI.releaseScrollLock(sectionDomId + _popup); popupEl.remove(); btnContinue.attr(disabled, false); }; const openHowWeCalcPopup () > { openPopup(` div classhv-popup__text-header> h5 classlp-h5 hv-popup__title>How we calculate your estimate/h2> p classtext-neutral hv-popup__lead>Luxury Presence Home Value is the current estimated value of this home. It is calculated from a comprehensive database which encompasses properties from all 50 states, covering 99% of the US population, and valuation software developed by Automated Valuation Model (AVM) Analytics./p> /div> `); }; const processValuation valuationResult > { addressValuation valuationResult && valuationResult.valueDollars ? new Intl.NumberFormat(en-US, { style: currency, currency: USD, maximumFractionDigits: 0, minimumFractionDigits: 0 }).format(valuationResult.valueDollars) : VALUATION_ERROR; $propertyValuationInput.val(addressValuation); $propertyValuationOutput.text(addressValuation); initMap(validAddressData.result); uiShowScene(auth, default); uiShowScene(result, default); uiShowScene(value, placeholder); setTimeout(() > { lpUI.showModal(MODAL_ID, { scrollLock: true }); }, 5000); }; const showLoader () > { let $line $loader.find(.line); $loader.prop(hidden, false); $line.prop(Counter, 0).animate({ Counter: 100 }, { duration: 6000, easing: swing, step: function (now) { $line.css(width, now + %); } }); }; function mapGooglePlacesAddressToFields(validAddressData) { const addressRequest {}; const addressComponentKeys { street_number: streetNumber, route: streetName, administrative_area_level_1: state, postal_code: zipcode, subpremise: addressLine2 }; validAddressData?.result?.address?.addressComponents?.forEach(comp > { const param addressComponentKeyscomp.componentType; if (param && comp.componentName?.text) { addressRequestparam comp.componentName.text; } }); const cityComponentTypes locality, sublocality_level_1, neighborhood; for (const cityType of cityComponentTypes) { const comp validAddressData?.result?.address?.addressComponents?.find(c > c.componentType cityType && c.componentName?.text); if (comp?.componentName?.text) { addressRequest.city comp.componentName.text; break; } } return addressRequest; } const sendHomeValuationEmailAndLeadEvent async () > { let sendHomeValuationEmailApiUrl `${window.luxuryPresence.config.websiteApiGatewayUrl}/api/v1/home-valuation`; const homeValuationAddress inputAddressVal; let homeValuationEstimate addressValuation; if (addressValuation VALUATION_ERROR) { homeValuationEstimate null; } const utm window.localStorage.getItem(utm_vars) || {}; const addressRequest mapGooglePlacesAddressToFields(validAddressData); let homeValPostRequest { pageId: window.luxuryPresence.config.pageId, formId: sectionDomId.slice(8), homeValuationAddress: homeValuationAddress, homeValuationEstimate: homeValuationEstimate, websiteId: window.luxuryPresence.config.websiteId, companyId: window.luxuryPresence.config.companyId, sourceUrl: window.location.href, leadFullName: $section.find(namename)0.value, leadEmailAddress: $section.find(nameemail)0.value, leadPhoneNumber: $section.find(namephone)0.value, address: addressRequest, coordinates: { latitude: validAddressData?.result?.geocode?.location?.latitude ?? null, longitude: validAddressData?.result?.geocode?.location?.longitude ?? null }, ...JSON.parse(utm) }; if (window.luxuryPresence.config.pageMeta.sourceResource) { homeValPostRequest.sourceResource window.luxuryPresence.config.pageMeta.sourceResource; } if (window.luxuryPresence.config.pageMeta.pageElementId) { homeValPostRequest.pageElementId window.luxuryPresence.config.pageMeta.pageElementId; } logLeadEvent(home_valuation_submission_started, homeValPostRequest); try { const result await executeWithRetry(async () > { const controller new AbortController(); const timeoutId setTimeout(() > controller.abort(), 10000); try { const response await fetch(sendHomeValuationEmailApiUrl, { method: POST, body: JSON.stringify(homeValPostRequest), headers: { Content-Type: application/json }, signal: controller.signal }); clearTimeout(timeoutId); if (!response.ok) { const error new Error(Request failed); error.status response.status; throw error; } const responseData await response.json(); return responseData; } catch (error) { clearTimeout(timeoutId); throw error; } }); logLeadEvent(home_valuation_submission_success, homeValPostRequest); if (result?.status success && typeof result?.redirectUrl string) { try { const url new URL(result.redirectUrl, window.location.origin); if (url.protocol http: || url.protocol https:) { addressValuationRedirectUrl url; } } catch (error) { console.warn(Invalid redirect URL:, result.redirectUrl); } } uiShowResult(); if (addressValuationRedirectUrl) { window.location.href addressValuationRedirectUrl.href; } return result; } catch (error) { error.userMessage getUserFriendlyErrorMessage(error); logLeadEvent(home_valuation_submission_failed, homeValPostRequest, error); console.error(Error sending home valuation email:, error); showSubmissionError(error.userMessage); } }; const getAddressValidation async addressStr > { return await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key${window.luxuryPresence.mapApiLoader.apiKey}`, { method: POST, body: JSON.stringify({ address: { addressLines: addressStr }, enableUspsCass: false }) }).then(data > data.json()); }; const setValuation async () > { showLoader(); try { const homeValURL new URL(`${window.luxuryPresence.config.websiteApiGatewayUrl}/api/v1/home-valuation`); if (validAddressData.result && validAddressData.result.address.addressComponents) { const addressParams mapGooglePlacesAddressToFields(validAddressData); Object.entries(addressParams).forEach(_ref > { let key, value _ref; if (value ! undefined && value ! null) { homeValURL.searchParams.append(key, value); } }); } const response await fetch(homeValURL); if (!response.ok) { throw new Error(response.status); } const data await response.json(); if (data) { processValuation(data); } } catch (e) { addressValuation VALUATION_ERROR; $propertyValuationInput.val(addressValuation); $propertyValuationOutput.text(addressValuation); initMap(validAddressData?.result); uiShowScene(auth, default); uiShowScene(result, default); uiShowScene(value, placeholder); setTimeout(() > { lpUI.showModal(MODAL_ID, { scrollLock: true }); }, 5000); } }; const gapi window.luxuryPresence.mapApiLoader.load().then(() > { service new google.maps.places.AutocompleteService(); }); const $inputBlock $section.find(.js-address-search); const $searchResults $inputBlock.find(.search-results); const $resultsContainer $inputBlock.find(.results-container); const $searchLoader $inputBlock.find(.search-in-progress); const $searchWrapper $section.find(.search-wrapper); let searchKw null; let searchActive false; let isLoading false; const searchDelay 300; function searchAddress(term) { const request { input: term, types: address, componentRestrictions: { country: us } }; isLoading true; return new Promise(function (resolve, reject) { gapi.then(function () { service.getPlacePredictions(request, function (results, status) { if (status ! google.maps.places.PlacesServiceStatus.OK) { resolve(null); return; } if (!Array.isArray(results)) { resolve(null); return; } resolve(results); }); }).finally(() > { isLoading false; }); }); } function doSearch(term) { showSearchLoading(); searchAddress(term).then(function (res) { if (term ! searchKw) { return; } setResults(res); }); } function clearSelection() { $searchResults.find(.selected-link).removeClass(selected-link); } function moveSelection(up) { var $cont $resultsContainer.html() ? $resultsContainer : $predefined; var $links $cont.find(.results-link); if (!$links.length) { return; } var idx -1; $links.each(function (i) { if (idx -1 && $(this).is(.selected-link)) { idx i; } }); var newIdx; if (up) { newIdx idx - 1; if (newIdx 0) { newIdx $links.length - 1; } } else { newIdx idx + 1; if (newIdx > $links.length - 1) { newIdx 0; } } if (newIdx ! idx) { $searchResults.find(.selected-link).removeClass(selected-link); $($links.get(newIdx)).addClass(selected-link); } } function inputChanged(ev) { if (ev.which 38) { ev.preventDefault(); moveSelection(true); return false; } if (ev.which 40) { ev.preventDefault(); moveSelection(); return false; } if (ev.which 13) { $lnk $searchResults.find(.selected-link); if ($lnk.length) { $lnk0.click(); $lnk.removeClass(selected-link); hideSearchResults(); window.clearTimeout(btnTimeout); btnTimeout window.setTimeout(function () { btnContinue.click(); }, 500); } } window.clearTimeout(newSearchTimer); newSearchTimer window.setTimeout(startSearch, searchDelay); } function showSearchResults() { searchActive true; updateSearchDisplay(); } function hideSearchResults() { searchActive false; updateSearchDisplay(); } function showSearchLoading() { updateSearchDisplay(); } function hideSearchLoading() { updateSearchDisplay(); } function updateSearchDisplay() { if (!searchActive) { $searchResults.removeClass(show); $searchResults.css(height, 0); content.removeClass(results-visible); return; } const hasResults !!$resultsContainer.html(); if (hasResults) { $searchLoader.addClass(not-visible); $resultsContainer.removeClass(not-visible); content.addClass(results-visible); } else if (isLoading) { $resultsContainer.addClass(not-visible); $searchLoader.removeClass(not-visible); } else { $resultsContainer.addClass(not-visible); $searchLoader.addClass(not-visible); content.removeClass(results-visible); } let height 0; height + $resultsContainer0.getBoundingClientRect().height; height + $searchLoader0.getBoundingClientRect().height; if (height > 0) { $searchResults.addClass(show); } else { $searchResults.removeClass(show); } $searchResults.css(height, height + px); } function setResults(results) { hideSearchLoading(); if (!results) { $resultsContainer.html(); updateSearchDisplay(); return; } if (!results.length) { updateSearchDisplay(); return; } var filteredResults results.filter(function (result) { var mainText result.structured_formatting?.main_text || ; return /^\d+/.test(mainText); }); if (!filteredResults.length) { $resultsContainer.html(div classnothing-found address-error-message>Please enter a valid home address/div>); updateSearchDisplay(); return; } const resultsHtml makeResultsBlockHtml(, filteredResults.map(function (result) { const mainTextMatchedString result.structured_formatting.main_text.substring(result.structured_formatting.main_text_matched_substrings0.offset, result.structured_formatting.main_text_matched_substrings0.length); const restOfTerm result.structured_formatting.main_text.substring(result.structured_formatting.main_text_matched_substrings0.length); return `a classresults-link l14 data-value${result.description} data-place-id${result.place_id}> span classmain-text> span classhighlighted l14 l14--semibold>${mainTextMatchedString}/span>${restOfTerm}, /span> span classsecondary-text>${result.structured_formatting.secondary_text ? result.structured_formatting.secondary_text : }/span> /a>`; })); $resultsContainer.html(resultsHtml); updateSearchDisplay(); } function startSearch() { const term inputAddress.val(); if (term searchKw) { return; } searchKw term; if (term) { doSearch(term); } else { setResults(null); } } function makeResultsBlockHtml(title, links) { if (!links || !links.length) { return ; } let html div classresults-block>; html + div classresults-block-title>; html + div classresults-title-label> + title + /div>/div>; html + links.join() + /div>; return html; } function doneTyping() { inputAddressVal inputAddress.val(); } function addressValidated(data, val) { validAddressData data; const addressComponents validAddressData?.result?.address?.addressComponents || ; const hasStreetNumber addressComponents.some(function (comp) { return comp.componentType street_number; }); const selectedAddress validAddressData?.result?.address?.formattedAddress || val; inputAddress.val(selectedAddress); if (!hasStreetNumber) { btnContinue.attr(disabled, true); validAddressData null; $resultsContainer.html(div classnothing-found address-error-message>Please enter a valid home address/div>); searchActive true; updateSearchDisplay(); return; } doneTyping(); btnContinue.attr(disabled, false); inputAddressVal selectedAddress; } $inputBlock.on(click, .results-link, function () { const val $(this).data(value); hideSearchResults(); if (!val) { return; } getAddressValidation(val.replace(#, Unit )).then(function (data) { addressValidated(data, val); }); }); let newSearchTimer; let btnTimeout; btnContinue.on(click, function () { inputAddressVal inputAddress.val(); if (inputAddressVal) { setAddress(inputAddressVal); setValuation(); btnContinue.attr(disabled, true); } }); function formatPhoneNumber() { let phone btnPhone.data(number) + ; phone phone.replace(/\D/g, ); phone phone.slice(0, 3) + + phone.slice(3, 6) + + phone.slice(6); btnPhone.html(Call + phone); } formatPhoneNumber(); btnBack.on(click, closeModal); btnContact.on(click, closeModal); function closeModal() { $loader.prop(hidden, true); uiShowScene(main, form); btnContinue.attr(disabled, false); lpUI.hideModal(MODAL_ID); inputAddress.focus(); } inputAddress.on(keyup, function () { btnContinue.attr(disabled, true); validAddressData null; }); $(howWeCalcBtn).on(click, () > openHowWeCalcPopup()); function buildMailtoLink(linkEl) { let address arguments.length > 1 && arguments1 ! undefined ? arguments1 : Private Address; let value arguments.length > 2 && arguments2 ! undefined ? arguments2 : 0; const mailtoHref linkEl?.href.replace(/\?.*/, ); const emailSubject Im interested in selling my home; const agentName document.querySelector(`#${sectionDomId} .agent-card__name`)?.textContent.trim() || Agent; const sourceUrl window.location.href; const emailBody `Hi ${agentName},Im looking for more information on selling a property. I received the valuation below from your website, and would like to discuss the available options with you. 🏠 Address: ${address}💰 Valuation: ${value}🌐 Website: ${sourceUrl} When would be the best time to meet?Looking forward to hearing from you.`; const newHref mailtoHref + ?subject + encodeURIComponent(emailSubject) + &body + encodeURIComponent(emailBody); return newHref; } function uiShowResult() { if (addressValuation VALUATION_ERROR) { uiShowScene(result, error); } else if (!addressValuationRedirectUrl) { uiShowScene(result, default); uiShowScene(value, value); } else { uiShowScene(result, default); uiShowScene(value, placeholder); } $valueModal.addClass(js-result-shown); $valueModal.find(.hv-modal__body).scrollTop(0); uiShowScene(main, agent); if (btnMail.length && btnMail.attr(href).indexOf(mailto:) > 0) { btnMail.attr(href, buildMailtoLink(btnMail0, inputAddressVal, addressValuation)); } } $form.on(reset, function (e) { inputAddress.val(); }); window.onSuccessValCb function () { uiShowResult(); }; const EVENT_NAME oauthSuccess; window.removeEventListener(EVENT_NAME, window.onSuccessValCb); window.addEventListener(EVENT_NAME, window.onSuccessValCb); function handleError(e) { const { buyerSellerServiceUrl https://bss.luxurypresence.com } window.luxuryPresence.config; if (e.origin buyerSellerServiceUrl && e.data.event login failed) { if (e.data.provider FACEBOOK) { document.querySelector(# + sectionDomId + iframedata-signin-typefacebook-sign-in).remove(); } else if (e.data.provider GOOGLE) { document.querySelector(# + sectionDomId + iframedata-signin-typegoogle-sign-in).remove(); } if (!document.querySelector(# + sectionDomId + iframedata-signin-type)) { uiShowScene(auth, error); } } } inputAddress.on(focus, showSearchResults); inputAddress.on(keyup focus, inputChanged); $searchResults.on(mouseenter, .results-link, function (ev) { clearSelection(); }); function outsideClickHandler(e) { if ($searchWrapper.find($(e.target)).length > 0) { return; } hideSearchResults(); } $(document).on(click, outsideClickHandler); window.addEventListener(message, handleError); window.onSuccessCallback function () {}; $form.on(submit, async function (e) { e.preventDefault(); hideSubmissionError(); const submitBtn $form.find(buttontypesubmit); submitBtn.prop(disabled, true).addClass(loading); try { await sendHomeValuationEmailAndLeadEvent(); } catch (error) {} finally { submitBtn.prop(disabled, false).removeClass(loading); } });})(section-83ada1dc-c514-464f-aab7-b87138bdadd8, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) {})(section-ccabc689-9fc7-4e77-9811-812a3780cdb5, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var $contactForm $(# + sectionDomId + .newsletter-signup__form); $contactForm.find(.contact-form__reset).click(function (e) { e.preventDefault(); $(this).closest(form).removeClass(success).trigger(reset); }); $contactForm.find(inputnamename).on(keyup, function () { if (this.value.replaceAll(/\d/g, ).trim() ) { this.setCustomValidity(Please enter your name.); } else { this.setCustomValidity(); } }); const form $(# + sectionDomId).find(form); const redirectLink $(# + sectionDomId + .redirect-link); form.on(reset, function () { redirectPage(redirectLink); }); function redirectPage(link) { if (link.length) { const rawHref link.attr(href); link.attr(href, setHttp(rawHref)); link0.click(); } } function setHttp(link) { if (link.search(/^https?\:\/\/|\//) -1) { link http:// + link; } return link; }})(section-d539c121-e859-45ec-8884-5b5c00e2d103, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) {})(section-440ed424-ead1-49d9-ac86-f7431c4d252f, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $section $(# + sectionDomId); if ($section.find(.parallax).length) $section.addClass(parallax-enabled); if ($section.find(.video-wrapper).length) $section.addClass(video);})(section-51327815-1017-4d13-8c6f-4d5eaa4c8850, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId, options) { let section null; switch (sectionDomId) { case NAVBAR: section document.querySelector(body > nav, #global-navbar); break; case FOOTER: section document.querySelector(body > footer, #global-footer); break; case SIDEMENU: section document.querySelector(body > div.sidemenu, #global-sidemenu); break; case CONTACT: section document.querySelector(#modal-global-contact-us); break; case MOBILE_CONTACT: section document.querySelector(body > div.mobile-contact-wrapper, #global-mobile-contact); break; case SUBSCRIBE: // Subscribe Not Implemented section null; break; case ACCOUNT: // Account Not Implemented section null; break; default: section document.querySelector(# + sectionDomId); } if (!section) { return; } var url window.luxuryPresence.defaults.apiGatewayUrl; var companyId window.luxuryPresence.defaults.companyId; var limit options.limit || 8; if (typeof limit string) { limit parseInt(limit, 10) || 8; // this NaN protection also filters out 0 - this is expected } var templateSelector options.templateSelector || .jsIGTemplate; var containerSelector options.containerSelector || .jsIGContainer; var hasDataClass options.hasDataClass || has-data; var hideActivateMessage options.hasDataClass || false; var payload { companyId: companyId, limit: limit }; if (options.resourceId && typeof options.resourceId string && !options.resourceId.match(/^{{.*}}$/)) { payload.resourceId options.resourceId; payload.resource options.resource || agent; payload.fallbackToNoResource options.fallbackToNoResource true || options.fallbackToNoResource true; } var query query InstagramFeed (\n + $companyId: String\n + $instagramAuthorizationId: String\n + $username: String\n + (payload.resourceId ? $resource: InstagramAuthResourceEnum\n $resourceId: ID\n $fallbackToNoResource: Boolean : ) + $limit: Int\n + ) {\n + instagramFeed (\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; var templateHTML section.querySelector(templateSelector)?.innerHTML || ; var template Handlebars.compile(templateHTML); var container section.querySelector(containerSelector); if (options.variables) { Object.keys(options.variables).forEach(function (key) { if (options.variables.hasOwnProperty(key) && (typeof options.variableskey ! string || !options.variableskey.match(/^{{.*}}$/))) { payloadkey options.variableskey; } }); } function getData() { var feed { error: true }; superagent.post(url + /graphql).withCredentials() // for EB .send({ query: query, variables: payload }).then(res > { try { if (!res.body.errors) { feed res.body.data.instagramFeed; if (!feed.active) { if (!hideActivateMessage && sectionDomId section-temp && container) { if (payload.resourceId) { container.innerHTML div styletext-align: center>Instagram account is not connected to selected + payload.resource + .br /> Connect it on the + payload.resource + page/div>; } else { container.innerHTML div styletext-align: center>Instagram account is not connected.br /> Connect it on a href/profile>Profile page/a>/div>; } } } else { if (feed.items.length) { if (hasDataClass) { section.classList.add(hasDataClass); } const feedName feed.username; section.querySelectorAll(.jsIGLink).forEach(link > link.setAttribute(href, feed.feedUrl)); section.querySelectorAll(.jsIGName).forEach(name > { name.textContent @ + feedName; name.setAttribute(title, @ + feedName); }); if (container && template) { container.innerHTML template(feed); } } } } } catch (e) {} section.dispatchEvent(new CustomEvent(ig-data, { detail: feed })); }).catch(e > { console.log(err, e); section.dispatchEvent(new CustomEvent(ig-data, { detail: feed })); }); } getData();})(section-b506bd7f-e011-4ce3-8bf7-583fae4f992f, JSON.parse({\limit\:33,\resource\:\agent\,\resourceId\:\\,\fallbackToNoResource\:\true\,\companyId\:\ef21bbb2-46d7-4155-87a3-0369bead35d4\,\sectionIndex\:17}));} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $section $(# + sectionDomId); var templateHTML $section.find(.jsIGItem).html(); var itemTemplate templateHTML && Handlebars.compile(templateHTML); const $container $section.find(.ig-feed-feed); const $topPrev $section.find(.top-nav-prev); const $topNext $section.find(.top-nav-next); const $bottomPrev $section.find(.bottom-nav-prev); const $bottomNext $section.find(.bottom-nav-next); let limit 33; try { limit parseInt($container0.datasetlimit); } catch (e) {} if (!limit) { limit 33; } let igFeed {}; let usedWidth 0; let slider null; $section.on(ig-data, function (ev, feed) { feed ev.detail || feed; igFeed feed; if (feed.active && feed.items.length) { buildSlider(); } }); $(window).on(resize.lpui-auto-clean, onResize); let timer null; function onResize() { clearTimeout(timer); timer window.setTimeout(buildSlider, 50); } function getLayout(w, n) { if (w > 1100) { if (n > 7) { return { type: type1, single: 1, multi: n, slides: 3, slider: n > 9 }; } if (n > 5) { return { type: type1, single: 2, multi: n, slides: 3, slider: false }; } return { type: type1, single: n, multi: n, slides: 3, slider: n > 3 }; } else if (w > 880) { if (n > 4) { return { type: type2, single: 1, multi: n, slides: 2.5, slider: n > 7 }; } return { type: type1, single: n, multi: n, slides: 3, slider: n > 3 }; } else if (w > 767) { if (n > 4) { return { type: type3, single: 1, multi: n, slides: 2, slider: n > 5 }; } return { type: type4, single: n, multi: n, slides: 2, slider: n > 2 }; } else if (w > 460) { return { type: type4, single: n, multi: n, slides: 2, slider: n > 2 }; } return { type: type5, single: n, multi: n, slides: 1, slider: n > 1 }; } function ensureClass($el, className) { if ($el.hasClass(className)) { return; } $el.addClass(className); } function makeSquare($el) { const el $el0; el.style.width ; el.style.height ; const rect el.getBoundingClientRect(); if (rect.width ! rect.height) { el.style.width rect.height + px; } } function buildSlider() { const cWidth $container0.getBoundingClientRect().width; if (cWidth usedWidth) { return; } $container.empty(); slider $(div classig-feed-slider>/div>); const items igFeed.items.slice(0, limit); const layout getLayout(cWidth, items.length); let i 0; let slide null; while (i layout.single) { slide $(`div classslide-single ${layout.type}>/div>`).append(itemTemplate(itemsi)).appendTo(slider); i++; } while (i layout.multi) { slide $(`div classslide-multi ${layout.type}>/div>`).appendTo(slider); let slideContent $(div classslide-multi-content>/div>).appendTo(slide); const lim i + 4; while (i lim && i layout.multi) { slideContent.append(itemTemplate(itemsi)); i++; } } $container.append(slider); if (layout.slider) { $topPrev.removeClass(hidden-control); $topNext.removeClass(hidden-control); $bottomPrev.removeClass(hidden-control); $bottomNext.removeClass(hidden-control); let prev, next; if ($bottomPrev.parent()0.getBoundingClientRect().width) { prev $bottomPrev; next $bottomNext; } else { prev $topPrev; next $topNext; makeSquare($topPrev); makeSquare($topNext); } slider.children().each(function () { this.style.width this.getBoundingClientRect().width + px; }); slider.slick({ dots: false, prevArrow: prev, nextArrow: next, slidesToScroll: 1, infinite: false, slidesToShow: layout.slides }); } else { ensureClass($topPrev, hidden-control); ensureClass($topNext, hidden-control); ensureClass($bottomPrev, hidden-control); ensureClass($bottomNext, hidden-control); } }})(section-b506bd7f-e011-4ce3-8bf7-583fae4f992f, undefined);} catch(e) {console.log(e);} var { body } document; var globalNav body.querySelector(:scope > nav); var globalSideMenu body.querySelector(:scope > div.sidemenu); document.querySelectorAll(body > .modal .close).forEach(modalCloseBtn > { modalCloseBtn.addEventListener(click, function() { window.lpUI.hideClosestModal(modalCloseBtn); }); }); window.addEventListener(click, function() { document.querySelectorAll(.share-popup).forEach(sharedPopup > { sharedPopup.style.display none ; }); }); /* Misc Partials / Addons */ function initWOW() { if (wow) { wow.init(); wow.scrollHandler(); setTimeout(function () { const wowHideStyle document.getElementById(wow-hide-elements); if(wowHideStyle) { wowHideStyle.disabled true; } }, 1); } } const wowHideElements document.getElementById(wow-hide-elements); if (wowHideElements) { wowHideElements.disabled false; } initWOW(); /* Generic Navbar Handling */ globalNav?.querySelectorAll(.hamburger-component).forEach(hamburgerComponent > { hamburgerComponent.addEventListener(click, function() { window.lpUI.sideMenuToggle(); }); }); globalSideMenu?.querySelectorAll(.toggle).forEach(toggleEl > { toggleEl.addEventListener(click, function() { window.lpUI.sideMenuToggle(); }); }); document.querySelectorAll(body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a).forEach(linkEl > { linkEl.addEventListener(click, function(e) { e.preventDefault(); e.stopPropagation(); var subNav linkEl.parentElement.querySelector(:scope > .sub-nav); if (subNav && subNav.classList.contains(visible)){ subNav.classList.remove(visible); } else { globalNav?.querySelectorAll(.sub-nav-container .sub-nav).forEach(globalSubNav > { globalSubNav.classList.remove(visible); }); globalSideMenu?.querySelectorAll(.sub-nav).forEach(sideMenuSubNav > { sideMenuSubNav.classList.remove(visible); }); subNav?.classList.add(visible); } }); }); window.addEventListener(click, function() { document.querySelectorAll(nav .sub-nav.visible, .sidemenu .sub-nav.visible).forEach(subNavEl > { subNavEl.classList.remove(visible); }); }); } document.addEventListener(DOMContentLoaded, lpGlobalInit); /script> script typemodule> function selectorExists(selector) { return document.querySelector(selector) ! null; } // Function to initialize the third-party library function initParoller(selector .my-paroller) { var $parollerElements $(selector); if ($parollerElements.length > 0 && typeof $parollerElements.paroller function) { $parollerElements.paroller(); } } const parollerSelector .my-paroller; if (selectorExists(parollerSelector)) { window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() { initParoller(parollerSelector); window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded true; }); } /script> !-- Google Tag Manager (noscript) --> noscript>iframe srchttps://www.googletagmanager.com/ns.html?idGTM-T9SFQGHZ height0 width0 styledisplay:none;visibility:hidden>/iframe>/noscript> !-- End Google Tag Manager --> script srchttps://cdn.userway.org/widget.js data-accountn1DRbtZoc3 defer onloadonAccessibilityWidgetLoaded()>/script> script> function onAccessibilityWidgetLoaded() { var MS_IN_TWO_MINUTES 120000; window.setTimeout(function() { var accessibilityWidget document.querySelector(.uwy:not(.uon)); if (accessibilityWidget) { accessibilityWidget.style.display none; } }, MS_IN_TWO_MINUTES); } /script>script>(function(){function c(){var ba.contentDocument||a.contentWindow.document;if(b){var db.createElement(script);d.innerHTMLwindow.__CF$cv$params{r:9cf0750b6e4ea509,t:MTc3MTI4MDY4OC4wMDAwMDA};var adocument.createElement(script);a.nonce;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 adocument.createElement(iframe);a.height1;a.width1;a.style.positionabsolute;a.style.top0;a.style.left0;a.style.bordernone;a.style.visibilityhidden;document.body.appendChild(a);if(loading!document.readyState)c();else if(window.addEventListener)document.addEventListener(DOMContentLoaded,c);else{var edocument.onreadystatechange||function(){};document.onreadystatechangefunction(b){e(b);loading!document.readyState&&(document.onreadystatechangee,c())}}}})();/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]