1<!DOCTYPE html> 2<html class="no-js" lang=en> 3<head> 4 <meta charset="utf-8"> 5 <meta http-equiv="x-ua-compatible" content="ie=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta name="twitter:card" content="summary_large_image"> 8 <meta property="og:type" content="website"> 9 <title>North Carolina Real Estate Blog | Corcoran DeRonja Real Estate</title> 10 <meta property="og:title" content="North Carolina Real Estate Blog | Corcoran DeRonja Real Estate"> 11 <meta name="twitter:title" content="North Carolina Real Estate Blog | Corcoran DeRonja Real Estate"> 12 <meta name="description" content="Seeking expert insights on NCÂ real estate? Check out Corcoran DeRonja Real Estate's blog for essential tips, trends, and insights from local experts."> 13 <meta property="og:description" content="Seeking expert insights on NCÂ real estate? Check out Corcoran DeRonja Real Estate's blog for essential tips, trends, and insights from local experts."> 14 <meta name="twitter:description" content="Seeking expert insights on NCÂ real estate? Check out Corcoran DeRonja Real Estate's blog for essential tips, trends, and insights from local experts."> 15 <meta property="og:image" content="https://media-production.lp-cdn.com/media/34d0a319-f3e4-4733-be68-4a3074aa3ea2"> 16 <meta name="twitter:image" content="https://media-production.lp-cdn.com/media/34d0a319-f3e4-4733-be68-4a3074aa3ea2"> 17 <meta property="og:url" content="https://drefirm.com/blogs"> 18 <link rel="canonical" href="https://drefirm.com/blogs"> 19
19<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>
19 20 <link rel="preconnect" href="https://fonts.googleapis.com"> 21 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 22 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Playfair%20Display:400,500,600,700,800,900,400i,500i,600i,700i,800i,900i"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Libre%20Franklin:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i"> 23 <link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 24 <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css"></noscript> 25 <link rel="icon" type="image/x-icon" href="/favicon.ico"> 26 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 27 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 28 <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png"> 29 <style id="global-css">:root{--global-primary-font-family:'Playfair Display',serif;--global-primary-font-family-short:Playfair Display;--global-secondary-font-family:'Libre Franklin',sans-serif;--global-secondary-font-family-short:Libre Franklin;--global-body-padding:25px;--global-background-color:#fff;--global-body-font-size:15px;--global-h1-font-size:62px;--global-h2-font-size:36px;--global-h3-font-size:32px;--global-h4-font-size:28px;--global-h5-font-size:26px;--global-h6-font-size:26px;--global-section-padding:96px;}@media (max-width: 768px){:root{--global-section-padding:64px;}}body{padding:0px;background-color:#fff;font-family:'Libre Franklin',sans-serif;font-size:15px;}@media (min-width: 768px){body{padding:25px 25px 0px 25px;}}h1,h2,h3,h4,h5,h6,button{font-family:'Playfair Display',serif;}h1{font-size:62px;}h2{font-size:36px;}h3{font-size:32px;}h4{font-size:28px;}h5{font-size:26px;}h6{font-size:26px;}</style> 30 <link rel="stylesheet" type="text/css" href="https://styles.luxurypresence.com/corcoran-agent-1/index.css" /> 31 <style id="website-css">.lp-h1,h1,h1 span{font-family:var(--global-primary-font-family)!important;}.lp-h1,h1,h1 span,.lp-h2,h2,.lp-h3,h3,.lp-h4,h4,.lp-h5{text-transform:initial;letter-spacing:3px;}@media only screen and (max-width: 768px){h2{font-size:28px!important;}}.lp-btn,.btn{letter-spacing:1px;font-weight:400;text-transform:uppercase;}div#global-mobile-contact .buttons-holder a{background:#231F20;border:1px solid #231F20;}div#global-mobile-contact .buttons-holder svg{fill:#fff;}div.lp-container{max-width:1400px;}@media(min-width:550px){div#global-sidemenu .sidemenu-container{width:550px;}}div#global-sidemenu .sidemenu-container .background-close-sidemenu{background-color:#231F20;}div#global-sidemenu .sidemenu-container .flex-sidemenu-container{background-color:#fff;}div#global-sidemenu .sidemenu-container .flex-sidemenu-container a{color:#231F20;}div#global-sidemenu .sidemenu-container .flex-sidemenu-container .sidemenu-link{text-transform:initial;letter-spacing:3px;}div#global-sidemenu .sidemenu-container .flex-sidemenu-container .sidemenu-link::after{width:0%;background-color:#231F20;height:1px;border:0;}div#global-sidemenu .sidemenu-container .flex-sidemenu-container .sidemenu-link:hover::after{width:100%;background-color:#231F20!important;}div#global-sidemenu .sidemenu-container .socialbar-label{display:none;}div#global-sidemenu .sidemenu-container .socialbar{margin-top:0;}div#global-sidemenu .sidemenu-container .lp-socials li{padding:0;margin-right:10px;}div#global-sidemenu .sidemenu-container .lp-socials li a{min-height:45px;min-width:45px;padding:0;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;}div#global-sidemenu .sidemenu-container .lp-socials li a:hover{color:#231F20;}nav#global-navbar .navbar .top-menu>ul>li button:hover{border:none;}nav#global-navbar .navbar .goog-te-gadget-simple{border:none;color:#231F20;}nav#global-navbar .top-menu a,nav#global-navbar .contact-button a{letter-spacing:2px;border-width:1px;}nav#global-navbar .top-menu .sub-nav-container .sub-nav li{border:0;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;}nav#global-navbar .top-menu .sub-nav-container .sub-nav li a{white-space:nowrap;}nav#global-navbar .hamburger-component{background-color:#231F20;}nav#global-navbar .hamburger-icon{height:1px;}nav#global-navbar .hamburger-icon::before,nav#global-navbar .hamburger-icon::after{height:1px;}nav div.contact-button ul{padding-right:18px;}#global-footer div.footer-container>div.footer-col2>h2{text-transform:uppercase;}footer#global-footer .footer-col1 img:not(#iivu-2){height:60px;}footer#global-footer .footer-col1 #idug{font-size:12px;}
31footer#global-footer .footer-col1 #idug #iivu-2{margin-top:10px;}footer#global-footer .footer-col1 .footer-col1-contact a{position:relative;}footer#global-footer .footer-col1 .footer-col1-contact a::after{content:"";display:block;position:absolute;width:0%;height:1px;left:0;bottom:0;background:currentColor;-webkit-transition:.2s all linear;-webkit-transition:.2s all linear;transition:.2s all linear;}footer#global-footer .footer-col1 .footer-col1-contact a:hover::after{width:100%;}footer#global-footer .footer-col1 .footer-col1-title{font-weight:normal;}footer#global-footer .footer-col2-title{letter-spacing:3px;font-size:26px;font-weight:300!important;}footer#global-footer .footer-socialbar-text{display:none;}footer#global-footer #ixzd p{font-size:12px;}footer#global-footer div.footer-container div.footer-col1>img:nth-child(5){height:auto!important;width:100px;}footer#global-footer .footer-socialbar-content{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;margin:0;}footer#global-footer .footer-socialbar-content .lp-socials li{margin:0;margin-left:10px;}footer#global-footer .footer-socialbar-content .lp-socials li a{min-height:0px;min-width:40px;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;}footer#global-footer .footer-socialbar-content .lp-socials li a:hover{color:#231F20;}footer#global-footer .footer-row .link{position:relative;}footer#global-footer .footer-row .link::after{content:"";display:block;position:absolute;width:0%;height:1px;left:0;bottom:0;background:currentColor;-webkit-transition:.2s all linear;-webkit-transition:.2s all linear;transition:.2s all linear;}footer#global-footer .footer-row .link:hover::after{width:100%;}footer#global-footer div.footer-menu a.footer-row-link{padding-right:0;margin-right:20px;}footer#global-footer .footer-col1-contact a,footer#global-footer .footer-row .link,footer#global-footer .lp-disclaimer a{position:relative!important;color:#231F20!important;-webkit-text-decoration:none!important;text-decoration:none!important;}footer#global-footer .footer-col1-contact a::before,footer#global-footer .footer-row .link::before,footer#global-footer .lp-disclaimer a::before{content:"";position:absolute;display:block;width:100%!important;height:.5px;-webkit-transition:0.3s linear;transition:0.3s linear;background:#999!important;bottom:0;left:0;}footer#global-footer .footer-col1-contact a::after,footer#global-footer .footer-row .link::after,footer#global-footer .lp-disclaimer a::after{content:"";position:absolute;display:block;width:0;height:.5px;-webkit-transition:0.3s linear;transition:0.3s linear;background:#231F20!important;bottom:0;left:0;}footer#global-footer .footer-col1-contact a:hover,footer#global-footer .footer-row .link:hover,footer#global-footer .lp-disclaimer a:hover{color:#231F20!important;}footer#global-footer .footer-col1-contact a:hover::after,footer#global-footer .footer-row .link:hover::after,footer#global-footer .lp-disclaimer a:hover::after{width:100%;}footer#global-footer .footer-row-link:hover{color:#231F20!important;}footer#global-footer div.footer-menu a.footer-row-link{-webkit-text-decoration:underline;text-decoration:underline;}@font-face{font-family:'Avenir LT Std 55 Roman';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-Roman.woff') format('woff');}@font-face{font-family:'Avenir LT Std 55 Oblique';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-Oblique.woff') format('woff');}@font-face{font-family:'Avenir LT Std 35 Light';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-Light.woff') format('woff');}@font-face{font-family:'Avenir LT Std 35 Light Oblique';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-LightOblique.woff') format('woff');}@font-face{font-family:'Avenir LT Std 45 Book';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-Book.woff') format('woff');}@font-face{font-family:'Avenir LT Std 45 Book Oblique';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-BookOblique.woff') format('woff');}@font-face{font-family:'Avenir LT Std 65 Medium';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-Medium.woff') format('woff');}@font-face{font-family:'Avenir LT Std 65 Medium Oblique';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-MediumOblique.woff') format('woff');}@font-face{font-family:'Avenir LT Std 85 Heavy';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-Heavy.woff') format('woff');}@font-face{font-family:'Avenir LT Std 85 Heavy Oblique';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-HeavyOblique.woff') format('woff');}@font-face{font-family:'Avenir LT Std 95 Black';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-Black.woff') format('woff');}@font-face{font-family:'Avenir LT Std 95 Black Oblique';font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/AvenirLTStd/AvenirLTStd-BlackOblique.woff') format('woff');}@font-face{font-family:ChronicleDisplay-Roman;font-style:normal;font-weight:normal;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/ChronicleDisplayRoman/ChronicleDisplayRoman.otf') format('opentype'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/ChronicleDisplayRoman/ChronicleDisplay-Roman.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/ChronicleDisplayRoman/ChronicleDisplay-Roman.woff') format('woff'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/ChronicleDisplayRoman/ChronicleDisplay-Roman.svg#ChronicleDisplay-Roman') format('svg');}@font-face{font-family:ChronicleDisplay-Roman;font-style:normal;font-weight:bold;src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/ChronicleDisplayRoman/ChronicleDisplay-Bold.otf') format('opentype'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/ChronicleDisplayRoman/ChronicleDisplay-Bold.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/ChronicleDisplayRoman/ChronicleDisplay-Bold.woff') format('woff'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/ChronicleDisplayRoman/ChronicleDisplay-Bold.svg#ChronicleDisplay-Bold') format('svg');}</style> 32 <style id="wow-hide-elements">.wow{visibility:hidden!important}</style> 33 <style id="page-css"> 34 #section-2f1a6577-1ccd-43a3-ad06-85544d73063d{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;
34--bgColor:#1a1a1a;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:10%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#1a1a1a;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.3));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/ahlwfutcgbkha6ahk36w');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}#section-2f1a6577-1ccd-43a3-ad06-85544d73063d .custom-opening{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;}#section-2f1a6577-1ccd-43a3-ad06-85544d73063d .custom-opening__content{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;text-align:center;}#section-2f1a6577-1ccd-43a3-ad06-85544d73063d .custom-opening__content__title{display:block;margin:0 8% 26px;font-family:var(--global-secondary-font-family);}@media (max-width: 576px){#section-2f1a6577-1ccd-43a3-ad06-85544d73063d .custom-opening__content__title{font-size:32px;}}#section-2f1a6577-1ccd-43a3-ad06-85544d73063d .custom-opening__content__description{max-width:420px;font-size:15px;line-height:1.6;}@media (max-width: 576px){#section-2f1a6577-1ccd-43a3-ad06-85544d73063d .custom-opening__content{font-size:14px;}}@media (min-width: 960px) and (orientation: landscape){#section-2f1a6577-1ccd-43a3-ad06-85544d73063d{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/ahlwfutcgbkha6ahk36w');}}@media (min-width: 1280px) and (orientation: landscape){#section-2f1a6577-1ccd-43a3-ad06-85544d73063d{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ahlwfutcgbkha6ahk36w');}}@media (min-width: 1920px) and (orientation: landscape){#section-2f1a6577-1ccd-43a3-ad06-85544d73063d{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ahlwfutcgbkha6ahk36w');}}@media (min-width: 2560px) and (orientation: landscape){#section-2f1a6577-1ccd-43a3-ad06-85544d73063d{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ahlwfutcgbkha6ahk36w');}}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b{color:#231F20;--fontColor:#231F20;--fontColor_H:345;--fontColor_S:6%;--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;--section-padding-bottom:calc(4 / 4 * var(--global-section-padding));background-color:#ffffff;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.active a{color:#fff!important;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li a:hover{color:#fff!important;background-color:#231F20!important;border-color:#231F20!important;-webkit-transition:0.1s;transition:0.1s;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-next a:hover:before{border-bottom:2px solid #fff!important;border-left:2px solid #fff!important;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-prev a:hover:before{border-bottom:2px solid #fff!important;border-left:2px solid #fff!important;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section{padding-top:65px;padding-bottom:35px;}@media (min-width: 960px){#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section{padding-top:76px;padding-bottom:50px;}}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-container{width:100%;padding-left:16px;padding-right:16px;margin-left:auto;margin-right:auto;}@media (min-width: 1200px){#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-container{max-width:1340px;padding-left:18px;padding-right:18px;}}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-row{margin-left:-6.5px;margin-right:-6.5px;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-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-col{width:100%;padding-left:6.5px;padding-right:6.5px;}@media (min-width: 640px){#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-col{max-width:50%;-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;}}@media (min-width: 960px){#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-col{max-width:33.333333%;-webkit-flex-basis:33.333333%;-ms-flex-preferred-size:33.333333%;flex-basis:33.333333%;}}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .item-card{height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container .paginationjs{box-sizing:border-box;font-family:inherit;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container ul{float:none;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;font-weight:600;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li{float:none!important;margin:0 7px;border:none!important;}@media (max-width: 575px){#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li{margin:0 4px;}}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li a{position:relative;display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;-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;min-width:44px!important;height:44px!important;border-radius:44px!important;color:#3f3f3e!important;font-size:15px!important;line-height:20px!important;font-weight:400!important;text-align:center;vertical-align:middle;padding:5px;border:solid 1px #1a1a19;cursor:pointer;-webkit-transition:all 0.3s;transition:all 0.3s;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li a:hover{background-color:#eaeaea;color:#000;}@media (max-width: 575px){#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li a{min-width:32px!important;height:32px!important;}}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li:first-of-type a,#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li:last-of-type a{display:block;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.active a{border-color:transparent;background:#eaeaea;color:#000;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-ellipsis a{border-color:transparent;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-prev a,#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-next a{border-color:transparent;font-size:0!important;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-prev a:before,#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-next a:before{content:"";position:absolute;left:50%;top:50%;display:block;width:17px;height:17px;border-bottom:2px solid #1a1a19;border-left:2px solid #1a1a19;}@media (max-width: 575px){#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-prev a:before,#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-next a:before{width:13px;height:13px;}}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-prev a:hover,#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-next a:hover{background-color:transparent;border-color:transparent;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-prev.disabled a,#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-next.disabled a{text-indent:-9999px;pointer-events:none;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-prev.disabled a:before,#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-next.disabled a:before{border-color:#afafaf;}@media (max-width: 767px){#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-prev.disabled a:after,#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-next.disabled a:after{background:#afafaf;}}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-prev a:before{-webkit-transform:translate(-20%, -50%) rotate(45deg);-moz-transform:translate(-20%, -50%) rotate(45deg);-ms-transform:translate(-20%, -50%) rotate(45deg);transform:translate(-20%, -50%) rotate(45deg);}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .pagination-container li.paginationjs-next a:before{-webkit-transform:translate(-70%, -50%) rotate(225deg);-moz-transform:translate(-70%, -50%) rotate(225deg);-ms-transform:translate(-70%, -50%) rotate(225deg);transform:translate(-70%, -50%) rotate(225deg);}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section .layout-col{margin-bottom:50px;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section .item-card .img{display:block;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:25px;margin-bottom:25px;width:100%;z-index:9;-webkit-background-size:cover;background-size:cover;background-repeat:no-repeat;-webkit-background-position:center center;background-position:center center;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section .item-card .img:after{content:"";display:block;padding-bottom:62.9108%;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section .item-card h4{margin:4px 0;padding:5px 0;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section .item-card .subt
34itle{margin:0;padding:5px 0;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section .item-card .description{padding-bottom:0;margin:0;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section .item-card .date{font-size:12px;margin-bottom:17px;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section .item-card .read-wrapper{padding:25px 0 0;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section .item-card .read-wrapper a{color:#989897;-webkit-text-decoration:none;text-decoration:none;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b .layout-section .item-card .read-wrapper a::after{content:"â";padding-left:10px;}#section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b>div:last-child{padding-bottom:calc(4 / 4 * var(--global-section-padding))!important;}#section-3527620a-4185-4671-963a-8f09a3e74222{color:#231F20;--fontColor:#231F20;--fontColor_H:345;--fontColor_S:6%;--fontColor_L:13%;--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.6));background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/txmcytkghgbumcm1gh9c');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}@media(min-width:769px){#section-3527620a-4185-4671-963a-8f09a3e74222{background-attachment:fixed;}}@media(min-width:769px){#section-3527620a-4185-4671-963a-8f09a3e74222{background-attachment:fixed;}}#section-3527620a-4185-4671-963a-8f09a3e74222 div.redesign.custom-content.lp-vertical-paddings{padding:0;}#section-3527620a-4185-4671-963a-8f09a3e74222 div.redesign.custom-content.lp-vertical-paddings .lp-container{max-width:unset;min-height:80vh;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;}#section-3527620a-4185-4671-963a-8f09a3e74222 div.redesign.custom-content.lp-vertical-paddings .lp-container .customWorkWithUs{background-color:rgba(255,255,255,.8);max-width:950px;padding:90px;text-align:center;position:relative;}@media(max-width:769px){#section-3527620a-4185-4671-963a-8f09a3e74222 div.redesign.custom-content.lp-vertical-paddings .lp-container .customWorkWithUs{padding:30px;}}#section-3527620a-4185-4671-963a-8f09a3e74222 div.redesign.custom-content.lp-vertical-paddings .lp-container .customWorkWithUs::after{content:'';display:block;width:100%;height:140px;position:absolute;bottom:0;left:0;-webkit-filter:invert(1);filter:invert(1);-webkit-background-size:contain;background-size:contain;background-repeat:no-repeat;}#section-3527620a-4185-4671-963a-8f09a3e74222 div.redesign.custom-content.lp-vertical-paddings .lp-container .customWorkWithUs .lp-btn{z-index:99;}#section-3527620a-4185-4671-963a-8f09a3e74222 div.redesign.custom-content.lp-vertical-paddings .lp-container .customWorkWithUs .customTitle .pretitle{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:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-3527620a-4185-4671-963a-8f09a3e74222 div.redesign.custom-content.lp-vertical-paddings .lp-container .customWorkWithUs .customTitle .pretitle p{text-transform:uppercase;font-weight:300;font-family:var(--global-primary-font-family);letter-spacing:3px;font-size:18px;margin-bottom:0;padding-left:20px;padding-right:20px;text-align:center;}#section-3527620a-4185-4671-963a-8f09a3e74222 div.redesign.custom-content.lp-vertical-paddings .lp-container .customWorkWithUs .customTitle h2{text-align:center;}#section-3527620a-4185-4671-963a-8f09a3e74222 h2:before{content:"⸻ Get in Touch ⸻";font-family:var(--global-secondary-font-family);
34display:block;font-size:14px;text-transform:uppercase;letter-spacing:6px;color:#231F20;margin-bottom:10px;font-weight:300;}#section-3527620a-4185-4671-963a-8f09a3e74222 .video-wrapper{z-index:1;}#section-3527620a-4185-4671-963a-8f09a3e74222 .overlay-component{z-index:2;}#section-3527620a-4185-4671-963a-8f09a3e74222 .custom-content{z-index:3;position:relative;}#section-3527620a-4185-4671-963a-8f09a3e74222 h1,#section-3527620a-4185-4671-963a-8f09a3e74222 h2,#section-3527620a-4185-4671-963a-8f09a3e74222 h3,#section-3527620a-4185-4671-963a-8f09a3e74222 h4,#section-3527620a-4185-4671-963a-8f09a3e74222 h5,#section-3527620a-4185-4671-963a-8f09a3e74222 h6,#section-3527620a-4185-4671-963a-8f09a3e74222 p{margin-bottom:1.6666rem;}#section-3527620a-4185-4671-963a-8f09a3e74222 .lp-container *:last-child{margin-bottom:0;}@media (min-width: 960px) and (orientation: landscape){#section-3527620a-4185-4671-963a-8f09a3e74222{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/txmcytkghgbumcm1gh9c');}}@media (min-width: 1280px) and (orientation: landscape){#section-3527620a-4185-4671-963a-8f09a3e74222{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/txmcytkghgbumcm1gh9c');}}@media (min-width: 1920px) and (orientation: landscape){#section-3527620a-4185-4671-963a-8f09a3e74222{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/txmcytkghgbumcm1gh9c');}}@media (min-width: 2560px) and (orientation: landscape){#section-3527620a-4185-4671-963a-8f09a3e74222{background-image:linear-gradient(var(--gradient-color), var(--gradient-color)),url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/txmcytkghgbumcm1gh9c');}}nav{height:0;}nav .navbar{-webkit-transition:all 0.5s cubic-bezier(0.23, 1, 0.32, 1);transition:all 0.5s cubic-bezier(0.23, 1, 0.32, 1);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;width:100%;background-color:white;position:relative;z-index:101;max-width:1920px;margin:0 auto;}nav .navbar.transparent:not(.scroll){background-color:transparent;box-shadow:none;}nav .navbar.transparent:not(.scroll) .top-menu>ul>li>a,nav .navbar.transparent:not(.scroll) .top-menu>ul>li>button{color:white;}nav .navbar.transparent:not(.scroll) .logo .logo-light{display:block;}nav .navbar.transparent:not(.scroll) .logo .logo-dark{display:none;}@media only screen and (min-width: 990px){nav .navbar{height:90px;}}@media only screen and (max-width: 990px){nav .navbar{height:70px;}}nav .navbar .logo{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-self:center;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;padding-left:16px;line-height:0;width:210px;height:52px;}@media only screen and (min-width: 1025px){nav .navbar .logo{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;padding-left:30px;}}nav .navbar .logo img{height:100%;width:100%;object-fit:contain;margin-bottom:0;}nav .navbar .logo .logo-light{display:none;}nav .navbar a{cursor:pointer;}nav .navbar .top-menu{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-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media only screen and (max-width: 1025px){nav .navbar .top-menu{padding-left:18px;}}@media only screen and (min-width: 990px){nav .navbar .top-menu>ul{list-style:none;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:start;-ms-flex-pack:start;
34-webkit-justify-content:flex-start;justify-content:flex-start;margin:0;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}@media only screen and (max-width: 1024px){nav .navbar .top-menu>ul{display:none;}}nav .navbar .top-menu>ul>li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0;padding:0 16px;}nav .navbar .top-menu>ul>li.sub-nav-container{position:relative;}nav .navbar .top-menu>ul>li>a,nav .navbar .top-menu>ul>li>button{position:relative;z-index:5;}nav .navbar .top-menu>ul>li a,nav .navbar .top-menu>ul>li button{cursor:pointer;font-family:var(--global-secondary-font-family);background:transparent;outline:none;border:none;padding:6px 0 1px 0;-webkit-text-decoration:none;text-decoration:none;font-size:14px;font-weight:normal;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:0.5px;text-align:left;color:#1a1a19;border-bottom:solid 2px transparent;-webkit-transition:all 0.2s;transition:all 0.2s;text-transform:uppercase;}@media (max-width: 1200px){nav .navbar .top-menu>ul>li a,nav .navbar .top-menu>ul>li button{font-size:13px;}}nav .navbar .top-menu>ul>li a:hover,nav .navbar .top-menu>ul>li button:hover{border-bottom:solid 2px #000000;}nav .navbar .top-menu>ul>li a.active,nav .navbar .top-menu>ul>li button.active{border-bottom:solid 2px #000000;}nav .contact-button{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:fixed;width:100%;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;z-index:-1;}nav .contact-button ul{margin:0 0 0 auto;box-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.2);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style:none;height:75px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:white;-webkit-backface-visibility:hidden;backface-visibility:hidden;}@media only screen and (min-width: 990px){nav .contact-button ul{-webkit-transform:translate(21.5px, 110px) rotate(270deg);-moz-transform:translate(21.5px, 110px) rotate(270deg);-ms-transform:translate(21.5px, 110px) rotate(270deg);transform:translate(21.5px, 110px) rotate(270deg);padding-right:18px;padding-left:18px;}}@media only screen and (max-width: 990px){nav .contact-button ul{-webkit-transform:translate(19px, 88px) rotate(270deg);-moz-transform:translate(19px, 88px) rotate(270deg);-ms-transform:translate(19px, 88px) rotate(270deg);transform:translate(19px, 88px) rotate(270deg);padding-right:16px;padding-left:16px;}}nav .contact-button ul li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0;margin-top:8px;}nav .contact-button ul li a,nav .contact-button ul li button{padding-bottom:5px;padding-top:0px;-webkit-text-decoration:none;text-decoration:none;font-size:14px;font-weight:normal;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:2px;text-align:center;color:#1a1a19;border-bottom:solid 2px transparent;-webkit-transition:all 0.2s;transition:all 0.2s;}nav .contact-button ul li a:hover,nav .contact-button ul li button:hover{border-bottom:solid 2px #000000;}nav .contact-button ul li a.active,nav .contact-button ul li button.active{border-bottom:solid 2px #000000;}nav .mobile-menu{background-color:#1a1a19;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media only screen and (min-width: 990px){nav .mobile-menu{height:90px;}}@media only screen and (max-width: 990px){nav .mobile-menu{height:70px;}}nav .mobile-menu .toggle{width:75px;position:relative;}nav .mobile-menu .toggle .hamburger-component{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;cursor:pointer;position:absolute;-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;left:0;right:0;top:0;bottom:0;}nav .mobile-menu .toggle .hamburger-component:hover .hamburger-icon:before{-webkit-transform:translateY(-2px);-moz-transform:translateY(-2px);-ms-transform:translateY(-2px);transform:translateY(-2px);}nav .mobile-menu .toggle .hamburger-component:hover .hamburger-icon:after{-webkit-transform:translateY(2px);-moz-transform:translateY(2px);-ms-transform:translateY(2px);transform:translateY(2px);}nav .mobile-menu .toggle .hamburger-component .hamburger-icon{width:20px;height:3px;background-color:#fff;position:relative;}nav .mobile-menu .toggle .hamburger-component .hamburger-icon:before,nav .mobile-menu .toggle .hamburger-component .hamburger-icon:after{display:block;content:"";position:absolute;width:20px;height:3px;transition-timing-function:ease;transition-duration:.15s;transition-property:transform;border-radius:4px;background-color:#fff;}nav .mobile-menu .toggle .hamburger-component .hamburger-icon:after{top:6px;}nav .mobile-menu .toggle .hamburger-component .hamburger-icon:before{top:-6px;}nav .sub-nav{position:absolute;
34left:15px;top:26px;background:#ffffff;border:1px solid #e7e7e7;text-align:left;padding:0;opacity:0;visibility:hidden;-webkit-transition:all .2s ease;transition:all .2s ease;-webkit-transform:translate(0, 30%);-moz-transform:translate(0, 30%);-ms-transform:translate(0, 30%);transform:translate(0, 30%);z-index:10;box-shadow:2px 4px 9px 0 rgba(0, 0, 0, 0.2);}nav .sub-nav:after{display:block;content:'';position:absolute;left:0;right:0;top:-50px;height:50px;}nav .sub-nav ul{margin:0;}nav .sub-nav.visible{opacity:1;visibility:visible;-webkit-transform:translate(0, 0);-moz-transform:translate(0, 0);-ms-transform:translate(0, 0);transform:translate(0, 0);}nav .sub-nav li{position:relative;display:block;margin:0;padding:16px 24px;text-align:left;border-bottom:1px solid #e7e7e7;}nav .sub-nav li:last-child{border-bottom:0;}nav .sub-nav li a,nav .sub-nav li button{color:#000;margin:0;white-space:wrap;}body>div.sidemenu{background-color:rgba(255, 255, 255, 1);color:rgba(35, 31, 32, 1);--fontColor:rgba(35, 31, 32, 1);--fontColor_H:345;--fontColor_S:6%;--fontColor_L:13%;--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{background-color:transparent;}body>div.sidemenu .sidemenu-container{top:0;right:0;height:100%;width:300px;-webkit-transition:-webkit-transform 0s linear,opacity 0.2s ease-out;transition:transform 0s linear,opacity 0.2s ease-out;-webkit-transform:translate(-300px, 0px);-moz-transform:translate(-300px, 0px);-ms-transform:translate(-300px, 0px);transform:translate(-300px, 0px);margin-right:-300px;display:block;height:100%;top:0;right:0;position:fixed;}body>div.sidemenu .is-hidden{visibility:hidden;}body>div.sidemenu .flex-sidemenu-container.visible{right:0px;}body>div.sidemenu .flex-sidemenu-container{background:hsla(var(--bgColor_H, 60), var(--bgColor_S, 2%), var(--bgColor_L, 10%), var(--bgColor_A, 1));overflow:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;padding-left:18px;height:100%;}body>div.sidemenu .flex-sidemenu-container .close-sidemenu{width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin-bottom:5px;}@media only screen and (min-width: 990px){body>div.sidemenu .flex-sidemenu-container .close-sidemenu{height:90px;}}@media only screen and (max-width: 990px){body>div.sidemenu .flex-sidemenu-container .close-sidemenu{height:70px;}}body>div.sidemenu .flex-sidemenu-container .close-sidemenu .background-close-sidemenu{background-color:hsla(var(--bgColor_H, 60), var(--bgColor_S, 2%), calc(var(--bgColor_L, 10%) + 10%), var(--bgColor_A, 1));width:75px;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;}@media only screen and (min-width: 990px){body>div.sidemenu .flex-sidemenu-container .close-sidemenu .background-close-sidemenu{height:90px;}}@media only screen and (max-width: 990px){body>div.sidemenu .flex-sidemenu-container .close-sidemenu .background-close-sidemenu{height:70px;}}body>div.sidemenu .flex-sidemenu-container .close-sidemenu .background-close-sidemenu .close-sidemenu-icon{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.sidemenu .flex-sidemenu-container .close-sidemenu .background-close-sidemenu .close-sidemenu-icon img{width:22px;height:22px;cursor:pointer;margin-bottom:0;}body>div.sidemenu .flex-sidemenu-container .sidebar-menu{-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;overflow-y:auto;}body>div.sidemenu .flex-sidemenu-container .sidebar-menu ul{list-style:none;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:space-around;-ms-flex-pack:space-around;
34-webkit-justify-content:space-around;justify-content:space-around;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}body>div.sidemenu .flex-sidemenu-container .sidebar-menu ul li{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.sidemenu .flex-sidemenu-container .socialbar{padding-bottom:1.666rem;margin-top:5px;padding-left:1.666rem;}body>div.sidemenu .flex-sidemenu-container .socialbar ul{list-style:none;}body>div.sidemenu .flex-sidemenu-container .socialbar ul li{display:inline-block;padding:0px 32px 0px 0px;}body>div.sidemenu .flex-sidemenu-container .socialbar .socialbar-label{font-size:14px;font-weight:900;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:normal;color:var(--fontColor, #fff);list-style:none;margin-block-start:0em;margin-block-end:1em;}body>div.sidemenu .flex-sidemenu-container .socialbar .socialbar-text li{margin-block-start:1em;-webkit-margin-start:0px;margin-inline-start:0px;-webkit-margin-end:0px;margin-inline-end:0px;-webkit-padding-start:0px;padding-inline-start:0px;}body>div.sidemenu .flex-sidemenu-container .socialbar .socialbar-text .socialbar-link{font-size:15px;-webkit-text-decoration:none;text-decoration:none;color:var(--fontColor, #fff);}body>div.sidemenu .sidemenu-item{padding-bottom:10px;}body>div.sidemenu .sidemenu-link{padding-top:0px;-webkit-text-decoration:none;text-decoration:none;font-family:var(--global-primary-font-family);font-size:24px;font-weight:normal;font-style:normal;font-stretch:normal;line-height:1.42;letter-spacing:normal;color:var(--fontColor, #fff);margin-bottom:8px;}body>div.sidemenu .sidemenu-link:after{content:'';display:block;width:22px;margin:0 0;border-bottom:2px solid transparent;-webkit-transition:all 0.2s;transition:all 0.2s;}body>div.sidemenu .sidemenu-link:hover:after{border-bottom:2px solid rgb(255, 255, 255);}body>div.sidemenu .sidemenu-link.active:after{border-bottom:2px solid rgb(255, 255, 255);}body>div.sidemenu .sidemenu-sub-link{font-family:var(--global-secondary-font-family);text-transform:uppercase;letter-spacing:2px;font-size:14px;-webkit-transition:all .5s ease;transition:all .5s ease;}body>div.sidemenu .sidemenu-sub-link,body>div.sidemenu .sidemenu-sub-link:active,body>div.sidemenu .sidemenu-sub-link:visited{color:#969696;}body>div.sidemenu .sidemenu-sub-link:hover,body>div.sidemenu .sidemenu-sub-link:hover:active,body>div.sidemenu .sidemenu-sub-link:hover:visited{color:var(--fontColor, #fff);}body>div.sidemenu .sub-nav-container{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}body>div.sidemenu .sub-nav{opacity:0;visibility:hidden;-webkit-transition:all .5s ease;transition:all .5s ease;max-height:0;}body>div.sidemenu .sub-nav ul{margin:0;}body>div.sidemenu .sub-nav.visible{opacity:1;visibility:visible;max-height:400px;}body>div.sidemenu .sub-nav li{position:relative;display:block;margin:0;padding:3px 3px 3px 23px;}@media only screen and (max-width: 990px){body>div.sidemenu .sidemenu-link{font-size:18px;margin-bottom:5px;}body>div.sidemenu .sidemenu-sub-link{font-size:12px;}body>div.sidemenu .sidemenu-item{padding-bottom:7px;}}footer{background-color:rgba(255, 255, 255, 1);color:rgba(35, 31, 32, 1);--fontColor:rgba(35, 31, 32, 1);--fontColor_H:345;--fontColor_S:6%;--fontColor_L:13%;--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;}footer .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;line-height:0;font-size:0;position:absolute;}footer .footer{width:100%;background-color:inherit;color:inherit;}footer .footer a{color:currentColor;}footer .footer a svg{color:currentColor;}footer .footer a svg g{fill:currentColor;}footer .footer .lp-i{color:currentColor;}footer .footer .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;}footer .footer-container{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:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;
34-webkit-justify-content:space-between;justify-content:space-between;padding:100px 60px 0;width:100%;max-width:1440px;margin:0 auto;}@media (max-width: 920px){footer .footer-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding:60px 32px 0;}}footer .footer-menu{margin-bottom:20px;font-size:14px;}@media (max-width: 920px){footer .footer-menu a{display:block;margin-bottom:10px;}}footer .footer-col1{width:55%;max-width:100%;color:footer.color;}footer .footer-col1.form-less{width:100%;}@media (max-width: 920px){footer .footer-col1{width:100%;}}footer .footer-col1-logo{height:68px;margin-bottom:24px;-webkit-transition:-webkit-transform 0.1s;transition:transform 0.1s;}@media (max-width: 767px){footer .footer-col1-logo{height:51px;margin-bottom:26px;}}footer .footer-col1-logo:hover{-webkit-transform:scale(1.1, 1.1);-moz-transform:scale(1.1, 1.1);-ms-transform:scale(1.1, 1.1);transform:scale(1.1, 1.1);cursor:pointer;}footer .footer-col1-text{font-family:var(--global-secondary-font-family);font-size:15px;font-weight:normal;font-style:normal;font-stretch:normal;line-height:1.67;letter-spacing:normal;color:footer.color;}@media (max-width: 767px){footer .footer-col1-text{font-size:14px;line-height:1.71;padding-bottom:10px;}}footer .footer-col1-contacts{font-family:Avenir;font-size:15px;line-height:1.67;letter-spacing:normal;color:footer.color;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 767px){footer .footer-col1-contacts{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;width:100%;}}footer .footer-col1-contacts .footer-col1-address{padding-right:50px;}@media (max-width: 767px){footer .footer-col1-contacts >div{width:100%;margin-top:15px;}}footer .footer-col1-contacts a:hover{color:gray;}footer .footer-col1-contacts .footer-col1-title{font-family:var(--global-secondary-font-family);text-transform:uppercase;font-size:14px;font-weight:900;font-stretch:normal;font-style:normal;line-height:normal;letter-spacing:normal;color:footer.color;padding-bottom:15px;}footer .footer-col2{max-width:100%;width:39%;padding-top:40px;}@media (max-width: 920px){footer .footer-col2{width:100%;}}footer .footer-col2 .loading:after{position:absolute;margin-top:10px;display:block;content:'Sending...';}footer .footer-col2 .success{color:footer.color;margin-top:10px;}footer .footer-col2 .hide{display:none;}footer .footer-col2-title{font-family:var(--global-secondary-font-family);font-size:32px;font-weight:normal;font-style:normal;font-stretch:normal;line-height:1;letter-spacing:normal;color:footer.color;text-align:left;margin:0 0 30px;padding:0;}@media (max-width: 767px){footer .footer-col2-title{line-height:1.31;margin-bottom:26px;}}footer .footer-col2-text{font-family:var(--global-secondary-font-family);font-size:15px;font-weight:normal;font-style:normal;font-stretch:normal;line-height:1.67;letter-spacing:normal;color:footer.color;}@media (max-width: 767px){footer .footer-col2-text{font-size:14px;line-height:1.71;padding-bottom:15px;}}footer .footer-col2-input-text{font-family:var(--global-secondary-font-family);font-size:14px;font-weight:300;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:normal;color:inherit;height:42px;width:100%;border-width:0;background-color:transparent;border-bottom:1px solid;border-bottom-color:inherit;}footer .footer-col2 .lp-disclaimer{margin-bottom:35px;}@media (max-width: 868px){footer .footer-col2 .lp-disclaimer{margin-bottom:26px;}}footer .footer-col2-input-submit{font-family:var(--global-secondary-font-family);font-size:14px;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:normal;color:inherit;padding:12px 32px;background-color:transparent;border:0;border:1px solid #fff;-webkit-transition:all 0.1s;transition:all 0.1s;text-transform:uppercase;}footer .footer-col2-input-submit:hover{color:footer.background-color;background-color:footer.color;cursor:pointer;}@media (max-width: 868px){footer .footer-col2-input-submit{margin-bottom:35px;}}footer .footer-row{color:footer.color;width:100%;margin:0 auto;max-width:1440px;text-align:right;padding:24px 60px 60px;display:block;}
34footer .footer-row.flex{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: 920px){footer .footer-row.flex{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}footer .footer-row.flex >span{margin-top:20px;}}@media (max-width: 920px){footer .footer-row{text-align:left;padding:24px 32px 60px;}}@media (max-width: 767px){footer .footer-row{display:none;}}footer .footer-row-link{font-family:var(--global-secondary-font-family);font-size:14px;font-weight:normal;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:2px;color:inherit;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:color 0.2s;transition:color 0.2s;padding-right:27px;text-transform:uppercase;border:none;background:transparent;cursor:pointer;}footer .footer-row-link:last-child{padding-right:0px;}footer .footer-row-link:hover{color:gray;}footer .footer-row .link{-webkit-transition:color 0.2s;transition:color 0.2s;}footer .footer-row .link:hover{color:gray;}footer .footer-socialbar{max-width:1440px;padding:45px 60px 29px;margin:0 auto;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;}footer .footer-socialbar p{padding-right:40px;}footer .footer-socialbar.form-less{padding-top:20px;padding-bottom:40px;}@media (max-width: 920px){footer .footer-socialbar.form-less{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}footer .footer-socialbar.form-less .footer-socialbar-content{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:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;width:auto;}@media (max-width: 920px){footer .footer-socialbar.form-less .footer-socialbar-content{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (max-width: 920px){footer .footer-socialbar{padding:8px 32px 8px;}footer .footer-socialbar p{display:block;width:100%;}}footer .footer-socialbar-content{width:39%;margin:10px 0 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:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}@media (max-width: 920px){footer .footer-socialbar-content{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;width:100%;}}footer .footer-socialbar-text{font-family:var(--global-secondary-font-family);font-size:14px;font-weight:900;font-style:normal;font-stretch:normal;line-height:normal;letter-spacing:normal;color:footer.color;display:inline-block;padding:0 28px 0 0;margin:0;text-transform:uppercase;}@media (max-width: 920px){footer .footer-socialbar-text{padding-bottom:16px;}}footer .footer-socialbar-link{-webkit-text-decoration:none;text-decoration:none;font-size:21px;}footer .footer-socialbar-link:last-child{margin-right:0;}footer .footer-socialbar-link:hover{color:darken(#fff, 20%);}footer .footer-socialbar svg{height:20px;margin-top:3px;}footer .footer-socialbar-logo{height:15px;-webkit-transition:-webkit-transform 0.1s;transition:transform 0.1s;}footer .footer-socialbar-logo:hover{-webkit-transform:scale(1.2, 1.2);-moz-transform:scale(1.2, 1.2);-ms-transform:scale(1.2, 1.2);transform:scale(1.2, 1.2);}footer .footer .desktop{display:block;}@media (max-width: 868px){footer .footer .desktop{display:none;}}footer .footer .mobile{display:none;}@media (max-width: 868px){footer .footer .mobile{display:block;}}footer .footer form{margin-bottom:0;}@media (max-width: 920px){footer .footer form{max-width:100%;}}footer .footer .flex-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:normal;-ms-flex-pack:normal;
34-webkit-justify-content:normal;justify-content:normal;}footer .footer .flex{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}footer .logo-text{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-align:left;width:63%;}@media (max-width: 920px){footer .logo-text{width:100%;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;margin-bottom:15px;}}footer .img-wrap{width:100%;max-width:100px;margin-right:20px;}@media (max-width: 920px){footer .img-wrap{margin:0 0 30px 0;}}footer .img-wrap img{width:100%;object-fit:cover;}footer .luxury-link{position:relative;display:inline-block;}footer .luxury-link:after{content:"";display:block;position:absolute;width:100%;height:1px;left:0;bottom:0;background:currentColor;-webkit-transition:.2s all linear;transition:.2s all linear;}footer .luxury-link:hover:after{width:0;}footer .bottom-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;font-size:18px;}@media (max-width: 920px){footer .bottom-lp{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}footer .lp-footer-disclaimers{margin:0 auto;max-width:1440px;padding:0 60px 60px;}body>div.mobile-contact-wrapper .mobile-contact{display:none;position:fixed;width:100%;height:100vh;z-index:5;pointer-events:none;bottom:0;right:0;}body>div.mobile-contact-wrapper .mobile-contact .item{outline:none;width:50px;height:50px;box-shadow:4px 4px 10px 0 rgba(0, 0, 0, 0.1);background-color:#f1f1f1;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;border-radius:50%;color:#484b4e;border:none;font-size:20px;}body>div.mobile-contact-wrapper .mobile-contact .item svg{fill:#484b4e;}body>div.mobile-contact-wrapper .mobile-contact .item:nth-child(n + 2){margin-top:15px;}body>div.mobile-contact-wrapper .mobile-contact .buttons-holder{pointer-events:all;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;position:absolute;right:25px;bottom:70px;}body>div.mobile-contact-wrapper .mobile-contact .search-close-icon{display:none;}body>div.mobile-contact-wrapper .mobile-contact .active .search-show-icon{display:none;}body>div.mobile-contact-wrapper .mobile-contact .active .search-close-icon{display:block;}body>div.mobile-contact-wrapper .mobile-contact .search-wrapper{pointer-events:all;position:absolute;bottom:30px;right:90px;overflow:hidden;width:0;-webkit-transition:width 0.4s ease;transition:width 0.4s ease;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;}body>div.mobile-contact-wrapper .mobile-contact .search-wrapper.active{width:calc(100% - 110px);}body>div.mobile-contact-wrapper .mobile-contact .search-inner{width:calc(100vw - 110px);-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}body>div.mobile-contact-wrapper .mobile-contact .search-input-container{width:100%;border:solid 1px #d8d8d8;height:50px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:0 12px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#fff;box-shadow:0 0 7px 0 rgba(0, 0, 0, 0.12);}body>div.mobile-contact-wrapper .mobile-contact .search-input-container .search-icon{margin-right:10px;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;font-size:18px;}body>div.mobile-contact-wrapper .mobile-contact .search-input-container .search-input{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;border:none;border-radius:0;outline:none;color:#000;background:transparent;font-size:16px;}body>div.mobile-contact-wrapper .mobile-contact .search-results{width:100%;background-color:rgba(0, 0, 0, 0.85);border:none;color:#fff;font-size:16px;overflow:hidden;-webkit-transition:height 0.3s ease;transition:height 0.3s ease;height:0;}body>div.mobile-contact-wrapper .mobile-contact .results-container{padding:10px 0;}body>div.mobile-contact-wrapper .mobile-contact .results-container a{-webkit-transition:all 0.5s ease;transition:all 0.5s ease;color:#fff;}body>div.mobile-contact-wrapper .mobile-contact .results-container a:hover{color:inherit;opacity:0.8;}body>div.mobile-contact-wrapper .mobile-contact .results-link{display:block;padding:4px 20px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}body>div.mobile-contact-wrapper .mobile-contact .result-self{position:relative;}body>div.mobile-contact-wrapper .mobile-contact .result-self::before{content:'';position:absolute;width:7px;height:7px;border-radius:50%;border:none;background-color:currentColor;-webkit-transition:all .3s ease;transition:all .3s ease;left:9px;top:calc(50% - 4px);}body>div.mobile-contact-wrapper .mobile-contact .search-in-progress{width:100%;padding:30px;opacity:0.5;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:30px;}body>div.mobile-contact-wrapper .mobile-contact .search-in-progress.not-visible{display:none;}body>div.mobile-contact-wrapper .mobile-contact .nothing-found{width:100%;padding:20px;}body>div.mobile-contact-wrapper .mobile-contact.dark .item{background-color:black;color:#f1f1f1;}body>div.mobile-contact-wrapper .mobile-contact.dark .item svg{fill:#f1f1f1;}body>div.mobile-contact-wrapper .mobile-contact.dark .search-input-container{border:none;background-color:#1a1a1a;color:#f1f1f1;}body>div.mobile-contact-wrapper .mobile-contact.dark .search-input-container .search-input{color:#fff;}body>div.mobile-contact-wrapper .mobile-contact.with-search .buttons-holder{bottom:30px;}@media (max-width: 500px){body>div.mobile-contact-wrapper .mobile-contact{display:block;}} 35 </style> 36 <style id="custom-style-css">.social_icons-style-1 a{border-color:rgba(35, 31, 32, 0)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(35, 31, 32, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(35, 31, 32, 0)!important;background-color:rgba(35, 31, 32, 0)!important;color:rgba(35, 31, 32, 0.8)!important;}.social_icons-style-1 a i{color:inherit!important;}
36.social_icons-style-1 a svg,.social_icons-style-1 a svg path{fill:currentColor!important;}.pagination-style-1 li a{color:rgba(35, 31, 32, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-1 li a:hover{color:rgba(255, 255, 255, 1)!important;background-color:rgba(35, 31, 32, 1)!important;border-color:rgba(35, 31, 32, 1)!important;}.pagination-style-1 li.active a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(35, 31, 32, 1)!important;border-color:rgba(35, 31, 32, 1)!important;}.hyperlink-style-1{color:rgba(35, 31, 32, 1)!important;}.hyperlink-style-1:hover{color:rgba(0, 0, 0, 1)!important;}.button-style-1{color:rgba(35, 31, 32, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(35, 31, 32, 1)!important;}.button-style-1:hover{color:rgba(255,255,255,1)!important;background-color:rgba(35, 31, 32, 1)!important;border-color:rgba(35, 31, 32, 1)!important;}.button-style-2{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-2:hover{color:rgba(35, 31, 32, 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, 0)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-2 a:hover{border-color:rgba(255, 255, 255, 0)!important;background-color:rgba(255, 255, 255, 0)!important;color:rgba(255, 255, 255, 0.8)!important;}.social_icons-style-2 a i{color:inherit!important;}
36.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.pagination-style-2 li a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-2 li a:hover{color:rgba(35, 31, 32, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:#FFFFFF!important;}.pagination-style-2 li.active a{color:rgba(35, 31, 32, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:#FFFFFF!important;}.hyperlink-style-2{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-2:hover{color:#FFFFFF!important;}.button-style-3{color:rgba(255, 255, 255, 1)!important;background-color:rgba(35, 31, 32, 1)!important;border-color:rgba(35, 31, 32, 1)!important;}.button-style-3:hover{color:rgba(35, 31, 32, 1)!important;background-color:rgba(171, 197, 214, 0)!important;border-color:rgba(35, 31, 32, 1)!important;}.button-style-4{color:rgba(35, 31, 32, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-4:hover{color:rgba(255,255,255,1)!important;background-color:rgba(171, 197, 214, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}</style> 37 <!-- LP Consent bootstrap: blocking; resolves consent state, pushes Consent Mode 38 defaults, and dynamically loads the locale + main (and banner if needed). --> 39
39<script src="https://cdn.luxurypresence.com/scripts/lp-consent/latest/lp-consent-boot.js" data-website-id="7afcf2a6-6e2c-40b1-88ba-038553fc87dc"></script>
39 40 41 42
42<script> 43 (function utmParse() { 44 const url = new URL(window.location.href); 45 if (url.search) { 46 const utm = url.search.split(/\?|&/g).reduce((acc, current) => { 47 const matched = current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g); 48 if (matched) { 49 acc[matched[0]] = current.replace(`${matched[0]}=`, ''); 50 } 51 return acc; 52 }, {}); 53 if (Object.keys(utm).length) { 54 window.localStorage.setItem('utm_vars', JSON.stringify(utm)); 55 } else { 56 // Remove old utm vars 57 window.localStorage.removeItem('utm_vars'); 58 } 59 } 60 // Set referrer in local storage 61 // This is meant to be stored once to avoid self-referrals and to have the first referrer only. 62 if (!window.localStorage.getItem('referrer')) { 63 // Capture the Referrer URL 64 const referrer = document.referrer; 65 if (referrer) { 66 // Only store the referrer if it comes from outside the current domain (to avoid self-referrals) 67 const currentDomain = window.location.hostname; 68 const referrerDomain = new URL(referrer).hostname; 69 70 if (referrerDomain !== currentDomain) { 71 // Store it in localStorage 72 localStorage.setItem('referrer', referrer); 73 } 74 } 75 } 76 })(); 77 </script>
77 78
78<script type="text/javascript"> 79 document.addEventListener("DOMContentLoaded", function() { 80 var path = window.location.pathname; 81 // Apply RealEstateAgent schema to homepage only 82 if (path === '/') { 83 var realEstateAgentSchema = { 84 "@context": "https://schema.org", 85 "@type": "RealEstateAgent", 86 "name": "Corcoran DeRonja Real Estate", 87 "image": "https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/76d27bea-b51e-4fc4-9a7b-34e6cc665e42", 88 "@id": "https://drefirm.com/", 89 "url": "https://drefirm.com/", 90 "telephone": "(919) 669-7993", 91 "priceRange": "$$$", 92 "address": { 93 "@type": "PostalAddress", 94 "streetAddress": "911 N West St, Suite 203", 95 "addressLocality": "Raleigh", 96 "addressRegion": "NC", 97 "postalCode": "27603", 98 "addressCountry": "US" 99 }, 100 "geo": { 101 "@type": "GeoCoordinates", 102 "latitude": 35.7913720, 103 "longitude": -78.6442966 104 }, 105 "openingHoursSpecification": { 106 "@type": "OpeningHoursSpecification", 107 "dayOfWeek": [ 108 "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" 109 ], 110 "opens": "00:00", 111 "closes": "23:59" 112 }, 113 "sameAs": [ 114 "https://www.facebook.com/drefirm", 115 "https://www.instagram.com/corcoranderonja/", 116 "https://www.linkedin.com/company/deronja-real-estate/", 117 "https://www.tiktok.com/@corcoranderonja", 118 "https://www.youtube.com/user/drefirm" 119 ] 120 }; 121 injectSchema(realEstateAgentSchema); 122 } 123 function injectSchema(schema) { 124 var script = document.createElement('script'); 125 script.type = 'application/ld+json'; 126 script.text = JSON.stringify(schema); 127 document.head.appendChild(script); 128 } 129 }); 130</script>
130 131 <!-- GOOGLE TRANSLATE STYLES are moved to external CSS --> 132</head> 133<body> 134 <div id="google_translate_element" style="display: none"></div> 135 136 <nav id="global-navbar" data-el-id="ad139a7b-7773-46eb-88be-23b0085689ee"> 137 <div class="navbar "> 138 <div class="logo"> 139 <a href="/"> 140 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr 1956w" alt="Logo" sizes="200px" class="logo-dark"> 141 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/hlrshpe2gqkbstueaiez" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/hlrshpe2gqkbstueaiez 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/hlrshpe2gqkbstueaiez 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/hlrshpe2gqkbstueaiez 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/hlrshpe2gqkbstueaiez 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/hlrshpe2gqkbstueaiez 1956w" alt="Logo" sizes="200px" class="logo-light"> 142 </a> 143 </div> 144 145 <div class="top-menu"> 146 <ul> 147 <li class="sub-nav-container"> 148 149 <a href="#" class="link">Who we Are</a> 150 <div class="sub-nav"> 151 <ul> 152 <li><a href="/team" class="link">Meet the Team</a></li> 153 <li><a href="/testimonials" class="link">Success Stories</a></li> 154 <li><a href="/blogs" class="link">Our Blog</a></li> 155 </ul> 156 </div> 157 158 </li> 159 <li class="sub-nav-container"> 160 161 <a href="#" class="link">Properties</a> 162 <div class="sub-nav"> 163 <ul> 164 <li><a href="/properties/sale" class="link">Featured Properties</a></li> 165 <li><a href="/properties/sold" class="link">Past Transactions</a></li> 166 </ul> 167 </div> 168 169 </li> 170 <li class="sub-nav-container"> 171 172 <a href="#" class="link">Looking to Buy?</a> 173 <div class="sub-nav"> 174 <ul> 175 <li><a href="/home-search/listings" class="link">Home Search</a></li> 176 <li><a href="/buyer-experience" class="link">Buyer Experience</a></li> 177 <li><a href="/mortgage-calculator" class="link">Mortgage Calculator</a></li> 178 </ul> 179 </div> 180 181 </li> 182 <li class="sub-nav-container"> 183 184 <a href="#" class="link">Looking to Sell?</a> 185 <div class="sub-nav"> 186 <ul> 187 <li><a href="/seller-services" class="link">Seller Service</a></li> 188 <li><a href="/home-valuation" class="link">Home Valuation</a></li> 189 </ul> 190 </div> 191 192 </li> 193 <li><a href="/buyer-cooperation-information">Buyer Agent Info</a></li> 194 <li><a href="/careers">Careers</a></li> 195 </ul> 196 </div> 197 198 <div class="mobile-menu"> 199 <div class="toggle"> 200 <div class="hamburger-component"> 201 <div class="hamburger-icon"></div> 202 </div> 203 </div> 204 </div> 205 206 <div class="contact-button"> 207 <ul> 208 <li><a href="/contact">CONTACT</a></li> 209 </ul> 210 </div> 211</div> 212 </nav> 213 <div id="global-sidemenu" class="sidemenu" data-el-id="996d9edf-ac66-4911-98c2-95d2a1a481a5"> 214 <div class="sidemenu-container"> 215 <div class="flex-sidemenu-container"> 216 <div class="close-sidemenu toggle"> 217 <div class="background-close-sidemenu"> 218 <div class="close-sidemenu-icon"> 219 <img src="https://d1e1jt2fj4r8r.cloudfront.net/uploads/close.446dd38a.png" border="0" alt="close-icon-x"> 220 </div> 221 </div> 222 </div> 223 224 <div class="sidebar-menu"> 225 <ul> 226 <li class="sidemenu-item"><a href="/" class="sidemenu-link">Home</a></li> 227 <li class="sidemenu-item sub-nav-container"> 228 <a href="#" class="sidemenu-link">Who We Are</a> 229 <div class="sub-nav"> 230 <ul> 231 <li><a href="/team" class="sidemenu-sub-link">Meet the Team</a></li> 232 <li><a href="/testimonials" class="sidemenu-sub-link">Success Stories</a></li> 233 <li><a href="/blogs" class="sidemenu-sub-link">Our Blog</a></li> 234 </ul> 235 </div> 236 </li> 237 <li class="sidemenu-item sub-nav-container"> 238 <a href="#" class="sidemenu-link">Properties</a> 239 <div class="sub-nav"> 240 <ul> 241 <li><a href="/properties/sale" class="sidemenu-sub-link">Featured Properties</a></li> 242 <li><a href="/properties/sold" class="sidemenu-sub-link">Past Transactions</a></li> 243 </ul> 244 </div> 245 </li> 246 <li class="sidemenu-item sub-nav-container"> 247 <a href="#" class="sidemenu-link">Neighborhoods</a> 248 <div class="sub-nav"> 249 <ul> 250 <li><a href="/raleigh-neighborhoods" class="sidemenu-sub-link">Raleigh</a></li> 251 <li><a href="/durham-neighborhoods" class="sidemenu-sub-link">Durham</a></li> 252 <li><a href="/chapel-hill" class="sidemenu-sub-link">Chapel Hill</a></li> 253 <li><a href="/cary" class="sidemenu-sub-link">Cary</a></li> 254 <li><a href="/apex" class="sidemenu-sub-link">Apex</a></li> 255 <li><a href="/clayton" class="sidemenu-sub-link">Clayton</a></li> 256 </ul> 257 </div> 258 </li> 259 <li class="sidemenu-item sub-nav-container"> 260 <a href="#" class="sidemenu-link">Looking to Buy?</a> 261 <div class="sub-nav"> 262 <ul> 263 <li><a href="/home-search/listings" class="sidemenu-sub-link">Home Search</a></li> 264 <li><a href="/buyer-experience" class="sidemenu-sub-link">Buyer Experience</a></li> 265 <li><a href="/mortgage-calculator" class="sidemenu-sub-link">Mortgage Calculator</a></li> 266 </ul> 267 </div> 268 </li> 269 <li class="sidemenu-item sub-nav-container"> 270 <a href="#" class="sidemenu-link">Looking to Sell?</a> 271 <div class="sub-nav"> 272 <ul> 273 <li><a href="/seller-services" class="sidemenu-sub-link">Seller Services</a></li> 274 <li><a href="/home-valuation" class="sidemenu-sub-link">Home Valuation</a></li> 275 </ul> 276 </div> 277 </li> 278 <li class="sidemenu-item"><a href="/buyer-cooperation-information" class="sidemenu-link">Buyer Agent Information</a></li> 279 <li class="sidemenu-item"><a href="/careers" class="sidemenu-link">Careers</a></li> 280 <li class="sidemenu-item"><a href="/contact" class="sidemenu-link">Contact Us</a></li> 281 <li class="sidemenu-item"><a href="/home-search/account" class="sidemenu-link">Client Search Portal</a></li> 282 </ul> 283 </div> 284 285 <div class="socialbar"> 286 <div class="socialbar-label"> 287 SOCIAL 288 </div> 289 <ul class="lp-socials {{socialStyle}} socialbar-text"> 290 291 <li> 292 <a 293 href="https://www.facebook.com/drefirm" 294 class="lp-socials__link socialbar-link" 295 data-wow-delay="0s" 296 target="_blank" 297 aria-label="FACEBOOK" 298 >
299 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 300 </a> 301 </li> 302 <li> 303 <a 304 href="https://www.instagram.com/deronjarealestate/" 305 class="lp-socials__link socialbar-link" 306 data-wow-delay="0.1s" 307 target="_blank" 308 aria-label="INSTAGRAM" 309 > 310 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 311 </a> 312 </li> 313 <li> 314 <a 315 href="https://www.linkedin.com/company/deronja-real-estate/" 316 class="lp-socials__link socialbar-link" 317 data-wow-delay="0.2s" 318 target="_blank" 319 aria-label="LINKEDIN" 320 > 321 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 322 </a> 323 </li> 324 <li> 325 <a 326 href="https://www.youtube.com/user/drefirm" 327 class="lp-socials__link socialbar-link" 328 data-wow-delay="0.3s" 329 target="_blank" 330 aria-label="YOUTUBE" 331 > 332 <span class="lp-i lp-i--youtube" aria-hidden="true"></span> 333 </a> 334 </li> 335 <li> 336 <a 337 href="https://www.yelp.com/biz/deronja-real-estate-raleigh" 338 class="lp-socials__link socialbar-link" 339 data-wow-delay="0.4s" 340 target="_blank" 341 aria-label="YELP" 342 > 343 <span class="lp-i lp-i--yelp" aria-hidden="true"></span> 344 </a> 345 </li> 346 <li> 347 <a 348 href="https://www.google.com/search?q=DeRonja+Real+Estate&oq=DeRonja+Real+Estate&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQRRg9MgYIAhBFGD0yBggDEEUYPDIGCAQQLhhA0gEHNjY0ajBqOagCALACAQ&sourceid=chrome&ie=UTF-8#lrd=0x89ac58eacc09162f:0xc1d6b763168ed3fa,1,,,," 349 class="lp-socials__link socialbar-link" 350 data-wow-delay="0.5s" 351 target="_blank" 352 aria-label="GOOGLE" 353 > 354 <span class="lp-i lp-i--google" aria-hidden="true"></span> 355 </a> 356 </li> 357 <li> 358 <a 359 href="https://www.zillow.com/profile/DeRonjaRealEstate" 360 class="lp-socials__link socialbar-link" 361 data-wow-delay="0.6s" 362 target="_blank" 363 aria-label="ZILLOW" 364 > 365 <span class="lp-i lp-i--zillow" aria-hidden="true"></span> 366 </a> 367 </li> 368 </ul> </div> 369 </div> 370</div> 371 </div> 372 <div id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="ae1d2620-ed7f-458b-85a6-30bb62650e72"> 373 <div class="mobile-contact redesign"> 374 <div class="buttons-holder"> 375 <a class="item" href="/cdn-cgi/l/email-protection#8fe9fdeee1e4cfebfdeae9e6fde2a1ece0e2"> 376 <svg xmlns="http://www.w3.org/2000/svg" width="26" height="18" fill="none" viewBox="0 0 26 18"> 377 <path fill-rule="evenodd" d="M1.273 18l7.734-7.735c.395.352.838.647 1.32.87.592.275 1.233.44 1.885.488.779.055 1.567-.059 2.297-.334.62-.235 1.189-.584 1.684-1.023L23.927 18H1.273zm6.454-9L0 16.727V1.273L7.727 9zM25.2 1.3v15.427l-7.71-7.71c2.603-2.54 5.154-5.13 7.71-7.717zM23.927 0l-8.78 8.78c-.343.339-.744.61-1.192.792-.903.367-1.942.349-2.831-.05-.37-.167-.707-.398-1.003-.675l-.403-.389c-.01-.014-.021-.029-.034-.042-.049-.058-.104-.109-.166-.152-2.8-2.714-5.54-5.49-8.28-8.264h22.69z" clip-rule="evenodd"/> 378 </svg> 379 </a> 380 <a class="item" href="tel:9196697993"> 381 <svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25"> 382 <path d="M24.1 18.172l-5.109-2.635c-.71-.369-1.606-.185-2.106.448l-1.87 2.397c-1.817-.974-3.213-1.923-4.82-3.53-1.71-1.713-2.633-3.136-3.58-4.9l2.37-1.845c.631-.5.842-1.397.447-2.108L6.8.914C6.325.018 5.192-.272 4.376.28l-3.24 2.16C.374 2.944-.047 3.813.005 4.709.057 5.63.19 6.789.4 7.606c.948 3.636 3.213 7.404 6.4 10.592 3.186 3.188 6.952 5.454 10.586 6.403.816.21 1.975.316 2.923.395.922.053 1.79-.395 2.291-1.16l2.107-3.293c.58-.817.263-1.923-.606-2.371z"/> 383 </svg> 384 </a> 385 </div> 386 387</div> 388 389 </div> 390 <section class="image-section is-font-color-light is-background-color-dark" id="section-2f1a6577-1ccd-43a3-ad06-85544d73063d" data-el-id="d231c003-e59b-434c-abfd-4c0985ac93e5"> 391 <div class="custom-opening"> 392 <div class="custom-opening__content"> 393 <h1 class="custom-opening__content__title"> 394 Our Blog 395 </h1> 396 <p class="custom-opening__content__description"> 397 398 </p> 399 </div> 400</div> 401 402</section> 403<section id="section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b" class="solid-section is-font-color-dark is-background-color-light" data-el-id="803fbd3d-60f1-4016-bdea-38d655ac30c8">
vendor: 109 bytes, lines 403-404
403 404<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
404<script type="text/x-handlebars-template" class="blogItem pagination-script"><div class="layout-col"> 405 <div class="item-card"> 406 <div class="img" style="background-image: url('{{media.0.mediumUrl}}')"></div> 407 <h4>{{title}}</h4> 408 {{#if publishedAt}} 409 <p class="date"> 410 {{hbFormatDate publishedAt}} 411 </p> 412 {{/if}} 413 {{#if subtitle}} 414 <p class="sub-title"> 415 {{subtitle}} 416 </p> 417 {{/if}} 418 <div class="read-wrapper"> 419 <a href="/blogs/{{slug}}" class="hyperlink-style-1">Read</a> 420 </div> 421 </div> 422</div> 423</script>
423 424<div class="layout-section"> 425 <div class="layout-container"> 426 <div class="layout-row data-container"> 427 <div class="layout-col"> 428 <div class="item-card"> 429 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/904efee7-267e-4cab-876f-41fd84d80252')"></div> 430 <h4>13 Best Neighborhoods to Live in Raleigh NC</h4> 431 <p class="date"> 432 October 4, 2026 433 </p> 434 <p class="sub-title"> 435 Raleigh has eight historic neighborhoods and plenty of leafy suburbs. 436 </p> 437 <div class="read-wrapper"> 438 <a href="/blogs/13-best-neighborhoods-to-live-in-raleigh-nc" class="hyperlink-style-1">Read</a> 439 </div> 440 </div> 441 </div> 442 <div class="layout-col"> 443 <div class="item-card"> 444 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/ycwoqaoff8jiccumhc9wph6l')"></div> 445 <h4>5 Essential Tips for a Successful June Home Sale</h4> 446 <p class="date"> 447 October 3, 2026 448 </p> 449 <p class="sub-title"> 450 Here are five essential tips to help you make the most of the season and achieve a smooth, profitable sale. 451 </p> 452 <div class="read-wrapper"> 453 <a href="/blogs/tips-for-a-successful-june-home-sale" class="hyperlink-style-1">Read</a> 454 </div> 455 </div> 456 </div> 457 <div class="layout-col"> 458 <div class="item-card"> 459 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/d9396b9a-d164-4aaf-ab6f-b1c3c23c61c6')"></div> 460 <h4>Simple Ways to Live More Sustainably at Home</h4> 461 <p class="date"> 462 September 29, 2026 463 </p> 464 <p class="sub-title"> 465 Practical Ways to Bring Sustainable Living Into Your Raleigh Home. 466 </p> 467 <div class="read-wrapper"> 468 <a href="/blogs/simple-ways-to-live-more-sustainably-at-home" class="hyperlink-style-1">Read</a> 469 </div> 470 </div> 471 </div> 472 <div class="layout-col"> 473 <div class="item-card"> 474 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/d844328c-63f1-49b1-9551-65a8f24b2c19')"></div> 475 <h4>Big Dreams, Small Spaces: Creative Storage Solutions for Compact Living</h4> 476 <p class="date"> 477 September 17, 2026 478 </p> 479 <p class="sub-title"> 480 Small Space Storage Solutions for Raleigh-Area Living. 481 </p> 482 <div class="read-wrapper"> 483 <a href="/blogs/big-dreams-small-spaces-creative-storage-solutions-for-compact-living" class="hyperlink-style-1">Read</a> 484 </div> 485 </div> 486 </div> 487 <div class="layout-col"> 488 <div class="item-card"> 489 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/e1ab4db6-b634-49ce-8a13-013588bf96d7')"></div> 490 <h4>The Best Neighborhoods in Raleigh for Families</h4> 491 <p class="date"> 492 September 17, 2026 493 </p> 494 <p class="sub-title"> 495 Discover Raleighâs premier family-friendly communities, from historic charm to modern luxury. 496 </p> 497 <div class="read-wrapper"> 498 <a href="/blogs/the-best-neighborhoods-in-raleigh-for-families" class="hyperlink-style-1">Read</a> 499 </div> 500 </div> 501 </div> 502 <div class="layout-col"> 503 <div class="item-card"> 504 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/3e2c62e2-251d-485c-a6e3-5840526cd3ec')"></div> 505 <h4>The Top Attractions in Raleigh, NC, For Locals or Tourists</h4> 506 <p class="date"> 507 September 17, 2026 508 </p> 509 <p class="sub-title"> 510 Discover the Best Things to Do in Raleigh. 511 </p> 512 <div class="read-wrapper"> 513 <a href="/blogs/the-top-attractions-in-raleigh-nc-for-locals-or-tourists" class="hyperlink-style-1">Read</a> 514 </div> 515 </div> 516 </div> 517 <div class="layout-col"> 518 <div class="item-card"> 519 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/405bafe4-8a28-4b95-96ff-59f544dd9b05')"></div> 520 <h4>Weekend Trips from Raleigh, NC</h4> 521 <p class="date"> 522 September 16, 2026 523 </p> 524 <p class="sub-title"> 525 Explore the Best Destinations for a Quick Getaway from Raleigh. 526 </p> 527 <div class="read-wrapper"> 528 <a href="/blogs/weekend-trips-from-raleigh-nc" class="hyperlink-style-1">Read</a> 529 </div> 530 </div> 531 </div> 532 <div class="layout-col"> 533 <div class="item-card"> 534 <div class="img" style="background-image: url('https://images.unsplash.com/photo-1534330207526-8e81f10ec6fc?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDE5fHxwcml2YXRlfGVufDB8fHx8MTc4NjYyOTYwNXww&ixlib=rb-4.1.0&q=80&w=1280')"></div> 535 <h4>Is a Private Exclusive Marketing Strategy Right for You?</h4> 536 <p class="date"> 537 August 17, 2026 538 </p> 539 <p class="sub-title"> 540 How to decide whether or not to use a private exclusive marketing strategy when selling your home. 541 </p> 542 <div class="read-wrapper"> 543 <a href="/blogs/is-a-private-exclusive-marketing-strategy-right-for-you" class="hyperlink-style-1">Read</a> 544 </div> 545 </div> 546 </div> 547 <div class="layout-col"> 548 <div class="item-card"> 549 <div class="img" style="background-image: url('https://images.unsplash.com/photo-1531297484001-80022131f5a1?ixid=M3w0MTQ1MnwwfDF8c2VhcmNofDR8fHRlY2hub2xvZ3l8ZW58MHx8fHwxNzg2NjI4OTMxfDA&ixlib=rb-4.1.0&q=80&w=1280')"></div> 550 <h4>Our Promise on AI</h4> 551 <p class="date"> 552 August 13, 2026 553 </p> 554 <p class="sub-title"> 555 How we (and you) are using AI during the home buying and selling process 556 </p> 557 <div class="read-wrapper"> 558 <a href="/blogs/our-promise-on-ai" class="hyperlink-style-1">Read</a> 559 </div> 560 </div> 561 </div> 562 <div class="layout-col"> 563 <div class="item-card"> 564 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/2f9c6729-ace8-4722-a3ab-a344e5b6c272')"></div> 565 <h4>Paws on the Patio: Raleighâs Best Pet-Friendly Restaurants</h4> 566 <p class="date"> 567 August 12, 2026 568 </p> 569 <p class="sub-title"> 570 Where You and Your Four-Legged Friends Can Dine in Style. 571 </p> 572 <div class="read-wrapper"> 573 <a href="/blogs/paws-on-the-patio-raleighs-best-pet-friendly-restaurants" class="hyperlink-style-1">Read</a> 574 </div> 575 </div> 576 </div> 577 <div class="layout-col"> 578 <div class="item-card"> 579 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/68a560b7-90aa-47b5-879f-b267dc1b1896')"></div> 580 <h4>Things to Do in Raleigh, NC</h4> 581 <p class="date"> 582 August 12, 2026 583 </p> 584 <p class="sub-title"> 585 Top Attractions, Hidden Gems, and Local Favorites. 586 </p> 587 <div class="read-wrapper"> 588 <a href="/blogs/things-to-do-in-raleigh-nc" class="hyperlink-style-1">Read</a> 589 </div> 590 </div> 591 </div> 592 <div class="layout-col"> 593 <div class="item-card"> 594 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/589015e5-4fdf-4797-95f5-0ea533960fd5')"></div> 595 <h4>A Guide to Raleigh NC Parks</h4> 596 <p class="date"> 597 August 12, 2026 598 </p> 599 <p class="sub-title"> 600 Discover plenty of popular green spaces in Raleigh. 601 </p> 602 <div class="read-wrapper"> 603 <a href="/blogs/a-guide-to-raleigh-nc-parks" class="hyperlink-style-1">Read</a> 604 </div> 605 </div> 606 </div> 607 <div class="layout-col"> 608 <div class="item-card"> 609 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/191b85e9-a0d9-44fe-9c46-8a9503d3c7a6')"></div> 610 <h4>10 Best Places to Shop in Raleigh NC</h4> 611 <p class="date"> 612 August 12, 2026 613 </p> 614 <p class="sub-title"> 615 Raleigh has several first-class malls and unique markets. 616 </p> 617 <div class="read-wrapper">
618 <a href="/blogs/10-best-places-to-shop-in-raleigh-nc" class="hyperlink-style-1">Read</a> 619 </div> 620 </div> 621 </div> 622 <div class="layout-col"> 623 <div class="item-card"> 624 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/c440d856-86a5-4f71-ad32-8f0ae5708635')"></div> 625 <h4>How to Market Your Raleigh Home Like a Pro</h4> 626 <p class="date"> 627 August 6, 2026 628 </p> 629 <p class="sub-title"> 630 A Raleigh Seller's Guide to How to Market Your Home Successfully. 631 </p> 632 <div class="read-wrapper"> 633 <a href="/blogs/how-to-market-your-raleigh-home-like-a-pro" class="hyperlink-style-1">Read</a> 634 </div> 635 </div> 636 </div> 637 <div class="layout-col"> 638 <div class="item-card"> 639 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=
6391280/https://media-production.lp-cdn.com/media/cd488e32-929f-4f50-ab8e-ff55e2d625c4')"></div> 640 <h4>The Home Sellerâs Checklist: Everything You Need to Do Before Listing</h4> 641 <p class="date"> 642 July 24, 2026 643 </p> 644 <p class="sub-title"> 645 Your Complete Home Selling Checklist for a Successful Raleigh Listing. 646 </p> 647 <div class="read-wrapper"> 648 <a href="/blogs/the-home-sellers-checklist-everything-you-need-to-do-before-listing" class="hyperlink-style-1">Read</a> 649 </div> 650 </div> 651 </div> 652 <div class="layout-col"> 653 <div class="item-card"> 654 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/ebba755f-6231-4b43-ae3c-654997aae0b0')"></div> 655 <h4>The Role of a Real Estate Agent in Your Home-Buying Journey</h4> 656 <p class="date"> 657 July 10, 2026 658 </p> 659 <p class="sub-title"> 660 How the Role of a Real Estate Agent Helps Buyers Navigate the Raleigh Market. 661 </p> 662 <div class="read-wrapper"> 663 <a href="/blogs/the-role-of-a-real-estate-agent-in-your-home-buying-journey" class="hyperlink-style-1">Read</a> 664 </div> 665 </div> 666 </div> 667 <div class="layout-col"> 668 <div class="item-card"> 669 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/80233fc3-ea09-46e4-bbdc-de94ab780f9c')"></div> 670 <h4>What You Need to Know About Home Appraisals</h4> 671 <p class="date"> 672 July 1, 2026 673 </p> 674 <p class="sub-title"> 675 Understanding Home Appraisals When Buying or Selling a Home in Raleigh. 676 </p> 677 <div class="read-wrapper"> 678 <a href="/blogs/what-you-need-to-know-about-home-appraisals" class="hyperlink-style-1">Read</a> 679 </div> 680 </div> 681 </div> 682 <div class="layout-col"> 683 <div class="item-card"> 684 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/3c3b7fb5-0c11-4f91-ae13-d2e4c471c1df')"></div> 685 <h4>How to Strike the Right Balance When Decorating Your New Home</h4> 686 <p class="date"> 687 June 18, 2026 688 </p> 689 <p class="sub-title"> 690 Decorating Tips for New Home Design That Feels Elevated and Cohesive. 691 </p> 692 <div class="read-wrapper"> 693 <a href="/blogs/how-to-strike-the-right-balance-when-decorating-your-new-home" class="hyperlink-style-1">Read</a> 694 </div> 695 </div> 696 </div> 697 <div class="layout-col"> 698 <div class="item-card"> 699 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/04e17338-ddee-4bfe-9f98-da001d270558')"></div> 700 <h4>Love Where You Live: What Makes Raleigh So Special</h4> 701 <p class="date"> 702 June 4, 2026 703 </p> 704 <p class="sub-title"> 705 Discover What Makes Raleigh Special for Luxury Living and Lifestyle. 706 </p> 707 <div class="read-wrapper"> 708 <a href="/blogs/love-where-you-live-what-makes-raleigh-so-special" class="hyperlink-style-1">Read</a> 709 </div> 710 </div> 711 </div> 712 <div class="layout-col"> 713 <div class="item-card"> 714 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/7f74f7df-41c4-4883-88c2-8b0a85ad33e1')"></div> 715 <h4>The Secret to Selling Your Home Above Asking Price</h4> 716 <p class="date"> 717 May 22, 2026 718 </p> 719 <p class="sub-title"> 720 Sell Your Home Above Asking Price With the Right Strategy in Raleigh, North Carolina. 721 </p> 722 <div class="read-wrapper"> 723 <a href="/blogs/the-secret-to-selling-your-home-above-asking-price" class="hyperlink-style-1">Read</a> 724 </div> 725 </div> 726 </div> 727 <div class="layout-col"> 728 <div class="item-card"> 729 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/70423ea9-8388-43bd-bd4b-2ce2b0f9857b')"></div> 730 <h4>How to Handle Multiple Offers on Your Home</h4> 731 <p class="date"> 732 May 15, 2026 733 </p> 734 <p class="sub-title"> 735 Smart Strategies for Handling Multiple Offers in Raleigh, NC. 736 </p> 737 <div class="read-wrapper"> 738 <a href="/blogs/how-to-handle-multiple-offers-on-your-home" class="hyperlink-style-1">Read</a> 739 </div> 740 </div> 741 </div> 742 <div class="layout-col"> 743 <div class="item-card"> 744 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/357b1f49-3fd7-451e-a44d-b892fe6ab00c')"></div> 745 <h4>Selling in Raleigh? Smart Updates to Get Top-Dollar Offers</h4> 746 <p class="date"> 747 May 6, 2026 748 </p> 749 <p class="sub-title"> 750 Smart Home Updates Before Selling in Raleigh That Attract Top Buyers. 751 </p> 752 <div class="read-wrapper"> 753 <a href="/blogs/selling-in-raleigh-smart-updates-to-get-top-dollar-offers" class="hyperlink-style-1">Read</a> 754 </div> 755 </div> 756 </div> 757 <div class="layout-col"> 758 <div class="item-card"> 759 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/fe0ba9fd-be42-493f-8675-82ed2bc9364d')"></div> 760 <h4>How to Get Pre-Approved for a Mortgage and Why Itâs Essential</h4> 761 <p class="date"> 762 May 1, 2026 763 </p> 764 <p class="sub-title"> 765 Understanding the Mortgage Pre-Approval Process and How It Helps You Compete. 766 </p> 767 <div class="read-wrapper"> 768 <a href="/blogs/how-to-get-pre-approved-for-a-mortgage-and-why-its-essential" class="hyperlink-style-1">Read</a> 769 </div> 770 </div> 771 </div> 772 <div class="layout-col"> 773 <div class="item-card"> 774 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/699e8b1c-4608-40e8-bf3a-e608a2b7a307')"></div> 775 <h4>How to Improve the Air Quality of Your Home</h4> 776 <p class="date"> 777 April 14, 2026 778 </p> 779 <p class="sub-title"> 780 Practical Ways To Improve Home Air Quality In Raleigh Homes. 781 </p> 782 <div class="read-wrapper"> 783 <a href="/blogs/how-to-improve-the-air-quality-of-your-home" class="hyperlink-style-1">Read</a> 784 </div> 785 </div> 786 </div> 787 <div class="layout-col"> 788 <div class="item-card"> 789 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/1370cbea-7271-487b-81f2-cf2f6c868769')"></div> 790 <h4>Interior Design Tips for Maximizing Space</h4> 791 <p class="date"> 792 April 1, 2026 793 </p> 794 <p class="sub-title"> 795 Practical Interior Design for Small Spaces in Raleigh, NC Homes. 796 </p> 797 <div class="read-wrapper"> 798 <a href="/blogs/interior-design-tips-for-maximizing-space" class="hyperlink-style-1">Read</a> 799 </div> 800 </div> 801 </div> 802 <div class="layout-col"> 803 <div class="item-card"> 804 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/eccb2c33-1d00-49c7-a92f-7a88c269f0a1')"></div> 805 <h4>Homebuyer FAQs: Answering the Questions You Didnât Know to Ask</h4> 806 <p class="date"> 807 March 18, 2026 808 </p> 809 <p class="sub-title"> 810 A Raleigh Buyerâs Guide to the Top Homebuyer Questions. 811 </p> 812 <div class="read-wrapper"> 813 <a href="/blogs/homebuyer-faqs-answering-the-questions-you-didnt-know-to-ask" class="hyperlink-style-1">Read</a> 814 </div> 815 </div> 816 </div> 817 <div class="layout-col"> 818 <div class="item-card"> 819 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/3daa2305-08c2-4b61-869d-0a2d0c62ab4b')"></div> 820 <h4>The Role of Emotions in Buying and Selling a Home</h4> 821 <p class="date"> 822 March 4, 2026 823 </p> 824 <p class="sub-title"> 825 Understanding the Emotional Journey of Buying and Selling a Home. 826 </p> 827 <div class="read-wrapper"> 828 <a href="/blogs/the-role-of-emotions-in-buying-and-selling-a-home" class="hyperlink-style-1">Read</a> 829 </div> 830 </div> 831 </div> 832 <div class="layout-col"> 833 <div class="item-card"> 834 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/38e8e83f-39f6-43d6-b008-79fac6256b0a')"></div> 835 <h4>How to Make a Winning Offer in a Competitive Market</h4> 836 <p class="date"> 837 January 27, 2026 838 </p> 839 <p class="sub-title"> 840 Smart Buyer Strategies for How to Make a Winning Offer in Raleigh, NC. 841 </p> 842 <div class="read-wrapper"> 843 <a href="/blogs/how-to-make-a-winning-offer-in-a-competitive-market" class="hyperlink-style-1">Read</a> 844 </div> 845 </div> 846 </div> 847 <div class="layout-col"> 848 <div class="item-card"> 849 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/1b8fd4b9-43a5-43c6-bf5f-abd97aaa4c5b')"></div> 850 <h4>How to Determine Your Homeâs Market Value</h4> 851 <p class="date"> 852 January 14, 2026 853 </p> 854 <p class="sub-title">
855 Expert Guide to Home Valuation Methods in Raleigh, NC. 856 </p> 857 <div class="read-wrapper"> 858 <a href="/blogs/how-to-determine-your-homes-market-value" class="hyperlink-style-1">Read</a> 859 </div> 860 </div> 861 </div> 862 <div class="layout-col"> 863 <div class="item-card"> 864 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/a4c2a418-8431-4bc2-9282-441edd686131')"></div> 865 <h4>Timeless Design Tips for Your Raleigh Home</h4> 866 <p class="date"> 867 January 4, 2026 868 </p> 869 <p class="sub-title"> 870 Classic Style, Lasting Impact: How to Create a Home That Never Goes Out of Fashion. 871 </p> 872 <div class="read-wrapper"> 873 <a href="/blogs/timeless-design-tips-for-your-raleigh-home" class="hyperlink-style-1">Read</a> 874 </div> 875 </div> 876 </div> 877 <div class="layout-col"> 878 <div class="item-card"> 879 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/d1502562-c594-4af5-ada2-8287e9600905')"></div> 880 <h4>How to Use Lighting to Transform Your Living Space</h4> 881 <p class="date"> 882 December 30, 2025 883 </p> 884 <p class="sub-title"> 885 Illuminate with Purpose: Easy and Stylish Home Lighting Tips for Every Room. 886 </p> 887 <div class="read-wrapper"> 888 <a href="/blogs/how-to-use-lighting-to-transform-your-living-space" class="hyperlink-style-1">Read</a> 889 </div> 890 </div> 891 </div> 892 <div class="layout-col"> 893 <div class="item-card"> 894 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/f1536c46-1057-4999-9184-40187812db9f')"></div> 895 <h4>How to Turn Your Raleigh Home into a Buyerâs Dream</h4> 896 <p class="date"> 897 December 15, 2025 898 </p> 899 <p class="sub-title"> 900 Simple Ways to Make Your Raleigh Property Irresistible. 901 </p> 902 <div class="read-wrapper"> 903 <a href="/blogs/how-to-turn-your-raleigh-home-into-a-buyers-dream" class="hyperlink-style-1">Read</a> 904 </div> 905 </div> 906 </div> 907 <div class="layout-col"> 908 <div class="item-card"> 909 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/a0a3b877-dffa-461e-a846-80cc5091dc4b')"></div> 910 <h4>Why Modern Cottage Design is Trending</h4> 911 <p class="date"> 912 November 21, 2025 913 </p> 914 <p class="sub-title"> 915 A Fresh Take on Nostalgia: How Cottage Style Got a Contemporary Makeover. 916 </p> 917 <div class="read-wrapper"> 918 <a href="/blogs/why-modern-cottage-design-is-trending" class="hyperlink-style-1">Read</a> 919 </div> 920 </div> 921 </div> 922 <div class="layout-col"> 923 <div class="item-card"> 924 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/3ed314dc-4bd5-4145-af6d-977a7bf92e53')"></div> 925 <h4>Everything You Need to Know About Getting Your Home Inspected Before Selling</h4> 926 <p class="date"> 927 November 3, 2025 928 </p> 929 <p class="sub-title"> 930 Understanding the Importance of Pre-Sale Home Inspections. 931 </p> 932 <div class="read-wrapper">
933 <a href="/blogs/everything-you-need-to-know-about-getting-your-home-inspected-before-selling" class="hyperlink-style-1">Read</a> 934 </div> 935 </div> 936 </div> 937 <div class="layout-col"> 938 <div class="item-card"> 939 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/0fc4c9db-9621-4866-9392-2a5070c4a0b0')"></div> 940 <h4>Luxury Home Design Trends for 2025</h4> 941 <p class="date"> 942 October 31, 2025 943 </p> 944 <p class="sub-title"> 945 Innovative Living Spaces Shaping the Future of High-End Homes. 946 </p> 947 <div class="read-wrapper"> 948 <a href="/blogs/luxury-home-design-trends-for-2025" class="hyperlink-style-1">Read</a> 949 </div> 950 </div> 951 </div> 952 <div class="layout-col"> 953 <div class="item-card"> 954 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/4d2908ea-6791-4d3f-8543-12f00931ba4c')"></div> 955 <h4>Most Googled Questions about Real Estate in 2025</h4> 956 <p class="date"> 957 September 30, 2025 958 </p> 959 <p class="sub-title"> 960 Why people are searchingâand what they really want to know. 961 </p> 962 <div class="read-wrapper"> 963 <a href="/blogs/most-googled-questions-about-real-estate-in-2025" class="hyperlink-style-1">Read</a> 964 </div> 965 </div> 966 </div> 967 <div class="layout-col"> 968 <div class="item-card"> 969 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/bdfb98b6-7002-4d4f-bed6-3e28199451c3')"></div> 970 <h4>How to Find a Real Estate Agent</h4> 971 <p class="date"> 972 August 15, 2025 973 </p> 974 <p class="sub-title"> 975 Your Guide to Confident Home Buying in North Carolina. 976 </p> 977 <div class="read-wrapper"> 978 <a href="/blogs/how-to-find-a-real-estate-agent" class="hyperlink-style-1">Read</a> 979 </div> 980 </div> 981 </div> 982 <div class="layout-col"> 983 <div class="item-card"> 984 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/719d9ea4-2471-42f6-99ae-b107737b910c')"></div> 985 <h4>How to Buy a Luxury Home</h4> 986 <p class="date"> 987 July 24, 2025 988 </p> 989 <p class="sub-title"> 990 A Clear Path to Elevated Living in North Carolina. 991 </p> 992 <div class="read-wrapper"> 993 <a href="/blogs/how-to-buy-a-luxury-home" class="hyperlink-style-1">Read</a> 994 </div> 995 </div> 996 </div> 997 <div class="layout-col"> 998 <div class="item-card"> 999 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/b4257e6c-837f-4493-a557-bc5059f5a38a')"></div> 1000 <h4>Top Home Remodeling Tips in Raleigh, NC</h4> 1001 <p class="date"> 1002 July 1, 2025 1003 </p> 1004 <p class="sub-title"> 1005 Enhance Your Homeâs Value and Comfort with Smart Renovation Strategies. 1006 </p> 1007 <div class="read-wrapper"> 1008 <a href="/blogs/top-home-remodeling-tips-in-raleigh-nc" class="hyperlink-style-1">Read</a> 1009 </div> 1010 </div> 1011 </div> 1012 <div class="layout-col"> 1013 <div class="item-card"> 1014 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/c7e79189-dba4-4c54-8544-a42660b89e23')"></div> 1015 <h4>Things You Might Not Know About Raleigh, NC</h4> 1016 <p class="date"> 1017 June 15, 2025 1018 </p> 1019 <p class="sub-title"> 1020 Uncovering the Surprising Facts and Hidden Gems of the City of Oaks. 1021 </p> 1022 <div class="read-wrapper"> 1023 <a href="/blogs/things-you-might-not-know-about-raleigh-nc-1" class="hyperlink-style-1">Read</a> 1024 </div> 1025 </div> 1026 </div> 1027 <div class="layout-col"> 1028 <div class="item-card"> 1029 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/e89892eb-6716-4f04-97c3-5e0fad27ac63')"></div> 1030 <h4>Hops & Hometown Flavor: Exploring Raleighâs Top Craft Breweries</h4> 1031 <p class="date"> 1032 June 1, 2025 1033 </p> 1034 <p class="sub-title"> 1035 Sip Your Way Through the Cityâs Best Local Brews. 1036 </p> 1037 <div class="read-wrapper"> 1038 <a href="/blogs/hops-and-hometown-flavor-exploring-raleighs-top-craft-breweries" class="hyperlink-style-1">Read</a> 1039 </div> 1040 </div> 1041 </div> 1042 <div class="layout-col"> 1043 <div class="item-card"> 1044 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/c32480ce-25b8-4c84-b8d1-099d7dc041da')"></div> 1045 <h4>Raleigh, NC, Through the Seasons: Home Maintenance Tips</h4> 1046 <p class="date"> 1047 May 15, 2025 1048 </p> 1049 <p class="sub-title"> 1050 Essential tips for keeping your home in top condition year-round in Raleigh, NC. 1051 </p> 1052 <div class="read-wrapper"> 1053 <a href="/blogs/raleigh-nc-through-the-seasons-home-maintenance-tips" class="hyperlink-style-1">Read</a> 1054 </div> 1055 </div> 1056 </div> 1057 <div class="layout-col"> 1058 <div class="item-card"> 1059 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/228cc9c4-1564-4b4a-aac5-3577c05c9761')"></div> 1060 <h4>Raleighâs Standout Perks & Hidden Gems</h4> 1061 <p class="date"> 1062 May 1, 2025 1063 </p> 1064 <p class="sub-title"> 1065 Discover the very best of Raleigh, and see why so many love calling this city home. 1066 </p> 1067 <div class="read-wrapper"> 1068 <a href="/blogs/raleighs-standout-perks-and-hidden-gems" class="hyperlink-style-1">Read</a> 1069 </div> 1070 </div> 1071 </div> 1072 <div class="layout-col"> 1073 <div class="item-card"> 1074 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/40eba56c-ee6d-4ece-8ac6-3b253d0e5d8f')"></div> 1075 <h4>Living in Raleigh, NC</h4> 1076 <p class="date"> 1077 April 16, 2025 1078 </p> 1079 <p class="sub-title"> 1080 Discover the Benefits of Calling Raleigh Home. 1081 </p> 1082 <div class="read-wrapper"> 1083 <a href="/blogs/living-in-raleigh-nc" class="hyperlink-style-1">Read</a> 1084 </div> 1085 </div> 1086 </div> 1087 <div class="layout-col"> 1088 <div class="item-card"> 1089 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/bd1c5122-069f-4518-aa79-65a067fbbc98')"></div> 1090 <h4>Hiking in Raleigh, NC</h4> 1091 <p class="date"> 1092 February 1, 2025 1093 </p> 1094 <p class="sub-title"> 1095 Exploring Scenic Trails in the City of Oaks. 1096 </p> 1097 <div class="read-wrapper"> 1098 <a href="/blogs/hiking-in-raleigh-nc" class="hyperlink-style-1">Read</a> 1099 </div> 1100 </div> 1101 </div> 1102 <div class="layout-col"> 1103 <div class="item-card"> 1104 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/6db9a1cb-dd92-4ba4-8d6d-0e7a673383a8')"></div> 1105 <h4>12 Best Restaurants in Raleigh NC</h4> 1106 <p class="date"> 1107 January 2, 2025 1108 </p> 1109 <p class="sub-title"> 1110 Get your fix at these standout restaurants in Raleigh. 1111 </p> 1112 <div class="read-wrapper"> 1113 <a href="/blogs/12-best-restaurants-in-raleigh-nc" class="hyperlink-style-1">Read</a> 1114 </div> 1115 </div> 1116 </div> 1117 <div class="layout-col"> 1118 <div class="item-card"> 1119 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/j57a88hej8tkdbt2jnxv8eoj')"></div> 1120 <h4>Everything You Need to Know About Moving to Raleigh, NC</h4> 1121 <p class="date"> 1122 October 30, 2024 1123 </p> 1124 <p class="sub-title"> 1125 A guide to help you explore life in Raleigh, NC, and make your move easier. 1126 </p> 1127 <div class="read-wrapper">
1128 <a href="/blogs/everything-you-need-to-know-about-moving-to-raleigh-nc" class="hyperlink-style-1">Read</a> 1129 </div> 1130 </div> 1131 </div> 1132 <div class="layout-col"> 1133 <div class="item-card"> 1134 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/tipjwyjj94d3rg49ytsyz6tw')"></div> 1135 <h4>Ultimate Guide to Selling Your House in Raleigh, NC</h4> 1136 <p class="date"> 1137 October 30, 2024 1138 </p> 1139 <p class="sub-title"> 1140 Navigating the Raleigh Real Estate Market with Confidence. 1141 </p> 1142 <div class="read-wrapper"> 1143 <a href="/blogs/ultimate-guide-to-selling-your-house-in-raleigh-nc" class="hyperlink-style-1">Read</a> 1144 </div> 1145 </div> 1146 </div> 1147 <div class="layout-col"> 1148 <div class="item-card"> 1149 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/uqlkeab3x92eu0qtngoxmvy0')"></div> 1150 <h4>Buying a Home in Raleigh, NC</h4> 1151 <p class="date"> 1152 October 30, 2024 1153 </p> 1154 <p class="sub-title"> 1155 Your Guide to Finding the Perfect Home in Raleigh. 1156 </p> 1157 <div class="read-wrapper"> 1158 <a href="/blogs/buying-a-home-in-raleigh-nc" class="hyperlink-style-1">Read</a> 1159 </div> 1160 </div> 1161 </div> 1162 <div class="layout-col"> 1163 <div class="item-card"> 1164 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/sco5fw73gsf0gi8ds4law12p')"></div> 1165 <h4>How to Spot Up-and-Coming Neighborhoods Before They Boom</h4> 1166 <p class="date"> 1167 August 22, 2024 1168 </p> 1169 <p class="sub-title"> 1170 Hereâs a comprehensive guide to spotting these hidden gems before they boom. 1171 </p> 1172 <div class="read-wrapper"> 1173 <a href="/blogs/spot-up-and-coming-neighborhoods" class="hyperlink-style-1">Read</a> 1174 </div> 1175 </div> 1176 </div> 1177 <div class="layout-col"> 1178 <div class="item-card"> 1179 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/fe64hbmi3ws87o2z6zbbk0ln')"></div> 1180 <h4>Renovate or Relocate? What to Consider Before You Decide</h4> 1181 <p class="date"> 1182 August 11, 2024 1183 </p> 1184 <p class="sub-title"> 1185 To help you make an informed choice, let's explore the key factors you should consider. 1186 </p> 1187 <div class="read-wrapper"> 1188 <a href="/blogs/what-to-consider-before-you-decide" class="hyperlink-style-1">Read</a> 1189 </div> 1190 </div> 1191 </div> 1192 <div class="layout-col"> 1193 <div class="item-card"> 1194 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=
11941280/https://media-production.lp-cdn.com/media/fw8lmgr3wl64rjq7jf17od8h')"></div> 1195 <h4>6 Signs A Home Might Be "The One"</h4> 1196 <p class="date"> 1197 July 29, 2024 1198 </p> 1199 <p class="sub-title"> 1200 It's fine to make a conscious decision that the pros of a place outweigh its cons. 1201 </p> 1202 <div class="read-wrapper"> 1203 <a href="/blogs/6-signs-a-home-might-be-the-one" class="hyperlink-style-1">Read</a> 1204 </div> 1205 </div> 1206 </div> 1207 <div class="layout-col"> 1208 <div class="item-card"> 1209 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/y8lpzv4836tgcbxgtzw9w8yn')"></div> 1210 <h4>The 5 Top Home Buyer Turn-Offs of 2018</h4> 1211 <p class="date"> 1212 July 29, 2024 1213 </p> 1214 <p class="sub-title"> 1215 You can't turn a rancher into a Victorian â so don't bother trying. 1216 </p> 1217 <div class="read-wrapper"> 1218 <a href="/blogs/the-5-top-home-buyer-turn-offs-of-2018" class="hyperlink-style-1">Read</a> 1219 </div> 1220 </div> 1221 </div> 1222 <div class="layout-col"> 1223 <div class="item-card"> 1224 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/e66dtr3993av6whz26ot2htr')"></div> 1225 <h4>5 Secret Sources of Down Payment Money</h4> 1226 <p class="date"> 1227 July 29, 2024 1228 </p> 1229 <p class="sub-title"> 1230 Don't underestimate the amount of cash you can bring in from the things you already own. 1231 </p> 1232 <div class="read-wrapper"> 1233 <a href="/blogs/5-secret-sources-of-down-payment-money" class="hyperlink-style-1">Read</a> 1234 </div> 1235 </div> 1236 </div> 1237 <div class="layout-col"> 1238 <div class="item-card"> 1239 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/di7djabr78kwyyj3av36mzal')"></div> 1240 <h4>The Right (And Wrong) Way To Host & Attend Open Houses</h4> 1241 <p class="date"> 1242 July 26, 2024 1243 </p> 1244 <p class="sub-title"> 1245 We took a few stories from Andrew Dorn to show you the right (and wrong) way to host and attend open houses. 1246 </p> 1247 <div class="read-wrapper"> 1248 <a href="/blogs/way-to-host-and-attend-open-houses" class="hyperlink-style-1">Read</a> 1249 </div> 1250 </div> 1251 </div> 1252 <div class="layout-col"> 1253 <div class="item-card"> 1254 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/h1cqr6rplppyzqwkfgkpy5yu')"></div> 1255 <h4>How Long You Should Live In Your Home Before You Sell It</h4> 1256 <p class="date"> 1257 July 26, 2024 1258 </p> 1259 <p class="sub-title"> 1260 Before you make any rash decisions, we put together a few of the most important factors that you should be aware of. 1261 </p> 1262 <div class="read-wrapper"> 1263 <a href="/blogs/live-in-your-home-before-you-sell-it" class="hyperlink-style-1">Read</a> 1264 </div> 1265 </div> 1266 </div> 1267 <div class="layout-col"> 1268 <div class="item-card"> 1269 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/jtszdm9o7vandzsp33rq0pu5')"></div> 1270 <h4>The Best Places To See The Holiday Lights in North America</h4> 1271 <p class="date"> 1272 July 26, 2024 1273 </p> 1274 <p class="sub-title"> 1275 We love seeing all of the gorgeous lights and decorations all over North America. 1276 </p> 1277 <div class="read-wrapper"> 1278 <a href="/blogs/best-places-to-see-the-holiday-lights" class="hyperlink-style-1">Read</a> 1279 </div> 1280 </div> 1281 </div> 1282 <div class="layout-col"> 1283 <div class="item-card"> 1284 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/ii72cx216vmg0nraf92v13k6')"></div> 1285 <h4>Pros & Cons of Listing Your Home in the Winter</h4> 1286 <p class="date"> 1287 July 26, 2024 1288 </p> 1289 <p class="sub-title"> 1290 Despite the cold temps and occasional snow, winter is a great time to sell your home in the Triangle! Or is it? 1291 </p> 1292 <div class="read-wrapper"> 1293 <a href="/blogs/listing-your-home-in-the-winter" class="hyperlink-style-1">Read</a> 1294 </div> 1295 </div> 1296 </div> 1297 <div class="layout-col"> 1298 <div class="item-card"> 1299 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/olaq2vfaa1r8yzsazkb308hb')"></div> 1300 <h4>The Pros and Cons of Buying a Foreclosed Home</h4> 1301 <p class="date"> 1302 July 26, 2024 1303 </p> 1304 <p class="sub-title"> 1305 Buying a foreclosed home can be an excellent way to get a great deal, but itâs not without risks. 1306 </p> 1307 <div class="read-wrapper"> 1308 <a href="/blogs/buying-a-foreclosed-home" class="hyperlink-style-1">Read</a> 1309 </div> 1310 </div> 1311 </div> 1312 <div class="layout-col"> 1313 <div class="item-card"> 1314 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/lcyrlx78uqwmiezj5mn9f6wm')"></div> 1315 <h4>How to Price Your Home Without Leaving Money on the Table</h4> 1316 <p class="date"> 1317 July 25, 2024 1318 </p> 1319 <p class="sub-title"> 1320 If you want to sell your home in the coming months, you'll be wondering about pricing your home correctly. 1321 </p> 1322 <div class="read-wrapper"> 1323 <a href="/blogs/price-your-home-without-leaving-money" class="hyperlink-style-1">Read</a> 1324 </div> 1325 </div> 1326 </div> 1327 <div class="layout-col"> 1328 <div class="item-card"> 1329 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/oybb8su7n8zi2fyytu5dvco1')"></div> 1330 <h4>How Pumpkin Spice Lattes and Home Values Are Connected</h4> 1331 <p class="date"> 1332 July 24, 2024 1333 </p> 1334 <p class="sub-title"> 1335 For home buyers, buying a home thatâs close to a Starbucks actually could be very important. 1336 </p> 1337 <div class="read-wrapper"> 1338 <a href="/blogs/pumpkin-spice-lattes-and-home-values" class="hyperlink-style-1">Read</a> 1339 </div> 1340 </div> 1341 </div> 1342 <div class="layout-col"> 1343 <div class="item-card"> 1344 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=
13441280/https://media-production.lp-cdn.com/media/ra5b1vprai3xlol1adidf3j4')"></div> 1345 <h4>Are Buyers In the Driverâs Seat Again? And What That Could Mean For You</h4> 1346 <p class="date"> 1347 July 24, 2024 1348 </p> 1349 <p class="sub-title"> 1350 We'd love to help you decide if now is the time to begin the home buying process. 1351 </p> 1352 <div class="read-wrapper"> 1353 <a href="/blogs/are-buyers-in-the-drivers-seat-again" class="hyperlink-style-1">Read</a> 1354 </div> 1355 </div> 1356 </div> 1357 <div class="layout-col"> 1358 <div class="item-card"> 1359 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/f73hl0pl6t9cy8pt03ca9rat')"></div> 1360 <h4>How Has the Market Shift Impacted Your Homeâs Value?</h4> 1361 <p class="date"> 1362 July 24, 2024 1363 </p> 1364 <p class="sub-title"> 1365 Dive into what's really happening to U.S. real estate beyond the sensationalist headlines. 1366 </p> 1367 <div class="read-wrapper"> 1368 <a href="/blogs/how-market-shift-impacted-your-home" class="hyperlink-style-1">Read</a> 1369 </div> 1370 </div> 1371 </div> 1372 <div class="layout-col"> 1373 <div class="item-card"> 1374 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/nqd1e40uosxwiain1xfs03rp')"></div> 1375 <h4>Price Cuts Are on the Rise. Sell Your Home for Top Dollar With These 7 Tips</h4> 1376 <p class="date"> 1377 July 24, 2024 1378 </p> 1379 <p class="sub-title"> 1380 Here are seven proven tips to help you get top dollar for your home. 1381 </p> 1382 <div class="read-wrapper"> 1383 <a href="/blogs/sell-your-home-for-top-dollar" class="hyperlink-style-1">Read</a> 1384 </div> 1385 </div> 1386 </div> 1387 <div class="layout-col"> 1388 <div class="item-card"> 1389 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/w5sb6vyuzwct8wg5qtoy8adz')"></div> 1390 <h4>DIY Home Decor Trends for the New Year (Including 2023 Colors of the Year!)</h4> 1391 <p class="date"> 1392 July 24, 2024 1393 </p> 1394 <p class="sub-title"> 1395 Trendy home design can go a long way toward making your property irresistible to buyers in 2023. 1396 </p> 1397 <div class="read-wrapper"> 1398 <a href="/blogs/diy-home-decor-trends-for-the-new-year" class="hyperlink-style-1">Read</a> 1399 </div> 1400 </div> 1401 </div> 1402 <div class="layout-col"> 1403 <div class="item-card"> 1404 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/x0vgmccwkbrpilziz85eppx7')"></div> 1405 <h4>5 New Yearâs Resolutions for First-Time Homebuyers</h4> 1406 <p class="date"> 1407 July 24, 2024 1408 </p> 1409 <p class="sub-title"> 1410 If your 2023 goals include buying a home for the first time, we suggest you make the following 5 resolutions. 1411 </p> 1412 <div class="read-wrapper"> 1413 <a href="/blogs/new-years-resolutions-for-homebuyers" class="hyperlink-style-1">Read</a> 1414 </div> 1415 </div> 1416 </div> 1417 <div class="layout-col"> 1418 <div class="item-card"> 1419 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/uhv4fdnl13zsi88vpibx1n0d')"></div> 1420 <h4>Never Leave Money on the Table: Get a Lower Mortgage Rate</h4> 1421 <p class="date"> 1422 July 23, 2024 1423 </p> 1424 <p class="sub-title"> 1425 As interest rates rise, lenders are forced to increase their own mortgage rates to protect their profits. 1426 </p> 1427 <div class="read-wrapper"> 1428 <a href="/blogs/get-a-lower-mortgage-rate" class="hyperlink-style-1">Read</a> 1429 </div> 1430 </div> 1431 </div> 1432 <div class="layout-col"> 1433 <div class="item-card"> 1434 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/uv0h3kh1qrx0d8sid8wylexe')"></div> 1435 <h4>What Would a Recession Mean for Real Estate in 2023?</h4> 1436 <p class="date"> 1437 July 23, 2024 1438 </p> 1439 <p class="sub-title"> 1440 Where is the economy headed in 2023? Here are opinions from top economic experts. 1441 </p> 1442 <div class="read-wrapper"> 1443 <a href="/blogs/recession-for-real-estate-in-2023" class="hyperlink-style-1">Read</a> 1444 </div> 1445 </div> 1446 </div> 1447 <div class="layout-col"> 1448 <div class="item-card"> 1449 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/mst5xixmg1p2kxl7c2avf80e')"></div> 1450 <h4>May is the Best Month to Sell a Home</h4> 1451 <p class="date"> 1452 July 23, 2024 1453 </p> 1454 <p class="sub-title"> 1455 A greater number of buyers in the market makes it easier for your property to find its perfect match. 1456 </p> 1457 <div class="read-wrapper"> 1458 <a href="/blogs/may-is-the-best-month-to-sell-a-home" class="hyperlink-style-1">Read</a> 1459 </div> 1460 </div> 1461 </div> 1462 <div class="layout-col"> 1463 <div class="item-card"> 1464 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/j8dn2cdmn1o4xjtb0frxnd5x')"></div> 1465 <h4>May 2023 Triangle Market Update</h4> 1466 <p class="date"> 1467 July 23, 2024 1468 </p> 1469 <p class="sub-title"> 1470 Our May 2023 market report showcases everything you need to know about local real estate trends. 1471 </p> 1472 <div class="read-wrapper"> 1473 <a href="/blogs/may-2023-triangle-market-update" class="hyperlink-style-1">Read</a> 1474 </div> 1475 </div> 1476 </div> 1477 <div class="layout-col"> 1478 <div class="item-card"> 1479 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/g43qik7uy1uyt4cgmaiwfhlr')"></div> 1480 <h4>Mid-Year Home Price Predictions From the Experts</h4> 1481 <p class="date"> 1482 July 23, 2024 1483 </p> 1484 <p class="sub-title"> 1485 Although demand is lukewarm, itâs still greater than the supply of available houses. 1486 </p> 1487 <div class="read-wrapper"> 1488 <a href="/blogs/mid-year-home-price-predictions" class="hyperlink-style-1">Read</a> 1489 </div> 1490 </div> 1491 </div> 1492 <div class="layout-col"> 1493 <div class="item-card"> 1494 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/y0ifbvdx8zjp3dih84pvuwmt')"></div> 1495 <h4>Thanksgiving Decor Tips to Match Your Home's Signature Style</h4> 1496 <p class="date"> 1497 July 22, 2024 1498 </p> 1499 <p class="sub-title"> 1500 Take the Thanksgiving decor tips for a spin to make your home spectacular for the holiday. 1501 </p> 1502 <div class="read-wrapper"> 1503 <a href="/blogs/thanksgiving-decor-tips" class="hyperlink-style-1">Read</a> 1504 </div> 1505 </div> 1506 </div> 1507 <div class="layout-col"> 1508 <div class="item-card"> 1509 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/qwsxeq8yvdsknd9z7531x8t4')"></div> 1510 <h4>3 Pro Home Pricing Strategies That Pay</h4> 1511 <p class="date"> 1512 July 22, 2024 1513 </p> 1514 <p class="sub-title"> 1515 Weâll delve into three proven pricing strategies that can make a significant difference in your home selling journey. 1516 </p> 1517 <div class="read-wrapper"> 1518 <a href="/blogs/3-pro-home-pricing-strategies-that-pay" class="hyperlink-style-1">Read</a> 1519 </div> 1520 </div> 1521 </div> 1522 <div class="layout-col"> 1523 <div class="item-card"> 1524 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/wa5yf69ww954jncunxcn3c7g')"></div> 1525 <h4>First Time Home Seller? Avoid These Mistakes</h4> 1526 <p class="date"> 1527 July 14, 2024 1528 </p> 1529 <p class="sub-title"> 1530 We'll explore some common pitfalls that first-time home sellers should avoid to ensure a smooth and successful sale. 1531 </p> 1532 <div class="read-wrapper"> 1533 <a href="/blogs/first-time-home-seller-avoid-these" class="hyperlink-style-1">Read</a> 1534 </div> 1535 </div> 1536 </div> 1537 <div class="layout-col"> 1538 <div class="item-card"> 1539 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/cuurxar0v3s9fh7yxu1uiwpx')"></div> 1540 <h4>Vacation Home Investments: Is Summer the Right Time to Buy?</h4> 1541 <p class="date"> 1542 June 27, 2024 1543 </p> 1544 <p class="sub-title"> 1545 What are the pros and cons of buying a vacation home during the summer months? Letâs check it out. 1546 </p> 1547 <div class="read-wrapper"> 1548 <a href="/blogs/is-summer-the-right-time-to-buy" class="hyperlink-style-1">Read</a> 1549 </div> 1550 </div> 1551 </div> 1552 <div class="layout-col"> 1553 <div class="item-card"> 1554 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/qaauwdenzabse9jpsvdk')"></div> 1555 <h4>The Pros and Cons of Buying a Home in June</h4> 1556 <p class="date"> 1557 June 16, 2024 1558 </p> 1559 <p class="sub-title"> 1560 Buying a home is a significant milestone filled with excitement and anticipation. 1561 </p> 1562 <div class="read-wrapper"> 1563 <a href="/blogs/pros-and-cons-of-buying-a-home-in-june" class="hyperlink-style-1">Read</a> 1564 </div> 1565 </div> 1566 </div> 1567 <div class="layout-col"> 1568 <div class="item-card"> 1569 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/u4iwj2hkgbcnj08vmof83xyt')"></div> 1570 <h4>5 Sustainable Home Trends for Eco-Conscious Homeowners</h4> 1571 <p class="date"> 1572 May 12, 2024 1573 </p> 1574 <p class="sub-title"> 1575 How can sustainable home trends and updates significantly increase your property value? 1576 </p> 1577 <div class="read-wrapper"> 1578 <a href="/blogs/5-sustainable-home-trends" class="hyperlink-style-1">Read</a> 1579 </div> 1580 </div> 1581 </div> 1582 <div class="layout-col"> 1583 <div class="item-card"> 1584 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/x8rcglgxaltwhw7b3tjevjfr')"></div> 1585 <h4>Adventure Awaits! Explore Homes Anytime, Anywhere with Virtual Tours</h4> 1586 <p class="date"> 1587 April 28, 2024 1588 </p> 1589 <p class="sub-title"> 1590 Embark on an adventure of a lifetime with virtual tours â the ultimate tool for modern home buyers. 1591 </p> 1592 <div class="read-wrapper"> 1593 <a href="/blogs/explore-homes-with-virtual-tours" class="hyperlink-style-1">Read</a> 1594 </div> 1595 </div> 1596 </div> 1597 <div class="layout-col"> 1598 <div class="item-card"> 1599 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/feci3wthau885rgen4fiqaqu')"></div> 1600 <h4>Plant a Tree, Boost Your Home Value</h4> 1601 <p class="date"> 1602 April 14, 2024 1603 </p> 1604 <p class="sub-title"> 1605 Trees are a wise investment that will continue to yield returns for years to come. 1606 </p> 1607 <div class="read-wrapper"> 1608 <a href="/blogs/plant-a-tree-boost-your-home-value" class="hyperlink-style-1">Read</a> 1609 </div> 1610 </div> 1611 </div> 1612 <div class="layout-col"> 1613 <div class="item-card"> 1614 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/smjkc8q27772w0d13miis522')"></div> 1615 <h4>The Spring Effect: How Seasonality Impacts Home Prices</h4> 1616 <p class="date"> 1617 March 17, 2024 1618 </p> 1619 <p class="sub-title"> 1620 As spring arrives, it brings not only blooming flowers and warmer weather, but also a shift in the real estate market. 1621 </p> 1622 <div class="read-wrapper"> 1623 <a href="/blogs/how-seasonality-impacts-home-prices" class="hyperlink-style-1">Read</a> 1624 </div> 1625 </div> 1626 </div> 1627 <div class="layout-col"> 1628 <div class="item-card"> 1629 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/evr9tmgi2j6tna6b5suslnlj')"></div> 1630 <h4>Home Sellers: What is Virtual Staging and Does It Work?</h4> 1631 <p class="date"> 1632 March 5, 2024 1633 </p> 1634 <p class="sub-title"> 1635 Let's delve into this pioneering solution and assess its potential impact on your home sale. 1636 </p> 1637 <div class="read-wrapper"> 1638 <a href="/blogs/virtual-staging-and-does-it-work" class="hyperlink-style-1">Read</a> 1639 </div> 1640 </div> 1641 </div> 1642 <div class="layout-col"> 1643 <div class="item-card"> 1644 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/hho0lnc4loszb88csgcnd6th')"></div> 1645 <h4>Spring Cleaning Doesn't Have to Be a Bummer</h4> 1646 <p class="date"> 1647 February 20, 2024 1648 </p> 1649 <p class="sub-title"> 1650 With the right approach, it can be a rewarding experience that leaves your home looking and feeling better than ever. 1651 </p> 1652
1652 <div class="read-wrapper"> 1653 <a href="/blogs/cleaning-doesnt-have-to-be-a-bummer" class="hyperlink-style-1">Read</a> 1654 </div> 1655 </div> 1656 </div> 1657 <div class="layout-col"> 1658 <div class="item-card"> 1659 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/hm0y9p7j0n1f8rmml0198guc')"></div> 1660 <h4>7 Real Estate Negotiation Tactics That Work</h4> 1661 <p class="date"> 1662 February 4, 2024 1663 </p> 1664 <p class="sub-title"> 1665 Effective negotiation tactics can make or break a home sale, even in a great situation. 1666 </p> 1667 <div class="read-wrapper"> 1668 <a href="/blogs/real-estate-negotiation-tactics" class="hyperlink-style-1">Read</a> 1669 </div> 1670 </div> 1671 </div> 1672 <div class="layout-col"> 1673 <div class="item-card"> 1674 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/a7r1dwta2lirtdbislf3pg2f')"></div> 1675 <h4>Everything You Need to Know About Home Appraisals</h4> 1676 <p class="date"> 1677 January 15, 2024 1678 </p> 1679 <p class="sub-title"> 1680 Understanding the home appraisal process is essential for every home seller. 1681 </p> 1682 <div class="read-wrapper"> 1683 <a href="/blogs/you-need-to-know-about-home-appraisals" class="hyperlink-style-1">Read</a> 1684 </div> 1685 </div> 1686 </div> 1687 <div class="layout-col"> 1688 <div class="item-card"> 1689 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/wc0dyxrxx75zf6gco3cnl0r7')"></div> 1690 <h4>Winter Home Selling Tips From the Pros</h4> 1691 <p class="date"> 1692 January 1, 2024 1693 </p> 1694 <p class="sub-title"> 1695 Here are some winter home selling tips from the pros to guide you through this season. 1696 </p> 1697 <div class="read-wrapper"> 1698 <a href="/blogs/winter-home-selling-tips-from-the-pros" class="hyperlink-style-1">Read</a> 1699 </div> 1700 </div> 1701 </div> 1702 <div class="layout-col"> 1703 <div class="item-card"> 1704 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/peyv8iaska9v7j6mjiaqogd0')"></div> 1705 <h4>Innovative Financing Options for Affordable Housing</h4> 1706 <p class="date"> 1707 December 17, 2023 1708 </p> 1709 <p class="sub-title"> 1710 Creative approaches that can help bridge the gap and make affordable housing a reality for more people. 1711 </p> 1712 <div class="read-wrapper"> 1713 <a href="/blogs/innovative-financing-options" class="hyperlink-style-1">Read</a> 1714 </div> 1715 </div> 1716 </div> 1717 <div class="layout-col"> 1718 <div class="item-card"> 1719 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/zopvehkue23h0kho92fx7d7g')"></div> 1720 <h4>Luxury Real Estate in 2024: What High-End Buyers Are Looking For</h4> 1721 <p class="date"> 1722 December 3, 2023 1723 </p> 1724 <p class="sub-title"> 1725 The future of luxury real estate promises to be as dynamic as it is opulent. 1726 </p> 1727 <div class="read-wrapper"> 1728 <a href="/blogs/what-high-end-buyers-are-looking-for" class="hyperlink-style-1">Read</a> 1729 </div> 1730 </div> 1731 </div> 1732 <div class="layout-col"> 1733 <div class="item-card"> 1734 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/uzamfg51oaspwgu6on9a0c02')"></div> 1735 <h4>The Housing Market is Split. Hereâs Why.</h4> 1736 <p class="date"> 1737 October 29, 2023 1738 </p> 1739 <p class="sub-title"> 1740 If youâve had any confusion about the real estate market in the last year, youâre not alone. 1741 </p> 1742 <div class="read-wrapper"> 1743 <a href="/blogs/the-housing-market-is-split" class="hyperlink-style-1">Read</a> 1744 </div> 1745 </div> 1746 </div> 1747 <div class="layout-col"> 1748 <div class="item-card"> 1749 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/h6eq5ikj47iyk462kuel6sx8')"></div> 1750 <h4>The Features That Sell a House in 2023</h4> 1751 <p class="date"> 1752 October 15, 2023 1753 </p> 1754 <p class="sub-title"> 1755 As years change and trends come and go with evolving lifestyles, buyer priorities also fluctuate. 1756 </p> 1757 <div class="read-wrapper"> 1758 <a href="/blogs/the-features-that-sell-a-house-in-2023" class="hyperlink-style-1">Read</a> 1759 </div> 1760 </div> 1761 </div> 1762 <div class="layout-col"> 1763 <div class="item-card"> 1764 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/nqf33dry8lfhvkyz6ak6zb36')"></div> 1765 <h4>The Top 3 Things to Consider When Buying a Home</h4> 1766 <p class="date"> 1767 October 1, 2023 1768 </p> 1769 <p class="sub-title"> 1770 Simplifying is easy, and you can do it by prioritizing these top three considerations. 1771 </p> 1772 <div class="read-wrapper"> 1773 <a href="/blogs/things-to-consider-when-buying-a-home" class="hyperlink-style-1">Read</a> 1774 </div> 1775 </div> 1776 </div> 1777 <div class="layout-col"> 1778 <div class="item-card"> 1779 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/l3il0k1qcul9zxo8ynfwr4au')"></div> 1780 <h4>10 Ways to Make Your Fall Open House Extra-Cozy</h4> 1781 <p class="date"> 1782 September 17, 2023 1783 </p> 1784 <p class="sub-title"> 1785 This autumn, use these 10 tips to make your fall open house extra-cozy and bring the offers rolling in. 1786 </p> 1787 <div class="read-wrapper"> 1788 <a href="/blogs/make-your-fall-open-house-extra-cozy" class="hyperlink-style-1">Read</a> 1789 </div> 1790 </div> 1791 </div> 1792 <div class="layout-col"> 1793 <div class="item-card"> 1794 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/j76nwk7xsl10k47raezk4a62')"></div> 1795 <h4>Which Mortgage is Right for You?</h4> 1796 <p class="date"> 1797 September 4, 2023 1798 </p> 1799 <p class="sub-title"> 1800 By taking the time to choose the right mortgage, you can make the process a little bit easier. 1801 </p> 1802 <div class="read-wrapper"> 1803 <a href="/blogs/which-mortgage-is-right-for-you" class="hyperlink-style-1">Read</a> 1804 </div> 1805 </div> 1806 </div> 1807 <div class="layout-col"> 1808 <div class="item-card"> 1809 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/y27ilrqm7gtnw9c0k9rf7qrn')"></div> 1810 <h4>Inflation is Slowing. Whatâs Next for Mortgage Rates?</h4> 1811 <p class="date"> 1812 August 13, 2023 1813 </p> 1814 <p class="sub-title"> 1815 Recent data supports that weâre headed in that directionâbut industries have felt the force of higher interest rates. 1816 </p> 1817 <div class="read-wrapper"> 1818 <a href="/blogs/whats-next-for-mortgage-rates" class="hyperlink-style-1">Read</a> 1819 </div> 1820 </div> 1821 </div> 1822 <div class="layout-col"> 1823 <div class="item-card"> 1824 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/ygk1k6cs6cs5ri22ad9eqyyq')"></div> 1825 <h4>Donât Miss Your Chance to Move This Summer</h4> 1826 <p class="date"> 1827 July 17, 2023 1828 </p> 1829 <p class="sub-title"> 1830 Take advantage of the summer sun and quick home sales to get into a
1830new home before the season is out. 1831 </p> 1832 <div class="read-wrapper"> 1833 <a href="/blogs/dont-miss-your-chance-to-move" class="hyperlink-style-1">Read</a> 1834 </div> 1835 </div> 1836 </div> 1837 <div class="layout-col"> 1838 <div class="item-card"> 1839 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/bx69liijuf9vo8x47vjqecqs')"></div> 1840 <h4>New Construction vs. Existing Home: Which One is For You?</h4> 1841 <p class="date"> 1842 June 20, 2023 1843 </p> 1844 <p class="sub-title"> 1845 Prioritize which aspects are most important to you, and see which one matches up. 1846 </p> 1847 <div class="read-wrapper"> 1848 <a href="/blogs/new-construction-vs-existing-home" class="hyperlink-style-1">Read</a> 1849 </div> 1850 </div> 1851 </div> 1852 <div class="layout-col"> 1853 <div class="item-card"> 1854 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/i3eol8ybxarny5c2yfhju4w4')"></div> 1855 <h4>Smart Home Technologies That Increase Home Value</h4> 1856 <p class="date"> 1857 June 11, 2023 1858 </p> 1859 <p class="sub-title"> 1860 These smart technologies can add thousands to your homeâs value, and theyâll also improve your quality of life. 1861 </p> 1862 <div class="read-wrapper"> 1863 <a href="/blogs/technologies-that-increase-home-value" class="hyperlink-style-1">Read</a> 1864 </div> 1865 </div> 1866 </div> 1867 <div class="layout-col"> 1868 <div class="item-card"> 1869 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/q60ep7r9p4jg4x2gxjkxpedp')"></div> 1870 <h4>Top 10 Real Estate Terms Sellers Should Know</h4> 1871 <p class="date"> 1872 May 29, 2023 1873 </p> 1874 <p class="sub-title"> 1875 Real estate terminology can be confusingâbut it doesnât have to be. 1876 </p> 1877 <div class="read-wrapper"> 1878 <a href="/blogs/real-estate-terms-sellers-should-know" class="hyperlink-style-1">Read</a> 1879 </div> 1880 </div> 1881 </div> 1882 <div class="layout-col"> 1883 <div class="item-card"> 1884 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/eh5v5muxq41x6o39p2ar00zn')"></div> 1885 <h4>How to Navigate the Housing Affordability Crisis</h4> 1886 <p class="date"> 1887 May 23, 2023 1888 </p> 1889 <p class="sub-title"> 1890 Many factors play into how expensive it is to get housing, whether youâre renting or trying to buy your own home. 1891 </p> 1892 <div class="read-wrapper"> 1893 <a href="/blogs/navigate-housing-affordability-crisis" class="hyperlink-style-1">Read</a> 1894 </div> 1895 </div> 1896 </div> 1897 <div class="layout-col"> 1898 <div class="item-card"> 1899 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/zd8v0k8dr5bhomlo6i501egp')"></div> 1900 <h4>Ask These 8 Questions Before Hiring a Real Estate Agent</h4> 1901 <p class="date"> 1902 May 14, 2023 1903 </p> 1904 <p class="sub-title"> 1905 Theyâll make your transaction smoother and your life easier while getting you a great deal. 1906 </p> 1907 <div class="read-wrapper"> 1908 <a href="/blogs/before-hiring-a-real-estate-agent" class="hyperlink-style-1">Read</a> 1909 </div> 1910 </div> 1911 </div> 1912 <div class="layout-col"> 1913 <div class="item-card"> 1914 <div class="img" style="background-image: url('https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/uj8uz0oe097lmlayfat6aucc')"></div> 1915 <h4>First-Time Homebuyer? Do This, Not That</h4> 1916 <p class="date"> 1917 April 24, 2023 1918 </p> 1919 <p class="sub-title"> 1920 Youâre likely to live in the home you buy for several years at least, so you want to make sure itâs the right one. 1921 </p> 1922 <div class="read-wrapper"> 1923 <a href="/blogs/first-time-homebuyer-do-this" class="hyperlink-style-1">Read</a> 1924 </div> 1925 </div> 1926 </div> 1927 </div> 1928 <div class="pagination-container pagination-style-1"></div> </div> 1929</div> 1930</section> 1931<section class="image-section is-font-color-dark is-background-color-light" id="section-3527620a-4185-4671-963a-8f09a3e74222" data-el-id="a261202b-cc2b-4a7e-912a-a4b8ffe6ab1b"> 1932<div class="redesign custom-content lp-vertical-paddings"> 1933 <div class="lp-container lp-container--l"> 1934 <div class="customWorkWithUs"> 1935<div class="customTitle"> 1936<div class="pretitle"> 1937<h2 class="line">Work With Us</h2> 1938</div> 1939</div> 1940<div> 1941<p>We pride ourselves in providing personalized solutions that bring our clients closer to their dream properties and enhance their long-term wealth.</p> 1942<a class="lp-btn lp-btn--filled lp-btn--big lp-btn--mob-full-width button-style-1" role="button" href="../contact">Contact Us</a></div> 1943</div> 1944 </div> 1945</div> 1946</section> 1947 1948 <div id="modals" class="modals"></div> 1949 <footer id="global-footer" class="is-font-color-dark is-background-color-light" data-el-id="59f792e9-f6a7-4a58-a19e-0af13252d19b"> 1950 <div class="wrapper"> 1951 <div class="footer"> 1952 <div class="footer-container"> 1953 <div class="footer-col1 "> 1954 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/fhragovk6rhb8mbastwr 1956w" sizes="200px" alt="Logo" class="footer-col1-logo"> 1955 1956 <div class="footer-menu"> 1957 <a href="/team" class="footer-row-link">Meet the Team</a> 1958 <a href="/properties/sale" class="footer-row-link">Featured Properties</a> 1959 <a href="/home-search/listings" class="footer-row-link">Home Search</a> 1960 <a href="/contact" class="footer-row-link">Contact Us</a> 1961 </div> 1962 <p class="footer-col1-text"> 1963 1964 <div id="ixzd"><p>Equal Housing Opportunity. This website is not the official website of The Corcoran Group or its affiliated companies, and neither The Corcoran Group nor its affiliated companies in any way warrant the accuracy of any information contained herein. Any property or services offered for sale on this website shall not be considered an offer to sell such goods or services in any state other New York.</p></div><img src="https://media-production.lp-cdn.com/media/b8339489-48a2-4e1e-9154-7946e2de2389"><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}#ixzd{padding:0px;}</style> 1965 </p> 1966 <div class="footer-col1-contacts"> 1967 <div class="footer-col1-address"> 1968 <div class="footer-col1-title"> 1969 Address 1970 </div> 1971 <div> 1972 <div id="iubq"><p>911 N West St, Suite 203<br>âââââââRaleigh NC 27603</p></div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style> 1973 </div> 1974 </div> 1975 <div class="footer-col1-contact"> 1976 <div class="footer-col1-title"> 1977 Contact 1978 </div> 1979 <div> 1980 Email: <a href="/cdn-cgi/l/email-protection#a2cbccc4cde2c6d0c7c4cbd0cf8cc1cdcf" class="hyperlink-style-1"><span class="__cf_email__" data-cfemail="6b02050d042b0f190e0d02190645080406">[email protected]</span></a> 1981 </div> 1982 <div> 1983 Phone: <a href="tel:(919) 669-7993" class="hyperlink-style-1"> (919) 669-7993</a> 1984 </div> 1985 </div> 1986 </div> 1987 1988 1989 </div> 1990 1991 <div class="footer-col2"> 1992 <div class="mobile"> 1993 </div> 1994 <h2 class="footer-col2-title"> 1995 Subscribe to our Newsletter 1996 </h2> 1997 1998 <p class="footer-col2-text"> 1999 Subscribe to our Newsletter for latest news and updates. Stay tuned! 2000 </p> 2001 2002 <form data-type="contact-form"> 2003 <div class="form-group h-pot"> 2004 <label for="-fmiddleName">Middle Name</label> 2005 <input id="-fmiddleName" name="middleName" value="" autocomplete="off" tabindex="-1"> 2006 </div> 2007 <input 2008 class="footer-col2-input-text" 2009 type="text" 2010 name="email" 2011 placeholder="Email Address" 2012 required 2013 /> 2014 <div class="lp-disclaimer"> <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label> 2015 <label class='lp-tcr-content'> 2016 <span class='lp-tcr-checkbox'> 2017 <input 2018 type='checkbox' 2019 id='-termsAccepted' 2020 name='termsAccepted' 2021 oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
2022 oninput="this.setCustomValidity('')" 2023 required 2024 /></span> 2025 <span class='lp-tcr-message'> 2026 2027 I agree to be contacted by 2028 Corcoran DeRonja Real Estate 2029 via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 2030 You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary. 2031 <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>. 2032 </span> 2033 </label> 2034 2035</div> 2036 <input 2037 class="footer-col2-input-submit button-style-1" 2038 type="submit" 2039 value="Subscribe" 2040 /> 2041 <p class="success hide"> 2042 Sent! 2043 </p> 2044 </form> 2045 2046 </div> 2047 </div> 2048 2049 <div class="footer-socialbar "> 2050 <div class="desktop"> 2051 </div> 2052 <div class="footer-socialbar-content"> 2053 <p class="footer-socialbar-text"> 2054 Social 2055 </p> 2056 <ul class="lp-socials social_icons-style-1"> 2057 2058 <li> 2059 <a 2060 href="https://www.instagram.com/corcoranderonja/" 2061 class="lp-socials__link footer-socialbar-link" 2062 data-wow-delay="0s" 2063 target="_blank" 2064 aria-label="INSTAGRAM" 2065 > 2066 <span class="lp-i lp-i--instagram" aria-hidden="true"></span> 2067 </a> 2068 </li> 2069 <li> 2070 <a 2071 href="https://www.facebook.com/drefirm" 2072 class="lp-socials__link footer-socialbar-link" 2073 data-wow-delay="0.1s" 2074 target="_blank" 2075 aria-label="FACEBOOK" 2076 > 2077 <span class="lp-i lp-i--facebook" aria-hidden="true"></span> 2078 </a> 2079 </li> 2080 <li> 2081 <a 2082 href="https://www.tiktok.com/@corcoranderonja" 2083 class="lp-socials__link footer-socialbar-link" 2084 data-wow-delay="0.2s" 2085 target="_blank" 2086 aria-label="TIKTOK" 2087 > 2088 <span class="lp-i lp-i--tiktok" aria-hidden="true"></span> 2089 </a> 2090 </li> 2091 <li> 2092 <a 2093 href="https://www.linkedin.com/company/deronja-real-estate/" 2094 class="lp-socials__link footer-socialbar-link" 2095 data-wow-delay="0.3s" 2096 target="_blank" 2097 aria-label="LINKEDIN" 2098 > 2099 <span class="lp-i lp-i--linkedin" aria-hidden="true"></span> 2100 </a> 2101 </li> 2102 <li> 2103 <a 2104 href="https://www.zillow.com/profile/DeRonjaRealEstate" 2105 class="lp-socials__link footer-socialbar-link" 2106 data-wow-delay="0.4s" 2107 target="_blank" 2108 aria-label="ZILLOW" 2109 > 2110 <span class="lp-i lp-i--zillow" aria-hidden="true"></span> 2111 </a> 2112 </li> 2113 <li> 2114 <a 2115 href="https://www.yelp.com/biz/deronja-real-estate-raleigh" 2116 class="lp-socials__link footer-socialbar-link" 2117 data-wow-delay="0.5s" 2118 target="_blank" 2119 aria-label="YELP" 2120 > 2121 <span class="lp-i lp-i--yelp" aria-hidden="true"></span> 2122 </a> 2123 </li> 2124 <li> 2125 <a 2126 href="https://www.google.com/search?q=corcoran+deronja+real+estate&sca_esv=73afc9bb409a06fd&sxsrf=AE3TifNA0tfZ3QuqXcZcSqvt6iapMjbFIg%3A1758035868842&ei=nH_JaJ-SM4ygkPIPyeOtwAQ&ved=0ahUKEwif0Nv7yd2PAxUMEEQIHclxC0gQ4dUDCBA&uact=5&oq=corcoran+deronja+real+estate&gs_lp=Egxnd3Mtd2l6LXNlcnAiHGNvcmNvcmFuIGRlcm9uamEgcmVhbCBlc3RhdGUyBBAjGCcyBBAjGCcyChAjGIAEGCcYigUyCxAuGIAEGMcBGK8BMgsQABiABBiGAxiKBTIIEAAYgAQYogQyCBAAGIAEGKIEMggQABiABBiiBDIIEAAYgAQYogQyBRAAGO8FSIgRUMQNWMQNcAF4AJABAJgBaqABaqoBAzAuMbgBA8gBAPgBAZgCAqACf8ICDhAAGIAEGLADGIYDGIoFwgILEAAYgAQYsAMYogSYAwCIBgGQBgaSBwMxLjGgB_gMsgcDMC4xuAd1wgcFMi0xLjHIBxA&sclient=gws-wiz-serp" 2127 class="lp-socials__link footer-socialbar-link" 2128 data-wow-delay="0.6s" 2129 target="_blank" 2130 aria-label="GOOGLE" 2131 >
2132 <span class="lp-i lp-i--google" aria-hidden="true"></span> 2133 </a> 2134 </li> 2135 </ul> </div> 2136 </div> 2137 2138 2139 2140 <div class="footer-row flex bottom-lp"> 2141 <div class="logo-text"> 2142 <div class="img-wrap"> 2143 <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/k7kcdv8k04tfhn01nfgt" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/k7kcdv8k04tfhn01nfgt 320w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/k7kcdv8k04tfhn01nfgt 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/k7kcdv8k04tfhn01nfgt 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1920/https://media-production.lp-cdn.com/media/k7kcdv8k04tfhn01nfgt 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=2560/https://media-production.lp-cdn.com/media/k7kcdv8k04tfhn01nfgt 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/k7kcdv8k04tfhn01nfgt 3456w" alt=""> 2144 </div> 2145 <div class="by">Website designed and developed by <a class="link hyperlink-style-1 luxury-link" href="https://www.luxurypresence.com/" target="_blank">Luxury Presence</a></div> 2146 </div> 2147 <div> 2148 © Copyright <span class="auto-year-update">2026</span> | <a class="link hyperlink-style-1" href="/terms-and-conditions">Privacy Policy</a> 2149 </div> 2150 </div> 2151 2152 2153 </div> 2154 2155 2156 2157 2158</div> 2159 </footer> 2160 2161 2162 <div id="qualifying-questions-modal" tabindex="-1" role="dialog" aria-modal="true" aria-labelledby="qualifying-questions-modal-title" aria-hidden="true" style="position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 1050; display: none; align-items: center; justify-content: center;"> 2163 <style> 2164 #qualifying-questions-modal .custom-select-toggle { 2165 border: 1px solid #848484; 2166 border-radius: 8px; 2167 padding: 12px 16px; 2168 } 2169 2170 #qualifying-questions-modal .custom-select-toggle.is-placeholder { 2171 color: #848484; 2172 } 2173 2174 #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder { 2175 color: #848484; 2176 opacity: 1; 2177 } 2178 2179 #qualifying-questions-modal .disclaimer-more { 2180 display: none; 2181 } 2182 2183 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more { 2184 display: inline; 2185 } 2186 2187 #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis { 2188 display: none; 2189 } 2190 </style>
vendor: 119 bytes, lines 2190-2191
2190 2191 <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
2191<script> 2192 function toggleDisclaimerQualifyingQuestionsModal() { 2193 const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text'); 2194 const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer'); 2195 2196 if (disclaimerText.classList.contains('collapsed')) { 2197 disclaimerText.classList.remove('collapsed'); 2198 toggleButton.textContent = 'Read less'; 2199 toggleButton.setAttribute('aria-expanded', 'true'); 2200 } else { 2201 disclaimerText.classList.add('collapsed'); 2202 toggleButton.textContent = 'Read more'; 2203 toggleButton.setAttribute('aria-expanded', 'false'); 2204 } 2205 } 2206 </script>
2206 2207 <div style="max-width: 400px; width: 95%; margin: 0 auto;"> 2208 <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;"> 2209 <button type="button" data-dismiss="modal" aria-label="Close" style="position: absolute; right: 20px; top: 10px; font-size: 28px; font-weight: 300; color: black; opacity: 1; background: none; border: none; padding: 0; width: auto; height: auto; cursor: pointer; z-index: 10;"> 2210 <span aria-hidden="true">×</span> 2211 </button> 2212 <div style="padding: 40px 30px 32px;"> 2213 <div style="text-align: left; margin-bottom: 32px;"> 2214 <h2 id="qualifying-questions-modal-title" style="margin: 0; color: #333; font-size: 18px; line-height: 1.4; text-transform: uppercase; letter-spacing: 0.5px; font-weight: normal;"> 2215 Thanks, please provide more information to help serve you 2216 </h2> 2217 </div> 2218 <form id="qualifying-questions-modal-form" data-type="contact-form"> 2219 <input type="hidden" name="source" value="PROFILE_UPDATE" /> 2220 <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" /> 2221 <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" /> 2222 <label for="qualifying-questions-modal-email" style="display:none;"> 2223 Email 2224 </label> 2225 <label for="qualifying-questions-modal-triggerSource" style="display:none;"> 2226 Trigger Source 2227 </label> 2228 2229 <div style="margin-bottom: 20px;"> 2230 <label for="qualifying-questions-modal-phoneNumber" style="display:none;"> 2231 Phone Number 2232 </label> 2233 <input 2234 type="tel" 2235 id="qualifying-questions-modal-phoneNumber" 2236 name="phoneNumber" 2237 style="padding: 12px 16px; font-size: 16px; border: 1px solid #848484; border-radius: 8px; background: transparent; color: black; width: 100%; box-sizing: border-box; outline: none;" 2238 pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$" 2239 required 2240 placeholder="Phone" 2241 aria-label="Phone Number" 2242 inputmode="tel" 2243 autocomplete="tel" 2244 onfocus="this.style.borderColor='black';" 2245 onblur="this.style.borderColor='#848484';" 2246 /> 2247 </div> 2248 2249 <div style="margin-bottom: 20px;"> 2250 <label for="qualifying-questions-modal-interest" style="display:none;"> 2251 Interest 2252 </label> 2253 <select 2254 id="qualifying-questions-modal-interest" 2255 name="interest" 2256 required 2257 data-label="Interest" 2258 aria-label="Interest" 2259 style="padding: 12px 16px; font-size: 16px; border: 1px solid #848484; border-radius: 8px; background: #fff; color: #848484; width: 100%; box-sizing: border-box; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; background-image: url('data:image/svg+xml;charset=utf8,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 16 16%22%3E%3Cpath fill=%22%23666%22 d=%22M4.427 7.427l3.396 3.396a.25.25 0 00.354 0l3.396-3.396A.25.25 0 0011.396 7H4.604a.25.25 0 00-.177.427z%22/%3E%3C/svg%3E'); background-repeat: no-repeat; background-position: right 16px center; background-size: 16px;" 2260 onfocus="this.style.borderColor='black'; this.style.color='black';" 2261 onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';" 2262 > 2263 <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option> 2264 <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option> 2265 <option value="Selling" style="background: #fff; color: black;">Selling</option> 2266 <option value="Buying" style="background: #fff; color: black;">Buying</option> 2267 <option value="Renting" style="background: #fff; color: black;">Renting</option> 2268 <option value="Other" style="background: #fff; color: black;">Other</option> 2269 </select> 2270 </div> 2271 2272 <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;"> 2273 <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label> 2274 <label class='lp-tcr-content'>
2275 <span class='lp-tcr-checkbox'> 2276 <input 2277 type='checkbox' 2278 id='qualifying-questions-modal-qualifying-questions-termsAccepted' 2279 name='termsAccepted' 2280 aria-describedby='qualifying-questions-modal-disclaimer-text' 2281 oninvalid="this.setCustomValidity('Please accept the terms and conditions')" 2282 oninput="this.setCustomValidity('')" 2283 required 2284 /></span> 2285 <span class='lp-tcr-message'> 2286 <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;"> 2287 2288 I agree to be contacted by 2289 <strong>Corcoran DeRonja Real Estate</strong> 2290 via call, email, and text <span class="disclaimer-more">for real estate services. 2291 To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 2292 You can also click the unsubscribe link in the emails. 2293 Message and data rates may apply. Message frequency may vary.</span> 2294 <span class="disclaimer-ellipsis">...</span> 2295 <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>. 2296 </div> 2297 <button 2298 id="qualifying-questions-modal-toggle-disclaimer" 2299 type="button" 2300 style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;" 2301 aria-expanded="false" 2302 onclick="toggleDisclaimerQualifyingQuestionsModal()" 2303 > 2304 Read more 2305 </button> 2306 </span> 2307 </label> 2308 </div> 2309 2310 <div> 2311 <button 2312 type="submit" 2313 style="padding: 12px 24px; font-size: 16px; font-weight: normal; border-radius: 8px; border: 1px solid black; background: black; color: white; width: 100%; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; letter-spacing: 0.5px;" 2314 onmouseover="this.style.background='transparent'; this.style.color='black';" 2315 onmouseout="this.style.background='black'; this.style.color='white';" 2316 > 2317 Submit 2318 </button> 2319 </div> 2320 </form> 2321 </div> 2322 </div> 2323 </div> 2324 </div> 2325 2326
2326<script> 2327 (function() { 2328 var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy")); 2329 2330 if ("IntersectionObserver" in window && lazyVideos.length > 0) { 2331 var lazyVideoObserver = new IntersectionObserver(function(entries, observer) { 2332 entries.forEach(function(video) { 2333 if (video.isIntersecting) { 2334 for (var source in video.target.children) { 2335 var videoSource = video.target.children[source]; 2336 if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") { 2337 videoSource.src = videoSource.dataset.src; 2338 } 2339 } 2340 2341 video.target.load(); 2342 video.target.classList.remove("lazy"); 2343 lazyVideoObserver.unobserve(video.target); 2344 } 2345 }); 2346 }); 2347 2348 lazyVideos.forEach(function(lazyVideo) { 2349 lazyVideoObserver.observe(lazyVideo); 2350 }); 2351 } 2352 })(); 2353 </script>
2353 2354 2355 <!-- Global site tag (gtag.js) - Google Analytics --> 2356
2356<script defer src="https://www.googletagmanager.com/gtag/js"></script>
2356 2357 2358 <!-- Google Tag Manager --> 2359
2359<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 2360 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 2361 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src= 2362 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 2363 })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
2363 2364 <!-- End Google Tag Manager --> 2365 2366 2367 <!-- LP Tracker (divolte.js) - LP Divolte --> 2368
2368<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
2368 2369 <!-- LP Tracker (eventBus) - LP EventBus --> 2370
2370<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
2370 2371 2372
2372<script> 2373 window.dataLayer = window.dataLayer || []; 2374 document.sendGoogleTagManagerEvent = function() { 2375 /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */ 2376 if (window.navigator.globalPrivacyControl) { 2377 return; 2378 } 2379 2380 dataLayer.push(arguments); 2381 } 2382 2383 document.sendGoogleTagManagerEvent('js', new Date()); 2384 document.sendGoogleTagManagerEvent('config', 'G-HR5MDW8BF2', { page: location.pathname, location: location.href }); 2385 document.sendGoogleAnalyticsEvent = function(googleEvent) { 2386 document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, { 2387 event_category: googleEvent.eventCategory, 2388 event_label: googleEvent.eventLabel, 2389 value: googleEvent.eventValue, 2390 page: googleEvent.page, 2391 location: googleEvent.location 2392 }) 2393 }; 2394 2395 document.addEventListener("DOMContentLoaded", function() { 2396 (function() { 2397 //If the page has an element with ID of auto-year-update the element will be populated with the current year. 2398 var date = new Date(); 2399 var elements = document.getElementsByClassName('auto-year-update'); 2400 var i; 2401 for (i = 0; i < elements.length; i++) { 2402 elements[i].innerText = date.getFullYear(); 2403 } 2404 })(); 2405 if (window.divolteLp) { 2406 window.divolteLp('sendLpPageView', {}); 2407 } 2408 if (window.eventBusLp) { 2409 window.eventBusLp('sendLpPageView', {}); 2410 } 2411 }); 2412 </script>
2412 2413 2414 2415
2415<script> 2416 // Function to dynamically load a script 2417 function loadScript(url, callback) { 2418 var script = document.createElement('script'); 2419 script.type = 'text/javascript'; 2420 script.src = url; 2421 script.defer = true; 2422 script.async = true; 2423 script.onload = callback; 2424 document.head.appendChild(script); 2425 } 2426 2427 // Function to dynamically load CSS file 2428 function loadCSS(url) { 2429 var link = document.createElement("link"); 2430 link.rel = "stylesheet"; 2431 link.href = url; 2432 document.head.appendChild(link); 2433 } 2434 2435 // Global methods / variables that can be accessed by element js 2436 window.luxuryPresence = { 2437 libs: { 2438 loadJs: loadScript, 2439 loadCss: loadCSS, 2440 jsLibsMap: { 2441 paroller: { 2442 jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js', 2443 isLoaded: false, 2444 }, 2445 ionRangeSlider: { 2446 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js', 2447 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css', 2448 isLoaded: false, 2449 requires: ['jquery'], 2450 }, 2451 splide: { 2452 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js', 2453 cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css', 2454 isLoaded: false, 2455 }, 2456 wow: { 2457 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js', 2458 isLoaded: false, 2459 }, 2460 jquery: { 2461 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js', 2462 isLoaded: false, 2463 }, 2464 slick: { 2465 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js', 2466 isLoaded: false, 2467 requires: ['jquery'], 2468 }, 2469 libphonenumber: { 2470 jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js', 2471 isLoaded: false, 2472 }, 2473 }, 2474 }, 2475 }; 2476 </script>
2476 2477
2477<script defer src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer" onload="window.luxuryPresence.libs.jsLibsMap.jquery.isLoaded = true"></script>
2477 2478
2478<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
2478 2479
2479<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
2479 2480
2480<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
2480 2481
2481<script defer src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js" onload="window.luxuryPresence.libs.jsLibsMap.slick.isLoaded = true"></script>
2481 2482
2482<script defer src="https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js" onload="window.luxuryPresence.libs.jsLibsMap.wow.isLoaded = true"></script>
2482 2483
2483<script defer src="https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js" onload="window.luxuryPresence.libs.jsLibsMap.ionRangeSlider.isLoaded = true"></script>
2483 2484 2485 <!-- GOOGLE TRANSLATE SCRIPT --> 2486
2486<script> 2487 function googleTranslateElementInit() { 2488 // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'` 2489 // Language codes can be taken from here https://cloud.google.com/translate/docs/languages 2490 const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt'; 2491 document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){ 2492 translate.innerText = ''; 2493 new google.translate.TranslateElement({ 2494 pageLanguage: 'en', 2495 layout: google.translate.TranslateElement.InlineLayout.SIMPLE, 2496 includedLanguages: window.customLanguages || DEFAULT_LANGUAGES, 2497 }, translate); 2498 }); 2499 } 2500 </script>
2500 2501
2501<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
2501 2502
2502<script defer src="https://accounts.google.com/gsi/intermediate"></script>
2502 2503 2504 <!-- GOOGLE TRANSLATE SCRIPT END--> 2505
2505<script> 2506 2507 // UI helpers 2508 (function () { 2509 2510 function getSideMenu () { 2511 return document.querySelector('body > div.sidemenu'); 2512 } 2513 2514 function sideMenuHide (instant) { 2515 var sideMenu = getSideMenu(); 2516 if (!sideMenu || !sideMenu.classList.contains('visible')) { 2517 return; 2518 } 2519 sideMenu.classList.remove('visible'); 2520 sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } })); 2521 window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} })); 2522 } 2523 2524 function sideMenuShow () { 2525 var sideMenu = getSideMenu(); 2526 if (!sideMenu || sideMenu.classList.contains('visible')) { 2527 return; 2528 } 2529 sideMenu.classList.add('visible'); 2530 sideMenu.dispatchEvent(new Event('lpui-show')); 2531 window.dispatchEvent(new Event('lpui-sidemenu-show')); 2532 } 2533 2534 function sideMenuToggle () { 2535 var sideMenu = getSideMenu(); 2536 if (!sideMenu) { 2537 return; 2538 } 2539 var isSideMenuVisible = sideMenu.classList.contains('visible'); 2540 if (isSideMenuVisible) { 2541 sideMenuHide(); 2542 } else { 2543 sideMenuShow(); 2544 } 2545 } 2546 2547 var scrollLockRequests = {}; 2548 window.__debug_scrollLockRequests = scrollLockRequests; 2549 var hideScrollStyles = ''+ 2550 'body {'+ 2551 'overflow: hidden;' + 2552 '}'; 2553 var hideScrollId = 'hide-body-scroll-style'; 2554 2555 function scrollLock () { 2556 var style = document.createElement('style'); 2557 style.id = hideScrollId; 2558 style.textContent = hideScrollStyles; 2559 document.head.appendChild(style); 2560 window.dispatchEvent(new Event('lpui-scroll-locked')); 2561 } 2562 2563 function scrollUnlock () { 2564 document.getElementById(hideScrollId)?.remove(); 2565 window.dispatchEvent(new Event('lpui-scroll-unlocked')); 2566 } 2567 2568 function requestScrollLock (lockId) { 2569 var wasLocked = Object.keys(scrollLockRequests).length > 0; 2570 scrollLockRequests[lockId || '__anonymous_lock'] = true; 2571 if (!wasLocked) { 2572 scrollLock(); 2573 } 2574 } 2575 2576 function releaseScrollLock (lockId) { 2577 if (lockId) { 2578 delete scrollLockRequests[lockId]; 2579 if (!Object.keys(scrollLockRequests).length) { 2580 scrollUnlock(); 2581 } 2582 } else { 2583 scrollLockRequests = {}; 2584 window.__debug_scrollLockRequests = scrollLockRequests; 2585 scrollUnlock(); 2586 } 2587 } 2588 2589 function showModal (modalId, options) { 2590 var modal = document.getElementById(modalId); 2591 if (!modal) { 2592 return; 2593 } 2594 2595 if (!modal.classList.contains('visible')) { 2596 modal.classList.add('visible'); 2597 if (options && options.scrollLock) { 2598 window.lpUI.requestScrollLock(modalId); 2599 } 2600 modal.dispatchEvent(new Event('lpui-show')); 2601 window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } })); 2602 } 2603 2604 const visibleModals = document.querySelectorAll('.modal.visible'); 2605 2606 if (visibleModals.length > 1) { 2607 2608 const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => { 2609 const zIndex = window.getComputedStyle(modal).zIndex; 2610 const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0; 2611 return Math.max(maxZIndex, parsedZIndex); 2612 }, 0); 2613 2614 modal.style.zIndex = maxZIndex + 1; 2615 } 2616 2617 } 2618 2619 function _hideModal (modalEl) { 2620 if (!modalEl) { 2621 return; 2622 } 2623 if (!modalEl.classList.contains('visible')) { 2624 return; 2625 } 2626 modalEl.classList.remove('visible'); 2627 modalEl.style.zIndex = '';
2628 modalEl.dispatchEvent(new Event('lpui-hide')); 2629 var modalId = modalEl.getAttribute('id'); 2630 if (modalId) { 2631 window.lpUI.releaseScrollLock(modalId); 2632 window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } })); 2633 } 2634 } 2635 2636 function hideModal (modalId) { 2637 _hideModal(document.getElementById(modalId)); 2638 } 2639 2640 function hideClosestModal (el) { 2641 const modal = el?.closest('.modal'); 2642 if (!modal) { 2643 return; 2644 } 2645 if (modal.classList) { 2646 _hideModal(modal); 2647 return; 2648 } 2649 if (modal.length && modal[0].classList) { 2650 _hideModal(modal[0]); 2651 } 2652 } 2653 2654 window.lpUI = { 2655 sideMenuHide: sideMenuHide, 2656 sideMenuShow: sideMenuShow, 2657 sideMenuToggle: sideMenuToggle, 2658 requestScrollLock: requestScrollLock, 2659 releaseScrollLock: releaseScrollLock, 2660 showModal: showModal, 2661 hideModal: hideModal, 2662 hideClosestModal: hideClosestModal 2663 } 2664 })(); 2665 2666 var stringifyPrimitive = function(v) { 2667 switch (typeof v) { 2668 case 'string': 2669 return v; 2670 2671 case 'boolean': 2672 return v ? 'true' : 'false'; 2673 2674 case 'number': 2675 return isFinite(v) ? v : ''; 2676 2677 default: 2678 return ''; 2679 } 2680 }; 2681 2682 function objectToQuerystring(obj, sep, eq, name) { 2683 // https://github.com/Gozala/querystring/blob/master/encode.js 2684 sep = sep || '&'; 2685 eq = eq || '='; 2686 if (obj === null) { 2687 obj = undefined; 2688 } 2689 2690 if (typeof obj === 'object') { 2691 return Object.keys(obj).map(function(k) { 2692 var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; 2693 if (Array.isArray(obj[k])) { 2694 return obj[k].map(function(v) { 2695 return ks + encodeURIComponent(stringifyPrimitive(v)); 2696 }).join(sep); 2697 } else { 2698 return ks + encodeURIComponent(stringifyPrimitive(obj[k])); 2699 } 2700 }).filter(Boolean).join(sep); 2701 2702 } 2703 2704 if (!name) return ''; 2705 return encodeURIComponent(stringifyPrimitive(name)) + eq + 2706 encodeURIComponent(stringifyPrimitive(obj)); 2707 } 2708 2709 function getPath(url, options) { 2710 var parser = document.createElement('a'); 2711 parser.href = url || ''; 2712 var path = parser.pathname || ''; 2713 if (path[0] !== '/') { 2714 // IE does not return path starting with a slash 2715 path = '/' + path; 2716 } 2717 2718 if (options && options.queryString) { 2719 path += parser.search; 2720 } 2721 2722 return path; 2723 } 2724 2725 function getMLSAutocomplete(keyword) { 2726 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 2727 var query = { 2728 kind: 'listings', 2729 query: keyword 2730 }; 2731 2732 return superagent 2733 .get(searchURL) 2734 .query(query) 2735 .then(function(res) { 2736 var data = res.body || []; 2737 // Array of listing_auto_complete documents: id, display_address, city, state, 2738 // price, sold_price, status, status_modified_at, photo_urls (array of URLs). 2739 2740 return data; 2741 }); 2742 } 2743 2744 function getMLSAutocompleteWithFilters(keyword, filters = {}) { 2745 var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete'; 2746 2747 return superagent 2748 .get(searchURL) 2749 .query({ kind: 'listings', query: keyword, ...filters }) 2750 .then(function(res) { 2751 // Same response shape as getMLSAutocomplete. 2752 return res.body || []; 2753 }); 2754 } 2755 2756 function makeMlsLink(data) { 2757 // Code Dupe from utils/googlePlace 2758 // mapping of google data type to mls data type 2759 var mapping = { 2760 neighborhood: 'neighborhood', 2761 locality: 'place', 2762 administrative_area_level_2: 'county', 2763 administrative_area_level_1: 'state', 2764 postal_code: 'postalcode', 2765 }; 2766 2767 function _filterTypes(types) { 2768 return types.filter(function(type) { return type !== 'political' }); 2769 } 2770 2771 if (!data || !Object.keys(data).length) { 2772 return '/home-search/listings'; 2773 } 2774 2775 var newData = {};
2776 _filterTypes(data.types).forEach(function(type) { 2777 if (mapping[type]) { 2778 newData.search_type = mapping[type]; 2779 } 2780 }); 2781 newData.omnibox = data.formatted_address; 2782 data.address_components.forEach(function(component) { 2783 _filterTypes(component.types).forEach(function(type) { 2784 if (mapping[type]) { 2785 newData[mapping[type]] = component.long_name; 2786 } 2787 }); 2788 }); 2789 var bounds = data.geometry.bounds; 2790 var convertedData = Object.assign(bounds, newData); 2791 2792 return '/home-search/listings?' + objectToQuerystring(convertedData); 2793 } 2794 2795 function debounce(func, wait) { 2796 let timeout; 2797 return function(...args) { 2798 const context = this; 2799 clearTimeout(timeout); 2800 timeout = setTimeout(() => func.apply(context, args), wait) 2801 } 2802 } 2803 2804 // Global methods / variables that can be accessed by element js 2805 window.luxuryPresence = { 2806 ...window.luxuryPresence, 2807 defaults: { 2808 companyId: 'e6d253ae-e8f4-4213-aef5-7ad077e555af', 2809 apiGatewayUrl: '/api-gw', 2810 routerUrl: '/api-nv', 2811 gql: {"agents":"\n query Agents (\n $agentId: ID\n $agentIds: [ID!]\n $companyId: String\n $network: Boolean\n $networkId: String\n $officeId: [ID!]\n $excludeOfficeId: [ID!]\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n $tags: [String]\n $tagsMode: TagsModeEnum\n $teamId: [ID!]\n $developmentId: [ID!]\n $prioritizeIds: Boolean\n ) {\n agents (\n agentId: $agentId\n agentIds: $agentIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n officeId: $officeId\n excludeOfficeId: $excludeOfficeId\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n tags: $tags\n tagsMode: $tagsMode\n teamId: $teamId\n developmentId: $developmentId\n prioritizeIds: $prioritizeIds\n ) {\n id\n firstName\n lastName\n avatar {\n smallUrl\n mediumUrl\n largeUrl\n height\n width\n }\n position\n bioLong\n bioShort\n seoTitle\n seoDescription\n slug\n phoneNumber\n phoneNumber2\n license\n email\n leadAgent\n greaterArea\n tags\n }\n agentsCount(\n agentIds: $agentIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n officeId: $officeId\n excludeOfficeId: $excludeOfficeId\n search: $search\n tags: $tags\n tagsMode: $tagsMode\n teamId: $teamId\n developmentId: $developmentId\n prioritizeIds: $prioritizeIds\n ) {\n count\n }\n }\n","properties":"\n query Properties(\n $agentIds: [ID!]\n $teamIds: [ID!]\n $neighborhoodIds: [ID!]\n $officeIds: [ID!]\n $propertyId: ID\n $companyId: String\n $networkId: String\n $network: Boolean\n $statusId: String\n $propertyIds: [ID!]\n $prioritizeIds: Boolean\n $statusIds: [String!]\n $excludeStatusId: [String!]\n $neighborhoodId: String\n $addressState: [String!]\n $addressCity: [String!]\n $relatedNeighborhoodPropertyId: String\n $developmentId: String\n $featuredListing: Boolean\n $leaseProperty: Boolean\n $search: String\n $searchTermMode: SearchTermModeEnum\n $globalProperty: Boolean\n $archived: Boolean\n $salesPriceGTE: Float\n $salesPriceLTE: Float\n $leasePriceGTE: Float\n $leasePriceLTE: Float\n $livingSpaceSizeGTE: Float\n $livingSpaceSizeLTE: Float\n $bathCountGTE: Float\n $bathCountLTE: Float\n $bedroomCountGTE: Float\n $bedroomCountLTE: Float\n $architectureStyle: String\n $lifestyle: String\n $propertyTypeId: String\n $propertyTypeIds: [String!]\n $spaceTypeIds: [ID!]\n $tag: String\n $backfillMLSResults: Boolean\n $displayMLSListings: String\n $hostname: String\n $websiteId: ID\n $backfillProviders: [String!]\n $backfillMLSListingIds: [String!]\n $backfillMLSAgentIds: [String!]\n $backfillMLSOfficeIds: [String!]\n $backfillBoundary: JSON\n $openHouse: Boolean\n $withGeo: Boolean\n $advancedFilters: JSON\n $seasonalPriceId: ID\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n ) {\n properties(\n \n agentIds: $agentIds\n teamIds: $teamIds\n propertyId: $propertyId\n propertyIds: $propertyIds\n prioritizeIds: $prioritizeIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n statusId: $statusId\n statusIds: $statusIds\n excludeStatusId: $excludeStatusId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n officeIds: $officeIds\n addressState: $addressState\n addressCity: $addressCity\n developmentId: $developmentId\n featuredListing: $featuredListing\n leaseProperty: $leaseProperty\n search: $search\n searchTermMode: $searchTermMode\n salesPriceGTE: $salesPriceGTE\n salesPriceLTE: $salesPriceLTE\n leasePriceGTE: $leasePriceGTE\n leasePriceLTE: $leasePriceLTE\n livingSpaceSizeGTE: $livingSpaceSizeGTE\n livingSpaceSizeLTE: $livingSpaceSizeLTE\n bathCountGTE: $bathCountGTE\n bathCountLTE: $bathCountLTE\n bedroomCountGTE: $bedroomCountGTE\n bedroomCountLTE: $bedroomCountLTE\n architectureStyle: $architectureStyle\n lifestyle: $lifestyle\n propertyTypeId: $propertyTypeId\n propertyTypeIds: $propertyTypeIds\n spaceTypeIds: $spaceTypeIds\n tag: $tag\n archived: $archived\n globalProperty: $globalProperty\n withGeo: $withGeo\n openHouse: $openHouse\n displayMLSListings: $displayMLSListings\n advancedFilters: $advancedFilters\n seasonalPriceId: $seasonalPriceId\n\n relatedNeighborhoodPropertyId: $relatedNeighborhoodPropertyId\n backfillMLSResults: $backfillMLSResults\n hostname: $hostname\n websiteId: $websiteId\n backfillProviders: $backfillProviders\n backfillMLSListingIds: $backfillMLSListingIds\n backfillMLSAgentIds: $backfillMLSAgentIds\n backfillMLSOfficeIds: $backfillMLSOfficeIds\n backfillBoundary: $backfillBoundary\n offset: $offset\n limit: $limit\n sort: $sort,\n sortDir: $sortDir\n ){\n id\n name\n status\n originalStatus {\n id\n name\n }\n salesPrice\n reducedPrice\n isPasswordProtected\n bedroomCount\n bathCount\n fullBathCount\n halfBathCount\n threeQuarterBathCount\n fullAddress\n addressLine1\n addressLine2\n addressCity\n addressState\n addressCountry\n postalCode\n description\n syncedAt\n officeName\n attributionContact\n neighborhood {\n id\n }\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n seoTitle\n seoDescription\n slug\n fromMLS\n mlsId\n mlsLogo\n mlsAttribution\n openHouse\n openHouseHours\n priceUponRequest\n privateAddress\n leaseProperty\n leasePrice\n currency\n leaseTermFrequencyInterval\n leaseTermFrequencyCount\n leasePeriod\n livingSpaceSize\n livingSpaceUnits\n lotAreaSize\n lotAreaUnits\n tags\n latitude\n longitude\n soldDate\n timeZone\n buyerAgencyCompensation\n buyerAgencyCompensationType\n landIdUrl\
2811n }\n propertiesCount(\n \n agentIds: $agentIds\n teamIds: $teamIds\n propertyId: $propertyId\n propertyIds: $propertyIds\n prioritizeIds: $prioritizeIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n statusId: $statusId\n statusIds: $statusIds\n excludeStatusId: $excludeStatusId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n officeIds: $officeIds\n addressState: $addressState\n addressCity: $addressCity\n developmentId: $developmentId\n featuredListing: $featuredListing\n leaseProperty: $leaseProperty\n search: $search\n searchTermMode: $searchTermMode\n salesPriceGTE: $salesPriceGTE\n salesPriceLTE: $salesPriceLTE\n leasePriceGTE: $leasePriceGTE\n leasePriceLTE: $leasePriceLTE\n livingSpaceSizeGTE: $livingSpaceSizeGTE\n livingSpaceSizeLTE: $livingSpaceSizeLTE\n bathCountGTE: $bathCountGTE\n bathCountLTE: $bathCountLTE\n bedroomCountGTE: $bedroomCountGTE\n bedroomCountLTE: $bedroomCountLTE\n architectureStyle: $architectureStyle\n lifestyle: $lifestyle\n propertyTypeId: $propertyTypeId\n propertyTypeIds: $propertyTypeIds\n spaceTypeIds: $spaceTypeIds\n tag: $tag\n archived: $archived\n globalProperty: $globalProperty\n withGeo: $withGeo\n openHouse: $openHouse\n displayMLSListings: $displayMLSListings\n advancedFilters: $advancedFilters\n seasonalPriceId: $seasonalPriceId\n\n ) {\n count\n }\n }\n","pressReleases":"\n query PressReleases (\n $companyId: ID\n $pressReleaseIds: [ID!]\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n $categories: [String!]\n $propertyId: [ID!]\n $developmentId: [ID!]\n $agentId: [ID!]\n $teamId: [ID!]\n $year: [Int!]\n ) {\n pressReleases (\n companyId: $companyId\n pressReleaseIds: $pressReleaseIds\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n categories: $categories\n propertyId: $propertyId\n developmentId: $developmentId\n agentId: $agentId\n teamId: $teamId\n year: $year\n ) {\n items {\n id\n title\n description\n author\n externalUrl\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n publishedAt\n categories\n }\n total\n }\n }\n","posts":"\n query Posts (\n $companyId: String\n $postId: [ID!]\n $slug: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n $featured: Boolean\n $categoryId: [String!]\n $neighborhoodId: [String!]\n ) {\n posts (\n companyId: $companyId\n postId: $postId\n slug: $slug\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n featured: $featured\n postStatusId: \"5f528253-abb7-484e-95c3-330269ac1102\"\n categoryId: $categoryId\n neighborhoodId: $neighborhoodId\n ) {\n items {\n id\n postId\n title\n subtitle\n description\n status: postStatus\n featured\n slug\n categories {\n id\n name\n }\n createdAt\n publishedAt\n updatedAt\n scheduledAt\n createdBy {\n ... on Agent {\n firstName\n lastName\n }\n }\n customAuthor\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n seoTitle\n seoDescription\n }\n total\n }\n }\n","testimonials":"\n query Testimonials (\n $companyId: String\n $agentId: ID\n $teamId: ID\n $testimonialIds: [ID!]\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: String\n $search: String\n ) {\n testimonials (\n companyId: $companyId\n agentId: $agentId\n teamId: $teamId\n testimonialIds: $testimonialIds\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n ) {\n items {\n id\n testimonialId\n body\n author\n position\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n altTagText\n }\n seoTitle\n seoDescription\n agents {\n slug\n email\n firstName\n lastName\n avatar {\n smallUrl\n height\n width\n }\n }\n }\n total\n }\n }\n","neighborhoods":"\n query Neighborhoods (\n $neighborhoodId: ID\n $companyId: String\n $search: String\n $tag: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n ) {\n neighborhoods (\n neighborhoodId: $neighborhoodId\n companyId: $companyId\n search: $search\n tag: $tag\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n ) {\n id\n name\n description\n descriptionShort\n slug\n tags\n googlePlaceData\n mlsLink\n createdAt\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n seoTitle\n seoDescription\n }\n neighborhoodsCount(\n companyId: $companyId\n search: $search\n tag: $tag\n ) {\n count\n }\n }\n","developments":"\n query Developments (\n $developmentId: ID\n $companyId: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n $tag: [String!]\n $agentId: [ID!]\n $neighborhoodId: ID\n $neighborhoodIds: [ID!]\n ) {\n developments (\n developmentId: $developmentId\n companyId: $companyId\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n tag: $tag\n agentId: $agentId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n ) {\n id\n name\n description\n descriptionShort\n slug\n createdAt\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n googlePlaceData\n seoTitle\n seoDescription\n tags\n }\n developmentsCount(\n companyId: $companyId\n search: $search\n tag: $tag\n agentId: $agentId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n ) {\n count\n }\n }\n","pois":"\n query PointsOfInterest (\n $regionId: UUID!\n $radiu
2811s: Int\n $offset: Int\n $limit: Int\n $categories: [AreasOfInterestCategories!]\n $sortBy: AreasOfInterestSorting\n ) {\n pois: areasOfInterest (\n input: {\n regionId: $regionId\n radius: $radius\n offset: $offset\n limit: $limit\n categories: $categories\n sortBy: $sortBy\n }\n ) {\n items {\n name\n imageUrl\n url\n reviewCount\n rating\n price\n displayPhone\n distance\n category\n location {\n address1\n address2\n address3\n city\n zipCode\n country\n state\n }\n }\n total\n }\n }\n","offices":"\n query Offices (\n $companyId: ID!\n $officeIds: [ID!]\n $officeMlsIds: [String!]\n $externalIds: [String!]\n $externalSource: String\n $agentId: ID\n $archived: Boolean\n $tags: [String!]\n $slug: String\n $search: String\n $sort: String\n $sortDir: SortDirection\n $offset: Int\n $limit: Int\n ) {\n offices (\n companyId: $companyId\n officeIds: $officeIds\n officeMlsIds: $officeMlsIds\n externalIds: $externalIds\n externalSource: $externalSource\n agentId: $agentId\n archived: $archived\n tags: $tags\n slug: $slug\n search: $search\n sort: $sort\n sortDir: $sortDir\n offset: $offset\n limit: $limit\n ) {\n items {\n id\n companyId\n name\n slug\n officeMlsId\n shortDescription\n fullDescription\n addressLine1\n addressLine2\n addressCity\n addressState\n addressPostalCode\n addressCountry\n phone\n email\n officeHours\n coordinates\n googlePlaceData\n seoTitle\n seoDescription\n fullAddress\n tags\n media {\n id\n originalUrl\n thumbnailUrl\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n }\n }\n total\n }\n }\n","teams":"\n query Teams (\n $companyId: ID\n $teamIds: [ID!]\n $agentId: ID\n $externalIds: [String!]\n $externalSource: String\n $slug: String\n $search: String\n $sort: String\n $sortDir: String\n $offset: Int\n $limit: Int\n ) {\n teams (\n companyId: $companyId\n teamIds: $teamIds\n agentId: $agentId\n externalIds: $externalIds\n externalSource: $externalSource\n slug: $slug\n search: $search\n sort: $sort\n sortDir: $sortDir\n offset: $offset\n limit: $limit\n ) {\n items {\n id\n companyId\n name\n email\n shortBio\n addressLine1\n addressLine2\n addressCity\n addressState\n addressCountry\n phoneNumber1\n phoneNumber2\n postalCode\n avatar {\n id\n thumbnailUrl\n smallUrl\n mediumUrl\n largeUrl\n }\n urlWebsite\n socialLinks\n socialLinksArray\n tags\n seoTitle\n seoDesc\n slug\n displayOrder\n }\n total\n }\n }\n"}, 2812 propertyPlaceholderImage: {"id":"f043bdf7-1019-4668-b714-fe86cf453220","alt":null,"bytes":30496,"width":1920,"format":"jpg","height":1200,"shared":true,"curated":false,"duration":null,"largeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ljmkta0oer8c21yrpwhc","smallUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/ljmkta0oer8c21yrpwhc","authorUrl":null,"createdAt":"2024-08-07T17:49:24.954Z","mediumUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=1280/https://media-production.lp-cdn.com/media/ljmkta0oer8c21yrpwhc","sourceUrl":null,"updatedAt":"2024-08-07T17:49:24.954Z","xLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ljmkta0oer8c21yrpwhc","__typename":"Media","altTagText":null,"authorName":null,"sourceName":"r2","xxLargeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ljmkta0oer8c21yrpwhc","description":null,"displayName":"property","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/ljmkta0oer8c21yrpwhc","resourceType":"image","thumbnailUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=320/https://media-production.lp-cdn.com/media/ljmkta0oer8c21yrpwhc","originalFileName":"Property","cloudinaryPublicId":"ljmkta0oer8c21yrpwhc"} 2813 }, 2814 objectToQuerystring: objectToQuerystring, 2815 getPath: getPath, 2816 getMLSAutocomplete: getMLSAutocomplete, 2817 getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters, 2818 makeMlsLink: makeMlsLink, 2819 debounce: debounce, 2820 }; 2821 2822 var wowOffset = 100; 2823 </script>
2823 2824
2824<script> 2825 (()=>{function e(e){return e&&e.__esModule?e.default:e}var t={},i={};i={getVideoFirstFrame(e){let t="https://res.cloudinary.com/";if(!e||!e.startsWith(t))return null;let i=e.replace(t,"").replace("f_auto:video","f_auto").split("/");if(-1===i[1].toLowerCase().indexOf("video"))return null;let r=i[i.length-1];r.lastIndexOf(".")>-1?r=`${r.slice(0,r.lastIndexOf("."))}.jpg`:r+=".jpg",i[i.length-1]=r;let s=3;"videos"===i[1].toLowerCase()&&""!==i[2]&&(s=2);let a=/^(?:[a-z]{1,3}|\$\w+)_\S+$/;for(;s<i.length-1&&a.test(i[s]);)s++;return i.splice(s,0,"so_0,eo_0"),t+i.join("/")}};let r={amp:"&",lt:"<",gt:">",quot:'"',apos:"'",nbsp:" "},s=/&(?:amp|lt|gt|quot|apos|nbsp|#(?:[0-9]+|[xX][0-9a-fA-F]+));/y,a=/[<&]/g,o=/["'>]/g,n=/<\/p\s*>|<br\s*\/?>|[\r\n\u2028\u2029]/g;function l(e,t){let i="";for(let l=0;l<e.length;){a.lastIndex=l;let d=a.exec(e);if(!d){i+=e.slice(l);break}let c=d.index;i+=e.slice(l,c);let u="&"===e[c]?function(e,t){s.lastIndex=t;let i=s.exec(e);return{text:i?function(e){if("#"!==e[1])return r[e.slice(1,-1)];
2825let t="x"===e[2]||"X"===e[2],i=parseInt(e.slice(t?3:2,-1),t?16:10);return 0===i||i>1114111||i>=55296&&i<=57343?e:160===i?" ":String.fromCodePoint(i)}(i[0]):"&",end:i?s.lastIndex:t+1}}(e,c):function(e,t,i){let r=function(e,t){let i=null;o.lastIndex=t+1;let r=o.exec(e);for(;r;){let t=r[0];if(i)t===i&&(i=null);else if('"'===t||"'"===t)i=t;else if(">"===t)return o.lastIndex;r=o.exec(e)}return -1}(e,t);return{text:-1===r?"<":function(e,t,i,r){if(!r)return"";let s=e.slice(t,i);if(/^<br\s*\/?>$/.test(s))return" ";if(/^<\/p\s*>$/.test(s)){n.lastIndex=i;let t=n.exec(e);if(t&&"<"===t[0][0])return" "}return""}(e,t,r,i),end:-1===r?t+1:r}}(e,c,t);i+=u.text,l=u.end}return i}t=function(e,{isEqual:t}){let r=[{field:"thumbnailUrl",w:320},{field:"smallUrl",w:960},{field:"mediumUrl",w:1280},{field:"largeUrl",w:1920},{field:"xLargeUrl",w:2560},{field:"xxLargeUrl",w:3456}],s=function(e,t,i){let r="en-US";if(!e)return"";if("string"==typeof e){let t=e.trim();if(/[^+\-0-9.]/.test(t))return e;if(!(e=parseFloat(t)))return""}let s="number"==typeof i?i:0,a=Number.isInteger(e)?0:s,o={minimumFractionDigits:a,maximumFractionDigits:a};return"USD"===t?`$${e.toLocaleString(r,o)}`:"CAD"===t?`$${e.toLocaleString(r,o)} CAD`:"EUR"===t?`\u{20AC}${e.toLocaleString(r,o)}`:"GBP"===t?`\xa3${e.toLocaleString(r,o)}`:"PERCENT"===t?`${e}%`:"number"==typeof i&&i>-1?e.toLocaleString(r,{maximumFractionDigits:i}):e.toLocaleString(r)},a=function(e){switch(e){case"DAY":return"daily";case"MONTH":return"monthly";case"WEEK":return"weekly";case"YEAR":return"yearly";case"QUARTER":return"quarterly";case"HALF_YEAR":return"semi-annually";case"NIGHTLY":return"nightly";case"SEASONAL":return"seasonally";default:return""}},o=function(e){switch(e){case"DAY":return"day";case"WEEK":return"wk";case"MONTH":return"mo";case"YEAR":return"yr";case"QUARTER":return"3 mos";case"HALF_YEAR":return"6 mos";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},n=function(e){switch(e){case"DAY":return"day";case"WEEK":return"week";case"MONTH":return"month";case"YEAR":return"year";case"QUARTER":return"quarter";case"HALF_YEAR":return"6 months";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},d=function(e,t){let i,r,s=t||{};switch(s.mode){case"short":i=o(e),r=s.frequencySeparator||"/";break;case"standard":case"std":i=n(e),r=s.frequencySeparator||"/";break;default:i=a(e),r=s.frequencySeparator||" "}return i?s.frequencyTag||s.frequencyClass?`${r}<${s.frequencyTag||"span"}${s.frequencyClass?` class="${s.frequencyClass}"`:""}>${i}</${s.frequencyTag||"span"}>`:r+i:""};return{isEmpty(e,t){let i=!e||"string"==typeof e&&!e.trim()||!Object.keys(e).length;return t.fn?i?t.fn(this):t.inverse(this):i},ifEquals(e,i,r){return t(e,i)?r.fn(this):r.inverse(this)},"raw-helper":function(e){return e.fn()},striptags:e=>e?l(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,""),!1):"",striptagsLineBreaks:e=>e?l(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,""),!0):"",truncate:(e,t,i)=>e?e.length>t?"string"==typeof i?e.slice(0,t-i.length)+i:e.slice(0,t):e:"",setSubArray(e=[],t,i,r,s){s.data.root[r]=e.slice(t,i)},formatAreaUnit(e){switch(e){case"ACRE":return"Acres";case"SQUARE_METER":return"Sq.M.";case"SQUARE_YARD":return"Sq.Yd.";default:return"Sq.Ft."}},formatFrequency:a,formatFrequencyShort:o,lpFormatFrequency:(e,t)=>d(e,t&&t.hash),subArray(e,t,i,r){return e>=t&&e<i?r.fn(this):r.inverse(this)},formatPropertyStatus(e,t,i){let r="";switch(e){case"SOLD":r="Sold";break;case"FOR_SALE":r="For Sale";break;case"COMING_SOON":r="Coming Soon";break;case"INACTIVE":r="Inactive";break;case"POCKET_LISTING":r="Pocket Listing";break;case"PENDING":r="Pending";break;case"UNDER_CONTRACT":r="Under Contract";break;case"ACTIVE_UNDER_CONTRACT":r="Active Under Contract";break;default:r=e}return("Sold"===r||"Leased"===r)&&t&&"string"==typeof i&&i&&(r+=` on ${i}`),r},formatGrade(e){switch(e){case"UNDERGRADUATE_COURSES":return"Undergrad";case"PRE_KINDERGARTEN":return"PreK";case"KINDERGARTEN":return"K";case"FIRST_GRADE":return"1st";case"SECOND_GRADE":return"2nd";case"THIRD_GRADE":return"3rd";case"FOURTH_GRADE":return"4th";case"FIFTH_GRADE":return"5th";case"SIXTH_GRADE":return"6th";case"SEVENTH_GRADE":return"7th";case"EIGHTH_GRADE":return"8th";case"NINTH_GRADE":return"9th";case"TENTH_GRADE":return"10th";case"ELEVENTH_GRADE":return"11th";case"TWELFTH_GRADE":return"12th";default:return""}},encodeURI:e=>encodeURI(e),encodeURIComponent:e=>encodeURIComponent(e),hbFormatDate(e,t){if(!e)return"";let i="current"===e?new Date:new Date(e);if(Number.isNaN(i.getTime()))return"";if("YYYY"===t||"year"===t)return`${i.getFullYear()}`;if("MM/DD/YY"===t){let e=i.getMonth()+1;return e<10&&(e=`0${e.toString()}`),`${e}/${i.getDate()}/${i.getFullYear().toString().substr(-2)}`}return`${["January","February","March","April","May","June","July","August","September","October","November","December"][i.getMonth()]} ${i.getDate()}, ${i.getFullYear()}`},openHousesFormat(e,t,i){if(!e||!t)return"";let r=e=>{let t=e.getHours();t>12&&(t-=12);let i=`${t}:${e.getMinutes()>9?e.getMinutes():"0"+e.getMinutes()}`;return e.getHours()>11?i+="PM":i+="AM",i},s="",a=e,o=t;
2825i&&(a=new Date(e).toLocaleString("en-US",{timeZone:i}),o=new Date(t).toLocaleString("en-US",{timeZone:i}),[,,,s]=new Date(t).toLocaleString("en-US",{timeZone:i,timeZoneName:"short"}).split(" "));let n=new Date(a),l=n.toLocaleDateString("en-US"),d=r(n),c=r(new Date(o));return`${l} ${d} - ${c} ${s}`},math:(e,t,i)=>(e=parseFloat(e),({"+":e+(i=parseFloat(i)),"-":e-i,"*":e*i,"/":e/i,"%":e%i})[t]),findByKey(e,t,i,r){let s=(e||[]).find(e=>e[t]===i);return r.fn(s)},capitalize(e,t,i){let r;return"string"==typeof e&&e.length&&(r=e.toLowerCase().split(t).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ").toString()),r},and:(...e)=>Array.prototype.slice.call(e).every(Boolean),or:(...e)=>Array.prototype.slice.call(e,0,-1).some(Boolean),not:e=>!e,orderByIds(t,i,r){let s="",a=null;r.data&&(a=e.createFrame(r.data));let o=(i||[]).filter(Boolean);if(o&&o.length){let e=0;s=o.reduce((i,s,o)=>{let n=(t||[]).find(e=>e.id===s);return n?(a&&(a.index=o-e),i+r.fn(n,{data:a})):(e+=1,i)},"")}else for(let e=0,i=(t||[]).length;e<i;e++)a&&(a.index=e),s+=r.fn(t[e],{data:a});return s},ifIn(e,t,i){return t&&t.indexOf(e)>-1?i.fn(this):i.inverse(this)},partial:(t,i)=>(e.registerPartial(t,e.compile(i.fn())),`
2825<script type="text/x-handlebars-template" class="${t} pagination-script">${i.fn()}<\/script>`),numCompare(e,t,i,r){return({"==":function(e,t){return e==t},"===":function(e,t){return e===t},"!=":function(e,t){return e!=t},"<":function(e,t){return e<t},">":function(e,t){return e>t},"<=":function(e,t){return e<=t},">=":function(e,t){return e>=t}})[i](e,t)?!r.fn||r.fn(this):!!r.fn&&r.inverse(this)},lpFormatNumber:s,arrayToHtmlList:(e,t)=>e.reduce((e,t)=>{try{if("object"==typeof t||null===t)return e;return e+=`<li>${t}</li>`}catch(e){}},""),join:(e,t,i)=>e&&e.join?e.join("string"==typeof t?t:", "):"",dedupe(t,i,r){let s=null,a=0,o=new Set;return r.data&&(s=e.createFrame(r.data)),(t||[]).reduce((e,t,n)=>{let l=i?t[i]:t;return!o.has(l)||i&&void 0===l?(o.add(l),s&&(s.index=n-a),e+r.fn(t,{data:s})):(a+=1,e)},"")},JSONstringify:(e,t)=>JSON.stringify(e),formatPropertyPrice(...t){let i=t[t.length-1].hash,r=t.length>1?t[0]:i.property,a=i.precision||0;t.length>2&&(i.mode=t[1]),i.mode||(i.mode="short");let o=t.length>3?t[2]:i.separator;if("string"!=typeof o&&(o=" | "),r.isPasswordProtected)return"Exclusive Listing";let n=t.length>4?t[3]:i.priceUponRequestText;if("string"!=typeof n&&(n="Price Upon Request"),r.priceUponRequest)return n;let l=r.salesPrice,c=null;"SOLD"!==r.status&&"Leased"!==r.status&&r.reducedPrice&&(i.reducedClass?c=r.reducedPrice:l=r.reducedPrice);let u="";c&&(u+=`<${i.reducedTag||"span"} class="${i.reducedClass}">${s(c,r.currency,a)}</${i.reducedTag||"span"}>`),l&&(l=s(l,r.currency,a),i.priceTag||i.priceClass?u+=`<${i.priceTag||"span"}${i.priceClass?` class="${i.priceClass}"`:""}>${l}</${i.priceTag||"span"}>`:u+=l);let h=r.leasePrice&&s(r.leasePrice,r.currency,a);if(h){u&&(u+=o);let e=`${h}${d(r.leasePeriod,i)}`;i.leaseTag||i.leaseClass?u+=`<${i.leaseTag||"span"}${i.leaseClass?` class="${i.leaseClass}"`:""}>${e}</${i.leaseTag||"span"}>`:u+=e}
2825return new e.SafeString(u)},mediaImage(t,i={}){if(!t)return;let{lazy:s,...a}=i.hash,o="",n="";if("string"==typeof t)o=t;else{let e={},{height:s,width:l,altTagText:d}=t;r.forEach(i=>{t[i.field]&&!e[t[i.field]]&&(e[t[i.field]]=i.w)});let c=Object.keys(e);if(!c.length)return;if(d&&(a.alt=d),s&&l&&(s>=l&&(a.class?a.class+=" portrait":a.class="portrait"),"setDims"in i.hash&&(a.width=l,a.height=s)),c.length>1&&l&&l<e[c[c.length-1]]){let t=c.findIndex(t=>e[t]>=l);c.splice(t+1),e[c[c.length-1]]=l}c.length>1&&(n=c.map(t=>`${t} ${e[t]}w`).join(", "),c.sort((t,i)=>Math.abs(e[t]-1280)-Math.abs(e[i]-1280))),o=c[0]}delete a.setDims,n||delete a.sizes,"alt"in a||(a.alt=""),!("loading"in a)&&(i?.data?.root?.sectionIndex>1||s)&&(a.loading="lazy");let l=Object.keys(a).map(t=>`${e.escapeExpression(t)}="${e.escapeExpression(a[t])}"`).join(" ");return new e.SafeString(`<img src="${o}"${n?` srcset="${n}"`:""}${l?` ${l}`:""}>`)},bgImage:e=>e?"string"==typeof e?e:e.largeUrl||e.url||"":"",concat(...e){let t="";for(let i in e)null!==e[i]&&void 0!==e[i]&&"object"!=typeof e[i]&&(t+=e[i]);return t},setVideoExtension(e,t){if(!e||!t)return"";let i=new URL(e);if("res.cloudinary.com"!==i.host)return i.pathname.endsWith(`.${t}`)?e:"";let r=i.pathname.lastIndexOf("."),s=i.pathname;return -1!==r&&(s=i.pathname.substr(0,r)),i.pathname=`${s}.${t}`,i.toString()},addVideoSources(e){if(!e)return"";if(!e.includes("res.cloudinary.com"))return`<source data-src="${e}">`;let t=e.replace(/\.(?:3gp|mpeg|mp4|m4v|m4p|ogv|ogg|mov|webm)$/,"");return[{format:"webm",codec:"vp9",htmlCodecs:";codecs=vp9"},{format:"mp4",codec:"h265",htmlCodecs:";codecs=hvc1"},{format:"mp4",codec:"h264",htmlCodecs:""}].map(e=>{let i=`${t.replace(/f_auto(?::video)?(?:,q_auto(?::\w+)?)?/,`f_${e.format},vc_${e.codec},q_auto:best,w_1920,c_limit`)}.${e.format}`;return`<source data-src="${i}" type="video/${e.format}${e.htmlCodecs}">`}).join("\n")},cloudinaryVideoFirstFrame:i.getVideoFirstFrame,initials(e,t){if(!e)return"";t?.hash?.endChar&&(e=e.split(t.hash.endChar)[0]);let i=+t?.hash?.maxChars||2,r=e.match(/\b\w/g)?.slice(0,i);return r?(t?.hash?.addText&&(r=r.map(e=>e+t.hash.addText)),r.join(t?.hash?.joinWith||"").toUpperCase()):""},normalizePhone(e){if(!e)return"";let t=String(e).trim();return(t.startsWith("+")?"+":"")+t.replace(/\D/g,"")}}};class d{constructor(e,t,i){if(this.config=e,this.window=t,this.document=i,!this.destroy)throw Error("Controllers must implement a deconstructor")}}let c="lp_lead_form_conversion_fired";function u(e,t){if(e&&t&&"function"==typeof t.sendGoogleTagManagerEvent&&!function(e){try{return"true"===e.sessionStorage.getItem(c)}catch{return!1}}(e))try{t.sendGoogleTagManagerEvent("event","generate_lead");try{e.sessionStorage.setItem(c,"true")}catch{}}catch{}}function h(e){return!!e&&(!!e.expired||Date.now()>=e.expiresAt)}let p="/api/v1/home-valuation";class m extends d{destroy(){}_cleanAddressString(e){if(!e||"string"!=typeof e)return"";let t=e.trim();if(t.includes("User entered address:")){let e=t.match(/User entered address:\s*\n?\s*([^\n]+)/);e&&e[1]&&(t=e[1].trim())}let i=t.indexOf(", call time frame:");return -1!==i&&(t=t.substring(0,i).trim()),t}_transformAddressComponents(e){let t=t=>(e.find(e=>e.componentType===t)||{}).componentName?.text,i={},r=t("street_number"),s=t("route"),a=t("administrative_area_level_1"),o=t("postal_code"),n=t("subpremise"),l=t("locality")||t("sublocality_level_1")||t("neighborhood");return r&&(i.streetNumber=r),s&&(i.streetName=s),l&&(i.city=l),a&&(i.state=a),o&&(i.zipcode=o),n&&(i.addressLine2=n),i}_extractAddressAndCoordinates(e){let t=null,i=null;if(e?.result){let{result:r}=e;r.address?.addressComponents&&(t=this._transformAddressComponents(r.address.addressComponents)),r.geocode?.location&&(i={latitude:r.geocode.location.latitude,longitude:r.geocode.location.longitude})}return{structuredAddress:t,coordinates:i}}_filterEmptyStrings(e){let t={};for(let[i,r]of Object.entries(e))""!==r&&null!=r&&(t[i]=r);return t}_getRawAddress(e){let t=e.activity.content||{},i=e.activity.comments_attributes?.[0]?.text;return[t.address,t["property-address"],t.property_address,t.Property_Address,i,t.message,t.homeValuationAddress,t.propertyAddress].map(e=>e&&this._cleanAddressString(e)).find(Boolean)||""}_logLeadEvent(e,t,i=null){let r={event:e,companyId:this.config.companyId,websiteId:this.config.websiteId,timestamp:new Date().toISOString(),hasEmail:!!t.activity?.author_email,hasAddress:!!this._getRawAddress(t)};if(i&&(r.errorMessage=i.userMessage||(i.status?`Request failed with status ${i.status}`:"An error occurred"),r.errorName=i.name,r.errorStatus=i.status),console.error(`[HomeValuation] ${e}`,JSON.stringify(r)),this.window.posthog)try{this.window.posthog.capture(e,r)}catch(e){console.error("[HomeValuation] PostHog capture failed:",e)}}_getUserFriendlyErrorMessage(e){return"AbortError"===e.name||e.message?.includes("timeout")?"Connection timed out. Please try again.":"TypeError"===e.name&&e.message?.includes("fetch")?"Unable to connect. Please check your internet connection and try again.":503===e.status||502===e.status||504===e.status?"Service temporarily unavailable. Please try again in a moment.":400===e.status?"Please check your information and try again.":"Something went wrong. Please try again or c
2825ontact us directly."}_formatStructuredAddress(e){if(!e||0===Object.keys(e).length)return"";let t=[];return t.push([e.streetNumber,e.streetName,e.addressLine2].filter(Boolean).join(" ")),t.push([[e.city,e.state].filter(Boolean).join(", "),e.zipcode].filter(Boolean).join(" ")),t.filter(Boolean).join(", ")}_buildHomeValuationData(e,t,i,r){let s=this._formatStructuredAddress(i)||this._getRawAddress(e);if(!s)throw Error("Unable to extract home valuation address from form data");let a={companyId:e.companyId,homeValuationAddress:s,homeValuationEstimate:t?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0,minimumFractionDigits:0}).format(t):null,websiteId:e.page.websiteId,sourceUrl:e.activity.source_url},o={leadEmailAddress:e.activity.author_email,leadFullName:e.activity.author_name,leadFirstName:e.activity.firstName,leadLastName:e.activity.lastName,leadPhoneNumber:e.activity.author_phone,parcelId:e.activity.content?.parcelId,resourceId:e.page.pageMeta?.resourceId,pageId:e.page.pageId,sourceResource:e.page.pageMeta?.s
2825ourceResource,pageElementId:e.page.pageMeta?.pageElementId,formId:e.page.pageMeta?.formId,utmSource:e.activity.content?.utm_source,utmMedium:e.activity.content?.utm_medium,utmCampaign:e.activity.content?.utm_campaign,utmTerm:e.activity.content?.utm_term,utmContent:e.activity.content?.utm_content,utmId:e.activity.content?.utm_id,timeToSell:e.activity.content?.timeToSell,lookingToBuy:e.activity.content?.lookingToBuy,consented:!!e.activity.content?.termsAccepted,referrer:e.referrer,content:e.activity.content||{},fields:e.fields||{}},n=this._filterEmptyStrings(o);return{...a,...n,...i&&{address:i},...r&&{coordinates:r}}}async _validateAddressSafely(e){if(!e)return console.error("Home valuation: No address found in form data"),null;try{return await this._validateAddressWithGoogleMaps(e)}catch(e){throw console.error("Error validating address with Google Maps:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}async _getHomeValuationEstimateSafely(e){try{return await this._getHomeValuationEstimate(e)}catch(e){throw console.error("Error getting home valuation estimate:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}_isSafeRedirectUrl(e){try{let{protocol:t}=new URL(e,this.window.location.href);return"https:"===t||"http:"===t}catch{return!1}}_parseResponsePayload(e){try{return e?JSON.parse(e):{}}catch{return{raw:e}}}_createResponseError(e,t){let i=Error(e&&"object"==typeof e&&Object.keys(e).length?e.message||JSON.stringify(e):"Request failed");return e&&"object"==typeof e&&Object.keys(e).length&&Object.assign(i,e),i.status=t,i}_resolveValuationApiBase(){let{config:e}=this;if(void 0!==e.valuationApiBase&&null!==e.valuationApiBase&&(""!==e.valuationApiBase||!e.isBuilder))return e.valuationApiBase;if(e.websiteApiGatewayUrl)return e.websiteApiGatewayUrl;throw Error("websiteApiGatewayUrl/valuationApiBase not configured for home valuation")}async _submitLead(e,t,i){let r=new AbortController,s=setTimeout(()=>r.abort(),1e4);try{let a=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),signal:r.signal});clearTimeout(s);let o=await a.text(),n=this._parseResponsePayload(o);if(!a.ok)throw this._createResponseError(n,a.status);if(n&&"success"===n.status&&n.redirectUrl){if(h(i))return n;if(!this._isSafeRedirectUrl(n.redirectUrl))return console.error("Home valuation: refusing redirect to unsupported protocol"),n;return this.window.location.href=n.redirectUrl,{redirected:!0,url:n.redirectUrl}}return n}catch(e){throw clearTimeout(s),e}}async _submitHomeValuationRequest(e){let t=this._resolveValuationApiBase();this._logLeadEvent("home_valuation_submission_started",e);try{let i=this._getRawAddress(e),r=null;try{r=await this._validateAddressSafely(i)}catch(t){throw this._logLeadEvent("home_valuation_address_validation_failed",e,t),t}let s=null;try{s=await this._getHomeValuationEstimateSafely(r)}catch(t){this._logLeadEvent("home_valuation_estimate_failed",e,t),s=null}let{structuredAddress:a,coordinates:o}=this._extractAddressAndCoordinates(r),n=`${t}${p}`,l=this._buildHomeValuationData(e,s,a,o),d=await this._submitLead(n,l,e.deadline);return this._logLeadEvent("home_valuation_submission_success",e),d}catch(t){throw t.userMessage||(t.userMessage=this._getUserFriendlyErrorMessage(t)),this._logLeadEvent("home_valuation_submission_failed",e,t),t}}async _validateAddressWithGoogleMaps(e){let{config:t,window:i}=this,r=t.googleMapsAPIKey;if(!r&&i.luxuryPresence?.mapApiLoader&&(r=await i.luxuryPresence.mapApiLoader.getMapApiKey()),!r)throw Error("Google Maps API key not configured");let s=new AbortController,a=setTimeout(()=>s.abort(),1e4);try{let t=await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key=${r}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({address:{addressLines:[e]},enableUspsCass:!1}),signal:s.signal});if(clearTimeout(a),!t.ok){let e=Error(`Address validation failed: ${t.status}`);throw e.status=t.status,e}return t.json()}catch(e){throw clearTimeout(a),e}}_hasMandatoryAddressFields(e){return!!(e.streetNumber&&e.streetName&&e.city&&e.state&&e.zipcode)}_logMissingAddressFields(e){let t=[];e.streetNumber||t.push("streetNumber"),e.streetName||t.push("streetName"),e.city||t.push("city"),e.state||t.push("state"),e.zipcode||t.push("zipcode"),console.log("Home valuation estimate skipped - missing required fields:",t.join(", "),"Available fields:",Object.keys(e).join(", "))}_buildAddressQueryString(e){return Object.entries(e).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}async _getHomeValuationEstimate(e=null){let t=`${this._resolveValuationApiBase()}${p}`;if(!e?.result?.address?.addressComponents)return null;let i=this._transformAddressComponents(e.result.address.addressComponents);if(!this._hasMandatoryAddressFields(i))return this._logMissingAddressFields(i),null;let r=this._buildAddressQueryString(i),s=`${t}?${r}`,a=new AbortController,o=setTimeout(()=>a.abort(),1e4);try{let e=await fetch(s,{headers:{Accept:"application/json"},signal:a.signal});if(clearTimeout(o),!e.ok){let t=Error(`Home valuation estimate failed: ${e.status}`);throw t.status=e.status,t}let t=await e.json();return t?.valueDollars??null}catch(e){throw clearTimeout(o),e}}}let g="middleName",y="redirect-pending",f=["name","firstName","lastName",g,"email","phone","phoneNumber","source","message","mlsId","sourceUrl"],v="lp_map_key_failed",w="oauthSuccess",b={cookieyes:{eventName:"cookieyes_consent_update",hasAnalyticsConsent:e=>(function(e){let t=e.cookie.match(/cookieyes-consent=([^;
2825]+)/);if(!t)return!1;try{let e=decodeURIComponent(t[1]);if(e.includes(",")){let t=e.split(",").map(e=>e.trim());if(t.some(e=>e.includes(":")))return t.some(e=>"analytics:yes"===e);return t.includes("analytics")}return e.includes("analytics")}catch(e){return!1}})(e),isAnalyticsAccepted:e=>Array.isArray(e?.accepted)&&e.accepted.includes("analytics")},"lp-consent":{eventName:"lp_consent_update",hasAnalyticsConsent:(e,t)=>!!t.__lpConsent?.state?.c?.analytics,isAnalyticsAccepted:e=>!!e?.choices?.analytics}};function S(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function _(e,t){t.forEach(t=>{let i=e[t];Array.isArray(i)&&0===i.length&&delete e[t]})}function I(e,t,i,r){let s=t.map(t=>(function e(t){return Array.isArray(t)?t.flatMap(t=>e(t)):"string"==typeof t?t.split(/\s+/).filter(Boolean):null==t?[]:[t]})(e[t])),a=r?.merge?s.flat():s.find(e=>e.length>0)??[];t.forEach(t=>{delete e[t]}),a.length>0&&(e[i]=[...new Set(a)])}function E(e){let t={...e};if(t.urlWebsite||(t.urlWebsite=null),t.urlYoutube=null,t.urlFacebook=null,t.urlInstagram=null,t.urlLinkedin=null,t.urlPodcast=null,t.urlTwitter=null,Array.isArray(e.socialLinks)){let i=[...e.socialLinks].sort((e,t)=>{let i=e.type?.toLowerCase()||"",r=t.type?.toLowerCase()||"";return i.localeCompare(r)});t.socialLinks=i;let r={youtube:"urlYoutube",facebook:"urlFacebook",instagram:"urlInstagram",linkedin:"urlLinkedin",podcast:"urlPodcast",twitter:"urlTwitter"};i.forEach(e=>{let i=r[e.type?.toLowerCase()??""];i&&(t[i]=e.link)})}return t}function A(e){return e&&Array.isArray(e)?e.map(e=>E(e)):e}function L(e){let{region:t}=e;if(!S(t))return e;let{schools:i,pois:r,...s}=t,a={...s,schools:S(i)?i.data??[]:[],...Array.isArray(r)?{pois:r.map(e=>({...e,category:"string"==typeof e.category?e.category.toUpperCase():e.category}))}:{}};return{...e,region:a}}function x(e){return e&&Array.isArray(e)?e.map(e=>L(e)):e}function $(e){let t=e.featuresAndAmenities;if(!Array.isArray(t))return e;let i=t.map(e=>({featureIds:e.featureIds??[],features:e.features??[],description:e.description}));return{...e,featuresAndAmenities:i}}function T(e){return e&&Array.isArray(e)?e.map(e=>$(e)):e}function C(e,t){return S(e)?t(e):e}function k(e,t){return Array.isArray(e)?t(e):e}var M={};M=` 2826 query PropertyDisclaimers($input: PropertyDisclaimersInput!) { 2827 propertyDisclaimers(input: $input) { 2828 feedId 2829 listingId 2830 resolvedFromListing 2831 listingCardAttribution 2832 listingDetailCourtesy 2833 listingDetailFooter 2834 logo 2835 } 2836 } 2837`;let P={mlsAttribution:"listingCardAttribution",mlsLogo:"logo",listingDetailCourtesy:"listingDetailCourtesy",listingDetailFooter:"listingDetailFooter"},U=new class{constructor(e){this.isBuilder=!1,this.companyId=null,this.websiteId=null,this.pageId=null,this.shareId=null,this.pageMeta=null,this.websiteApiGatewayUrl=null,this.buyerSellerServiceUrl=null,this.leadIngesterUrl=null,this.divolteServiceUrl=null,this.eventBus=null,this.templateId=null,this.myhomeDashboardEnabled=!1,this.mlsEnabled=!1,this.hstValuationRedirectEnabled=!1,this.hvStepTwoCaptureEnabled=!1,this.googleMapsAPIKey=null}get valuationApiBase(){return this.isBuilder?this.websiteApiGatewayUrl:""}destroy(){}setPage(e,t={}){this.pageId=e,this.shareId=t.shareId||null,this.pageMeta={sourceResource:t.sourceResource,pageElementId:t.pageElementId,pageQueryVariables:t.pageQueryVariables||{}}}setIsBuilder(e){this.isBuilder=e}setCompany(e,t={}){this.companyId=e}setWebsite(e,t={}){this.websiteId=e,t.myhomeDashboardEnabled&&(this.myhomeDashboardEnabled=t.myhomeDashboardEnabled),t.mlsEnabled&&(this.mlsEnabled=t.mlsEnabled),t.hstValuationRedirectEnabled&&(this.hstValuationRedirectEnabled=t.hstValuationRedirectEnabled),t.hvStepTwoCaptureEnabled&&(this.hvStepTwoCaptureEnabled=t.hvStepTwoCaptureEnabled)}setWebsiteApiGatewayUrl(e,t={}){this.websiteApiGatewayUrl=e}setBuyerSellerServiceUrl(e,t={}){this.buyerSellerServiceUrl=e}setDivolteServiceUrl(e,t={}){this.divolteServiceUrl=e}setEventBusUrl(e,t={}){this.eventBusUrl=e}setTemplateId(e,t={}){this.templateId=e}setLeadIngesterUrl(e,t={}){this.leadIngesterUrl=e}setGoogleMapsAPIKey(e,t={}){this.googleMapsAPIKey=e}setEventBus({enabled:e,apiKey:t,url:i}){this.eventBus={enabled:e,apiKey:t,url:i}}}({}),N=new class extends d{constructor(e,t,i){super(e,t,i),this.setLoginState=this.setLoginState.bind(this),this.pageId=null,this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}initialize(e){try{let{config:t,document:i}=this;this.pageId=t.pageId,this.modals=i.querySelectorAll("body > #modals >
2837 .modal"),e.modals.forEach(e=>{this._attachModalHandler(e)})}catch(e){console.log(e)}}destroy(){let{document:e}=this;this.exitModalEventListeners.forEach(t=>{e.removeEventListener("mouseout",t)}),this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}setModalWithExpiry(e){let{window:t}=this,i=new Date().getTime()+864e5,r=`modal-controller-${e}`;try{t.localStorage.setItem(r,JSON.stringify(i))}catch(e){}}setLoginState(){let{window:e}=this;try{e.localStorage.setItem("isSignedUp","true")}catch(e){}}getModalWithExpiry(e){let{window:t}=this,i=t.localStorage,r=i.getItem(`modal-controller-${e}`);if(!r)return!1;let s=JSON.parse(r);return!(new Date().getTime()>s)||(i.removeItem(`modal-controller-${e}`),!1)}show(e,t={}){let{window:i}=this,r=this.getModalWithExpiry(e);(e&&!r||!0===t.forced)&&(i.lpUI.showModal(`modal-${e}`,t),this.setModalWithExpiry(e))}_attachModalHandler(e){let{pageId:t}=this,{trigger:i,pageSpecific:r}=e;(!r||e.pages.map(e=>e.pageId).includes(t))&&("EXIT"===i?this._exitModalHandler(e):"TIMER"===i?this._timerModalHandler(e):"FORCED"===i&&this._forcedModalHandler(e))}_exitModalHandler(e){let t=this,{document:i,exitModalTriggered:r}=this,{modalId:s}=e;function a(e){!r[s]&&(e.toElement||e.relatedTarget||(t.show(s),r[s]=!0))}i.addEventListener("mouseout",a),this.exitModalEventListeners.push(a)}_timerModalHandler(e){let{modalId:t,timerDelay:i}=e;setTimeout(()=>{this.show(t)},i)}_forcedModalHandler(e){let{modalId:t}=e,{window:i,document:r}=this;if("true"!==i.localStorage.getItem("isSignedUp")){let e=r.querySelector(`#modal-${t}`),s=e?.querySelector("form"),a=s?.dataset.delay||2e3;s.addEventListener("formsubmitted",()=>{this.setLoginState()}),i.addEventListener("oauthSuccess",()=>{this.setLoginState(),s.classList.add("success"),setTimeout(()=>{i.lpUI.hideModal(`modal-${t}`),s.reset(),s.classList.remove("success")},a)}),this.show(t,{forced:!0})}}}(U,window,document),R=new class extends d{constructor(e,t,i){super(e,t,i),this._boundClickHandler=this._buttonClickHandler.bind(this)}initialize(e={}){try{let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler),e.body.addEventListener("click",this._boundClickHandler)}catch(e){console.error(e)}}destroy(){let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler)}_buttonClickHandler(e){this._handleButtonClick(e).catch(e=>console.error(e))}async _handleButtonClick(e){let{window:t,document:i}=this,r=e.target.closest("button, a");if(!r)return;let s=r.dataset.type||"",a=r.href||r.dataset.href||"",o=r.target||"",{submit:n}=r.dataset;if(n){try{await this._handleSubmit(r)}catch(e){console.error(e)}((e,t=!1)=>{if(e){if(t)return window.open(e);window.location.assign(e)}})(a,"_blank"===o)}if(this._trackConversion(r),"VIDEO"===s)return void this._handleVideoButton(r);if("CONTACT_US"===s)return void this._handleContactUsButton(r);if("SUBSCRIBE"===s)return void t.lpUI.showModal("modal-global-subscribe");if("MY_ACCOUNT"===s)return void t.lpUI.showModal("modal-global-my-account");if("SHARE_POPUP"===s){let t=r.querySelector(".share-popup");t&&(t.style.display="flex"),e.stopPropagation();return}if("MODAL_"===s.substring(0,6)){let e=s.substring(6);t.lpUI.showModal(`modal-${e}`);return}if(a?.startsWith("mailto:")){let e=a.substring(7);i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Email",eventValue:e})}else if(a?.startsWith("tel:")){let e=a.substring(4);i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Phone",eventValue:e})}}async _handleSubmit(e){let t=e.closest("form"),{window:i}=this;return t?await i.luxuryPresence.contactForms.submitForm(t):null}_getVimeoSrc(e){if(!e||!e.includes("vimeo.com")||e.length>2e3)return null;let t=e.match(/(?:(?:www\.)?vimeo\.com\/(?:showcase\/\d+(?:\/video\/|\?video[=/])|channels\/(?:\w+\/)?|groups\/(?:[^/]*)\/videos\/|)|player\.vimeo\.com\/video\/)(\d+)(?:(?:\?.*&*h=|\/)+([\d,a-f]+))?/);if(!t)return null;let[,i,r]=t,s=`https://player.vimeo.com/video/${i}?`;return r&&(s+=`h=${r}&`),s+="autoplay=1"}_handleVideoButton(e){let{document:t}=this,i=e.closest("section"),{src:r}=e.dataset,s="";if(r&&(r.includes("youtube.com")||r.includes("youtu.be"))&&!r.includes("youtube.com/embed")){let e=r.match(/(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v=)
2837)|youtu.be\/)([a-zA-Z0-9_-]{6,11})/);e&&(s=e[1])}let a=this._getVimeoSrc(r);if(s?r=`https://youtube.com/embed/${s}?autoplay=1&controls=0`:a&&(r=a),!r||!i)return;let o=r.endsWith(".mp4")||r.endsWith(".webm")||r.includes("cloudinary.com"),n=` 2838 <div id="modal-${i.id}" class="modal visible"> 2839 <div class="modal-content"> 2840 <div class="lightbox-video"> 2841 <div class="video-player"> 2842 <div class="embed-container"> 2843 ${o?`<video controls autoplay src="${r}"></video>`:`<iframe frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="${r}"></iframe>`} 2844 </div> 2845 </div> 2846 </div> 2847 </div> 2848 <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button> 2849 </div> 2850 `;t.body.insertAdjacentHTML("beforeend",n);let l=t.getElementById(`modal-${i.id}`);l.querySelector(".close").addEventListener("click",()=>{l.remove()})}_handleContactUsButton(e){let{window:t,document:i}=this;i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"contact"}),t.lpUI.showModal("modal-global-contact-us",{scrollLock:!0})}_trackConversion(e){let{window:t,document:i}=this,{gtagConversionId:r,gtagConversionLabel:s,fbEventName:a}=e.dataset;if(r&&s){t.dataLayer&&t.dataLayer.length&&(t.dataLayer.some(e=>e.length&&"config"===e[0]&&e[1]===r)||i.sendGoogleTagManagerEvent("config",r));let e=`${r}/${s}`;i.sendGoogleTagManagerEvent("event","conversion",{send_to:e})}t.fbq&&a&&t.fbq("track",a,{})}}(U,window,document),B=new class extends d{constructor(e,t,i){super(e,t,i),this.validatedForms=[]}initialize(e={}){try{let{window:t,document:i}=this,{selector:r}=e,s=[];if(s=r?i.querySelectorAll(`${r} form[data-type="contact-form"]`):i.querySelectorAll('form[data-type="contact-form"]'),i.querySelectorAll('input[type="tel"]').length&&!t.libphonenumber&&t?.luxuryPresence?.libs){let{loadJs:e,jsLibsMap:i}=t.luxuryPresence.libs,{libphonenumber:r}=i;e(r.jsSrc,this.attachValidation.bind(this,s))}else this.attachValidation(s);this.validatedForms=this.validatedForms.concat(s)}catch(e){console.log(e)}}destroy(){this.validatedForms=[]}attachValidation(e){e.forEach(e=>{e.querySelectorAll("input, select, textarea").forEach(e=>{this.applyFieldValidation(e)})})}applyFieldValidation(e){"tel"===e.getAttribute("type")&&this._applyPhoneValidation(e)}_applyPhoneValidation(e){let{window:t}=this;if(t.libphonenumber){let i=t.libphonenumber.isValidPhoneNumber;e.addEventListener("keyup",function(){if(this.hasAttribute("required")||this.value.replace(/\s/g,"").length)try{let e=this.value;i(e,"US")?this.setCustomValidity(""):this.setCustomValidity("Please enter a valid phone number.")}catch(e){this.setCustomValidity("Please enter a valid phone number.")}else this.setCustomValidity("")})}}}(U,window,document),D=new class extends d{constructor(e,t,i){super(e,t,i),this.forms=[],this.homeValuationService=new m(e,t,i)}initialize(e={}){try{let{document:t}=this,{selector:i}=e,r=[];(r=i?t.querySelectorAll(`${i} form[data-type="contact-form"]`):t.querySelectorAll('form[data-type="contact-form"]')).forEach(e=>{this._attachSubmitHandler(e)}),this.forms=this.forms.concat(r)}catch(e){console.log(e)}}destroy(){this.forms=[]}submitForm(e){this._handleSubmit(null,e).catch(e=>console.error(e))}_attachValidation(e){let{window:t}=this;e.querySelectorAll("input, select, textarea").forEach(e=>{t.luxuryPresence.validation.applyFieldValidation(e)})}_attachSubmitHandler(e){e.addEventListener("submit",t=>this._handleSubmit(t,e))}_extractFormValues(e){let t=new FormData(e),i={},r=[],s=/^name(?:-\d+)?$/;return t.forEach((e,t)=>{if("string"==typeof e){let a=e.trim();s.test(t)&&a&&r.push(a);let o=i[t];i[t]=o?`${o} ${a}`:a}else i[t]=e}),r.length?i.name=r.join(" ").trim():!i.name&&i.firstName&&(i.name=i.firstName,i.lastName&&(i.name+=` ${i.lastName}`)),this._deriveNameParts(i)}_deriveNameParts(e){if(e.firstName||!e.name)return e;let t=e.name.indexOf(" ");return -1===t?{...e,firstName:e.name}:{...e,firstName:e.name.slice(0,t),lastName:e.lastName||e.name.slice(t+1).trim()}}_buildSubmissionData(e,t,i){let{window:r,config:s}=this,a=Object.keys(e).filter(e=>!f.includes(e)).reduce((t,i)=>(t[i]=e[i],t),{}),{pageId:o,companyId:n,websiteId:l,pageMeta:d}=s,c=r.localStorage.getItem("utm_vars")||"{}",u=r.localStorage.getItem("referrer")||"",h=this._getFormId(i);return{activity:{author_email:e.email,author_name:e.name,firstName:e.firstName||void 0,lastName:e.lastName||void 0,author_phone:e.phone||e.phoneNumber,activity_source:e.source||"CONTACT_INQUIRY",comments_attributes:[{text:e.message||void 0}],source_url:r.location.href,content:{...a,...JSON.parse(c)}},page:{pageId:o,companyId:n,websiteId:l,pageMeta:{...d,formId:h}},companyId:n,referrer:u,fields:t}}_handleSubmissionSuccess(e){let{window:t}=this,i=e.dataset.delay||2e3;e.classList.remove("loading"),e.classList.remove("error"),e.classList.add("success"),e.querySelectorAll(".success").forEach(e
2850=>e.classList.remove("hide")),e.dispatchEvent(new Event("formsubmitted")),setTimeout(()=>{t.lpUI.hideClosestModal(e),e.reset(),t.lpUI.sideMenuHide(),e.querySelectorAll(".success").forEach(e=>e.classList.add("hide")),e.classList.remove("success")},i)}async _handleSubmit(e,t){if(e&&e.preventDefault(),!t.classList.contains("loading")){this._hideSubmissionError(t),t.classList.remove("error"),t.classList.add("loading");try{let e=this._extractFormValues(t);if(e.middleName)return void t.classList.remove("loading");let i=this._getFields(t),r=this._buildSubmissionData(e,i,t);u(this.window,this.document);let s=await this._waitForLeadSubmit(e=>this._submitLeadRequest(r,e));if(this._sendGAEvent(r),s?.redirected)return void this._showRedirectPending(t);this._handleSubmissionSuccess(t)}catch(e){console.error("Form submission failed:",e),t.dispatchEvent(new Event("formsubmiterror")),t.classList.remove("loading"),t.classList.add("error"),e.userMessage?this._showSubmissionError(t,e.userMessage):this._showSubmissionError(t,"Something went wrong. Please try again.")}}}async _waitForLeadSubmit(e){let t,i={expired:!1,expiresAt:Date.now()+6e3},r=new Promise(e=>{t=setTimeout(()=>{i.expired=!0,e(null)},6e3)}),s=e(i).catch(e=>{if(h(i))return null;throw e});try{return await Promise.race([s,r])}finally{clearTimeout(t)}}_showRedirectPending(e){if(e.classList.add(y),e.querySelector(`.${y}__indicator`))return;let t=this.document.createElement("div");t.className=`${y}__indicator`,t.setAttribute("role","status"),t.setAttribute("aria-label","Loading"),t.innerHTML='<span class="lp-i lp-i--spinner lp-i--pulse" aria-hidden="true"></span>',e.appendChild(t)}_aliasUserWithEventBus(e){try{if(!this.window.eventBusProvider?.alias||!this.window.eventBusProvider?.isIdentified||!this.window.eventBusProvider?.getDistinctId||!this.window.LuxuryPresenceEventBus?.generateUUIDv5FromCompanyEmail)return;if(this.window.eventBusProvider.isIdentified())return void console.log("[EventBus] User already identified, skipping alias");let t=e.activity?.author_email,{companyId:i}=this.config;if(!t||!i)return void console.warn("[EventBus] Missing required data for user alias");let r=this.window.eventBusProvider.getDistinctId();if(!r)return void console.warn("[EventBus] No anonymous ID available for alias");let s=this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(i,t);this.window.eventBusProvider.alias({anonId:r,canonicalId:s}),console.log("[EventBus] User aliased with canonical ID")}catch(e){console.error("[EventBus] User alias failed:",e)}}async _submitLeadRequest(e,t){let{config:i}=this;return(this._aliasUserWithEventBus(e),i.myhomeDashboardEnabled&&(e.activity?.activity_source==="HOME_VALUATION"||e.activity?.activity_source==="HOME_VALUE"))?this.homeValuationService._submitHomeValuationRequest({...e,deadline:t}):fetch(`${i.leadIngesterUrl}/api/v1/leads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.ok?e.json():e.json().then(e=>{throw e}))}_sendGAEvent(e){let{document:t}=this,i={hitType:"event",eventCategory:"button",eventAction:"click"};switch(e.activity.activity_source){case"NEWSLETTER_SIGNUP":i.eventLabel="Newsletter",t.sendGoogleTagManagerEvent("event","newsletter_signup");break;case"HOME_SEARCH":i.eventLabel="HomeSearch",t.sendGoogleTagManagerEvent("event","home_search");break;case"HOME_VALUE":case"HOME_VALUATION":i.eventLabel="HomeValue",t.sendGoogleTagManagerEvent("event","home_valuation");break;case"EBOOK":i.eventLabel="Ebook",t.sendGoogleTagManagerEvent("event","ebook_download");break;default:i={hitType:"pageview",page:"/thank-you"},t.sendGoogleTagManagerEvent("event","contact_inquiry")}t.sendGoogleAnalyticsEvent(i)}_getFields(e){let t=e.querySelectorAll("input, select, textarea"),i={};return t.forEach(t=>{let{id:r,name:s,type:a}=t;if(s===g)return!0;let o="";if(r){let i=e.querySelector(`label[for='${r}']`);i?o=i.textContent.trim():t.placeholder&&(o=t.placeholder.trim())}i[s]={label:o,type:t.tagName,inputType:"INPUT"===t.tagName?a:"text"}}),i}_getFormId(e){let t=e.closest("section[id^='section-'], footer[id], .modal[id^='modal-']");return t?.id?this._cleanFormId(t.id):""}_cleanFormId(e){for(let t of["section-","modal-"])if(e.startsWith(t))return e.substring(t.length);return e}_showSubmissionError(e,t){let i=e.querySelector(".submission-error-message");i||((i=this.document.createElement("div")).className="submission-error-message",i.setAttribute("role","alert"),e.appendChild(i)),i.textContent=t||"Something went wrong. Please try again.",i.style.display="block"}_hideSubmissionError(e){let t=e.querySelector(".submission-error-message");t&&(t.style.display="none")}}(U,window,document),O=new class extends d{constructor(e,t,i){super(e,t,i),this.retries=3,this.callbacks=[],this.id=`__googleMapsScriptId${Date.now()}`,this._apiKey="",this.reset()}set apiKey(e){this._apiKey=e,this.config.setGoogleMapsAPIKey(e)}get apiKey(){return this._apiKey}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.failed=!1,this.errors=[],this.onerrorEvent=null}destroy(){this.reset()}async getMapApiKey(){if(this.apiKey)return this.apiKey;let e=this._hadPreviousFailure(),t=!1;for(let i=1;i<=3;i+=1){let r=e&&!t;try{let e=await fetch(this._getMapKeyUrl(i,r));if(t=t||r,this._setFailureFlag(!1),!e.ok)throw Error(`Failed to fetch API key: ${e.status}`);let s=await e.text();if(!s)return"";return this.apiKey=s,this.apiKey}catch(e){console.error(e),i<3&&await this._delay(300*2**(i-1))}}return this._setFailureFlag(!0),""}_getMapKeyUrl(e,t){let i=[];e>1&&i.push(`attempt=${e}`),t&&i.push("recovered_after_failure=1");let r=i.length?`?${i.join("&")}`:"";return`${this._getBaseUrl()}/api/v1/map${r}`}_hadPreviousFailure(){try{return"1"===this.window.sessionStorage.getItem(v)}catch(e){return!1}}_setFailureFlag(e){try{e?this.window.sessionStorage.setItem(v,"1"):this.window.sessionStorage.removeItem(v)}catch(e){}}_delay(e){return new Promise(t=>{this.window.setTimeout(t,e)})}async createUrl(){let e=await this.getMapApiKey();if(!e)throw Error("Refusing to load Google Maps without an API key");
2850let t="https://maps.googleapis.com/maps/api/js";return t+`?callback=__googleMapsCallback&key=${e}&libraries=places`}async setScript(){let e;if(this.document.getElementById(this.id))return void this.callback();try{e=await this.createUrl()}catch(e){console.error(e),this.failed=!0,this.loading=!1,this.onerrorEvent=e,this.callback();return}let t=this.document.createElement("script");t.id=this.id,t.type="text/javascript",t.src=e,t.onerror=this.loadErrorCallback.bind(this),t.defer=!0,t.async=!0,this.document.head.appendChild(t)}loadErrorCallback(e){if(this.errors.push(e),this.errors.length<=this.retries){let e=this.errors.length*2**this.errors.length;console.log(`Failed to load Google Maps script, retrying in ${e} ms.`),setTimeout(()=>{this.deleteScript(),this.setScript().catch(e=>console.error(e))},e)}else this.failed=!0,this.onerrorEvent=e,this.callback()}deleteScript(){let e=this.document.getElementById(this.id);e&&e.remove()}load(){return this.loadPromise()}loadPromise(){return new Promise((e,t)=>{this.loadCallback(i=>{i?t(i):e()})})}loadCallback(e){this.callbacks.push(e),this.execute()}setCallback(){this.window.__googleMapsCallback=this.callback.bind(this)}resetIfRetryingFailed(){this.failed&&this.reset()}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach(e=>{e(this.onerrorEvent)}),this.callbacks=[]}execute(){this.window.google&&this.window.google.maps&&this.window.google.maps.version&&this.callback(),this.resetIfRetryingFailed(),this.done?this.callback():this.loading||(this.loading=!0,this.setCallback(),this.setScript().catch(e=>console.error(e)))}_getBaseUrl(){let{isBuilder:e,websiteApiGatewayUrl:t}=this.config;return e?t:""}resizeStaticMapDimensions(e,t){if(e<=1024&&t<=1024)return{width:e,height:t};let i=Math.min(1024/e,1024/t);return{width:parseInt(e*i),height:parseInt(t*i)}}convertThemeToStaticApiUrl(e){return e.map(e=>{let t=e.stylers.reduce((e,t)=>{let i=t.visibility?`visibility:${t.visibility}`:"",r=t.color?`color:${t.color.replace("#","0x")}`:"",s=t.lightness?`lightness:${t.lightness}`:"";return`${e}|${i}${r}${s}`},""),i=e.elementType?`|element:${e.elementType}`:"";return`feature:${e.featureType}${i}${t}`})}async getMapApiSignedUrl(e){try{let t=await fetch(`${this._getBaseUrl()}/api/v1/map/signature?${e}`);if(!t.ok)throw Error("Failed to fetch signed URL");let{url:i}=await t.json();return i}catch(e){return console.error(e),""}}generateStaticMapUrl(e,t,i,r,s,a){let{width:o,height:n}=this.resizeStaticMapDimensions(s,a),l={center:`${e},${t}`,zoom:i,scale:2,size:`${o}x${n}`,key:this.apiKey};r&&(l.style=this.convertThemeToStaticApiUrl(r));let d=new URLSearchParams;return Object.entries(l).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>d.append(e,t.toString())):d.append(e,t.toString())}),`https://maps.googleapis.com/maps/api/staticmap?${d.toString()}`}async generateDigitallySignedStaticMapUrl({srcWidth:e,srcHeight:t,theme:i,...r}){let{width:s,height:a}=this.resizeStaticMapDimensions(e,t),o={...r,size:`${s}x${a}`};i&&(o.style=this.convertThemeToStaticApiUrl(i));let n=new URLSearchParams;Object.entries(o).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.append(e,t.toString())):n.append(e,t.toString())});let l=n.toString();try{return await this.getMapApiSignedUrl(l)}catch(e){return console.error(e),""}}}(U,window,document),q=new class extends d{destroy(){}updateQueryString(e,t,i){i||(i=this.window.location.href);let r=RegExp(`([?&])${e}=.*?(&|#|$)`,"i"),s="";null!=t&&(Array.isArray(t)?t.length&&(s=this.serializeArray(e,t)):"object"==typeof t?(r=RegExp(`([?&])${e}\\[[^=]*\\]=.*?(&|#|$)`,"i"),s=this.serializeObj(t,"",e)):s=`${e}=${encodeURIComponent(t)}`);let a=i.split("#"),o=a[0];if(r.test(i)){let e=o;for(s=s?`$1${s}$2`:"$1";r.test(e);)o=e.replace(r,s),e=e.replace(r,"$1");o=o.replace(/(&|\?)$/,"")}else if(s){let e=-1!==o.indexOf("?")?"&":"?";o+=`${e}${s}`}return void 0!==a[1]&&null!==a[1]&&(o+=`#${a[1]}`),o}getParameterByName(e,t){t||(t=this.window.location.href),e=e.replace(/[[\]]/g,"\\$&");let i=RegExp(`[?&]${e}(=([^&#]*)|&|#|$)`),r=Array.from(RegExp.prototype[Symbol.matchAll].call(i,t)).flat();if(!r.length){let i=RegExp(`[?&]${e}(\\[.*?\\])=(.*?)(?=&|#|$)`,"g");return r=Array.from(RegExp.prototype[Symbol.matchAll].call(i,t)).flat(),this._parseParamToObject(r,"advancedFilters"===e)}return r.length>3?r.reduce((e,t,i)=>((i+1)%3==0&&e.push(decodeURIComponent(t.replace(/\+/g," "))),e),[]):r[2]?decode
2850URIComponent(r[2].replace(/\+/g," ")):""}makePageKey(e){return e.replace("section-","").replace(/-/g,"")}makeParamKey(e,t){return e.global?e.urlKey:`${t}-${e.urlKey}`}deserializeParams(e,t){let i={},r=this.makePageKey(t),s=this.getParameterByName(r);return s&&(i.page=parseInt(s)),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,r),s=this.getParameterByName(t);if("int"===e.type)isFinite(s=parseInt(s))||(s=null);else if("bool"===e.type||"boolean"===e.type)s="true"===s||"false"!==s&&null;else if("json"===e.type)try{s=JSON.parse(s)}catch(e){}i[e.formKey||e.param]=s}),i}serializeParams(e,t,i){let r=this.window.location.href,s=this.makePageKey(t);return r=this.updateQueryString(s,i.page,r),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,s),a=i[e.formKey||e.param];"json"===e.type&&null!=a&&(a=JSON.stringify(a)),r=this.updateQueryString(t,a,r)}),r}formatSliderAtom(e,t=""){return t+(Number.isInteger(e)?e:e.toFixed(2))}formatSliderValue(e,t="",i=""){return e<1e3?this.formatSliderAtom(e,t):e<1e6?`${this.formatSliderAtom(e/1e3,t)}${i}K`:`${this.formatSliderAtom(e/1e6,t)}${i}M`}formatSliderPriceRange(e,t,i,r){return t.min===e&&0!==e?`${r.lowPrefix}${this.formatSliderValue(e,i," ")}`:t.max===e?`${this.formatSliderValue(e,i," ")}${r.highSuffix}`:`${this.formatSliderValue(e,i," ")}`}formatSliderAreaRange(e,t,i,r){return t.min===e&&0!==e?`${r.lowPrefix}${this.formatSliderValue(e)} ${i}`:t.max===e?`${this.formatSliderValue(e)}${r.highSuffix} ${i}`:`${this.formatSliderValue(e)} ${i}`}getSearchFormValues(e){let{queryElement:t,priceSliderElement:i,areaSliderElement:r,neighborhoodSelect:s}=e,a={};if(t&&(a.search=t.value||null),i){let e=i.value.split(";"),t=parseInt(i.dataset.min),r=parseInt(i.dataset.max),s=parseInt(e[0]),o=parseInt(e[1]);a.priceMin=s!==t?s:null,a.priceMax=o!==r?o:null}if(r){let e=r.value.split(";"),t=parseInt(r.dataset.min),i=parseInt(r.dataset.max),s=parseInt(e[0]),o=parseInt(e[1]);a.areaMin=s!==t?s:null,a.areaMax=o!==i?o:null}return s&&(a.neighborhoodId=s.value||null),a}serializeObj(e,t="",i=""){let r=[];for(let s in e)if(e.hasOwnProperty(s)){let a,o=e[s];if(i){let e=t?`[${t}][${s}]`:`[${s}]`;a=`${i}${e}`}else a=t?`${t}[${s}]`:s;null!==o&&Array.isArray(o)?o.length&&r.push(this.serializeArray(a,o)):null!==o&&"object"==typeof o?r.push(this.serializeObj(o,a)):r.push(`${a}=${encodeURIComponent(o)}`)}return r.join("&")}serializeArray(e,t,i=""){let r=[];return t.forEach(t=>{let s=i?`${i}${e}`:e;r.push(`${s}=${encodeURIComponent(t)}`)}),r.join("&")}_parseParamToObject(e,t=!1){if(!e.length)return null;let i={};for(let r=0;r<e.length;r++)if((r+1)%3==0){let s=decodeURIComponent(e[r].replace(/\+/g," ")),a=e[r-1];Object.assign(i,this._setObjectPath(a,s,i,t))}return i}_setObjectPath(e,t,i,r=!1){let s=e.split(/[\[\]]/).filter(Boolean),a=["in","nin","btw","ciin","cinin"],o={},n=o,l=((e,t,i)=>{if(!t)return;let r=(Array.isArray(t)?t:t.match(/([^[.\]])+/g)).reduce((e,t)=>e&&e[t],e);return void 0===r?i:r})(i,s.join("."));return s.forEach((e,o)=>{o===s.length-1?l?n[e]=Array.isArray(l)?[...l,t]:[l,t]:n[e]=r&&a.includes(e)?[t]:t:(n[e]=i[e]?i[e]:{},n=n[e])}),o}}(U,window,document),V=new class extends d{constructor(e,t,i){super(e,t,i),this._createLightbox=this._createLightbox.bind(this),this.expandSliders=[]}initialize(e={}){try{let{document:e}=this,t=e.querySelectorAll(".has-mobile-expand");t.forEach(e=>{this._addExpandButton(e)}),this.expandSliders=this.expandSliders.concat(t)}catch(e){console.log(e)}}destroy(){let{document:e}=this;e.querySelectorAll(".lp-expand-btn, .lp-expand-btn-wrapper").forEach(e=>e.remove()),this.expandSliders=[]}_addExpandButton(e){let{document:t}=this,i=e.closest("section[id]"),r=e.dataset.append,s=i.querySelector(".lp-expand-btn");if(!s)if((s=t.createElement("button")).className="lp-expand-btn",s.setAttribute("aria-label","Open a lightbox"),s.innerHTML='<span class="lp-i lp-i--expand-alt" aria-hidden="true"></span>',r){let e=i.querySelector(r);e&&e.appendChild(s)}else{let i=t.createElement("div");i.className="lp-expand-btn-wrapper",i.style.position="relative",i.appendChild(s),e.parentNode.insertBefore(i,e.nextSibling)}s.addEventListener("click",()=>{this._createLightbox({slider:e,section:i})})}_createLightbox({slider:e,section:t,initialIndex:i}){let{window:r,document:s}=this,a=`lightbox-for-${t?.id}`,o=r.$&&r.$.fn.slick,n=o&&e.slick,l="function"==typeof r.Splide,d=e.classList.contains("is-initialized")&&e.classList.contains("splide");function c(){let t=s.createElement("div");t.id=a,t.className="lp-lightbox",t.setAttribute("tabindex","-1"),t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.innerHTML=` 2851 <button class="lp-lightbox__close" aria-label="close modal"></button> 2852 <div class="lp-lightbox__content"> 2853 <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery"> 2854 <div class="splide__arrows"> 2855 <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button> 2856 <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button> 2857 </div> 2858 <div class="splide__track"> 2859 <ul class="splide__list"></ul> 2860 </div> 2861 </div> 2862 </div> 2863 `,"function"==typeof r.lpUI.requestScrollLock?r.lpUI.requestScrollLock(a):s.body.style.overflow="hidden",s.body.appendChild(t);let o=t.querySelector(".lp-lightbox__carousel"),n=o.querySelector(".splide__list");t.classList.add("show"),(d?e.querySelectorAll(".splide__slide:not(.splide__slide--clone) img"):e.querySelectorAll("img")).forEac
2863h(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let i=s.createElement("li");i.className="lp-lightbox__slide splide__slide",i.appendChild(t),n.appendChild(i)});let l=new r.Splide(o,{rewind:!0,arrows:!0,arrowPath:"",type:"loop",clones:1,pagination:!1,perPage:1,perMove:1});l.mount(),void 0!==i&&i>=0&&l.go(i),setTimeout(()=>{t.focus()},100);let c=e=>{if(!t.classList.contains("show"))return;let i=t.querySelector(".splide__arrow--prev"),r=t.querySelector(".splide__arrow--next"),s=t.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&i?(e.preventDefault(),i.click()):"ArrowRight"===e.key&&r?(e.preventDefault(),r.click()):"Escape"===e.key&&s&&(e.preventDefault(),s.click())};s.addEventListener("keydown",c),t.querySelector(".lp-lightbox__close").addEventListener("click",()=>{s.removeEventListener("keydown",c),t.classList.remove("show"),l&&l.destroy(),"function"==typeof r.lpUI.releaseScrollLock?r.lpUI.releaseScrollLock(a):s.body.style.overflow="",t.remove()})}if("function"==typeof r.lpUI.requestScrollLock?r.lpUI.requestScrollLock(a):s.body.style.overflow="hidden",o&&!d){let t,i,o,l,d;i={arrows:!0,dots:!1,infinite:!0,draggable:!0,prevArrow:'<button type="button" class="lp-lightbox-arrow--prev lp-lightbox-arrow" aria-label="Previous"></button>',nextArrow:'<button type="button" class="lp-lightbox-arrow--next lp-lightbox-arrow" aria-label="Next"></button>'},(o=s.createElement("div")).id=a,o.className="lp-lightbox",o.setAttribute("tabindex","-1"),o.setAttribute("role","dialog"),o.setAttribute("aria-modal","true"),o.innerHTML=` 2864 <button class="lp-lightbox__close" aria-label="close modal"></button> 2865 <div class="lp-lightbox__content"> 2866 <div class="lp-lightbox__carousel"></div> 2867 </div> 2868 `,s.body.appendChild(o),l=o.querySelector(".lp-lightbox__carousel"),o.classList.add("show"),n?(t=e.slick.$slides.find("img"),i.initialSlide=e.slick?.currentSlide||0,t.each(function(){r.$(".lp-lightbox__carousel").append(r.$(this).clone(!1).removeAttr("style").wrap('<div class="lp-lightbox__slide"></div>').parent())})):(t=e.querySelectorAll("img")).forEach(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let i=s.createElement("div");i.className="lp-lightbox__slide",i.appendChild(t),l.appendChild(i)}),r.$(l).slick(i),setTimeout(()=>{o.focus()},100),d=e=>{if(!o.classList.contains("show"))return;let t=o.querySelector(".lp-lightbox-arrow--prev"),i=o.querySelector(".lp-lightbox-arrow--next"),r=o.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&t?(e.preventDefault(),t.click()):"ArrowRight"===e.key&&i?(e.preventDefault(),i.click()):"Escape"===e.key&&r&&(e.preventDefault(),r.click())},s.addEventListener("keydown",d),o.querySelector(".lp-lightbox__close").addEventListener("click",()=>{s.removeEventListener("keydown",d),o.classList.remove("show");let t=l?.slick?r.$(l).slick("slickCurrentSlide"):0;l?.slick&&r.$(l).slick("unslick"),n&&r.$(e).slick("slickGoTo",t),"function"==typeof r.lpUI.releaseScrollLock?r.lpUI.releaseScrollLock(a):s.body.style.overflow="",o.remove()})}else l?c():(r.luxuryPresence.libs.loadCss(r.luxuryPresence.libs.jsLibsMap.splide.cssSrc),r.luxuryPresence.libs.loadJs(r.luxuryPresence.libs.jsLibsMap.splide.jsSrc,()=>{c(),r.luxuryPresence.libs.jsLibsMap.splide.isLoaded=!0}))}}(U,window,document),F=new class extends d{destroy(){this.window.divolte||(this.window.divolteLp=function(){(this.window.divolteLp.q=this.window.divolteLp.q||[]).push(arguments)})}initialize(e={}){let{divolteServiceUrl:t}=this.config;t&&!this.window.divolte&&this.loadScript()}loadScript(){let{divolteServiceUrl:e}=this.config,t=this.document.createElement("script");t.id="divolte-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/divolte.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){(this.window.divolteLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.divolteLp=this.divolteLp.bind(this)}divolteLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpEvent(e,t){if(!e.includes("pageView"))return void console.log(`${e} IS NOT SUPPORTED`);let{companyId:i,templateId:r,websiteId:s,pageId:a,shareId:o,pageMeta:n}=this.config;this.window.divolte.signal(e,Object.assign({companyId:i,templateId:r,websiteId:s,pageId:a,shareId:o,pageMeta:n},t))}sendLpPageView(){this.sendLpEvent("pageView",{})}}(U,window,document),j=new class extends d{constructor(e,t,i){super(e,t,i)}initialize(e={}){(void 0!==e.enabled?e.enabled:this.config.eventBus?.enabled)&&this.config.eventBus?.apiKey&&this.config.eventBus?.url&&this.loadScript()}loadScript(){let{eventBusUrl:e}=this.config,t=this.document.createElement("script");t.id="posthog-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/v2.8.0/event-bus-js.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){this.window.LuxuryPresenceEventBus&&(this.window.eventBusProvider=this.window.LuxuryPresenceEventBus.createEventBusProvider({apiKey:this.config.eventBus.apiKey,host:this.config.eventBus.url,defaultSource:"frontend://website-render-engine"}
2868)),(this.window.eventBusLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.eventBusLp=this.eventBusLp.bind(this)}destroy(){if(!this.window.eventBusProvider){this.window.eventBusLp=function(){(this.window.eventBusLp.q=this.window.eventBusLp.q||[]).push(arguments)};return}this.window.eventBusProvider.shutdown()}sendLpEvent(e,t){if("user.activity.page.viewed"!==e)return void console.log(`${e} IS NOT SUPPORTED`);if(!this.window.eventBusProvider)return;let{companyId:i}=this.config;try{this.window.eventBusProvider.capture(e,{company:i,data:{}})}catch(e){console.log("EventBus capture error:",e)}}eventBusLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpPageView(){this.sendLpEvent("user.activity.page.viewed",{})}}(U,window,document),H=new class extends d{constructor(e,t,i){super(e,t,i),this.successListeners=[],this._listenToMessages=this._listenToMessages.bind(this),this._listenToOneTapMessage=this._listenToOneTapMessage.bind(this)}initialize(e={}){try{e.googleSignOnEnabled&&!e.iframe&&this._renderGoogleOneTap(),this.document.querySelectorAll('div[data-signin-type="google-sign-in"]').forEach(e=>this._convertGoogleSignIn(e)),this.document.querySelectorAll('div[data-signin-type="facebook-sign-in"]').forEach(e=>this._convertFacebookSignIn(e))}catch(e){console.log(e)}}destroy(){this.successListeners.forEach(e=>{this.window.removeEventListener("message",this._listenToMessages),this.window.removeEventListener("message",this._listenToOneTapMessage),this.window.removeEventListener(w,this.window[e])})}_renderGoogleOneTap(){if(!this._isGoogleOneTapOnCooldown()){let e=this.document.createElement("div");google.accounts.id.initializeIntermediate({src:this._buildUrlAndCopyAttributes(e,e,"googleOneTap")}),this.window.localStorage.removeItem("googleOneTapExpiration"),this.window.addEventListener("message",this._listenToOneTapMessage)}}_listenToOneTapMessage(e){let t="show_intermediate_iframe",{buyerSellerServiceUrl:i}=this.config,{data:r,origin:s}=e,{type:a,height:o,event:n,source:l,token:d}=r;if(a===t||"hide_intermediate_iframe"===a){let e=this.document.getElementById("onetap_google_intermediate_iframe");e&&(e.style.height=o,e.style.display=a===t?"unset":"none")}s===i&&"GOOGLE_SIGN_ON"===l&&("success"===n?(this._setExpirationLsItem(864e5),this._handleQualifyingQuestionsModal(d)):"cancel"===n&&this._setExpirationLsItem(72e5))}_setExpirationLsItem(e){let t=new Date().getTime()+e;this.window.localStorage.setItem("googleOneTapExpiration",t)}_isGoogleOneTapOnCooldown(){return Number(this.window.localStorage.getItem("googleOneTapExpiration"))>new Date().getTime()}_convertGoogleSignIn(e){this._replaceWithIframe("googleSignIn",e)}_convertFacebookSignIn(e){this._replaceWithIframe("facebookSignIn",e)}_replaceWithIframe(e,t){this._attachSuccessCallback(t);let i=this.document.createElement("iframe");i.src=this._buildUrlAndCopyAttributes(t,i,e),i.dataset.isSocialOauthButton=!0,t.replaceWith(i)}_listenToMessages(e){let{buyerSellerServiceUrl:t}=this.config;if(e.origin===t&&"success"===e.data.event){let e=new Event(w);this.window.dispatchEvent(e),u(this.window,this.document),this.successListeners.forEach(t=>{this.window[t]?this.window[t](e):console.error(`Callback function ${t} not found on window object`)}),this.document.documentElement.classList.add("is-login-success")}}_attachSuccessCallback(e){this.window.addEventListener("message",this._listenToMessages);let t=e.dataset.onSuccessFunctionName;t&&this.successListeners.push(t)}_buildUrlAndCopyAttributes(e,t,i){let{buyerSellerServiceUrl:r,companyId:s,websiteId:a,pageId:o,pageMeta:n}=this.config,{location:l}=this.window,d=l.origin+l.pathname,c=new URL(`${r}/buttons/${i}`),u=this.window.localStorage.getItem("utm_vars"),h=this.window.localStorage.getItem("referrer");c.searchParams.append("companyId",s),c.searchParams.append("websiteId",a),c.searchParams.append("pageId",o),c.searchParams.append("sourceUrl",d),c.searchParams.append("pageMeta",JSON.stringify(n)),u&&c.searchParams.append("utm",u),h&&c.searchParams.append("referrer",h);let p=["data-size","data-width","data-text","data-button-type","data-shape","data-layout","data-max-rows","data-use-continue-as","data-type","data-theme","data-logo_alignment","data-locale"];
2868return Array.from(e.attributes).forEach(e=>{p.includes(e.nodeName)?c.searchParams.append(e.nodeName,e.nodeValue):t.setAttribute("id"===e.nodeName?"data-id":e.nodeName,e.nodeValue)}),c.toString()}_decodeToken(e){try{let t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),i=4-t.length%4,r=4===i?t:t+"=".repeat(i);return JSON.parse(atob(r))}catch(e){return null}}_handleQualifyingQuestionsModal(e){if(e&&this.window.luxuryPresence&&this.window.luxuryPresence.qualifyingQuestionsModal){let t=this._decodeToken(e);t&&t.email&&this.window.luxuryPresence.qualifyingQuestionsModal.showModal(t.email,"Google Sign On")}}}(U,window,document),G=new class extends d{constructor(e,t,i){super(e,t,i),this.showModal=this.showModal.bind(this),this.hasModalBeenSubmitted=this.hasModalBeenSubmitted.bind(this),this.modalId="qualifying-questions-modal",this.cookieKey="qualifyingQuestionsModalSubmitted",this.qualifyingQuestionsModalEnabled=!0,this.eventListeners=[],this.timeouts=[]}initialize(e={}){this.qualifyingQuestionsModalEnabled=e.qualifyingQuestionsModalEnabled??this.qualifyingQuestionsModalEnabled,this.qualifyingQuestionsModalEnabled&&this.attachModalCloseListeners()}destroy(){this.eventListeners.forEach(({element:e,event:t,handler:i})=>{e&&e.removeEventListener&&e.removeEventListener(t,i)}),this.timeouts.forEach(e=>{clearTimeout(e)}),this.restoreBodyScroll(),this.eventListeners=[],this.timeouts=[]}hasModalBeenSubmitted(){return"true"===this.getCookie(this.cookieKey)}setModalSubmittedCookie(){this.setCookie(this.cookieKey,"true",365)}showModal(e,t){!this.qualifyingQuestionsModalEnabled||this.hasModalBeenSubmitted()||(this.updateEmailValue(e),this.updateTriggerSourceValue(t),this.showModalElement())}getModalElement(){let e=this.document.getElementById(this.modalId);return e||console.error("Modal element not found:",this.modalId),e}updateEmailValue(e){let t=this.getModalElement();if(!t)return;let i=t.querySelector('input[name="email"]');i&&"string"==typeof e&&(i.value=e)}updateTriggerSourceValue(e){let t=this.getModalElement();if(!t)return;let i=t.querySelector(`#${this.modalId}-triggerSource`);i&&"string"==typeof e&&(i.value=e)}showModalElement(){let e=this.getModalElement();e&&(e.style.display="flex",this.blockBodyScroll())}getCookie(e){let t=`; ${this.document.cookie}`.split(`; ${e}=`);return 2===t.length?decodeURIComponent(t.pop().split(";").shift()):null}setCookie(e,t,i){let r="";if(i){let e=new Date;e.setTime(e.getTime()+864e5*i),r=`; expires=${e.toUTCString()}`}let s="; path=/; SameSite=Lax";this.window&&this.window.location&&"https:"===this.window.location.protocol&&(s+="; Secure"),this.document.cookie=`${e}=${encodeURIComponent(t||"")}${r}${s}`}blockBodyScroll(){this._prevOverflow=this.document.body.style.overflow,this.document.body.style.overflow="hidden"}restoreBodyScroll(){this.document.body.style.overflow=this._prevOverflow||"",this._prevOverflow=null}attachModalCloseListeners(){let e=this.getModalElement();if(!e)return;let t=this.document.getElementById(`${this.modalId}-form`);if(t){let i=()=>{this.setModalSubmittedCookie();let t=setTimeout(()=>{e.style.display="none",this.restoreBodyScroll()},100);this.timeouts.push(t)};t.addEventListener("formsubmitted",i),this.eventListeners.push({element:t,event:"formsubmitted",handler:i})}let i=e.querySelector('[data-dismiss="modal"]');if(i){let t=()=>{e.style.display="none",this.restoreBodyScroll()};i.addEventListener("click",t),this.eventListeners.push({element:i,event:"click",handler:t})}let r=t=>{(t.target===e||t.target.id===this.modalId)&&(e.style.display="none",this.restoreBodyScroll())};e.addEventListener("click",r),this.eventListeners.push({element:e,event:"click",handler:r})}}(U,window,document),K=new class extends d{constructor(e,t,i){super(e,t,i),this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null,this.validationCacheDuration=3e5}destroy(){this.isValidating=!1,this.lastValidationResult=null,this.lastValidationTime=null}async validateSession(e={}){let{useCache:t=!0}=e;if(t&&null!==this.lastValidationResult&&this.lastValidationTime&&Date.now()-this.lastValidationTime<this.validationCacheDuration)return this.lastValidationResult;if(this.isValidating)return null!==this.lastValidationResult&&this.lastValidationResult;this.isValidating=!0;let i=` 2869 query { 2870 validSession { 2871 success 2872 } 2873 } 2874 `;try{let e=await this.window.fetch("/graphql",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({query:i})});if(!e.ok)return console.error("SessionController: HTTP error during session validation",e.status),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let t=await e.json();if(t.errors)return this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let r=t.data?.validSession?.success===!0;return this.lastValidationResult=r,this.lastValidationTime=Date.now(),r}catch(e){return console.error("SessionController: Error validating session",e),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1}finally{this.isValidating=!1}}clearCache(){this.lastValidationResult=null,this.lastValidationTime=null}}(U,window,document),z=new class extends d{constructor(e,t,i){super(e,t,i),this.consentListener=null,this.eventName=null}destroy(){this.consentListener&&this.eventName&&(this.document.removeEventListener(this.eventName,this.consentListener),this.consentListener=null)}loadScript(){this.document.getElementById("posthog-script")||this.window.luxuryPresence.eventBus.initialize({enabled:this.config.eventBus?.enabled}),this.document.getElementById("divolte-script")||this.window.luxuryPresence.divolte.initialize({})}removeScripts(){this.window.luxuryPresence?.eventBus?.destroy?.(),this.window.luxuryPresence?.divolte?.destroy?.(),this.document.getElementById("posthog-script")?.remove(),this.document.getElementById("divolte-script")?.remove()}async initialize(e={}){let t=b[e.provider];if(!t)return;this.eventName=t.eventName;let i=await this.window.luxuryPresence.session.validateSession();(t.hasAnalyticsConsent(this.document,this.window)||i)&&this.loadScript(),this.consentListener||(this.consentListener=e=>{t.isAnalyticsAccepted(e.detail)?this.loadScript():this.removeScripts()},this.document.addEventListener(t.eventName,this.consentListener))}}(U,window,document),Q=new class extends d{destroy(){}transformVariables(e,t){let i;return _(i={...t},["testimonialId"]),I(i,["testimonialId"],"testimonialIds"),0===i.limit&&delete i.limit,(void 0===i.limit||null===i.limit)&&(("testimonials"===e||"testimonialsCount"===e)&&(i.limit=50),("agents"===e||"agentsCount"===e||"developments"===e||"developmentsCount"===e||"neighborhoods"===e||"neighborhoodsCount"===e||"posts"===e||"postsCount"===e||"pressReleases"===e||"pressReleasesCount"===e)&&(i.limit=100)),!function(e){let{sortDir:t}=e;"string"==typeof t&&t.includes("_")&&(e.sortDir=t.replace(/_/g," "))}(i),!function(e,t){switch(t){case"agent":break;case"testimonials":case"testimonialsCount":_(e,["testimonialIds"]);break;case"agents":case"agentsCount":_(e,["officeId","teamId","developmentId","agentIds","tags"]),I(e,["officeId"],"officeIds"),I(e,["teamId"],"teamIds"),I(e,["developmentId"],"developmentIds");break;case"neighborhoods":case"neighborhoodsCount":_(e,["neighborhoodIds","neighborhoodId"]),I(e,["neighborhoodIds","neighborhoodId"],"neighborhoodId");break;case"developments":case"developmentsCount":_(e,["agentId","neighborhoodIds","neighborhoodId","developmentIds","tag"]),e.agentId&&Array.isArray(e.agentId)&&([e.agentId]=e.agentId),I(e,["neighborhoodIds","neighborhoodId"],"neighborhoodIds");break;case"properties":case"propertiesCount":_(e,["statusIds","statusId","propertyTypeIds","propertyTypeId","propertyId","networkId","propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","
2874spaceTypeIds","addressState","addressCity","backfillProviders","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"]),["propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","spaceTypeIds","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"].forEach(t=>I(e,[t],t)),I(e,["statusIds","statusId"],"propertyStatusId"),e.excludeStatusId&&(e.excludePropertyStatusId=e.excludeStatusId,delete e.excludeStatusId),I(e,["propertyTypeIds","propertyTypeId"],"propertyTypeId"),I(e,["networkId"],"networkId"),I(e,["propertyId"],"propertyIds"),["salesPriceGTE","salesPriceLTE","leasePriceGTE","leasePriceLTE","livingSpaceSizeGTE","livingSpaceSizeLTE"].forEach(t=>{null!=e[t]&&(e[t]=Math.trunc(Number(e[t])))});break;case"posts":case"postsCount":_(e,["categoryIds","categoryId","neighborhoodId"]),void 0!==e.order&&(e.sort=e.order,delete e.order),I(e,["categoryIds","categoryId"],"categoryId");break;case"postCategories":_(e,["categoryId","categoryIds"]),void 0!==e.order&&(e.sort=e.order,delete e.order),I(e,["categoryIds","categoryId"],"categoryId");break;case"pressReleases":case"pressReleasesCount":_(e,["pressReleaseId","categories","propertyId","developmentId","agentId","teamId"]),I(e,["pressReleaseId"],"pressReleaseIds");break;case"offices":case"officesCount":_(e,["officeId","officeIds","tags"]),I(e,["officeId"],"officeIds");break;case"teams":case"teamsCount":_(e,["teamId","teamIds"]),I(e,["teamId"],"teamIds");break;case"pois":_(e,["categories"]),Array.isArray(e.categories)&&(e.categories=e.categories.map(e=>e.toLowerCase())),"string"==typeof e.sortBy&&(e.sortBy=e.sortBy.toLowerCase())}}(i,e),i}transformResponse(e,t){return"agent"===e?C(t,E):"agents"===e||"agentsCount"===e?k(t,A):"neighborhood"===e?C(t,L):"neighborhoods"===e||"neighborhoodsCount"===e?k(t,x):"development"===e?C(t,$):"developments"===e||"developmentsCount"===e?k(t,T):t}transformPage(e){return{items:e&&e.items||[],count:e&&e.total||0}}applyPropertyDisclaimers(t,i){if(!Array.isArray(t)||!t.length||!i||!i.length)return Promise.resolve(t);let r=t.filter(e=>e&&e.vendorId&&e.mlsId).map(e=>({feedId:e.vendorId,listingId:e.mlsId,officeName:e.officeName??null,agentMlsId:e.mlsAgentId??null,officeMlsId:e.mlsOfficeId??null,attributionContact:e.attributionContact??null,status:e.status??null,syncedAt:e.syncedAt??null})),s=e=>{let r={};return(e||[]).forEach(e=>{r[`${e.feedId}:${e.listingId}`]=e}),t.map(e=>{let t=e&&r[`${e.vendorId}:${e.mlsId}`],s={};return i.forEach(e=>{let i=t?t[P[e]]:void 0;s[e]=i??null}),{...e,...s}})};if(!r.length)return Promise.resolve(s([]));let{websiteId:a}=this.config;return this.window.superagent?this.window.superagent.post(`${this.window.luxuryPresence.defaults.routerUrl}/graphql`).withCredentials().send({query:e(M),variables:{input:{websiteId:"string"==typeof a?a:void 0,properties:r}}}).then(e=>s(e.body&&e.body.data&&e.body.data.propertyDisclaimers),e=>(console.warn("[RouterApiController] propertyDisclaimers lookup failed:",e),s([]))):Promise.resolve(s([]))}}(U,window,document);function W(e,t){if(window.luxuryPresence[e])try{window.luxuryPresence[e].destroy()}catch(e){console.log(e)}window.luxuryPresence[e]=t}W("config",U),W("modals",N),W("buttons",R),W("validation",B),W("contactForms",D),W("mapApiLoader",O),W("pagination",q),W("expandSliders",V),W("divolte",F),W("eventBus",j),W("oauth",H),W("qualifyingQuestionsModal",G),W("session",K),W("consent",z),W("redirects",{checkHstRedirect:function(e){let{config:t}=window.luxuryPresence;return!t.hvStepTwoCaptureEnabled&&!!t.hstValuationRedirectEnabled&&!!t.mlsEnabled&&!!t.myhomeDashboardEnabled&&(window.location.href=`/home-search/home-valuation?address=${encodeURIComponent(e)}`,!0)},destroy(){}}),W("routerApi",Q),window.luxuryPresence.formatSliderPriceRange=q.formatSliderPriceRange.bind(q),window.luxuryPresence.formatSliderAreaRange=q.formatSliderAreaRange.bind(q),window.luxuryPresence.getSearchFormValues=q.getSearchFormValues.bind(q),window.luxuryPresence.handlebarsHelpersFactory=function(i){return e(t)(i,{isEqual:(e,t)=>e==t})}})(); 2875//# sourceMappingURL=lp-sdk.js.map 2876 2877 </script>
2877 2878 2879
2879<script> 2880 var lpGlobalInitialized = false; 2881 2882 function lpGlobalInit () { 2883 if (lpGlobalInitialized) { 2884 return; 2885 } 2886 lpGlobalInitialized = true; 2887 // Initialize wow animation plugin only according to turbolinks 2888 var wow; 2889 if (window.WOW) { 2890 wow = new WOW({ 2891 animateClass: 'animated', 2892 offset: wowOffset, 2893 live: false, 2894 callback: function(box) {} 2895 }); 2896 } 2897 // Initialize handlebar helpers only once 2898 function handlebarsInit() { 2899 if (!window.Handlebars) { 2900 return; 2901 } 2902 HandlebarsIntl.registerWith(Handlebars); 2903 Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars)); 2904 } 2905 2906 handlebarsInit(); 2907 2908 var modalContentUrl = "/modals.html"; 2909 const modalsContainer = document.getElementById('modals'); 2910 if (modalsContainer) { 2911 fetch(modalContentUrl).then(function(res) { 2912 if (!res.ok) { 2913 throw new Error(`HTTP error! Status: ${res.status}`); 2914 } 2915 return res.text(); 2916 }).then(function(resultText) { 2917 modalsContainer.innerHTML = resultText; 2918 2919 // now we need to execute all script elements 2920 Array.from(modalsContainer.getElementsByTagName('script')).forEach(function (s) { 2921 const script = document.createElement("script"); 2922 script.text = s.innerHTML; 2923 Array.from(s.attributes).forEach(function (a) { 2924 script.setAttribute(a.name, a.value); 2925 }) 2926 s.parentNode.replaceChild(script, s); 2927 }); 2928 2929 try { 2930 window.luxuryPresence.modals.initialize(window.luxuryPresence._modalIncludes); 2931 window.luxuryPresence.contactForms.initialize({ selector: '#modals' }); 2932 window.luxuryPresence.validation.initialize({ selector: '#modals' }); 2933 window.luxuryPresence.oauth.initialize({ 2934 googleSignOnEnabled: true, 2935 iframe: false }); 2936 } catch (e) { 2937 console.log(e); 2938 } 2939 document.querySelectorAll('.modals > .modal .close').forEach(closeModalBtn => { 2940 closeModalBtn.addEventListener('click', function() { 2941 window.lpUI.hideClosestModal(closeModalBtn); 2942 }); 2943 }); 2944 }).catch((e) => console.log(e)); 2945 } 2946 /* Initialize Luxury Presence SDK */ 2947 try { 2948 window.luxuryPresence.config.setCompany("e6d253ae-e8f4-4213-aef5-7ad077e555af", {}); 2949 window.luxuryPresence.config.setWebsite("7afcf2a6-6e2c-40b1-88ba-038553fc87dc", { 2950 myhomeDashboardEnabled: false, 2951 mlsEnabled: true, 2952 hstValuationRedirectEnabled: true, 2953 hvStepTwoCaptureEnabled: false 2954 }); 2955 const url = new URL(window.location.href); 2956 const shareId = url.searchParams.get('shareId'); 2957 window.luxuryPresence.config.setPage("0299cb75-d2ad-4078-81f8-42fbb87b417a", { 2958 sourceResource: "", 2959 pageElementId: "", 2960 pageQueryVariables: {}, 2961 shareId: "", 2962 }); 2963 window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {}); 2964 window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {}); 2965 window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {}); 2966 window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {}); 2967 window.luxuryPresence.config.setEventBus({ 2968 enabled: true, 2969 apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr", 2970 url: "https://p.luxurypresence.com", 2971 }); 2972 window.luxuryPresence.config.setTemplateId("13556867-54b0-4457-860a-3c8b4d742f53", {}); 2973 window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {}); 2974 window.luxuryPresence.buttons.initialize({}); 2975 window.luxuryPresence.consent.initialize({ provider: 'lp-consent' }); 2976 window.luxuryPresence.contactForms.initialize({}); 2977 window.luxuryPresence.validation.initialize({}); 2978 window.luxuryPresence.expandSliders.initialize({}); 2979 window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false }); 2980 window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true }); 2981 } catch (e) { 2982 console.log(e); 2983 } 2984 2985 /* Inject Section Specific Javascript */ 2986 try { 2987(function init(sectionDomId) {
2988 var subNavs = $('nav').find('.sub-nav'); 2989 for (var i = 0; i < subNavs.length; i++) { 2990 var subNavChildren = $(subNavs[i]).find('ul').children(); 2991 var maxLength = 0; 2992 for (var j = 0; j < subNavChildren.length; j++) { 2993 var item = $(subNavChildren[j]).text(); 2994 if (maxLength <= item.length) { 2995 maxLength = item.length; 2996 } 2997 } 2998 if (maxLength > 40) { 2999 $(subNavs[i]).css('width', '300px'); 3000 } 3001 } 3002})('global-navbar'); 3003} catch(e) { 3004console.log(e); 3005} 3006 try { 3007(function init(sectionDomId, options) { 3008 var elementSelector = options.elementSelector || 'nav'; 3009 var element = document.querySelector(elementSelector); 3010 var sections = document.querySelectorAll('body > section'); 3011 var subNavContainers = element.querySelectorAll('.sub-nav'); 3012 var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor; 3013 var backgroundColorScroll = options.backgroundColorScroll || '#191919'; 3014 var fontColor = options.fontColor || '#fff'; 3015 var fontColorScroll = options.fontColorScroll || '#000'; 3016 var didScroll = false; 3017 var lastScrollTop = 0; 3018 var delta = 5; 3019 3020 // eslint-disable-next-line sonarjs/no-collapsible-if 3021 if (wow) { 3022 // Wowjs might not trigger for position fixed elements 3023 if (window.scrollY > 0) { 3024 element.querySelectorAll('.wow').forEach(el => wow.show(el)); 3025 } 3026 } 3027 function adjustNavPinState() { 3028 // Remove 'visible' class from all subNavContainers 3029 for (let i = 0; i < subNavContainers.length; i++) { 3030 subNavContainers[i].classList.remove('visible'); 3031 } 3032 if (window.scrollY > 0) { 3033 element.style.backgroundColor = backgroundColorScroll; 3034 element.style.color = fontColorScroll; 3035 element.classList.add('scroll'); 3036 } else { 3037 element.style.backgroundColor = initialBackgroundColor; 3038 element.style.color = fontColor; 3039 element.classList.remove('scroll'); 3040 } 3041 } 3042 adjustNavPinState(); 3043 function onScroll() { 3044 didScroll = true; 3045 } 3046 window.addEventListener('scroll', onScroll); 3047 3048 // eslint-disable-next-line 3049 var debounceInterval = setInterval(() => { 3050 if (didScroll) { 3051 // eslint-disable-next-line 3052 hasScrolled(); 3053 didScroll = false; 3054 } 3055 }, 250); 3056 function hasScrolled() { 3057 adjustNavPinState(); 3058 // eslint-disable-next-line 3059 var navbarHeight = element.offsetHeight; 3060 // eslint-disable-next-line 3061 var st = window.scrollY; 3062 3063 // Make sure they scroll more than delta 3064 if (Math.abs(lastScrollTop - st) <= delta) { 3065 return; 3066 } 3067 if (st > lastScrollTop && st > navbarHeight) { 3068 // Scroll Down 3069 element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`; 3070 document.documentElement.style.setProperty('--global-header-height', '0px'); 3071 3072 // Some sections "follow" the navbar with class sticky (i.e. Producer search) 3073 sections.forEach(section => { 3074 if (section.classList.contains('sticky')) { 3075 section.style.top = '0px'; 3076 } 3077 }); 3078 } else { 3079 // Scroll Up 3080 // eslint-disable-next-line 3081 if (st + window.innerHeight < document.documentElement.scrollHeight) { 3082 element.style.transform = `translateY(0) scaleY(1)`; 3083 document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`); 3084 sections.forEach(section => { 3085 if (section.classList.contains('sticky')) { 3086 section.style.top = `${navbarHeight}px`; 3087 } 3088 }); 3089 } 3090 } 3091 lastScrollTop = st; 3092 } 3093})('NAVBAR', JSON.parse("{\"elementSelector\":\"nav .navbar\",\"backgroundColorScroll\":\"#fff\"}")); 3094} catch(e) { 3095console.log(e); 3096} 3097 try { 3098(function init(sectionDomId) {})('global-sidemenu'); 3099} catch(e) { 3100console.log(e); 3101} 3102 3103 try { 3104(function init(sectionDomId) { 3105 $("#" + sectionDomId + " form").on("reset", function () { 3106 if ($('#' + sectionDomId + ' .redirect-link').length) { 3107 $('#' + sectionDomId + ' .redirect-link')[0].click(); 3108 } 3109 }); 3110})('global-footer'); 3111} catch(e) { 3112console.log(e); 3113} 3114 3115 try { 3116(function init(sectionDomId) { 3117 window.luxuryPresence.mapApiLoader.load().then(() => { 3118 const $section = $('#' + sectionDomId); 3119 const $mobileContacts = $section.find('.mobile-contact'); 3120 const $searchButton = $section.find('.search-button'); 3121 if (!$searchButton.length) { 3122 return; 3123 } 3124 const searchMls = $searchButton[0].dataset.searchMode === 'Search MLS' || $searchButton[0].dataset.searchMode === 'Search My Properties and MLS'; 3125 const searchProperties = $searchButton[0].dataset.searchMode === 'Search My Properties' || $searchButton[0].dataset.searchMode === 'Search My Properties and MLS'; 3126 const searchPlaces = searchMls; 3127 if (!searchMls && !searchProperties) { 3128 return; 3129 }
3130 const $searchWrapper = $section.find('.search-wrapper'); 3131 const $searchInput = $section.find('.search-input'); 3132 const $searchResults = $section.find('.search-results'); 3133 const $resultsContainer = $section.find('.results-container'); 3134 const $loader = $section.find('.search-in-progress'); 3135 const $navBar = $section.find('.nav.navbar-nav'); 3136 const $navBarHeader = $section.find('.navbar-header'); 3137 const searchDelay = 300; 3138 const maxPlaces = 3; 3139 const service = new google.maps.places.AutocompleteService(); 3140 const geocoder = new google.maps.Geocoder(); 3141 function updateResultsVisibility() { 3142 if ($resultsContainer.html()) { 3143 $resultsContainer.show(); 3144 } else { 3145 $resultsContainer.hide(); 3146 } 3147 var loaderHeight = $loader[0].getBoundingClientRect().height; 3148 var resultsHeight = $resultsContainer[0].getBoundingClientRect().height; 3149 $searchResults.css('height', loaderHeight + resultsHeight + 'px'); 3150 } 3151 function showLoading() { 3152 if (!$resultsContainer.html()) { 3153 $loader.removeClass('not-visible'); 3154 } 3155 updateResultsVisibility(); 3156 } 3157 function hideLoading() { 3158 $loader.addClass('not-visible'); 3159 updateResultsVisibility(); 3160 } 3161 var newSearchTimer; 3162 function inputChanged() { 3163 window.clearTimeout(newSearchTimer); 3164 newSearchTimer = window.setTimeout(startSearch, searchDelay); 3165 } 3166 var keyword; 3167 function startSearch() { 3168 const term = $searchInput.val(); 3169 if (term === keyword) { 3170 return; 3171 } 3172 keyword = term; 3173 if (term) { 3174 doSearch(term); 3175 } else { 3176 setResults(null); 3177 } 3178 } 3179 function mlsSearch(term) { 3180 return window.luxuryPresence.getMLSAutocomplete(term).then(function (result) { 3181 if (Array.isArray(result)) { 3182 result.forEach(function (item, idx) { 3183 item.__idx = idx; 3184 item.__status_idx = item.status === 'Sold' ? 2 : 1; 3185 }); 3186 result.sort(function (a, b) { 3187 const dif = a.__status_idx - b.__status_idx; 3188 if (dif === 0) { 3189 return a.__idx - b.__idx; 3190 } 3191 return dif; 3192 }); 3193 } 3194 return result; 3195 }).catch(function (e) { 3196 console.log(e); 3197 return []; 3198 }); 3199 } 3200 function resolveGeoBounds(placeId, description) { 3201 return new Promise(function (resolve, reject) { 3202 geocoder.geocode({ 3203 'placeId': placeId 3204 }, function (results, status) { 3205 if (status != 'OK') { 3206 return resolve(null); 3207 } 3208 var result = results[0]; 3209 var bounds = new google.maps.LatLngBounds();
3210 bounds.extend(result.geometry.viewport.getSouthWest()); 3211 bounds.extend(result.geometry.viewport.getNorthEast()); 3212 result.geometry.bounds = bounds.toJSON(); 3213 var placeUrl = window.luxuryPresence.makeMlsLink(result); 3214 return resolve({ 3215 placeUrl: placeUrl, 3216 description: description 3217 }); 3218 }); 3219 }); 3220 } 3221 function placesSearch(term) { 3222 var request = { 3223 input: term, 3224 componentRestrictions: { 3225 country: 'us' 3226 }, 3227 types: ['(regions)'], 3228 limit: 1 3229 }; 3230 return new Promise(function (resolve, reject) { 3231 service.getPlacePredictions(request, function (results, status) { 3232 if (term !== keyword) { 3233 return resolve([]); 3234 } 3235 if (status === google.maps.places.PlacesServiceStatus.OK) { 3236 var geoResultPromises = results.slice(0, maxPlaces).map(function (result) { 3237 return resolveGeoBounds(result.place_id, result.description); 3238 }); 3239 Promise.all(geoResultPromises).then(function (geoLinks) { 3240 return resolve(geoLinks.filter(function (i) { 3241 return i; 3242 })); 3243 }); 3244 } else { 3245 return resolve([]); 3246 } 3247 }); 3248 }); 3249 } 3250 function propertiesSearch(term) { 3251 var payload = { 3252 companyId: window.luxuryPresence.defaults.companyId, 3253 search: term, 3254 offset: 0, 3255 limit: 6, 3256 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"] 3257 }; 3258 var gqlQuery = 'query ($companyId: String, $search: String, $offset: Int, $limit: Int, $propertyStatusId: [String!]) {properties (companyId: $companyId, search: $search, offset: $offset, limit: $limit, propertyStatusId: $propertyStatusId) {items {id name slug fullAddress privateAddress}}}'; 3259 return superagent.post(window.luxuryPresence.defaults.routerUrl + '/graphql').send({ 3260 query: gqlQuery, 3261 variables: window.luxuryPresence.routerApi.transformVariables('properties', payload) 3262 }).then(function (res) { 3263 var page = (res.body.data || {}).properties; 3264 return page && page.items || []; 3265 }, function (err) { 3266 return []; 3267 }); 3268 } 3269 function doSearch(term) { 3270 showLoading(); 3271 Promise.all([searchMls ? mlsSearch(term) : [], searchPlaces ? placesSearch(term) : [], searchProperties ? propertiesSearch(term) : []]).then(function (res) { 3272 if (term !== keyword) { 3273 return; 3274 } 3275 setResults(res[0], res[1], res[2]); 3276 }); 3277 } 3278 function setResults(mlsResults, placesResults, propertiesResults) { 3279 hideLoading(); 3280 if (!mlsResults) { 3281 $resultsContainer.html(''); 3282 updateResultsVisibility(); 3283 return; 3284 } 3285 if (!mlsResults.length && !placesResults.length && !propertiesResults.length) { 3286 $resultsContainer.html('<div class="nothing-found">No results found</div>'); 3287 updateResultsVisibility(); 3288 return; 3289 } 3290 var propertiesHtml = propertiesResults.reduce(function (acc, result) { 3291 acc += `<a href="/properties/${result.slug}" class="results-link result-self">${result.privateAddress ? result.name : result.fullAddress}</a>`; 3292 return acc; 3293 }, ''); 3294 var placesHtml = placesResults.reduce(function (acc, result) { 3295 acc += `<a class="results-link result-place" href="${result.placeUrl}">${result.description}</a>`; 3296 return acc; 3297 }, ''); 3298 var mlsHtml = mlsResults.reduce(function (acc, result) { 3299 acc += `<a href="/home-search/listings/${result.id}" class="results-link result-search">${result.display_address}</a>`; 3300 return acc; 3301 }, ''); 3302 $resultsContainer.html(propertiesHtml + mlsHtml + placesHtml); 3303 updateResultsVisibility(); 3304 } 3305 $searchInput.on('keyup', inputChanged); 3306 function toggleSearch() { 3307 if ($searchButton.hasClass('active')) { 3308 $searchButton.removeClass('active');
3309 $searchWrapper.removeClass('active'); 3310 $searchInput.val(''); 3311 setResults(null); 3312 $mobileContacts[0].style.zIndex = ''; 3313 } else { 3314 $mobileContacts[0].style.zIndex = '102'; 3315 $searchButton.addClass('active'); 3316 $searchWrapper.addClass('active'); 3317 } 3318 } 3319 $searchButton.on('click', toggleSearch); 3320 }); 3321})('global-mobile-contact'); 3322} catch(e) { 3323console.log(e); 3324} 3325 3326 try { 3327(function init(){})('section-2f1a6577-1ccd-43a3-ad06-85544d73063d', 'undefined'); 3328} catch(e) { 3329console.log(e); 3330} 3331 try { 3332(function init(sectionDomId, options) { 3333 let section = null; 3334 switch (sectionDomId) { 3335 case 'NAVBAR': 3336 section = document.querySelector('body > nav, #global-navbar'); 3337 break; 3338 case 'FOOTER': 3339 section = document.querySelector('body > footer, #global-footer'); 3340 break; 3341 case 'SIDEMENU': 3342 section = document.querySelector('body > div.sidemenu, #global-sidemenu'); 3343 break; 3344 case 'CONTACT': 3345 section = document.querySelector('#modal-global-contact-us'); 3346 break; 3347 case 'MOBILE_CONTACT': 3348 section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact'); 3349 break; 3350 case 'SUBSCRIBE': 3351 // Subscribe Not Implemented 3352 section = null; 3353 break; 3354 case 'ACCOUNT': 3355 // Account Not Implemented 3356 section = null; 3357 break; 3358 default: 3359 section = document.querySelector('#' + sectionDomId); 3360 } 3361 if (!section) { 3362 return; 3363 } 3364 3365 // Where content / items are rendered 3366 const dataContainer = section.querySelector('.data-container'); 3367 if (!dataContainer) { 3368 // no place to render items = no need to query server or do anything else 3369 return; 3370 } 3371 let variables = options.variables || {}; 3372 3373 // Some variables in options may not have been injected - remove 3374 Object.keys(variables).forEach(function (variableName) { 3375 if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) { 3376 delete variables[variableName]; 3377 } 3378 }); 3379 3380 // Merge page query variables 3381 if (options.usePageResource) { 3382 variables = { 3383 ...variables, 3384 ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource] 3385 }; 3386 } 3387 3388 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers 3389 // resolve the flag â fetchData reads the section stamp, aux fetches read 3390 // their own resource's stamp (auxUsesRouter). 3391 function apiUrl(useRouter) { 3392 return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl); 3393 } 3394 3395 // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's 3396 // (options.routerApiAux is stamped per aux resource server-side). 3397 function auxUsesRouter(resource) { 3398 return !!(options.routerApiAux && options.routerApiAux[resource]); 3399 } 3400 3401 // Pagination Executes on a Numbered Pagination Container 3402 // Or via a load more button 3403 let mode = 'BUTTONLESS_PAGINATION'; 3404 const container = section.querySelector('.pagination-container');
3405 const loadMoreButton = section.querySelector(options?.loadMoreSelector); 3406 if (container) { 3407 mode = 'NUMBERED_PAGINATION'; 3408 } 3409 if (loadMoreButton) { 3410 mode = 'LOAD_MORE_BUTTON'; 3411 } 3412 let searchContainer = section.querySelector('.search-container'); 3413 const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false; 3414 const eventPrefix = '__pagination-'; 3415 const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{ 3416 param: 'neighborhoodId', 3417 urlKey: 'neighborhood' 3418 }, { 3419 param: 'search', 3420 urlKey: 'search' 3421 }, { 3422 param: 'salesPriceGTE', 3423 urlKey: 'pricemin', 3424 formKey: 'priceMin', 3425 type: 'int' 3426 }, { 3427 param: 'salesPriceLTE', 3428 urlKey: 'pricemax', 3429 formKey: 'priceMax', 3430 type: 'int' 3431 }, { 3432 param: 'livingSpaceSizeGTE', 3433 urlKey: 'areamin', 3434 formKey: 'areaMin', 3435 type: 'int' 3436 }, { 3437 param: 'livingSpaceSizeLTE', 3438 urlKey: 'areamax', 3439 formKey: 'areaMax', 3440 type: 'int' 3441 }] : []); 3442 3443 // Total entries - initialized in first render 3444 let totalNumber = 0; 3445 const DefaultSearchParams = { 3446 page: 1 3447 }; 3448 searchFormParams.forEach(function (formParam) { 3449 DefaultSearchParams[formParam.formKey || formParam.param] = null; 3450 }); 3451 let searchParams = { 3452 ...DefaultSearchParams 3453 }; 3454 const offset = options.variables?.offset || 0; 3455 let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section; 3456 let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100; 3457 3458 // entries of per page 3459 // when query variables for a given section would't be filled options.pageSize can store 3460 // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value 3461 let pageSize = parseInt(options.pageSize, 10) || 9; 3462 3463 // Adding mobile pageRange support 3464 var NARROW_BREAKPOINT = 600; 3465 var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT; 3466 var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`); 3467 3468 // Page range (pages on both sides of the current page) 3469 var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0; 3470 var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2; 3471 var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange; 3472 3473 // Whether to display the 'Previous' button 3474 var showPrevious = true; 3475 3476 // Whether to display the 'Next' button 3477 var showNext = true; 3478 3479 // Whether to display the page buttons 3480 var showPageNumbers = true; 3481 3482 // 'Previous' text 3483 var prevText = options.prevText || '«'; 3484 3485 // 'Next' text 3486 var nextText = options.nextText || '»'; 3487 3488 // Ellipsis text 3489 var ellipsisText = '…'; 3490 var classPrefix = 'paginationjs'; 3491 3492 // Default active class 3493 var activeClassName = 'active'; 3494 3495 // Default disable class 3496 var disableClassName = 'disabled'; 3497 3498 // Pagination element's position in the container 3499 var position = 'bottom'; 3500 3501 // Whether to trigger pagination at initialization 3502 var triggerPagingOnInit = !options.skipInitialLoad; 3503 var showFirstOnEllipsisShow = true; 3504 var showLastOnEllipsisShow = true; 3505 3506 // Instantiated in init() 3507 var el = null; 3508 3509 // Controls scrollTop logic 3510 var firstRender = true; 3511 var renderBySearch = false; 3512 var disabled = false; 3513 3514 // Pagination script class selector 3515 var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script'; 3516 3517 // Property Specific Image Override if No Image 3518 var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage; 3519 3520 // Construct template 3521 var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || ''; 3522 var template = Handlebars.compile(templateHTML); 3523 3524 // Initialize 3525 init(); 3526 function init() { 3527 Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 3528 3529 // Append/prepend pagination element to the pagination container 3530 if (mode === 'NUMBERED_PAGINATION') { 3531 el = document.createElement('div'); 3532 el.className = 'paginationjs';
3533 container[position === 'bottom' ? 'append' : 'prepend'](el); 3534 } 3535 if (searchContainer) { 3536 initSearchContainer({ 3537 fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true', 3538 fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true', 3539 fetchOffices: searchContainer.dataset.fetchOffices === 'true', 3540 fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true' 3541 }, function () { 3542 syncSearchFormState(searchParams); 3543 }); 3544 } 3545 3546 // Bind events 3547 observer(); 3548 } 3549 function syncSearchFormState(params) { 3550 searchContainer.dispatchEvent(new CustomEvent('sync', { 3551 detail: params 3552 })); 3553 } 3554 function initSearchContainer(options, done) { 3555 var promises = []; 3556 if (options.fetchNeighborhoods) { 3557 promises.push(fetchAllNeighborhoods(function (neighborhoods) { 3558 searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', { 3559 detail: { 3560 data: neighborhoods.map(function (item) { 3561 return { 3562 value: item.id, 3563 label: item.name 3564 }; 3565 }) 3566 } 3567 })); 3568 })); 3569 } 3570 if (options.fetchPostCategories) { 3571 promises.push(fetchPostCategories(function (categories) { 3572 searchContainer.dispatchEvent(new CustomEvent('post-categories-data', { 3573 detail: { 3574 data: categories 3575 } 3576 })); 3577 })); 3578 } 3579 if (options.fetchOffices) { 3580 promises.push(fetchOffices(function (offices) { 3581 searchContainer.dispatchEvent(new CustomEvent('offices-data', { 3582 detail: { 3583 data: offices 3584 } 3585 })); 3586 })); 3587 } 3588 if (options.fetchRentalRates) { 3589 promises.push(fetchAllRentalRates(function (rentalRates) { 3590 searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', { 3591 detail: { 3592 data: rentalRates 3593 } 3594 })); 3595 })); 3596 } 3597 if (promises.length > 0) { 3598 Promise.all(promises).then(function () { 3599 done(); 3600 }); 3601 } else { 3602 // element's custom code is not executed yet, so we're scheduling callback to after element's code 3603 setTimeout(done); 3604 } 3605 } 3606 function fetchAllNeighborhoods(done) { 3607 var useRouter = auxUsesRouter('neighborhoods'); 3608 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same 3609 // args on both APIs (the federated neighborhoods field accepts 3610 // withProperties/withBlogPosts); only the selection set differs. 3611 var gqlQuery = 'query ($companyId: String, $withProperties: NeighborhoodPropertiesFilter, $withBlogPosts: NeighborhoodBlogPostsFilter, $offset: Int, $limit: Int) {' + 'neighborhoods (companyId: $companyId, withProperties: $withProperties, withBlogPosts: $withBlogPosts, offset: $offset, limit: $limit) {' + (useRouter ? 'items {id, name}' : 'id, name') + '}}'; 3612 var payload = {}; 3613 payload.offset = 0; 3614 payload.limit = 100; 3615 payload.companyId = variables.companyId; 3616 if (options.resource === 'properties') { 3617 payload.withProperties = { 3618 active: true 3619 }; 3620 ['agentIds', 'tag', 'propertyTypeId', 'statusIds', 'architectureStyle', 'lifestyle', 'salesPriceGTE', 'salesPriceLTE', 'leasePriceGTE', 'leasePriceLTE', 'livingSpaceSizeGTE', 'livingSpaceSizeLTE', 'bathCountGTE', 'bathCountLTE', 'bedroomCountGTE', 'bedroomCountLTE', 'bathCountGTE', 'bathCountLTE', 'bedroomCountGTE', 'bedroomCountLTE', 'featuredListing', 'leaseProperty', 'neighborhoodId', 'developmentId', 'openHouse'].forEach(function (field) { 3621 if (variables[field] !== undefined && variables[field] !== null) { 3622 payload.withProperties[field] = variables[field]; 3623 } 3624 }); 3625 } 3626 if (options.resource === 'posts') { 3627 payload.withBlogPosts = { 3628 active: true 3629 }; 3630 ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) { 3631 if (variables[field] !== undefined && variables[field] !== null) { 3632 payload.withBlogPosts[field] = variables[field]; 3633 } 3634 }); 3635 } 3636 3637 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3638 if (useRouter) { 3639 payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload); 3640 } 3641 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 3642 query: gqlQuery, 3643 variables: payload 3644 }).then(function (res) { 3645 var value = res.body.data && res.body.data.neighborhoods || {}; 3646 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3647 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 3648 done(items, items.length); 3649 }); 3650 } 3651 function fetchPostCategories(done) { 3652 var featured = options.resource === 'posts' && !!variables.featured; 3653 var useRouter = auxUsesRouter('postCategories'); 3654 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 3655 // selection set differs ({ items {...} } on the router). 3656 var selection = 'id, name, publishedCount, featuredPublishedCount'; 3657 var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'postCategories (companyId: $companyId, offset: $offset, limit: $limit ' + (featured ? ' withFeaturedPublishedOnly: true' : ' withPublishedOnly: true') + ') {' + (useRouter ? 'items {' + selection + '}' : selection) + '}}'; 3658 var payload = {}; 3659 payload.offset = 0; 3660 payload.limit = 100; 3661 payload.companyId = variables.companyId; 3662 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 3663 query: gqlQuery, 3664 variables: payload 3665 }).then(function (res) { 3666 var value = res.body.data && res.body.data.postCategories || {}; 3667 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3668 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 3669 done(items.map(function (item) { 3670 item.count = featured ? item.featuredPublishedCount : item.publishedCount; 3671 return item; 3672 }), items.length); 3673 }); 3674 } 3675 function fetchOffices(done) { 3676 var useRouter = auxUsesRouter('offices'); 3677 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the 3678 // selection set differs ({ items {...} } on the router). 3679 var selection = 'id, name, tags'; 3680 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two 3681 // APIs differ in more than the items wrapper: federated offices takes 3682 // companyId: ID! (legacy gateway: String), so each branch builds its whole doc. 3683 var gqlQuery = useRouter ? 'query ($companyId: ID!, $offset: Int, $limit: Int) {' + 'offices (companyId: $companyId, offset: $offset, limit: $limit) {' + 'items {' + selection + '}}}' : 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'offices (companyId: $companyId, offset: $offset, limit: $limit) {' + selection + '}}'; 3684 var payload = { 3685 offset: 0, 3686 limit: 100, 3687 companyId: variables.companyId 3688 }; 3689 3690 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3691 if (useRouter) { 3692 payload = window.luxuryPresence.routerApi.transformVariables('office
3692s', payload); 3693 } 3694 superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({ 3695 query: gqlQuery, 3696 variables: payload 3697 }).then(function (res) { 3698 var value = res.body.data && res.body.data.offices || {}; 3699 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3700 var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || []; 3701 done(items, items.length); 3702 }); 3703 } 3704 3705 // ROUTER-CLEANUP: no rentalRates field on the federated router â legacy only. 3706 function fetchAllRentalRates(done) { 3707 var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl; 3708 var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}'; 3709 var payload = { 3710 offset: 0, 3711 limit: 100, 3712 companyId: variables.companyId 3713 }; 3714 superagent.post(url + '/graphql').withCredentials().send({ 3715 query: gqlQuery, 3716 variables: payload 3717 }).then(function (res) { 3718 var items = res.body.data && res.body.data.rentalRates || []; 3719 done(items, items.length); 3720 }).catch(function (err) { 3721 console.error('Error fetching rental rates:', err); 3722 done([], 0); 3723 }); 3724 } 3725 function fetchData(params, done) { 3726 var resource = options.resource; 3727 var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource]; 3728 var payload = {}; 3729 try { 3730 payload = JSON.parse(JSON.stringify(variables)); 3731 } catch (e) { 3732 Object.keys(variables).forEach(function (variableName) { 3733 payload[variableName] = variables[variableName]; 3734 }); 3735 } 3736 payload.offset = (params.page - 1) * pageSize + offset; 3737 payload.limit = pageSize; 3738 payload.companyId = options.companyId; 3739 searchFormParams.forEach(function (formParam) { 3740 var val = params[formParam.formKey || formParam.param]; 3741 if (val !== null && val !== undefined) { 3742 objSet(payload, formParam.param, val); 3743 } 3744 }); 3745 3746 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3747 if (options.useRouterApi) { 3748 payload = window.luxuryPresence.routerApi.transformVariables(resource, payload); 3749 } 3750 3751 // TODO: Disabled loading due to jarring effect 3752 // dataContainer.html('Loading...'); 3753 superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({ 3754 query: gqlQuery, 3755 variables: payload 3756 }).then(function (res) { 3757 if (res.body.errors) { 3758 done(res.body.errors); 3759 return; 3760 } 3761 var data = res.body.data || {}; 3762 // ROUTER-CLEANUP: keep router branch, drop legacy when API retired 3763 var resources; 3764 var resourceCount; 3765 if (options.useRouterApi) { 3766 var page = window.luxuryPresence.routerApi.transformPage(data[resource]); 3767 resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items); 3768 resourceCount = page.count; 3769 } else { 3770 resources = data[resource] || []; 3771 resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0; 3772 } 3773 const finish = function (items) { 3774 if (resource === 'properties' && propertyPlaceholderImage?.id) { 3775 items = items.map(item => { 3776 if (item.media?.length === 0) { 3777 return Object.assign(item, { 3778 media: [propertyPlaceholderImage] 3779 }); 3780 } 3781 return item; 3782 }); 3783 } 3784 done(null, items, resourceCount); 3785 }; 3786 3787 // ROUTER-CLEANUP: client half of PLAT-4073 â resolve the requested 3788 // disclaimers before rendering; older SDKs skip (keys stay unset). 3789 if (options.useRouterApi && resource === 'properties' && options.routerPropertyDisclaimers && options.routerPropertyDisclaimers.length && window.luxuryPresence.routerApi && typeof window.luxuryPresence.routerApi.applyPropertyDisclaimers === 'function') { 3790 window.luxuryPresence.routerApi.applyPropertyDisclaimers(resources, options.routerPropertyDisclaimers).then(finish); 3791 return; 3792 } 3793 finish(resources); 3794 }); 3795 } 3796 function getTotalPage() { 3797 return Math.ceil(totalNumber / pageSize); 3798 } 3799 function renderPaginationList() { 3800 var totalPages = getTotalPage(); 3801 var rangeStart = searchParams.page - pageRange; 3802 var rangeEnd = searchParams.page + pageRange; 3803 if (rangeEnd > totalPages) { 3804 rangeEnd = totalPages; 3805 rangeStart = totalPages - pageRange * 2; 3806 rangeStart = rangeStart < 1 ? 1 : rangeStart; 3807 } 3808 if (rangeStart <= 1) { 3809 rangeStart = 1; 3810 rangeEnd = Math.min(pageRange * 2 + 1, totalPages); 3811 } 3812 3813 // Making sure that 1 more page button is shown in edge positions 3814 if (pageRange === 0) { 3815 if (searchParams.page === totalPages) { 3816 rangeStart = totalPages <= 1 ? 1 : totalPages - 1; 3817 } 3818 if (searchParams.page === 1) { 3819 rangeEnd = Math.min(2, totalPages); 3820 } 3821 } 3822 3823 // Render pagination list 3824 if (mode === 'NUMBERED_PAGINATION') { 3825 el.innerHTML = generateHTML({ 3826 currentPage: searchParams.page, 3827 pageRange: pageRange, 3828 rangeStart: rangeStart, 3829 rangeEnd: rangeEnd 3830 }); 3831 if (totalPages < 2 && hidePaginationOnFirstPage) { 3832 container.style.display = 'none'; 3833 } else { 3834 container.style.display = ''; 3835 } 3836 } else if (mode === 'LOAD_MORE_BUTTON') { 3837 if (searchParams.page >= totalPages) {
3838 loadMoreButton.style.display = 'none'; 3839 } else { 3840 loadMoreButton.style.display = ''; 3841 } 3842 } 3843 } 3844 function render(data) { 3845 renderPaginationList(); 3846 3847 // Render new content with handlebars 3848 var html = ''; 3849 if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) { 3850 // If using load more, append search results to existing results 3851 html = dataContainer.innerHTML; 3852 } 3853 for (var i = 0; i < data.length; i++) { 3854 var itemData = recursivelyParse(data[i]); 3855 itemData.sectionIndex = options.sectionIndex; 3856 itemData.renderOptions = options.renderOptions; 3857 html += template(itemData); 3858 } 3859 dataContainer.innerHTML = html; 3860 3861 // Scroll Top 3862 if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) { 3863 // Only animate to the top if we replace dataContainer (numbered pagination) 3864 setTimeout(() => { 3865 const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset; 3866 window.scrollTo({ 3867 top: scrollTargetOffsetTop, 3868 behavior: 'smooth' 3869 }); 3870 }, 250); 3871 } 3872 return true; 3873 } 3874 function generateHTML(args) { 3875 const totalPages = getTotalPage(); 3876 const { 3877 rangeStart, 3878 rangeEnd 3879 } = args; 3880 const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 3881 ...searchParams, 3882 page 3883 }); 3884 let html = ''; 3885 if (showPrevious || showPageNumbers || showNext) { 3886 html += '<div class="paginationjs-pages"><ul>'; 3887 3888 // Previous button 3889 if (showPrevious) { 3890 if (searchParams.page <= 1) { 3891 html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`; 3892 } else { 3893 html += `<li class="${classPrefix}-prev J-paginationjs-previous" data-num="${searchParams.page - 1}" title="Previous page"><a href="${makeLnk(searchParams.page - 1)}">${prevText}</a></li>`; 3894 } 3895 } 3896 3897 // Pages 3898 if (showPageNumbers) { 3899 if (rangeStart <= 3) { 3900 for (let i = 1; i < rangeStart; i++) { 3901 html += `<li class="${classPrefix}-page J-paginationjs-page ${i === searchParams.page ? activeClassName : ''}" data-num="${i}"><a ${i === searchParams.page ? '' : `href="${makeLnk(i)}"`}>${i}</a></li>`; 3902 } 3903 } else { 3904 if (showFirstOnEllipsisShow) { 3905 html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`; 3906 } 3907 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 3908 } 3909 for (let i = rangeStart; i <= rangeEnd; i++) { 3910 html += `<li class="${classPrefix}-page J-paginationjs-page ${i === searchParams.page ? activeClassName : ''}" data-num="${i}"><a ${i === searchParams.page ? '' : `href="${makeLnk(i)}"`}>${i}</a></li>`; 3911 } 3912 if (rangeEnd < totalPages - 2) { 3913 html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`; 3914 if (showLastOnEllipsisShow) { 3915 html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`; 3916 } 3917 } else { 3918 for (let i = rangeEnd + 1; i <= totalPages; i++) { 3919 html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`; 3920 } 3921 } 3922 } 3923 3924 // Next button 3925 if (showNext) { 3926 if (searchParams.page >= totalPages) { 3927 html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`; 3928 } else { 3929 html += `<li class="${classPrefix}-next J-paginationjs-next" data-num="${searchParams.page + 1}" title="Next page"><a href="${makeLnk(searchParams.page + 1)}">${nextText}</a></li>`; 3930 } 3931 } 3932 html += '</ul></div>'; 3933 } 3934 return html; 3935 } 3936 function go(newSearchParams, callback, restorationVisit) { 3937 if (disabled) return; 3938 var goToPageNumber = newSearchParams.page; 3939 3940 // Page number is out of bounds 3941 if (!goToPageNumber || goToPageNumber < 1) return; 3942 var totalPage = getTotalPage(); 3943 3944 // Page number is out of bounds 3945 if (!restorationVisit && totalNumber > 0) { 3946 if (goToPageNumber > totalPage) return; 3947 } 3948 if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
3949 var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, { 3950 ...newSearchParams, 3951 page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null 3952 }); 3953 if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) { 3954 window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, { 3955 queryString: true 3956 })); 3957 } 3958 } 3959 3960 // Fetch and update page 3961 fetchData(newSearchParams, renderWithData); 3962 disabled = true; 3963 function renderWithData(err, data, count) { 3964 if (err) { 3965 dataContainer.dispatchEvent(new Event('error')); 3966 } else { 3967 searchParams = { 3968 ...newSearchParams 3969 }; 3970 totalNumber = count - offset; 3971 if (data.length === 0) { 3972 dataContainer.dispatchEvent(new Event('no-data')); 3973 } else { 3974 dataContainer.dispatchEvent(new Event('data')); 3975 } 3976 render(data); 3977 firstRender = false; 3978 } 3979 disabled = false; 3980 renderBySearch = false; 3981 } 3982 } 3983 function areQueryParamsEqual(first, second) { 3984 var differ = Object.keys(first).find(function (key) { 3985 return first[key] !== undefined && first[key] !== null && first[key] !== second[key]; 3986 }); 3987 if (differ) { 3988 return false; 3989 } 3990 differ = Object.keys(second).find(function (key) { 3991 return second[key] !== undefined && second[key] !== null && second[key] !== first[key]; 3992 }); 3993 return !differ; 3994 } 3995 function next(callback) { 3996 go({ 3997 ...searchParams, 3998 page: searchParams.page + 1 3999 }, callback); 4000 } 4001 function previous(callback) { 4002 go({ 4003 ...searchParams, 4004 page: searchParams.page - 1 4005 }, callback); 4006 } 4007 function refresh(callback) { 4008 go(searchParams, callback); 4009 } 4010 function update(params, callback) { 4011 renderBySearch = true; 4012 go(params, callback); 4013 } 4014 function observer() { 4015 if (searchContainer) { 4016 searchContainer.addEventListener('search', function (event, newSearchParams) { 4017 newSearchParams = event.detail || newSearchParams; 4018 update({ 4019 ...searchParams, 4020 ...newSearchParams, 4021 page: 1 4022 }); 4023 }); 4024 searchContainer.addEventListener('clear-search', function () { 4025 const defaultSearchParams = { 4026 ...DefaultSearchParams 4027 }; 4028 const isCurrentSearchFormStateDefault = areQueryParamsEqual({ 4029 ...defaultSearchParams, 4030 page: null 4031 }, { 4032 ...searchParams, 4033 page: null 4034 }); 4035 4036 // if mode is LOAD_MORE_BUTTON we should't make anything on clear 4037 // when search form have default state 4038 if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') { 4039 return; 4040 } 4041 4042 // if someone initially go to some page and click 'Clear' on search from 4043 // we should't navigate to first page. We should preserve page value 4044 if (isCurrentSearchFormStateDefault) { 4045 defaultSearchParams.page = searchParams.page; 4046 } 4047 syncSearchFormState(defaultSearchParams); 4048 update(defaultSearchParams); 4049 }); 4050 } 4051 if (mode === 'LOAD_MORE_BUTTON') { 4052 loadMoreButton.addEventListener('click', function (event) { 4053 go({ 4054 ...searchParams, 4055 page: searchParams.page + 1 4056 }); 4057 return false; 4058 }); 4059 } 4060 if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') { 4061 // Do initial render 4062 go(Object.assign({}, searchParams, { 4063 page: 1 4064 })); 4065 return; 4066 } 4067 if (mode === 'NUMBERED_PAGINATION') { 4068 // Go to specified page number 4069 container.addEventListener(eventPrefix + 'go', function (event) { 4070 let { 4071 pageNumber, 4072 done 4073 } = event.detail || {}; 4074 pageNumber = parseInt(pageNumber, 10); 4075 if (!pageNumber) { 4076 return; 4077 } 4078 go({ 4079 ...searchParams, 4080 page: pageNumber 4081 }, done); 4082 }); 4083 4084 // Page number button click 4085 el.addEventListener('click', function (event) { 4086 let clickTarget = event.target; 4087 let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next'); 4088 let pageNumber = current?.getAttribute('data-num'); 4089 if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) { 4090 return; 4091 } else { 4092 go({ 4093 ...searchParams, 4094 page: parseInt(pageNumber, 10) 4095 }); 4096 } 4097 event.preventDefault(); 4098 }); 4099 4100 // Whether to load the default page 4101 var defaultPageNumber = searchParams.page; 4102 if (triggerPagingOnInit) {
4103 container.dispatchEvent(new CustomEvent(eventPrefix + 'go', { 4104 detail: { 4105 pageNumber: defaultPageNumber 4106 } 4107 })); 4108 } 4109 } 4110 window.addEventListener('popstate', function (event) { 4111 var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId)); 4112 if (!areQueryParamsEqual(newParams, searchParams)) { 4113 go(newParams, null, true); 4114 if (searchContainer) { 4115 syncSearchFormState(newParams); 4116 } 4117 } 4118 }); 4119 } 4120 function replaceVariables(template, variables) { 4121 var formattedString; 4122 for (var key in variables) { 4123 var value = variables[key]; 4124 var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img'); 4125 formattedString = (formattedString || template).replace(regexp, value); 4126 } 4127 return formattedString; 4128 } 4129 function isTextEditorValue(obj) { 4130 return 'raw' in obj || 'gjs' in obj; 4131 } 4132 function getTextEditorValue(obj) { 4133 if (!obj.html) { 4134 return ''; 4135 } 4136 var data = obj.html; 4137 var css = (obj.raw || obj.gjs || {}).css; 4138 if (css) { 4139 data = data + '<style>' + css + '</style>'; 4140 } 4141 return data; 4142 } 4143 4144 /** 4145 * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor. 4146 * strips out raw proprties and returns only HTML if it exists. 4147 * @param {Object} resources a collection retrieved from the database 4148 * @return {Object} the newly modified object. 4149 */ 4150 function recursivelyParse(resources) { 4151 forEach(resources, function (value, key) { 4152 if (!value) { 4153 return; 4154 } 4155 if (value instanceof Object) { 4156 if (isTextEditorValue(value)) { 4157 resources[key] = getTextEditorValue(value); 4158 return; 4159 } else { 4160 return recursivelyParse(value); 4161 } 4162 } 4163 try { 4164 var parsedData = JSON.parse(value); 4165 if (isTextEditorValue(parsedData)) { 4166 resources[key] = getTextEditorValue(parsedData); 4167 } 4168 } catch (e) { 4169 // do nothing if we failed to parse value as JSON 4170 } 4171 }); 4172 return resources; 4173 } 4174 function forEach(collection, iteratee) { 4175 var func = Array.isArray(collection) ? arrayEach : baseFor; 4176 return func(collection, iteratee); 4177 } 4178 function baseFor(object, iteratee) { 4179 if (!object) { 4180 return; 4181 } 4182 var iterable = Object(object); 4183 var props = Object.keys(object); 4184 var length = props.length; 4185 var index = -1; 4186 while (length--) { 4187 var key = props[++index]; 4188 if (iteratee(iterable[key], key, iterable) === false) { 4189 break; 4190 } 4191 } 4192 return object; 4193 } 4194 function objSet(obj, path, value) { 4195 const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g); 4196 pathArray.reduce((acc, key, i) => { 4197 if (acc[key] === undefined) acc[key] = {}; 4198 if (i === pathArray.length - 1) acc[key] = value; 4199 return acc[key]; 4200 }, obj); 4201 } 4202 function arrayEach(array, iteratee) { 4203 var index = -1; 4204 var length = array.length; 4205 while (++index < length) { 4206 if (iteratee(array[index], index, array) === false) { 4207 break; 4208 } 4209 } 4210 return array; 4211 } 4212 function selectPageRangeMode(e) { 4213 pageRange = e.matches ? mobilePageRange : desktopPageRange; 4214 renderPaginationList(); 4215 } 4216 paginationMql.addEventListener('change', selectPageRangeMode); 4217})('section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b', JSON.parse("{\"pageSize\":\"100\",\"resource\":\"posts\",\"pageRange\":1,\"variables\":{\"limit\":100,\"order\":\"publishedAt\",\"offset\":0,\"sortDir\":\"DESC\",\"companyId\":\"e6d253ae-e8f4-4213-aef5-7ad077e555af\",\"categoryId\":\"{{variables.categoryId}}\",\"postStatusId\":\"5f528253-abb7-484e-95c3-330269ac1102\",\"sort\":\"publishedAt\"},\"hidePaginationOnFirstPage\":true,\"companyId\":\"e6d253ae-e8f4-4213-aef5-7ad077e555af\",\"usePageResource\":false,\"sectionIndex\":2,\"useRouterApi\":true,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 4218} catch(e) { 4219console.log(e); 4220} 4221 try {
4222(function init(){})('section-bd9218dd-c435-4d47-a8b6-e9f1ce852b8b', JSON.parse("{\"resource\":\"posts\",\"useRouterApi\":true,\"companyId\":\"e6d253ae-e8f4-4213-aef5-7ad077e555af\",\"usePageResource\":false,\"sectionIndex\":2,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}")); 4223} catch(e) { 4224console.log(e); 4225} 4226 try { 4227(function init(sectionDomId) {// please write all js here and use sectionDomId in selectors in order of DOM encapsulation 4228})('section-3527620a-4185-4671-963a-8f09a3e74222', 'undefined'); 4229} catch(e) { 4230console.log(e); 4231} 4232 4233 var { body } = document; 4234 var globalNav = body.querySelector(':scope > nav'); 4235 var globalSideMenu = body.querySelector(':scope > div.sidemenu'); 4236 4237 document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => { 4238 modalCloseBtn.addEventListener('click', function() { 4239 window.lpUI.hideClosestModal(modalCloseBtn); 4240 }); 4241 }); 4242 4243 window.addEventListener('click', function() { 4244 document.querySelectorAll('.share-popup').forEach(sharedPopup => { 4245 sharedPopup.style.display = 'none' ; 4246 }); 4247 }); 4248 4249 /* Misc Partials / Addons */ 4250 function initWOW() { 4251 if (wow) { 4252 wow.init(); 4253 wow.scrollHandler(); 4254 setTimeout(function () { 4255 const wowHideStyle = document.getElementById('wow-hide-elements'); 4256 if(wowHideStyle) { 4257 wowHideStyle.disabled = true; 4258 } 4259 }, 1); 4260 } 4261 } 4262 4263 const wowHideElements = document.getElementById('wow-hide-elements'); 4264 if (wowHideElements) { 4265 wowHideElements.disabled = false; 4266 } 4267 4268 initWOW(); 4269 4270 /* Generic Navbar Handling */ 4271 globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => { 4272 hamburgerComponent.addEventListener('click', function() { 4273 window.lpUI.sideMenuToggle(); 4274 }); 4275 }); 4276 globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => { 4277 toggleEl.addEventListener('click', function() { 4278 window.lpUI.sideMenuToggle(); 4279 }); 4280 }); 4281 4282 document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => { 4283 linkEl.addEventListener('click', function(e) { 4284 e.preventDefault(); 4285 e.stopPropagation(); 4286 var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav'); 4287 if (subNav && subNav.classList.contains('visible')){ 4288 subNav.classList.remove('visible'); 4289 } else { 4290 globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => { 4291 globalSubNav.classList.remove('visible'); 4292 }); 4293 globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => { 4294 sideMenuSubNav.classList.remove('visible'); 4295 }); 4296 subNav?.classList.add('visible'); 4297 } 4298 }); 4299 }); 4300 window.addEventListener('click', function() { 4301 document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => { 4302 subNavEl.classList.remove('visible'); 4303 }); 4304 }); 4305 4306 } 4307 4308 document.addEventListener('DOMContentLoaded', lpGlobalInit); 4309 4310 </script>
4310 4311 4312
4312<script type="module"> 4313 function selectorExists(selector) { 4314 return document.querySelector(selector) !== null; 4315 } 4316 4317 // Function to initialize the third-party library 4318 function initParoller(selector = '.my-paroller') { 4319 var $parollerElements = $(selector); 4320 if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') { 4321 $parollerElements.paroller(); 4322 } 4323 } 4324 4325 const parollerSelector = '.my-paroller'; 4326 4327 if (selectorExists(parollerSelector)) { 4328 window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() { 4329 initParoller(parollerSelector); 4330 window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true; 4331 }); 4332 } 4333 </script>
4333 4334 4335 <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 4335-4336
4335 4336 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
4336GTM-T9SFQGHZ
vendor: 107 bytes, lines 4336-4338
4336" 4337 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 4338
4338<!-- End Google Tag Manager --> 4339
4339<script> 4340 4341 function addWowClassToHeadings() { 4342 /*Get the elements to which the classes are to be added*/ 4343 let titles = document.querySelectorAll("h1,h2,h4, h1.lp-h1, h2.lp-h2, h4.lp-h4, p:not(.success-message)"); 4344 let p = document.querySelectorAll("div.redesign.work-with-us p, p.stat-card__title, .lp-text--subtitle, .redesign p:not(.success-message), .text-grid.scene, .item, .gallery__holder, .pretitle, .lp-btn, .btn, .search-form, .gallery-component__col, .neighborhood-list-item"); 4345 4346 titles.forEach(title => { 4347 /*Classes to add*/ 4348 title.classList.add("wow", "animated", "fadeInUp"); 4349 }); 4350 p.forEach(par => { 4351 /*Classes to add*/ 4352 par.classList.add("wow", "animated", "fadeInUp"); 4353 }); 4354 } 4355 document.addEventListener("DOMContentLoaded", () => { 4356 /*Init the library to animate on scroll*/ 4357 new WOW().init(); 4358 /*Call the function*/ 4359 addWowClassToHeadings(); 4360 const contactModal = document.querySelector('#modal-global-contact-us'); 4361 $(contactModal).on('lpui-show', function(){ 4362 contactModal.querySelectorAll('.wow').forEach(function(el, idx) { 4363 wow.show(el) 4364 }) 4365 }); 4366 }); 4367 4368</script>
4368 4369
4369<script 4370 src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js" 4371 data-website-id="7afcf2a6-6e2c-40b1-88ba-038553fc87dc" 4372 4373 defer></script>
vendor: 1 bytes, line 4373
4373
4374<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"d2a8f4b3d65944edb8fcd6ffce49ee5e","spa":2}' crossorigin="anonymous"></script>
vendor: 1 bytes, line 4374
4374
4375<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a45f456588987d03',t:'MTc5MTIzMzEzNw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
4375</body> 4376</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.