Help
RSS
API
Feed
Maltego
Contact
Domain > chrisrandall.lakere.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2024-05-25
54.67.31.72
(
ClassC
)
2026-02-11
104.18.119.91
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Wed, 11 Feb 2026 12:10:39 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveCache-Control: max-age3600Expires: Wed, 11 Feb 2026 13:10:39 GMTLocation: https://chrisrandall.lakere.com/Set-Cookie: __cf_bm6L2WoIQDogguxwAfdBVgkhy7k6wbkQv0NnQXH5uMRKQ-1770811839-1.0.1.1-7i3AM2Ye2ry.a3cvbCpEoj_cR.6Rl9iwcEMChOBV8V3ACCEzhxP_xWDz6ry9hnAV72AYww3VkpoKruexo3.KA19g.H9m.a92POrtWimK7vY; path/; expiresWed, 11-Feb-26 12:40:39 GMT; domain.chrisrandall.lakere.com; HttpOnlyServer: cloudflareCF-RAY: 9cc3be8c8bd9c146-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: Wed, 11 Feb 2026 12:10:39 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveCF-RAY: 9cc3be8cdd9c302c-PDXx-powered-by: Luxury Presencex-amz-id-2: 0C5VPHm0lw1CkpMiY95UlfKWuiR90mst6aSOZTXihLjn4LlM4QsAgg2mriH0nkDS9WG7R25pJWL/hO+flOmqlJuRL6OUpqKOx-amz-request-id: PQV1GJYCT2D306Z6last-modified: Wed, 11 Feb 2026 05:58:38 GMTx-amz-server-side-encryption: AES256Cache-Control: max-age600, stale-while-revalidate1200, publicCF-Cache-Status: EXPIREDAccept-Ranges: bytesSet-Cookie: __cf_bmEC6t.QJqYsdSq8xGHBJ3lrEoEjkDfq7bNo6knsoQoB8-1770811839-1.0.1.1-mMuRK1vQE5334Ha2yJDjP_9JzGbJGwF1pW1krqQvJT2TlXxrr2ICwC8aixn_2iSameTvJwe4fm6yKKHDccGNnoY22H4GQW_xnufrSEI_UKw; path/; expiresWed, 11-Feb-26 12:40:39 GMT; domain.chrisrandall.lakere.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>Chris Randall | Seattle, WA Real Estate Agent/title> meta propertyog:title contentChris Randall | Seattle, WA Real Estate Agent> meta nametwitter:title contentChris Randall | Seattle, WA Real Estate Agent> meta propertyog:image contenthttps://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/219494aa-fc62-438e-bbac-6b3f6f7f0af8> meta nametwitter:image contenthttps://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/219494aa-fc62-438e-bbac-6b3f6f7f0af8> meta propertyog:url contenthttps://chrisrandall.lakere.com/> link relcanonical hrefhttps://chrisrandall.lakere.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?familyLato:100,100i,300,300i,400,400i,700,700i,900,900i>link relstylesheet hrefhttps://fonts.googleapis.com/css?familyMontserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,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:Lato,sans-serif;--global-primary-font-family-short:Lato;--global-secondary-font-family:Montserrat,sans-serif;--global-secondary-font-family-short:Montserrat;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:16px;--global-h1-font-size:70px;--global-h2-font-size:42px;--global-h3-font-size:30px;--global-h4-font-size:28px;--global-h5-font-size:22px;--global-h6-font-size:20px;--global-section-padding:96px;}@media (max-width: 768px){:root{--global-section-padding:64px;}}body{padding:0px;background-color:#fff;font-family:Montserrat,sans-serif;font-size:16px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:Lato,sans-serif;}h1{font-size:70px;}h2{font-size:42px;}h3{font-size:30px;}h4{font-size:28px;}h5{font-size:22px;}h6{font-size:20px;}/style> link relstylesheet typetext/css hrefhttps://styles.luxurypresence.com/masterpiece/index.css /> style idwebsite-css>.hyperlink-style-1:before{content:!important;}.hyperlink-style-2:before{content:!important;}body p:not(--global-primary-font-family){font-weight:300!important;}.lp-h2>p{font-weight:600!important;}h1,.lp-h1,h2,.lp-h2,h3,.lp-h3,h4,.lp-h4,h5,.lp-h5,h6,.lp-h6{text-transform:uppercase;font-weight:600!important;}div#global-mobile-contact .contact-form__item .lp-input{border-color:#000!important;color:#000!important;}div#global-mobile-contact .lp-h3{color:#002855;}div#global-mobile-contact .connect-btn{background:#002855;color:#FFF;}div#global-mobile-contact .contact-form__inputs-container .lp-btn{background-color:#002855;border-color:#002855;color:#FFF;}div#global-mobile-contact .contact-form__inputs-container .lp-btn:hover{background-color:#D45D00;border-color:#D45D00;color:#FFF;}div#modal-global-contact-us .contact-form__close.close{opacity:1!important;}@media (max-width: 1024px){div#modal-global-contact-us .contact-form__close.close{-webkit-filter:invert(100%)!important;filter:invert(100%)!important;}}div#modal-global-contact-us .lp-a a:not(.hyperlink-style-1):not(.hyperlink-style-2):after{background:#D45D00;}div#modal-global-contact-us a:hover{color:#D45D00;}div#modal-global-contact-us .company{color:#000;border-color:#002855;}div#modal-global-contact-us .contact-form__title2{color:#002855;}div#global-sidemenu .navigation__link{text-transform:uppercase;font-weight:600;}div#global-sidemenu .navigation__link:hover{color:#D45D00;}div#global-sidemenu .sub-nav__link{text-transform:uppercase;}div#global-sidemenu .sub-nav__link:hover{color:#D45D00;}div#global-sidemenu .sidemenu__toggle{text-transform:uppercase;}nav#global-navbar .navigation__link{font-size:14px;text-transform:uppercase;}nav#global-navbar .sub-nav__link{text-transform:uppercase;}nav#global-navbar .header.theme-light .header__hamburger circle{fill:#fff;}nav#global-navbar .header.theme-light .header__hamburger svg rect{fill:#002855!important;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item a.navigation__link{color:#fff;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item a.navigation__link:hover{color:#dedede!important;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item:after{border-color:#fff;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item .sub-nav__link{color:#000;background-color:#fff;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item .sub-nav__link:hover{color:#FFF;background-color:#D45D00;}nav#global-navbar .header.theme-light ul.navigation li.navigation__item .navigation__link:after{background:#fff;}nav#global-navbar .header .header__hamburger circle{fill:#002855;}nav#global-navbar .header .header__hamburger svg rect{fill:#FFF!important;}nav#global-navbar .header ul.navigation li.navigation__item a.navigation__link{color:#000;}nav#global-navbar .header ul.navigation li.navigation__item a.navigation__link:hover{color:#D45D00!important;}nav#global-navbar .header ul.navigation li.navigation__item:after{border-color:#000;}nav#global-navbar .header ul.navigation li.navigation__item .sub-nav__link{color:#000;background-color:#fff;}nav#global-navbar .header ul.navigation li.navigation__item .sub-nav__link:hover{color:#FFF!important;background-color:#D45D00;}nav#global-navbar .header ul.navigation li.navigation__item .navigation__link:after{background:#D45D00;}nav#global-navbar.scroll .header{background-color:#FFF;}nav#global-navbar.scroll .header .header__hamburger circle{fill:#002855;}nav#global-navbar.scroll .header .header__hamburger svg rect{fill:#FFF!important;}nav#global-navbar.scroll .header ul.navigation li.navigation__item a.navigation__link{color:#000;}nav#global-navbar.scroll .header ul.navigation li.navigation__item a.navigation__link:hover{color:#D45D00!important;}nav#global-navbar.scroll .header ul.navigation li.navigation__item:after{border-color:#000;}nav#global-navbar.scroll .header ul.navigation li.navigation__item .sub-nav__link{color:#000;background-color:#fff;}nav#global-navbar.scroll .header ul.navigation li.navigation__item .sub-nav__link:hover{color:#FFF!important;background-color:#D45D00;}nav#global-navbar.scroll .header ul.navigation li.navigation__item .navigation__link:after{background:#D45D00;}nav#global-navbar.scroll .header.theme-light .logo__img.light{display:none;}nav#global-navbar.scroll .header.theme-light .logo__img.dark{display:block;}nav#global-navbar.scroll .header.theme-auto .logo__img.light{display:none;}nav#global-navbar.scroll .header.theme-auto .logo__img.dark{display:block;}@media only screen and (min-width:534px){nav#global-navbar .header__logo a.logo{width:210px;height:74px;max-width:210px;}nav#global-navbar .header__logo a.logo .logo__img{width:300px;height:74px;}}footer#global-footer .site-footer__col-title{color:#002855;}footer#global-footer .site-footer__disclaimer:after{background-color:#ccc;opacity:1;}footer#global-footer .site-footer__disclaimer{opacity:1;}footer#global-footer .site-footer__col-content{opacity:1;}footer#global-footer a:not(.socials__item),footer#global-footer .link,footer#global-footer .footer-navigation__link{-webkit-text-decoration:none;text-decoration:none;position:relative!important;color:#000!important;}footer#global-footer a:not(.socials__item):hover,footer#global-footer .link:hover,footer#global-footer .footer-navigation__link:hover{color:#D45D00!important;opacity:1!important;}footer#global-footer a:not(.socials__item):before,footer#global-footer .link:before,footer#global-footer .footer-navigation__link:before,footer#global-footer a:not(.socials__item):after,footer#global-footer .link:after,footer#global-footer .footer-navigation__link:after{-webkit-transition:0.4s;transition:0.4s;-webkit-text-decoration:none!important;text-decoration:none!important;line-height:1;content:;height:1px;position:absolute!important;bottom:0;left:0;}footer#global-footer a:not(.socials__item):before,footer#global-footer .link:before,footer#global-footer .footer-navigation__link:before{width:100%!important;background-color:#ccc!important;opacity:1;}footer#global-footer a:not(.socials__item):after,footer#global-footer .link:after,footer#global-footer .footer-navigation__link:after{width:0%!important;background-color:#D45D00!important;}footer#global-footer a:not(.socials__item):hover:after,footer#global-footer .link:hover:after,footer#global-footer .footer-navigation__link:hover:after{width:100%!important;}@media only screen and (max-width: 1280px){footer#global-footer a:not(.socials__item),footer#global-footer .link,footer#global-footer .footer-navigation__link{overflow-wrap:anywhere;-webkit-text-decoration:underline!important;text-decoration:underline!important;white-space:normal!important;}footer#global-footer a:not(.socials__item):before,footer#global-footer .link:before,footer#global-footer .footer-navigation__link:before{background-color:transparent;width:0%!important;}footer#global-footer a:not(.socials__item):after,footer#global-footer .link:after,footer#global-footer .footer-navigation__link:after{background-color:transparent;}footer#global-footer a:not(.socials__item):hover:after,footer#global-footer .link:hover:after,footer#global-footer .footer-navigation__link:hover:after{width:0%!important;}}footer#global-footer div.site-footer__copy div:nth-child(2) a,footer#global-footer .footer-navigation__link{padding-bottom:5px!important;}footer#global-footer .footer-navigation__link{text-transform:uppercase;}footer#global-footer .site-footer__logo-bar .site-footer__logo-container img{max-height:100px;}/style> style idwow-hide-elements>.wow{visibility:hidden!important}/style> style idpage-css> #section-e01092d0-b322-43e1-a7f1-760b2ef5131e{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#000000;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:0%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#000000;--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/219494aa-fc62-438e-bbac-6b3f6f7f0af8);background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e div.opening-with-search .search-lease-tab:not(.active){background-color:#002855!important;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e div.opening-with-search .predefined-links{background-color:#00285580!important;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e div.opening-with-search .predefined-links a{-webkit-text-decoration:underline;text-decoration:underline;text-underline-offset:3px;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e{overflow:visible;z-index:1;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e>.video-wrapper-extended>.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-e01092d0-b322-43e1-a7f1-760b2ef5131e>.video-wrapper-extended>.full-screen-video-component>.video-wrapper iframe,#section-e01092d0-b322-43e1-a7f1-760b2ef5131e>.video-wrapper-extended>.full-screen-video-component>.video-wrapper video{pointer-events:none;-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;max-width:none;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e>.video-wrapper-extended>.full-screen-video-component>.video-wrapper.playing iframe,#section-e01092d0-b322-43e1-a7f1-760b2ef5131e>.video-wrapper-extended>.full-screen-video-component>.video-wrapper.playing video{opacity:1;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e>.video-wrapper-extended>.full-screen-video-component>.video-wrapper iframe{position:absolute;top:50%;left:50%;width:100%;height:100%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);pointer-events:none;}@media (min-aspect-ratio: 16/9){#section-e01092d0-b322-43e1-a7f1-760b2ef5131e>.video-wrapper-extended>.full-screen-video-component>.video-wrapper iframe{height:56.25vw;}}@media (max-aspect-ratio: 16/9){#section-e01092d0-b322-43e1-a7f1-760b2ef5131e>.video-wrapper-extended>.full-screen-video-component>.video-wrapper iframe{width:177.78vh;}}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .video-wrapper{position:absolute;top:0;left:0;height:100%;width:100%;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .full-screen-video-component{position:relative;height:100%;overflow:hidden;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search{position:relative;--top-padding:170px;--bottom-padding:30px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:770px;padding-top:var(--top-padding);padding-bottom:var(--bottom-padding);}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search.height-class-Full{min-height:100vh;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search.height-class-600px{min-height:600px;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .bottom-spacer{position:relative;z-index:0;-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;max-height:calc(var(--top-padding) - var(--bottom-padding));}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .center-block{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 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;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:center;position:relative;z-index:1;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .opening-description{letter-spacing:.1em;margin-bottom:15px;}@media (max-width: 768px){#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .opening-description a{white-space:pre-line;}}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .opening-title{margin-bottom:15px;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .opening-button{margin:0 15px;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .lp-title-group{max-width:100%;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-form{margin-top:30px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-form.with-filters{padding-top:32px;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-button{margin:5px;border-radius:0;outline:none;background-color:#000;color:#fff;height:44px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:50px;padding-right:50px;-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;cursor:pointer;-webkit-transition:all .3s ease;transition:all .3s ease;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-button:hover{background-color:#fff;color:#000;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-lease-tabs{position:absolute;left:0;bottom:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-lease-tab{padding:4px 20px;background-color:#000;color:#fff;cursor:pointer;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-lease-tab.active{background-color:#fff;color:#000;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-wrapper{margin:5px;letter-spacing:normal;width:100%;max-width:444px;position:relative;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-input-container{width:100%;border:none;height:43px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 16px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-input-container .search-icon{color:#c0c0c0;margin-right:10px;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:20px;line-height:0;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-input-container .search-input{color:#000;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;width:50px;border:none;border-radius:0;outline:none;background:transparent;font-size:16px;padding:0;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-results{line-height:normal;text-align:left;background-color:rgba(0, 0, 0, 0.8);position:absolute;width:100%;left:0;top:100%;border:none;overflow:hidden;-webkit-transition:height 0.3s ease;transition:height 0.3s ease;height:0;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .results-container,#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .predefined-links{padding:10px 0;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .results-container a,#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .predefined-links a{color:#b6b6b6;-webkit-transition:color 0.3s ease;transition:color 0.3s ease;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .results-container a:hover,#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .predefined-links a:hover{color:#fff;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .predefined-links{max-height:400px;overflow:auto;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .results-block{margin:15px 0;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .results-block-title{margin:0;padding:0 48px;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .results-block-title .results-title-label{margin:0 20px 10px 0;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .results-block-title .search-near-container{margin-bottom:15px;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .results-block:nth-child(n + 2) .search-near-container{display:none;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .results-link{display:block;padding:4px 48px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .results-link.selected-link{color:#fff;background-color:rgba(255, 255, 255, 0.2);}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .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-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .not-visible{display:none!important;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .nothing-found{width:100%;padding:20px;}@media (max-width: 560px){#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-form{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-button{width:100%;max-width:444px;}}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening-with-search .search-near{cursor:pointer;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;-webkit-transition:background-color 0.3s ease;transition:background-color 0.3s ease;background-color:transparent;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-wrap{width:100%;height:100%;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:20px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-clip-path:polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%);clip-path:polygon(50% 50%, 50% 50%, 50% 50%, 50% 50%);-webkit-transition:clip-path 0.4s ease;transition:clip-path 0.4s ease;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-modal{border-radius:20px;padding:10px 20px 20px;max-width:400px;min-width:100px;background-color:rgba(0,0,0,0.9);color:#fff;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;position:relative;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;max-height:100%;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-close{position:absolute;width:40px;height:40px;top:10px;right:10px;cursor:pointer;-webkit-transition:all 0.3s ease;transition:all 0.3s ease;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-close:before{content:;width:20px;height:2px;background-color:#fff;position:absolute;left:10px;top:19px;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-close:after{content:;width:20px;height:2px;background-color:#fff;position:absolute;left:10px;top:19px;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-close:hover{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2);}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .search-near-hidden .search-near-container{display:none;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-title{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:20px;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-container{-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;overflow:auto;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-container p{margin:0;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .loc-msg-container p+p{margin-top:1em;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e.visible-loc-msg{z-index:1000;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e.visible-loc-msg .loc-msg-backdrop{background-color:rgba(255,255,255,0.4);}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e.visible-loc-msg .loc-msg-wrap{-webkit-clip-path:polygon(0 0, 0 100%, 100% 100%, 100% 0%);clip-path:polygon(0 0, 0 100%, 100% 100%, 100% 0%);}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening__carousel .title-item{display:none;}#section-e01092d0-b322-43e1-a7f1-760b2ef5131e .opening__carousel.visible .title-item{display:block;}@media (min-width: 960px) and (orientation: landscape){#section-e01092d0-b322-43e1-a7f1-760b2ef5131e{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/219494aa-fc62-438e-bbac-6b3f6f7f0af8);}}@media (min-width: 1280px) and (orientation: landscape){#section-e01092d0-b322-43e1-a7f1-760b2ef5131e{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/219494aa-fc62-438e-bbac-6b3f6f7f0af8);}}@media (min-width: 1920px) and (orientation: landscape){#section-e01092d0-b322-43e1-a7f1-760b2ef5131e{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/219494aa-fc62-438e-bbac-6b3f6f7f0af8);}}@media (min-width: 2560px) and (orientation: landscape){#section-e01092d0-b322-43e1-a7f1-760b2ef5131e{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/219494aa-fc62-438e-bbac-6b3f6f7f0af8);}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#FDFDFE;--bgColor_H:240;--bgColor_S:33%;--bgColor_L:99%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#FDFDFE;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 div.agent-detail-section{padding:96px 0;}@media (max-width: 768px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 div.agent-detail-section{padding:64px 0;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 div.redesign .lp-h2{color:#002855;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 div.redesign .lp-h4{color:#002855;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 div.redesign .agent-detail__description-body{border-color:#002855!important;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 div.agent-detail-section a{font-weight:normal;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 ul.contact li:not(.full-width):nth-child(2){display:none;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 ul.contact li:last-child{display:none;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail-section{padding:100px 0;}@media(max-width: 991px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail-section{padding:48px 0 28px;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail-section .email-wrap{white-space:nowrap;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail{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:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;margin-bottom:15px;}@media(max-width: 768px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail{display:block;margin-bottom:0;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail h4{margin-bottom:35px;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail h4+h4{margin-top:-25px;}@media(max-width: 991px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail h4+h4{margin-top:-12px;}}@media(max-width: 991px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail h4{margin-bottom:26px;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .tags{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;gap:8px;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .tags__separator{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;background-color:#c0c0c0;height:17px;width:1px;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .tags__item{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}@media(max-width: 768px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .show-desktop{display:none;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .show-mobile{display:none;}@media(max-width: 768px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .show-mobile{display:block;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__img-wrap{width:50%;padding-right:130px;margin-bottom:35px;}@media(max-width: 991px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__img-wrap{padding-right:30px;}}@media(max-width: 768px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__img-wrap{width:100%;margin:0 auto 30px;padding-right:0;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__img{-webkit-background-size:cover;background-size:cover;-webkit-background-position:center;background-position:center;margin-bottom:35px;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__img img{width:100%;height:100%;object-fit:cover;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__info{width:50%;}@media(max-width: 768px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__info{width:100%;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .contact{list-style:none;margin:0 -5px 20px;padding:0;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-3cea3d6b-545c-4609-8163-315aa5a23b97 .contact .contact-title{text-transform:uppercase;margin-bottom:6px;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .contact li{padding:0 5px 25px;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;}@media(max-width: 768px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .contact li{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .contact li.full-width{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__description{width:100%;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .lp-h2{margin-bottom:16px;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__description-body{padding:25px 0;border-top:1px solid hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.2);border-bottom:1px solid hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.2);}@media(max-width: 991px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__description-body{padding:35px 0;border-bottom:none;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .agent-detail__description-body p:last-child{margin-bottom:0;}@media(max-width: 768px){#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .lp-socials{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .redesign p{margin-bottom:1.666rem;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible-text{display:none;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible .full{position:absolute;left:0;top:0;width:100%;opacity:1;pointer-events:auto;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible .text-wrap{position:relative;-webkit-transition:height ease .3s;transition:height ease .3s;height:var(--fullHeight);overflow:hidden;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible .short{position:absolute;left:0;top:0;width:100%;opacity:0;pointer-events:none;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible .read-more{display:block;position:relative;cursor:pointer;margin-top:22px;margin-left:30px;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible .read-more__more{display:none;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible.collapsed .read-more__less{display:none;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible.collapsed .read-more__more{display:inline;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible.collapsed .full{opacity:0;-webkit-transition:opacity 0s ease .3s;transition:opacity 0s ease .3s;pointer-events:none;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible.collapsed .short{opacity:1;-webkit-transition:opacity 0s ease .3s;transition:opacity 0s ease .3s;pointer-events:auto;}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .collapsible.collapsed .text-wrap{height:var(--shortHeight);}#section-3cea3d6b-545c-4609-8163-315aa5a23b97 .visible{display:block;}#section-addd50b0-3755-4265-936d-832481b96b40{overflow:visible;}#section-addd50b0-3755-4265-936d-832481b96b40.modal .section.section--full-height{padding-top:0;}#section-addd50b0-3755-4265-936d-832481b96b40.modal .close{width:40px;height:40px;}#section-addd50b0-3755-4265-936d-832481b96b40.modal .close:before,#section-addd50b0-3755-4265-936d-832481b96b40.modal .close:after{display:block;content:;width:20px;height:2px;position:absolute;left:50%;top:50%;background-color:#ccc;}#section-addd50b0-3755-4265-936d-832481b96b40.modal .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);}#section-addd50b0-3755-4265-936d-832481b96b40.modal .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);}#section-addd50b0-3755-4265-936d-832481b96b40.modal .close img,#section-addd50b0-3755-4265-936d-832481b96b40.modal .close .lp-close-icon{display:none;}#section-addd50b0-3755-4265-936d-832481b96b40 .section{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;text-align:center;min-height:700px;width:100%;color:#211f1f;--fontColor:#211f1f;--fontColor_H:0;--fontColor_S:3%;--fontColor_L:13%;--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;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;min-height:auto;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section.section--full-height{padding-top:140px;}@media (min-width: 769px){#section-addd50b0-3755-4265-936d-832481b96b40 .section.section--full-height{min-height:100vh;}#section-addd50b0-3755-4265-936d-832481b96b40 .section.section--full-height .box{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section input,#section-addd50b0-3755-4265-936d-832481b96b40 .section .input-container{width:100%;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .h-pot{border:0;padding:0;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .image{min-width:50%;position:relative;-webkit-background-size:cover;background-size:cover;-webkit-background-position:center;background-position:center;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .image{height:400px;min-width:100%;}}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .image.image--hide{display:none;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .map{position:absolute;width:100%;height:100%;left:0;top:0;background-color:gray;display:none;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .steps-nav{list-style:none;margin:0 auto 48px;padding:0;color:#ffffff;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-addd50b0-3755-4265-936d-832481b96b40 .section .steps-nav li{padding:0;margin:0;width:46px;height:46px;border-radius:999px;background-color:#EEEDE9;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-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;color:var(--fontColor);}#section-addd50b0-3755-4265-936d-832481b96b40 .section .steps-nav li+li{margin-left:32px;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .steps-nav li{width:40px;height:40px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .steps-nav li:first-child:not(.active){cursor:pointer;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .steps-nav li.active{background-color:#CCB091;color:#fff;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .box{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:50%;padding:90px 24px;background-color:var(--bgColor, #fff);}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .box{width:100%;padding-top:64px;padding-bottom:32px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .form-box{width:100%;max-width:640px;min-height:530px;margin:0 auto;padding:50px;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .form-box{padding:20px 25px;min-height:365px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .btn{width:100%;}#section-addd50b0-3755-4265-936d-832481b96b40 .section form{margin:0;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .lp-h3{margin-bottom:16px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .lp-h6{margin-bottom:48px;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .input-container{margin-bottom:16px;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .input-container{margin-bottom:8px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .select-holder{position:relative;margin-bottom:16px;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .select-holder{margin-bottom:8px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .home-valuation__step{max-width:524px;margin:0 auto;display:none;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .home-valuation__step.active{display:block;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .home-valuation__step{margin-top:0;}}@media (min-width: 769px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .home-valuation__step--1{margin-top:140px;}}@media (min-width: 769px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .home-valuation__step--1 .lp-h3{margin:0 0 48px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .home-valuation__step--3 h3{margin-bottom:50px;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .home-valuation__step--3 h3{margin-top:30px;margin-bottom:20px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .home-valuation__step--3 p{margin-bottom:55px;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .home-valuation__step--3 p{margin-bottom:40px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group{border:solid 1px;border-color:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.3);}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select{padding:0 20px 0 40px;position:relative;width:100%;height:100%;z-index:5;background-color:#fff;}@media (max-width: 768px){#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select{height:auto;padding-left:25px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .open .custom-select-toggle:after{-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg);}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-toggle{position:relative;display:block;width:100%;text-align:left;cursor:pointer;white-space:break-spaces;-webkit-transition:all .2s;transition:all .2s;border:none;color:#000000;background:unset;line-height:1.6;font-size:15px;height:50px;padding:0;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-toggle:focus,#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-toggle:active,#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-toggle:hover{border-color:#ffffff;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-toggle:after{content:;position:absolute;width:10px;height:10px;border-color:#000000;border-width:0 2px 2px 0;right:7px;border-style:solid;transform-origin:75% 75%;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);top:50%;-webkit-transition:all .2s;transition:all .2s;margin-top:-7px;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-toggle.is-placeholder{color:rgba(31, 31, 31, 0.2);}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-menu{display:none;position:absolute;width:100%;z-index:2;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-content{width:100%;color:#000000;background-color:#ffffff;border:solid 1px #000000;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-item{display:block;width:100%;padding:13px 40px;border:none;border-radius:0;background:transparent;color:#000000;font-size:15px;line-height:1.6;text-align:left;-webkit-transition:all .2s;transition:all .2s;white-space:break-spaces;font-family:var(--global-secondary-font-family);cursor:pointer;}@media (max-width:){#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-item{padding:13px 5px 13px 17px;font-size:14px;}}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-item:focus,#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-item:hover{background-color:#f2f2f2;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-item.is-selected{background-color:#f2f2f2;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-item.is-disabled,#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-label-group .custom-select-item:disabled{display:none;}#section-addd50b0-3755-4265-936d-832481b96b40 .section .custom-select-toggle.is-placeholder{color:rgba(31, 31, 31, 0.5);}#section-addd50b0-3755-4265-936d-832481b96b40 .section .address_field{font-weight:400;font-size:20px;line-height:1.4;font-family:var(--global-primary-font-family);margin-bottom:20px;}@media (max-width:){#section-addd50b0-3755-4265-936d-832481b96b40 .section .address_field{font-size:18px;line-height:1.47;margin-bottom:35px;}}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca div.featured-properties .lp-h2{color:#002855;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca div.lp-container a.item p.status.bf1{color:#fff!important;background:#D45D00!important;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca div.lp-container a.item div.item__text{background-color:#002855;padding:40px 30px 0px 30px;min-height:175px;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca div.lp-container a.item div.item__text h5,#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca div.lp-container a.item div.item__text p,#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca div.lp-container a.item div.item__text ul{color:#fff;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca div.arrows .lp-arrow.lp-arrow--dark{background-color:#002855;border:solid 2px #002855;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca div.arrows .lp-arrow.lp-arrow--dark:before{border-color:#FFF;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca div.arrows .lp-arrow.lp-arrow--dark:hover{background-color:#D45D00;border:solid 2px #D45D00;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca div.arrows .lp-arrow.lp-arrow--dark:hover:before{border-color:#fff;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .lp-text--subtitle p{margin:0;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .collection{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 -10px 50px;}@media (max-width: 767px){#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .collection{margin-bottom:24px;}}@media (min-width: 1024px){#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .collection:not(.collection--3) .image-wrap{height:472px;}}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .slick-slide{margin:0 8px;width:350px;}@media (max-width: 768px){#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .slick-slide{margin:0;}}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item{-webkit-text-decoration:none;text-decoration:none;color:var(--currentColor);display:block;position:relative;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item .image-wrap{display:block;position:relative;height:310px;background:var(--themeGray);overflow:hidden;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__picture{display:block;height:100%;}@media (max-width: 768px){#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__picture{height:100%;}}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__picture .img{width:100%;height:100%;object-fit:cover;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__text{padding-top:16px;width:100%;overflow:hidden;pointer-events:none;min-height:110px;}@media (max-width: 768px){#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__text{min-height:120.92px;}}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__text h5{margin-bottom:4px;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__text .bf1{margin-bottom:4px;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__info{margin:0 0 10px;padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;text-transform:uppercase;}@media (max-width: 768px){#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__info{margin-bottom:25px;}}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__info li{margin:0;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item__info li:not(:last-child):after{content:|;margin:0 5px;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item .status{position:absolute;top:10px;right:10px;text-align:left;color:var(--themeBlack);background:rgba(255, 255, 255, .8);padding:7px 10px 6px;text-transform:uppercase;z-index:10;}@media (max-width: 768px){#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .item .status{right:12px;top:11px;right:11px;}}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .bottom-bar{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: 767px){#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .bottom-bar{-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;}}@media (max-width: 560px){#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .bottom-bar .button-holder{width:100%;}}@media (max-width: 767px){#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .featured-properties .arrows{margin-bottom:24px;}}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .label-house{position:absolute;bottom:10px;left:10px;background:rgba(0, 0, 0, 0.8);padding:6px 10px;line-height:22px;color:#ffffff;text-transform:uppercase;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .mls-compliance-container{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;position:relative;padding-top:16px;gap:10px;}#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca .lp-mls-compliance__mls-logo{margin-left:auto;}#section-16c12846-efff-420e-a030-4b69874942de{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#eeede9;--bgColor_H:48;--bgColor_S:13%;--bgColor_L:92%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#eeede9;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.5));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/b26ac142-9a7d-4d03-bfdc-10a26903cfc4);background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-16c12846-efff-420e-a030-4b69874942de svg path{fill:#002855;fill-opacity:1;}#section-16c12846-efff-420e-a030-4b69874942de svg circle{fill:#FDFDFE;fill-opacity:1;}#section-16c12846-efff-420e-a030-4b69874942de div.arrows-container button.lp-arrow{border:solid 2px #FDFDFE;background-color:#FDFDFE;}#section-16c12846-efff-420e-a030-4b69874942de div.arrows-container button.lp-arrow:before{border-color:#002855;}#section-16c12846-efff-420e-a030-4b69874942de div.arrows-container button.lp-arrow:hover{border:solid 2px #E4E6E9;background-color:#E4E6E9;}#section-16c12846-efff-420e-a030-4b69874942de div.arrows-container button.lp-arrow:hover::before{border-color:#002855;}#section-16c12846-efff-420e-a030-4b69874942de div.bottom p.num-pages.js-num-pages{color:#FFF;}#section-16c12846-efff-420e-a030-4b69874942de .lp-h6{font-weight:600;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .body{font-weight:500!important;}#section-16c12846-efff-420e-a030-4b69874942de .author{font-weight:500!important;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .avatar img{-webkit-filter:invert(1);filter:invert(1);}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider .avatar img{display:none;}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider{width:0!important;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .text{padding-left:0!important;}#section-16c12846-efff-420e-a030-4b69874942de{overflow:hidden;}#section-16c12846-efff-420e-a030-4b69874942de.parallax-enabled{-webkit-clip-path:polygon(0px -2px, 100% -2px, 100% 102%, 0% 102%);clip-path:polygon(0px -2px, 100% -2px, 100% 102%, 0% 102%);}#section-16c12846-efff-420e-a030-4b69874942de.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-1;}#section-16c12846-efff-420e-a030-4b69874942de.parallax-enabled .testimonials-section:before{display:block;content:;left:0;top:0;width:100vw;height:100vh;background:var(--sectionBackground) center no-repeat;-webkit-background-size:cover;background-size:cover;position:fixed;z-index:-1;pointer-events:none;}#section-16c12846-efff-420e-a030-4b69874942de .testimonial-container{overflow:hidden;}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:200px;padding-right:200px;outline:none;}@media (max-width: 1200px){#section-16c12846-efff-420e-a030-4b69874942de .sliders-container{padding-left:100px;padding-right:100px;}}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .sliders-container{padding-left:0;padding-right:0;}}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .sliders-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider{width:200px;}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider .slick-list,#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider .slick-track{width:100%;height:100%;}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider .slick-list{overflow:visible;}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider .avatar-slide{opacity:0;}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider .avatar-slide.slick-active{opacity:1;}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider .avatar{position:relative;border-radius:50%;overflow:hidden;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;width:200px;height:200px;}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider .avatar{width:135px;height:135px;margin:0 auto 24px;}}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider .avatar svg{position:absolute;width:100%;height:100%;}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .avatar-slider .avatar img{position:absolute;width:100%;height:100%;object-fit:cover;}#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .list-slider{width:70%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .sliders-container .list-slider{width:100%;}}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section h2{margin:0 0 29px 0;}@media (max-width: 560px){#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section h2{margin:0 0 40px 0;}}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list:not(.slick-initialized) .list-cell{display:none;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list:not(.slick-initialized) .list-cell:first-child{display:block;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list .slick-list{overflow:hidden;}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list .slick-list{overflow:hidden;}}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .quote{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;margin-bottom:70px;}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .quote{-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;margin-bottom:20px;}}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .author{margin-top:48px;text-transform:uppercase;}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .author{margin-bottom:0;}}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .position{color:#BDBDBD;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .text{padding-left:74px;}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .text{padding-left:0;text-align:center;}}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .title{font-family:var(--global-primary-font-family);text-transform:uppercase;white-space:pre-line;margin-bottom:48px;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .body{white-space:pre-line;margin-bottom:48px;font-weight:400;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .body:before,#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .list-cell .body:after{content:;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-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: 768px){#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom .lp-btn{margin-top:48px;-webkit-order:1;-ms-flex-order:1;order:1;}}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom.no-arrows .arrows-container{display:none;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom.no-arrows .num-pages{padding-left:0;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom .num-pages{margin-bottom:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding-left:274px;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom .num-pages span{font-weight:bold;}@media (max-width: 1200px){#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom .num-pages{padding-left:174px;}}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom .num-pages{padding-left:0;margin-bottom:48px;}}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom .arrows-container{width:200px;}#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom .arrows-container .lp-arrow--prev{margin-right:16px;}@media (max-width: 768px){#section-16c12846-efff-420e-a030-4b69874942de .testimonials-section .bottom .arrows-container{width:auto;-webkit-order:1;-ms-flex-order:1;order:1;}}@media (min-width: 960px) and (orientation: landscape){#section-16c12846-efff-420e-a030-4b69874942de{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/b26ac142-9a7d-4d03-bfdc-10a26903cfc4);}}@media (min-width: 1280px) and (orientation: landscape){#section-16c12846-efff-420e-a030-4b69874942de{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/b26ac142-9a7d-4d03-bfdc-10a26903cfc4);}}@media (min-width: 1920px) and (orientation: landscape){#section-16c12846-efff-420e-a030-4b69874942de{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/b26ac142-9a7d-4d03-bfdc-10a26903cfc4);}}@media (min-width: 2560px) and (orientation: landscape){#section-16c12846-efff-420e-a030-4b69874942de{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/b26ac142-9a7d-4d03-bfdc-10a26903cfc4);}}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#FDFDFE;--bgColor_H:240;--bgColor_S:33%;--bgColor_L:99%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#FDFDFE;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 div.featured-properties .lp-h2{color:#002855;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 div.lp-container a.item p.status.bf1{color:#fff!important;background:#D45D00!important;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 div.lp-container a.item div.item__text{background-color:#002855;padding:40px 30px 0px 30px;min-height:175px;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 div.lp-container a.item div.item__text h5,#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 div.lp-container a.item div.item__text p,#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 div.lp-container a.item div.item__text ul{color:#fff;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 div.arrows .lp-arrow.lp-arrow--dark{background-color:#002855;border:solid 2px #002855;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 div.arrows .lp-arrow.lp-arrow--dark:before{border-color:#FFF;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 div.arrows .lp-arrow.lp-arrow--dark:hover{background-color:#D45D00;border:solid 2px #D45D00;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 div.arrows .lp-arrow.lp-arrow--dark:hover:before{border-color:#fff;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .lp-text--subtitle p{margin:0;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .collection{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 -10px 50px;}@media (max-width: 767px){#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .collection{margin-bottom:24px;}}@media (min-width: 1024px){#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .collection:not(.collection--3) .image-wrap{height:472px;}}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .slick-slide{margin:0 8px;width:350px;}@media (max-width: 768px){#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .slick-slide{margin:0;}}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item{-webkit-text-decoration:none;text-decoration:none;color:var(--currentColor);display:block;position:relative;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item .image-wrap{display:block;position:relative;height:310px;background:var(--themeGray);overflow:hidden;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__picture{display:block;height:100%;}@media (max-width: 768px){#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__picture{height:100%;}}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__picture .img{width:100%;height:100%;object-fit:cover;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__text{padding-top:16px;width:100%;overflow:hidden;pointer-events:none;min-height:110px;}@media (max-width: 768px){#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__text{min-height:120.92px;}}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__text h5{margin-bottom:4px;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__text .bf1{margin-bottom:4px;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__info{margin:0 0 10px;padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;text-transform:uppercase;}@media (max-width: 768px){#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__info{margin-bottom:25px;}}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__info li{margin:0;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item__info li:not(:last-child):after{content:|;margin:0 5px;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item .status{position:absolute;top:10px;right:10px;text-align:left;color:var(--themeBlack);background:rgba(255, 255, 255, .8);padding:7px 10px 6px;text-transform:uppercase;z-index:10;}@media (max-width: 768px){#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .item .status{right:12px;top:11px;right:11px;}}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .bottom-bar{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: 767px){#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .bottom-bar{-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;}}@media (max-width: 560px){#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .bottom-bar .button-holder{width:100%;}}@media (max-width: 767px){#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .featured-properties .arrows{margin-bottom:24px;}}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .label-house{position:absolute;bottom:10px;left:10px;background:rgba(0, 0, 0, 0.8);padding:6px 10px;line-height:22px;color:#ffffff;text-transform:uppercase;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .mls-compliance-container{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;position:relative;padding-top:16px;gap:10px;}#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 .lp-mls-compliance__mls-logo{margin-left:auto;}#section-b438a141-565f-4f3b-88b7-1cce0065a521{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#FDFDFE;--bgColor_H:240;--bgColor_S:33%;--bgColor_L:99%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:#FDFDFE;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign{padding-top:96px;padding-bottom:46px;}@media (max-width: 768px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign{padding-top:64px;padding-bottom:34px;}}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign h2{color:#002855;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign .gallery-component__col:first-child .gallery-card__title{position:relative!;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign .gallery-component__col:first-child .gallery-card__title:before{content:Find the home-areas that matter the most to your future.!important;font-size:16px;font-weight:300;font-family:var(--global-secondary-font-family);position:absolute;margin-top:70px;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:100%!important;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign .gallery-component__col:nth-child(2) .gallery-card__title{position:relative!;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign .gallery-component__col:nth-child(2) .gallery-card__title:before{content:Search for homes in a specific neighborhood.!important;font-size:16px;font-weight:300;font-family:var(--global-secondary-font-family);position:absolute;margin-top:70px;left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);width:100%!important;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.gallery-component__col{padding-right:10px;padding-left:10px;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.gallery-component__col .gallery-card{width:100%;padding-right:20px;padding-left:20px;height:550px;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.gallery-component__col .gallery-card:before{background-color:rgba(0,0,0,0.6);transition-duration:0.5s;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.gallery-component__col .gallery-card:hover:before{background-color:rgba(0,0,0,0.6);transition-duration:0.5s;}@media only screen and (max-width: 768px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.gallery-component__col{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-right:5px;padding-left:5px;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.gallery-component__col .gallery-card{height:350px;}}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.gallery-component__header{max-width:1200px;margin-bottom:40px;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign .gallery-card{box-shadow:-1px 16px 29px -7px rgba(0,0,0,0.42);-webkit-box-shadow:-1px 16px 29px -7px rgba(0,0,0,0.42);-moz-box-shadow:-1px 16px 29px -7px rgba(0,0,0,0.42);}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign .gallery-component__col .gallery-card:hover:before{background:rgb(0,40,85, 0.9);-webkit-background-size:200px;-webkit-background-size:200px;background-size:200px;background-repeat:no-repeat;-webkit-background-position:center 50%;-webkit-background-position:center 50%;background-position:center 50%;opacity:1!important;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign .gallery-card__title{font-size:var(--global-h2-font-size);text-align:center;margin:auto 0!important;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign .gallery-card__title:after{display:none;}@media (max-width: 992px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 div.redesign .gallery-card__title{font-size:var(--global-h3-font-size);}}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component{padding-top:30px;padding-bottom:10px;}@media (min-width: 769px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component{padding:80px 0 60px;}}@media (min-width: 1200px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component{padding:80px 0 30px;}}@media (max-width: 767px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__container{padding-left:20px;padding-right:20px;}}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__header{margin-bottom:30px;max-width:640px;margin-left:auto;margin-right:auto;text-align:center;}@media (min-width: 768px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__header{margin-bottom:50px;}}@media (min-width: 1200px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__header{margin-bottom:70px;}}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__header img{max-width:260px;height:auto;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__header img:not(:only-child){margin-bottom:30px;}@media (min-width: 768px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__header img:not(:only-child){margin-bottom:50px;}}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__heading{margin-bottom:20px;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__lead{margin-bottom:0;font-size:20px;line-height:1.4;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__col{width:100%;margin-bottom:20px;padding:0 7px;}@media (min-width: 768px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__col{max-width:25%;-webkit-flex-basis:25%;-ms-flex-preferred-size:25%;flex-basis:25%;margin-bottom:50px;}}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__col:first-child{margin-left:auto;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component__col:last-child{margin-right:auto;}@media (min-width: 992px){#section-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-component .cols-4 .gallery-component__col{max-width:25%;-webkit-flex-basis:25%;-ms-flex-preferred-size:25%;flex-basis:25%;}}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-card:after{content:;width:0;padding-top:121.5%;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-card:focus{outline:none;}@media (hover: hover) and (pointer: fine){#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-card:hover:before{background-color:#000;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-card:hover .gallery-card__title{-webkit-transform:translateY(-51px);-moz-transform:translateY(-51px);-ms-transform:translateY(-51px);transform:translateY(-51px);}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521 .gallery-card__preview{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;}#section-b438a141-565f-4f3b-88b7-1cce0065a521 .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-b438a141-565f-4f3b-88b7-1cce0065a521>div:last-child{padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#section-ee739d89-9b9c-4840-8596-adb081ffb235{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#7F93AA;--bgColor_H:212;--bgColor_S:20%;--bgColor_L:58%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#7F93AA;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal{padding-top:96px;padding-bottom:96px;}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal{padding-top:64px;padding-bottom:64px;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .popup-modal__container .popup-modal__form{width:1200px!important;}@media (max-width: 1225px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .popup-modal__container .popup-modal__form{width:900px!important;}}@media (max-width: 935px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .popup-modal__container .popup-modal__form{width:700px!important;}}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .popup-modal__container .popup-modal__form{width:600px!important;}}@media (max-width: 606px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .popup-modal__container .popup-modal__form{width:400px!important;}}@media (max-width: 375px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .popup-modal__container .popup-modal__form{width:300px!important;}}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .popup-modal__form-group{padding:60px!important;}}@media (max-width: 375px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .popup-modal__form-group{padding:20px!important;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .popup-modal__form-field{max-width:100%!important;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .lp-title-group{max-width:100%;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .lp-h2{color:#002855;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 div.popup-modal .lp-text--subtitle{font-size:16px;font-family:var(--global-secondary-font-family);}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .close{display:none;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .modal-content{height:100%;padding:80px 70px;}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 .modal-content{padding:24px;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .modal-content .popup-modal__close{display:block;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal{width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;max-width:100%;margin-left:auto;margin-right:auto;position:relative;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal.with-image{height:100%;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal .lp-btn{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal .lp-text--subtitle{max-width:100%;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__close{position:absolute;right:5px;top:5px;z-index:10;background-color:transparent;border:none;width:40px;height:40px;cursor:pointer;opacity:0.2;display:none;color:inherit;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__close:before,#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__close:after{display:block;content:;position:absolute;width:20px;height:2px;background-color:currentColor;left:50%;top:50%;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__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);}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__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);}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container{margin-left:auto;margin-right:auto;position:relative;height:100%;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image{min-height:463px;}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;overflow-y:auto;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__scroll{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;height:100%;min-height:463px;}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__scroll{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;min-height:100%;height:auto;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__image{width:50%;object-fit:cover;display:block;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__image{width:100%;height:322px;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__form-field{margin-left:0;width:100%;max-width:100%;}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__form-field{max-width:415px;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__title-group{text-align:left;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__form{width:100%;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__form.success{width:100%;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__form-group{width:50%;padding-left:130px;padding-right:130px;}@media (max-width: 1200px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__form-group{width:100%;padding:30px 50px;}}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__form-group{width:100%;padding:20px;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__form-scroll{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-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin-top:auto;margin-bottom:auto;}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__container--with-image .popup-modal__form-scroll{width:100%;padding:20px;min-height:auto;overflow-y:unset;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__title-group{margin-left:0;margin-right:0;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__scroll{max-height:100%;overflow-y:auto;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__form{text-align:center;max-width:100%;width:860px;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;position:relative;margin-bottom:0;height:100%;margin-left:auto;margin-right:auto;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__form-group{padding:80px;width:100%;overflow-y:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__form-group{padding:30px;overflow-y:unset;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__form-scroll{width:100%;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__form-field{max-width:415px;margin-left:auto;margin-right:auto;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal__input{width:100%;margin-bottom:0;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal .thank-you{display:none;padding:80px;width:100vw;max-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;}@media (max-width: 768px){#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal .thank-you{padding:30px;}}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal .success .thank-you{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal .success .popup-modal__form-scroll{display:none;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal .success .popup-modal__image{display:none;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal .success .popup-modal__form-group{display:none;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .popup-modal .popup-modal__container--with-image .success .popup-modal__scroll{display:none;}#section-ee739d89-9b9c-4840-8596-adb081ffb235 .lp-h-pot{width:1px;}#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.45));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url(https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/92dd14fd-2f25-4822-8aee-1eb2caccb81f);background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b div.lp-container.lp-vertical-paddings{z-index:9;}#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b.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-df3a1fa4-f2ec-4125-9759-3612741f0c2b.parallax-enabled>div.video-wrapper{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:-9999;}#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b.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-df3a1fa4-f2ec-4125-9759-3612741f0c2b .section{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;min-height:780px;text-align:center;position:relative;z-index:2;}@media (max-width: 767px){#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b .section{min-height:100vh;}}#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b .section:before{content:;position:absolute;bottom:0;left:0;height:50%;width:100%;pointer-events:none;z-index:3;-webkit-transform:translateZ(1px);-moz-transform:translateZ(1px);-ms-transform:translateZ(1px);transform:translateZ(1px);background:linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, var(--opacityColor) 100%);}#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b .section .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-df3a1fa4-f2ec-4125-9759-3612741f0c2b .section .btn-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:10px;}}#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b .lp-container{-webkit-transform:translateZ(1px);-moz-transform:translateZ(1px);-ms-transform:translateZ(1px);transform:translateZ(1px);}@media (min-width: 960px) and (orientation: landscape){#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b{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/92dd14fd-2f25-4822-8aee-1eb2caccb81f);}}@media (min-width: 1280px) and (orientation: landscape){#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b{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/92dd14fd-2f25-4822-8aee-1eb2caccb81f);}}@media (min-width: 1920px) and (orientation: landscape){#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b{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/92dd14fd-2f25-4822-8aee-1eb2caccb81f);}}@media (min-width: 2560px) and (orientation: landscape){#section-df3a1fa4-f2ec-4125-9759-3612741f0c2b{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/92dd14fd-2f25-4822-8aee-1eb2caccb81f);}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed{color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:rgba(255, 255, 255, 1);}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed div.section h3{color:#000000;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .section{display:none;overflow:hidden;}@media(min-width: 993px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .lp-container{padding-bottom:200px;}}@media(min-width: 769px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .lp-container{padding-bottom:194px;}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .title-group{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;display:block;margin-bottom:48px;}@media(min-width: 769px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .title-group{display:none;}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection{width:100%;min-width:400px;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection:not(.slick-initialized){display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection:not(.slick-initialized) .item-box:nth-child(n+6){display:none;}@media(max-width: 768px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection:not(.slick-initialized){-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-track{margin-left:0;margin-right:0;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-list{overflow:visible;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection img{max-width:100%;}@media(min-width: 1025px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:not(:nth-child(4n-2)){opacity:.3;-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:nth-child(4n-2) .item__img{opacity:.3;-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;-webkit-transform:translate(-50%, 45px);-moz-transform:translate(-50%, 45px);-ms-transform:translate(-50%, 45px);transform:translate(-50%, 45px);}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:nth-child(4n-2) .item__img svg{display:block;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:nth-child(4n-2) .item__info{-webkit-transform:translate(0, calc(50% + 45px));-moz-transform:translate(0, calc(50% + 45px));-ms-transform:translate(0, calc(50% + 45px));transform:translate(0, calc(50% + 45px));}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:nth-child(4n-2) .media-type-icon{top:50%;-webkit-transform:translate(0, calc(50% + 35px));-moz-transform:translate(0, calc(50% + 35px));-ms-transform:translate(0, calc(50% + 35px));transform:translate(0, calc(50% + 35px));}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-active:not(:nth-child(4n-2)){opacity:1;-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-active:nth-child(4n-2) .item__img{opacity:1;-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;}}@media (min-width: 769px) and (max-width: 1025px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:not(:nth-child(even)){opacity:.3;-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:nth-child(even) .item__img{opacity:.3;-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;-webkit-transform:translate(-50%, 45px);-moz-transform:translate(-50%, 45px);-ms-transform:translate(-50%, 45px);transform:translate(-50%, 45px);}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:nth-child(even) .item__img svg{display:block;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:nth-child(even) .item__info{-webkit-transform:translate(0, calc(50% + 45px));-moz-transform:translate(0, calc(50% + 45px));-ms-transform:translate(0, calc(50% + 45px));transform:translate(0, calc(50% + 45px));}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:nth-child(even) .media-type-icon{top:50%;-webkit-transform:translate(0, calc(50% + 35px));-moz-transform:translate(0, calc(50% + 35px));-ms-transform:translate(0, calc(50% + 35px));transform:translate(0, calc(50% + 35px));}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-active:not(:nth-child(even)){opacity:1;-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-active:nth-child(even) .item__img{opacity:1;-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;}}@media(max-width: 768px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide{opacity:.3;-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-active{opacity:1;-webkit-transition:opacity .4s ease-in-out;transition:opacity .4s ease-in-out;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:nth-child(4n-1),#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection .slick-slide:nth-child(4n){-webkit-transform:translate(-200%, 100%);-moz-transform:translate(-200%, 100%);-ms-transform:translate(-200%, 100%);transform:translate(-200%, 100%);}}@media(min-width: 1440px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .collection{overflow:hidden;height:514px;}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .slider-holder{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}@media(max-width: 768px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .slider-holder{height:calc(100vw - 24px);}}@media(min-width: 1440px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .slider-holder{width:1440px;margin-left:auto;margin-right:auto;height:310px;}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;z-index:1;width:310px;height:310px;overflow:visible;margin-right:67px;cursor:default;}@media(max-width: 1024px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item{width:298px;height:298px;margin-right:44px;}}@media(max-width: 768px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item{margin-right:0;margin-bottom:0;width:calc(50vw - 48px);height:calc(50vw - 48px);}}@media(max-width: 560px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item{margin-right:0;margin-bottom:0;}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__img{top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);position:absolute;height:100%;width:100%;background-color:gray;-webkit-background-size:cover;background-size:cover;-webkit-background-position:center center;background-position:center center;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;-webkit-transition:all linear 0.2s;transition:all linear 0.2s;transform-origin:bottom;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__img svg{display:none;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__text{top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);position:absolute;overflow:hidden;height:100%;width:100%;word-break:break-all;}@media (max-width: 768px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__text{display:none;}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__text .username-group{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__text .username-group .lp-h5{cursor:pointer;display:inline-block;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__text .username-group .lp-h5 span{-webkit-transition:0.2s all;transition:0.2s all;display:inline-block;}@media (hover: hover) and (pointer: fine){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__text .username-group .lp-h5:hover span{-webkit-transform:translateX(5px);-moz-transform:translateX(5px);-ms-transform:translateX(5px);transform:translateX(5px);}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__text .username-group .arrow-icon{display:inline-block;margin-top:9px;width:21px;}@media (max-width: 768px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item-box{padding:13px;}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .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.7);opacity:0;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;cursor:pointer;}@media (hover: hover){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__info:hover{opacity:1;}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .item__caption{text-overflow:ellipsis;-webkit-line-clamp:5;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed h5{color:var(--userColor);text-transform:uppercase;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed h3{color:var(--fontColor);margin-bottom:16px;white-space:pre-line;}@media (max-width: 768px){#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed h3{width:calc(100vw - 50px);}}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed a{-webkit-text-decoration:none;text-decoration:none;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .media-type-icon{position:absolute;top:10px;right:10px;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed .has-data .section{display:block;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed.has-data .section{display:block;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed#section-temp .section{display:block;}#section-e1f8a2fc-e4da-4def-a12f-8c336be637ed>div:last-child{padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#modal-global-contact-us>.close{display:none;}#modal-global-contact-us .contact-form{--colorLighter1:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.5);--colorLighter2:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.3);width:100%;background:center no-repeat;-webkit-background-size:cover;background-size:cover;min-height:800px;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;background-color:#fff;color:#000;-webkit-box-pack:space-around;-ms-flex-pack:space-around;-webkit-justify-content:space-around;justify-content:space-around;}#modal-global-contact-us .contact-form ::parent{-webkit-align-items:unset;-webkit-box-align:unset;-ms-flex-align:unset;align-items:unset;}@media (max-width: 1024px){#modal-global-contact-us .contact-form{min-height:100vh;height:auto;display:block;}}#modal-global-contact-us .contact-form .input-container{width:100%;}#modal-global-contact-us .contact-form .input-container+.input-container{margin-top:8px;}#modal-global-contact-us .contact-form__container{z-index:2;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 1024px){#modal-global-contact-us .contact-form__container{padding:0;width:100%;display:block;}}#modal-global-contact-us .contact-form__close{position:absolute;right:5px;top:5px;z-index:10;background-color:transparent;border:none;width:40px;height:40px;cursor:pointer;opacity:0.2;}#modal-global-contact-us .contact-form__close.close{color:#000;}#modal-global-contact-us .contact-form__close:before,#modal-global-contact-us .contact-form__close:after{display:block;content:;position:absolute;width:20px;height:2px;background-color:currentColor;left:50%;top:50%;}@media (max-width: 768px){#modal-global-contact-us .contact-form__close{top:1vh;}}@media (min-width: 768px) and (max-width: 810px),(min-height: 1024px) and (max-height: 1080px){#modal-global-contact-us .contact-form__close{top:3vh;}}#modal-global-contact-us .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__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__form{width:100%;max-width:637px;text-align:center;min-height:463px;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;position:relative;margin-right:110px;padding:64px 65px;margin-bottom:0;}@media (max-width: 1024px){#modal-global-contact-us .contact-form__form{width:100%;max-width:100%;margin-right:0;padding:44px 24px;}}#modal-global-contact-us .contact-form__details{width:100%;max-width:510px;margin-top:66px;}@media (max-width: 1024px){#modal-global-contact-us .contact-form__details{width:100%;max-width:100%;margin-top:48px;padding-left:24px;padding-right:24px;}}#modal-global-contact-us .contact-form__input{width:100%;}#modal-global-contact-us .contact-form__submit{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;margin-top:16px;width:100%;padding-top:5px;padding-bottom:5px;height:50px;}#modal-global-contact-us .contact-form .thank-you{display:none;padding:24px;}#modal-global-contact-us .contact-form .success .thank-you{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;}#modal-global-contact-us .contact-form .success .form-group{display:none;}#modal-global-contact-us .contact-form .success .image{display:none;}#modal-global-contact-us .contact-form__title1{margin-bottom:16px;text-align:left;}#modal-global-contact-us .contact-form__title2{margin-bottom:16px;}#modal-global-contact-us .contact-form__description{margin-bottom:48px;}@media (max-width: 1024px){#modal-global-contact-us .contact-form__description{margin-bottom:32px;}}#modal-global-contact-us .form-inputs-wrap.center-aligned{margin-left:auto;margin-right:auto;}#modal-global-contact-us .company{padding-top:24px;padding-bottom:48px;border-top:1px solid rgba(0, 0, 0, 0.5);color:rgba(0, 0, 0, 0.5);}@media (max-width: 1024px){#modal-global-contact-us .company{padding-bottom:32px;}}#modal-global-contact-us .company_title{margin-bottom:0;}#modal-global-contact-us .company .lp-a a{white-space:nowrap;}#modal-global-contact-us .company p{margin-bottom:0;}#modal-global-contact-us .socials{margin:-8px;margin-bottom:20px;}@media (max-width: 767px){#modal-global-contact-us .socials{margin-left:auto;width:-webkit-max-content;width:-moz-max-content;width:max-content;margin-right:auto;max-width:100%;}}#modal-global-contact-us .socials li{margin:0;padding:8px;}#modal-global-contact-us .contact-form__submit{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;}#modal-global-contact-us .sync-icon{display:none;margin-right:10px;-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;}#modal-global-contact-us .success-icon{display:none;margin-right:10px;-webkit-transition:0s;transition:0s;visibility:visible;}#modal-global-contact-us .loading{pointer-events:none;}#modal-global-contact-us .loading .sync-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}#modal-global-contact-us .success-text{display:none;}#modal-global-contact-us .success{pointer-events:none;}#modal-global-contact-us .success .success-icon{display:block;}#modal-global-contact-us .success .success-text{display:inline;}nav{-webkit-transition:0.2s all;transition:0.2s all;}nav nav{-webkit-transition:0.2s all;transition:0.2s all;}nav .header{padding-top:30px;padding-bottom:30px;}nav .header__right{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-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}nav .header__container{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;}nav .header__btn-contact{border:1px solid;border-radius:3px;padding:18px 40px;-webkit-transition:0.2s all;transition:0.2s all;text-transform:none;margin-left:40px;font-size:18px;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}@media (hover: hover) and (pointer: fine){nav .header__btn-contact:hover{background-color:var(--themeBlack);color:var(--themeWhite);}}@media (max-width: 768px){nav .header__btn-contact{padding:10px;margin-left:5px;margin-right:12px;}}nav .header__hamburger{background-color:transparent;cursor:pointer;outline:none;position:relative;padding: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;margin-left:41px;width:60px;height:60px;border:none;}@media (max-width: 768px){nav .header__hamburger{width:40px;height:40px;margin-left:15px;}}@media (hover: hover) and (pointer: fine){nav .header__hamburger:hover .line--top{width:12px;x:30px;}nav .header__hamburger:hover .line--bottom{width:24px;x:18px;}}nav .header__hamburger svg{width:100%;height:100%;}nav .header__hamburger circle{fill:var(--themeBeige);}nav .header__hamburger .line{fill:var(--themeWhite);height:2px;width:24px;x:18px;y:26px;-webkit-transition:0.2s all;transition:0.2s all;}nav .header__hamburger .line--bottom{width:12px;x:30px;y:32px;}nav .sub-nav{position:absolute;left:0;top:100%;padding:0;max-height:0;z-index:5;margin:0;list-style-type:none;overflow:hidden;visibility:hidden;-webkit-transition:visibility 0s linear 0.3s,max-height 0.3s ease;transition:visibility 0s linear 0.3s,max-height 0.3s ease;}nav .sub-nav.visible{-webkit-transition:visibility 0s linear 0s,max-height 0.3s ease-in;transition:visibility 0s linear 0s,max-height 0.3s ease-in;max-height:100vh;visibility:visible;}nav .sub-nav__item{position:relative;display:block;margin:0;text-align:left;}nav .sub-nav__link{display:block;color:var(--themeWhite);font-size:14px;font-weight:600;padding:10px 18px;position:relative;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:178px;min-width:100%;cursor:pointer;-webkit-text-decoration:none;text-decoration:none;background-color:var(--themeBlack);}@media (hover: hover) and (pointer: fine){nav .sub-nav__link:hover{color:var(--themeWhite);background-color:rgba(75, 75, 75, 1);}}nav .logo{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;outline:none;max-width:234px;height:60px;}@media (max-width: 768px){nav .logo{width:145px;}}nav .logo__img{object-fit:contain;object-position:left;max-width:100%;max-height:100%;}nav .logo__img.light{display:none;}nav .logo__img.dark{display:block;}nav .scroll .header{padding-top:22px;padding-bottom:22px;}@media (hover: hover) and (pointer: fine){nav .scroll .header__btn-contact:hover{background-color:var(--themeWhite);color:var(--themeBlack);}}nav .scroll .search__btn{color:var(--themeWhite);}nav .scroll .logo__img.dark{display:none;}nav .scroll .logo__img.light{display:block;}nav .header.theme-light{color:#fff;}nav .header.theme-light .lp-btn.lp-btn--dark.lp-btn--outline{color:var(--themeWhite, #fff);border-color:var(--themeWhite, #fff);}nav .header.theme-light .lp-btn.lp-btn--dark.lp-btn--outline:hover{color:var(--themeBlack, #fff);border-color:var(--themeBlack, #fff);background-color:var(--themeWhite, #fff);}nav .header.theme-light .logo__img.dark{display:none;}nav .header.theme-light .logo__img.light{display:block;}nav.scroll .header{padding-top:22px;padding-bottom:22px;}nav.scroll .lp-btn.lp-btn--dark.lp-btn--outline{color:var(--themeWhite, #fff);border-color:var(--themeWhite, #fff);}nav.scroll .lp-btn.lp-btn--dark.lp-btn--outline:hover{color:var(--themeBlack, #fff);border-color:var(--themeBlack, #fff);background-color:var(--themeWhite, #fff);}nav.scroll .search__btn{color:var(--themeWhite);}nav.scroll .logo__img.dark{display:none;}nav.scroll .logo__img.light{display:block;}nav .navigation{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;list-style-type:none;margin:0;padding:0;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-flex:1;-ms-flex:1;flex:1;}@media (max-width: 1024px){nav .navigation{display:none;}}nav .navigation__item{padding:0;margin:0;visibility:hidden;height:0;}nav .navigation__item+.navigation__item{padding-left:20px;}@media (hover: hover) and (pointer: fine){nav .navigation .navigation__item:not(.sub-nav-container) .navigation__link:after{content:;position:absolute;display:block;width:0;height:2px;-webkit-transition:width .3s linear;transition:width .3s linear;background:var(--themeBeige);bottom:0;left:0;}nav .navigation .navigation__item:not(.sub-nav-container) .navigation__link:hover:after{width:100%;}}nav .navigation__link{display:block;position:relative;font-size:18px;line-height:18px;background-color:transparent;border:none;border-bottom:2px solid transparent;border-top:2px solid transparent;cursor:pointer;padding:21px 10px;max-width:180px;z-index:2;outline:none;color:inherit;-webkit-text-decoration:none;text-decoration:none;white-space:nowrap;-webkit-font-smoothing:unset;-webkit-transition:color .3s linear;transition:color .3s linear;}nav .navigation__link:focus,nav .navigation__link:active{outline:none;}nav .sub-nav-container{position:relative;padding-right:21px;}nav .sub-nav-container:after{display:block;content:;width:8px;height:8px;border-right:2px solid;border-bottom:2px solid;position:absolute;right:3px;top:50%;-webkit-transform:translate(0, calc(-50% - 3px)) rotate(45deg);-moz-transform:translate(0, calc(-50% - 3px)) rotate(45deg);-ms-transform:translate(0, calc(-50% - 3px)) rotate(45deg);transform:translate(0, calc(-50% - 3px)) rotate(45deg);-webkit-transition:-webkit-transform 0.2s linear;transition:transform 0.2s linear;}nav .sub-nav-container.active:after{-webkit-transform:translate(0, calc(-50% + 3px)) rotate(-135deg);-moz-transform:translate(0, calc(-50% + 3px)) rotate(-135deg);-ms-transform:translate(0, calc(-50% + 3px)) rotate(-135deg);transform:translate(0, calc(-50% + 3px)) rotate(-135deg);}nav .search{position:relative;}nav .search__btn{border:none;background-color:transparent;margin-left:20px;cursor:pointer;display:block;color:inherit;}@media (max-width: 768px){nav .search__btn{margin-left:0;}}nav .search__btn svg{display:block;}@media (max-width: 768px){nav .hide-mobile{display:none;}}body>div.sidemenu{background-color:rgba(255, 255, 255, 1);color:rgba(0, 40, 85, 1);--fontColor:rgba(0, 40, 85, 1);--fontColor_H:212;--fontColor_S:100%;--fontColor_L:17%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;}body>div.sidemenu{--colorLighter1:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.1);width:100%;display:block;-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:.1s all ease-out 2s;transition:.1s all ease-out 2s;background:transparent;}body>div.sidemenu .sidemenu__container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.sidemenu.visible{-webkit-transition:0s all;transition:0s all;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);z-index:900;background-color:transparent;}body>div.sidemenu.visible .sidemenu__img{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);-webkit-transition:.7s cubic-bezier(0.645, 0.045, 0.355, 1.000);transition:.7s cubic-bezier(0.645, 0.045, 0.355, 1.000);}body>div.sidemenu.visible .sidemenu__wrapper{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);-webkit-transition:1s cubic-bezier(0.645, 0.045, 0.355, 1.000);transition:1s cubic-bezier(0.645, 0.045, 0.355, 1.000);}body>div.sidemenu.visible .sidemenu__toggle{pointer-events:auto;}body>div.sidemenu .sidemenu__img{background:center no-repeat;-webkit-background-size:cover;background-size:cover;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:.7s cubic-bezier(0.645, 0.045, 0.355, 1.000) .5s;transition:.7s cubic-bezier(0.645, 0.045, 0.355, 1.000) .5s;}@media (max-width: 768px){body>div.sidemenu .sidemenu__img{display:none;}}body>div.sidemenu .sidemenu__wrapper{background-color:var(--bgColor, #211F1F);-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;height:100vh;padding:80px 0 66px 0;overflow-y:auto;max-width:700px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:1s cubic-bezier(0.645, 0.045, 0.355, 1.000) .5s;transition:1s cubic-bezier(0.645, 0.045, 0.355, 1.000) .5s;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.sidemenu .sidemenu__wrapper::-webkit-scrollbar{width:4px;background-color:transparent;}body>div.sidemenu .sidemenu__wrapper::-webkit-scrollbar-thumb{background-color:var(--fontColor, #ffffff);}body>div.sidemenu .sidemenu__wrapper::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 4px rgba(0,0,0,0.3);background-color:var(--bgColor, #211F1F);}@media (max-width: 768px){body>div.sidemenu .sidemenu__wrapper{padding:40px 0 66px 0;}}body>div.sidemenu .sidemenu__toggle{height:48px;margin-right:auto;margin-left:70px;position:relative;border:none;background-color:transparent;outline:none;color:var(--fontColor, #ffffff);padding-right:50px;font-family:inherit;pointer-events:none;cursor:pointer;}@media (max-width: 768px){body>div.sidemenu .sidemenu__toggle{margin-left:20px;}}body>div.sidemenu .sidemenu__toggle--right{margin-left:auto;margin-right:70px;}@media (max-width: 768px){body>div.sidemenu .sidemenu__toggle--right{margin-right:20px;}}body>div.sidemenu .sidemenu__toggle:focus{outline:none;}body>div.sidemenu .sidemenu__toggle:before,body>div.sidemenu .sidemenu__toggle:after{content:;display:block;position:absolute;width:20px;height:2px;background-color:currentColor;right:0;top:50%;}body>div.sidemenu .sidemenu__toggle: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 .sidemenu__toggle:after{-webkit-transform:translate(-50%, -50%) rotate(-225deg);-moz-transform:translate(-50%, -50%) rotate(-225deg);-ms-transform:translate(-50%, -50%) rotate(-225deg);transform:translate(-50%, -50%) rotate(-225deg);}body>div.sidemenu .sidemenu__nav{margin-bottom:auto;padding:0;}body>div.sidemenu .sidemenu__socials{margin-left:auto;padding-top:30px;padding-right:70px;}@media (max-width: 768px){body>div.sidemenu .sidemenu__socials{padding-right:20px;padding-left:20px;}}body>div.sidemenu .sidemenu__socials .lp-socials li{margin-bottom:14px;}body>div.sidemenu .sidemenu__header{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;padding-bottom:93px;}@media (max-width: 768px){body>div.sidemenu .sidemenu__header{padding-bottom:59px;}}body>div.sidemenu .sidemenu__logo{display:none;}@media (max-width: 768px){body>div.sidemenu .sidemenu__logo{display:block;}}body>div.sidemenu .sidemenu__logo-img{display:block;max-height:50px;}body>div.sidemenu .navigation{list-style-type:none;margin:0;padding:0;max-width:100%;}body>div.sidemenu .navigation__item{border-bottom:1px solid var(--colorLighter1);margin:0;overflow:hidden;}body>div.sidemenu .navigation__link{padding:12px 12px 12px 70px;display:block;font-size:22px;font-weight:400;line-height:48px;color:var(--fontColor, #ffffff);-webkit-transition:0.2s all;transition:0.2s all;cursor:pointer;-webkit-text-decoration:none;text-decoration:none;font-family:var(--global-primary-font-family);-webkit-transform:translateY(100%);-moz-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);opacity:0;position:relative;transition-property:transform,opacity,color;transition-duration:0.55s,0.55s,0.3s;transition-timing-function:cubic-bezier(0.645, 0.045, 0.355, 1),ease-in-out,ease-in-out;}@media(max-width: 768px){body>div.sidemenu .navigation__link{padding-left:20px;padding-right:20px;padding-bottom:16px;}}@media (hover: hover) and (pointer: fine){body>div.sidemenu .navigation__link:hover{color:var(--fontColor, #ffffff);}}body>div.sidemenu .sub-nav{list-style-type:none;display:none;margin:0;padding:10px 0 30px 85px;}@media(max-width: 768px){body>div.sidemenu .sub-nav{padding-bottom:16px;padding-left:35px;}}body>div.sidemenu .sub-nav__item{padding-bottom:10px;margin:0;opacity:0;}body>div.sidemenu .sub-nav__item.fadeInUp{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:ease;animation-timing-function:ease;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-delay:var(--delay);animation-delay:var(--delay);}body>div.sidemenu .sub-nav__link{font-size:16px;font-weight:400;cursor:pointer;color:var(--fontColor, #ffffff);font-family:var(--global-secondary-font-family);-webkit-text-decoration:none;text-decoration:none;}body>div.sidemenu .sub-nav.visible{display:block;}body>div.sidemenu .lp-socials__link{opacity:0;-webkit-transform:translateY(-50px);-moz-transform:translateY(-50px);-ms-transform:translateY(-50px);transform:translateY(-50px);position:relative;transition-property:transform,opacity,color;transition-duration:0.55s,0.55s,0.3s;transition-timing-function:cubic-bezier(0.645, 0.045, 0.355, 1),ease-in-out,ease-in-out;}body>div.sidemenu body>div.sidemenu{width:100%;}body>div.sidemenu body>div.sidemenu.visible{-webkit-transition:0s all;transition:0s all;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);z-index:900;background-color:transparent;}body>div.sidemenu body>div.sidemenu.visible .sidemenu__img{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);-webkit-transition:.7s cubic-bezier(0.645, 0.045, 0.355, 1.000);transition:.7s cubic-bezier(0.645, 0.045, 0.355, 1.000);}body>div.sidemenu body>div.sidemenu.visible .sidemenu__wrapper{-webkit-transform:translateY(0%);-moz-transform:translateY(0%);-ms-transform:translateY(0%);transform:translateY(0%);-webkit-transition:1s cubic-bezier(0.645, 0.045, 0.355, 1.000);transition:1s cubic-bezier(0.645, 0.045, 0.355, 1.000);}body>div.sidemenu body>div.sidemenu.visible .sidemenu__toggle{pointer-events:auto;}body>div.sidemenu .fade-in{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}body>div.sidemenu .arrow{vertical-align:middle;margin-bottom:10px;-webkit-transition:.4s;transition:.4s;}body>div.sidemenu .arrow.active{-webkit-transform:rotate(-180deg);-moz-transform:rotate(-180deg);-ms-transform:rotate(-180deg);transform:rotate(-180deg);-webkit-transition:.4s;transition:.4s;}footer{background-color:#ffffff;color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;}footer .lp-input--dark{background-color:#fff;}footer .site-footer__subscribe{padding-top:92px;padding-bottom:92px;background-color:rgba(0,0,0,0.1);}@media (max-width: 768px){footer .site-footer__subscribe{padding-top:64px;padding-bottom:64px;}}footer .site-footer__logo-bar{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;padding-bottom:64px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}@media (max-width: 768px){footer .site-footer__logo-bar{padding-bottom:24px;}}footer .site-footer__logo-container img{max-width:268px;max-height:56px;object-fit:contain;display:block;object-position:left top;}footer .site-footer__logo-container+.site-footer__logo-container{margin-left:50px;}@media (max-width: 768px){footer .site-footer__logo-container+.site-footer__logo-container{margin-left:0;margin-top:16px;width:100%;}}footer .site-footer__info{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-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}@media (max-width: 768px){footer .site-footer__info{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .site-footer__info .lp-a a{white-space:nowrap;}footer .site-footer__col{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-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-right:32px;}footer .site-footer__col-title{width:100%;margin-bottom:16px;min-height:29px;}footer .site-footer__col-content{opacity:0.5;padding-bottom:16px;}footer .site-footer__col-content p{margin-bottom:0;}footer .site-footer__col-content a{color:inherit;}footer .site-footer__col-content+.site-footer__col-content{padding-left:40px;}@media (max-width: 768px){footer .site-footer__col-content+.site-footer__col-content{padding-left:0;}}footer .site-footer__navigation-wrap{width:100%;padding-top:32px;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;}@media (max-width: 992px){footer .site-footer__navigation-wrap{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-bottom:18px;}}@media (max-width: 768px){footer .site-footer__navigation-wrap{padding-top:24px;padding-bottom:0;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}footer .site-footer__socials{margin-left:auto;}@media (max-width: 992px){footer .site-footer__socials{margin-left:0;}}@media (max-width: 768px){footer .site-footer__socials{margin-right:auto;}}footer .site-footer__socials li{margin-bottom:0;}footer .site-footer__disclaimer{padding-top:64px;padding-bottom:32px;position:relative;opacity:0.5;}@media (max-width: 768px){footer .site-footer__disclaimer{padding-top:18px;padding-bottom:25px;}}footer .site-footer__disclaimer:after{content:;display:block;position:absolute;left:0;bottom:0;right:0;height:1px;background-color:currentColor;opacity:0.2;}footer .site-footer__copy{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;padding-top:32px;font-size:18px;}@media (max-width: 768px){footer .site-footer__copy{padding-top:15px;-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;}footer .site-footer__copy>div:first-child{margin-bottom:15px;}}footer .site-footer__copy a{color:inherit;}footer .site-footer__copy-lp span{margin-right:5px;}footer .site-footer__copy-lp img{margin-right:30px;}@media (max-width: 768px){footer .site-footer__copy-lp img{margin-right:0;margin-bottom:15px;}}@media (min-width: 769px){footer .site-footer__copy-lp{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;}}footer .site-footer__bottom{padding-top:96px;padding-bottom:96px;}@media (max-width: 768px){footer .site-footer__bottom{padding-top:64px;padding-bottom:64px;}}footer .footer-contact{margin-bottom:13px;}footer .footer-contact p{margin-bottom:0;opacity:.7;}footer .footer-contact ul{list-style:none;padding-left:0;margin:0;}footer .footer-subscribe{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: 768px){footer .footer-subscribe{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .footer-subscribe__title-wrap{padding-right:50px;}@media (max-width: 768px){footer .footer-subscribe__title-wrap{padding-right:0;padding-bottom:32px;}}footer .footer-subscribe__title{margin-bottom:8px;}footer .footer-subscribe__sub-title{margin-bottom:0;}footer .footer-subscribe__form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;max-width:330px;margin-bottom:0;position:relative;}footer .footer-subscribe__submit{margin-top:16px;}footer .footer-subscribe__success-msg{position:absolute;top:100%;width:100%;text-align:center;opacity:.7;padding-top:10px;}footer .footer-navigation{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;padding:0 20px 0 0;margin:0 -30px;}@media (max-width: 992px){footer .footer-navigation{margin-bottom:36px;}}@media (max-width: 768px){footer .footer-navigation{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:0 0 36px;}}footer .footer-navigation__item{margin:0 30px;}@media (max-width: 768px){footer .footer-navigation__item{margin:0 0 10px;}}footer .footer-navigation__link{color:inherit;-webkit-text-decoration:none;text-decoration:none;font-size:14px;line-height:14px;background-color:transparent;border:none;font-family:inherit;cursor:pointer;padding-left:0;padding-right:0;-webkit-transition:0.2s all;transition:0.2s all;}@media (hover: hover) and (pointer: fine){footer .footer-navigation__link:hover{color:var(--themeBeige);}}footer .lp-socials li{margin-bottom:14px;}footer .sync-icon{display:none;margin-right:10px;-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;}footer .success-icon{display:none;margin-right:10px;-webkit-transition:0s;transition:0s;visibility:visible;}footer .loading{pointer-events:none;}footer .loading .sync-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}footer .success .success-icon{display:block;}footer .lp-footer-disclaimers{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:20px;margin-top:32px;padding-top:32px;}@media (max-width: 768px){footer .lp-footer-disclaimers{padding-top:15px;margin-top:15px;}}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>.pagination-style-1 li a{color:rgba(0, 40, 85, 1)!important;background-color:rgba(255, 255, 255, 0)!important;border-color:rgba(0, 40, 85, 1)!important;}.pagination-style-1 li a:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 40, 85, 1)!important;border-color:rgba(0, 40, 85, 1)!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 40, 85, 1)!important;border-color:rgba(0, 40, 85, 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(255, 255, 255, 1)!important;}.pagination-style-2 li a:hover{color:rgba(0, 40, 85, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.pagination-style-2 li.active a{color:rgba(0, 40, 85, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.social_icons-style-2 a{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 1)!important;color:rgba(0, 40, 85, 1)!important;}.social_icons-style-2 a:hover{border-color:rgba(228, 230, 233, 1)!important;background-color:rgba(228, 230, 233, 1)!important;color:rgba(0, 40, 85, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.button-style-2{color:rgba(0, 40, 85, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-2:hover{color:rgba(0, 40, 85, 1)!important;background-color:rgba(228, 230, 233, 1)!important;border-color:rgba(228, 230, 233, 1)!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:rgba(212, 93, 0, 1)!important;}.hyperlink-style-4{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-4:hover{color:rgba(212, 93, 0, 1)!important;}.hyperlink-style-1{color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-1:hover{color:rgba(212, 93, 0, 1)!important;}.hyperlink-style-3{color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-3:hover{color:rgba(212, 93, 0, 1)!important;}.social_icons-style-1 a{border-color:rgba(0, 40, 85, 1)!important;background-color:rgba(0, 40, 85, 1)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(212, 93, 0, 1)!important;background-color:rgba(212, 93, 0, 1)!important;color:rgba(255, 255, 255, 1)!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;}.button-style-1{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 40, 85, 1)!important;border-color:rgba(0, 40, 85, 1)!important;}.button-style-1:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(212, 93, 0, 1)!important;border-color:rgba(212, 93, 0, 1)!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> !-- GOOGLE TRANSLATE STYLES are moved to external CSS -->/head>body> div idgoogle_translate_element styledisplay: none>/div> nav idglobal-navbar data-el-idb395957e-29e6-4bd5-99ee-352fbee7732a> div classheader theme-auto> div classlp-container header__container> div classheader__logo> a href/ classlogo> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/c137e004-054b-4ecf-bd40-d7e6a035956b srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/c137e004-054b-4ecf-bd40-d7e6a035956b 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/c137e004-054b-4ecf-bd40-d7e6a035956b 960w sizes500px classlogo__img dark alt> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/ac35dc73-73bd-49bc-8953-8900b33dcb94 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/ac35dc73-73bd-49bc-8953-8900b33dcb94 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/ac35dc73-73bd-49bc-8953-8900b33dcb94 960w sizes500px classlogo__img light alt> /a> /div> div classheader__right> ul classnavigation> li classnavigation__item> a href#section-16c12846-efff-420e-a030-4b69874942de classnavigation__link>Testimonials/a> /li> li classnavigation__item sub-nav-container> a href# classnavigation__link>Properties/a> ul classsub-nav> li classsub-nav__item>a href#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 classsub-nav__link>Featured Properties/a>/li> li classsub-nav__item>a href#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca classsub-nav__link>Sold Listings/a>/li> /ul> /li> li classnavigation__item> a href/home-search/listings classnavigation__link>Home Search/a> /li> li classnavigation__item> a data-typeCONTACT_US classnavigation__link>Contact Me/a> /li> li classnavigation__item> a hreftel:(206) 595-6663 classnavigation__link >(206) 595-6663/a> /li> /ul> button classhamburger-component header__hamburger> svg width60 height60 viewBox0 0 60 60 fillnone xmlnshttp://www.w3.org/2000/svg> circle cx30 cy30 r30 /> rect classline line--top x18 y26 width24 height2 /> rect classline line--bottom x30 y32 width12 height2 /> /svg> /button> /div> /div>/div> /nav> div idglobal-sidemenu classsidemenu data-el-id1575f740-92ae-4292-919d-936adffb0f46> div classsidemenu__container> div classsidemenu__img stylebackground-image: url(https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/3d8c40ad-4a38-4d96-b11d-59f8a2194379);> /div> div classsidemenu__wrapper> div classsidemenu__header> button classsidemenu__toggle toggle sidemenu__toggle--right>Close Menu/button> /div> div classsidemenu__nav> ul classnavigation> li classnavigation__item > a href/ classnavigation__link >Home/a> /li> li classnavigation__item > a href#section-3cea3d6b-545c-4609-8163-315aa5a23b97 classnavigation__link >About Chris/a> /li> li classnavigation__item sub-nav-container data-wow-delay2.2s> a href# classnavigation__link> Properties svg width24 height24 viewBox0 0 24 24 fillnone classarrow xmlnshttp://www.w3.org/2000/svg> path dM7.41 8.58984L12 13.1698L16.59 8.58984L18 9.99984L12 15.9998L6 9.99984L7.41 8.58984Z fillcurrentColor/> /svg> /a> ul classsub-nav> li classsub-nav__item>a href#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 classsub-nav__link feature>Featured Properties/a>/li> li classsub-nav__item>a href#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca classsub-nav__link feature>Sold Listings/a>/li> /ul> /li> li classnavigation__item > a href/home-search/listings classnavigation__link >Home Search/a> /li> li classnavigation__item > a hrefhttps://chrisrandall.lakere.com/#section-addd50b0-3755-4265-936d-832481b96b40 classnavigation__link >Home Valuation/a> /li> li classnavigation__item > a href#section-b438a141-565f-4f3b-88b7-1cce0065a521 classnavigation__link >Neighborhoods/a> /li> li classnavigation__item > a href#section-16c12846-efff-420e-a030-4b69874942de classnavigation__link >Testimonials/a> /li> li classnavigation__item> a data-typeCONTACT_US classnavigation__link>Contact Me/a> /li> li classnavigation__item > a href/home-search/auth/sign_in classnavigation__link >My Search Portal/a> /li> /ul> /div> div classsidemenu__socials> ul classlp-socials social_icons-style-1 sidemenu-social-links> li> a hrefhttps://www.facebook.com/chrisrandallseattle/ classlp-socials__link socials__item data-wow-delay0s target_blank aria-labelFACEBOOK > span classlp-i lp-i--facebook aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.instagram.com/chrisrandallrealestate/ classlp-socials__link socials__item 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/realtorseattle/ classlp-socials__link socials__item data-wow-delay0.2s target_blank aria-labelLINKEDIN > span classlp-i lp-i--linkedin aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.yelp.com/biz/chris-randall-lake-and-company-seattle classlp-socials__link socials__item data-wow-delay0.3s target_blank aria-labelYELP > span classlp-i lp-i--yelp aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.google.com/search?q=Chris+Randall+at+Lake+%26+Company+Real+Estate&sca_esv=e8c05aba066cb726&rlz=1C1BNSD_enPH981PH981&biw=1920&bih=919&ei=zVQ1Z5XuNLOPvr0Ppr2zmAk&ved=0ahUKEwjViImq2NqJAxWzh68BHabeDJMQ4dUDCA8&uact=5&oq=Chris+Randall+at+Lake+%26+Company+Real+Estate&gs_lp=Egxnd3Mtd2l6LXNlcnAiK0NocmlzIFJhbmRhbGwgYXQgTGFrZSAmIENvbXBhbnkgUmVhbCBFc3RhdGUyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogRImA5QAFjgC3AAeACQAQCYAYsBoAGgA6oBAzIuMrgBA8gBAPgBAvgBAZgCBKACwwOYAwCSBwMyLjKgB_oK&sclient=gws-wiz-serp#lrd=0x5490119117a5a805:0x3e5a3c0985f11813,1,,,, classlp-socials__link socials__item data-wow-delay0.4s target_blank aria-labelGOOGLE > span classlp-i lp-i--google aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.zillow.com/profile/chrisrando classlp-socials__link socials__item data-wow-delay0.5s target_blank aria-labelZILLOW > span classlp-i lp-i--zillow aria-hiddentrue>/span> /a> /li> /ul> /div> /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(0, 0, 0, 1); --pillBackgroundColor: rgba(255, 255, 255, 1);> button typebutton classconnect-btn lp-ico lp-ico-arrow-top visible>Contact Me/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 Chris Randall 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 Me> /div> /div> /div> div classsuccess-block> h3 classlp-h3 success-message>Thank you for your message. I will be in touch with you shortly./h3> /div> /form> button typebutton classclose-btn lp-ico lp-ico-close>/button> /div>/div> /div> section classimage-section is-font-color-light is-background-color-dark idsection-e01092d0-b322-43e1-a7f1-760b2ef5131e data-el-idff2fdff3-a088-41a3-b3e4-21dd3d28f032>div classredesign opening-with-search height-class-Full data-only-activefalse data-video-url data-show-neighborhood-namesfalse> div classcenter-block> div classcontainer lp-container> div classlp-title-group> h1 classh1 lp-h1 opening-title>/h1> div classopening-description feature lp-pre-line >h2>Find your next home/h2>/div> /div> div classbuttons>/div> div classsearch-form> div classsearch-wrapper search-near-hidden data-search-mlstrue data-search-propertiestrue data-locationsUS> div classsearch-input-container> span classsearch-icon> svg xmlnshttp://www.w3.org/2000/svg viewBox0 0 14 13 width1em height1em>g transformtranslate(1 1) strokecurrentColor fillnone fill-ruleevenodd>circle cx5.5 cy5.5 r5.5/>path dM9.5 9.5l2.123 2.123 stroke-linecapsquare/>/g>/svg> /span> input typetext placeholderSearch by Address, City, or Neighborhood classsearch-input value /> /div> 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> button classlp-btn search-button button-style-2>Search/button> /div> /div> /div> div classbottom-spacer>/div>/div>/section>section idsection-3cea3d6b-545c-4609-8163-315aa5a23b97 classsolid-section is-font-color-dark is-background-color-light data-el-idd29b380a-8b6d-4c8e-96c8-9646c218c101>div classagent-detail-section redesign> div classlp-container> div classagent-detail> div classagent-detail__img-wrap> div classagent-detail__img> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a8fa89f9-118b-4c3a-bfd0-d59a20764cdb srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/a8fa89f9-118b-4c3a-bfd0-d59a20764cdb 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/a8fa89f9-118b-4c3a-bfd0-d59a20764cdb 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a8fa89f9-118b-4c3a-bfd0-d59a20764cdb 1280w altChris Randall sizes(max-width: 768px) 100vw, 50vw loadinglazy> /div> /div> div classagent-detail__info> h2 classlp-h2>Chris Randall/h2> ul classcontact lp-a> li> p classcontact-title>Primary phone/p> a classlp-link lp-link--dark hyperlink-style-1 hreftel:(206) 595-6663>(206) 595-6663/a> /li> li> p classcontact-title>Website/p> a classlp-link lp-link--dark hyperlink-style-1 hrefhttp://chrisrandall.lakere.com target_blank>http://chrisrandall.lakere.com/a> /li> li classfull-width> p classcontact-title>Email/p> a classemail-wrap lp-link lp-link--dark hyperlink-style-1 href/cdn-cgi/l/email-protection#c6a5aeb4afb586aaa7ada3b4a3e8a5a9ab>span class__cf_email__ data-cfemaila5c6cdd7ccd6e5c9c4cec0d7c08bc6cac8>email protected/span>/a> /li> li classfull-width> p classcontact-title>Address/p> 7801 Green Lake Dr N, br> Seattle, WA 98103 /li> /ul> div classshow-desktop> ul classlp-socials social_icons-style-1 lp-socials lp-socials--dark> li> a hrefhttps://www.linkedin.com/in/realtorseattle/ classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0s target_blank aria-labelLINKEDIN > span classlp-i lp-i--linkedin aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.facebook.com/chrisrandallseattle/ classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0.1s target_blank aria-labelFACEBOOK > span classlp-i lp-i--facebook aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.yelp.com/biz/chris-randall-lake-and-company-seattle classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0.2s target_blank aria-labelYELP > span classlp-i lp-i--yelp aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.instagram.com/chrisrandallrealestate/ classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0.3s target_blank aria-labelINSTAGRAM > span classlp-i lp-i--instagram aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.zillow.com/profile/chrisrando classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0.4s target_blank aria-labelZILLOW > span classlp-i lp-i--zillow aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.google.com/search?q=Chris+Randall+at+Lake+%26+Company+Real+Estate&sca_esv=e8c05aba066cb726&rlz=1C1BNSD_enPH981PH981&biw=1920&bih=919&ei=zVQ1Z5XuNLOPvr0Ppr2zmAk&ved=0ahUKEwjViImq2NqJAxWzh68BHabeDJMQ4dUDCA8&uact=5&oq=Chris+Randall+at+Lake+%26+Company+Real+Estate&gs_lp=Egxnd3Mtd2l6LXNlcnAiK0NocmlzIFJhbmRhbGwgYXQgTGFrZSAmIENvbXBhbnkgUmVhbCBFc3RhdGUyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogRImA5QAFjgC3AAeACQAQCYAYsBoAGgA6oBAzIuMrgBA8gBAPgBAvgBAZgCBKACwwOYAwCSBwMyLjKgB_oK&sclient=gws-wiz-serp#lrd=0x5490119117a5a805:0x3e5a3c0985f11813,1,,,, classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0.5s target_blank aria-labelGOOGLE > span classlp-i lp-i--google aria-hiddentrue>/span> /a> /li> /ul> /div> /div> /div> div classagent-detail__description> h2 classlp-h2>Get to Know Me/h2> div classagent-detail__description-body data-link-stylehyperlink-style-1 data-min-characters600 data-max-characters800> div>I was born and raised in the Seattle Area, and I love the role I play in helping folks establish roots here as well. I have the privilege of being able to work 100% by word of mouth referral since enough of my clients connect me with their friends, family and co-workers to keep me busy. My sole purpose is to facilitate an excellent experience for my clients, whether helping buyers get the best deal they can on a home, or helping sellers fetch the highest price they can for their home listing, and I believe thats reflected in my years of supporting and educating my clients throughout the process. I pride myself on keeping in touch with my clients in the years after they close on their home, connecting them with my personal network of contractors and home services professionals when needed, keeping them updated about the ever-changing real estate market, and offering my two cents regarding home maintenance/improvement tips if they ever want to talk through a project./div>div> /div>div>I believe in earning your trust as your lifetime real estate broker, so Im always looking out for whats best for you in the long run. For that reason, Im often pointing out reasons why a particular home may not be the best investment for my buyers, or suggesting improvements to my sellers that will give them the optimal return on investment for years down the road when it comes time to sell their home./div>div> /div>div>I’m here to guide you on your next home purchase or sale. Please feel free to call or email when youre ready to start the conversation!/div>div> /div>div>span styletext-decoration: underline; color: #000000;>a stylecolor: #000000; text-decoration: underline; hreftel:(206) 595-6663>(206) 595-6663/a>/span> - span styletext-decoration: underline; color: #000000;>a stylecolor: #000000; text-decoration: underline; href/cdn-cgi/l/email-protection#3f5c574d564c7f535e545a4d5a115c5052>span class__cf_email__ data-cfemail3f5c574d564c7f535e545a4d5a115c5052>email protected/span>/a>/span>/div>div> /div>div>REALTOR® | Multi-Family Investor | 11+ Years in Real Estate | 150+ Homes Sold/div> /div> div classshow-mobile> ul classlp-socials social_icons-style-1 lp-socials lp-socials--dark> li> a hrefhttps://www.linkedin.com/in/realtorseattle/ classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0s target_blank aria-labelLINKEDIN > span classlp-i lp-i--linkedin aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.facebook.com/chrisrandallseattle/ classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0.1s target_blank aria-labelFACEBOOK > span classlp-i lp-i--facebook aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.yelp.com/biz/chris-randall-lake-and-company-seattle classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0.2s target_blank aria-labelYELP > span classlp-i lp-i--yelp aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.instagram.com/chrisrandallrealestate/ classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0.3s target_blank aria-labelINSTAGRAM > span classlp-i lp-i--instagram aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.zillow.com/profile/chrisrando classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0.4s target_blank aria-labelZILLOW > span classlp-i lp-i--zillow aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.google.com/search?q=Chris+Randall+at+Lake+%26+Company+Real+Estate&sca_esv=e8c05aba066cb726&rlz=1C1BNSD_enPH981PH981&biw=1920&bih=919&ei=zVQ1Z5XuNLOPvr0Ppr2zmAk&ved=0ahUKEwjViImq2NqJAxWzh68BHabeDJMQ4dUDCA8&uact=5&oq=Chris+Randall+at+Lake+%26+Company+Real+Estate&gs_lp=Egxnd3Mtd2l6LXNlcnAiK0NocmlzIFJhbmRhbGwgYXQgTGFrZSAmIENvbXBhbnkgUmVhbCBFc3RhdGUyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogRImA5QAFjgC3AAeACQAQCYAYsBoAGgA6oBAzIuMrgBA8gBAPgBAvgBAZgCBKACwwOYAwCSBwMyLjKgB_oK&sclient=gws-wiz-serp#lrd=0x5490119117a5a805:0x3e5a3c0985f11813,1,,,, classlp-socials__link lp-socials__link wow fadeInUp data-wow-delay0.5s target_blank aria-labelGOOGLE > span classlp-i lp-i--google aria-hiddentrue>/span> /a> /li> /ul> /div> /div> /div>/div>/section>section idsection-addd50b0-3755-4265-936d-832481b96b40 classsolid-section is-font-color-dark is-background-color-light data-el-ida38278bc-ecf0-411e-84a2-f09efde0d62c> div classsection > div classimage stylebackground-image: url(https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/71122dd5-02df-4d6b-a73c-62525c13d1e6)> div classmap idmodal-home-valuation-map>/div> /div> div classbox lp-vertical-paddings> ol classsteps-nav> li classactive first-step>1/li> li>2/li> li>3/li> /ol> form classform-content data-typecontact-form> div classhome-valuation__step home-valuation__step--1 active> h3 classlp-h3 pre-line>What's your home worth?/h3> div classinput-container> input idmodal-address typetext data-namelocation classlp-input lp-input--dark placeholderEnter your address to begin required> input typehidden namemessage> span classinput-icon>/span> /div> button typebutton classbtn btn--link lp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width button-style-3 idmodal-btn-continue disabled> Continue /button> /div> div classhome-valuation__step home-valuation__step--2> h3 classlp-h3 pre-line>What's your home worth?/h3> div classaddress_field>/div> input classh-pot idmodal-middleName namemiddleName value autocompleteoff tabindex-1> div classinput-container> input classlp-input lp-input--dark required idmodal-first_name namefirstName placeholderName> span classinput-icon>/span> /div> div classinput-container> input classlp-input lp-input--dark required idmodal-email_valuation nameemail typeemail placeholderEmail> span classinput-icon>/span> /div> div classinput-container> input classlp-input lp-input--dark required idmodal-phone_number namephone typetel placeholderPhone> span classinput-icon>/span> /div> div classselect-holder input-container> select idmodal-time_frame classlp-input lp-input--dark dropdown-select nametime required> option value disabled selected>Select a timeline/option> option valueI want to sell my home now>I want to sell my home now/option> option valueIn the next 3 months>In the next 3 months/option> option valueIn the next 12 months>In the next 12 months/option> option valueI’m just curious...>I’m just curious.../option> /select> span classinput-icon>/span> /div> input typehidden namesource valueHOME_VALUATION /> div classlp-disclaimer> label styledisplay: none; forsection-addd50b0-3755-4265-936d-832481b96b40-termsAccepted>Opt In/Disclaimer Consent:/label> label classlp-tcr-content> span classlp-tcr-checkbox> input typecheckbox idsection-addd50b0-3755-4265-936d-832481b96b40-termsAccepted nametermsAccepted oninvalidthis.setCustomValidity(Please accept the terms and conditions) oninputthis.setCustomValidity() required />/span> span classlp-tcr-message> I agree to be contacted by Lake & Company Real Estate 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> button typesubmit classbtn btn--link lp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width button-style-3> Continue /button> /div> /form> div classhome-valuation__step home-valuation__step--3> h3 classlp-h3>Your Home Valuation/h3> h6 classlp-h6 pre-line>I’ll reach out to schedule a convenient time to view your home and share what it could be worth in today’s market./h6> a hrefhttps://chrisrandall.lakere.com/#section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca classbtn btn--link lp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width button-style-1 > View Our Listings /a> /div> /div>/div>/section>section idsection-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca classsolid-section is-font-color-dark is-background-color-light data-el-idfe4fa47b-568b-45f5-ba41-cfc53ad2829b>script data-cfasyncfalse src/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js>/script>script typetext/x-handlebars-template classitem pagination-script> a classitem {{#if fromMLS}}href/home-search/listings/{{id}}{{else}}href/properties/{{slug}}{{/if}} classimage-wrap> {{#if status}}p classstatus bf1>{{formatPropertyStatus status}}/p>{{/if}} div classimage-wrap> {{#if media}} div classitem__picture lp_animation-img-zoom> {{{mediaImage media.0 sizes(min-width: 768px) 644px, 100vw classimg altname}}} {{#if openHouseHours}} div classopen-house label-house bf1>Open House: {{openHouseHours}}/div> {{/if}} /div> {{/if}} /div> div classitem__text> h5 classlp-h5>{{formatPropertyPrice this}}/h5> {{#if name}}p classbf1>{{fullAddress}}/p>{{/if}} ul classitem__info bf2> {{#if bedroomCount}} li>{{bedroomCount}} {{#numCompare bedroomCount 1 >}}BEDS{{else}}BED{{/numCompare}}/li> {{/if}} {{#if bathCount}} li>{{bathCount}} {{#numCompare bathCount 1 >}}BATHS{{else}}BATH{{/numCompare}}/li> {{/if}} {{#if livingSpaceSize}} li>{{lpFormatNumber livingSpaceSize}} {{formatAreaUnit livingSpaceUnits}}/li> {{/if}} /ul> {{#if @root.mlsCompliance.property}} {{#if (or mlsAttribution mlsLogo)}} div classmls-compliance-container> {{#if mlsAttribution}}p classlp-mls-compliance__mls-attribution>{{mlsAttribution}}/p>{{/if}} {{{mediaImage mlsLogo classlp-mls-compliance__mls-logo altMLS logo sizes70px}}} /div> {{/if}} {{/if}} /div> /a>/script>div classfeatured-properties > div classlp-container lp-vertical-paddings> div classlp-title-group> h2 classlp-h2>SOLD LISTINGS/h2> div classlp-text--subtitle>p>Take a look at my sold listings./p>/div> /div> div classcollection js-collection collection--3 js-collection--3 data-arrows-style data-disable-infinitefalse> a classitem href/properties/14699933087-5540-27th-avenue-ne-seattle-wa-98105 classimage-wrap> p classstatus bf1>Sold/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2069808/894659999415045640.jpg alt5540 27th Avenue NE classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$2,800,000/h5> p classbf1>5540 27th Avenue NE, Seattle, WA 98105/p> ul classitem__info bf2> li>6 BEDS/li> li>4 BATHS/li> li>4,090 Sq.Ft./li> /ul> /div> /a> a classitem href/properties/1638-palm-avenue-sw-seattle-wa-us-98116-nwm2439777 classimage-wrap> p classstatus bf1>Sold/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2439777/221617670013981519.jpg alt1638 Palm Avenue SW classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$1,950,000/h5> p classbf1>1638 Palm Avenue SW, Seattle, WA 98116/p> ul classitem__info bf2> li>6 BEDS/li> li>3 BATHS/li> li>2,950 Sq.Ft./li> /ul> /div> /a> a classitem href/properties/204-n-58th-street-seattle-wa-us-98103-nwm2319358 classimage-wrap> p classstatus bf1>Sold/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2319358/-8937595878118673031.jpg alt204 N 58th Street classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$1,825,000/h5> p classbf1>204 N 58th Street, Seattle, WA 98103/p> ul classitem__info bf2> li>4 BEDS/li> li>2 BATHS/li> li>2,791 Sq.Ft./li> /ul> /div> /a> a classitem href/properties/4113-sw-109th-street-seattle-wa-us-98146-nwm2291775 classimage-wrap> p classstatus bf1>Sold/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2291775/-2326464421853949208.jpg alt4113 SW 109th Street classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$1,632,500/h5> p classbf1>4113 SW 109th Street, Seattle, WA 98146/p> ul classitem__info bf2> li>3 BEDS/li> li>2 BATHS/li> li>2,560 Sq.Ft./li> /ul> /div> /a> a classitem href/properties/14529650797-2034-173rd-avenue-ne-redmond-wa-98052 classimage-wrap> p classstatus bf1>Sold/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2047181/-6849837726764826574.jpg alt2034 173rd Avenue NE classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$1,450,000/h5> p classbf1>2034 173rd Avenue NE, Redmond, WA 98052/p> ul classitem__info bf2> li>4 BEDS/li> li>2 BATHS/li> li>2,290 Sq.Ft./li> /ul> /div> /a> a classitem href/properties/5702-woodlawn-avenue-n-seattle-wa-us-98103-nwm2180300 classimage-wrap> p classstatus bf1>Sold/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2180300/-6668992161369592992.jpg alt5702 Woodlawn Avenue N classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$1,370,000/h5> p classbf1>5702 Woodlawn Avenue N, Seattle, WA 98103/p> ul classitem__info bf2> li>3 BEDS/li> li>2 BATHS/li> li>2,180 Sq.Ft./li> /ul> /div> /a> a classitem href/properties/3827-ne-86th-street-seattle-wa-us-98115-nwm2237316 classimage-wrap> p classstatus bf1>Sold/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2237316/-8935804802142818115.jpg alt3827 NE 86th Street classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$1,310,000/h5> p classbf1>3827 NE 86th Street, Seattle, WA 98115/p> ul classitem__info bf2> li>2 BEDS/li> li>2 BATHS/li> li>1,920 Sq.Ft./li> /ul> /div> /a> a classitem href/properties/3018-ne-95th-street-seattle-wa-us-98115-nwm2210208 classimage-wrap> p classstatus bf1>Sold/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2210208/-5951844710724411148.jpg alt3018 NE 95th Street classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$1,255,000/h5> p classbf1>3018 NE 95th Street, Seattle, WA 98115/p> ul classitem__info bf2> li>2 BEDS/li> li>1 BATH/li> li>1,040 Sq.Ft./li> /ul> /div> /a> a classitem href/properties/3018-ne-95th-street-seattle-wa-us-98115-nwm2216597 classimage-wrap> p classstatus bf1>Sold/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2216597/2865046485873984536.jpg alt3018 NE 95th Street classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$1,255,000/h5> p classbf1>3018 NE 95th Street, Seattle, WA 98115/p> ul classitem__info bf2> /ul> /div> /a> /div> div classbottom-bar> div classarrows js-arrows space-arrows-centered >/div> div classbutton-holder> /div> /div> /div>/div>/section>section classimage-section is-font-color-light is-background-color-light idsection-16c12846-efff-420e-a030-4b69874942de data-el-id60315b02-0803-4dc1-be5a-360f795dd1a2> div classtestimonials-section lp-container lp-vertical-paddings testimonial-container parallax> div classsliders-container> div classavatar-slider js-avatar-slider> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/07fc1280-15ba-472b-abbf-26af50a46f9e altD classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/c7cca595-7b34-476e-9b32-535c33e42f0d altLiz H classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/39b16c35-dba1-43ce-bc1c-cd2f48d04399 altHeather A classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/d3a84147-11ff-48d7-98e4-8ef182405ee2 altDanny M classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/75bdbaac-5b7d-471c-b033-6fb1417c6645 altHannah A classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/d0a7b149-443d-42d0-9fc8-0ef11296bcd7 altAndrew M classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a78f7b46-ca7b-4d4c-ba5b-4abc4bde5c24 altKelsey S classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/51798f44-4fec-4c42-9f04-24b68cc56d3e altHannah E classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/ac33dc7e-4ce2-4f31-b02f-60bb42db092c altKathleen R classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/29dfd0ab-2dc7-49dd-8406-5571780daad7 altMarcus J classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/2b814692-d60a-469a-b17a-a554eabcc67a altEmily H classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/953946ce-55db-460f-86c5-32e9da3d64a8 altKelly C classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/f452006b-9fc4-4252-bccf-cdd338ff51c1 altJim C classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/ff02a07b-f8c7-4c5c-a3f7-5e9c55548496 altNicole P classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/efd9f839-3612-48f5-92d0-932c444eaa7d altKate K classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/3548cd2e-02b8-4b97-8e58-2901bb8f7e40 altDoug P classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/3d69c896-b3dd-4be5-84b8-e33e47ef5f90 altAlicia B classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/0b846c55-dacb-4254-93ee-fb504aa228b8 altJenna H classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/7378c280-ad65-4751-bc69-6f4e91f226ca altBrian F classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/2aac890b-329e-43a2-aff6-b9c9e47e7052 altEarl P classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/b83dffeb-7a9d-4c67-8530-09fe75b84c06 altCarey H classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/8972705c-b23b-4ae2-a84d-edb19f351639 altBrian S classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/99a52fac-5b52-43ea-bdbd-98a6edc2d554 altJames B classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/0705c4c3-e71b-446f-b713-4830bbce0907 altTracy R. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/1cdc7e08-1b77-4247-bf00-d3b97c246d88 altRyan W classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/87f6100f-9025-433f-afd7-dac81ec9a50f altShana L classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/63214482-c072-4814-b479-acbb6c13dd5d altMaika M classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/cde11498-320a-4ec2-b28a-4e9053f3bd43 altOrion B. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/babb33d3-39fd-4de2-8f40-4b0a499c5f1e altTemryss L. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/cea49895-8762-4310-a283-d1e20813ece6 altJeremiah L. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/10908b5f-f907-406b-a5ec-f9b872b3d1f6 altCole H. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/fcaffff3-f105-4fbc-ac49-2a607585cd4c altHoward S classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/a96cd967-9f04-4f99-b75f-f9aeb7f9d63a altHaley E classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/b6e451a2-34d0-4331-9957-0d49a30fe044 altSarah W. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/40d754a6-e64e-4753-8a2e-0f0d9264cc8c altSarah T. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/1db73297-0886-4942-b0a8-170b5b1b7d2c altSophia A classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/8aa1bbbe-25ed-416d-a54f-9ad0e4f2584f altConor L. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/48356957-c9b3-4edb-90cc-d684ca260fb3 altJP classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/e779ccf9-1059-41f8-90b9-5a8d3bed6b36 altRJ classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/11da258c-ca0a-4129-9961-414b1170220e altAmanda L. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/b2a0a07b-6ecc-48b7-a099-bce6fcb8665b altAaron A. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/c9d69aed-2162-4dba-b968-4aca174f255a altCarson C. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/df921b49-be8b-40f9-8c7f-4e74a2378edd altNicki S. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/0ff7adc6-e06b-40b1-8dea-0ade576b793c altJulia R classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/3857800e-9507-4480-a64d-d1714490c984 altJulia N. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/9a7edc43-526c-4fca-9050-604c0ebfefbf altHeather A. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/mjeprywxv00uw5war7ec altAndrew M. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/mjeprywxv00uw5war7ec altLiz H. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/mjeprywxv00uw5war7ec altKathleen R. classportrait loadinglazy> /div> /div> div classavatar-slide> div classavatar js-animation-target> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/mjeprywxv00uw5war7ec altAbigail G. classportrait loadinglazy> /div> /div> /div> div classlist list-slider js-list-slider data-arrows-style> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>It has been wonderful working with Chris Randall. His enthusiasm for the process has been so encouraging and energizing. I would 100% recommend working with Chris Randall to anyone who is embarking on a home-seeking journey./p> p classauthor bf1>— D/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>I can't say enough good things about Chris. From buying to selling, he makes the entire process MUCH less stressful. He even helped me navigate the rental process, which he was not obligated to do at all! He is a wealth of knowledge and an incredible human to have in your corner. A true Realtor for life!/p> p classauthor bf1>— Liz H/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was everything we could ask for in a real estate agent. We are now lucky enough to call him one of our friends. Because the whole experience was intentional, low pressure and fun, we ended up finding the absolutely perfect house in the neighborhood we knew nothing about when we started our search. We spent less than we thought we would and got lots in return, including Chris’s wisdom at every step of the process. I highly recommend talking to Chris when you’re interested in even thinking about buying a home or a property./p> p classauthor bf1>— Heather A/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris is the rare agent that spends the time to care for his clients along with the business partners around him. How people treat other folks in the transaction shows true character. Five stars for chris hands down!/p> p classauthor bf1>— Danny M/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris is so knowledgeable about Seattle real estate and all the details one needs to think about when buying a home. We trusted him to help us very quickly find and purchase a new home (all while we were out of state) and he made sure everything went smoothly./p> p classauthor bf1>— Hannah A/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>I’ve worked with Chris on both a sale and a purchase of a home and he’s been the best partner you could hope for. Chris comes with a lot of experience, a strong bias for action, and really cares about getting you the best outcome. On the buy side, he particular he has a sharp eye for home details that may indicate deeper issues or future hassles. Often I’d have a question for him or a request for documents and he already had them because he was curious himself or anticipated I’d ask. On the sell side, he knew exactly what needed to be done and has an impressive network of people to help close out on pre-sale items. He moved quicker than I thought was possible and kept me well informed the whole way through./p> p classauthor bf1>— Andrew M/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>We are so appreciative of Chris and how much he helped through every step of the process of selling our house, starting with meeting with us literally years in advance to talk about our goals and optimal time for listing. He coached us through listing prep, coordinated contractors to get little details buttoned up so our house really shone, and helped us strategize on pricing and negotiations with expertise, thoughtfulness, and patience, plus a welcome sense of humor :) . Not only that, he tapped his own real estate network to help us find a temporary rental in a competitive neighborhood. I highly recommend working with Chris whether buying or selling!/p> p classauthor bf1>— Kelsey S/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Four pairs of new-homeowner friends heartily recommended Chris, and he completely lives up to the hype! Chris is wise, warm, funny, well-connected, and SO knowledgeable about the Seattle housing market and real estate in general.He guided us through every step of this intimidating process, providing a calm anchor as we weathered the stormy emotions of our housing search. Whenever we got discouraged, or fell prey to a scarcity mindset in this ultra-low-inventory year, Chris would repeat his mantra of "More houses will come." He repeatedly underlined that we needed to go at our own pace—patiently answering so many questions and offering wisdom.He's got a real eye for which kinds of funkiness indicate a great value, and which signal a red flag. He has a deep rolodex of industry folks he can ask for ballpark estimates on repairs and renovations, and graciously offered himself (and his network) as a resource post-purchase.With Chris' help, we were able to buy a house that checks all of our boxes, well within our budget. We are so grateful and would recommend him wholeheartedly to anyone embarking on this process./p> p classauthor bf1>— Hannah E/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>We are very happy we chose Chris Randall as our realtor. Chris went above and beyond to assist us with the sale of the condominium we inherited. We live out of state and we’re not able to be there in person to handle the many responsibilities of selling property. We live on the east coast and travelled to Washington with minimal trips. On our scheduled trips, Chris set up many appointments which greatly facilitated the decisions we had to make. Chris is extremely organized and efficient in what he does. He was in constant contact with us throughout the whole process. Chris’ guidance and recommendations were very helpful and beneficial. We highly recommend Chris Randall to help you with the sale of your real estate./p> p classauthor bf1>— Kathleen R/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris is amazing! He kindly and patiently guided me through the entire home buying process. From viewing many, many houses with me and answering all of my questions to tackling the hurdles of closing, he always had my back. And I had a lot of fun working with him. 100% would hire again!/p> p classauthor bf1>— Marcus J/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>We received multiple recommendations to work with Chris and were very happy with our choice! As first time home buyers, we felt that he really understood what we were looking for and possessed an extensive knowledge of both the Seattle real estate market and home design to share with us. His experience with home upgrades was very helpful while walking through homes to better understand costs and importance of home conditions and upgrades needed. He made the entire process seamless and was ready to pivot mid-search when our home priorities changed.We really appreciated his preparedness and positive energy every time we met up; he often anticipated our questions and already had answers or advice prepared. He truly listened to our wants and needs and we never felt he was trying to push us into a home outside of our priority list. We look forward to working with Chris again in the future and will absolutely recommend him to others!/p> p classauthor bf1>— Emily H/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was such a pleasure to work with - no really, I was almost sad when my offer was accepted because it meant I wouldn't be hanging out with Chris anymore. He eased me into the process, happily answered all my questions along the way, took care to understand what I was looking for and what I valued, writes great limericks (an important part of the home-buying process), and he was never ever pushy. He also used his extrovert powers to great effect, enabling us to gather building intel and neighbor gossip, which I (an introvert) greatly appreciated and delighted in. I heartily recommend Chris and look forward to working with him again in the future./p> p classauthor bf1>— Kelly C/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris is an awesome realtor. Chris helped our family purchase a house in Seattle that will be shared between us and our children. We had unique requirements and Chris was amazing in helping us do our search, refine our requirements, and execute the buy. I wish I could give him 6 stars!Our purchase was remote (both us and our children were living in different states) which made things more complicated. Chris worked with us through the whole process and provided excellent support the whole way through.If you need a realtor in the Seattle area, you can't do better than him./p> p classauthor bf1>— Jim C/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>We considered a few agents but when we met Chris, it was an easy choice for us! Chris was willing to work around our schedules and needs. Being first time home buyers, we were pretty clueless but Chris talked us through everything in detail and helped us make the best decisions possible. When we were ready to make an offer, he jumped on it immediately and we had our offer accepted just a few hours later thanks to his communication with the seller agent! Through closing and even after move in, Chris checked in daily to make sure we had everything we needed./p> p classauthor bf1>— Nicole P/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris came highly recommended by friends and I can totally see why! He was super responsive and communicative throughout the entire process and provided a ton of insight and guidance at every step. As a first time homebuyer, the process can be stressful and overwhelming but Chris was super knowledgeable and supportive, which helped put us at ease. He listened to what we were looking for and never made us feel pressured to move forward with something we didn't love or to compromise our list of priorities. He also answered every question we threw his way and taught us a lot of what to look for when buying a home. After working with Chris, we found a house that we are really excited about and one that we are confident about investing in.I would absolutely recommend Chris to anyone looking for a real estate agent and look forward to working with him again when the time comes!/p> p classauthor bf1>— Kate K/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was extremely helpful every step of the way. Not only that, he took a no-pressure approach to helping us find our home. Chris’s knowledge of heating/electrical systems and overall construction was a bonus. After all, it’s not just about what looks good. It’s about whether the home will function as it should! Would recommend Chris a hundred percent!/p> p classauthor bf1>— Doug P/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris is so fantastic at what he does. Thanks to him my husband and I now own a condo downtown with original brick walls, and we got it under asking price. We’ve owned the place for around a year now and Chris has even kept in touch, for example, making sure we have what we need to cover our new home purchase when filing for taxes this year. If you’re looking for someone who’s very knowledgeable and honest, he’s your guy./p> p classauthor bf1>— Alicia B/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris went above and beyond for us! He runs his real estate business with a steady calm and devoted energy. I appreciated the thoughtfulness and the creativity he brought to the sale of our home and the purchase of investment properties in Seattle. I’d recommend him to the closest of friends, he’s a solid 5 stars./p> p classauthor bf1>— Jenna H/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris’ customer service is superb and he was a huge help to us before, during, and after our home purchase. From the very beginning of the process, he focused on understanding what we were looking for and consistently checking in to make sure he was being responsive to our questions. He maintained a great attitude throughout the process and was really helpful in keeping us grounded and as calm as possible during what can be a very hectic and stressful process. We recommend Chris to all our friends. He’s awesome!/p> p classauthor bf1>— Brian F/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Working with Chris Randall on the sale of our condo in Bellevue was an excellent experience, thanks to his expertise and professionalism.When we first met Chris, we were immediately impressed by his approach. There was never any pressure, only thoughtful recommendations. He ensured we never felt rushed or pushed into any decisions. One of the suggestions Chris made—regarding upgrades to improve the condo's curb appeal—turned out to be invaluable. He had industry contacts that we used, and since we were located six hours away, Chris took it upon himself to oversee the contractors. He provided us with daily updates, ensuring everything ran smoothly until the project was completed. Given the difficult circumstances surrounding a family death and inheritance, we couldn't have asked for a better Realtor to guide us through this process."/p> p classauthor bf1>— Earl P/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>100% recommend working with Chris! My partner and I were first time home buyers coming in knowing almost nothing about what goes into buying or owning an house, and Chris helped us through every step of the overwhelming process. He is incredibly informative, patient, supportive, enthusiastic, and makes it fun. He was very available and flexible for meeting at houses or communicating by phone. I don’t know everything that goes on behind the scenes, but I could tell he was hustling to help figure things out for us! We had a short closing window and everything went super smoothly. Chris is awesome./p> p classauthor bf1>— Carey H/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>We had a great experience working with Chris! He is patient, kind, and realistic which really reduces the stress involved in a house search. We absolutely love our house and probably wouldn't have stuck out the search without his help./p> p classauthor bf1>— Brian S/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was wonderful to work with. I felt like he was always available and uniquely understood my needs. Whenever we spoke it was clear he had my needs in mind, even outside the conversation. His demeanor was both friendly and professional at all times. He was clearly knowledgeable in real estate as he had so many insights I wouldn’t have known to seek. And, he was willing to find more information whenever he didn’t have the answer readily available. I love my home, but would absolutely work with Chris again if I ever seek another home or wish to sell mine./p> p classauthor bf1>— James B/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>We were fortunate to work with Chris Randall to help sell my parents’ home as they transitioned to senior housing. It was no small task—after 57 years in the same house (complete with multiple remodels and an enormous amount of belongings), the process required an exceptional level of coordination, care, and patience.Chris approached every step with diligence and calm, never rattled by the inevitable curveballs that come with a move like this. He consistently followed up on questions, checked in on progress, and offered steady, level-headed guidance through each phase of preparation. His ability to solve problems as they arose, without drama, gave us great peace of mind.With me being an architect and my husband a home inspector, we came with a particular set of perspectives—and Chris met us with openness, respect, and a willingness to listen and adapt. He honored our input while also offering thoughtful, experience-based advice that helped shape a successful outcome.The house was listed and sold within a week, with multiple offers, and Chris guided us skillfully through the decision-making process with clarity and care.Beyond his professionalism, it was Chris’s kindness, connection, and sense of humor that made this experience not only successful but memorable. He brought peace of mind and lightness to what could have felt like an overwhelming transition, and we are deeply grateful.Our experience was wonderful, we highly recommend Chris for selling and/or buying a home./p> p classauthor bf1>— Tracy R./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>I would highly recommend Chris! He helped us with the sale and purchase of our homes and made both processes enjoyable. His expertise and resources make him one of the best. We would not be in our dream home without his proactive approach./p> p classauthor bf1>— Ryan W/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was a joy to work with. He made the first-time home buying experience smooth and seamless, while helping us avoid pitfalls. He went out of his way to drive hither and yon to our areas of interest outside of his typical working range, and was always warm and upbeat. We would not hesitate to work with him again. Thank you, Chris!/p> p classauthor bf1>— Shana L/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>We really couldn't have asked for a better person to work with than Chris when we started our search for a home. He's very kind, personable, and so knowledgeable on every aspect of buying a home.After touring a few houses together, I suddenly felt confident estimating the decade that a home might've been built. We thought it would take a while to get the ball rolling on purchasing a home, but Chris helped us feel comfortable on taking some steps sooner (which ended up helping us lock in a much better interest rate).After purchasing our current house, Chris is still who we get our recommendations from for companies and contractors to use for house projects. Working with him is like working with your smartest best friend who always has your best interest in mind.Thank you for all you do, Chris!! We are eternally grateful for you helping us find our dream home!!/p> p classauthor bf1>— Maika M/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris just helped us buy a wonderful home. He was (and continues to be, even after closing) knowledgeable, responsive, informative, transparent and fun to be around. Highly recommend!/p> p classauthor bf1>— Orion B./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris played such a crucial role in our home buying journey. The house buying process in Seattle was agonizing. After a few failed offers and a frustrating search, Chris joined our team and we realigned on our strategy. He proactively vetted homes and prioritized our family's needs. His experience and knowledge gave us the confidence to make a competitive and winning offer – making our home buying dream become a reality. In addition to being a knowledgable real estate agent, I really enjoyed being around Chris. He's such a good human. We're so grateful to Chris and cannot recommend him enough if you are in the market to buy or sell your home./p> p classauthor bf1>— Temryss L./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was recommended to us by a close friend when we were in need of a different kind of realtor. We were looking for someone who is patient, flexible, hard working, and most importantly honest. Chris exemplifies all of these characteristics to the highest degree. When we wanted to rush to sell our home, he wisely guided us to wait for the opportune moment. When we couldn’t list our home for a few months, he patiently waited for us and the market to be ready. While the home was being prepped he gave us valuable information and resources that allowed the process to be quick and painless. Chris is so invested in the homes that he sells to the point that he was on our roof the day of listing cleaning moss off of it. My wife and I could not have imagined working with anyone else over the course of selling our home. We were more than 100% satisfied with the result of our sale and I guarantee that if you work with Chris, you will be too./p> p classauthor bf1>— Jeremiah L./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>I honestly could not recommend Chris more highly if you are looking for a Realtor. Chris balances being totally on top of all the details so you can rest easily with a deep emotional intelligence that makes you feel more sane in the at times destabilizing process of buying or selling a house. If you need someone to support you through navigating a competitive and challenging market and to make you laugh and feel ok with the process message Chris, you will not regret it- seriously./p> p classauthor bf1>— Cole H./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was always cheerful and professional, but he was also incredibly patient with us during our hunt for a home. He worked with us for five months and never flagged or lost his enthusiasm to aid us in our search. When we finally settled on our choice, he negotiated very favorable terms for us. This is a guy you want on your side./p> p classauthor bf1>— Howard S/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was awesome to work with! He helped us find exactly what we were looking for, patiently helping us narrow it down as we went. He provided expert advice and made it such a smooth process for us. He really went out of his way to help us find our house well outside of his usual area and is an all-around great guy. We highly recommend Chris!/p> p classauthor bf1>— Haley E/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>We had a very compressed timeline and Chris made our entire process seamless and even enjoyable. He expertly conducted the entire orchestra of timelines, paperwork, and communications - and had such incredible and professional recommendations that made the whole process streamlined, and made us feel at ease.Chris is extremely personable and I will be forever grateful for having been connected to him through a dear friend at such an important moment. I would 1000% recommend him to others as trustworthy, honest, and extremely well connected, knowledgeable and professional.Recommend him to your friends and family for a caring experience filled with integrity, good humor, transparency, and skilled support every step of the way!/p> p classauthor bf1>— Sarah W./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>I had a great experience both selling my old home and purchasing a new one with Chris! He paid attention to the important details during both processes to make it all seem easy and smooth. He also provided recommendations of contractors for new house projects, and still checks in years later. A joy to work with!/p> p classauthor bf1>— Sarah T. | span classposition>A joy to work with!/span>/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>I couldn’t recommend Chris more! He was always knowledgeable, patient, and truly invested in helping us find the right home. He walked us through price estimates for potential renovations and made the whole process less overwhelming. He also connected us with fantastic referrals for plumbing, electricity, etc that have been very useful!What really sets him apart is his continued support- four years after we bought our house, he’s still just a text or e-mail away whenever we have questions. He is truly committed to his clients and so easy to work with!/p> p classauthor bf1>— Sophia A | span classposition>I couldn’t recommend Chris more! /span>/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris Randall is a total champ of a real estate agent. He helped me buy a cabin for my mom in Suquamish, navigated a tricky pre-sale next door with finesse, and guided my wife and me through buying a property behind our house. He’s ultra-responsive, does deep-dive research, and brings serious know-how on home fixes, contractors, and the local scene. Plus, the man’s got great taste in music, his real estate emails come with playlists! If you want smart, savvy, and soulful, Chris is your guy./p> p classauthor bf1>— Conor L. | span classposition>If you want smart, savvy, and soulful, Chris is your guy./span>/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>I wasn’t sure what it would be like hiring a friend. I had my hesitations and was biased against the idea at first! But working with Chris as our realtor changed my mind. He guided my wife and me through both selling our home and buying a new one in Seattle and somehow made it an enjoyable process. As a realtor, he goes above and beyond, compared to other realtor experiences we've had and heard about.Chris is an exceptional communicator, really attuned to the pace and direction that felt right for us. I think his upbeat style and his flow of informative emails, texts, and calls was very helpful. And at multiple points if we felt overwhelmed, he paused and was like, “Let’s take a breath and step back. Let's talk through possible scenarios.” That kind of check-in helped us feel grounded and supported in a process that can often feels rushed and high-stakes. He could give clear guidance when we needed it and could accelerate the hustle at a moment’s notice to make a showing or offer happen.An unexpected bonus: he’s incredibly well-connected. His network of contractors, other realtors, and service providers made everything less stressful!The experience changed how I think about hiring a friend for a professional service. With upfront and ongoing communication, it can work really well. We experienced an added layer of trust knowing that he was working with our interests in mind and it strengthened my trust in him as both a professional and a friend.We definitely recommend him to anyone looking./p> p classauthor bf1>— JP | span classposition>As a realtor, he goes above and beyond/span>/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>He made our home buying experience so easy and had answers to all of our many, many questions. Couldn't recommend him enough and will be using him for any future purchases!/p> p classauthor bf1>— RJ/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Buying our first home was a huge milestone, and we couldn’t have asked for a better person to guide us through it than Chris Randall. From the very beginning, he treated us like family—not just as clients, but truly as friends. He looked out for our best interests every step of the way, never pushing us, always patient, and constantly making sure we felt confident and informed.He also has an incredible network of trusted professionals—lenders, inspectors, contractors, you name it. Every connection he made for us was solid and reliable.We must’ve toured dozens of homes, and not once did he make us feel rushed. His calm, reassuring presence made the entire process feel less overwhelming. Now that we’ve closed, we truly consider him a friend, and we’re so grateful to have had him in our corner.All of my friends and family work with him, and now we understand why. We can’t recommend Chris highly enough. If you’re buying a home, especially your first, you need someone like him in your life./p> p classauthor bf1>— Amanda L. | span classposition>We’re so grateful to have had him in our corner/span>/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris is great at what he does and is a pleasure to work with./p> p classauthor bf1>— Aaron A./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris has been the perfect partner for our home buying journey! He was instrumental in helping us find and negotiate our dream home, and he’s been a huge support in helping us own and improve our home over the years.In the early days of our search we were still trying to identify what kind of home we wanted; Chris was there with us as a third brain, helping us hone our criteria and debriefing what we liked and didn’t like about homes we toured. He was careful to only give his opinion when we asked for it, and instead “coached” us with great questions and options throughout the process.Chris was actually the one who sent us the listing for the home we ended up buying - we had seen the listing but passed it over because it was just beyond our price range. It had been sitting on the market, and Chris thought we could get it for under asking with the right negotiation. He helped us do just that - and we closed the deal very quickly in a way that satisfied the seller and saved us cash on the closing costs.Our home has a small cottage unit that we rent out, and since buying the home Chris has helped us learn how to be good landlords. He’s also given us good contacts for contractors over the years when stuff breaks or we need work done. He’s truly been with us every step of the way and we are so thankful to work with him! Can’t recommend highly enough./p> p classauthor bf1>— Carson C. | span classposition>Chris has been the perfect partner for our home buying journey! /span>/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was the perfect agent to help us find our first home. He was patient and kind and put us at ease. Every home has challenges, but Chris made sure it was a solid home at a great price. He really knew what to look out for. We were able to buy a home in Seattle at a competitive price because a builder had put in an offer and then pulled out. The home went back on market and we got it without too much back and forth. Would definitely work with Chris again!/p> p classauthor bf1>— Nicki S. | span classposition>He was patient and kind and put us at ease!/span>/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris is an exceptional real estate agent and truly the best I’ve worked with. He is incredibly thorough, professional, and reliable—qualities that make a huge difference when buying or selling a home. His deep real estate market knowledge, extensive experience, and clear communication made the entire process smooth and stress-free. If you’re looking for a top real estate agent who knows the local market and delivers outstanding service, I highly recommend working with him./p> p classauthor bf1>— Julia R | span classposition>Chris is an exceptional real estate agent and truly the best I’ve worked with/span>/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was very responsive as well as a great communicator and team player. He's knowledgeable about the complexities of the local market in our area, including the latest changes in density zoning. I was impressed that he sought the input of a group of his colleagues to determine our best listing price. The property was unique and he took the time to reach out to his developer contacts multiple times to encourage their consideration and understand their reasons for hesitating to bid. His realistic approach to strategizing and positioning the listing helped manage expectations and I believe got us the best outcome possible under the circumstances. He really went the extra mile and I'd recommend him whole heartedly!/p> p classauthor bf1>— Julia N. | span classposition>Chris was very responsive as well as a great communicator and team player!/span>/p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris was everything we could ask for in a real estate agent. We are now lucky enough to call him one of our friends. Because the whole experience was intentional, low-pressure, and fun, we ended up finding the absolutely perfect house in the neighborhood we knew nothing about when we started our search. We spent less than we thought we would and got lots in return, including Chris’s wisdom at every step of the process. I highly recommend talking to Chris when you’re interested in even thinking about buying a home or a property./p> p classauthor bf1>— Heather A./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>I’ve worked with Chris on both a sale and a purchase of a home and he’s been the best partner you could hope for. Chris comes with a lot of experience, a strong bias for action, and really cares about getting you the best outcome. On the buy side, he particular he has a sharp eye for home details that may indicate deeper issues or future hassles. Often I’d have a question for him or a request for documents and he already had them because he was curious himself or anticipated I’d ask. On the sell side, he knew exactly what needed to be done and had an impressive network of people to help close out on pre-sale items. He moved quicker than I thought was possible and kept me well-informed the whole way through./p> p classauthor bf1>— Andrew M./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Where to begin with sir Chris Randall? He is amazing! From buying to selling, he makes the entire process much less stressful. He even helped me navigate the rental or landlord process, which he was not obligated to do at all! He is a wealth of knowledge and an incredible human to have in your corner. A true realtor for life!/p> p classauthor bf1>— Liz H./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>We are very happy we chose Chris Randall as our realtor. Chris went above and beyond to assist us with the sale of the condominium we inherited. We live out of state and we’re not able to be there in person to handle the many responsibilities of selling property. We live on the East Coast and traveled to Washington with minimal trips. On our scheduled trips, Chris set up many appointments which greatly facilitated the decisions we had to make. Chris is extremely organized and efficient in what he does. He was in constant contact with us throughout the whole process. Chris’ guidance and recommendations were very helpful and beneficial. We highly recommend Chris Randall to help you with the sale of your real estate./p> p classauthor bf1>— Kathleen R./p> /div> /div> /div> div classlist-cell js-list-cell> div classquote> div classtext> h6 classtitle lp-h6>WHAT MY CLIENTS SAY/h6> p classbody>Chris Randall is the best agent in Seattle–hands down. He is so easy to work with and so responsive that I actually got worried we were taking up too much of his time. He found us our dream house in a matter of weeks and with his help, creativity, and dedication our second offer was accepted in this ridiculously competitive market! We love him!/p> p classauthor bf1>— Abigail G./p> /div> /div> /div> /div> /div> div classbottom no-arrows> div classarrows-container>/div> p classnum-pages js-num-pages>/p> /div> /div>/section>section idsection-27aae6b2-be4b-48ff-afc6-404eb5cfa669 classsolid-section is-font-color-dark is-background-color-light data-el-idfe4fa47b-568b-45f5-ba41-cfc53ad2829b>script typetext/x-handlebars-template classitem pagination-script> a classitem {{#if fromMLS}}href/home-search/listings/{{id}}{{else}}href/properties/{{slug}}{{/if}} classimage-wrap> {{#if status}}p classstatus bf1>{{formatPropertyStatus status}}/p>{{/if}} div classimage-wrap> {{#if media}} div classitem__picture lp_animation-img-zoom> {{{mediaImage media.0 sizes(min-width: 768px) 644px, 100vw classimg altname}}} {{#if openHouseHours}} div classopen-house label-house bf1>Open House: {{openHouseHours}}/div> {{/if}} /div> {{/if}} /div> div classitem__text> h5 classlp-h5>{{formatPropertyPrice this}}/h5> {{#if name}}p classbf1>{{fullAddress}}/p>{{/if}} ul classitem__info bf2> {{#if bedroomCount}} li>{{bedroomCount}} {{#numCompare bedroomCount 1 >}}BEDS{{else}}BED{{/numCompare}}/li> {{/if}} {{#if bathCount}} li>{{bathCount}} {{#numCompare bathCount 1 >}}BATHS{{else}}BATH{{/numCompare}}/li> {{/if}} {{#if livingSpaceSize}} li>{{lpFormatNumber livingSpaceSize}} {{formatAreaUnit livingSpaceUnits}}/li> {{/if}} /ul> {{#if @root.mlsCompliance.property}} {{#if (or mlsAttribution mlsLogo)}} div classmls-compliance-container> {{#if mlsAttribution}}p classlp-mls-compliance__mls-attribution>{{mlsAttribution}}/p>{{/if}} {{{mediaImage mlsLogo classlp-mls-compliance__mls-logo altMLS logo sizes70px}}} /div> {{/if}} {{/if}} /div> /a>/script>div classfeatured-properties > div classlp-container lp-vertical-paddings> div classlp-title-group> h2 classlp-h2>Featured Properties/h2> div classlp-text--subtitle>p>Take a look at my active listings./p>/div> /div> div classcollection js-collection collection--3 js-collection--3 data-arrows-style data-disable-infinitefalse> a classitem href/properties/7003-37th-avenue-ne-seattle-wa-us-98115-nwm2464782 classimage-wrap> p classstatus bf1>For Sale/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2464782/-3506771956518736776.jpg alt7003 37th Avenue NE classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$2,775,000/h5> p classbf1>7003 37th Avenue NE, Seattle, WA 98115/p> ul classitem__info bf2> li>5 BEDS/li> li>5 BATHS/li> li>4,207 Sq.Ft./li> /ul> /div> /a> a classitem href/properties/7003-37th-avenue-ne-seattle-wa-us-98115-nwm2466061 classimage-wrap> p classstatus bf1>For Sale/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2466061/4416365536114525233.jpg alt7003 37th Avenue NE classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$2,775,000/h5> p classbf1>7003 37th Avenue NE, Seattle, WA 98115/p> ul classitem__info bf2> li>5 BEDS/li> li>5 BATHS/li> li>4,207 Sq.Ft./li> /ul> /div> /a> a classitem href/properties/3311-sw-hinds-street-seattle-wa-us-98126-nwm2472216 classimage-wrap> p classstatus bf1>Pending/p> div classimage-wrap> div classitem__picture lp_animation-img-zoom> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c578c666-d6e5-4847-b247-2985c963ae92/2472216/7403935476628613222.jpg alt3311 SW Hinds Street classimg loadinglazy> /div> /div> div classitem__text> h5 classlp-h5>$1,295,000/h5> p classbf1>3311 SW Hinds Street, Seattle, WA 98126/p> ul classitem__info bf2> li>2 BEDS/li> li>3 BATHS/li> li>2,480 Sq.Ft./li> /ul> /div> /a> /div> div classbottom-bar> div classarrows js-arrows space-arrows-centered >/div> div classbutton-holder> /div> /div> /div>/div>/section>section idsection-b438a141-565f-4f3b-88b7-1cce0065a521 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 classgallery-component__header> h2 classlp-h2 gallery-component__heading>Communities & Neighborhoods/h2> /div> div classrow gallery-component__row cols-2> div classgallery-component__col> a classgallery-card hrefhttps://p-3abf7949-5d8a-4742-a0ec-f6f06dc254f8.presencepreview.site/communities target_blank > 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/0c9ef3d0-c321-4510-b041-247e9ee59670 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/0c9ef3d0-c321-4510-b041-247e9ee59670 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/0c9ef3d0-c321-4510-b041-247e9ee59670 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/0c9ef3d0-c321-4510-b041-247e9ee59670 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/0c9ef3d0-c321-4510-b041-247e9ee59670 1920w alt loadinglazy> /div> h3 classlp-h3 gallery-card__title>AREAS I SERVE/h3> /a> /div> div classgallery-component__col> a classgallery-card hrefhttps://p-3abf7949-5d8a-4742-a0ec-f6f06dc254f8.presencepreview.site/neighborhoods target_blank > 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/9abdcd94-e966-472e-99b6-61ed836280cb srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/9abdcd94-e966-472e-99b6-61ed836280cb 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/9abdcd94-e966-472e-99b6-61ed836280cb 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/9abdcd94-e966-472e-99b6-61ed836280cb 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/9abdcd94-e966-472e-99b6-61ed836280cb 1920w alt loadinglazy> /div> h3 classlp-h3 gallery-card__title>NEIGHBORHOODS/h3> /a> /div> /div> /div>/div>/section>section idsection-ee739d89-9b9c-4840-8596-adb081ffb235 classsolid-section is-font-color-dark is-background-color-light data-el-id9764c7e9-5f8d-4612-b0cd-613fa57f86bf> div classpopup-modal redesign> div classpopup-modal__container > form classpopup-modal__form data-typecontact-form stylebackground: #ffffff; color: #000000> button typebutton classpopup-modal__close close>/button> div classpopup-modal__scroll> div classpopup-modal__form-group> div classpopup-modal__form-scroll> div classlp-title-group popup-modal__title-group> h2 classlp-h2>Are You Interested in Buying a Home?/h2> div classlp-h4 lp-text--subtitle lp-pre-line>p>Receive active listings in your inbox./p>/div> /div> div classpopup-modal__form-field> input idmp-email nameemail typeemail classlp-input popup-modal__input placeholderEmail required patterna-zA-Z0-9.!#$%&’*+/?^_`{|}~-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)+> input typehidden namesource valueNEWSLETTER_SIGNUP> input idmp-middleName namemiddleName value autocompleteoff tabindex-1 classlp-h-pot> /div> div classlp-disclaimer> label styledisplay: none; forsection-ee739d89-9b9c-4840-8596-adb081ffb235-termsAccepted>Opt In/Disclaimer Consent:/label> label classlp-tcr-content> span classlp-tcr-checkbox> input typecheckbox idsection-ee739d89-9b9c-4840-8596-adb081ffb235-termsAccepted nametermsAccepted oninvalidthis.setCustomValidity(Please accept the terms and conditions) oninputthis.setCustomValidity() required />/span> span classlp-tcr-message> I agree to be contacted by Chris Randall 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 classlp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width button-style-1 typesubmit>Submit/button> /div> /div> /div> div classthank-you > div classlp-title-group> h2 classlp-h2>Thank You!/h2> p classlp-pre-line lp-h4>Stay tuned for tailored listings./p> /div> a href/home-search/listings classlp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width button-style-1 > View all /a> /div> /form> /div>/div>/section>section classimage-section is-font-color-light is-background-color-light idsection-df3a1fa4-f2ec-4125-9759-3612741f0c2b data-el-id60f303de-57c9-4a3b-87cf-c1b576e15623> script> (function(){ const sectionId section-df3a1fa4-f2ec-4125-9759-3612741f0c2b 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 classsection work-with-us parallax style--opacityColor:rgba(0, 0, 0, 0);> div classlp-container lp-vertical-paddings> div classlp-title-group> h2 classlp-h2>Work with Chris/h2> p classpre-line>Chris Randall is dedicated to helping you find your dream home and assisting with any selling needs you may have. Contact me today to start your home searching journey!/p> /div> div classbtn-container> a rolebutton data-typeCONTACT_US classbtn btn--link lp-btn lp-btn--dark lp-btn--outline lp-btn--mob-full-width button-style-2 > Contact Me /a> /div> /div>/div>/section>section idsection-e1f8a2fc-e4da-4def-a12f-8c336be637ed classsolid-section is-font-color-dark is-background-color-light data-el-id3614c9e1-cfd9-4976-8483-8f4b825fd098> script typetext/x-handlebars-template classjsIGTemplate> a hrefhttps://www.instagram.com/{{username}} target_blank classtitle-group js-title-group> h3 classlp-h3 js-h3>/h3> div classusername-group>h5 classlp-h5>@{{username}}/h5>svg classarrow-icon width18 height12 fillnone xmlnshttp://www.w3.org/2000/svg>path dM-.002 7h14.085l-3.558 3.59L11.926 12l5.965-6-5.965-6-1.401 1.41L14.084 5H-.002v2Z fill#CCB091/>/svg>/div> /a> {{#each items}} {{#if mediaUrl}} div classitem-box> a hrefhttps://www.instagram.com/{{../username}} target_blank classitem insta-type-{{mediaType}}> div classitem__text> h3 classlp-h3 js-h3>/h3> div classusername-group> h5 classlp-h5>@{{../username}}/h5> svg classarrow-icon width18 height12 fillnone xmlnshttp://www.w3.org/2000/svg>path dM-.002 7h14.085l-3.558 3.59L11.926 12l5.965-6-5.965-6-1.401 1.41L14.084 5H-.002v2Z fill#CCB091/>/svg>/div> /div> div classitem__img stylebackground-image: url({{#ifEquals mediaType VIDEO}}{{thumbnailUrl}}{{else}}{{mediaUrl}}{{/ifEquals}});>/div> {{#ifEquals mediaType VIDEO}} div classmedia-type-icon> svg width30px height30px viewBox0 0 30 30 fillnone xmlnshttp://www.w3.org/2000/svg>path fill#fff dM19.369 6.042H2.082A2.086 2.086 0 000 8.125v13.71a2.086 2.086 0 002.083 2.083h17.285a2.086 2.086 0 002.084-2.083V8.125a2.086 2.086 0 00-2.084-2.083zM22.84 17.833l7.16 3.91V8.262l-7.16 3.908v5.662z/>/svg> /div> {{/ifEquals}} {{#if caption}} div classitem__info>div classitem__caption>{{caption}}/div>/div> {{/if}} /a> /div> {{/if}} {{/each}}/script> div classsection> div classlp-container lp-container--l lp-vertical-paddings style--userColor: rgba(0, 0, 0, 1);> div classslider-holder js-slider-holder data-titleFollow Us On Instagram > div classcollection js-collection jsIGContainer>/div> /div> /div>/div>/section> div idmodals classmodals>/div> footer idglobal-footer classis-font-color-dark is-background-color-light data-el-idf3892c1c-f128-483a-b998-cb1ea48c25c1> div classsite-footer> div classsite-footer__bottom> div classlp-container> div classsite-footer__logo-bar> div classsite-footer__logo-container> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/c137e004-054b-4ecf-bd40-d7e6a035956b srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/c137e004-054b-4ecf-bd40-d7e6a035956b 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/c137e004-054b-4ecf-bd40-d7e6a035956b 960w sizes268px alt> /div> div classsite-footer__logo-container> /div> /div> div classsite-footer__info> div classsite-footer__col> h5 classlp-h5 site-footer__col-title>Chris Randall/h5> div classsite-footer__col-content lp-a> a hreftel:(206) 595-6663>(206) 595-6663/a> br> a href/cdn-cgi/l/email-protection#72111a001b01321e13191700175c111d1f>span class__cf_email__ data-cfemail37545f455e44775b565c5245521954585a>email protected/span>/a> /div> /div> div classsite-footer__col> h5 classlp-h5 site-footer__col-title>Address/h5> div classsite-footer__col-content lp-a>p>7801 Green Lake Dr Nbr>Seattle, WA 98103/p>/div> /div> div classsite-footer__navigation-wrap> ul classfooter-navigation> li classfooter-navigation__item> a href/ classfooter-navigation__link>Home/a> /li> li classfooter-navigation__item> a href#section-27aae6b2-be4b-48ff-afc6-404eb5cfa669 classfooter-navigation__link>Featured Properties/a> /li> li classfooter-navigation__item> a href#section-b438a141-565f-4f3b-88b7-1cce0065a521 classfooter-navigation__link>Neighborhoods/a> /li> li classfooter-navigation__item> a href/dmca-notice classfooter-navigation__link>DMCA Notice/a> /li> li classfooter-navigation__item> button data-typeCONTACT_US classfooter-navigation__link typebutton>Contact Me/button> /li> /ul> ul classlp-socials social_icons-style-1 site-footer__socials socials> li> a hrefhttps://www.facebook.com/chrisrandallseattle/ classlp-socials__link socials__item data-wow-delay0s target_blank aria-labelFACEBOOK > span classlp-i lp-i--facebook aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.instagram.com/chrisrandallrealestate/ classlp-socials__link socials__item 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/realtorseattle/ classlp-socials__link socials__item data-wow-delay0.2s target_blank aria-labelLINKEDIN > span classlp-i lp-i--linkedin aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.yelp.com/biz/chris-randall-lake-and-company-seattle classlp-socials__link socials__item data-wow-delay0.3s target_blank aria-labelYELP > span classlp-i lp-i--yelp aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.google.com/search?q=Chris+Randall+at+Lake+%26+Company+Real+Estate&sca_esv=e8c05aba066cb726&rlz=1C1BNSD_enPH981PH981&biw=1920&bih=919&ei=zVQ1Z5XuNLOPvr0Ppr2zmAk&ved=0ahUKEwjViImq2NqJAxWzh68BHabeDJMQ4dUDCA8&uact=5&oq=Chris+Randall+at+Lake+%26+Company+Real+Estate&gs_lp=Egxnd3Mtd2l6LXNlcnAiK0NocmlzIFJhbmRhbGwgYXQgTGFrZSAmIENvbXBhbnkgUmVhbCBFc3RhdGUyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogRImA5QAFjgC3AAeACQAQCYAYsBoAGgA6oBAzIuMrgBA8gBAPgBAvgBAZgCBKACwwOYAwCSBwMyLjKgB_oK&sclient=gws-wiz-serp#lrd=0x5490119117a5a805:0x3e5a3c0985f11813,1,,,, classlp-socials__link socials__item data-wow-delay0.4s target_blank aria-labelGOOGLE > span classlp-i lp-i--google aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.zillow.com/profile/chrisrando classlp-socials__link socials__item data-wow-delay0.5s target_blank aria-labelZILLOW > span classlp-i lp-i--zillow aria-hiddentrue>/span> /a> /li> /ul> /div> /div> div classsite-footer__disclaimer>p stylefont-size: 12px;>All information is deemed reliable but not guaranteed and should be independently reviewed and verified./p>p stylefont-size: 12px;>The IDX display contains information sourced from the Northwest Multiple Listing Service. This data is intended solely for personal, non-commercial use and is not to be utilized for any other purposes except to identify potential properties for purchase. Although the MLS data displayed is typically considered 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. Any compensation offers are solely made to participants of the MLS where the listing is registered./p>p stylefont-size: 12px;>Based on information submitted to the MLS GRID. 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./p>p stylefont-size: 12px;>©span classauto-year-update>2024/span> Northwest Multiple Listing Service all rights reserved.img stylevertical-align: bottom; srchttps://res.cloudinary.com/luxuryp/images/f_auto,q_auto/pv3nzs2ntl6l765u6u0g/symbol-color-nwmls alt width25 heightauto>/p>p stylefont-size: 12px;>img idiivu srchttps://res.cloudinary.com/luxuryp/images/f_auto,q_auto/hb2xgjkvfhzchszjtpzp/disclaimer-highres width100px; heightauto>/p>/div> div classsite-footer__copy> div classlp-a site-footer__copy-lp> div classsite-footer__logo-container> img srchttps://media-production.lp-cdn.com/media/8b77e91e-22a3-4284-99d1-63e4211fff24 alt> /div> span>Website designed and developed by/span> a hrefhttps://www.luxurypresence.com/ class target_blank>Luxury Presence/a> /div> div>Copyright © span classauto-year-update>/span> | a href/terms-and-conditions>Privacy Policy/a>/div> /div> div classfooter__disclaimers lp-footer-disclaimers> div classdisclaimer-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/11/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/11/2026/span> at span classcmpl-time>2:58 AM 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>Lake & Company Real Estate/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> /div> /div> /footer> div idmodal-global-contact-us classmodal data-el-id stylebackground-color: ; > div classmodal-content> div classcontact-form> div classcontact-form__close close>/div> div classcontact-form__container> form classcontact-form__form data-typecontact-form stylecolor: #FFFFFF; background: rgba(127, 147, 170, 1); fill: #FFFFFF;> h5 classlp-h5 contact-form__title1>Get in Touch/h5> div classinput-container> input id-cmp-name namename typetext classlp-input lp-input--light contact-form__input placeholderName required> span classinput-icon>/span> /div> div classinput-container> input id-cmp-email nameemail typeemail classlp-input lp-input--light contact-form__input placeholderEmail required patterna-zA-Z0-9.!#$%&’*+/?^_`{|}~-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)+> span classinput-icon>/span> /div> div classinput-container> input id-cmp-phone namephone typetel classlp-input lp-input--light contact-form__input placeholderPhone required> span classinput-icon>/span> /div> div classinput-container> textarea id-cmp-contactMessage placeholderMessage namemessage required typetext classlp-input lp-input--light contact-form__input>/textarea> span classinput-icon>/span> /div> div classh-pot> label for-cmp-middleName>Middle Name/label> input id-cmp-middleName namemiddleName value autocompleteoff tabindex-1> /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 Chris Randall 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 typehidden namesource valueCONTACT_INQUIRY> button classcontact-form__submit btn lp-btn lp-btn--filled button-style-2 typesubmit> span classsync-icon lp-i--spin> svg width20 height15 viewBox0 0 20 15 fillcurrentColor xmlnshttp://www.w3.org/2000/svg> path dM16.3636 3.66667L12.7273 7.33333H15.4545C15.4545 10.3675 13.0091 12.8333 10 12.8333C9.08182 12.8333 8.20909 12.6042 7.45455 12.1917L6.12727 13.53C7.24545 14.245 8.57273 14.6667 10 14.6667C14.0182 14.6667 17.2727 11.385 17.2727 7.33333H20L16.3636 3.66667ZM4.54545 7.33333C4.54545 4.29917 6.99091 1.83333 10 1.83333C10.9182 1.83333 11.7909 2.0625 12.5455 2.475L13.8727 1.13667C12.7545 0.421666 11.4273 0 10 0C5.98182 0 2.72727 3.28167 2.72727 7.33333H0L3.63636 11L7.27273 7.33333H4.54545Z /> /svg> /span> span classsuccess-icon> svg width20 height20 viewBox0 0 20 20 fillcurrentColor xmlnshttp://www.w3.org/2000/svg> path dM10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM10 18C5.59 18 2 14.41 2 10C2 5.59 5.59 2 10 2C14.41 2 18 5.59 18 10C18 14.41 14.41 18 10 18ZM14.59 5.58L8 12.17L5.41 9.59L4 11L8 15L16 7L14.59 5.58Z /> /svg> /span> Submitspan classsuccess-text>ted/span> /button> /form> div classcontact-form__details> h5 classlp-h5 contact-form__title2>Contact Details/h5> div classcompany> div classcompany_contact lp-a> p styletext-transform: uppercase; color: #002855; font-weight: 400!important;>strong>Chris Randall/strong>/p> p>a hreftel:(206) 595-6663>(206) 595-6663/a>/p> p>a href/cdn-cgi/l/email-protection#e2818a908b91a28e8389879087cc818d8f>span class__cf_email__ data-cfemail7f1c170d160c3f131e141a0d1a511c1012>email protected/span>/a>/p> p>br>br>/p> p>7801 Green Lake Dr Nbr>Seattle, WA 98103/p> /div> /div> div classsocials> ul classlp-socials social_icons-style-1 lp-socials socials--theme-1> li> a hrefhttps://www.facebook.com/chrisrandallseattle/ classlp-socials__link lp-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/chrisrandallrealestate/ classlp-socials__link lp-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/realtorseattle/ classlp-socials__link lp-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.yelp.com/biz/chris-randall-lake-and-company-seattle classlp-socials__link lp-socials__link data-wow-delay0.3s target_blank aria-labelYELP > span classlp-i lp-i--yelp aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.google.com/search?q=Chris+Randall+at+Lake+%26+Company+Real+Estate&sca_esv=e8c05aba066cb726&rlz=1C1BNSD_enPH981PH981&biw=1920&bih=919&ei=zVQ1Z5XuNLOPvr0Ppr2zmAk&ved=0ahUKEwjViImq2NqJAxWzh68BHabeDJMQ4dUDCA8&uact=5&oq=Chris+Randall+at+Lake+%26+Company+Real+Estate&gs_lp=Egxnd3Mtd2l6LXNlcnAiK0NocmlzIFJhbmRhbGwgYXQgTGFrZSAmIENvbXBhbnkgUmVhbCBFc3RhdGUyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogRImA5QAFjgC3AAeACQAQCYAYsBoAGgA6oBAzIuMrgBA8gBAPgBAvgBAZgCBKACwwOYAwCSBwMyLjKgB_oK&sclient=gws-wiz-serp#lrd=0x5490119117a5a805:0x3e5a3c0985f11813,1,,,, classlp-socials__link lp-socials__link data-wow-delay0.4s target_blank aria-labelGOOGLE > span classlp-i lp-i--google aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.zillow.com/profile/chrisrando classlp-socials__link lp-socials__link data-wow-delay0.5s target_blank aria-labelZILLOW > span classlp-i lp-i--zillow aria-hiddentrue>/span> /a> /li> /ul> /div> /div> /div> /div> !-- version 1 --> /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>Lake & Company Real Estate/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.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: c578c666-d6e5-4847-b247-2985c963ae92, 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:d16ed905-f9c3-4d8e-b75e-0de8f7aa6249,alt:null,bytes:33788,width:960,format:png,height:600,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/ce0b6f9e-4270-4854-ae00-d48a8ebeb85a,smallUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/ce0b6f9e-4270-4854-ae00-d48a8ebeb85a,authorUrl:null,createdAt:2025-01-30T14:53:07.424Z,mediumUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/ce0b6f9e-4270-4854-ae00-d48a8ebeb85a,sourceUrl:null,updatedAt:2025-01-30T14:53:07.424Z,xLargeUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/ce0b6f9e-4270-4854-ae00-d48a8ebeb85a,__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/ce0b6f9e-4270-4854-ae00-d48a8ebeb85a,description:null,displayName:property-placeholder,originalUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/ce0b6f9e-4270-4854-ae00-d48a8ebeb85a,resourceType:image,thumbnailUrl:https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/ce0b6f9e-4270-4854-ae00-d48a8ebeb85a,originalFileName:property placeholder,cloudinaryPublicId:ce0b6f9e-4270-4854-ae00-d48a8ebeb85a} }, 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(); /* Initialize Luxury Presence SDK */ try { window.luxuryPresence.config.setCompany(c578c666-d6e5-4847-b247-2985c963ae92, {}); window.luxuryPresence.config.setWebsite(9df2c427-a741-4187-8d4e-b505c6bc6e93, { recaptchaSiteId: , myhomeDashboardEnabled: false }); const url new URL(window.location.href); const shareId url.searchParams.get(shareId); window.luxuryPresence.config.setPage(ef2457e8-9e5b-4ae6-8fcf-2461a5896865, { 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(8b02a6f2-ab50-49e4-90bd-4ff19e16147f, {}); 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) { let address $(# + sectionDomId + .company_address).text().trim(); $(# + sectionDomId + .company_address).text(address); function setHttp(link) { if (link.search(/^https?\:\/\/|\//) -1) { link http:// + link; } return link; } $(`#${sectionDomId} .contact-form__form`).on(reset, () > { const redirectLink $(# + sectionDomId + .redirect-link); if (redirectLink.length) { const rawHref redirectLink.attr(href); redirectLink.attr(href, setHttp(rawHref)); redirectLink0.click(); } });})(modal-global-contact-us);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var resizeMenu function () { var widthSoFar 0; var availableWidth $(# + sectionDomId + .navigation).width(); if ($(window).width() > 1024) { $(# + sectionDomId + .navigation > li).each(function () { $(this).hide(); const currentItemWidth $(this).outerWidth(); if (availableWidth - widthSoFar > currentItemWidth) $(this).css({ visibility: visible, display: list-item, height: auto }); widthSoFar + $(this).outerWidth(); }); } }; $(window).on(resize.lpui-auto-clean, resizeMenu); const mediaQuery window.matchMedia((hover: hover) and (pointer: fine)); var $subNavTrigger $(body > nav .sub-nav-container a); var $subNavContainer $(body > nav .sub-nav-container); if (mediaQuery.matches) { $subNavTrigger.off(click); $subNavContainer.mouseout(function () { var self $(this); self.removeClass(active).find(.sub-nav).removeClass(visible); }).mouseover(function () { $(this).siblings(.sub-nav-container).removeClass(active).find(.sub-nav).removeClass(visible); $(this).addClass(active).find(.sub-nav).addClass(visible); }).mouseup(function () { var self $(this); self.toggleClass(active); }); } function isSectionLight(sect) { if (!sect || !sect.style) { return true; } if (sect.style.backgroundImage) { return false; } if ($(sect).children(.video-wrapper).length) { return false; } return sect.classList.contains(is-background-color-light); } const $header $(`#${sectionDomId} > .header`); if ($header.hasClass(theme-auto)) { if (isSectionLight($(body > section)0)) { $header.removeClass(theme-light); } else { $header.addClass(theme-light); } } var resizeTimeout; clearTimeout(resizeTimeout); resizeTimeout setTimeout(function () { resizeMenu(); }, 1000);})(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\:\#211F1F\,\elementSelector\:\nav\,\fontColorScroll\:\#ffffff\,\backgroundColorScroll\:\#2C3426\,\initialBackgroundColor\:\transparent\}));} catch(e) {console.log(e);} try {(function init(sectionDomId) { sectionDomId global-sidemenu; var $sidemenu $(# + sectionDomId); const subNavItems $(body > div.sidemenu .sub-nav-container .sub-nav__item); const hideSubNavItems () > { subNavItems.removeClass(fadeInUp); }; const showSubNavItems subnav > { if ($(subnav).find(.arrow).hasClass(active)) { $(.sidemenu).find(.arrow).removeClass(active); } else { $(.sidemenu).find(.arrow).removeClass(active); $(subnav).find(.arrow).addClass(active); } let i 0; subnav.find(.sub-nav__item).each((idx, item) > { i++; var timeout; clearTimeout(timeout); timeout setTimeout(() > { $(item).addClass(fadeInUp); }, 100 + i * 50); }); }; $(document).on(click, function (e) { if ($(e.target).closest(.navigation).length 1) { hideSubNavItems(); } }); $(body > div.sidemenu .sub-nav-container > a).click(function (e) { const subnavContainer $(this).closest(.sub-nav-container); hideSubNavItems(); showSubNavItems(subnavContainer); }); const hideSideMenu () > { $(body > div.sidemenu).removeClass(visible); }; $(body > div.sidemenu .navigation .navigation__item:not(.sub-nav-container) .navigation__link).on(click, function (e) { onHide(); hideSideMenu(); }); $(body > div.sidemenu .sub-nav-container .sub-nav__link).on(click, function (e) { onHide(); setTimeout(() > { hideSideMenu(); }, 1601); }); var shown false; function onShow() { if (shown) { return; } shown true; window.lpUI.requestScrollLock(sectionDomId); $(# + sectionDomId + .navigation__link).removeClass(fade-in); $(# + sectionDomId + .lp-socials__link).removeClass(fade-in); let i 0; $(# + sectionDomId + .navigation__link).each(function () { i++; setTimeout(() > { $(this).addClass(fade-in); }, 900 + i * 50); }); $(# + sectionDomId + .lp-socials__link).each(function () { i++; setTimeout(() > { $(this).addClass(fade-in); }, 900 + i * 50); }); } function onHide() { hideSubNavItems(); if (!shown) { return; } $(# + sectionDomId + .lp-socials__link).removeClass(fade-in); let i 0; $($(# + sectionDomId + .navigation__link).get().reverse()).each(function () { i++; setTimeout(() > { $(this).removeClass(fade-in); }, i * 50); }); shown false; setTimeout(() > { window.lpUI.releaseScrollLock(sectionDomId); }, 1600); } $sidemenu.on(lpui-show, onShow); $sidemenu.on(lpui-hide, onHide);})(global-sidemenu);} catch(e) {console.log(e);} try {(function init(sectionDomId) { function setHttp(link) { if (link.search(/^https?\:\/\/|\//) -1) { link http:// + link; } return link; } $(`#${sectionDomId} form`).on(reset, function () { const redirectLink $(# + sectionDomId + .redirect-link); if (redirectLink.length) { const rawHref redirectLink.attr(href); redirectLink.attr(href, setHttp(rawHref)); redirectLink0.click(); } });})(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) { const $section $(# + sectionDomId); const showOnlyActive $section.find(.opening-with-search)0.dataset.onlyActive true; const showNeighborhoodNames $section.find(.opening-with-search)0.dataset.showNeighborhoodNames true; const $videoWrap $section.find(.full-screen-video-component > .video-wrapper); const $url $section.find(.opening-with-search).attr(data-video-url); let $iframe $section.find(.full-screen-video-component > .video-wrapper).find(iframe); let $video $section.find(.full-screen-video-component > .video-wrapper).find(video); let $mute true; if ($url) { $section.children(.video-wrapper:not(.video-wrapper-extended)).remove(); if ($iframe) { let src $iframe.attr(data-src); let youtubeId ; let vimeoId ; if (src && (src.indexOf(youtube.com) ! -1 || src.indexOf(youtu.be) > -1) && src.indexOf(youtube.com/embed) 0) { const youtubeRegex /(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v))|youtu.be\/)(a-zA-Z0-9_-{6,11})/; const youtubeResult src.match(youtubeRegex); if (youtubeResult) youtubeId youtubeResult1; } if (src && src.indexOf(vimeo.com) ! -1) { const vimeoRegex /(?:(www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(^/*)\/videos\/|)|player.vimeo.com\/video\/)(\d{6,})(?:|\/\?)/; const vimeoResult src.match(vimeoRegex); if (vimeoResult) vimeoId vimeoResult3; } if (youtubeId) src `https://youtube.com/embed/${youtubeId}?autoplay1&mute1&loop1&enablejsapi1&showinfo0&controls0&playlist${youtubeId}`;else if (vimeoId) src `https://player.vimeo.com/video/${vimeoId}?autoplay1&muted1&loop1&quality320p&controlsfalse`; $iframe.attr(src, src); $iframe.on(load, function () { $iframe.parent().addClass(playing); }); } } else 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 }); } }); } window.luxuryPresence.mapApiLoader.load().then(() > { var $dots $section.find(.js-dots); var $carousel $section.find(.js-carousel); $carousel.on(init, function () { $carousel.addClass(visible); $carousel.find(.title-item).find(.lp-h1).css({ transform: translateX(-100px), opacity: 0 }); $carousel.find(.title-item).first().find(.lp-h1).css({ transform: translateX(0), opacity: 1 }); }); $carousel.slick({ dots: false, arrows: false, appendDots: $dots, speed: 2000, fade: true, autoplay: true, pauseOnHover: false, slidesToShow: 1, adaptiveHeight: true }); $carousel.on(beforeChange, function () { $carousel.find(.slick-slide).find(.lp-h1).css({ transform: translateX(0), opacity: 1, transition: 1s all }); $carousel.find(.slick-slide.slick-current).find(.lp-h1).css({ transform: translateX(100px) }); }); $carousel.on(afterChange, function () { $carousel.find(.slick-slide).not(.slick-current).find(.lp-h1).css({ transform: translateX(-100px), transition: 0s all, opacity: 0 }); }); $(window).on(resize, function () { $carousel.slick(resize); }); const $searchWrapper $section.find(.search-wrapper); if (!$searchWrapper.length) { return; } const searchMls $searchWrapper0.dataset.searchMls true; const searchProperties $searchWrapper0.dataset.searchProperties true; const selectedCountries $searchWrapper0.dataset.locations; const searchPlaces searchMls; const showNeighborhoods searchMls; const searchNearEnabled searchMls; const $searchInput $section.find(.search-input); const $searchResults $section.find(.search-results); const $resultsContainer $section.find(.results-container); const $loader $section.find(.search-in-progress); const $predefined $section.find(.predefined-links); const $searchBtn $section.find(.search-button); const $leaseFalseButton $section.find(.jsLeaseFalse); const $leaseTrueButton $section.find(.jsLeaseTrue); const $nextSection $section.next(); const fixZIndex $nextSection.length && parseInt($nextSection.css(z-index)) || 1; const searchDelay 300; const maxPlaces 5; const maxMls 5; const leaseFilter $leaseFalseButton.length > 0 && $leaseTrueButton.length > 0; const service new google.maps.places.AutocompleteService(); const geocoder new google.maps.Geocoder(); var keyword; var leasePropertyState false; var leasePropertySearched; var searchActive false; var isLoading false; function showSearchResults() { searchActive true; updateSearchDisplay(); } function hideSearchResults() { searchActive false; updateSearchDisplay(); } function showLoading() { isLoading true; updateSearchDisplay(); } function hideLoading() { isLoading false; updateSearchDisplay(); } function updateSearchDisplay() { if (leaseFilter) { if (leasePropertyState) { $leaseTrueButton.addClass(active); $leaseFalseButton.removeClass(active); } else { $leaseFalseButton.addClass(active); $leaseTrueButton.removeClass(active); } } if (!searchActive) { $searchResults.removeClass(show); $searchResults.css(height, 0); if (fixZIndex) { $section.css(z-index, ); } return; } var hasResults !!$resultsContainer.html(); var hasPredefined $predefined.find(a:not(.not-processed)).length > 0; if (hasResults) { $predefined.addClass(not-visible); $loader.addClass(not-visible); $resultsContainer.removeClass(not-visible); } else if (isLoading) { $resultsContainer.addClass(not-visible); $predefined.addClass(not-visible); $loader.removeClass(not-visible); } else if (hasPredefined) { $resultsContainer.addClass(not-visible); $loader.addClass(not-visible); $predefined.removeClass(not-visible); } else { $resultsContainer.addClass(not-visible); $loader.addClass(not-visible); $predefined.addClass(not-visible); } var height 0; height + $predefined0.getBoundingClientRect().height; height + $resultsContainer0.getBoundingClientRect().height; height + $loader0.getBoundingClientRect().height; if (height > 0) { if (fixZIndex) { $section.css(z-index, + (fixZIndex + 1)); } $searchResults.addClass(show); } else { if (fixZIndex) { $section.css(z-index, ); } $searchResults.removeClass(show); } $searchResults.css(height, height + px); } 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); } } var newSearchTimer; 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(); hideSearchResults(); } else { $searchBtn.click(); } } window.clearTimeout(newSearchTimer); newSearchTimer window.setTimeout(startSearch, searchDelay); } function startSearch() { const term $searchInput.val(); if (term keyword && leasePropertySearched leasePropertyState) { return; } leasePropertySearched leasePropertyState; keyword term; if (term) { doSearch(term, leasePropertySearched); } else { setResults(null); } } function mlsSearch(term, leaseProperty) { if (!leaseFilter) { if (showOnlyActive) { const filters { status: ACTIVE }; return window.luxuryPresence.getMLSAutocompleteWithFilters(term, filters); } return window.luxuryPresence.getMLSAutocomplete(term); } var query { omnibox: term, limit: maxMls }; if (showOnlyActive) querystatus ACTIVE; if (leaseFilter && leaseProperty) { query.lease_property true; } return superagent.get(window.location.protocol + // + window.location.host + /home-search/listings.json).query(query).then(function (res) { if (!Array.isArray(res.body)) { return ; } return res.body; }, function (e) { console.log(e); return ; }); } function resolveGeoBounds(placeId, description) { return new Promise(function (resolve, reject) { geocoder.geocode({ placeId: placeId }, function (results, status) { if (status ! OK) { return resolve(null); } var result results0; var bounds new google.maps.LatLngBounds(); bounds.extend(result.geometry.viewport.getSouthWest()); bounds.extend(result.geometry.viewport.getNorthEast()); result.geometry.bounds bounds.toJSON(); var placeUrl window.luxuryPresence.makeMlsLink(result); return resolve({ placeUrl: placeUrl, description: description }); }); }); } function addRestrictions(request) { if (selectedCountries Worldwide) { return request; } if (selectedCountries US & Canada) { request.componentRestrictions { country: us, ca }; return request; } request.componentRestrictions { country: us }; return request; } function resolveAutocomplete(term, deeper) { var request addRestrictions({ input: term, types: deeper ? geocode : (regions), limit: 1 }); return new Promise(function (resolve, reject) { service.getPlacePredictions(request, function (results, status) { if (status ! google.maps.places.PlacesServiceStatus.OK) { resolve(null); return; } if (!Array.isArray(results)) { resolve(null); return; } if (deeper) { var allowedTypes { route: true, neighborhood: true, administrative_area_level_3: true, administrative_area_level_4: true, administrative_area_level_5: true, sublocality_level_1: true, sublocality_level_2: true, sublocality_level_3: true, colloquial_area: true }; results results.filter(function (res) { return res.types.find(t > allowedTypest); }); } if (!results.length) { resolve(null); return; } resolve(results); }); }); } var placesResult {}; function placesSearch(term, ignoreInput) { if (placesResult.term ! term) { placesResult { term: term, result: Promise.all(resolveAutocomplete(term), resolveAutocomplete(term, true)).then(function (res) { let results ; if (res0) results.push(...res0); if (res1) results.push(...res1); if (!results) { return ; } const uniqueResults ; const placeIds new Set(); results.forEach(place > { if (!placeIds.has(place.place_id)) { placeIds.add(place.place_id); uniqueResults.push(place); } }); return uniqueResults; }).then(function (results) { if (!ignoreInput && term ! keyword) { return ; } if (!results) { return ; } var geoResultPromises results.map(function (result) { return resolveGeoBounds(result.place_id, result.description); }); return Promise.all(geoResultPromises).then(function (geoLinks) { return geoLinks.filter(function (i) { return i; }).slice(0, maxPlaces); }); }) }; } return placesResult.result; } function propertiesSearch(term, leaseProperty) { var payload { companyId: window.luxuryPresence.defaults.companyId, search: term, offset: 0, limit: 6, statusIds: 5f528253-abb7-484e-95c3-330269ac1105, 959c11cf-8655-4f91-874c-292b0ab7ea6b, a0012964-4f51-4430-abf8-6547c5ab6441, df04ccbe-4621-4140-a504-ee1a17430bb7, 88b4ace6-f39b-4b25-a051-8f6dba976833, 96031d77-bbe5-4de3-90d8-1e4e70de8ca8 }; if (leaseFilter) { payload.leaseProperty !!leaseProperty; } return superagent.post(window.luxuryPresence.defaults.apiGatewayUrl + /graphql).send({ query: window.luxuryPresence.defaults.gql.properties, variables: payload }).then(function (res) { return (res.body.data || {}).properties || ; }, function (err) { return ; }); } function doSearch(term, leaseProperty) { showLoading(); Promise.all(searchMls ? mlsSearch(term, leaseProperty) : , searchPlaces ? placesSearch(term) : , searchProperties ? propertiesSearch(term, leaseProperty) : ).then(function (res) { if (term ! keyword) { return; } if (res0.length > 0) { res0 res0.map(function (item) { return { id: item.id, display_address: item.address_1, item.city, item.state, item.postal_code.filter(function (i) { return i; }).join( ).filter(function (i) { return i; }).join(, ) }; }); } setResults(res0, res1, res2, leaseProperty); }); } function makeResultsBlockHtml(title, links) { if (!links || !links.length) { return ; } var html div classresults-block>; html + div classresults-block-title>; if (searchNearEnabled) { html + div classsearch-near-container>a classsearch-near lp-link lp-link--light>Search Near Me/a>/div>; } html + div classresults-title-label> + title + /div>/div>; html + links.join() + /div>; return html; } function setResults(mlsResults, placesResults, propertiesResults, leaseProperty) { clearSelection(); hideLoading(); if (!mlsResults) { $resultsContainer.html(); updateSearchDisplay(); return; } if (!mlsResults.length && !placesResults.length && !propertiesResults.length) { $resultsContainer.html(div classnothing-found>No results found/div>); updateSearchDisplay(); return; } var propertiesHtml makeResultsBlockHtml(Featured Properties, propertiesResults.map(function (result) { return `a href/properties/${result.slug} classresults-link>${result.privateAddress ? result.name : result.fullAddress}/a>`; })); var placesHtml makeResultsBlockHtml(Locations, placesResults.map(function (result) { return `a classresults-link href${result.placeUrl}${leaseProperty ? &lease_propertytrue : }>${result.description}/a>`; })); var mlsHtml makeResultsBlockHtml(Address, mlsResults.map(function (result) { return `a href/home-search/listings/${result.id} classresults-link>${result.display_address}/a>`; })); $resultsContainer.html(propertiesHtml + placesHtml + mlsHtml); updateSearchDisplay(); } function searchBtnClicked() { var resultsBlockHref $(# + sectionDomId + .results-container .results-block .results-link).attr(href); const term $searchInput.val(); if (!term) { return; } if (searchMls) { if (resultsBlockHref ! undefined) window.location.href resultsBlockHref; return; } if (searchProperties) { window.location.href /properties/sale; } } var neighborhoods null; function fetchNeighborhoods() { var url window.luxuryPresence.defaults.apiGatewayUrl; var gqlQuery query ($companyId: String, $offset: Int, $limit: Int) { + neighborhoods (companyId: $companyId, offset: $offset, limit: $limit) {id, name, mlsLink, googlePlaceData}}; var payload {}; payload.offset 0; payload.limit 100; payload.companyId window.luxuryPresence.defaults.companyId; return superagent.post(url + /graphql).withCredentials().send({ query: gqlQuery, variables: payload }).then(function (res) { neighborhoods res.body.data && res.body.data.neighborhoods; if (neighborhoods && !neighborhoods.length) { neighborhoods null; } }); } function setPredefinedNeighborhoods() { return fetchNeighborhoods().then(function () { if (!neighborhoods) { return; } var leaseProperty leaseFilter && leasePropertyState; var placesHtml makeResultsBlockHtml(Locations, neighborhoods.map(function (item) { return `a classresults-link href${item.mlsLink}${leaseProperty ? `${item.mlsLink.includes(?) ? &lease_propertytrue : ?lease_propertytrue}` : }>${showNeighborhoodNames ? item.name : item.googlePlaceData && item.googlePlaceData.formatted_address || item.name}/a>`; })); $predefined.html(placesHtml); updateSearchDisplay(); }); } if (showNeighborhoods) { setPredefinedNeighborhoods(); } $searchInput.on(focus, showSearchResults); $searchInput.on(keyup focus, inputChanged); $searchResults.on(mouseenter, .results-link, function (ev) { clearSelection(); }); $searchBtn.on(click, searchBtnClicked); $leaseFalseButton.on(click, function () { if (leasePropertyState) { leasePropertyState false; if (showNeighborhoods) { setPredefinedNeighborhoods(); } updateSearchDisplay(); setResults(null); startSearch(); } }); $leaseTrueButton.on(click, function () { if (!leasePropertyState) { leasePropertyState true; if (showNeighborhoods) { setPredefinedNeighborhoods(); } updateSearchDisplay(); setResults(null); startSearch(); } }); function createPolygonUrl(center, radius, n) { var step Math.PI * 2 / n; var angle 0 - step / 2; var points ; var kx 1.0 / Math.cos(center1 * Math.PI / 180); for (var i 0; i n; i++) { points.push( + (center0 + radius * Math.sin(angle) * kx).toFixed(5) + , + (center1 - radius * Math.cos(angle)).toFixed(5) + ); angle + step; } points.push(points0); var str + points.join(,) + ; return &polygon + encodeURIComponent(str); } function makeNearMeUrl(center, leaseProperty) { var url /home-search/listings?search_typeenvelope; if (leaseProperty) { url + &lease_propertytrue; } var distance 0.11; var lat center1; var lng center0; url + &south + (lat - distance); url + &north + (lat + distance); url + &west + (lng - distance); url + &east + (lng + distance); url + createPolygonUrl(center, distance, 54); return url; } var $locMsg null; $section.on(click, .search-near, function () { showLoading(); navigator.geolocation.getCurrentPosition(function (position) { hideLoading(); hideSearchResults(); if (!position || !position.coords || !position.coords.latitude || !position.coords.longitude) { showLocationMessage(Unknown Location, p>Getting position of your device failed./p>p>You can type your address manually in the search field/p>); return; } var url makeNearMeUrl(position.coords.longitude, position.coords.latitude, leaseFilter && leasePropertyState); var link document.createElement(a); link.href url; link.class lp-visually-hidden; $section0.appendChild(link); link.click(); setTimeout(function () { $section0.removeChild(link); }, 100); }, function (geoError) { hideLoading(); hideSearchResults(); var title Unknown Location; var msg; if (geoError.code 1) { msg p>To be able to search near you we need to know your current location./p>p>If you don\t want to give access to your device\s location, you can type your address in the search field/p>; } else { msg p>Getting position of your device failed./p>p>You can type your address manually in the search field/p>; } showLocationMessage(title, msg); }); }); var locHideTimer null; function showLocationMessage(title, message) { clearTimeout(locHideTimer); if (!$locMsg) { var html `div classloc-msg-backdrop> div classloc-msg-wrap> div classloc-msg-modal> div classloc-msg-close>/div> h4 classloc-msg-title lp-h4>/h4> div classloc-msg-container>/div> /div> /div> /div> `; $locMsg $(html); $locMsg.on(click, hideLocationMessage); $section.append($locMsg); } $locMsg.find(.loc-msg-container).html(message); $locMsg.find(.loc-msg-title).html(title); setTimeout(function () { if ($locMsg) { $section.addClass(visible-loc-msg); } }); } function hideLocationMessage() { $section.removeClass(visible-loc-msg); locHideTimer setTimeout(function () { $locMsg.remove(); $locMsg null; }, 400); } function outsideClickHandler(e) { if ($searchWrapper.find($(e.target)).length > 0) { return; } hideSearchResults(); } $(document).on(click, outsideClickHandler); if (geolocation in navigator) { $searchWrapper.removeClass(search-near-hidden); } updateSearchDisplay(); });})(section-e01092d0-b322-43e1-a7f1-760b2ef5131e, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const section document.getElementById(sectionDomId); const collapsibleTexts section.querySelectorAll(.collapsible-text); const createCollapsibleText node > { let minCharacters node.dataset.minCharacters; let maxCharacters node.dataset.maxCharacters; let linkStyle node.dataset.linkStyle; node.classList.add(visible); const getParagraph (paragraph, currentLength) > { let newParagraph document.createTextNode(); const paragraphText paragraph.textContent; const start minCharacters - currentLength; const end paragraphText.substring(start).search(/.!?/); newParagraph.textContent paragraphText.substring(0, start + end + 1); return newParagraph; }; const getCollapsedNode (node, currentLength) > { let text node.innerText; let newNode; if (currentLength + text.length maxCharacters) { newNode node.cloneNode(true); currentLength + text.length; } else { newNode node.cloneNode(false); let i 0; while (currentLength minCharacters && i node.childNodes.length) { let childNode node.childNodesi; if (childNode.nodeType ! Node.TEXT_NODE) { let newChild getCollapsedNode(childNode, currentLength); if (currentLength + newChild.innerText.length maxCharacters) { newNode.appendChild(newChild); currentLength + newChild.innerText.length; } else { let newCollapsedChild getCollapsedNode(newChild, currentLength); newNode.appendChild(newCollapsedChild); currentLength + newCollapsedChild.innerText.length; } } else { if (currentLength + childNode.textContent.length > minCharacters) { let newText; if (currentLength + childNode.textContent.length maxCharacters) { newText childNode.cloneNode(); } else { newText getParagraph(childNode, currentLength); } newNode.appendChild(newText); currentLength + newText.length; } else { let str childNode.textContent; if (str.replace(/\s/g, ).length) { newNode.appendChild(childNode.cloneNode()); currentLength + childNode.length; } } } i++; } } return newNode; }; const createButton (node, linkStyle) > { const expandBtn document.createElement(a); expandBtn.classList.add(lp-link); expandBtn.classList.add(read-more); expandBtn.classList.add(linkStyle); expandBtn.innerHTML span classread-more__more>Read More/span>span classread-more__less>Read Less/span>; expandBtn.addEventListener(click, () > { node.classList.toggle(collapsed); }); return expandBtn; }; if (node.innerText.length > maxCharacters) { const collapsedNode getCollapsedNode(node, 0); const fullText document.createElement(div); fullText.innerHTML node.innerHTML; const shortText document.createElement(div); shortText.innerHTML collapsedNode.innerHTML; node.innerHTML ; const textWrap document.createElement(div); textWrap.classList.add(text-wrap); textWrap.append(fullText); textWrap.append(shortText); node.append(textWrap); node.style.setProperty(--fullHeight, fullText.offsetHeight + px); node.style.setProperty(--shortHeight, shortText.offsetHeight + px); fullText.classList.add(full); shortText.classList.add(short); node.append(createButton(node, linkStyle)); node.classList.add(collapsible); node.classList.add(collapsed); } }; .forEach.call(collapsibleTexts, createCollapsibleText);})(section-3cea3d6b-545c-4609-8163-315aa5a23b97, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { window.luxuryPresence.mapApiLoader.load().then(() > { var section $(`#${sectionDomId}`); var btnContinue $(`#modal-btn-continue`); var form section.find(form); var submitBtn form.find(buttontypesubmit); var originalBtnText submitBtn.length ? submitBtn.text() : ; var addressSearchInput $(`#modal-address`); var addressInput section.find(inputnamemessage); var addressInputVal; var select section.find(selectnametime); var submitBtn section.find(.js-submit-btn); var defaultMapCenter { lat: 34.030909, lng: -118.463927 }; var mapSelector $(`#modal-home-valuation-map`); var typingTimer; var doneTypingInterval 500; var geocoder new google.maps.Geocoder(); var map new google.maps.Map(document.getElementById(`modal-home-valuation-map`), { center: defaultMapCenter, zoom: 14 }); var marker new google.maps.Marker({ position: defaultMapCenter, map: map }); var address ; var addressValidated false; var errorMessage $(div classaddress-error-message>Please enter a valid home address/div>); addressSearchInput.closest(.input-container).after(errorMessage); addressSearchInput.on(keyup, function () { clearTimeout(typingTimer); typingTimer setTimeout(doneTyping, doneTypingInterval); }); select.on(change, function () { addressInput.val(address + , call time frame: + $(this).val()); }); addressSearchInput.on(keydown, function () { clearTimeout(typingTimer); }); addressSearchInput.on(input, function () { addressValidated false; btnContinue.attr(disabled, true); if ($(this).val() ) { errorMessage.hide(); } }); function doneTyping() { addressInputVal addressSearchInput.val(); geocoder.geocode({ address: addressSearchInput.val() }, function (results, status) { if (status google.maps.GeocoderStatus.OK) { var addressComponents results0.address_components || ; var hasStreetNumber addressComponents.some(function (comp) { return comp.types && comp.types.includes(street_number); }); if (!hasStreetNumber) { addressValidated false; btnContinue.attr(disabled, true); errorMessage.show(); mapSelector.hide(); return; } errorMessage.hide(); addressValidated true; updateMarker(marker, results0.geometry.location); address results0.formatted_address; addressInput.val(address); mapSelector.show(); btnContinue.attr(disabled, false); } else { addressValidated false; mapSelector.hide(); btnContinue.attr(disabled, true); console.log(Geocode was not successful for the following reason: + status); } }); } function updateMarker(marker, position) { var url https://www.google.com/maps/search/?api1&query + position.lat() + , + position.lng(); map.setCenter(position); marker.setPosition(position); google.maps.event.clearListeners(marker, click); marker.addListener(click, function () { window.open(url, _blank); }); } section.find(.steps-nav .first-step).on(click, function () { showStep(1); }); function showStep(nextStep) { section.find(.steps-nav li).removeClass(active).eq(nextStep - 1).addClass(active); section.find(.home-valuation__step).removeClass(active); section.find(.home-valuation__step.home-valuation__step-- + nextStep).addClass(active); } btnContinue.on(click, function (e) { if (!addressValidated) { e.preventDefault(); errorMessage.show(); return; } section.find(.address_field).text(address); showStep(2); }); form.on(submit, function () { if (submitBtn.length) { submitBtn.prop(disabled, true); submitBtn.text(Loading...); } }); form0.addEventListener(formsubmitted, function () { if (submitBtn.length) { submitBtn.prop(disabled, false); submitBtn.text(originalBtnText); } showStep(3); section.find(.image).addClass(image--hide); }); form0.addEventListener(formsubmiterror, function () { if (submitBtn.length) { submitBtn.prop(disabled, false); submitBtn.text(originalBtnText); } }); function convertSelectToDropdown(selectItem) { let customDropdown ` div classcustom-select rolepresentation> button classcustom-select-toggle typebutton aria-haspopuptrue aria-expandedfalse>/button> div classcustom-select-menu> 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); $dropdownToggle.attr(data-name, $(selectItem).attr(name)); $dropdownMenu.attr(aria-labelledby, $dropdownToggle.attr(id)); appendOptionButtons(selectItem, $dropdownContent); $(selectItem).addClass(sr-only); $(selectItem).on(focus, function () { showSelectMenu($dropdownMenu0); $dropdownToggle.focus(); }); var toggleText $(selectItem).find(:selected).first().text() || $(selectItem).children().first().text(); $dropdownToggle.addClass(is-placeholder).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.removeClass(is-placeholder).html($(this).html()); closeSelectMenu($(this).closest(.custom-select-menu)); } }); 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(form).length 1 && $(.custom-select).hasClass(open)) { $(.custom-select.open).each(function () { var selectMenu $(this).find(.custom-select-menu)0; closeSelectMenu(selectMenu); }); } }); } $(# + sectionDomId + .dropdown-select).each(function () { convertSelectToDropdown(this); }); function setHttp(link) { if (link.search(/^https?\:\/\/|\//) -1) { link http:// + link; } return link; } form.on(reset, function () { addressValidated false; errorMessage.hide(); addressInput.val(); form.find(.custom-select-toggle).addClass(is-placeholder).text(form.find(select)0.children0.innerText); form.find(.custom-select-item).removeClass(is-selected); section.find(.image).removeClass(.image--hide); mapSelector.hide(); btnContinue.attr(disabled, true); const redirectLink $(# + sectionDomId + .redirect-link); if (redirectLink.length) { const rawHref redirectLink.attr(href); redirectLink.attr(href, setHttp(rawHref)); redirectLink0.click(); } }); });})(section-addd50b0-3755-4265-936d-832481b96b40, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $slider $(# + sectionDomId + .js-collection); const arrows $slider.data(arrows-style) || ; const disableInfiniteAndAutoScrollOnMobile !$slider.data(disable-infinite); $slider.slick({ slidesToShow: $slider.hasClass(js-collection--3) ? 3 : 2, prevArrow: `button classlp-arrow lp-arrow--prev lp-arrow--dark ${arrows}>prev/button>`, nextArrow: `button classlp-arrow lp-arrow--next lp-arrow--dark ${arrows}>next/button>`, appendArrows: $(# + sectionDomId + .js-arrows), infinite: true, autoplay: true, autoplaySpeed: 4000, responsive: { breakpoint: 1024, settings: { slidesToShow: 2, slidesToScroll: 2 } }, { breakpoint: 769, settings: { slidesToShow: 1, slidesToScroll: 1, infinite: disableInfiniteAndAutoScrollOnMobile, autoplay: disableInfiniteAndAutoScrollOnMobile } } });})(section-bf3e2a7e-b1ef-4ba0-bd3f-0992856a94ca, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $section $(# + sectionDomId); const slider $(# + sectionDomId + .js-list-slider); const avatarSlider $(# + sectionDomId + .js-avatar-slider); const autoplay !$section.find(.testimonials-section).hasClass(js-stop-autoplay); let $cellNumbers $(# + sectionDomId + .js-list-cell); let cellNumbersLength $cellNumbers.length > 10 ? $cellNumbers.length : 0 + $cellNumbers.length; let paused false; var sectionBackground $section.css(background-image); if ($section.find(.testimonials-section.parallax).length) { $section.addClass(parallax-enabled); $section.css({ --sectionBackground: sectionBackground, background-image: none }); } function throttle(cb, delay) { let wait false; return function () { if (wait) { return; } cb(...arguments); wait true; setTimeout(() > { wait false; }, delay); }; } function pauseSlider() { const section document.querySelector(`#${sectionDomId}`); const rect section.getBoundingClientRect(); if (paused && rect.bottom -30) { return; } if (!paused && rect.bottom > 0) { return; } if (rect.bottom -30 && !paused) { paused true; slider.slick(slickPause); return; } paused false; slider.slick(slickPlay); } if (autoplay) { $(window).on(scroll.lpui-auto-clean, throttle(pauseSlider, 400)); } if (cellNumbersLength > 1) $(# + sectionDomId + .js-num-pages).html(01 / span num-pages--total> + cellNumbersLength + /span>); if (slider.length > 0) { const arrows slider.data(arrows-style) || ; slider.slick({ dots: false, arrows: true, prevArrow: `button classlp-arrow lp-arrow--prev lp-arrow--dark ${arrows}>prev/button>`, nextArrow: `button classlp-arrow lp-arrow--next lp-arrow--dark ${arrows}>next/button>`, appendArrows: $section.find(.arrows-container), infinite: true, slidesToShow: 1, slidesToScroll: 1, autoplay, autoplaySpeed: 4000, rows: 0, adaptiveHeight: true, asNavFor: avatarSlider }); avatarSlider.slick({ dots: false, arrows: false, infinite: true, slidesToShow: 1, slidesToScroll: 1, rows: 0, asNavFor: slider, draggable: false, speed: 500, fade: true, cssEase: linear }); slider.on(afterChange, function (event, slick, currentSlide, nextSlide) { let currentPageNumber currentSlide + 1; if (currentPageNumber 10) currentPageNumber 0 + currentPageNumber; $(# + sectionDomId + .js-num-pages).html(currentPageNumber + / span num-pages--total> + cellNumbersLength + /span>); }); } function setAnimations() { const $target $section.find(.js-animation-target); let x 0, y 0; let tx 0, ty 0; let overchk false; let animationRun false; let animationRequest; document.addEventListener(mousemove, function (e) { x e.pageX; y e.pageY; }); $target.each(function () { $(this).css(will-change, transform); $(this).wrap(div classjs-target-wrap>/div>); $(this).closest(.js-target-wrap).append(div classjs-target>/div>).css({ position: relative, width: auto }); $(this).next(.js-target).css({ position: absolute, left: 0, top: 0, width: 100%, height: 100% }); $(this).next(.js-target).on(click, function () { if ($section.find(buttondata-typeVIDEO).length) { $section.find(buttondata-typeVIDEO).trigger(click); } }); }); function loop(el) { let targetWidth $(el).outerWidth(); let targetHeight $(el).outerHeight(); if (overchk) { tx + (x - $(el).closest(.js-target-wrap).offset().left - targetWidth / 2 - tx) * 0.04; ty + (y - $(el).closest(.js-target-wrap).offset().top - targetHeight / 2 - ty) * 0.04; el.style.transform translate( + tx + px, + ty + px); } else { tx - tx * 0.3; ty - ty * 0.3; el.style.transform translate( + tx + px, + ty + px); } animationRequest requestAnimationFrame(function () { loop(el); }); } function runAnimation(el) { if (!animationRun) { animationRun true; loop(el); overchk true; } } function stopAnmation() { if (animationRun) { setTimeout(function () { window.cancelAnimationFrame(animationRequest); animationRun false; tx 0, ty 0; }, 100); overchk false; } } $section.find(.js-target).on(mouseenter, function (e) { x e.pageX; y e.pageY; if (autoplay) slider.slick(slickPause); runAnimation($(this).closest(.js-target-wrap).find(.js-animation-target)0); }); $section.find(.js-target).on(wheel, function () { if (autoplay) slider.slick(slickPlay); stopAnmation(); }); $section.find(.js-target).on(mouseleave, function () { if (autoplay) slider.slick(slickPlay); stopAnmation(); }); } if (window.matchMedia((hover: hover) and (pointer: fine)).matches) { setTimeout(setAnimations); }})(section-16c12846-efff-420e-a030-4b69874942de, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $slider $(# + sectionDomId + .js-collection); const arrows $slider.data(arrows-style) || ; const disableInfiniteAndAutoScrollOnMobile !$slider.data(disable-infinite); $slider.slick({ slidesToShow: $slider.hasClass(js-collection--3) ? 3 : 2, prevArrow: `button classlp-arrow lp-arrow--prev lp-arrow--dark ${arrows}>prev/button>`, nextArrow: `button classlp-arrow lp-arrow--next lp-arrow--dark ${arrows}>next/button>`, appendArrows: $(# + sectionDomId + .js-arrows), infinite: true, autoplay: true, autoplaySpeed: 4000, responsive: { breakpoint: 1024, settings: { slidesToShow: 2, slidesToScroll: 2 } }, { breakpoint: 769, settings: { slidesToShow: 1, slidesToScroll: 1, infinite: disableInfiniteAndAutoScrollOnMobile, autoplay: disableInfiniteAndAutoScrollOnMobile } } });})(section-27aae6b2-be4b-48ff-afc6-404eb5cfa669, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) {})(section-b438a141-565f-4f3b-88b7-1cce0065a521, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var section $(# + sectionDomId); section.find(.popup-modal).on(click, function (e) { e.stopPropagation(); return; }); section.on(click, function () { window.lpUI.hideModal(sectionDomId); }); $(# + sectionDomId).on(lpui-show, function () { window.lpUI.requestScrollLock(sectionDomId); }); 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-ee739d89-9b9c-4840-8596-adb081ffb235, 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-df3a1fa4-f2ec-4125-9759-3612741f0c2b, 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-e1f8a2fc-e4da-4def-a12f-8c336be637ed, JSON.parse({\companyId\:\c578c666-d6e5-4847-b247-2985c963ae92\,\sectionIndex\:10}));} catch(e) {console.log(e);} try {(function init(sectionDomId) { $(# + sectionDomId).on(ig-data, function () { let title $(# + sectionDomId + .js-slider-holder).data(title); if (title) { $(# + sectionDomId + .js-h3).text(title); } if (window.matchMedia((max-width: 768px)).matches) { $(# + sectionDomId + .js-slider-holder).before($(# + sectionDomId + .js-title-group).clone()); } $(# + sectionDomId + .js-collection .js-title-group).remove(); function buildSlick() { $(# + sectionDomId + .js-collection).slick({ autoplay: true, arrows: false, speed: 0, autoplaySpeed: 6000, dots: false, infinite: true, slidesToShow: 4, slidesToScroll: 4, cssEase: linear, variableWidth: true, centerMode: false, swipe: false, responsive: { breakpoint: 1024, settings: { slidesToShow: 2, slidesToScroll: 2 } }, { breakpoint: 768, settings: { slidesToShow: 4, slidesToScroll: 4 } } }); } if ($(# + sectionDomId + .js-collection).length) { if ($(# + sectionDomId + .js-collection).hasClass(slick-initialized)) { $(# + sectionDomId + .js-collection).slick(unslick); buildSlick(); } else { buildSlick(); } } });})(section-e1f8a2fc-e4da-4def-a12f-8c336be637ed, 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:9cc3be8cdd9c302c,t:MTc3MDgxMTgzOS4wMDAwMDA};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>
Subdomains
Date
Domain
IP
leonandmike.lakere.com
2026-02-08
104.18.120.91
chrisrandall.lakere.com
2026-02-11
104.18.119.91
kay.lakere.com
2026-01-31
104.18.119.91
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
]