PageSourceSearch

https://hedgerealty.com/agent

html hedgerealty.com collected 2026-09-29 09:47:57 UTC 529,440 bytes, 6,854 lines download raw bytes

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>The Team | Hedge Realty | Petaluma Real Estate Team</title>
10        <meta property="og:title" content="The Team | Hedge Realty | Petaluma Real Estate Team">
11        <meta name="twitter:title" content="The Team | Hedge Realty | Petaluma Real Estate Team">
12        <meta name="description" content="Our team in the backfield. What makes us click? The things that make you click. Keeping listings up to date and more at your finger tips. Attention to detail. And the big picture. We love it. And do it well.">
13        <meta property="og:description" content="Our team in the backfield. What makes us click? The things that make you click. Keeping listings up to date and more at your finger tips. Attention to detail. And the big picture. We love it. And do it well.">
14        <meta name="twitter:description" content="Our team in the backfield. What makes us click? The things that make you click. Keeping listings up to date and more at your finger tips. Attention to detail. And the big picture. We love it. And d...">
15        <meta property="og:image" content="https://media-production.lp-cdn.com/media/eba1509a-a365-4d52-b85f-17594a8a53b4">
16        <meta name="twitter:image" content="https://media-production.lp-cdn.com/media/eba1509a-a365-4d52-b85f-17594a8a53b4">
17        <meta property="og:url" content="https://hedgerealty.com/agent">
18        <link rel="canonical" href="https://hedgerealty.com/agent">
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=Raleway:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Baskervville:400,400i">
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:Raleway,sans-serif;--global-primary-font-family-short:Raleway;--global-secondary-font-family:Baskervville,serif;--global-secondary-font-family-short:Baskervville;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:19px;--global-h1-font-size:45px;--global-h2-font-size:41px;--global-h3-font-size:30px;--global-h4-font-size:21px;--global-h5-font-size:17px;--global-h6-font-size:16px;--global-section-padding:96px;}@media (max-width: 768px){:root{--global-section-padding:64px;}}body{padding:0px;background-color:#fff;font-family:Baskervville,serif;font-size:19px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:Raleway,sans-serif;}h1{font-size:45px;}h2{font-size:41px;}h3{font-size:30px;}h4{font-size:21px;}h5{font-size:17px;}h6{font-size:16px;}</style>
30        <link rel="stylesheet" type="text/css" href="https://styles.luxurypresence.com/producer/index.css" />
31    <style id="website-css">@import url('https://fonts.googleapis.com/css?family=Karla|Playfair+Display');@font-face{font-family:'Futura';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-Medium.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-Medium.woff') format('woff');font-weight:500;font-style:normal;}@font-face{font-family:'Futura';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-MediumItalic.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-MediumItalic.woff') format('woff');font-weight:500;font-style:italic;}@font-face{font-family:'Futura';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-HeavyItalic.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-HeavyItalic.woff') format('woff');font-weight:900;font-style:italic;}@font-face{font-family:'Futura';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-LightItalic.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-LightItalic.woff') format('woff');font-weight:300;font-style:italic;}@font-face{font-family:'Futura';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-Heavy.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-Heavy.woff') format('woff');font-weight:900;font-style:normal;}@font-face{font-family:'Futura';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-Book.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-Book.woff') format('woff');font-weight:normal;font-style:normal;}@font-face{font-family:'Futura';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-BookItalic.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-BookItalic.woff') format('woff');font-weight:normal;font-style:italic;}@font-face{font-family:'Futura';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-BoldItalic.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-BoldItalic.woff') format('woff');font-weight:bold;font-style:italic;}@font-face{font-family:'Futura';src:url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-Light.woff2') format('woff2'),url('https://d1e1jt2fj4r8r.cloudfront.net/fonts/Futura/FuturaBT-Light.woff') format('woff');font-weight:300;font-style:normal;}:root{--global-primary-font-family:"Futura",sans-serif;--global-primary-font-family-short:"Futura",sans-serif;--global-secondary-font-family:"Futura",sans-serif;--global-secondary-font-family-short:"Futura",sans-serif;}nav .header{background-color:transparent;color:#000;}nav .header__logo .dark{display:block!important;}nav .header__logo .light{display:none!important;}nav .header{position:fixed;width:100%;}nav .navigation__link{font-family:var(--global-primary-font-family);}nav .navigation__link:before{display:none!important;}nav .navigation__link span{font-size:14px;}nav .navigation__link span:hover{font-weight:700!important;}nav .sub-nav ul li a{font-family:var(--global-primary-font-family);text-transform:uppercase;font-size:14px!important;}#global-navbar .scroll{color:#000;}#global-navbar{-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;transform:none!important;}nav#global-navbar .header .navigation .navigation__item .sub-nav .sub-nav.visible{background-color:transparent;width:230px;}nav#global-navbar .header .navigation .navigation__item .sub-nav .sub-nav.visible .nav-link:hover{font-weight:700;background-color:transparent;}#global-navbar .header .container{max-width:1920px;}#global-navbar .header .hamburger{display:none;}@media (max-width: 767px){#global-navbar .header .hamburger{display:block;}}#global-sidemenu .sub-nav a{font-size:20px;line-height:20px;}@media (min-width: 1295px){footer .footer div.info-wrap-contact_zone{display:-webkit-inline-box!important;display:-webkit-inline-flex!important;display:-ms-inline-flexbox!important;display:inline-flex!important;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:20px!important;}}@media (max-width: 1300px){section:not(#any) .full-bleed-container .hoverable-image{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}section:not(#any) .full-bleed-container .hoverable-image--reverse .hoverable-image__text-wrap{padding:0;}section:not(#any) .full-bleed-container .hoverable-image--straight .hoverable-image__text-wrap{padding-left:0;}section:not(#any) .full-bleed-container .hoverable-image__text-col{padding:0;margin-top:29px;margin-bottom:0;}section:not(#any) .full-bleed-container .hoverable-image__text-col .lp-container{position:static;-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);left:0;}}#global-footer .footer .info-wrap{text-align:center;}h1{font-size:37px;}h2{font-size:36px;}h3{font-size:21px;}#global-navbar.scroll{background-color:#1a1a1a00!important;}.header__left{-webkit-box-pack:end!important;-ms-flex-pack:end!important;
31-webkit-justify-content:flex-end!important;justify-content:flex-end!important;-webkit-flex-basis:60%;-ms-flex-preferred-size:60%;flex-basis:60%;padding:0 100px 0 100px;}.header .header__right{-webkit-box-pack:start!important;-ms-flex-pack:start!important;-webkit-justify-content:flex-start!important;justify-content:flex-start!important;padding:0 100px 0 100px;}nav#global-navbar .sub-nav-container:hover .sub-nav{background-color:transparent;width:230px;-webkit-transform:translateY(100%);-moz-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);visibility:visible;opacity:1;}nav#global-navbar .sub-nav-container:hover .sub-nav ul li a.nav-link:hover{font-weight:700!important;background:transparent!important;}nav#global-navbar .sub-nav-container:nth-child(3):hover .sub-nav{-webkit-transform:translate(-30%, 100%)!important;-moz-transform:translate(-30%, 100%)!important;-ms-transform:translate(-30%, 100%)!important;transform:translate(-30%, 100%)!important;}nav#global-navbar .sub-nav-container:nth-child(3):hover .sub-nav ul li a.nav-link:hover{font-weight:700!important;background:transparent!important;}#global-footer .footer .info-wrap-contact_cell{text-transform:none;}.info-wrap-contact_title{text-transform:uppercase;}.contact_title{text-transform:uppercase;}nav .navigation__link{font-size:11px!important;font-weight:400!important;}nav#global-navbar.scroll .header{background-color:rgba(255, 255, 255, 0.8);}nav#global-navbar .header{background-color:rgba(255, 255, 255, 0.8);}nav#global-navbar .header .navigation ul li a{background-color:#fff;}nav#global-navbar .sub-nav-container:nth-child(3):hover .sub-nav ul li a.nav-link:hover{background:rgba(255, 255, 255, 0.8)!important;}nav#global-navbar .sub-nav-container:hover .sub-nav ul li a.nav-link:hover{background:rgba(255, 255, 255, 0.8)!important;}</style>
32    <style id="wow-hide-elements">.wow{visibility:hidden!important}</style>
33        <style id="page-css">
34            #section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2{background-attachment:fixed;-webkit-background-position:center;background-position:center;background-repeat:...background-size:cover;color:rgba(255, 255, 255, 1);--fontColor:rgba(255, 255, 255, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#ffffff;--gradient-color:var(--overlay-color, rgba(0, 0, 0, 0.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/qqbrperz6joc7rnguoho');background-repeat:no-repeat;-webkit-background-position:center;background-position:center;-webkit-background-size:cover;background-size:cover;}@media (max-width: 767px){#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2{background-attachment:scroll;}}#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2 h1{text-transform:lowercase;letter-spacing:6px;}#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2 .custom-intro{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:600px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2 .custom-intro .container{z-index:1;text-align:center;max-width:900px;}#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2 .custom-intro__title{margin-bottom:0px;font-weight:400;margin-bottom:24px;}@media (max-width: 768px){#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2 .custom-intro__title{font-size:32px;}}@media (max-width: 360px){#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2 .custom-intro__title{font-size:22px;}}#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2 .custom-intro__subtitle{font-weight:400;white-space:pre-line;font-size:21px;line-height:1.57;}@media (max-width: 768px){#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2 .custom-intro__subtitle{font-size:18px;}}#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2 .description{margin-bottom:15px;}@media (min-width: 960px) and (orientation: landscape){#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2{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/qqbrperz6joc7rnguoho');}}@media (min-width: 1280px) and (orientation: landscape){#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2{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/qqbrperz6joc7rnguoho');}}@media (min-width: 1920px) and (orientation: landscape){#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2{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/qqbrperz6joc7rnguoho');}}@media (min-width: 2560px) and (orientation: landscape){#section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2{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/qqbrperz6joc7rnguoho');}}#section-03af5970-969f-4ce5-87e6-2b86762a7411{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-bottom:calc(0 / 4 * var(--global-section-padding));background-color:#fff;}#section-03af5970-969f-4ce5-87e6-2b86762a7411 h2{text-transform:lowercase;font-size:36px;letter-spacing:4px;}#section-03af5970-969f-4ce5-87e6-2b86762a7411 .boxed-text__description{margin-bottom:50px;text-align:center;}@media (max-width: 768px){#section-03af5970-969f-4ce5-87e6-2b86762a7411 .boxed-text__description{margin-bottom:30px;}}#section-03af5970-969f-4ce5-87e6-2b86762a7411 .lp-title-group .lp-h2{margin-top:0;}#section-03af5970-969f-4ce5-87e6-2b86762a7411 .button-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}@media(max-width: 600px){#section-03af5970-969f-4ce5-87e6-2b86762a7411 .button-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-03af5970-969f-4ce5-87e6-2b86762a7411 .button-container .lp-btn{margin-right:20px;}#section-03af5970-969f-4ce5-87e6-2b86762a7411 .button-container .lp-btn:last-of-type{margin-right:0;}@media(max-width: 600px){#section-03af5970-969f-4ce5-87e6-2b86762a7411 .button-container .lp-btn{margin-right:0px;margin-bottom:20px;width:100%;}#section-03af5970-969f-4ce5-87e6-2b86762a7411 .button-container .lp-btn:last-of-type{margin-bottom:0;}}#section-03af5970-969f-4ce5-87e6-2b86762a7411 .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-03af5970-969f-4ce5-87e6-2b86762a7411 .redesign p{margin-bottom:1.666rem;}#section-03af5970-969f-4ce5-87e6-2b86762a7411>div:last-child{padding-bottom:calc(0 / 4 * var(--global-section-padding))!important;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:rgba(255, 255, 255, 1);}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .container .team-grid__wrapper .team-member__container:nth-child(7),#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .container .team-grid__wrapper .team-member__container:nth-child(9){visibility:hidden;}@media (max-width:900px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .container .team-grid__wrapper .team-member__container:nth-child(7),#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .container .team-grid__wrapper .team-member__container:nth-child(9){display:none;}}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container .team-member__image-wrap .team-member__image{width:61.2%;padding-top:79%;margin:auto;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container .team-member__image-wrap .team-member__hover:before{width:63%!important;height:100%!important;top:0%;left:19%;border:2px solid #000000;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container .team-member__image-wrap .team-member__hover:after{display:none;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container .team-member__image-wrap .team-member__hover .team-member__btn{width:57%;font-size:1vh;margin-left:1%;position:relative;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .container .team-grid__wrapper .team-member__container:nth-child(4),#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .container .team-grid__wrapper .team-member__container:nth-child(5),#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .container .team-grid__wrapper .team-member__container:nth-child(6),#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .container .team-grid__wrapper .team-member__container:nth-child(8){pointer-events:none;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .lp-h2{font-size:36px;letter-spacing:4px;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-grid{padding:140px 0 90px;}@media (max-width: 768px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-grid{padding:40px 0;}}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-grid__title{text-align:center;margin-bottom:50px;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-grid .lp-input{width:100%;height:35px;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-grid__wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-25px;margin-right:-25px;}@media(min-width: 1001px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-grid__wrapper.two-col{max-width:750px;width:100%;margin:0 auto;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-grid__wrapper.two-col .team-member__container{width:50%;}}@media(max-width: 1000px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-grid__wrapper{max-width:1000px;}}@media (max-width: 768px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-grid__wrapper{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container{width:33.333%;padding-left:25px;padding-right:25px;margin-bottom:50px;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container:first-child{margin-left:auto;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container:last-child{margin-right:auto;}@media(max-width: 1000px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container{width:50%;}}@media (max-width: 768px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container{width:100%;}}@media (hover: hover) and (pointer: fine){@media (min-width: 769px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container:hover .team-member__image{opacity:.5;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container:hover .team-member__hover{opacity:1;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container:hover .team-member__hover::before,#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container:hover .team-member__hover::after{width:100%;height:100%;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container:hover .team-member__hover::before{border-top-color:inherit;border-right-color:inherit;-webkit-transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container:hover .team-member__hover::after{border-bottom-color:inherit;border-left-color:inherit;-webkit-transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;}}}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__container.filtered-out{display:none;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__link{position:relative;display:block;height:100%;cursor:pointer;color:inherit;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__image{position:relative;width:100%;padding-top:130%;background-color:#cccccc;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__image img{position:absolute;object-fit:cover;width:100%;height:100%;top:0;left:0;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__image-wrap{position:relative;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__hover{opacity:0;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-transform:translate(20px, 20px);-moz-transform:translate(20px, 20px);-ms-transform:translate(20px, 20px);transform:translate(20px, 20px);
34display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__hover:before,#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__hover:after{content:' ';position:absolute;border:2px solid transparent;width:0;height:0;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__hover:before{top:0;left:0;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__hover:after{bottom:0;right:0;}@media (hover:none) and (pointer: coarse){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__hover{display:none;}}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__name{display:block;margin-top:25px;font-size:30px;line-height:40px;font-weight:400;font-family:var(--global-primary-font-family);}@media (max-width: 560px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__name{font-size:18px;line-height:29px;letter-spacing:0.75px;}}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__role{display:block;margin-top:8px;font-size:14px;line-height:24px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1.5px;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__license{font-size:13px;text-transform:uppercase;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__info{text-align:center;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .team-member__btn{margin-bottom:60px;position:relative;z-index:1;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .form-container{padding-bottom:48px;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .search-form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0 -10px -8px;}@media (max-width: 600px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .search-form{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0;}}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .input-group{-webkit-flex:1 0 250px;-ms-flex:1 0 250px;flex:1 0 250px;max-width:300px;position:relative;margin:8px 10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 600px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .input-group{-webkit-flex:1;-ms-flex:1;flex:1;max-width:unset;margin:8px 0;}}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .search-icon{position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:0;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .search-clear-icon{color:#b2b2b2;position:absolute;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:40px;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .search-clear-icon:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .is-empty .search-clear-icon{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .search-input{padding-right:65px;}@media (max-width: 569px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .search-input{padding-bottom:5px;}}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-toggle{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;outline:none;text-align:left;cursor:pointer;position:relative;padding-right:65px;overflow:hidden;text-overflow:ellipsis;text-transform:none;font-family:var(--global-secondary-font-family);}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-open-icon{position:absolute;right:17px;top:calc(50% - 1px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform .3s ease;transition:transform .3s ease;cursor:pointer;color:#b2b2b2;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-clear{color:#b2b2b2;position:absolute;right:40px;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-clear:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}@media (max-width: 639px){#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-clear{display:none;}}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-dropdown{position:absolute;width:100%;top:calc(100% + 5px);overflow:hidden;height:0;-webkit-transition:height 0.3s ease;transition:height 0.3s ease;background-color:#f5f5f5;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-dropdown.on-top{bottom:calc(100% + 5px);top:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-dropdown.opened{z-index:999;position:fixed;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-dropdown-wrapper{width:100%;overflow:hidden auto;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-optgroup{width:100%;padding:11px 20px;color:#b2b2b2;cursor:default;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-option{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;text-align:left;width:100%;border:none;border-radius:0;background-color:transparent;cursor:pointer;padding:11px 20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-transform:none;font-family:var(--global-secondary-font-family);}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select-option:hover{background-color:#b2b2b2;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select{-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select.is-empty .c-select-toggle{color:#b2b2b2;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select.is-empty .c-select-clear{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .c-select.opened .c-select-open-icon{color:currentColor;-webkit-transform:translateY(-50%) rotateX(180deg);-moz-transform:translateY(-50%) rotateX(180deg);-ms-transform:translateY(-50%) rotateX(180deg);transform:translateY(-50%) rotateX(180deg);}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .empty-message{padding:160px 0;text-align:center;display:none;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .empty-message.visible{display:block;}#section-40e257c9-edea-4cb8-9ee1-32c3ade9c174 .visually-hidden{position:absolute;overflow:hidden;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;border:0;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(2 / 4 * var(--global-section-padding));background-color:rgba(255, 255, 255, 1);}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .container .team-grid__wrapper .team-member__container:nth-child(7),#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .container .team-grid__wrapper .team-member__container:nth-child(9){visibility:hidden;}
34@media (max-width:900px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .container .team-grid__wrapper .team-member__container:nth-child(7),#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .container .team-grid__wrapper .team-member__container:nth-child(9){display:none;}}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container .team-member__image-wrap .team-member__image{width:61.2%;padding-top:79%;margin:auto;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container .team-member__image-wrap .team-member__hover:before{width:63%!important;height:100%!important;top:0%;left:19%;border:2px solid #000000;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container .team-member__image-wrap .team-member__hover:after{display:none;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container .team-member__image-wrap .team-member__hover .team-member__btn{width:57%;font-size:1vh;margin-left:1%;position:relative;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .container .team-grid__wrapper .team-member__container:nth-child(4),#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .container .team-grid__wrapper .team-member__container:nth-child(5),#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .container .team-grid__wrapper .team-member__container:nth-child(6),#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .container .team-grid__wrapper .team-member__container:nth-child(8){pointer-events:none;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .lp-h2{font-size:36px;letter-spacing:4px;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-grid{padding:140px 0 90px;}@media (max-width: 768px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-grid{padding:40px 0;}}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-grid__title{text-align:center;margin-bottom:50px;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-grid .lp-input{width:100%;height:35px;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-grid__wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-25px;margin-right:-25px;}@media(min-width: 1001px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-grid__wrapper.two-col{max-width:750px;width:100%;margin:0 auto;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-grid__wrapper.two-col .team-member__container{width:50%;}}@media(max-width: 1000px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-grid__wrapper{max-width:1000px;}}@media (max-width: 768px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-grid__wrapper{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container{width:33.333%;padding-left:25px;padding-right:25px;margin-bottom:50px;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container:first-child{margin-left:auto;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container:last-child{margin-right:auto;}@media(max-width: 1000px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container{width:50%;}}@media (max-width: 768px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container{width:100%;}}@media (hover: hover) and (pointer: fine){@media (min-width: 769px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container:hover .team-member__image{opacity:.5;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container:hover .team-member__hover{opacity:1;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container:hover .team-member__hover::before,#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container:hover .team-member__hover::after{width:100%;height:100%;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container:hover .team-member__hover::before{border-top-color:inherit;border-right-color:inherit;-webkit-transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container:hover .team-member__hover::after{border-bottom-color:inherit;border-left-color:inherit;-webkit-transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;}}}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__container.filtered-out{display:none;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__link{position:relative;display:block;height:100%;cursor:pointer;color:inherit;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__image{position:relative;width:100%;padding-top:130%;background-color:#cccccc;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__image img{position:absolute;object-fit:cover;width:100%;height:100%;top:0;left:0;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__image-wrap{position:relative;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__hover{opacity:0;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-transform:translate(20px, 20px);-moz-transform:translate(20px, 20px);-ms-transform:translate(20px, 20px);transform:translate(20px, 20px);
34display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__hover:before,#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__hover:after{content:' ';position:absolute;border:2px solid transparent;width:0;height:0;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__hover:before{top:0;left:0;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__hover:after{bottom:0;right:0;}@media (hover:none) and (pointer: coarse){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__hover{display:none;}}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__name{display:block;margin-top:25px;font-size:30px;line-height:40px;font-weight:400;font-family:var(--global-primary-font-family);}@media (max-width: 560px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__name{font-size:18px;line-height:29px;letter-spacing:0.75px;}}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__role{display:block;margin-top:8px;font-size:14px;line-height:24px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1.5px;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__license{font-size:13px;text-transform:uppercase;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__info{text-align:center;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .team-member__btn{margin-bottom:60px;position:relative;z-index:1;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .form-container{padding-bottom:48px;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .search-form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0 -10px -8px;}@media (max-width: 600px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .search-form{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0;}}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .input-group{-webkit-flex:1 0 250px;-ms-flex:1 0 250px;flex:1 0 250px;max-width:300px;position:relative;margin:8px 10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 600px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .input-group{-webkit-flex:1;-ms-flex:1;flex:1;max-width:unset;margin:8px 0;}}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .search-icon{position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:0;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .search-clear-icon{color:#b2b2b2;position:absolute;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:40px;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .search-clear-icon:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .is-empty .search-clear-icon{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .search-input{padding-right:65px;}@media (max-width: 569px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .search-input{padding-bottom:5px;}}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-toggle{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;outline:none;text-align:left;cursor:pointer;position:relative;padding-right:65px;overflow:hidden;text-overflow:ellipsis;text-transform:none;font-family:var(--global-secondary-font-family);}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-open-icon{position:absolute;right:17px;top:calc(50% - 1px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform .3s ease;transition:transform .3s ease;cursor:pointer;color:#b2b2b2;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-clear{color:#b2b2b2;position:absolute;right:40px;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-clear:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}@media (max-width: 639px){#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-clear{display:none;}}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-dropdown{position:absolute;width:100%;top:calc(100% + 5px);overflow:hidden;height:0;-webkit-transition:height 0.3s ease;transition:height 0.3s ease;background-color:#f5f5f5;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-dropdown.on-top{bottom:calc(100% + 5px);top:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-dropdown.opened{z-index:999;position:fixed;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-dropdown-wrapper{width:100%;overflow:hidden auto;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-optgroup{width:100%;padding:11px 20px;color:#b2b2b2;cursor:default;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-option{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;text-align:left;width:100%;border:none;border-radius:0;background-color:transparent;cursor:pointer;padding:11px 20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-transform:none;font-family:var(--global-secondary-font-family);}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select-option:hover{background-color:#b2b2b2;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select{-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select.is-empty .c-select-toggle{color:#b2b2b2;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select.is-empty .c-select-clear{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .c-select.opened .c-select-open-icon{color:currentColor;-webkit-transform:translateY(-50%) rotateX(180deg);-moz-transform:translateY(-50%) rotateX(180deg);-ms-transform:translateY(-50%) rotateX(180deg);transform:translateY(-50%) rotateX(180deg);}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .empty-message{padding:160px 0;text-align:center;display:none;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .empty-message.visible{display:block;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9 .visually-hidden{position:absolute;overflow:hidden;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;border:0;}#section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9>div:last-child{padding-top:calc(2 / 4 * var(--global-section-padding))!important;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(2 / 4 * var(--global-section-padding));background-color:rgba(255, 255, 255, 1);}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .container .team-grid__wrapper .team-member__container:nth-child(7),#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .container .team-grid__wrapper .team-member__container:nth-child(9){visibility:hidden;}
34@media (max-width:900px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .container .team-grid__wrapper .team-member__container:nth-child(7),#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .container .team-grid__wrapper .team-member__container:nth-child(9){display:none;}}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container .team-member__image-wrap .team-member__image{width:61.2%;padding-top:79%;margin:auto;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container .team-member__image-wrap .team-member__hover:before{width:63%!important;height:100%!important;top:0%;left:19%;border:2px solid #000000;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container .team-member__image-wrap .team-member__hover:after{display:none;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container .team-member__image-wrap .team-member__hover .team-member__btn{width:57%;font-size:1vh;margin-left:1%;position:relative;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .container .team-grid__wrapper .team-member__container:nth-child(4),#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .container .team-grid__wrapper .team-member__container:nth-child(5),#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .container .team-grid__wrapper .team-member__container:nth-child(6),#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .container .team-grid__wrapper .team-member__container:nth-child(8){pointer-events:none;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .lp-h2{font-size:36px;letter-spacing:4px;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-grid{padding:140px 0 90px;}@media (max-width: 768px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-grid{padding:40px 0;}}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-grid__title{text-align:center;margin-bottom:50px;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-grid .lp-input{width:100%;height:35px;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-grid__wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-25px;margin-right:-25px;}@media(min-width: 1001px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-grid__wrapper.two-col{max-width:750px;width:100%;margin:0 auto;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-grid__wrapper.two-col .team-member__container{width:50%;}}@media(max-width: 1000px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-grid__wrapper{max-width:1000px;}}@media (max-width: 768px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-grid__wrapper{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container{width:33.333%;padding-left:25px;padding-right:25px;margin-bottom:50px;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container:first-child{margin-left:auto;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container:last-child{margin-right:auto;}@media(max-width: 1000px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container{width:50%;}}@media (max-width: 768px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container{width:100%;}}@media (hover: hover) and (pointer: fine){@media (min-width: 769px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container:hover .team-member__image{opacity:.5;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container:hover .team-member__hover{opacity:1;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container:hover .team-member__hover::before,#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container:hover .team-member__hover::after{width:100%;height:100%;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container:hover .team-member__hover::before{border-top-color:inherit;border-right-color:inherit;-webkit-transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container:hover .team-member__hover::after{border-bottom-color:inherit;border-left-color:inherit;-webkit-transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;}}}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__container.filtered-out{display:none;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__link{position:relative;display:block;height:100%;cursor:pointer;color:inherit;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__image{position:relative;width:100%;padding-top:130%;background-color:#cccccc;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__image img{position:absolute;object-fit:cover;width:100%;height:100%;top:0;left:0;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__image-wrap{position:relative;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__hover{opacity:0;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-transform:translate(20px, 20px);-moz-transform:translate(20px, 20px);-ms-transform:translate(20px, 20px);transform:translate(20px, 20px);
34display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__hover:before,#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__hover:after{content:' ';position:absolute;border:2px solid transparent;width:0;height:0;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__hover:before{top:0;left:0;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__hover:after{bottom:0;right:0;}@media (hover:none) and (pointer: coarse){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__hover{display:none;}}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__name{display:block;margin-top:25px;font-size:30px;line-height:40px;font-weight:400;font-family:var(--global-primary-font-family);}@media (max-width: 560px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__name{font-size:18px;line-height:29px;letter-spacing:0.75px;}}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__role{display:block;margin-top:8px;font-size:14px;line-height:24px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1.5px;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__license{font-size:13px;text-transform:uppercase;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__info{text-align:center;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .team-member__btn{margin-bottom:60px;position:relative;z-index:1;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .form-container{padding-bottom:48px;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .search-form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0 -10px -8px;}@media (max-width: 600px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .search-form{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0;}}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .input-group{-webkit-flex:1 0 250px;-ms-flex:1 0 250px;flex:1 0 250px;max-width:300px;position:relative;margin:8px 10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 600px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .input-group{-webkit-flex:1;-ms-flex:1;flex:1;max-width:unset;margin:8px 0;}}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .search-icon{position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:0;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .search-clear-icon{color:#b2b2b2;position:absolute;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:40px;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .search-clear-icon:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .is-empty .search-clear-icon{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .search-input{padding-right:65px;}@media (max-width: 569px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .search-input{padding-bottom:5px;}}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-toggle{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;outline:none;text-align:left;cursor:pointer;position:relative;padding-right:65px;overflow:hidden;text-overflow:ellipsis;text-transform:none;font-family:var(--global-secondary-font-family);}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-open-icon{position:absolute;right:17px;top:calc(50% - 1px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform .3s ease;transition:transform .3s ease;cursor:pointer;color:#b2b2b2;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-clear{color:#b2b2b2;position:absolute;right:40px;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-clear:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}@media (max-width: 639px){#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-clear{display:none;}}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-dropdown{position:absolute;width:100%;top:calc(100% + 5px);overflow:hidden;height:0;-webkit-transition:height 0.3s ease;transition:height 0.3s ease;background-color:#f5f5f5;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-dropdown.on-top{bottom:calc(100% + 5px);top:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-dropdown.opened{z-index:999;position:fixed;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-dropdown-wrapper{width:100%;overflow:hidden auto;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-optgroup{width:100%;padding:11px 20px;color:#b2b2b2;cursor:default;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-option{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;text-align:left;width:100%;border:none;border-radius:0;background-color:transparent;cursor:pointer;padding:11px 20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-transform:none;font-family:var(--global-secondary-font-family);}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select-option:hover{background-color:#b2b2b2;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select{-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select.is-empty .c-select-toggle{color:#b2b2b2;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select.is-empty .c-select-clear{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .c-select.opened .c-select-open-icon{color:currentColor;-webkit-transform:translateY(-50%) rotateX(180deg);-moz-transform:translateY(-50%) rotateX(180deg);-ms-transform:translateY(-50%) rotateX(180deg);transform:translateY(-50%) rotateX(180deg);}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .empty-message{padding:160px 0;text-align:center;display:none;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .empty-message.visible{display:block;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a .visually-hidden{position:absolute;overflow:hidden;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;border:0;}#section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a>div:last-child{padding-top:calc(2 / 4 * var(--global-section-padding))!important;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--section-padding-top:calc(2 / 4 * var(--global-section-padding));background-color:rgba(255, 255, 255, 1);}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .container .team-grid__wrapper .team-member__container:nth-child(7),#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .container .team-grid__wrapper .team-member__container:nth-child(9){visibility:hidden;}
34@media (max-width:900px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .container .team-grid__wrapper .team-member__container:nth-child(7),#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .container .team-grid__wrapper .team-member__container:nth-child(9){display:none;}}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container .team-member__image-wrap .team-member__image{width:61.2%;padding-top:79%;margin:auto;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container .team-member__image-wrap .team-member__hover:before{width:63%!important;height:100%!important;top:0%;left:19%;border:2px solid #000000;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container .team-member__image-wrap .team-member__hover:after{display:none;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container .team-member__image-wrap .team-member__hover .team-member__btn{width:57%;font-size:1vh;margin-left:1%;position:relative;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .container .team-grid__wrapper .team-member__container:nth-child(4),#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .container .team-grid__wrapper .team-member__container:nth-child(5),#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .container .team-grid__wrapper .team-member__container:nth-child(6),#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .container .team-grid__wrapper .team-member__container:nth-child(8){pointer-events:none;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .lp-h2{font-size:36px;letter-spacing:4px;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-grid{padding:140px 0 90px;}@media (max-width: 768px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-grid{padding:40px 0;}}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-grid__title{text-align:center;margin-bottom:50px;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-grid .lp-input{width:100%;height:35px;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-grid__wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-25px;margin-right:-25px;}@media(min-width: 1001px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-grid__wrapper.two-col{max-width:750px;width:100%;margin:0 auto;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-grid__wrapper.two-col .team-member__container{width:50%;}}@media(max-width: 1000px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-grid__wrapper{max-width:1000px;}}@media (max-width: 768px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-grid__wrapper{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container{width:33.333%;padding-left:25px;padding-right:25px;margin-bottom:50px;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container:first-child{margin-left:auto;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container:last-child{margin-right:auto;}@media(max-width: 1000px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container{width:50%;}}@media (max-width: 768px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container{width:100%;}}@media (hover: hover) and (pointer: fine){@media (min-width: 769px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container:hover .team-member__image{opacity:.5;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container:hover .team-member__hover{opacity:1;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container:hover .team-member__hover::before,#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container:hover .team-member__hover::after{width:100%;height:100%;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container:hover .team-member__hover::before{border-top-color:inherit;border-right-color:inherit;-webkit-transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;transition:width 0.25s ease-out,height 0.25s ease-out 0.25s;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container:hover .team-member__hover::after{border-bottom-color:inherit;border-left-color:inherit;-webkit-transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;transition:width 0.25s ease-out 0.5s,height 0.25s ease-out 0.75s,border-color 0.01s ease-out 0.5s;}}}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__container.filtered-out{display:none;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__link{position:relative;display:block;height:100%;cursor:pointer;color:inherit;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__image{position:relative;width:100%;padding-top:130%;background-color:#cccccc;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__image img{position:absolute;object-fit:cover;width:100%;height:100%;top:0;left:0;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__image-wrap{position:relative;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__hover{opacity:0;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-transform:translate(20px, 20px);-moz-transform:translate(20px, 20px);-ms-transform:translate(20px, 20px);transform:translate(20px, 20px);
34display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__hover:before,#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__hover:after{content:' ';position:absolute;border:2px solid transparent;width:0;height:0;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__hover:before{top:0;left:0;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__hover:after{bottom:0;right:0;}@media (hover:none) and (pointer: coarse){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__hover{display:none;}}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__name{display:block;margin-top:25px;font-size:30px;line-height:40px;font-weight:400;font-family:var(--global-primary-font-family);}@media (max-width: 560px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__name{font-size:18px;line-height:29px;letter-spacing:0.75px;}}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__role{display:block;margin-top:8px;font-size:14px;line-height:24px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1.5px;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__license{font-size:13px;text-transform:uppercase;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__info{text-align:center;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .team-member__btn{margin-bottom:60px;position:relative;z-index:1;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .form-container{padding-bottom:48px;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .search-form{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0 -10px -8px;}@media (max-width: 600px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .search-form{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-align-items:stretch;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;margin:0;}}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .input-group{-webkit-flex:1 0 250px;-ms-flex:1 0 250px;flex:1 0 250px;max-width:300px;position:relative;margin:8px 10px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 600px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .input-group{-webkit-flex:1;-ms-flex:1;flex:1;max-width:unset;margin:8px 0;}}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .search-icon{position:absolute;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:0;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .search-clear-icon{color:#b2b2b2;position:absolute;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);right:40px;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .search-clear-icon:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .is-empty .search-clear-icon{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .search-input{padding-right:65px;}@media (max-width: 569px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .search-input{padding-bottom:5px;}}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-toggle{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;outline:none;text-align:left;cursor:pointer;position:relative;padding-right:65px;overflow:hidden;text-overflow:ellipsis;text-transform:none;font-family:var(--global-secondary-font-family);}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-open-icon{position:absolute;right:17px;top:calc(50% - 1px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform .3s ease;transition:transform .3s ease;cursor:pointer;color:#b2b2b2;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-clear{color:#b2b2b2;position:absolute;right:40px;top:calc(50% + 2px);-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0.3s;opacity:1;visibility:visible;cursor:pointer;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-clear:hover{-webkit-transform:translateY(-50%) scale(1.2);-moz-transform:translateY(-50%) scale(1.2);-ms-transform:translateY(-50%) scale(1.2);transform:translateY(-50%) scale(1.2);}@media (max-width: 639px){#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-clear{display:none;}}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-dropdown{position:absolute;width:100%;top:calc(100% + 5px);overflow:hidden;height:0;-webkit-transition:height 0.3s ease;transition:height 0.3s ease;background-color:#f5f5f5;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-dropdown.on-top{bottom:calc(100% + 5px);top:auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-dropdown.opened{z-index:999;position:fixed;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-dropdown-wrapper{width:100%;overflow:hidden auto;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-optgroup{width:100%;padding:11px 20px;color:#b2b2b2;cursor:default;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-option{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;text-align:left;width:100%;border:none;border-radius:0;background-color:transparent;cursor:pointer;padding:11px 20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;text-transform:none;font-family:var(--global-secondary-font-family);}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select-option:hover{background-color:#b2b2b2;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select{-webkit-flex:1 0 0%;-ms-flex:1 0 0%;flex:1 0 0%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select.is-empty .c-select-toggle{color:#b2b2b2;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select.is-empty .c-select-clear{opacity:0;visibility:hidden;-webkit-transition:-webkit-transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;transition:transform 0.3s ease,opacity 0.3s ease,visibility 0s linear 0s;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .c-select.opened .c-select-open-icon{color:currentColor;-webkit-transform:translateY(-50%) rotateX(180deg);-moz-transform:translateY(-50%) rotateX(180deg);-ms-transform:translateY(-50%) rotateX(180deg);transform:translateY(-50%) rotateX(180deg);}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .empty-message{padding:160px 0;text-align:center;display:none;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .empty-message.visible{display:block;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de .visually-hidden{position:absolute;overflow:hidden;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;padding:0;border:0;}#section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de>div:last-child{padding-top:calc(2 / 4 * var(--global-section-padding))!important;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5{color:rgba(0, 0, 0, 1);--fontColor:rgba(0, 0, 0, 1);--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:rgba(255, 255, 255, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:rgba(255, 255, 255, 1);}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .lp-text--subtitle{font-size:41px;line-height:53px;letter-spacing:12px;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;
34-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup{min-height:80vh;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup .lp-container-custom{padding:0 25px;}}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form{margin:0;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form.success .newsletter-signup__form-container{display:none;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form.success .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__inputs-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 768px){#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__inputs-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form-container{position:relative;z-index:1;}@media (max-width: 768px){#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form-container .lp-h2{margin-bottom:32px;}}@media (max-width: 768px){#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form-container .lp-text--subtitle{margin-bottom:32px;}}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form-item +.newsletter-signup__form-item{margin-left:16px;}@media (max-width: 768px){#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form-item +.newsletter-signup__form-item{margin-left:0px;margin-top:32px;}}@media (min-width: 769px){#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form-item.lp-input{padding-top:0;padding-bottom:0;width:250px;}}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form-item.lp-btn{text-transform:uppercase;font-weight:700;}@media (min-width: 769px){#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup__form-item.lp-btn{width:200px;}}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;visibility:visible;opacity:1;z-index:2;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;text-align:center;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .newsletter-signup .success-block.hide{display:none;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .lp-text--subtitle{margin-left:auto;margin-right:auto;text-transform:none;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .lp-h-pot{max-width:1px;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .lp-title-group{max-width:unset;padding:0 20px;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 input:-webkit-autofill,#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 input:-webkit-autofill:hover,#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 input:-webkit-autofill:focus,#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 input:-webkit-autofill:active{-webkit-text-fill-color:var(--fontColor);-webkit-box-shadow:0 0 0px 1000px var(--bgColor) inset;-webkit-transition:background-color 5000s ease-in-out 0s;transition:background-color 5000s ease-in-out 0s;}#section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5 .lp-disclaimer{max-width:730px;margin:20px auto 0 auto;}#section-90b955a0-1aef-435e-aa96-59c408339909{color:#fff;--fontColor:#fff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#7F7C7C;--bgColor_H:0;--bgColor_S:1%;--bgColor_L:49%;--bgColor_A:1;--bgColor_darkenDir:1;--section-padding-top:calc(2 / 4 * var(--global-section-padding));--section-padding-bottom:calc(2 / 4 * var(--global-section-padding));background-color:#7F7C7C;}#section-90b955a0-1aef-435e-aa96-59c408339909 .video-wrapper{z-index:1;}#section-90b955a0-1aef-435e-aa96-59c408339909 .overlay-component{z-index:2;}#section-90b955a0-1aef-435e-aa96-59c408339909 .custom-content{z-index:3;position:relative;}#section-90b955a0-1aef-435e-aa96-59c408339909 h1,#section-90b955a0-1aef-435e-aa96-59c408339909 h2,#section-90b955a0-1aef-435e-aa96-59c408339909 h3,#section-90b955a0-1aef-435e-aa96-59c408339909 h4,#section-90b955a0-1aef-435e-aa96-59c408339909 h5,#section-90b955a0-1aef-435e-aa96-59c408339909 h6,#section-90b955a0-1aef-435e-aa96-59c408339909 p{margin-bottom:1.6666rem;}#section-90b955a0-1aef-435e-aa96-59c408339909 .lp-container *:last-child{margin-bottom:0;}#section-90b955a0-1aef-435e-aa96-59c408339909>div:last-child{padding-top:calc(2 / 4 * var(--global-section-padding))!important;padding-bottom:calc(2 / 4 * var(--global-section-padding))!important;}#modal-global-contact-us .close{z-index:11;}#modal-global-contact-us .description{margin-bottom:15px;}#modal-global-contact-us .close:focus{outline:0;}#modal-global-contact-us .contact-form{padding:70px 0;width:100%;min-height:100vh;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;color:var(--colorTxt, #ffffff);-webkit-background-size:cover;background-size:cover;}#modal-global-contact-us .contact-form:after{content:'';position:absolute;display:block;background-color:rgba(2, 5, 7, 0.85);height:100%;width:100%;z-index:0;}
34#modal-global-contact-us .contact-form.loading textarea,#modal-global-contact-us .contact-form.loading input,#modal-global-contact-us .contact-form.loading label,#modal-global-contact-us .contact-form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .submit-icon{display:none;}#modal-global-contact-us .contact-form .contact-form-close{width:40px;height:50px;display:block;padding:0;border:none;background-color:transparent;cursor:pointer;position:absolute;right:50px;top:50px;z-index:110;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close{right:20px;top:20px;width:30px;height:40px;}}#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{content:'';display:block;width:40px;height:1px;background-color:#fff;position:absolute;left:50%;top:50%;}@media (max-width: 560px){#modal-global-contact-us .contact-form .contact-form-close:before,#modal-global-contact-us .contact-form .contact-form-close:after{width:30px;}}#modal-global-contact-us .contact-form .contact-form-close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}#modal-global-contact-us .contact-form .contact-form-close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}#modal-global-contact-us .contact-form .container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;max-width:1440px;width:100%;padding:0 160px;margin:0 auto;z-index:10;}@media (max-width: 1320px){#modal-global-contact-us .contact-form .container{padding:0 80px;}}@media (max-width: 1200px){#modal-global-contact-us .contact-form .container{padding:0 30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .container{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .container{padding:0 20px;}}#modal-global-contact-us .contact-form h2{margin:0 0 18px 0;padding:0;}@media (max-width: 560px){#modal-global-contact-us .contact-form h2{margin:0 0 24px 0;}}#modal-global-contact-us .contact-form .section-details{width:50%;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-details{padding-right:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-details{width:100%;padding-right:0;max-width:700px;margin-bottom:38px;}}#modal-global-contact-us .contact-form .section-message{width:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;position:relative;}@media (max-width: 1200px){#modal-global-contact-us .contact-form .section-message{padding-left:30px;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message{width:100%;padding-left:0;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}#modal-global-contact-us .contact-form .section-message:after{content:'';position:absolute;display:block;width:1px;background:#999999;height:calc(100% + 50px);left:0;top:-20px;}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message:after{display:none;}}#modal-global-contact-us .contact-form .section-message form{max-width:435px;width:100%;}#modal-global-contact-us .contact-form .section-message form .submitButton{width:auto;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message form .submitButton{width:100%;}}@media (max-width: 900px){#modal-global-contact-us .contact-form .section-message form{max-width:700px;}}#modal-global-contact-us .contact-form .section-message form.loading textarea,#modal
34-global-contact-us .contact-form .section-message form.loading input,#modal-global-contact-us .contact-form .section-message form.loading label,#modal-global-contact-us .contact-form .section-message form.loading button{pointer-events:none;opacity:.5;}#modal-global-contact-us .contact-form .section-message form.loading .label-loading{display:inline;}#modal-global-contact-us .contact-form .section-message form.loading .label-success,#modal-global-contact-us .contact-form .section-message form.loading .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.loading .submit-icon{display:inline-block;}#modal-global-contact-us .contact-form .section-message form.success .label-loading,#modal-global-contact-us .contact-form .section-message form.success .label-initial{display:none;}#modal-global-contact-us .contact-form .section-message form.success .label-success{display:inline;}#modal-global-contact-us .contact-form .section-message .label-loading,#modal-global-contact-us .contact-form .section-message .label-success{display:none;}#modal-global-contact-us .contact-form .section-message .submit-icon{display:none;}#modal-global-contact-us .contact-form .section-message h2{margin-bottom:28px;}#modal-global-contact-us .contact-form .section-message .form-group_modal{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:39px;}#modal-global-contact-us .contact-form .section-message .form-group_modal input{border:none;border-bottom:1px solid #c0c0c0;display:block;width:100%;background:transparent;color:#ffffff;height:22px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group_modal input{height:25px;}}#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message .form-group-textarea{margin-bottom:23px;}}#modal-global-contact-us .contact-form .section-message label{display:block;width:100%;line-height:1.63;letter-spacing:1px;color:#c0c0c0;font-weight:bold;text-transform:uppercase;}#modal-global-contact-us .contact-form .section-message textarea{resize:none;height:105px;width:100%;background:transparent;border:solid 1px #ffffff;margin:23px 0 0 0;color:#ffffff;padding:10px;font-size:16px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .section-message textarea{margin:10px 0 0 0;height:89px;}}#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 16px 0;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone h4{margin:0 0 13px 0;}}#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:30px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user{margin-bottom:58px;}}#modal-global-contact-us .contact-form .info-zone_contact{margin-bottom:23px;}#modal-global-contact-us .contact-form .info-zone_contact:nth-last-child(2){margin-bottom:30px;}#modal-global-contact-us .contact-form .info-zone_contact_cell{position:relative;padding-left:45px;margin-bottom:22px;font-weight:bold;font-size:14px;max-width:90%;letter-spacing:1.5px;text-transform:uppercase;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell{padding-left:0;}}#modal-global-contact-us .contact-form .info-zone_contact_cell:last-of-type{margin-bottom:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:absolute;left:0;top:0;display:block;}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone_contact_cell i{position:relative;margin-bottom:7px;}}#modal-global-contact-us .contact-form .info-zone_contact_cell i svg path{fill:var(--colorTxt);}#modal-global-contact-us .contact-form .info-zone_contact_cell div{padding:0;}#modal-global-contact-us .contact-form .info-zone_contact_cell .contact_title{line-height:1;margin-bottom:5px;}#modal-global-contact-us .contact-form .info-zone_contact_link{color:var(--colorTxt);}@media (max-width: 560px){#modal-global-contact-us .contact-form .info-zone .type_user:nth-of-type(2){margin-bottom:58px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form .hours_box{margin-bottom:52px;}}#modal-global-contact-us .contact-form .socials_zone{padding-left:45px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone{padding-left:0;}}#modal-global-contact-us .contact-form .socials_zone li{margin-bottom:10px;}#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:34px;}@media (max-width: 560px){#modal-global-contact-us .contact-form .socials_zone li:not(:last-child){padding-right:12px;}}#modal-global-contact-us .contact-form .success-message.success{margin-top:15px;color:var(--colorTxt);position:absolute;}#modal-global-contact-us .contact-form .success-message.hide{opacity:0;}#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:73px;}@media (max-width: 768px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:51px;}}@media (max-width: 560px){#modal-global-contact-us .contact-form.one_contact .info-zone .type_user{margin-bottom:40px;}}#modal-global-contact-us .contact-form.one_contact .hours_box{margin-bottom:38px;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell{padding-left:0;}#modal-global-contact-us .contact-form.no_icon .info-zone_contact_cell i{display:none;}#modal-global-contact-us .contact-form.no_icon .socials_zone{padding-left:0;}#modal-global-contact-us .contact-form .pre-line{white-space:pre-line;}#modal-global-contact-us .lp-input-group{margin-bottom:40px;}#modal-global-contact-us .lp-input-group.m16{margin-bottom:16px;}#modal-global-contact-us .lp-disclaimer{margin-top:0;}#modal-global-contact-us .lp-input{border-color:#ffffff;}#modal-global-contact-us .lp-input:focus,#modal-global-contact-us .lp-input:active{border-color:#5e5e5e;}nav{-webkit-transition:0.2s all;transition:0.2s all;color:#fff;z-index:102;}nav nav{-webkit-transition:0.2s all;transition:0.2s all;color:#fff;}nav nav.scroll .header__logo .dark{display:block;}nav nav.scroll .header__logo .light{display:none;}nav.scroll .header__logo .dark{display:block;}nav.scroll .header__logo .light{display:none;}@-webkit-keyframes producerCustomFadeInUp{to{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}@keyframes producerCustomFadeInUp{to{opacity:1;-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}}nav .header{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;padding:10px 30px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}nav .header__left{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;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;}nav .header__logo{display:block;cursor:pointer;}nav .header__logo img{display:block;max-height:52px;max-width:250px;}nav .header__logo .dark{display:none;}nav .header__logo--center{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}nav .header__right{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-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}nav .sub-nav{position:absolute;left:50%;bottom:0;-webkit-transform:translate(-50%, calc(100% + 50px));-moz-transform:translate(-50%, calc(100% + 50px));-ms-transform:translate(-50%, calc(100% + 50px));transform:translate(-50%, calc(100% + 50px));z-index:1;background-color:#fff;box-shadow:0 0 3px rgba(0,0,0,0.3);-webkit-transition:0.3s all;transition:0.3s all;opacity:0;visibility:hidden;min-width:178px;max-width:250px;}nav .sub-nav:after{display:block;position:absolute;content:'';left:0;right:0;top:-50px;height:50px;}nav .sub-nav ul{margin:0;padding:0;display:block;}nav .sub-nav ul li{position:relative;display:block;margin:0;text-align:left;}nav .sub-nav ul li a:hover{color:#000;background-color:#eee;}nav .sub-nav ul li:last-child{border-bottom:none;}nav .sub-nav ul li:last-child:after{content:'';}nav .sub-nav ul li a{display:inline-block;color:#000;margin:0;font-size:16px;letter-spacing:1px;padding:6px 16px;position:relative;width:100%;line-height:1.63;}nav .sub-nav ul li a:after{position:absolute;content:'';display:block;width:0;height:1px;bottom:0;left:0;-webkit-transition:0.3s all;transition:0.3s all;background-color:#000;}nav .sub-nav.visible{visibility:visible;opacity:1;-webkit-transform:translate(-50%, 100%);-moz-transform:translate(-50%, 100%);-ms-transform:translate(-50%, 100%);transform:translate(-50%, 100%);}nav .header__left .navigation__item:nth-child(-n + 2) .sub-nav{left:10px;-webkit-transform:translateY(calc(100% + 50px));-moz-transform:translateY(calc(100% + 50px));-ms-transform:translateY(calc(100% + 50px));transform:translateY(calc(100% + 50px));}nav .header__left .navigation__item:nth-child(-n + 2) .sub-nav.visible{-webkit-transform:translateY(100%);-moz-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);}nav .header__right .navigation__item:nth-last-child(-n + 1) .sub-nav{left:auto;right:0;-webkit-transform:translateY(calc(100% + 50px));-moz-transform:translateY(calc(100% + 50px));-ms-transform:translateY(calc(100% + 50px));transform:translateY(calc(100% + 50px));}nav .header__right .navigation__item:nth-last-child(-n + 1) .sub-nav.visible{-webkit-transform:translateY(100%);-moz-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);}nav .navigation{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin:0;list-style-type:none;}@media(max-width: 1200px){nav .navigation{display:none;}}nav .navigation__item{padding:0;margin:0;}nav .navigation__item.sub-nav-container{position:relative;}nav .navigation__item.sub-nav-container .navigation__link{padding-right:36px;}nav .navigation__item.sub-nav-container .navigation__link:before{display:block;width:9px;height:9px;border-bottom:2px solid;border-right:2px solid;content:'';position:absolute;line-height:1;top:calc(50% - 8px);right:18px;font-size:18px;-webkit-transition:0.2s -webkit-transform;transition:0.2s transform;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);}nav .navigation__item.sub-nav-container .navigation__link.visible-dropdown:before{-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-ms-transform:rotate(-135deg);transform:rotate(-135deg);top:calc(50% - 3px);}nav .navigation__link{display:block;color:inherit;position:relative;font-size:13px;font-weight:700;line-height:1;letter-spacing:1.5px;background-color:transparent;border:none;cursor:pointer;text-transform:uppercase;padding:19px 13px;z-index:2;white-space:nowrap;opacity:0;-webkit-transform:translateY(100%);-moz-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%);-webkit-animation-name:producerCustomFadeInUp;animation-name:producerCustomFadeInUp;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both;}
34nav .navigation__link span{display:inline-block;position:relative;}nav .navigation__link span:after{content:'';display:block;width:0;height:1px;margin-top:3px;background-color:currentColor;-webkit-transition:0.3s all ease;transition:0.3s all ease;}nav .navigation__link:hover:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);}nav .navigation__link:hover span:after{width:100%;max-width:100%;}nav .hamburger{border:none;background-color:transparent;cursor:pointer;outline:none;z-index:915;position:relative;padding:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;text-transform:capitalize;letter-spacing:1px;color:inherit;width:37px;height:58px;}nav .hamburger span{display:block;width:26px;height:2px;background-color:currentColor;-webkit-transition:0.3s -webkit-transform;transition:0.3s transform;position:relative;}nav .hamburger span:before,nav .hamburger span:after{display:block;width:26px;height:2px;background-color:currentColor;position:absolute;left:0;content:'';}nav .hamburger span:before{top:-9px;}nav .hamburger span:after{bottom:-9px;}nav .hamburger.active span{-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg);}nav .hamburger.active span:before,nav .hamburger.active span:after{top:0;bottom:auto;}nav .hamburger.active span:before{display:none;}nav .hamburger.active span:after{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);}nav .search{cursor:pointer;}nav .search svg{display:block;}body>div.sidemenu{background-color:transparent;}body>div.sidemenu .wrapper{opacity:1;-webkit-transition:-webkit-transform 0s linear,opacity 0.2s ease-out;transition:transform 0s linear,opacity 0.2s ease-out;background-color:var(--bgColor, rgba(0, 0, 0, 0.9));color:var(--fontColor, #fff);position:fixed;top:0;right:0;height:100%;width:100vw;}body>div.sidemenu .holder{font-size:20px;top:150px;left:auto;right:0;position:absolute;max-width:1200px;width:100%;height:100%;}body>div.sidemenu .title{font-size:12px;text-align:right;width:100%;padding-right:150px;margin-bottom:30px;text-transform:uppercase;letter-spacing:1px;font-weight:bold;}@media (max-width: 992px){body>div.sidemenu .title{padding-right:20px;}}body>div.sidemenu .section-options{margin:0 auto;overflow-y:scroll;height:calc(100% - 200px);list-style:none;}body>div.sidemenu .section-options::-webkit-scrollbar{width:7px;}body>div.sidemenu .section-options::-webkit-scrollbar-thumb{border-radius:10px;background-color:#4d5259;}body>div.sidemenu .section-options .option{text-align:right;border-bottom:2px none;}body>div.sidemenu .section-options a,body>div.sidemenu .section-options button{font-family:var(--global-primary-font-family);line-height:70px;color:var(--fontColor, #fff);font-size:35px;-webkit-text-decoration:none;text-decoration:none;display:inline-block;padding-right:150px;border:none;background-color:transparent;cursor:pointer;border-bottom:2px solid transparent;text-transform:none;-webkit-transition:.3s linear all;transition:.3s linear all;}body>div.sidemenu .section-options a:hover:not(.sub-nav-link),body>div.sidemenu .section-options button:hover:not(.sub-nav-link){color:var(--fontColor, #7a7a7a);}@media (max-width: 992px){body>div.sidemenu .section-options a,body>div.sidemenu .section-options button{padding-right:20px;}}body>div.sidemenu .sidemenu-close{width:24px;height:24px;display:block;padding:0;border:none;background-color:transparent;cursor:pointer;-webkit-transition:all .3s ease;transition:all .3s ease;}body>div.sidemenu .sidemenu-close:hover{-webkit-transform:scale(1.3);-moz-transform:scale(1.3);-ms-transform:scale(1.3);transform:scale(1.3);}body>div.sidemenu .sidemenu-close:before,body>div.sidemenu .sidemenu-close:after{content:'';display:block;width:30px;height:2px;background-color:var(--fontColor, #fff);position:absolute;
34left:50%;top:50%;}body>div.sidemenu .sidemenu-close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}body>div.sidemenu .sidemenu-close:after{-webkit-transform:translate(-50%, -50%) rotate(-45deg);-moz-transform:translate(-50%, -50%) rotate(-45deg);-ms-transform:translate(-50%, -50%) rotate(-45deg);transform:translate(-50%, -50%) rotate(-45deg);}body>div.sidemenu button.toggle{border:none;background:none;position:absolute;right:76px;top:74px;}body>div.sidemenu button.toggle:focus,body>div.sidemenu button.toggle:active{outline:none;}body>div.sidemenu .sub-nav-container{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;}body>div.sidemenu .sub-nav-container:hover .main-nav:after{border-bottom:2px solid var(--fontColor, #7a7a7a);border-right:2px solid var(--fontColor, #7a7a7a);}body>div.sidemenu .sub-nav-container .main-nav{position:relative;display:inline-block;}body>div.sidemenu .sub-nav-container .main-nav:after{content:'';display:inline-block;position:relative;width:8px;height:8px;margin-left:25px;-webkit-transform:rotate(45deg) translateX(-150%);-moz-transform:rotate(45deg) translateX(-150%);-ms-transform:rotate(45deg) translateX(-150%);transform:rotate(45deg) translateX(-150%);border-bottom:2px solid var(--fontColor, #fff);border-right:2px solid var(--fontColor, #fff);top:0%;bottom:auto;left:auto;-webkit-transition:0.5s all ease;transition:0.5s all ease;background-color:transparent;}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;padding-top:10px;}body>div.sidemenu .sub-nav.visible{opacity:1;visibility:visible;max-height:400px;}body>div.sidemenu .sub-nav.visible+.main-nav{color:#7a7a7a;}body>div.sidemenu .sub-nav.visible+.main-nav:after{margin-left:40px;border-bottom:2px solid var(--fontColor, #7a7a7a);border-right:2px solid var(--fontColor, #7a7a7a);}body>div.sidemenu .sub-nav a,body>div.sidemenu .sub-nav button{font-size:25px;line-height:45px;}body>div.sidemenu .sub-nav a:hover,body>div.sidemenu .sub-nav button:hover{color:var(--fontColor, #fff);}footer{background-color:#fff;color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;--greyColor:hsla(
35var(--fontColor_H),
36var(--fontColor_S),
37calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445),
38var(--fontColor_A));}footer .redesign .inp--dark-bg input{color:var(--fontColor);border-color:hsla(
39      var(--fontColor_H),
40      var(--fontColor_S),
41      calc(var(--fontColor_L) + (50% - var(--fontColor_L)) * 0.445),
42      var(--fontColor_A));}footer .redesign .inp--dark-bg input:hover{border-color:var(--fontColor);}footer .redesign .inp+.inp{margin-top:24px;}footer .redesign .btn--primary-light{border-color:var(--fontColor);color:var(--fontColor);}footer .redesign .btn--primary-light:hover{background-color:var(--fontColor);color:var(--bgColor);}footer.is-background-color-light .redesign .btn--primary-light{border-width:1px;}footer .redesign .socials--grey{-webkit-box-pack:end;-ms-flex-pack:end;-webkit-justify-content:flex-end;justify-content:flex-end;}footer .redesign .socials--grey .socials__link{background-color:hsla(
43      var(--bgColor_H),
44      var(--bgColor_S),
45      calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.15),
46      var(--bgColor_A));color:var(--greyColor);}footer .redesign .socials--grey .socials__link svg{fill:var(--greyColor);}footer .redesign .socials--grey .socials__link:hover{background-color:hsla(
47        var(--bgColor_H),
48        var(--bgColor_S),
49        calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.4),
50        var(--bgColor_A));color:var(--fontColor);}footer .redesign .socials--grey .socials__link:hover svg{fill:var
50(--fontColor);}footer .redesign.footer .grey-text{color:var(--fontColor);}footer .footer{position:relative;padding-top:60px;padding-bottom:30px;}@media (max-width: 560px){footer .footer{padding-top:10px;}}@media (max-width: 500px){footer .footer{padding-bottom:70px;}}footer .footer .text_content_wrap p{margin-bottom:15px;}footer .footer .text_content_wrap p:last-of-type{margin-bottom:0;}footer .footer .container{max-width:1440px;}@media (max-width: 768px){footer .footer .container{padding-left:25px;padding-right:25px;}}@media (max-width: 560px){footer .footer .container{padding-left:20px;padding-right:20px;}}footer .footer h3{margin:0 0 15px 0;}footer .footer h5{text-transform:capitalize;}footer .footer .info-wrap{margin-bottom:40px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}footer .footer .info-wrap .agent_box{width:70%;}@media (max-width: 1280px){footer .footer .info-wrap .agent_box{width:50%;}}@media (max-width: 768px){footer .footer .info-wrap .agent_box{width:100%;}}footer .footer .info-wrap .newsletter_box{width:30%;}@media (max-width: 1280px){footer .footer .info-wrap .newsletter_box{width:50%;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box{width:100%;}}footer .footer .info-wrap .newsletter_box--padding{padding-top:44px;}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box--padding{padding-top:0;}}footer .footer .info-wrap .newsletter_box .contact_title{margin-bottom:13px;line-height:1.6;}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .info-wrap-contact_cell{margin-bottom:0;padding-left:0;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .icon_text{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:22px;position:relative;}footer .footer .info-wrap .newsletter_box .icon_text i{position:relative;width:30px;margin-right:20px;}footer .footer .info-wrap .newsletter_box .icon_text .contact_title{margin-bottom:0;}}@media (max-width: 768px){footer .footer .info-wrap .newsletter_box .info-wrap-contact_zone{margin-bottom:0;}}footer .footer .info-wrap-contact{position:relative;}footer .footer .info-wrap-contact_zone{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-bottom:39px;}@media (max-width: 768px){footer .footer .info-wrap-contact_zone{margin-bottom:21px;}footer .footer .info-wrap-contact_zone:last-child{margin-bottom:51px;}}footer .footer .info-wrap-contact_zone i{position:absolute;left:0;display:block;}footer .footer .info-wrap-contact_zone i svg path{fill:currentColor;}footer .footer .info-wrap-contact_zone h4{margin:0 0 13px 0;width:100%;}footer .footer .info-wrap-contact_cell{position:relative;padding-left:50px;width:400px;font-size:14px;text-transform:uppercase;font-weight:bold;letter-spacing:1.5px;}@media (max-width: 1280px){footer .footer .info-wrap-contact_cell:first-of-type{margin-bottom:21px;}}footer .footer .info-wrap-contact_cell .contact_title{line-height:1;margin-bottom:5px;}footer .footer .info-wrap-contact_link{color:var(--greyColor);position:relative;}@media (max-width: 560px){footer .footer .info-wrap-contact_link{letter-spacing:0;}}footer .footer .hvr_animation{position:relative;-webkit-text-decoration:none!important;text-decoration:none!important;}footer .footer .hvr_animation:after{content:'';position:absolute;left:0;bottom:0;width:0%;height:1px;background:var(--greyColor);-webkit-transition:.3s linear;transition:.3s linear;}footer .footer .hvr_animation:hover:after{width:100%;}footer .footer .hvr_animation.underlined:after{width:100%;}footer .footer .hvr_animation.underlined:hover:after{width:0%;}footer .footer .form-content{padding:0!important;}footer .footer .form-content label{color:var(--fontColor);text-transform:none;letter-spacing:1;}footer .footer .form-content input{padding:2px 24px 2px 0;}footer .footer .form-content .subscribe_btn{margin-top:20px;position:relative;}footer .footer .form-content .subscribe_btn i{font-size:18px;position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);opacity:0;}footer .footer .form-content.success i{opacity:1;}footer .footer .form-content.success .subscribe_btn span{opacity:0;}footer .footer .form-content.success .hide{opacity:0;}footer .footer .form-content.success .hide +span{opacity:1;}footer .footer .text_footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;margin-bottom:39px;}@media (max-width: 1280px){footer .footer .text_footer{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}
50@media (max-width: 560px){footer .footer .text_footer{text-align:center;}}footer .footer .text_footer p{white-space:normal;}footer .footer .text_footer .images_box{max-width:186px;width:100%;margin-right:43px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}@media (max-width: 560px){footer .footer .text_footer .images_box{margin:0 auto 20px auto;}}@media (max-width: 1280px){footer .footer .text_footer .img_size{margin-bottom:20px;}}@media (max-width: 560px){footer .footer .text_footer .img_size{margin-bottom:0;}}footer .footer .text_footer .img_size img{width:100%;height:100%;object-fit:contain;}footer .footer .first_text_footer .img_size{width:100%;height:63px;}footer .footer .first_text_footer .img_size img{width:100%;height:100%;object-fit:contain;}@media (max-width: 768px){footer .footer .first_text_footer{margin-bottom:51px;}}footer .footer .second_text_footer .first_img_size{width:45px;height:45px;margin-right:15px;}footer .footer .second_text_footer .second_img_size{width:100px;height:45px;}@media (max-width: 560px){footer .footer .second_text_footer{margin-bottom:21px;}}footer .footer .info-privacy{padding-top:45px;padding-bottom:30px;border-top:1px solid hsla(
51        var(--bgColor_H),
52        var(--bgColor_S),
53        calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55),
54        var(--bgColor_A));}@media (max-width: 768px){footer .footer .info-privacy{padding-top:0;border-top:none;}}footer .footer .info-privacy__row{-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}footer .footer .info-privacy .copy_zone{font-size:18px;}@media (min-width: 1350px){footer .footer .info-privacy .copy_zone{text-align:center;}}@media (min-width: 1281px){footer .footer .info-privacy .copy_zone{padding-top:8px;padding-bottom:8px;}}@media (max-width: 768px){footer .footer .info-privacy .copy_zone{text-align:center;margin-bottom:10px;padding-top:45px;border-top:1px solid hsla(
55            var(--bgColor_H),
56            var(--bgColor_S),
57            calc(var(--bgColor_L) + (50% - var(--bgColor_L)) * 0.55),
58            var(--bgColor_A));}}footer .footer .info-privacy .copy_zone a{color:var(--greyColor);}footer .footer .info-privacy .powered_zone{font-size:18px;}@media (min-width: 1281px){footer .footer .info-privacy .powered_zone{padding-top:8px;padding-bottom:8px;}}@media (max-width: 1280px){footer .footer .info-privacy .powered_zone{text-align:center;}}@media (max-width: 768px){footer .footer .info-privacy .powered_zone{text-align:center;margin-bottom:24px;}}footer .footer .info-privacy .powered_zone a{color:var(--greyColor);}@media (min-width: 1281px){footer .footer .info-privacy .socials_zone{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}@media (max-width: 1280px){footer .footer .info-privacy .socials_zone{width:100%;margin-top:20px;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;}}@media (max-width: 768px){footer .footer .info-privacy .socials_zone{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-top:0;margin-bottom:20px;}footer .footer .info-privacy .socials_zone li{padding:0 7px 10px 7px;}}footer .footer.one_contact .type_user{margin-bottom:73px;}@media (max-width: 768px){footer .footer.one_contact .type_user{margin-bottom:51px;}}footer .footer.no_newsletter h3{margin-bottom:46px;}footer .footer.no_newsletter .newsletter_box{display:none;}footer .footer.no_newsletter .info-wrap-contact{width:calc(70% + 230px);width:100%;padding-left:230px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact{padding-left:0;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact{width:100%;}}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact_cell{width:50%;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_cell{width:100%;}}footer .footer.no_newsletter .info-wrap-contact h4{position:absolute;margin-top:-8px;left:0;
58max-width:200px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact h4{position:relative;left:auto;max-width:100%;width:100%;margin-bottom:20px;margin-top:0;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact h4{position:relative;left:auto;max-width:100%;}}footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:71px;}@media (max-width: 1200px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:39px;}}@media (max-width: 768px){footer .footer.no_newsletter .info-wrap-contact_zone:first-of-type{margin-bottom:51px;}}footer .footer.no_newsletter .info-wrap-contact_zone:last-child{margin-bottom:0;}footer .footer.no_icon .info-wrap-contact_cell{padding-left:0;}footer .footer.no_icon .info-wrap-contact_cell i{display:none;}footer .footer.no-names .info-wrap-contact{padding-left:0;}footer .form-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;margin-left:-15px;margin-right:-15px;}@media (min-width: 1281px){footer .form-row{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}@media (max-width: 900px){footer .form-row{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .form-col{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding-left:15px;padding-right:15px;}@media (min-width: 768px){footer .form-col{-webkit-flex:1 1 0;-ms-flex:1 1 0;flex:1 1 0;}}@media (min-width: 768px){footer .form-col--socials{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}}@media (min-width: 1281px){footer .form-col--socials{-webkit-flex-basis:0;-ms-flex-preferred-size:0;flex-basis:0;}}@media (max-width: 768px){footer .form-col--socials{-webkit-order:-1;-ms-flex-order:-1;order:-1;}}@media (min-width: 1281px){footer .form-col--xl-auto{-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;}}footer .additional-links-separator{display:block;width:100%;height:0;overflow:hidden;}@media (min-width: 768px){footer .additional-links-separator{display:inline;width:auto;height:auto;}footer .additional-links-separator:before{content:"|";}}footer .h-pot{height:0;width:0;overflow:hidden;visibility:hidden;}footer .img-wrap{max-width:100px;width:100%;display:block;margin-right:20px;}@media (max-width: 900px){footer .img-wrap{margin-right:0;margin-bottom:10px;}}footer .img-wrap img{width:100%;object-fit:cover;}footer .powered-box{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;}@media (max-width: 900px){footer .powered-box{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .form-col--copyright{-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;margin:10px 0;}footer .luxury-link{white-space:nowrap;}footer .footer__disclaimers{padding-top:24px;padding-bottom:24px;}@media (max-width: 900px){footer .footer__disclaimers{text-align:center;}}body>div.mobile-contact-wrapper{z-index:200;position:relative;}body>div.mobile-contact-wrapper .lp-ico:before{content:'';width:1em;height:1em;background-color:currentColor;-webkit-background-size:cover;background-size:cover;display:block;-webkit-mask-position:center;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-transition:all .3s;transition:all .3s;}body>div.mobile-contact-wrapper .lp-ico-search:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewB
58ox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='25' height='25' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.6231 21.3002L17.1372 16.8143M19.5606 10.9877C19.5606 15.5441 15.8669 19.2377 11.3106 19.2377C6.75421 19.2377 3.06055 15.5441 3.06055 10.9877C3.06055 6.43135 6.75421 2.73769 11.3106 2.73769C15.8669 2.73769 19.5606 6.43135 19.5606 10.9877Z' stroke='black' stroke-width='1.82813' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-arrow-top:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='17' height='16' viewBox='0 0 17 16' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.8716 9.99976L8.87158 5.99976L4.87158 9.99976' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-scroll-top:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 3H3M12 21V7M12 7L5 14M12 7L19 14' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");}body>div.mobile-contact-wrapper .lp-ico-close:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M17.5986 6.32617L5.59863 18.3262M5.59863 6.32617L17.5986 18.3262' stroke='white' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");}body>div.mobile-contact-wrapper .lp-ico-phone:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8
58699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M13.8699 6.57142C14.7459 6.74157 15.551 7.16808 16.1821 7.79637C16.8132 8.42465 17.2416 9.22612 17.4126 10.0982M13.8699 3C15.6899 3.20128 17.3871 4.01265 18.6827 5.3009C19.9784 6.58914 20.7955 8.27768 21 10.0893M10.4412 13.592C9.36357 12.5192 8.51264 11.3061 7.88843 10.0118C7.83474 9.90047 7.80789 9.84481 7.78726 9.77437C7.71397 9.52405 7.76662 9.21668 7.91909 9.00469C7.962 8.94504 8.01326 8.894 8.11578 8.79194C8.42933 8.47979 8.58611 8.32372 8.6886 8.16677C9.07515 7.57491 9.07515 6.81189 8.6886 6.22002C8.58611 6.06308 8.42933 5.90701 8.11578 5.59486L7.94101 5.42087C7.46438 4.94637 7.22607 4.70912 6.97012 4.58024C6.4611 4.32392 5.85996 4.32392 5.35093 4.58024C5.09499 4.70912 4.85667 4.94637 4.38004 5.42087L4.23867 5.56161C3.76367 6.03449 3.52617 6.27093 3.34478 6.59239C3.1435 6.94909 2.99878 7.5031 3.00001 7.91222C3.00111 8.28092 3.07295 8.53291 3.21664 9.03688C3.98881 11.7453 5.44574 14.3009 7.58743 16.4331C9.72911 18.5652 12.2963 20.0156 15.0168 20.7843C15.523 20.9274 15.7761 20.9989 16.1465 21C16.5575 21.0012 17.114 20.8571 17.4723 20.6568C17.7952 20.4762 18.0327 20.2397 18.5077 19.7669L18.649 19.6261C19.1257 19.1516 19.364 18.9144 19.4934 18.6596C19.7509 18.1528 19.7509 17.5544 19.4934 17.0476C19.364 16.7928 19.1257 16.5556 18.649 16.0811L18.4743 15.9071C18.1607 15.5949 18.0039 15.4388 17.8463 15.3368C17.2518 14.952 16.4853 14.952 15.8908 15.3368C15.7332 15.4388 15.5764 15.5949 15.2628 15.9071C15.1603 16.0091 15.1091 16.0602 15.0491 16.1029C14.8362 16.2547 14.5274 16.3071 14.276 16.2341C14.2052 16.2136 14.1493 16.1869 14.0375 16.1334C12.7374 15.512 11.5189 14.6648 10.4412 13.592Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-sms:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 11.5C21.0034 12.8199 20.6951 14.1219 20.1 15.3C19.3944 16.7117 18.3098 17.8992 16.9674 18.7293C15.6251 19.5594 14.0782 19.9994 12.5 20C11.1801 20.0034 9.87812 19.6951 8.7 19.1L3 21L4.9 15.3C4.30493 14.1219 3.99656 12.8199 4 11.5C4.00061 9.92176 4.44061 8.37485 5.27072 7.03255C6.10083 5.69025 7.28825 4.60557 8.7 3.9C9.87812 3.30493 11.1801 2.99656 12.5 3H13C15.0843 3.11499 17.053 3.99476 18.5291 5.47086C20.0052 6.94695 20.885 8.91565 21 11V11.5Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper .lp-ico-email:before{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.85
5871 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21.5 18L14.8571 12M9.14286 12L2.50003 18M2 7L10.1649 12.7154C10.8261 13.1783 11.1567 13.4097 11.5163 13.4993C11.8339 13.5785 12.1661 13.5785 12.4837 13.4993C12.8433 13.4097 13.1739 13.1783 13.8351 12.7154L22 7M6.8 20H17.2C18.8802 20 19.7202 20 20.362 19.673C20.9265 19.3854 21.3854 18.9265 21.673 18.362C22 17.7202 22 16.8802 22 15.2V8.8C22 7.11984 22 6.27976 21.673 5.63803C21.3854 5.07354 20.9265 4.6146 20.362 4.32698C19.7202 4 18.8802 4 17.2 4H6.8C5.11984 4 4.27976 4 3.63803 4.32698C3.07354 4.6146 2.6146 5.07354 2.32698 5.63803C2 6.27976 2 7.11984 2 8.8V15.2C2 16.8802 2 17.7202 2.32698 18.362C2.6146 18.9265 3.07354 19.3854 3.63803 19.673C4.27976 20 5.11984 20 6.8 20Z' stroke='white' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");}body>div.mobile-contact-wrapper a{-webkit-text-decoration:none;text-decoration:none;}body>div.mobile-contact-wrapper .btn-holder{bottom:-50px;left:19px;position:fixed;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:13px;opacity:0;-webkit-transition:all .3s;transition:all .3s;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .btn-holder{right:19px;padding:0 48px;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}body>div.mobile-contact-wrapper .btn-holder.visible{bottom:28px;opacity:1;}body>div.mobile-contact-wrapper .search-btn{width:48px;height:48px;border-radius:999px;font-size:0;line-height:0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-transition:all .3s;transition:all .3s;padding:12px;color:#141414;background:#fff;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .search-btn{position:absolute;left:0;bottom:0;}}body>div.mobile-contact-wrapper .search-btn:before{width:24px;height:24px;}body>div.mobile-contact-wrapper .connect-btn{height:48px;padding:0 24px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;text-transform:uppercase;border-radius:25px;color:var(--pillTextColor);background:var(--pillBackgroundColor);border:1px solid rgba(255, 255, 255, 0.2);cursor:pointer;font-size:10px;font-style:normal;font-weight:500;line-height:16px;letter-spacing:0.4px;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-transition:all .4s;transition:all .4s;box-shadow:0 0 0 0 rgba(255, 255, 255, 0.2);-webkit-animation:pulsate 2s ease infinite;animation:pulsate 2s ease infinite;}body>div.mobile-contact-wrapper .connect-btn:before{width:16px;height:16px;}body>div.mobile-contact-wrapper .pop-up{display:none;position:fixed;bottom:0;left:0;width:100%;-webkit-transition:all .3s;transition:all .3s;border-radius:16px 16px 0 0;color:var(--textColor);background:var(--backgroundColor);}@media (max-height: 850px){body>div.mobile-contact-wrapper .pop-up{max-height:85vh;overflow-y:auto;}}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up{max-height:none;overflow-y:initial;max-width:637px;border-radius:16px;bottom:28px;left:19px;}}body>div.mobile-contact-wrapper .pop-up .lp-container{padding-top:24px;padding-bottom:24px;-webkit-box-pack:center;-ms-flex-pack:center;
58-webkit-justify-content:center;justify-content:center;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up .lp-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-top:40px;padding-bottom:40px;min-height:450px;padding-left:56px;padding-right:56px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}body>div.mobile-contact-wrapper .pop-up .close-btn{width:44px;height:44px;background-color:transparent;border-color:transparent;display:block;margin:24px auto 0;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:var(--textColor);cursor:pointer;padding:10px;border:0;}body>div.mobile-contact-wrapper .pop-up .close-btn:before{width:24px;height:24px;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .pop-up .close-btn{position:absolute;top:14px;right:12px;margin:0;}}body>div.mobile-contact-wrapper .pop-up .icon-btn{width:44px;height:44px;border-radius:999px;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-left:8px;color:var(--textColor);position:relative;}body>div.mobile-contact-wrapper .pop-up .icon-btn:after{position:absolute;bottom:0;width:100%;left:0;border-radius:999px;
58height:100%;content:'';border:solid 1px var(--textColor);opacity:.3;}body>div.mobile-contact-wrapper .pop-up .icon-btn:before{width:24px;height:24px;}body>div.mobile-contact-wrapper .success-block{display:none;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media (min-width: 1025px){body>div.mobile-contact-wrapper .success-block{-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;}}body>div.mobile-contact-wrapper .success-block .lp-btn{margin-top:24px;}body>div.mobile-contact-wrapper .contact-form{margin:0;}@media (max-width: 1024px){body>div.mobile-contact-wrapper .contact-form__item{width:100%;}}body>div.mobile-contact-wrapper .contact-form__item .lp-input{width:100%;}body>div.mobile-contact-wrapper .contact-form__item .is-placeholder{color:#818181;}body>div.mobile-contact-wrapper .contact-form__item+.contact-form__item{margin-top:16px;}body>div.mobile-contact-wrapper .contact-form.show-success .contact-form__container,body>div.mobile-contact-wrapper .contact-form.success .contact-form__container{display:none;}body>div.mobile-contact-wrapper .contact-form.show-success .success-block,body>div.mobile-contact-wrapper .contact-form.success .success-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}body>div.mobile-contact-wrapper .contact-form .lp-disclaimer{margin-top:16px;}body>div.mobile-contact-wrapper .contact-form .lp-h3{margin-bottom:16px;}body>div.mobile-contact-wrapper .success-message{font-size:22px;}@-webkit-keyframes pulsate{0%{box-shadow:0 0 0 0 rgba(255, 255, 255, 0.2);}50%{box-shadow:0 0 4px 6px rgba(255, 255, 255, .5);}100%{box-shadow:0 0 12px 12px rgba(255, 255, 255, 0);}}#modal-global-subscribe .subscribe-modal{width:90%;}#modal-global-subscribe .subscribe-modal .title{width:80%;max-width:400px;font-size:20px;font-weight:bold;line-height:1.5;letter-spacing:2.5px;text-transform:uppercase;text-align:center;padding:45px 0;margin:0 auto;color:#fff;}#modal-global-subscribe .subscribe-modal .form-input{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin:0 auto;}#modal-global-subscribe .subscribe-modal .form-input form{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;margin:0 auto;}#modal-global-subscribe .subscribe-modal .form-input form input{height:64px;padding:16px 28px;font-size:16px;}#modal-global-subscribe .subscribe-modal .form-input form input[type="email"]{border:1px solid #4a4a4a;color:#fff;marign-right:0;margin-bottom:18px;background-color:transparent;width:100%;}#modal-global-subscribe .subscribe-modal .form-input form input[type="submit"]{border:1px solid #fff;color:#1a1a1a;text-transform:uppercase;width:100%;font-size:16px;font-weight:bold;letter-spacing:2px;}@media (min-width: 992px){#modal-global-subscribe .subscribe-modal{width:50%;}#modal-global-subscribe .subscribe-modal .form-input form{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}#modal-global-subscribe .subscribe-modal .form-input form input[type="email"]{width:460px;margin-right:26px;}#modal-global-subscribe .subscribe-modal .form-input form input[type="submit"]{width:204px;}}
59        </style>
60    <style id="custom-style-css">.pagination-style-1 li a{color:rgba(0,0,0,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(0,0,0,1)!important;border-color:rgba(0, 0, 0, 1)!important;}.pagination-style-1 li.active a{color:rgba(255,255,255,1)!important;background-color:rgba(0,0,0,1)!important;border-color:rgba(0, 0, 0, 1)!important;}.hyperlink-style-1{color:#000000!important;}.hyperlink-style-1:hover{color:rgba(125, 125, 125, 1)!important;}.social_icons-style-1 a{border-color:rgba(0,0,0,1)!important;background-color:rgba(255, 255, 255, 0)!important;color:rgba(0,0,0,1)!important;}.social_icons-style-1 a:hover{border-color:rgba(0, 0, 0, 1)!important;background-color:rgba(0,0,0,1)!important;color:rgba(255,255,255,1)!important;}.social_icons-style-1 a i{color:inherit!important;}
60.social_icons-style-1 a svg,.social_icons-style-1 a svg path{fill:currentColor!important;}.button-style-1{color:rgba(255, 255, 255, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-1:hover{color:rgba(0, 0, 0, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255,255,255,1)!important;}.pagination-style-2 li a{color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 0)!important;border-color:rgba(255, 255, 255, 1)!important;}.pagination-style-2 li a:hover{color:rgba(0, 0, 0, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:#FFFFFF!important;}.pagination-style-2 li.active a{color:rgba(0, 0, 0, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:#FFFFFF!important;}.button-style-2{color:rgba(0,0,0,1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0,0,0,1)!important;}.button-style-2:hover{color:rgba(255,255,255,1)!important;background-color:rgba(0,0,0,1)!important;border-color:rgba(0, 0, 0, 1)!important;}.social_icons-style-2 a{border-color:rgba(255, 255, 255, 1)!important;background-color:rgba(255, 255, 255, 0)!important;color:rgba(255, 255, 255, 1)!important;}.social_icons-style-2 a:hover{border-color:rgba(255,255,255,1)!important;background-color:rgba(255, 255, 255, 1)!important;color:rgba(0, 0, 0, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}
60.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.button-style-3{color:rgba(0,0,0,1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(0,0,0,1)!important;}.button-style-3:hover{color:rgba(255,255,255,1)!important;background-color:rgba(0,0,0,1)!important;border-color:rgba(0, 0, 0, 1)!important;}.button-style-4{color:rgba(0, 0, 0, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:rgba(255, 255, 255, 1)!important;}.button-style-4:hover{color:rgba(90, 90, 90, 1)!important;background-color:rgba(255, 255, 255, 1)!important;border-color:#FFFFFF!important;}</style>
61        <!-- LP Consent bootstrap: blocking; resolves consent state, pushes Consent Mode
62             defaults, and dynamically loads the locale + main (and banner if needed). -->
63        
63<script src="https://cdn.luxurypresence.com/scripts/lp-consent/latest/lp-consent-boot.js" data-website-id="f8eeb622-1c43-422f-bf48-840bd660be00"></script>
63
64
65
66        
66<script>
67            (function utmParse() {
68                const url = new URL(window.location.href);
69                if (url.search) {
70                    const utm = url.search.split(/\?|&/g).reduce((acc, current) => {
71                        const matched = current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g);
72                        if (matched) {
73                        acc[matched[0]] = current.replace(`${matched[0]}=`, '');
74                        }
75                        return acc;
76                    }, {});
77                    if (Object.keys(utm).length) {
78                        window.localStorage.setItem('utm_vars', JSON.stringify(utm));
79                    } else {
80                        // Remove old utm vars
81                        window.localStorage.removeItem('utm_vars');
82                    }
83                }
84                // Set referrer in local storage
85                // This is meant to be stored once to avoid self-referrals and to have the first referrer only.
86                if (!window.localStorage.getItem('referrer')) {
87                    // Capture the Referrer URL
88                    const referrer = document.referrer;
89                    if (referrer) {
90                        // Only store the referrer if it comes from outside the current domain (to avoid self-referrals)
91                        const currentDomain = window.location.hostname;
92                        const referrerDomain = new URL(referrer).hostname;
93
94                        if (referrerDomain !== currentDomain) {
95                            // Store it in localStorage
96                            localStorage.setItem('referrer', referrer);
97                        }
98                    }
99                }
100            })();
101        </script>
101
102        
102<script type="text/javascript">
103    adroll_adv_id = "AG6YH4BJSFE7JLNROH6VAX";
104    adroll_pix_id = "C2S6Z47ZJRBCDL4NG35F2H";
105    adroll_version = "2.0";
106
107    (function(w, d, e, o, a) {
108        w.__adroll_loaded = true;
109        w.adroll = w.adroll || [];
110        w.adroll.f = [ 'setProperties', 'identify', 'track' ];
111        var roundtripUrl = "https://s.adroll.com/j/" + adroll_adv_id
112                + "/roundtrip.js";
113        for (a = 0; a < w.adroll.f.length; a++) {
114            w.adroll[w.adroll.f[a]] = w.adroll[w.adroll.f[a]] || (function(n) {
115                return function() {
116                    w.adroll.push([ n, arguments ])
117                }
118            })(w.adroll.f[a])
119        }
120
121        e = d.createElement('script');
122        o = d.getElementsByTagName('script')[0];
123        e.async = 1;
124        e.src = roundtripUrl;
125        o.parentNode.insertBefore(e, o);
126    })(window, document);
127    adroll.track("pageView");
128</script>
128
129
130    <!-- GOOGLE TRANSLATE STYLES are moved to external CSS -->
131</head>
132<body>
133    <div id="google_translate_element" style="display: none"></div>
134
135        <nav id="global-navbar" data-el-id="43fa2137-fe5b-4845-ba78-95c0fb5084ae">
136            <div class="header">
137  <div class="header__left">
138
139    <ul class="navigation">
140        <li class="navigation__item sub-nav-container">
141          <a href="#" class="navigation__link"><span>About Us</span></a>
142          <div class="sub-nav">
143            <ul>
144              <li><a  href="/the-founders" class="nav-link">The Founders</a></li>
145              <li><a  href="/agent" class="nav-link">The Team</a></li>
146              <li><a  href="/testimonials" class="nav-link">Testimonials</a></li>
147            </ul>
148          </div>
149        </li>
150        <li class="navigation__item sub-nav-container">
151          <a href="#" class="navigation__link"><span>Properties</span></a>
152          <div class="sub-nav">
153            <ul>
154              <li><a  href="/properties/sale" class="nav-link">Exclusive Offerings</a></li>
155              <li><a  href="/properties/sold" class="nav-link">Past Sales</a></li>
156            </ul>
157          </div>
158        </li>
159        <li class="navigation__item sub-nav-container">
160          <a href="#" class="navigation__link"><span>Communities</span></a>
161          <div class="sub-nav">
162            <ul>
163              <li><a  href="/neighborhoods-petaluma" class="nav-link">Petaluma</a></li>
164              <li><a  href="/neighborhoods-penngrove" class="nav-link">Penngrove</a></li>
165              <li><a  href="/neighborhoods-sebastopol" class="nav-link">Sebastopol</a></li>
166              <li><a  href="/neighborhoods-sonoma" class="nav-link">Sonoma Valley</a></li>
167              <li><a  href="/neighborhoods-west-marin" class="nav-link">West Marin</a></li>
168              <li><a  href="/neighborhoods-russian-river" class="nav-link">Russian River</a></li>
169              <li><a  href="/neighborhoods-coastal-sonoma" class="nav-link">Coastal Sonoma</a></li>
170              <li><a  href="/neighborhoods-healdsburg" class="nav-link">Healdsburg</a></li>
171              <li><a  href="/neighborhoods-santa-rosa" class="nav-link">Santa Rosa</a></li>
172              <li><a  href="/neighborhoods-cotati+rohnert-Park" class="nav-link">Cotati + Rohnert Park</a></li>
173            </ul>
174          </div>
175        </li>
176        <li class="navigation__item">
177          <a  href="/blog" class="navigation__link"><span>Blog</span></a>
178        </li>
179    </ul>
180
181
182  </div>
183  <a href="/" class="header__logo header__logo--center">
184    <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/dlmcjmdphzsz4isjrcos" alt="" class="dark">
185    <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/exubkz01tqrwp9asj63j" alt="" class="light">
186  </a>
187  <div class="header__right">
188    <ul class="navigation">
189      <li class="navigation__item">
190        <a  href="/film-gallery" class="navigation__link"><span>Film Gallery</span></a>
191      </li>
192      <li class="navigation__item">
193        <a  href="/home-valuation" class="navigation__link"><span>Home Valuation</span></a>
194      </li>
195      <li class="navigation__item">
196        <a  href="/home-search/listings" class="navigation__link"><span>Search Properties</span></a>
197      </li>
198      <li class="navigation__item">
199        <a data-type="CONTACT_US" class="navigation__link"><span>Contact Us</span></a>
200      </li>
201    </ul>
202    <button class="hamburger-component hamburger">
203      <span></span>
204    </button>
205  </div>
206</div>
207
208        </nav>
209        <div id="global-sidemenu" class="sidemenu" data-el-id="dd409a90-defd-4b7a-a4fb-816ab12adf2a">
210            <div class="wrapper">
211    <div class="holder">
212        <div class="title">Hedge Realty</div>
213        <ul class="section-options">
214                    <li class="option"><a  href="/">HOME</a></li>
215                  <li class="option sub-nav-container">
216                  <div class="sub-nav">
217                      <ul>
218                                  <li><a  href="/the-founders" class="link sub-nav-link">THE FOUNDERS</a></li>
219                                  <li><a  href="/agent" class="link sub-nav-link">THE TEAM</a></li>
220                                  <li><a  href="/testimonials" class="link sub-nav-link">TESTIMONIALS</a></li>
221                      </ul>
222                  </div>
223                  <a href="#" class="link main-nav">ABOUT US</a>
224                  </li>
225                  <li class="option sub-nav-container">
226                  <div class="sub-nav">
227                      <ul>
228                                  <li><a  href="/properties/sale" class="link sub-nav-link">EXCLUSIVE LISTINGS</a></li>
229                                  <li><a  href="/properties/sold" class="link sub-nav-link">PAST SALES</a></li>
230                      </ul>
231                  </div>
232                  <a href="#" class="link main-nav">PROPERTIES</a>
233                  </li>
234                  <li class="option sub-nav-container">
235                  <div class="sub-nav">
236                      <ul>
237                                  <li><a  href="/neighborhoods-petaluma" class="link sub-nav-link">PETALUMA</a></li>
238                                  <li>
238<a  href="/neighborhoods-penngrove" class="link sub-nav-link">PENNGROVE</a></li>
239                                  <li><a  href="/neighborhoods-sebastopol" class="link sub-nav-link">SEBASTOPOL</a></li>
240                                  <li><a  href="/neighborhoods-sonoma" class="link sub-nav-link">SONOMA VALLEY</a></li>
241                                  <li><a  href="/neighborhoods-west-marin" class="link sub-nav-link">WEST MARIN</a></li>
242                                  <li><a  href="/neighborhoods-russian-river" class="link sub-nav-link">RUSSIAN RIVER</a></li>
243                                  <li><a  href="/neighborhoods-coastal-sonoma" class="link sub-nav-link">COASTAL SONOMA</a></li>
244                                  <li><a  href="/neighborhoods-healdsburg" class="link sub-nav-link">HEALDSBURG</a></li>
245                                  <li><a  href="/neighborhoods-santa-rosa" class="link sub-nav-link">SANTA ROSA</a></li>
246                      </ul>
247                  </div>
248                  <a href="#" class="link main-nav">COMMUNITIES</a>
249                  </li>
250                    <li class="option"><a  href="/home-valuation">HOME VALUATION</a></li>
251                    <li class="option"><a  href="/home-search/listings?search_type&#x3D;envelope&amp;south&#x3D;38.06922258137191&amp;west&#x3D;-122.83728260234376&amp;north&#x3D;38.392846631802136&amp;east&#x3D;-122.42529529765626&amp;property_type%5B%5D&#x3D;Co-op&amp;property_type%5B%5D&#x3D;Condo&amp;property_type%5B%5D&#x3D;Land&amp;property_type%5B%5D&#x3D;Multi-family&amp;property_type%5B%5D&#x3D;Manufactured&amp;property_type%5B%5D&#x3D;Residential&amp;property_type%5B%5D&#x3D;Townhouse&amp;property_type%5B%5D&#x3D;Other&amp;property_type%5B%5D&#x3D;Co-op&amp;property_type%5B%5D&#x3D;Condo&amp;property_type%5B%5D&#x3D;Land&amp;property_type%5B%5D&#x3D;Multi-family&amp;property_type%5B%5D&#x3D;Manufactured&amp;property_type%5B%5D&#x3D;Residential&amp;property_type%5B%5D&#x3D;Townhouse&amp;property_type%5B%5D&#x3D;Other&amp;status%5B%5D&#x3D;Active&amp;status_days%5BActive%5D&#x3D;36500&amp;status%5B%5D&#x3D;Under+Contract&amp;status_days%5BUnder+Contract%5D&#x3D;36500&amp;status%5B%5D&#x3D;Pending&amp;status_days%5BPending%5D&#x3D;36500&amp;status_days%5BSold%5D&#x3D;180&amp;mailer_schedule&#x3D;instant&amp;order&#x3D;price%3Adesc&amp;page&#x3D;1">SEARCH PROPERTIES</a></li>
252                    <li class="option"><button data-type="CONTACT_US">CONTACT US</button></li>
253        </ul>
254    </div>
255    <button class="toggle sidemenu-close"></button>
256</div>
257
258        </div>
259        <div  id="global-mobile-contact" class="mobile-contact-wrapper" data-el-id="befe5af2-a6ca-4119-924a-a85d96d36b51">
260            <div class="btn-holder" 
261style="
262--backgroundColor: rgba(20, 20, 20, 1); 
263--textColor: rgba(255, 255, 255, 1); 
264--pillTextColor: rgba(26, 26, 26, 1); 
265--pillBackgroundColor: rgba(255, 255, 255, 1);">
266
267    <button type="button" class="connect-btn lp-ico lp-ico-arrow-top visible">Let&#x27;s Connect</button>
268</div>
269
270
271<div class="pop-up" style="--backgroundColor: rgba(20, 20, 20, 1); --textColor: rgba(255, 255, 255, 1);">
272  <div class="lp-container">
273    <form data-type="contact-form" class="contact-form">
274      <div class="contact-form__container">
275          <h3 class="lp-h3">Leave a Message</h3>
276      
277        <div class="contact-form__content">
278          <div class="contact-form__inputs-container">
279            <div class="contact-form__item">
280              <input
281                id="__FullName"
282                type="text" name="name"
283                class="lp-input lp-input--light"
284                required
285                placeholder="Full Name">
286            </div>
287            <div class="contact-form__item">
288              <input
289                id="__Email"
290                type="email" name="email"
291                class="lp-input js-email-input lp-input--light"
292                required
293                placeholder="Email">
294            </div>
295            <div class="contact-form__item"> 
296              <input
297                class="lp-input lp-input--light"
298                type="tel" 
299                placeholder="Phone"
300                id="__Phone"
301                name="phone"
302                required>
303            </div>
304
305            <div class="contact-form__item input-group-select">
306              <select name="interest" id="-field-interest" placeholder="Interest"
307                class="lp-input dropdown-select js-select js-form-element lp-input--light" required>
308                <option value="" disabled selected data-label="Interest">Interested in...</option>
309                <option value="Selling &amp; Buying">Selling &amp; Buying</option>
310                <option value="Selling">Selling</option>
311                <option value="Buying">Buying</option>
312                <option value="Renting">Renting</option>
313                <option value="Other">Other</option>
314              </select>
315              <label for="-field-interest" class="lp-label sr-only">Interest</label>
316            </div>
317
318            <div class="contact-form__item">
319              <textarea
320                name="message"
321                rows="4"
322                id="__Message"
323                class="lp-input lp-input--light"
324                placeholder="Message"
325                required></textarea>
326            </div>
327            <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
328  <label class='lp-tcr-content'>
329    <span class='lp-tcr-checkbox'>
330      <input
331        type='checkbox'
332        id='-termsAccepted'
333        name='termsAccepted'
334        oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
335        oninput="this.setCustomValidity('')"
336        required
337      /></span>
338    <span class='lp-tcr-message'>
339      
340        I agree to be contacted by
341        Hedge Realty
342        via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
343        You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
344        <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
345    </span>
346  </label>
347
348</div>
349            <button type="submit" class="lp-btn lp-btn--filled lp-btn--dark submit  contact-form__item">Submit</button>
350            
351            <div class="lp-h-pot">
352              <input id="__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1">
353            </div>
354            
355            <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" />
356            <input type="hidden" name="button_text" value="Let&#x27;s Connect">
357          </div>
358        </div>
359      </div>
360
361
362      <div class="success-block">
363          <h3 class="lp-h3 success-message">Thank you for your message. We will be in touch with you shortly.</h3>
364
365      </div>
366    </form>
367
368    <button type="button" class="close-btn lp-ico lp-ico-close"></button>
369
370    
371  </div>
372</div>
373
374
375        </div>
376        <section  class="image-section is-font-color-light is-background-color-light" id="section-2795aaeb-28d4-404d-8a83-32bc2f7d4bd2" data-el-id="e6c6941b-dd32-4d6b-b4aa-56593f2d58bb">
377    <div class="redesign custom-intro">
378    <div class="container">
379        <h1 class="custom-intro__title">the team</h1>
380        
381    </div>
382</div>
383
384</section>
385<section id="section-03af5970-969f-4ce5-87e6-2b86762a7411"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="21c5a117-61cb-4f43-8635-2da86e3ae7dd">
386  
387<div class="boxed-text lp-vertical-paddings redesign">
388  <div class="lp-container">
389    <div class="lp-title-group">
390      <h2 class="lp-h2 js-title">hedge realty</h2>
391      
392    </div>
393    
394    <div class="boxed-text__description"><h3><span style="font-weight: 400;">We live here. We love Sonoma County. We know the ins and outs of every community from wine country to the coast: the thriving culinary scenes, the finest wineries and the best spots for sunsets. We know all the best listings and all the off-market homes that can help you effectively price your property – not just based on comps but on the kind of on-the-ground research, intelligence and insight.&nbsp; We establish excellence, imagination and impact in every project we undertake. Our successes in these markets reflect the decades we’ve invested in the region, the relationships we’ve built and the counsel and insights that knowledge affords our clients.</span></h3></div>
395  </div>
396</div>
397</section>
398<section id="section-40e257c9-edea-4cb8-9ee1-32c3ade9c174"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="4fd88bff-4528-4094-a238-bc747e38f1f6">
399<script type="text/x-handlebars-template" class="gridItem pagination-script"><div class="team-member__container"    data-search-string="{{firstName}} {{lastName}} {{email}}"
400    data-tags="{{JSONstringify tags}}"
401>
402  <a class="team-member__link" href="/agent/{{slug}}">
403    <div class="team-member__image-wrap">
404      <div class="team-member__image">
405        {{{mediaImage avatar alt=(concat firstName " " lastName) sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw"}}}
406      </div>
407      <div class="team-member__hover">
408        <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
409      </div>
410    </div>
411    <div class="team-member__info">
412      <span class="team-member__name">{{firstName}} {{lastName}}</span>
413      <span class="team-member__role">{{position}}</span>
414       {{#if license}}
415          <span class="team-member__license">License: #{{license}}</span>
416        {{/if}}
417    </div> 
418  </a>
419</div>
420</script>
420<div class="team-grid redesign">
421  <div class="lp-container">
422    <div class="lp-title-group">
423      
424      <h2 class="lp-h2">tim little + alexa glockner team</h2>
425      
426    </div>
427    
428    <div class="js-sync-flag" style="display: none;"></div>
429    
430    
431    
432    
433    <div class="team-grid__wrapper   ordered-elements">
434        <div class="team-member__container"    data-search-string="Alexa Glockner [email protected]"
435            data-tags="[]"
436        >
437          <a class="team-member__link" href="/agent/alexa-glockner">
438            <div class="team-member__image-wrap">
439              <div class="team-member__image">
440                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/33618675-2f23-4816-88c1-7a2a5cfa6b43" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/33618675-2f23-4816-88c1-7a2a5cfa6b43 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/33618675-2f23-4816-88c1-7a2a5cfa6b43 1095w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Alexa Glockner" class="portrait" loading="lazy">
441              </div>
442              <div class="team-member__hover">
443                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
444              </div>
445            </div>
446            <div class="team-member__info">
447              <span class="team-member__name">Alexa Glockner</span>
448              <span class="team-member__role">Realtor® + Founder</span>
449                  <span class="team-member__license">License: #01329001</span>
450            </div> 
451          </a>
452        </div>
453        <div class="team-member__container"    data-search-string="Tim Little [email protected]"
454            data-tags="[]"
455        >
456          <a class="team-member__link" href="/agent/tim-little">
457            <div class="team-member__image-wrap">
458              <div class="team-member__image">
459                <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/kj9douoqczf891jyl1iv" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/kj9douoqczf891jyl1iv 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/kj9douoqczf891jyl1iv 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/kj9douoqczf891jyl1iv 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Tim Little" class="portrait" loading="lazy">
460              </div>
461              <div class="team-member__hover">
462                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
463              </div>
464            </div>
465            <div class="team-member__info">
466              <span class="team-member__name">Tim Little</span>
467              <span class="team-member__role">Broker Associate + Founder</span>
468                  <span class="team-member__license">License: #01910516</span>
469            </div> 
470          </a>
471        </div>
472        <div class="team-member__container"    data-search-string="Shawn Norlin [email protected]"
473            data-tags="[]"
474        >
475          <a class="team-member__link" href="/agent/shawn-norlin">
476            <div class="team-member__image-wrap">
477              <div class="team-member__image">
478                <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/bogjlhn71rqi7gyok6ux" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/bogjlhn71rqi7gyok6ux 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/bogjlhn71rqi7gyok6ux 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/bogjlhn71rqi7gyok6ux 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Shawn N
478orlin" class="portrait" loading="lazy">
479              </div>
480              <div class="team-member__hover">
481                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
482              </div>
483            </div>
484            <div class="team-member__info">
485              <span class="team-member__name">Shawn Norlin</span>
486              <span class="team-member__role">Realtor® + Admin</span>
487                  <span class="team-member__license">License: #02125856</span>
488            </div> 
489          </a>
490        </div>
491        <div class="team-member__container"    data-search-string="Robyn Poggi [email protected]"
492            data-tags="[]"
493        >
494          <a class="team-member__link" href="/agent/robyn-poggi">
495            <div class="team-member__image-wrap">
496              <div class="team-member__image">
497                <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/32c43e47-1d31-41c5-9088-d464b6a0ba18" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/32c43e47-1d31-41c5-9088-d464b6a0ba18 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/32c43e47-1d31-41c5-9088-d464b6a0ba18 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/32c43e47-1d31-41c5-9088-d464b6a0ba18 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Robyn Poggi" loading="lazy">
498              </div>
499              <div class="team-member__hover">
500                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
501              </div>
502            </div>
503            <div class="team-member__info">
504              <span class="team-member__name">Robyn Poggi</span>
505              <span class="team-member__role">Realtor®</span>
506                  <span class="team-member__license">License: #02439298</span>
507            </div> 
508          </a>
509        </div>
510    </div>
511    
512    
513    <div class="empty-message js-empty-message">
514      <h3 class="header2 empty-title">No result found</h3>
515    </div>
516  </div>
517</div>
518</section>
519<section id="section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="4fd88bff-4528-4094-a238-bc747e38f1f6">
520<script type="text/x-handlebars-template" class="gridItem pagination-script"><div class="team-member__container"    data-search-string="{{firstName}} {{lastName}} {{email}}"
521    data-tags="{{JSONstringify tags}}"
522>
523  <a class="team-member__link" href="/agent/{{slug}}">
524    <div class="team-member__image-wrap">
525      <div class="team-member__image">
526        {{{mediaImage avatar alt=(concat firstName " " lastName) sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw"}}}
527      </div>
528      <div class="team-member__hover">
529        <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
530      </div>
531    </div>
532    <div class="team-member__info">
533      <span class="team-member__name">{{firstName}} {{lastName}}</span>
534      <span class="team-member__role">{{position}}</span>
535       {{#if license}}
536          <span class="team-member__license">License: #{{license}}</span>
537        {{/if}}
538    </div> 
539  </a>
540</div>
541</script>
541<div class="team-grid redesign">
542  <div class="lp-container">
543    <div class="lp-title-group">
544      
545      <h2 class="lp-h2">pearson fillinger group</h2>
546      
547    </div>
548    
549    <div class="js-sync-flag" style="display: none;"></div>
550    
551    
552    
553    
554    <div class="team-grid__wrapper   ordered-elements">
555        <div class="team-member__container"    data-search-string="Stephen Pearson [email protected]"
556            data-tags="[]"
557        >
558          <a class="team-member__link" href="/agent/stephen-pearson">
559            <div class="team-member__image-wrap">
560              <div class="team-member__image">
561                <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/c7a4eb22-1bc1-4440-b417-44504ec79dbb" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/c7a4eb22-1bc1-4440-b417-44504ec79dbb 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/c7a4eb22-1bc1-4440-b417-44504ec79dbb 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/c7a4eb22-1bc1-4440-b417-44504ec79dbb 1851w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Stephen Pearson" class="portrait" loading="lazy">
562              </div>
563              <div class="team-member__hover">
564                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
565              </div>
566            </div>
567            <div class="team-member__info">
568              <span class="team-member__name">Stephen Pearson</span>
569              <span class="team-member__role">Broker Associate</span>
570                  <span class="team-member__license">License: #01973705</span>
571            </div> 
572          </a>
573        </div>
574        <div class="team-member__container"    data-search-string="Mary Fillinger [email protected]"
575            data-tags="[]"
576        >
577          <a class="team-member__link" href="/agent/mary-fillinger">
578            <div class="team-member__image-wrap">
579              <div class="team-member__image">
580                <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/59ee5d7a-f368-4b1d-9755-b7bf47d03dcc" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/59ee5d7a-f368-4b1d-9755-b7bf47d03dcc 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/59ee5d7a-f368-4b1d-9755-b7bf47d03dcc 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/59ee5d7a-f368-4b1d-9755-b7bf47d03dcc 1783w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Mary Fillinger" class="portrait" loading="lazy">
581              </div>
582              <div class="team-member__hover">
583                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
584              </div>
585            </div>
586            <div class="team-member__info">
587              <span class="team-member__name">Mary Fillinger</span>
588              <span class="team-member__role">Realtor®</span>
589                  <span class="team-member__license">License: #02147040</span>
590            </div> 
591          </a>
592        </div>
593        <div class="team-member__container"    data-search-string="Jan Frost [email protected]"
594            data-tags="[]"
595        >
596          <a class="team-member__link" href="/agent/jan-frost">
597            <div class="team-member__image-wrap">
598              <div class="team-member__image">
599                <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/f2adstqvvlzz0gcvbhs9" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/f2adstqvvlzz0gcvbhs9 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/f2adstqvvlzz0gcvbhs9 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/f2adstqvvlzz0gcvbhs9 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Jan Frost" class="portrait" loading="lazy">
600              </div>
601              <div class="team-member__hover">
602                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
603              </div>
604            </div>
605            <div class="team-member__info">
606              <span class="team-member__name">Jan Frost</span>
607              <span class="team-member__role">REALTOR®</span>
608                  <span class="team-member__license">License: #01107690</span>
609            </div> 
610          </a>
611        </div>
612    </div>
613    
614    
615    <div class="empty-message js-empty-message">
616      <h3 class="header2 empty-title">No result found</h3>
617    </div>
618  </div>
619</div>
620</section>
621<section id="section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="4fd88bff-4528-4094-a238-bc747e38f1f6">
622<script type="text/x-handlebars-template" class="gridItem pagination-script"><div class="team-member__container"    data-search-string="{{firstName}} {{lastName}} {{email}}"
623    data-tags="{{JSONstringify tags}}"
624>
625  <a class="team-member__link" href="/agent/{{slug}}">
626    <div class="team-member__image-wrap">
627      <div class="team-member__image">
628        {{{mediaImage avatar alt=(concat firstName " " lastName) sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw"}}}
629      </div>
630      <div class="team-member__hover">
631        <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
632      </div>
633    </div>
634    <div class="team-member__info">
635      <span class="team-member__name">{{firstName}} {{lastName}}</span>
636      <span class="team-member__role">{{position}}</span>
637       {{#if license}}
638          <span class="team-member__license">License: #{{license}}</span>
639        {{/if}}
640    </div> 
641  </a>
642</div>
643</script>
643<div class="team-grid redesign">
644  <div class="lp-container">
645    <div class="lp-title-group">
646      
647      <h2 class="lp-h2">chelsea lovascio + team</h2>
648      
649    </div>
650    
651    <div class="js-sync-flag" style="display: none;"></div>
652    
653    
654    
655    
656    <div class="team-grid__wrapper   ordered-elements">
657        <div class="team-member__container"    data-search-string="Chelsea Lovascio [email protected]"
658            data-tags="[]"
659        >
660          <a class="team-member__link" href="/agent/chelsea-lovascio">
661            <div class="team-member__image-wrap">
662              <div class="team-member__image">
663                <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/irwjqqeylvsgcgo8kdyw" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/irwjqqeylvsgcgo8kdyw 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/irwjqqeylvsgcgo8kdyw 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/irwjqqeylvsgcgo8kdyw 1500w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Chelsea Lovascio" class="portrait" loading="lazy">
664              </div>
665              <div class="team-member__hover">
666                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
667              </div>
668            </div>
669            <div class="team-member__info">
670              <span class="team-member__name">Chelsea Lovascio</span>
671              <span class="team-member__role">Realtor®</span>
672                  <span class="team-member__license">License: #01958007</span>
673            </div> 
674          </a>
675        </div>
676        <div class="team-member__container"    data-search-string="Zoe  Kimberly [email protected]"
677            data-tags="[]"
678        >
679          <a class="team-member__link" href="/agent/zoe-kimberly">
680            <div class="team-member__image-wrap">
681              <div class="team-member__image">
682                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/cedqsztsewm4y5onz0bc" alt="Zoe  Kimberly" class="portrait" loading="lazy">
683              </div>
684              <div class="team-member__hover">
685                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
686              </div>
687            </div>
688            <div class="team-member__info">
689              <span class="team-member__name">Zoe  Kimberly</span>
690              <span class="team-member__role">Realtor®</span>
691                  <span class="team-member__license">License: #02082252</span>
692            </div> 
693          </a>
694        </div>
695    </div>
696    
697    
698    <div class="empty-message js-empty-message">
699      <h3 class="header2 empty-title">No result found</h3>
700    </div>
701  </div>
702</div>
703</section>
704<section id="section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="4fd88bff-4528-4094-a238-bc747e38f1f6">
705<script type="text/x-handlebars-template" class="gridItem pagination-script"><div class="team-member__container"    data-search-string="{{firstName}} {{lastName}} {{email}}"
706    data-tags="{{JSONstringify tags}}"
707>
708  <a class="team-member__link" href="/agent/{{slug}}">
709    <div class="team-member__image-wrap">
710      <div class="team-member__image">
711        {{{mediaImage avatar alt=(concat firstName " " lastName) sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw"}}}
712      </div>
713      <div class="team-member__hover">
714        <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
715      </div>
716    </div>
717    <div class="team-member__info">
718      <span class="team-member__name">{{firstName}} {{lastName}}</span>
719      <span class="team-member__role">{{position}}</span>
720       {{#if license}}
721          <span class="team-member__license">License: #{{license}}</span>
722        {{/if}}
723    </div> 
724  </a>
725</div>
726</script>
726<div class="team-grid redesign">
727  <div class="lp-container">
728    <div class="lp-title-group">
729      
730      <h2 class="lp-h2">independent agents</h2>
731      
732    </div>
733    
734    <div class="js-sync-flag" style="display: none;"></div>
735    
736    
737    
738    
739    <div class="team-grid__wrapper   ordered-elements">
740        <div class="team-member__container"    data-search-string="Danielle La Noire [email protected]"
741            data-tags="[]"
742        >
743          <a class="team-member__link" href="/agent/dani-la-noire">
744            <div class="team-member__image-wrap">
745              <div class="team-member__image">
746                <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/415bd720-1b95-4ae8-b921-fc4b98303413" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/415bd720-1b95-4ae8-b921-fc4b98303413 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/415bd720-1b95-4ae8-b921-fc4b98303413 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/415bd720-1b95-4ae8-b921-fc4b98303413 1732w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Danielle La Noire" class="portrait" loading="lazy">
747              </div>
748              <div class="team-member__hover">
749                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
750              </div>
751            </div>
752            <div class="team-member__info">
753              <span class="team-member__name">Danielle La Noire</span>
754              <span class="team-member__role">Realtor®</span>
755                  <span class="team-member__license">License: #01957008</span>
756            </div> 
757          </a>
758        </div>
759        <div class="team-member__container"    data-search-string="Jenny Belforte [email protected]"
760            data-tags="[]"
761        >
762          <a class="team-member__link" href="/agent/jenny-belforte">
763            <div class="team-member__image-wrap">
764              <div class="team-member__image">
765                <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/bca8f21d-614c-4c9d-8aa6-4ab29a11d841" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/bca8f21d-614c-4c9d-8aa6-4ab29a11d841 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/bca8f21d-614c-4c9d-8aa6-4ab29a11d841 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/bca8f21d-614c-4c9d-8aa6-4ab29a11d841 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Jenny Belforte" class="portrait" loading="lazy">
766              </div>
767              <div class="team-member__hover">
768                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
769              </div>
770            </div>
771            <div class="team-member__info">
772              <span class="team-member__name">Jenny Belforte</span>
773              <span class="team-member__role">Realtor®</span>
774                  <span class="team-member__license">License: #01351370</span>
775            </div> 
776          </a>
777        </div>
778        <div class="team-member__container"    data-search-string="Marni Cunha [email protected]"
779            data-tags="[]"
780        >
781          <a class="team-member__link" href="/agent/marni-cunha">
782            <div class="team-member__image-wrap">
783              <div class="team-member__image">
784                <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/fa64364f-52dd-4ab8-b212-eb0c281e64eb" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/fa64364f-52dd-4ab8-b212-eb0c281e64eb 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/fa64364f-52dd-4ab8-b212-eb0c281e64eb 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/fa64364f-52dd-4ab8-b212-eb0c281e64eb 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Marni Cunha" class="portrait" loading="lazy">
785              </div>
786              <div class="team-member__hover">
787                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
788              </div>
789            </div>
790            <div class="team-member__info">
791              <span class="team-member__name">Marni Cunha</span>
792              <span class="team-member__role">Realtor®</span>
793                  <span class="team-member__license">License: #01754207</span>
794            </div> 
795          </a>
796        </div>
797        <div class="team-member__container"    data-search-string="Jennifer Rochlin [email protected]"
798            data-tags="[]"
799        >
800          <a class="team-member__link" href="/agent/jennifer-rochlin">
801            <div class="team-member__image-wrap">
802              <div class="team-member__image">
803                <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/45674f54-ab52-4ddb-b4bb-8256c76dbc33" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/45674f54-ab52-4ddb-b4bb-8256c76dbc33 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/45674f54-ab52-4ddb-b4bb-8256c76dbc33 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/45674f54-ab52-4ddb-b4bb-8256c76dbc33 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Jennifer Rochlin" class="portrait" loading="lazy">
804              </div>
805              <div class="team-member__hover">
806                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
807              </div>
808            </div>
809            <div class="team-member__info">
810              <span class="team-member__name">Jennifer Rochlin</span>
811              <span class="team-member__role">Realtor</span>
812                  <span class="team-member__license">License: #01991714</span>
813            </div> 
814          </a>
815        </div>
816        <div class="team-member__container"    data-search-string=" Morisha Ogunkoya [email protected]"
817            data-tags="[]"
818        >
819          <a class="team-member__link" href="/agent/morisha-ogunkoya">
820            <div class="team-member__image-wrap">
821              <div class="team-member__image">
822                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/dzcvbc1milq3pijqcfk6" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/dzcvbc1milq3pijqcfk6 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/dzcvbc1milq3pijqcfk6 1000w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt=" Morisha Ogunkoya" class="portrait" loading="lazy">
823              </div>
824              <div class="team-member__hover">
825                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
826              </div>
827            </div>
828            <div class="team-member__info">
829              <span class="team-member__name"> Morisha Ogunkoya</span>
830              <span class="team-member__role">Realtor®</span>
831                  <span class="team-member__license">License: #02207298</span>
832            </div> 
833          </a>
834        </div>
835        <div class="team-member__container"    data-search-string="Sandy Spring [email protected]"
836            data-tags="[]"
837        >
838          <a class="team-member__link" href="/agent/sandy-spring">
839            <div class="team-member__image-wrap">
840              <div class="team-member__image">
841                <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/jl0ints0frogpzturfab" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/jl0ints0frogpzturfab 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/jl0ints0frogpzturfab 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/jl0ints0frogpzturfab 1576w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Sandy Spring" loading="lazy">
842              </div>
843              <div class="team-member__hover">
844                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
845              </div>
846            </div>
847            <div class="team-member__info">
848              <span class="team-member__name">Sandy Spring</span>
849              <span class="team-member__role">Broker Associate</span>
850                  <span class="team-member__license">License: #01465098</span>
851            </div> 
852          </a>
853        </div>
854        <div class="team-member__container"    data-search-string="Rachael Dressler [email protected]"
855            data-tags="[]"
856        >
857          <a class="team-member__link" href="/agent/rachael-dressler">
858            <div class="team-member__image-wrap">
859              <div class="team-member__image">
860                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/2ea85dbe-b0dd-4227-9a31-b92fbb020770" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/2ea85dbe-b0dd-4227-9a31-b92fbb020770 960w, https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/2ea85dbe-b0dd-4227-9a31-b92fbb020770 1200w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Rachael Dressler" class="portrait" loading="lazy">
861              </div>
862              <div class="team-member__hover">
863                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
864              </div>
865            </div>
866            <div class="team-member__info">
867              <span class="team-member__name">Rachael Dressler</span>
868              <span class="team-member__role">Realtor®</span>
869                  <span class="team-member__license">License: #02176769</span>
870            </div> 
871          </a>
872        </div>
873        <div class="team-member__container"    data-search-string="Steve Cohn [email protected]"
874            data-tags="[]"
875        >
876          <a class="team-member__link" href="/agent/steve-cohn">
877            <div class="team-member__image-wrap">
878              <div class="team-member__image">
879                <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/c449ibrcfjm9n3cr8wir" srcset="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85,fit=scale-down,width=960/https://media-production.lp-cdn.com/media/c449ibrcfjm9n3cr8wir 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/c449ibrcfjm9n3cr8wir 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/c449ibrcfjm9n3cr8wir 1920w" sizes="(max-width: 768px) 100vw, (max-width: 1000px) 50vw, 33vw" alt="Steve Cohn" class="portrait" loading="lazy">
880              </div>
881              <div class="team-member__hover">
882                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
883              </div>
884            </div>
885            <div class="team-member__info">
886              <span class="team-member__name">Steve Cohn</span>
887              <span class="team-member__role">Realtor®</span>
888                  <span class="team-member__license">License: #01211151</span>
889            </div> 
890          </a>
891        </div>
892        <div class="team-member__container"    data-search-string="Lindsay Doyle [email protected]"
893            data-tags="[]"
894        >
895          <a class="team-member__link" href="/agent/lindsay-doyle">
896            <div class="team-member__image-wrap">
897              <div class="team-member__image">
898                <img src="https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/xkkmyt3wzdsxlwpjoewe" alt="Lindsay Doyle" class="portrait" loading="lazy">
899              </div>
900              <div class="team-member__hover">
901                <span class="btn btn--primary-dark team-member__btn button-style-3">LEARN MORE</span>
902              </div>
903            </div>
904            <div class="team-member__info">
905              <span class="team-member__name">Lindsay Doyle</span>
906              <span class="team-member__role">Realtor®</span>
907                  <span class="team-member__license">License: #01838556</span>
908            </div> 
909          </a>
910        </div>
911    </div>
912    
913    
914    <div class="empty-message js-empty-message">
915      <h3 class="header2 empty-title">No result found</h3>
916    </div>
917  </div>
918</div>
919</section>
920<section id="section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5"  class="solid-section is-font-color-dark is-background-color-light" data-el-id="19e4a145-7cee-4338-8873-657ce2636b4c">
921  
922<div class="newsletter-signup lp-vertical-paddings redesign">
923  <div class="lp-container-custom">
924    <form data-type="contact-form" class="newsletter-signup__form">
925      <div class="newsletter-signup__form-container">
926        <div class="lp-title-group">
927          
928          <div class="lp-text--subtitle">connect with us</div>
929        </div>
930        <div class="newsletter-signup-form">
931          <div class="newsletter-signup__inputs-container">
932              <input id="section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5__newsSignFirstName" type="text" name="name" class="lp-input lp-input--light newsletter-signup__form-item" required placeholder="Name">
933              
934            <input id="section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5__newsSignEmail" type="email" name="email" class="lp-input lp-input--light newsletter-signup__form-item" required placeholder="Email" pattern="[a-zA-Z0-9.!#$%&amp;’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+">
935            
936            <button type="submit" class="lp-btn lp-btn--filled lp-btn--light submit button-style-2 newsletter-signup__form-item lp-btn--mob-full-width">Submit</button>
937            
938            <div class="lp-h-pot">
939              <input id="section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5__newsSignMiddleName" name="middleName" value="" autocomplete="off" tabindex="-1">
940            </div>
941            
942            <input style="display: none;" type="text" name="source" value="NEWSLETTER_SIGNUP" />
943          </div>
944        </div>
945        <div class="lp-disclaimer">  <label style='display: none;' for='section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5-termsAccepted'>Opt In/Disclaimer Consent:</label>
946  <label class='lp-tcr-content'>
947    <span class='lp-tcr-checkbox'>
948      <input
949        type='checkbox'
950        id='section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5-termsAccepted'
951        name='termsAccepted'
952        oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
953        oninput="this.setCustomValidity('')"
954        required
955      /></span>
956    <span class='lp-tcr-message'>
957      
958        I agree to be contacted by
959        Hedge Realty
960        via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
961        You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
962        <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
963    </span>
964  </label>
965
966</div>
967      </div>
968      <div class="success-block">
969        <div class="lp-title-group">
970          <h2 class="lp-h2">Thank You</h2>
971          <div class="lp-text--subtitle"><p>You have successfully been added to our Newsletter. Stay tuned for the latest updates sent straight to your inbox!</p></div>
972        </div>
973      </div>
974    </form>
975    
976  </div>
977</div>
978</section>
979<section id="section-90b955a0-1aef-435e-aa96-59c408339909"  class="solid-section is-font-color-light is-background-color-dark" data-el-id="a261202b-cc2b-4a7e-912a-a4b8ffe6ab1b">
980<div class="redesign custom-content lp-vertical-paddings">
981  <div class="lp-container lp-container--l">
982    <h3 style="text-align: center;">Contact Broker-of-Record</h3>
983<p style="text-align: center;">Hillary Saunders<br />Corporate License No. 02014153<br /><span style="text-decoration: underline;
983 color: #ffffff;"><a style="color: #ffffff; text-decoration: underline;" href="/cdn-cgi/l/email-protection#365e5f5a57444f765559584257554275775444595d53441855595b" rel="noopener" data-aura-rendered-by="17573:0"><span class="__cf_email__" data-cfemail="1b7372777a69625b7874756f7a786f585a796974707e6935787476">[email&#160;protected]</span></a></span></p>
984  </div>
985</div>
986</section>
987
988        <div id="modals" class="modals"></div>
989        <footer id="global-footer" class="is-font-color-dark is-background-color-light" data-el-id="874a9373-949d-4275-b72f-04c2a6ec373b">
990            <div class="footer redesign no_icon no_newsletter no-names"> 
991    <div class="container">
992        <div class="info-wrap">
993            <div class="info-wrap-contact agent_box">
994                <div class="info-wrap-contact_zone type_user">
995                    
996                    <div class="info-wrap-contact_cell">
997                        <p class="contact_title">Email</p>
998                        <a href="/cdn-cgi/l/email-protection#b9d0d7dfd6f9d1dcdddedccbdcd8d5cdc097dad6d4" class="lp-link info-wrap-contact_link grey-text "><span class="__cf_email__" data-cfemail="452c2b232a052d2021222037202429313c6b262a28">[email&#160;protected]</span></a>
999                    </div>
1000                    <div class="info-wrap-contact_cell">
1001                                                <p class="contact_title">Phone Number</p>
1002                        <a href="tel:7075598990" class="lp-link info-wrap-contact_link grey-text ">(707) 559-8990</a>
1003                    </div>
1004                </div>
1005                <div class="info-wrap-contact_zone">
1006                    <div class="info-wrap-contact_cell">
1007                        <p class="info-wrap-contact_title">Address</p>
1008                        <p class="info-wrap-contact_link grey-text"><p>103 H Street, Suite B Petaluma, CA 94952<br /><br />DRE# 02014153</p></p>
1009                    </div>
1010                </div>
1011            </div>
1012        </div>
1013        <div class="text_footer first_text_footer">
1014            <div class="images_box">
1015                <div class="img_size">
1016                    <img src="https://media-production.lp-cdn.com/media/ddf381fb-3038-4fa6-8d2a-02980157d37b" alt="Footer Image">
1017                </div>
1018            </div>
1019            <div class="luxury-text">
1020                <div id="io64" class="gjs-row">
1021<div id="isxs" class="gjs-cell">
1022<div id="ib2f" class="gjs-row">
1023<div id="ikca" class="gjs-cell">
1024<div id="id5t">
1025<div id="i0tby">Hedge Realty is a real estate company affiliated with Side, Inc. Side, Inc is a licensed real estate broker licensed by the state of California and abides by equal housing opportunity laws. All material presented herein is intended for informational purposes only. Information is compiled from sources deemed reliable but is subject to errors, omissions, changes in price, condition, sale, or withdrawal without notice. No statement is made as to the accuracy of any description. All measurements and square footages are approximate. This is not intended to solicit property already listed. Nothing herein shall be construed as legal, accounting or other professional advice outside the realm of real estate brokerage. <br><img id="ihmcj" src="https://media-production.lp-cdn.com/media/d862a8fd-7950-4cd6-9e84-34f9c0a35133" width="100px;"><br><br>
1026<p id="isxkl">Hedge Realty | CA DRE# 02014153</p>
1027</div>
1028</div>
1029</div>
1030</div>
1031<div id="it0l" class="gjs-row"></div>
1032</div>
1033</div>
1034<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}.gjs-row{display:flex;justify-content:flex-start;align-items:stretch;flex-wrap:nowrap;padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;}.gjs-cell{min-height:75px;flex-grow:1;flex-basis:100%;}#io64{padding:0 0 0 0;}#it0l{padding:0 0 0 0;}#i0tby{font-size:12px;}#ihmcj{margin-top:20px;filter:invert();}#isxkl{font-size:14px;font-weight:700;}@media (max-width: 768px){.gjs-row{flex-wrap:wrap;}}</style>
1035            </div>
1036        </div>
1037        <div class="text_footer second_text_footer">
1038            <div class="text_content_wrap">
1039                <div>
1040                    All information is deemed reliable but not guaranteed and should be independently reviewed and verified.
1041                </div>
1042                <div>
1043                    <div>&nbsp;</div>
1044<style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}</style>
1045                </div>
1046            </div>
1047        </div>
1048        <div class="info-privacy">
1049          <div class="form-row info-privacy__row">
1050
1051            <div class="form-col form-col--powered powered-box">
1052                <div class="powered_zone">
1053                    Powered by <a href="https://www.luxurypresence.com/" target="_blank" class="lp-link grey-text luxury-link underlined ">Luxury Presence</a>
1054                </div>
1055            </div>
1056
1057            <div class="form-col form-col--copyright">
1058              <div class="copy_zone">
1059                <span class="copy_words">Copyright &copy;</span> <span class="auto-year-update">2026</span>
1060                | <a href="/terms-and-conditions" class="lp-link grey-text ">Privacy Policy</a>
1061
1062              </div>
1063            </div>
1064
1065            <div class="form-col form-col--socials">
1066                <ul class="lp-socials social_icons-style-1 socials socials--grey socials_zone">
1067                
1068                        <li>
1069                          <a
1070                            href="https://www.instagram.com/hedgerealty/"
1071                            class="lp-socials__link socials__item socials__link wow fadeInUp"
1072                            data-wow-delay="0s"
1073                            target="_blank"
1074                            aria-label="INSTAGRAM"
1075                          >
1076                              <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
1077                          </a>
1078                        </li>
1079                        <li>
1080                          <a
1081                            href="https://www.linkedin.com/in/alexa-glockner-34a2b1b/"
1082                            class="lp-socials__link socials__item socials__link wow fadeInUp"
1083                            data-wow-delay="0.1s"
1084                            target="_blank"
1085                            aria-label="LINKEDIN"
1086                          >
1087                              <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
1088                          </a>
1089                        </li>
1090                  </ul>            </div>
1091          </div>
1092        </div>
1093    </div>
1094</div>
1095
1096        </footer>
1097
1098        <div id="modal-global-contact-us" class="modal "
1099            data-el-id=""
1100            style="background-color: ;"
1101            >
1102            <div class="modal-content">
1103                <div class="contact-form redesign " style="background-image: url('https://media-production.lp-cdn.com/media/9af8c31c-523c-4608-ad51-f568b3756d18')">
1104          <div class="container">
1105              <div class="section-details" style="--colorTxt: #ffffff">
1106                  <h2>Contact Details</h2>
1107                  
1108                  <div class="info-zone">
1109        
1110                          <div class="info-zone_contact type_user">
1111                                <h4 class="serif">Hedge Realty</h4>
1112                                <div class="info-zone_contact_cell">
1113                                        <i>
1114                                            <svg width="30" height="25" viewBox="0 0 30 25" fill="none" xmlns="http://www.w3.org/2000/svg">
1115                                                <path fill-rule="evenodd" clip-rule="evenodd" d="M10.7964 8.1207H19.2036V8.7279C19.2036 10.8195 20.9082 12.5259 23.001 12.5259H24.741L25.2852 20.7051C25.3776 22.1235 24.2868 23.2719 22.8822 23.2719H7.0032C5.5944 23.2719 4.5084 22.1085 4.6002 20.7039C4.782 17.9895 4.9152 15.2313 5.154 12.5265H6.9996C9.0918 12.5265 10.797 10.8207 10.797 8.7285V8.1207H10.7964ZM11.46 16.5807C11.46 14.6565 13.0188 13.0977 14.943 13.0977C16.8666 13.0977 18.4254 14.6571 18.4254 16.5807C18.4254 18.5055 16.8678 20.0631 14.943 20.0631C13.02 20.0637 11.46 18.5043 11.46 16.5807ZM14.943 12.0381C12.4344 12.0381 10.4004 14.0721 10.4004 16.5807C10.4004 19.0887 12.435 21.1233 14.943 21.1233C17.4486 21.1233 19.485 19.0869 19.485 16.5807C19.485 14.0727 17.451 12.0381 14.943 12.0381ZM9.0846 4.8363C8.22 4.8363 7.512 5.5443 7.512 6.4089V8.7285C7.512 9.0093 7.2804 9.2415 6.999 9.2415H1.5726C1.2906 9.2415 1.0596 9.0111 1.0596 8.7285V6.9285C1.0596 6.4797 1.1628 6.0945 1.3902 5.7069C1.896 4.8465 2.7294 4.1013 3.795 3.4749C9.279 0.2517 20.7192 0.2523 26.2044 3.4749C27.2706 4.1013 28.104 4.8465 28.6098 5.7069C28.8354 6.0921 28.9398 6.4815 28.9398 6.9285V8.7285C28.9398 9.0111 28.71 9.2415 28.4268 9.2415H23.0004C22.719 9.2415 22.4874 9.0093 22.4874 8.7285V6.4089C22.4874 5.5425 21.7806 4.8363 20.9148 4.8363H9.0846ZM8.571 6.4089C8.571 6.1263 8.8026 5.8965 9.0846 5.8965H20.9154C21.1968 5.8965 21.429 6.1275 21.429 6.4089V8.7285C21.429 9.5943 22.1352 10.3017 23.001 10.3017H28.4274C29.292 10.3017 30 9.5931 30 8.7285V6.9285C30 6.2835 29.8464 5.7291 29.5206 5.1729C28.9188 4.1493 27.9564 3.2799 26.7384 2.5641C20.9214 -0.8547 9.0798 -0.8547 3.2622 2.5641C2.0436 3.2799 1.0812 4.1487 0.48 5.1729C0.153 5.7291 0 6.2835 0 6.9279V8.7279C0 9.5925 0.7092 10.3011 1.5726 10.3011H6.999C7.8648 10.3011 8.571 9.5937 8.571 8.7279V6.4089ZM9.7368 7.5915V8.7285C9.7368 10.2387 8.5092 11.4669 6.999 11.4669H4.6686C4.3914 11.4669 4.164 11.6799 4.1412 11.9511C3.8892 14.8347 3.7386 17.7435 3.5448 20.6331C3.4116 22.6425 4.989 24.3315 7.0032 24.3315H22.8822C24.882 24.3315 26.475 22.6575 26.3406 20.6343L25.7622 11.9607C25.7436 11.6811 25.5102 11.4675 25.2342 11.4675L23.001 11.4663C21.4902 11.4663 20.2632 10.2375 20.2632 8.7279V7.5909C20.2632 7.2981 20.0262 7.0611 19.7334 7.0611H10.2666C9.9738 7.0611 9.7368 7.2987 9.7368 7.5915Z" fill="#1A1A1A"/>
1116                                            </svg>
1117                                        </i>
1118                                    <p class="contact_title">Phone</p>
1119                                    <a href="tel:(707) 559-8990" class="lp-link info-zone_contact_link link hyperlink-style-2">(707) 559-8990</a>
1120                                </div>
1121                                <div class="info-zone_contact_cell">
1122                                        <i>
1123                                            <svg width="30" height="19" viewBox="0 0 30 19" fill="none" xmlns="http://www.w3.org/2000/svg">
1124                                                <path d="M2 0C0.903517 0 0 0.903517 0 2V16.6667C0 17.7631 0.903517 18.6667 2 18.6667H28C29.0965 18.6667 30 17.7631 30 16.6667V2C30 0.903517 29.0965 0 28 0H2ZM2.4375 1.33333H27.5625L15.6458 11.4896C15.3389 11.7512 14.6612 11.7512 14.3542 11.4896L2.4375 1.33333ZM1.33333 2.13542L10.1979 9.6979L1.33333 16.5729V2.13542ZM28.6667 2.13542V16.5729L19.8021 9.6979L28.6667 2.13542ZM11.2396 10.5833L13.4896 12.5C14.3543 13.2369 15.6457 13.2369 16.5104 12.5L18.7604 10.5833L27.4687 17.3333H2.53125L11.2396 10.5833Z" fill="#1A1A1A"/>
1125                                            </svg>
1126                                        </i>
1127                                    <p class="contact_title">Email</p>
1128                                    <a href="/cdn-cgi/l/email-protection#ddb4b3bbb29db5b8b9bab8afb8bcb1a9a4f3beb2b0" class="lp-link info-zone_contact_link link hyperlink-style-2"><span class="__cf_email__" data-cfemail="11787f777e5179747576746374707d65683f727e7c">[email&#160;protected]</span></a>
1129                                </div>
1130                          </div>
1131                          <div class="info-zone_contact">
1132                                <div class="info-zone_contact_cell">
1133                                        <i>
1134                                            <svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg">
1135                                                <path d="M29.9821 6.49489C29.7931 6.35756 29.679 6.32046 29.4572 6.39228L20.298 9.41368L16.1952 8.03558L15.8172 9.41525L19.7644 10.7038V28.1462L9.89831 25.7069V22.1034H8.71438V25.7515L1.21616 28.2532V15.3945H0.0322266V29.2729C0.0322266 29.5077 0.130098 29.7279 0.321106 29.8645C0.445418 29.9541 0.585911 29.9999 0.735086 29.9999C0.814804 29.9999 0.890971 29.9868 0.967926 29.96L9.48433 27.029L20.1792 29.7887C20.3224 29.8254 20.4751 29.8171 20.6152 29.7654L29.8104 26.2235C30.0942 26.1177 3
11350.0251 25.8466 30.0251 25.5431V7.08291C30.0251 6.85086 30.17 6.63144 29.9821 6.49489ZM28.8412 25.0388L20.9483 28.0361V10.7065L28.8412 8.08649V25.0388Z" fill="#1A1A1A"/>
1136                                                <path d="M6.57515 19.1142C6.6671 19.422 6.95006 19.6323 7.2713 19.6323C7.59215 19.6323 7.87511 19.422 7.96746 19.1142C8.67742 16.7514 10.0393 15.2447 11.3559 13.788C12.9944 11.9747 14.5422 10.2615 14.5422 7.2717C14.5422 3.39788 11.1451 0 7.2713 0C3.39827 0 0 3.39748 0 7.2717C0 10.2615 1.54819 11.9747 3.18674 13.788C4.50328 15.2447 5.86479 16.7514 6.57515 19.1142ZM7.2713 1.45426C10.316 1.45426 13.0883 4.22663 13.0883 7.2717C13.0883 9.70191 11.7852 11.1435 10.2769 12.8121C9.2461 13.9534 8.10992 15.2096 7.2713 16.9199C6.43229 15.2096 5.29651 13.953 4.2657 12.8121C2.75698 11.1432 1.45426 9.70191 1.45426 7.2717C1.45426 4.22663 4.22663 1.45426 7.2713 1.45426Z" fill="#1A1A1A"/>
1137                                                <path d="M7.26193 10.1616C8.8705 10.1616 10.1795 8.86084 10.1795 7.26175C10.1795 5.66305 8.87089 4.3623 7.26193 4.3623C5.65297 4.3623 4.34473 5.66305 4.34473 7.26175C4.34512 8.86084 5.65336 10.1616 7.26193 10.1616ZM7.26193 5.81657C8.06898 5.81657 8.72527 6.46536 8.72527 7.26175C8.72527 8.05932 8.06898 8.70733 7.26193 8.70733C6.45528 8.70733 5.79899 8.05893 5.79899 7.26175C5.79899 6.46536 6.45528 5.81657 7.26193 5.81657Z" fill="#1A1A1A"/>
1138                                            </svg>
1139                                        </i>
1140                                    <p class="info-wrap-contact_title">Address</p>
1141                                    <p class="info-zone_contact_link pre-line">103 H Street, Suite B
1142        Petaluma, CA</p>
1143                                </div>
1144                          </div>
1145                        <div class="info-zone_contact">
1146                            <div class="info-zone_contact_cell">
1147                                <p class="pre-line"><div></div><div id="i3fy"><p id="itkx"></p></div><style>* { box-sizing: border-box; } body {margin: 0;}ul{list-style:inherit;}#itkx{font-weight:700;}</style></p>
1148                            </div>
1149                        </div>
1150                        <ul class="lp-socials social_icons-style-2 socials socials--grey socials_zone footer__contact-column">
1151                        
1152                                <li>
1153                                  <a
1154                                    href="https://www.instagram.com/hedgerealty/"
1155                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
1156                                    data-wow-delay="0s"
1157                                    target="_blank"
1158                                    aria-label="INSTAGRAM"
1159                                  >
1160                                      <span class="lp-i lp-i--instagram" aria-hidden="true"></span>
1161                                  </a>
1162                                </li>
1163                                <li>
1164                                  <a
1165                                    href="https://www.linkedin.com/in/alexa-glockner-34a2b1b/"
1166                                    class="lp-socials__link socials__item wow fadeInUp socials__link"
1167                                    data-wow-delay="0.1s"
1168                                    target="_blank"
1169                                    aria-label="LINKEDIN"
1170                                  >
1171                                      <span class="lp-i lp-i--linkedin" aria-hidden="true"></span>
1172                                  </a>
1173                                </li>
1174                          </ul>          </div>
1175              </div>
1176              <div class="section-message">
1177                  <form data-type="contact-form">
1178                      <h2>Submit a Message</h2>
1179                       <div class="h-pot">
1180                        <label for="-middleName">Middle Name</label>
1181                        <input id="-middleName" name="middleName" value="" autocomplete="off" tabindex="-1">
1182                      </div>
1183        
1184        
1185                      <div class="lp-input-group">
1186                          <label for="prod-name" class="lp-label">Name</label>
1187                          <input id="prod-name" name="name" value="" required="" class="lp-input lp-input--light">
1188                      </div>
1189                      <div class="lp-input-group">
1190                          <label for="prod-email" class="lp-label">Email</label>
1191                          <input id="prod-email" type="email" name="email" value="" required="" class="lp-input lp-input--light">
1192                      </div>
1193                      <div class="lp-input-group">
1194                          <label for="prod-phone" class="lp-label">Phone</label>
1195                          <input id="prod-phone" type="tel" name="phoneNumber" value="" required="" class="lp-input lp-input--light">
1196                      </div>
1197                      <div class="lp-input-group m16">
1198                          <label for="prod-message" class="lp-label">Message</label>
1199                          <textarea id="prod-message" name="message" value="" required="" class="lp-input"></textarea>
1200                      </div>
1201        
1202                      <div class="lp-disclaimer">  <label style='display: none;' for='-termsAccepted'>Opt In/Disclaimer Consent:</label>
1203          <label class='lp-tcr-content'>
1204            <span class='lp-tcr-checkbox'>
1205              <input
1206                type='checkbox'
1207                id='-termsAccepted'
1208                name='termsAccepted'
1209                oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
1210                oninput="this.setCustomValidity('')"
1211                required
1212              /></span>
1213            <span class='lp-tcr-message'>
1214              
1215                I agree to be contacted by
1216                Hedge Realty
1217                via call, email, and text for real estate services. To opt out, you can reply 'stop' at any time or reply 'help' for assistance.
1218                You can also click the unsubscribe link in the emails. Message and data rates may apply. Message frequency may vary.
1219                <a href='/terms-and-conditions' target='_blank'>Privacy Policy</a>.
1220            </span>
1221          </label>
1222        
1223        </div>
1224                      
1225                      <input style="display: none;" type="text" name="source" value="CONTACT_INQUIRY" />
1226                      
1227                      
1228                      <button type="submit" class="submitButton lp-btn button-style-1">
1229                          <span class="label-initial">Submit</span>
1230                          <span class="label-loading">Submitting</span>
1231                          <span class="label-success">Submitted</span>
1232                          <span class="submit-icon lp-i lp-i--circle-notch lp-i--spin"></span>
1233                      </button>
1234                      <p class="success-message success hide">
1235                        Message sent successfully!
1236                      </p>
1237                  </form>
1238                  
1239                  
1240              </div>
1241          </div>
1242        </div>
1243        
1244            </div>
1245            <button class="close lp-close" type="button" aria-label="close modal">
1246                <span class="lp-close-icon" aria-hidden="true"></span>
1247            </button>
1248        </div>        <div id="modal-global-subscribe" class="modal "
1249            data-el-id=""
1250            style="background-color: ;"
1251            >
1252            <div class="modal-content">
1253                <div class="subscribe-modal">
1254          <div class="title">
1255            Subscribe to receive exclusive news &amp; updates
1256          </div>
1257          <div class="form-input">
1258            <form id="submitModalForm" data-type="contact-form" action="" method="post">
1259              <div class="h-pot">
1260                <label for="-middleName">Middle Name</label>
1261                <input id="-middleName" name="middleName" value="" autocomplete="off" tabindex="-1">
1262              </div>
1263              <input type="hidden" name="companyId" value="">
1264              <input type="email" name="email" placeholder="Enter Email Address">
1265              <input type="submit" value="Submit" class="">
1266            </form>
1267          </div>
1268        </div>
1269            </div>
1270            <button class="close lp-close" type="button" aria-label="close modal">
1271                <span class="lp-close-icon" aria-hidden="true"></span>
1272            </button>
1273        </div>
1274        <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;">
1275          <style>
1276            #qualifying-questions-modal .custom-select-toggle {
1277              border: 1px solid #848484;
1278              border-radius: 8px;
1279              padding: 12px 16px;
1280            }
1281        
1282            #qualifying-questions-modal .custom-select-toggle.is-placeholder {
1283              color: #848484;
1284            }
1285        
1286            #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder {
1287              color: #848484;
1288              opacity: 1;
1289            }
1290        
1291            #qualifying-questions-modal .disclaimer-more {
1292              display: none;
1293            }
1294        
1295            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more {
1296              display: inline;
1297            }
1298        
1299            #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis {
1300              display: none;
1301            }
1302          </style>
vendor: 119 bytes, lines 1302-1303
1302
1303          <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
1303<script>
1304            function toggleDisclaimerQualifyingQuestionsModal() {
1305              const disclaimerText = document.getElementById('qualifying-questions-modal-disclaimer-text');
1306              const toggleButton = document.getElementById('qualifying-questions-modal-toggle-disclaimer');
1307        
1308              if (disclaimerText.classList.contains('collapsed')) {
1309                disclaimerText.classList.remove('collapsed');
1310                toggleButton.textContent = 'Read less';
1311                toggleButton.setAttribute('aria-expanded', 'true');
1312              } else {
1313                disclaimerText.classList.add('collapsed');
1314                toggleButton.textContent = 'Read more';
1315                toggleButton.setAttribute('aria-expanded', 'false');
1316              }
1317            }
1318          </script>
1318
1319          <div style="max-width: 400px; width: 95%; margin: 0 auto;">
1320            <div style="background: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;">
1321              <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;">
1322                <span aria-hidden="true">&times;</span>
1323              </button>
1324              <div style="padding: 40px 30px 32px;">
1325                <div style="text-align: left; margin-bottom: 32px;">
1326                  <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;">
1327                    Thanks, please provide more information to help serve you
1328                  </h2>
1329                </div>
1330                <form id="qualifying-questions-modal-form" data-type="contact-form">
1331                  <input type="hidden" name="source" value="PROFILE_UPDATE" />
1332                  <input type="hidden" name="email" value="" id="qualifying-questions-modal-email" />
1333                  <input type="hidden" name="triggerSource" id="qualifying-questions-modal-triggerSource" value="" />
1334                  <label for="qualifying-questions-modal-email" style="display:none;">
1335                    Email
1336                  </label>
1337                  <label for="qualifying-questions-modal-triggerSource" style="display:none;">
1338                    Trigger Source
1339                  </label>
1340        
1341                  <div style="margin-bottom: 20px;">
1342                    <label for="qualifying-questions-modal-phoneNumber" style="display:none;">
1343                      Phone Number
1344                    </label>
1345                    <input
1346                      type="tel"
1347                      id="qualifying-questions-modal-phoneNumber"
1348                      name="phoneNumber"
1349                      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;"
1350                      pattern="^\+?1?[-.\s]?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}$"
1351                      required
1352                      placeholder="Phone"
1353                      aria-label="Phone Number"
1354                      inputmode="tel"
1355                      autocomplete="tel"
1356                      onfocus="this.style.borderColor='black';"
1357                      onblur="this.style.borderColor='#848484';"
1358                    />
1359                  </div>
1360        
1361                  <div style="margin-bottom: 20px;">
1362                    <label for="qualifying-questions-modal-interest" style="display:none;">
1363                      Interest
1364                    </label>
1365                    <select
1366                      id="qualifying-questions-modal-interest"
1367                      name="interest"
1368                      required
1369                      data-label="Interest"
1370                      aria-label="Interest"
1371                      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;"
1372                      onfocus="this.style.borderColor='black'; this.style.color='black';"
1373                      onblur="this.style.borderColor='#848484'; if(this.value === '') this.style.color='#848484'; else this.style.color='black';"
1374                    >
1375                      <option value="" style="background: #fff; color: #848484;" disabled selected>Interested in...</option>
1376                      <option value="Selling & Buying" style="background: #fff; color: black;">Selling & Buying</option>
1377                      <option value="Selling" style="background: #fff; color: black;">Selling</option>
1378                      <option value="Buying" style="background: #fff; color: black;">Buying</option>
1379                      <option value="Renting" style="background: #fff; color: black;">Renting</option>
1380                      <option value="Other" style="background: #fff; color: black;">Other</option>
1381                    </select>
1382                  </div>
1383        
1384                  <div style="margin-bottom: 32px; font-size: 12px; line-height: 1.2;">
1385                    <label style='display: none;' for='qualifying-questions-modal-qualifying-questions-termsAccepted'>Opt In/Disclaimer Consent:</label>
1386                    <label class='lp-tcr-content'>
1387                      <span class='lp-tcr-checkbox'>
1388                        <input
1389                          type='checkbox'
1390                          id='qualifying-questions-modal-qualifying-questions-termsAccepted'
1391                          name='termsAccepted'
1392                          aria-describedby='qualifying-questions-modal-disclaimer-text'
1393                          oninvalid="this.setCustomValidity('Please accept the terms and conditions')"
1394                          oninput="this.setCustomValidity('')"
1395                          required
1396                        /></span>
1397                      <span class='lp-tcr-message'>
1398                        <div id="qualifying-questions-modal-disclaimer-text" class="collapsed" style="color: #848484;">
1399                          
1400                            I agree to be contacted by
1401                            <strong>Hedge Realty</strong>
1402                            via call, email, and text <span class="disclaimer-more">for real estate services. 
1403                            To opt out, you can reply 'stop' at any time or reply 'help' for assistance. 
1404                            You can also click the unsubscribe link in the emails. 
1405                            Message and data rates may apply. Message frequency may vary.</span>
1406                            <span class="disclaimer-ellipsis">...</span>
1407                            <a href='/terms-and-conditions' target='_blank' rel='noopener noreferrer' style='text-decoration: underline;'>Privacy Policy</a>.
1408                        </div>
1409                        <button
1410                          id="qualifying-questions-modal-toggle-disclaimer"
1411                          type="button"
1412                          style="background: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer;"
1413                          aria-expanded="false"
1414                          onclick="toggleDisclaimerQualifyingQuestionsModal()"
1415                        >
1416                          Read more
1417                        </button>
1418                      </span>
1419                    </label>
1420                  </div>
1421        
1422                  <div>
1423                    <button
1424                      type="submit"
1425                      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;"
1426                      onmouseover="this.style.background='transparent'; this.style.color='black';"
1427                      onmouseout="this.style.background='black'; this.style.color='white';"
1428                    >
1429                      Submit
1430                    </button>
1431                  </div>
1432                </form>
1433              </div>
1434            </div>
1435          </div>
1436        </div>
1437
1438    
1438<script>
1439        (function() {
1440        var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy"));
1441
1442        if ("IntersectionObserver" in window && lazyVideos.length > 0) {
1443            var lazyVideoObserver = new IntersectionObserver(function(entries, observer) {
1444            entries.forEach(function(video) {
1445                if (video.isIntersecting) {
1446                for (var source in video.target.children) {
1447                    var videoSource = video.target.children[source];
1448                    if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") {
1449                    videoSource.src = videoSource.dataset.src;
1450                    }
1451                }
1452
1453                video.target.load();
1454                video.target.classList.remove("lazy");
1455                lazyVideoObserver.unobserve(video.target);
1456                }
1457            });
1458            });
1459
1460            lazyVideos.forEach(function(lazyVideo) {
1461                lazyVideoObserver.observe(lazyVideo);
1462            });
1463        }
1464        })();
1465    </script>
1465
1466
1467        <!-- Global site tag (gtag.js) - Google Analytics -->
1468        
1468<script defer src="https://www.googletagmanager.com/gtag/js"></script>
1468
1469
1470            <!-- Google Tag Manager -->
1471            
1471<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1472                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1473                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
1474                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1475            })(window,document,'script','dataLayer','GTM-TTW62GG');</script>
1475
1476            <!-- End Google Tag Manager -->
1477            <!-- Google Tag Manager -->
1478            
1478<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
1479                new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
1480                j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.defer=true;j.async=false;j.src=
1481                'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
1482            })(window,document,'script','dataLayer','GTM-T9SFQGHZ');</script>
1482
1483            <!-- End Google Tag Manager -->
1484
1485
1486        <!-- LP Tracker (divolte.js) - LP Divolte -->
1487            
1487<script>window.divolteLp=window.divolteLp||function(){(divolteLp.q=divolteLp.q||[]).push(arguments)}</script>
1487
1488        <!-- LP Tracker (eventBus) - LP EventBus -->
1489            
1489<script>window.eventBusLp=window.eventBusLp||function(){(eventBusLp.q=eventBusLp.q||[]).push(arguments)}</script>
1489
1490
1491    
1491<script>
1492        window.dataLayer = window.dataLayer || [];
1493        document.sendGoogleTagManagerEvent = function() {
1494            /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */
1495            if (window.navigator.globalPrivacyControl) {
1496                return;
1497            }
1498
1499            dataLayer.push(arguments);
1500        }
1501
1502        document.sendGoogleTagManagerEvent('js', new Date());
1503            document.sendGoogleTagManagerEvent('config', 'UA-135886338-1', { page: location.pathname, location: location.href });
1504            document.sendGoogleTagManagerEvent('config', 'G-9B8NV96J8S', { page: location.pathname, location: location.href });
1505            document.sendGoogleTagManagerEvent('config', 'G-HPY9EXT6DM', { page: location.pathname, location: location.href });
1506        document.sendGoogleAnalyticsEvent = function(googleEvent) {
1507            document.sendGoogleTagManagerEvent('event', googleEvent.eventAction || googleEvent.hitType, {
1508                event_category: googleEvent.eventCategory,
1509                event_label: googleEvent.eventLabel,
1510                value: googleEvent.eventValue,
1511                page: googleEvent.page,
1512                location: googleEvent.location
1513            })
1514        };
1515
1516        document.addEventListener("DOMContentLoaded", function() {
1517            (function() {
1518                //If the page has an element with ID of auto-year-update the element will be populated with the current year.
1519                var date = new Date();
1520                var elements = document.getElementsByClassName('auto-year-update');
1521                var i;
1522                for (i = 0; i < elements.length; i++) {
1523                    elements[i].innerText = date.getFullYear();
1524                }
1525            })();
1526            if (window.divolteLp) {
1527                window.divolteLp('sendLpPageView', {});
1528            }
1529            if (window.eventBusLp) {
1530                window.eventBusLp('sendLpPageView', {});
1531            }
1532        });
1533    </script>
1533
1534
1535            <!-- Facebook Pixel Code -->
1536            
1536<script type="text/plain" data-consent-category="advertising">
vendor: 575 bytes, lines 1536-1545
1536
1537                !function(f,b,e,v,n,t,s)
1538                {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
1539                        n.callMethod.apply(n,arguments):n.queue.push(arguments)};
1540                    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
1541                    n.queue=[];t=b.createElement(e);t.async=!0;
1542                    t.src=v;s=b.getElementsByTagName(e)[0];
1543                    s.parentNode.insertBefore(t,s)}(window, document,'script',
1544                        'https://connect.facebook.net/en_US/fbevents.js');
1545                fbq('init', '
1545771609776960552
vendor: 58 bytes, lines 1545-1547
1545');
1546                fbq('track', 'PageView');
1547            
1547</script>
1547
1548            <noscript><img height="1" width="1" style="display:none"
1549                           src="https://www.facebook.com/tr?id=771609776960552&ev=PageView&noscript=1"
1550                /></noscript>
1551            <!-- End Facebook Pixel Code -->
1552
1553    
1553<script>
1554    // Function to dynamically load a script
1555    function loadScript(url, callback) {
1556        var script = document.createElement('script');
1557        script.type = 'text/javascript';
1558        script.src = url;
1559        script.defer = true;
1560        script.async = true;
1561        script.onload = callback;
1562        document.head.appendChild(script);
1563    }
1564
1565    // Function to dynamically load CSS file
1566    function loadCSS(url) {
1567        var link = document.createElement("link");
1568        link.rel = "stylesheet";
1569        link.href = url;
1570        document.head.appendChild(link);
1571    }
1572
1573    // Global methods / variables that can be accessed by element js
1574    window.luxuryPresence = {
1575        libs: {
1576            loadJs: loadScript,
1577            loadCss: loadCSS,
1578            jsLibsMap: {
1579                paroller: {
1580                    jsSrc: 'https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js',
1581                    isLoaded: false,
1582                },
1583                ionRangeSlider: {
1584                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js',
1585                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css',
1586                    isLoaded: false,
1587                    requires: ['jquery'],
1588                },
1589                splide: {
1590                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js',
1591                    cssSrc: 'https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css',
1592                    isLoaded: false,
1593                },
1594                wow: {
1595                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js',
1596                    isLoaded: false,
1597                },
1598                jquery: {
1599                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js',
1600                    isLoaded: false,
1601                },
1602                slick: {
1603                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js',
1604                    isLoaded: false,
1605                    requires: ['jquery'],
1606                },
1607                libphonenumber: {
1608                    jsSrc: 'https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js',
1609                    isLoaded: false,
1610                },
1611            },
1612        },
1613    };
1614    </script>
1614
1615    
1615<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>
1615
1616    
1616<script defer src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js"></script>
1616
1617    
1617<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/handlebars-intl.min.js"></script>
1617
1618    
1618<script defer src="https://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js"></script>
1618
1619    
1619<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>
1619
1620    
1620<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>
1620
1621    
1621<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>
1621
1622
1623    <!-- GOOGLE TRANSLATE SCRIPT -->
1624    
1624<script>
1625        function googleTranslateElementInit() {
1626            // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages = 'en,de,fr,ro,sk,pl'`
1627            // Language codes can be taken from here https://cloud.google.com/translate/docs/languages
1628            const DEFAULT_LANGUAGES = 'en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt';
1629            document.querySelectorAll('[data-type="TRANSLATE"]').forEach(function(translate){
1630                translate.innerText = '';
1631                new google.translate.TranslateElement({
1632                    pageLanguage: 'en',
1633                    layout: google.translate.TranslateElement.InlineLayout.SIMPLE,
1634                    includedLanguages: window.customLanguages || DEFAULT_LANGUAGES,
1635                }, translate);
1636            });
1637        }
1638    </script>
1638
1639    
1639<script defer src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
1639
1640
1641    <!-- GOOGLE TRANSLATE SCRIPT END-->
1642    
1642<script>
1643
1644        // UI helpers
1645        (function () {
1646
1647            function getSideMenu () {
1648                return document.querySelector('body > div.sidemenu');
1649            }
1650
1651            function sideMenuHide (instant) {
1652                var sideMenu = getSideMenu();
1653                if (!sideMenu || !sideMenu.classList.contains('visible')) {
1654                  return;
1655                }
1656                sideMenu.classList.remove('visible');
1657                sideMenu.dispatchEvent(new CustomEvent('lpui-hide', { detail: { instant: !!instant } }));
1658                window.dispatchEvent(new CustomEvent('lpui-sidemenu-hide', { detail: {instant: !!instant} }));
1659            }
1660
1661            function sideMenuShow () {
1662                var sideMenu = getSideMenu();
1663                if (!sideMenu || sideMenu.classList.contains('visible')) {
1664                  return;
1665                }
1666                sideMenu.classList.add('visible');
1667                sideMenu.dispatchEvent(new Event('lpui-show'));
1668                window.dispatchEvent(new Event('lpui-sidemenu-show'));
1669            }
1670
1671            function sideMenuToggle () {
1672                var sideMenu = getSideMenu();
1673                if (!sideMenu) {
1674                  return;
1675                }
1676                var isSideMenuVisible = sideMenu.classList.contains('visible');
1677                if (isSideMenuVisible) {
1678                    sideMenuHide();
1679                } else {
1680                    sideMenuShow();
1681                }
1682            }
1683
1684            var scrollLockRequests = {};
1685            window.__debug_scrollLockRequests = scrollLockRequests;
1686            var hideScrollStyles = ''+
1687                    'body {'+
1688                    'overflow: hidden;' +
1689                    '}';
1690            var hideScrollId = 'hide-body-scroll-style';
1691
1692            function scrollLock () {
1693                var style = document.createElement('style');
1694                style.id = hideScrollId;
1695                style.textContent = hideScrollStyles;
1696                document.head.appendChild(style);
1697                window.dispatchEvent(new Event('lpui-scroll-locked'));
1698            }
1699
1700            function scrollUnlock () {
1701                document.getElementById(hideScrollId)?.remove();
1702                window.dispatchEvent(new Event('lpui-scroll-unlocked'));
1703            }
1704
1705            function requestScrollLock (lockId) {
1706                var wasLocked = Object.keys(scrollLockRequests).length > 0;
1707                scrollLockRequests[lockId || '__anonymous_lock'] = true;
1708                if (!wasLocked) {
1709                    scrollLock();
1710                }
1711            }
1712
1713            function releaseScrollLock (lockId) {
1714                if (lockId) {
1715                    delete scrollLockRequests[lockId];
1716                    if (!Object.keys(scrollLockRequests).length) {
1717                        scrollUnlock();
1718                    }
1719                } else {
1720                    scrollLockRequests = {};
1721                    window.__debug_scrollLockRequests = scrollLockRequests;
1722                    scrollUnlock();
1723                }
1724            }
1725
1726            function showModal (modalId, options) {
1727                var modal = document.getElementById(modalId);
1728                if (!modal) {
1729                    return;
1730                }
1731
1732                if (!modal.classList.contains('visible')) {
1733                    modal.classList.add('visible');
1734                    if (options && options.scrollLock) {
1735                        window.lpUI.requestScrollLock(modalId);
1736                    }
1737                    modal.dispatchEvent(new Event('lpui-show'));
1738                    window.dispatchEvent(new CustomEvent('lpui-modal-show', { detail: { id: modalId } }));
1739                }
1740
1741                const visibleModals = document.querySelectorAll('.modal.visible');
1742
1743                if (visibleModals.length > 1) {
1744
1745                    const maxZIndex = Array.from(visibleModals).reduce((maxZIndex, modal) => {
1746                        const zIndex = window.getComputedStyle(modal).zIndex;
1747                        const parsedZIndex = zIndex !== 'auto' ? parseInt(zIndex) : 0;
1748                        return Math.max(maxZIndex, parsedZIndex);
1749                    }, 0);
1750
1751                    modal.style.zIndex = maxZIndex + 1;
1752                }
1753
1754            }
1755
1756            function _hideModal (modalEl) {
1757                if (!modalEl) {
1758                    return;
1759                }
1760                if (!modalEl.classList.contains('visible')) {
1761                    return;
1762                }
1763                modalEl.classList.remove('visible');
1764                modalEl.style.zIndex = '';
1765                modalEl.dispatchEvent(new Event('lpui-hide'));
1766                var modalId = modalEl.getAttribute('id');
1767                if (modalId) {
1768                    window.lpUI.releaseScrollLock(modalId);
1769                    window.dispatchEvent(new CustomEvent('lpui-modal-hide', { detail: { id: modalId } }));
1770                }
1771            }
1772
1773            function hideModal (modalId) {
1774                _hideModal(document.getElementById(modalId));
1775            }
1776
1777            function hideClosestModal (el) {
1778              const modal = el?.closest('.modal');
1779              if (!modal) {
1780                return;
1781              }
1782              if (modal.classList) {
1783                _hideModal(modal);
1784                return;
1785              }
1786              if (modal.length && modal[0].classList) {
1787                _hideModal(modal[0]);
1788              }
1789            }
1790
1791            window.lpUI = {
1792                sideMenuHide: sideMenuHide,
1793                sideMenuShow: sideMenuShow,
1794                sideMenuToggle: sideMenuToggle,
1795                requestScrollLock: requestScrollLock,
1796                releaseScrollLock: releaseScrollLock,
1797                showModal: showModal,
1798                hideModal: hideModal,
1799                hideClosestModal: hideClosestModal
1800            }
1801        })();
1802
1803        var stringifyPrimitive = function(v) {
1804            switch (typeof v) {
1805                case 'string':
1806                    return v;
1807
1808                case 'boolean':
1809                    return v ? 'true' : 'false';
1810
1811                case 'number':
1812                    return isFinite(v) ? v : '';
1813
1814                default:
1815                    return '';
1816            }
1817        };
1818
1819        function objectToQuerystring(obj, sep, eq, name) {
1820            // https://github.com/Gozala/querystring/blob/master/encode.js
1821            sep = sep || '&';
1822            eq = eq || '=';
1823            if (obj === null) {
1824                obj = undefined;
1825            }
1826
1827            if (typeof obj === 'object') {
1828                return Object.keys(obj).map(function(k) {
1829                    var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
1830                    if (Array.isArray(obj[k])) {
1831                        return obj[k].map(function(v) {
1832                            return ks + encodeURIComponent(stringifyPrimitive(v));
1833                        }).join(sep);
1834                    } else {
1835                        return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
1836                    }
1837                }).filter(Boolean).join(sep);
1838
1839            }
1840
1841            if (!name) return '';
1842            return encodeURIComponent(stringifyPrimitive(name)) + eq +
1843                    encodeURIComponent(stringifyPrimitive(obj));
1844        }
1845
1846        function getPath(url, options) {
1847            var parser = document.createElement('a');
1848            parser.href = url || '';
1849            var path = parser.pathname || '';
1850            if (path[0] !== '/') {
1851              // IE does not return path starting with a slash
1852              path = '/' + path;
1853            }
1854
1855            if (options && options.queryString) {
1856                path += parser.search;
1857            }
1858
1859            return path;
1860        }
1861
1862        function getMLSAutocomplete(keyword) {
1863            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1864            var query = {
1865                kind: 'listings',
1866                query: keyword
1867            };
1868
1869            return superagent
1870                .get(searchURL)
1871                .query(query)
1872                .then(function(res) {
1873                    var data = res.body || [];
1874                    /*
1875                        Of the format:
1876                          [{
1877                            "_index": "listing_auto_completes_production_20190723232720775",
1878                            "_type": "listing_auto_complete",
1879                            "_id": "235875624",
1880                            "_score": 0,
1881                            "status_modified_at": 1553250708,
1882                            "city": "Jupiter",
1883                            "price": 1335743,
1884                            "display_address": "10088 Calabrese Trail Unit: 9 Jupiter FL 33478",
1885                            "sold_price": null,
1886                            "id": 235875624,
1887                            "state": "FL",
1888                            "photo_urls": [
1889                              "http://cdn.photos.sparkplatform.com/fl/20190322153144208228000000-o.jpg"
1890                            ],
1891                            "status": "Pending"
1892                          }, ...]
1893                      */
1894
1895                    return data;
1896                });
1897        }
1898
1899        function getMLSAutocompleteWithFilters(keyword, filters = {}) {
1900            var searchURL = window.location.protocol + '//' + window.location.hostname + '/home-search/auto_complete';
1901
1902            return superagent
1903                .get(searchURL)
1904                .query({ kind: 'listings', query: keyword, ...filters })
1905                .then(function(res) {
1906                    /*
1907                        Of the format:
1908                          [{
1909                            "_index": "listing_auto_completes_production_20190723232720775",
1910                            "_type": "listing_auto_complete",
1911                            "_id": "235875624",
1912                            "_score": 0,
1913                            "status_modified_at": 1553250708,
1914                            "city": "Jupiter",
1915                            "price": 1335743,
1916                            "display_address": "10088 Calabrese Trail Unit: 9 Jupiter FL 33478",
1917                            "sold_price": null,
1918                            "id": 235875624,
1919                            "state": "FL",
1920                            "photo_urls": [
1921                              "http://cdn.photos.sparkplatform.com/fl/20190322153144208228000000-o.jpg"
1922                            ],
1923                            "status": "Pending"
1924                          }, ...]
1925                    */
1926                    return res.body || [];
1927                });
1928        }
1929
1930        function makeMlsLink(data) {
1931            // Code Dupe from utils/googlePlace
1932            // mapping of google data type to mls data type
1933            var mapping = {
1934                neighborhood: 'neighborhood',
1935                locality: 'place',
1936                administrative_area_level_2: 'county',
1937                administrative_area_level_1: 'state',
1938                postal_code: 'postalcode',
1939            };
1940
1941            function _filterTypes(types) {
1942                return types.filter(function(type) { return type !== 'political' });
1943            }
1944
1945            if (!data || !Object.keys(data).length) {
1946                return '/home-search/listings';
1947            }
1948
1949            var newData = {};
1950            _filterTypes(data.types).forEach(function(type) {
1951                if (mapping[type]) {
1952                    newData.search_type = mapping[type];
1953                }
1954            });
1955            newData.omnibox = data.formatted_address;
1956            data.address_components.forEach(function(component) {
1957                _filterTypes(component.types).forEach(function(type) {
1958                    if (mapping[type]) {
1959                        newData[mapping[type]] = component.long_name;
1960                    }
1961                });
1962            });
1963            var bounds = data.geometry.bounds;
1964            var convertedData = Object.assign(bounds, newData);
1965
1966            return '/home-search/listings?' + objectToQuerystring(convertedData);
1967        }
1968
1969        function debounce(func, wait) {
1970            let timeout;
1971            return function(...args) {
1972                const context = this;
1973                clearTimeout(timeout);
1974                timeout = setTimeout(() => func.apply(context, args), wait)
1975            }
1976        }
1977
1978        // Global methods / variables that can be accessed by element js
1979        window.luxuryPresence = {
1980            ...window.luxuryPresence,
1981            defaults: {
1982                companyId: 'b8978102-23d8-42d2-b1c5-bbed6df2e9fd',
1983                apiGatewayUrl: '/api-gw',
1984                routerUrl: '/api-nv',
1985                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\
1985n    }\n    propertiesCount(\n    \n      agentIds: $agentIds\n      teamIds: $teamIds\n      propertyId: $propertyId\n      propertyIds: $propertyIds\n      prioritizeIds: $prioritizeIds\n      companyId: $companyId\n      network: $network\n      networkId: $networkId\n      statusId: $statusId\n      statusIds: $statusIds\n      excludeStatusId: $excludeStatusId\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n      officeIds: $officeIds\n      addressState: $addressState\n      addressCity: $addressCity\n      developmentId: $developmentId\n      featuredListing: $featuredListing\n      leaseProperty: $leaseProperty\n      search: $search\n      searchTermMode: $searchTermMode\n      salesPriceGTE: $salesPriceGTE\n      salesPriceLTE: $salesPriceLTE\n      leasePriceGTE: $leasePriceGTE\n      leasePriceLTE: $leasePriceLTE\n      livingSpaceSizeGTE: $livingSpaceSizeGTE\n      livingSpaceSizeLTE: $livingSpaceSizeLTE\n      bathCountGTE: $bathCountGTE\n      bathCountLTE: $bathCountLTE\n      bedroomCountGTE: $bedroomCountGTE\n      bedroomCountLTE: $bedroomCountLTE\n      architectureStyle: $architectureStyle\n      lifestyle: $lifestyle\n      propertyTypeId: $propertyTypeId\n      propertyTypeIds: $propertyTypeIds\n      spaceTypeIds: $spaceTypeIds\n      tag: $tag\n      archived: $archived\n      globalProperty: $globalProperty\n      withGeo: $withGeo\n      openHouse: $openHouse\n      displayMLSListings: $displayMLSListings\n      advancedFilters: $advancedFilters\n      seasonalPriceId: $seasonalPriceId\n\n    ) {\n      count\n    }\n  }\n","pressReleases":"\n  query PressReleases (\n    $companyId: ID\n    $pressReleaseIds: [ID!]\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: String\n    $search: String\n    $categories: [String!]\n    $propertyId: [ID!]\n    $developmentId: [ID!]\n    $agentId: [ID!]\n    $teamId: [ID!]\n    $year: [Int!]\n  ) {\n    pressReleases (\n      companyId: $companyId\n      pressReleaseIds: $pressReleaseIds\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      categories: $categories\n      propertyId: $propertyId\n      developmentId: $developmentId\n      agentId: $agentId\n      teamId: $teamId\n      year: $year\n    ) {\n      items {\n        id\n        title\n        description\n        author\n        externalUrl\n        media {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        publishedAt\n        categories\n      }\n      total\n    }\n  }\n","posts":"\n  query Posts (\n    $companyId: String\n    $postId: [ID!]\n    $slug: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: String\n    $search: String\n    $featured: Boolean\n    $categoryId: [String!]\n    $neighborhoodId: [String!]\n  ) {\n    posts (\n      companyId: $companyId\n      postId: $postId\n      slug: $slug\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      featured: $featured\n      postStatusId: \"5f528253-abb7-484e-95c3-330269ac1102\"\n      categoryId: $categoryId\n      neighborhoodId: $neighborhoodId\n    ) {\n      items {\n        id\n        postId\n        title\n        subtitle\n        description\n        status: postStatus\n        featured\n        slug\n        categories {\n          id\n          name\n        }\n        createdAt\n        publishedAt\n        scheduledAt\n        createdBy {\n          ... on Agent {\n            firstName\n            lastName\n          }\n        }\n        customAuthor\n        media {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        seoTitle\n        seoDescription\n      }\n      total\n    }\n  }\n","testimonials":"\n  query Testimonials (\n    $companyId: String\n    $agentId: ID\n    $teamId: ID\n    $testimonialIds: [ID!]\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: String\n    $search: String\n  ) {\n    testimonials (\n      companyId: $companyId\n      agentId: $agentId\n      teamId: $teamId\n      testimonialIds: $testimonialIds\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n    ) {\n      items {\n        id\n        testimonialId\n        body\n        author\n        position\n        media {\n          smallUrl\n          mediumUrl\n          largeUrl\n          xLargeUrl\n          xxLargeUrl\n          height\n          width\n          altTagText\n        }\n        seoTitle\n        seoDescription\n        agents {\n          slug\n          email\n          firstName\n          lastName\n          avatar {\n            smallUrl\n            height\n            width\n          }\n        }\n      }\n      total\n    }\n  }\n","neighborhoods":"\n  query Neighborhoods (\n    $neighborhoodId: ID\n    $companyId: String\n    $search: String\n    $tag: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirectionEnum\n  ) {\n    neighborhoods (\n      neighborhoodId: $neighborhoodId\n      companyId: $companyId\n      search: $search\n      tag: $tag\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n    ) {\n      id\n      name\n      description\n      descriptionShort\n      slug\n      tags\n      googlePlaceData\n      mlsLink\n      createdAt\n      media {\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n        height\n        width\n      }\n      seoTitle\n      seoDescription\n    }\n    neighborhoodsCount(\n      companyId: $companyId\n      search: $search\n      tag: $tag\n    ) {\n      count\n    }\n  }\n","developments":"\n  query Developments (\n    $developmentId: ID\n    $companyId: String\n    $offset: Int\n    $limit: Int\n    $sort: String\n    $sortDir: SortDirectionEnum\n    $search: String\n    $tag: [String!]\n    $agentId: [ID!]\n    $neighborhoodId: ID\n    $neighborhoodIds: [ID!]\n  ) {\n    developments (\n      developmentId: $developmentId\n      companyId: $companyId\n      offset: $offset\n      limit: $limit\n      sort: $sort\n      sortDir: $sortDir\n      search: $search\n      tag: $tag\n      agentId: $agentId\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n    ) {\n      id\n      name\n      description\n      descriptionShort\n      slug\n      createdAt\n      media {\n        smallUrl\n        mediumUrl\n        largeUrl\n        xLargeUrl\n        xxLargeUrl\n        height\n        width\n      }\n      googlePlaceData\n      seoTitle\n      seoDescription\n      tags\n    }\n    developmentsCount(\n      companyId: $companyId\n      search: $search\n      tag: $tag\n      agentId: $agentId\n      neighborhoodId: $neighborhoodId\n      neighborhoodIds: $neighborhoodIds\n    ) {\n      count\n    }\n  }\n","pois":"\n  query PointsOfInterest (\n    $regionId: UUID!\n    $radiu
1985s: 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"},
1986                propertyPlaceholderImage: {"id":"df0e9335-d2fa-4d3d-9dea-a6d7a9c5dd3e","alt":null,"bytes":7645,"width":1920,"format":"png","height":1200,"shared":true,"curated":false,"duration":null,"largeUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/pbxhbdn3ukhxpmt8u3td","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/pbxhbdn3ukhxpmt8u3td","authorUrl":null,"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/pbxhbdn3ukhxpmt8u3td","sourceUrl":null,"__typename":"Media","altTagText":null,"authorName":null,"sourceName":"r2","description":null,"displayName":"property_alexa-glockner","originalUrl":"https://media-production.lp-cdn.com/cdn-cgi/image/format=auto,quality=85/https://media-production.lp-cdn.com/media/pbxhbdn3ukhxpmt8u3td","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/pbxhbdn3ukhxpmt8u3td","originalFileName":"Property_Alexa Glockner"}
1987            },
1988            objectToQuerystring: objectToQuerystring,
1989            getPath: getPath,
1990            getMLSAutocomplete: getMLSAutocomplete,
1991            getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters,
1992            makeMlsLink: makeMlsLink,
1993            debounce: debounce,
1994        };
1995
1996        var wowOffset = 100;
1997    </script>
1997
1998    
1998<script>
1999        (()=>{var e={},t={};t={getVideoFirstFrame(e){let t="https://res.cloudinary.com/";if(!e||!e.startsWith(t))return null;let i=e.replace(t,"").replace("f_auto:video","f_auto").split("/");if(-1===i[1].toLowerCase().indexOf("video"))return null;let s=i[i.length-1];s.lastIndexOf(".")>-1?s=`${s.slice(0,s.lastIndexOf("."))}.jpg`:s+=".jpg",i[i.length-1]=s;let r=3;"videos"===i[1].toLowerCase()&&""!==i[2]&&(r=2);let a=/^(?:[a-z]{1,3}|\$\w+)_\S+$/;for(;r<i.length-1&&a.test(i[r]);)r++;return i.splice(r,0,"so_0,eo_0"),t+i.join("/")}},e=function(e,{isEqual:i}){let s=[{field:"thumbnailUrl",w:320},{field:"smallUrl",w:960},{field:"mediumUrl",w:1280},{field:"largeUrl",w:1920},{field:"xLargeUrl",w:2560},{field:"xxLargeUrl",w:3456}],r=function(e,t,i){let s="en-US";if(!e)return"";if("string"==typeof e){let t=e.trim();if(/[^+\-0-9.]/.test(t))return e;if(!(e=parseFloat(t)))return""}let r="number"==typeof i?i:0,a=Number.isInteger(e)?0:r,o={minimumFractionDigits:a,maximumFractionDigits:a};return"USD"===t?`$${e.toLocaleString(s,o)}`:"CAD"===t?`$${e.toLocaleString(s,o)} CAD`:"EUR"===t?`\u{20AC}${e.toLocaleString(s,o)}`:"GBP"===t?`\xa3${e.toLocaleString(s,o)}`:"PERCENT"===t?`${e}%`:"number"==typeof i&&i>-1?e.toLocaleString(s,{maximumFractionDigits:i}):e.toLocaleString(s)},a=function(e){switch(e){case"DAY":return"daily";case"MONTH":return"monthly";case"WEEK":return"weekly";case"YEAR":return"yearly";case"QUARTER":return"quarterly";case"HALF_YEAR":return"semi-annually";case"NIGHTLY":return"nightly";case"SEASONAL":return"seasonally";default:return""}},o=function(e){switch(e){case"DAY":return"day";case"WEEK":return"wk";case"MONTH":return"mo";case"YEAR":return"yr";case"QUARTER":return"3 mos";case"HALF_YEAR":return"6 mos";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},n=function(e){switch(e){case"DAY":return"day";case"WEEK":return"week";case"MONTH":return"month";case"YEAR":return"year";case"QUARTER":return"quarter";case"HALF_YEAR":return"6 months";case"NIGHTLY":return"night";case"SEASONAL":return"season";default:return""}},l=function(e,t){let i,s,r=t||{};switch(r.mode){case"short":i=o(e),s=r.frequencySeparator||"/";break;case"standard":case"std":i=n(e),s=r.frequencySeparator||"/";break;default:i=a(e),s=r.frequencySeparator||" "}return i?r.frequencyTag||r.frequencyClass?`${s}<${r.frequencyTag||"span"}${r.frequencyClass?` class="${r.frequencyClass}"`:""}>${i}</${r.frequencyTag||"span"}>`:s+i:""};return{isEmpty(e,t){let i=!e||"string"==typeof e&&!e.trim()||!Object.keys(e).length;return t.fn?i?t.fn(this):t.inverse(this):i},ifEquals(e,t,s){return i(e,t)?s.fn(this):s.inverse(this)},"raw-helper":function(e){return e.fn()},striptags:e=>e?(e=(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,"")).replace(/&nbsp;/g," ")).replace(/<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g,""):"",striptagsLineBreaks:e=>e?(e=(e=(e=(e=e.replace(/<\!--(.|[\r\n])*?-\->/g,"")).replace(/<(xml|style|svg)("[^"]*"|'[^']*'|[^>])*>(.|[\r\n])*?<\/\1>/gi,"")).replace(/(<br\s*\/?>)|(<\/p\s*>)(?=.*(<\/p\s*>|<br\s*\/?>))/g,"&#10;")).replace(/&nbsp;/g," ")).replace(/<\/?("[^"]*"|'[^']*'|[^>])*(>|$)/g,""):"",truncate:(e,t,i)=>e?e.length>t?"string"==typeof i?e.slice(0,t-i.length)+i:e.slice(0,t):e:"",setSubArray(e=[],t,i,s,r){r.data.root[s]=e.slice(t,i)},formatAreaUnit(e){switch(e){case"ACRE":return"Acres";case"SQUARE_METER":return"Sq.M.";case"SQUARE_YARD":return"Sq.Yd.";default:return"Sq.Ft."}},formatFrequency:a,formatFrequencyShort:o,lpFormatFrequency:(e,t)=>l(e,t&&t.hash),subArray(e,t,i,s){return e>=t&&e<i?s.fn(this):s.inverse(this)},formatPropertyStatus(e,t,i){let s="";switch(e){case"SOLD":s="Sold";break;case"FOR_SALE":s="For Sale";break;case"COMING_SOON":s="Coming Soon";break;case"INACTIVE":s="Inactive";break;case"POCKET_LISTING":s="Pocket Listing";break;case"PENDING":s="Pending";break;case"UNDER_CONTRACT":s="Under Contract";break;case"ACTIVE_UNDER_CONTRACT":s="Active Under Contract";break;default:s=e}return("Sold"===s||"Leased"===s)&&t&&"string"==typeof i&&i&&(s+=` on ${i}`),s},formatGrade(e){switch(e){case"UNDERGRADUATE_COURSES":return"Undergrad";case"PRE_KINDERGARTEN":return"PreK";case"KINDERGARTEN":return"K";case"FIRST_GRADE":return"1st";case"SECOND_GRADE":return"2nd";case"THIRD_GRADE":return"3rd";case"FOURTH_GRADE":return"4th";case"FIFTH_GRADE":return"5th";case"SIXTH_GRADE":return"6th";case"SEVENTH_GRADE":return"7th";case"EIGHTH_GRADE":return"8th";case"NINTH_GRADE":return"9th";case"TENTH_GRADE":return"10th";case"ELEVENTH_GRADE":return"11th";case"TWELFTH_GRADE":return"12th";default:return""}},encodeURI:e=>encodeURI(e),encodeURIComponent:e=>encodeURIComponent(e),hbFormatDate(e,t){if(!e)return"";let i="current"===e?new Date:new Date(e);if(Number.isNaN(i.getTime()))return"";if("YYYY"===t||"year"===t)return`${i.getFullYear()}`;if("MM/DD/YY"===t){let e=i.getMonth()+1;return e<10&&(e=`0${e.toString()}`),`${e}/${i.getDate()}/${i.getFullYear().toString().substr(-2)}`}return`${["January","February","March","April","May","June","July","August","September","October","November","December"][i.getMonth()]} ${i.getDate()}, ${i.getFullYear()}`},openHousesFormat(e,t,i){if(!e||!t)return"";let s=e=>{let t=e.getHours();t>12&&(t-=12);let i=`${t}:${e.getMinutes()>9?e.getMinutes():"0"+e.getMinutes()}`;return e.getHours()>11?i+="PM":i+="AM",i},r="",a=e,o=t;
1999i&&(a=new Date(e).toLocaleString("en-US",{timeZone:i}),o=new Date(t).toLocaleString("en-US",{timeZone:i}),[,,,r]=new Date(t).toLocaleString("en-US",{timeZone:i,timeZoneName:"short"}).split(" "));let n=new Date(a),l=n.toLocaleDateString("en-US"),d=s(n),c=s(new Date(o));return`${l} ${d} - ${c} ${r}`},math:(e,t,i)=>(e=parseFloat(e),({"+":e+(i=parseFloat(i)),"-":e-i,"*":e*i,"/":e/i,"%":e%i})[t]),findByKey(e,t,i,s){let r=(e||[]).find(e=>e[t]===i);return s.fn(r)},capitalize(e,t,i){let s;return"string"==typeof e&&e.length&&(s=e.toLowerCase().split(t).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ").toString()),s},and:(...e)=>Array.prototype.slice.call(e).every(Boolean),or:(...e)=>Array.prototype.slice.call(e,0,-1).some(Boolean),not:e=>!e,orderByIds(t,i,s){let r="",a=null;s.data&&(a=e.createFrame(s.data));let o=(i||[]).filter(Boolean);if(o&&o.length){let e=0;r=o.reduce((i,r,o)=>{let n=(t||[]).find(e=>e.id===r);return n?(a&&(a.index=o-e),i+s.fn(n,{data:a})):(e+=1,i)},"")}else for(let e=0,i=(t||[]).length;e<i;e++)a&&(a.index=e),r+=s.fn(t[e],{data:a});return r},ifIn(e,t,i){return t&&t.indexOf(e)>-1?i.fn(this):i.inverse(this)},partial:(t,i)=>(e.registerPartial(t,e.compile(i.fn())),`
1999<script type="text/x-handlebars-template" class="${t} pagination-script">${i.fn()}<\/script>`),numCompare(e,t,i,s){return({"==":function(e,t){return e==t},"===":function(e,t){return e===t},"!=":function(e,t){return e!=t},"<":function(e,t){return e<t},">":function(e,t){return e>t},"<=":function(e,t){return e<=t},">=":function(e,t){return e>=t}})[i](e,t)?!s.fn||s.fn(this):!!s.fn&&s.inverse(this)},lpFormatNumber:r,arrayToHtmlList:(e,t)=>e.reduce((e,t)=>{try{if("object"==typeof t||null===t)return e;return e+=`<li>${t}</li>`}catch(e){}},""),join:(e,t,i)=>e&&e.join?e.join("string"==typeof t?t:", "):"",dedupe(t,i,s){let r=null,a=0,o=new Set;return s.data&&(r=e.createFrame(s.data)),(t||[]).reduce((e,t,n)=>{let l=i?t[i]:t;return!o.has(l)||i&&void 0===l?(o.add(l),r&&(r.index=n-a),e+s.fn(t,{data:r})):(a+=1,e)},"")},JSONstringify:(e,t)=>JSON.stringify(e),formatPropertyPrice(...t){let i=t[t.length-1].hash,s=t.length>1?t[0]:i.property,a=i.precision||0;t.length>2&&(i.mode=t[1]),i.mode||(i.mode="short");let o=t.length>3?t[2]:i.separator;if("string"!=typeof o&&(o=" | "),s.isPasswordProtected)return"Exclusive Listing";let n=t.length>4?t[3]:i.priceUponRequestText;if("string"!=typeof n&&(n="Price Upon Request"),s.priceUponRequest)return n;let d=s.salesPrice,c=null;"SOLD"!==s.status&&"Leased"!==s.status&&s.reducedPrice&&(i.reducedClass?c=s.reducedPrice:d=s.reducedPrice);let u="";c&&(u+=`<${i.reducedTag||"span"} class="${i.reducedClass}">${r(c,s.currency,a)}</${i.reducedTag||"span"}>`),d&&(d=r(d,s.currency,a),i.priceTag||i.priceClass?u+=`<${i.priceTag||"span"}${i.priceClass?` class="${i.priceClass}"`:""}>${d}</${i.priceTag||"span"}>`:u+=d);let h=s.leasePrice&&r(s.leasePrice,s.currency,a);if(h){u&&(u+=o);let e=`${h}${l(s.leasePeriod,i)}`;i.leaseTag||i.leaseClass?u+=`<${i.leaseTag||"span"}${i.leaseClass?` class="${i.leaseClass}"`:""}>${e}</${i.leaseTag||"span"}>`:u+=e}
1999return new e.SafeString(u)},mediaImage(t,i={}){if(!t)return;let{lazy:r,...a}=i.hash,o="",n="";if("string"==typeof t)o=t;else{let e={},{height:r,width:l,altTagText:d}=t;s.forEach(i=>{t[i.field]&&!e[t[i.field]]&&(e[t[i.field]]=i.w)});let c=Object.keys(e);if(!c.length)return;if(d&&(a.alt=d),r&&l&&(r>=l&&(a.class?a.class+=" portrait":a.class="portrait"),"setDims"in i.hash&&(a.width=l,a.height=r)),c.length>1&&l&&l<e[c[c.length-1]]){let t=c.findIndex(t=>e[t]>=l);c.splice(t+1),e[c[c.length-1]]=l}c.length>1&&(n=c.map(t=>`${t} ${e[t]}w`).join(", "),c.sort((t,i)=>Math.abs(e[t]-1280)-Math.abs(e[i]-1280))),o=c[0]}delete a.setDims,n||delete a.sizes,"alt"in a||(a.alt=""),!("loading"in a)&&(i?.data?.root?.sectionIndex>1||r)&&(a.loading="lazy");let l=Object.keys(a).map(t=>`${e.escapeExpression(t)}="${e.escapeExpression(a[t])}"`).join(" ");return new e.SafeString(`<img src="${o}"${n?` srcset="${n}"`:""}${l?` ${l}`:""}>`)},bgImage:e=>e?"string"==typeof e?e:e.largeUrl||e.url||"":"",concat(...e){let t="";for(let i in e)null!==e[i]&&void 0!==e[i]&&"object"!=typeof e[i]&&(t+=e[i]);return t},setVideoExtension(e,t){if(!e||!t)return"";let i=new URL(e);if("res.cloudinary.com"!==i.host)return i.pathname.endsWith(`.${t}`)?e:"";let s=i.pathname.lastIndexOf("."),r=i.pathname;return -1!==s&&(r=i.pathname.substr(0,s)),i.pathname=`${r}.${t}`,i.toString()},addVideoSources(e){if(!e)return"";if(!e.includes("res.cloudinary.com"))return`<source data-src="${e}">`;let t=e.replace(/\.(?:3gp|mpeg|mp4|m4v|m4p|ogv|ogg|mov|webm)$/,"");return[{format:"webm",codec:"vp9",htmlCodecs:";codecs=vp9"},{format:"mp4",codec:"h265",htmlCodecs:";codecs=hvc1"},{format:"mp4",codec:"h264",htmlCodecs:""}].map(e=>{let i=`${t.replace(/f_auto(?::video)?(?:,q_auto(?::\w+)?)?/,`f_${e.format},vc_${e.codec},q_auto:best,w_1920,c_limit`)}.${e.format}`;return`<source data-src="${i}" type="video/${e.format}${e.htmlCodecs}">`}).join("\n")},cloudinaryVideoFirstFrame:t.getVideoFirstFrame,initials(e,t){if(!e)return"";t?.hash?.endChar&&(e=e.split(t.hash.endChar)[0]);let i=+t?.hash?.maxChars||2,s=e.match(/\b\w/g)?.slice(0,i);return s?(t?.hash?.addText&&(s=s.map(e=>e+t.hash.addText)),s.join(t?.hash?.joinWith||"").toUpperCase()):""},normalizePhone(e){if(!e)return"";let t=String(e).trim();return(t.startsWith("+")?"+":"")+t.replace(/\D/g,"")}}};class i{constructor(e,t,i){if(this.config=e,this.window=t,this.document=i,!this.destroy)throw Error("Controllers must implement a deconstructor")}}let s="lp_lead_form_conversion_fired";function r(e,t){if(e&&t&&"function"==typeof t.sendGoogleTagManagerEvent&&!function(e){try{return"true"===e.sessionStorage.getItem(s)}catch{return!1}}(e))try{t.sendGoogleTagManagerEvent("event","generate_lead");try{e.sessionStorage.setItem(s,"true")}catch{}}catch{}}function a(e){return!!e&&(!!e.expired||Date.now()>=e.expiresAt)}let o="/api/v1/home-valuation";class n extends i{destroy(){}_cleanAddressString(e){if(!e||"string"!=typeof e)return"";let t=e.trim();if(t.includes("User entered address:")){let e=t.match(/User entered address:\s*\n?\s*([^\n]+)/);e&&e[1]&&(t=e[1].trim())}let i=t.indexOf(", call time frame:");return -1!==i&&(t=t.substring(0,i).trim()),t}_transformAddressComponents(e){let t=t=>(e.find(e=>e.componentType===t)||{}).componentName?.text,i={},s=t("street_number"),r=t("route"),a=t("administrative_area_level_1"),o=t("postal_code"),n=t("subpremise"),l=t("locality")||t("sublocality_level_1")||t("neighborhood");return s&&(i.streetNumber=s),r&&(i.streetName=r),l&&(i.city=l),a&&(i.state=a),o&&(i.zipcode=o),n&&(i.addressLine2=n),i}_extractAddressAndCoordinates(e){let t=null,i=null;if(e?.result){let{result:s}=e;s.address?.addressComponents&&(t=this._transformAddressComponents(s.address.addressComponents)),s.geocode?.location&&(i={latitude:s.geocode.location.latitude,longitude:s.geocode.location.longitude})}return{structuredAddress:t,coordinates:i}}_filterEmptyStrings(e){let t={};for(let[i,s]of Object.entries(e))""!==s&&null!=s&&(t[i]=s);return t}_getRawAddress(e){let t=e.activity.content||{},i=e.activity.comments_attributes?.[0]?.text;return[t.address,t["property-address"],t.property_address,t.Property_Address,i,t.message,t.homeValuationAddress,t.propertyAddress].map(e=>e&&this._cleanAddressString(e)).find(Boolean)||""}_logLeadEvent(e,t,i=null){let s={event:e,companyId:this.config.companyId,websiteId:this.config.websiteId,timestamp:new Date().toISOString(),hasEmail:!!t.activity?.author_email,hasAddress:!!this._getRawAddress(t)};if(i&&(s.errorMessage=i.userMessage||(i.status?`Request failed with status ${i.status}`:"An error occurred"),s.errorName=i.name,s.errorStatus=i.status),console.error(`[HomeValuation] ${e}`,JSON.stringify(s)),this.window.posthog)try{this.window.posthog.capture(e,s)}catch(e){console.error("[HomeValuation] PostHog capture failed:",e)}}_getUserFriendlyErrorMessage(e){return"AbortError"===e.name||e.message?.includes("timeout")?"Connection timed out. Please try again.":"TypeError"===e.name&&e.message?.includes("fetch")?"Unable to connect. Please check your internet connection and try again.":503===e.status||502===e.status||504===e.status?"Service temporarily unavailable. Please try again in a moment.":400===e.status?"Please check your information and try again.":"Something went wrong. Please try again or c
1999ontact us directly."}_formatStructuredAddress(e){if(!e||0===Object.keys(e).length)return"";let t=[];return t.push([e.streetNumber,e.streetName,e.addressLine2].filter(Boolean).join(" ")),t.push([[e.city,e.state].filter(Boolean).join(", "),e.zipcode].filter(Boolean).join(" ")),t.filter(Boolean).join(", ")}_buildHomeValuationData(e,t,i,s){let r=this._formatStructuredAddress(i)||this._getRawAddress(e);if(!r)throw Error("Unable to extract home valuation address from form data");let a={companyId:e.companyId,homeValuationAddress:r,homeValuationEstimate:t?new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",maximumFractionDigits:0,minimumFractionDigits:0}).format(t):null,websiteId:e.page.websiteId,sourceUrl:e.activity.source_url},o={leadEmailAddress:e.activity.author_email,leadFullName:e.activity.author_name,leadFirstName:e.activity.firstName,leadLastName:e.activity.lastName,leadPhoneNumber:e.activity.author_phone,parcelId:e.activity.content?.parcelId,resourceId:e.page.pageMeta?.resourceId,pageId:e.page.pageId,sourceResource:e.page.pageMeta?.s
1999ourceResource,pageElementId:e.page.pageMeta?.pageElementId,formId:e.page.pageMeta?.formId,utmSource:e.activity.content?.utm_source,utmMedium:e.activity.content?.utm_medium,utmCampaign:e.activity.content?.utm_campaign,utmTerm:e.activity.content?.utm_term,utmContent:e.activity.content?.utm_content,utmId:e.activity.content?.utm_id,timeToSell:e.activity.content?.timeToSell,lookingToBuy:e.activity.content?.lookingToBuy,consented:!!e.activity.content?.termsAccepted,referrer:e.referrer,content:e.activity.content||{},fields:e.fields||{}},n=this._filterEmptyStrings(o);return{...a,...n,...i&&{address:i},...s&&{coordinates:s}}}async _validateAddressSafely(e){if(!e)return console.error("Home valuation: No address found in form data"),null;try{return await this._validateAddressWithGoogleMaps(e)}catch(e){throw console.error("Error validating address with Google Maps:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}async _getHomeValuationEstimateSafely(e){try{return await this._getHomeValuationEstimate(e)}catch(e){throw console.error("Error getting home valuation estimate:",e),e.userMessage=this._getUserFriendlyErrorMessage(e),e}}_isSafeRedirectUrl(e){try{let{protocol:t}=new URL(e,this.window.location.href);return"https:"===t||"http:"===t}catch{return!1}}_parseResponsePayload(e){try{return e?JSON.parse(e):{}}catch{return{raw:e}}}_createResponseError(e,t){let i=Error(e&&"object"==typeof e&&Object.keys(e).length?e.message||JSON.stringify(e):"Request failed");return e&&"object"==typeof e&&Object.keys(e).length&&Object.assign(i,e),i.status=t,i}_resolveValuationApiBase(){let{config:e}=this;if(void 0!==e.valuationApiBase&&null!==e.valuationApiBase&&(""!==e.valuationApiBase||!e.isBuilder))return e.valuationApiBase;if(e.websiteApiGatewayUrl)return e.websiteApiGatewayUrl;throw Error("websiteApiGatewayUrl/valuationApiBase not configured for home valuation")}async _submitLead(e,t,i){let s=new AbortController,r=setTimeout(()=>s.abort(),1e4);try{let o=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t),signal:s.signal});clearTimeout(r);let n=await o.text(),l=this._parseResponsePayload(n);if(!o.ok)throw this._createResponseError(l,o.status);if(l&&"success"===l.status&&l.redirectUrl){if(a(i))return l;if(!this._isSafeRedirectUrl(l.redirectUrl))return console.error("Home valuation: refusing redirect to unsupported protocol"),l;return this.window.location.href=l.redirectUrl,{redirected:!0,url:l.redirectUrl}}return l}catch(e){throw clearTimeout(r),e}}async _submitHomeValuationRequest(e){let t=this._resolveValuationApiBase();this._logLeadEvent("home_valuation_submission_started",e);try{let i=this._getRawAddress(e),s=null;try{s=await this._validateAddressSafely(i)}catch(t){throw this._logLeadEvent("home_valuation_address_validation_failed",e,t),t}let r=null;try{r=await this._getHomeValuationEstimateSafely(s)}catch(t){this._logLeadEvent("home_valuation_estimate_failed",e,t),r=null}let{structuredAddress:a,coordinates:n}=this._extractAddressAndCoordinates(s),l=`${t}${o}`,d=this._buildHomeValuationData(e,r,a,n),c=await this._submitLead(l,d,e.deadline);return this._logLeadEvent("home_valuation_submission_success",e),c}catch(t){throw t.userMessage||(t.userMessage=this._getUserFriendlyErrorMessage(t)),this._logLeadEvent("home_valuation_submission_failed",e,t),t}}async _validateAddressWithGoogleMaps(e){let{config:t,window:i}=this,s=t.googleMapsAPIKey;if(!s&&i.luxuryPresence?.mapApiLoader&&(s=await i.luxuryPresence.mapApiLoader.getMapApiKey()),!s)throw Error("Google Maps API key not configured");let r=new AbortController,a=setTimeout(()=>r.abort(),1e4);try{let t=await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key=${s}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({address:{addressLines:[e]},enableUspsCass:!1}),signal:r.signal});if(clearTimeout(a),!t.ok){let e=Error(`Address validation failed: ${t.status}`);throw e.status=t.status,e}return t.json()}catch(e){throw clearTimeout(a),e}}_hasMandatoryAddressFields(e){return!!(e.streetNumber&&e.streetName&&e.city&&e.state&&e.zipcode)}_logMissingAddressFields(e){let t=[];e.streetNumber||t.push("streetNumber"),e.streetName||t.push("streetName"),e.city||t.push("city"),e.state||t.push("state"),e.zipcode||t.push("zipcode"),console.log("Home valuation estimate skipped - missing required fields:",t.join(", "),"Available fields:",Object.keys(e).join(", "))}_buildAddressQueryString(e){return Object.entries(e).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join("&")}async _getHomeValuationEstimate(e=null){let t=`${this._resolveValuationApiBase()}${o}`;if(!e?.result?.address?.addressComponents)return null;let i=this._transformAddressComponents(e.result.address.addressComponents);if(!this._hasMandatoryAddressFields(i))return this._logMissingAddressFields(i),null;let s=this._buildAddressQueryString(i),r=`${t}?${s}`,a=new AbortController,n=setTimeout(()=>a.abort(),1e4);try{let e=await fetch(r,{headers:{Accept:"application/json"},signal:a.signal});if(clearTimeout(n),!e.ok){let t=Error(`Home valuation estimate failed: ${e.status}`);throw t.status=e.status,t}let t=await e.json();return t?.valueDollars??null}catch(e){throw clearTimeout(n),e}}}let l="middleName",d="redirect-pending",c=["name","firstName","lastName",l,"email","phone","phoneNumber","source","message","mlsId","sourceUrl"],u="lp_map_key_failed",h="oauthSuccess",p={cookieyes:{eventName:"cookieyes_consent_update",hasAnalyticsConsent:e=>(function(e){let t=e.cookie.match(/cookieyes-consent=([^;
1999]+)/);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 m(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function g(e,t){t.forEach(t=>{let i=e[t];Array.isArray(i)&&0===i.length&&delete e[t]})}function y(e,t,i,s){let r=t.map(t=>(function e(t){return Array.isArray(t)?t.flatMap(t=>e(t)):"string"==typeof t?t.split(/\s+/).filter(Boolean):null==t?[]:[t]})(e[t])),a=s?.merge?r.flat():r.find(e=>e.length>0)??[];t.forEach(t=>{delete e[t]}),a.length>0&&(e[i]=[...new Set(a)])}function f(e){let t={...e};if(t.urlWebsite||(t.urlWebsite=null),t.urlYoutube=null,t.urlFacebook=null,t.urlInstagram=null,t.urlLinkedin=null,t.urlPodcast=null,t.urlTwitter=null,Array.isArray(e.socialLinks)){let i=[...e.socialLinks].sort((e,t)=>{let i=e.type?.toLowerCase()||"",s=t.type?.toLowerCase()||"";return i.localeCompare(s)});t.socialLinks=i;let s={youtube:"urlYoutube",facebook:"urlFacebook",instagram:"urlInstagram",linkedin:"urlLinkedin",podcast:"urlPodcast",twitter:"urlTwitter"};i.forEach(e=>{let i=s[e.type?.toLowerCase()??""];i&&(t[i]=e.link)})}return t}function w(e){return e&&Array.isArray(e)?e.map(e=>f(e)):e}function v(e){let{region:t}=e;if(!m(t))return e;let{schools:i,pois:s,...r}=t,a={...r,schools:m(i)?i.data??[]:[],...Array.isArray(s)?{pois:s.map(e=>({...e,category:"string"==typeof e.category?e.category.toUpperCase():e.category}))}:{}};return{...e,region:a}}function b(e){return e&&Array.isArray(e)?e.map(e=>v(e)):e}function S(e){let t=e.featuresAndAmenities;if(!Array.isArray(t))return e;let i=t.map(e=>({featureIds:e.featureIds??[],features:e.features??[],description:e.description}));return{...e,featuresAndAmenities:i}}function _(e){return e&&Array.isArray(e)?e.map(e=>S(e)):e}function E(e,t){return m(e)?t(e):e}function I(e,t){return Array.isArray(e)?t(e):e}let A=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}}}({}),L=new class extends i{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 >
1999 .modal"),e.modals.forEach(e=>{this._attachModalHandler(e)})}catch(e){console.log(e)}}destroy(){let{document:e}=this;this.exitModalEventListeners.forEach(t=>{e.removeEventListener("mouseout",t)}),this.modals=[],this.exitModalTriggered={},this.exitModalEventListeners=[]}setModalWithExpiry(e){let{window:t}=this,i=new Date().getTime()+864e5,s=`modal-controller-${e}`;try{t.localStorage.setItem(s,JSON.stringify(i))}catch(e){}}setLoginState(){let{window:e}=this;try{e.localStorage.setItem("isSignedUp","true")}catch(e){}}getModalWithExpiry(e){let{window:t}=this,i=t.localStorage,s=i.getItem(`modal-controller-${e}`);if(!s)return!1;let r=JSON.parse(s);return!(new Date().getTime()>r)||(i.removeItem(`modal-controller-${e}`),!1)}show(e,t={}){let{window:i}=this,s=this.getModalWithExpiry(e);(e&&!s||!0===t.forced)&&(i.lpUI.showModal(`modal-${e}`,t),this.setModalWithExpiry(e))}_attachModalHandler(e){let{pageId:t}=this,{trigger:i,pageSpecific:s}=e;(!s||e.pages.map(e=>e.pageId).includes(t))&&("EXIT"===i?this._exitModalHandler(e):"TIMER"===i?this._timerModalHandler(e):"FORCED"===i&&this._forcedModalHandler(e))}_exitModalHandler(e){let t=this,{document:i,exitModalTriggered:s}=this,{modalId:r}=e;function a(e){!s[r]&&(e.toElement||e.relatedTarget||(t.show(r),s[r]=!0))}i.addEventListener("mouseout",a),this.exitModalEventListeners.push(a)}_timerModalHandler(e){let{modalId:t,timerDelay:i}=e;setTimeout(()=>{this.show(t)},i)}_forcedModalHandler(e){let{modalId:t}=e,{window:i,document:s}=this;if("true"!==i.localStorage.getItem("isSignedUp")){let e=s.querySelector(`#modal-${t}`),r=e?.querySelector("form"),a=r?.dataset.delay||2e3;r.addEventListener("formsubmitted",()=>{this.setLoginState()}),i.addEventListener("oauthSuccess",()=>{this.setLoginState(),r.classList.add("success"),setTimeout(()=>{i.lpUI.hideModal(`modal-${t}`),r.reset(),r.classList.remove("success")},a)}),this.show(t,{forced:!0})}}}(A,window,document),$=new class extends i{constructor(e,t,i){super(e,t,i),this._boundClickHandler=this._buttonClickHandler.bind(this)}initialize(e={}){try{let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler),e.body.addEventListener("click",this._boundClickHandler)}catch(e){console.error(e)}}destroy(){let{document:e}=this;e.body.removeEventListener("click",this._boundClickHandler)}_buttonClickHandler(e){this._handleButtonClick(e).catch(e=>console.error(e))}async _handleButtonClick(e){let{window:t,document:i}=this,s=e.target.closest("button, a");if(!s)return;let r=s.dataset.type||"",a=s.href||s.dataset.href||"",o=s.target||"",{submit:n}=s.dataset;if(n){try{await this._handleSubmit(s)}catch(e){console.error(e)}((e,t=!1)=>{if(e){if(t)return window.open(e);window.location.assign(e)}})(a,"_blank"===o)}if(this._trackConversion(s),"VIDEO"===r)return void this._handleVideoButton(s);if("CONTACT_US"===r)return void this._handleContactUsButton(s);if("SUBSCRIBE"===r)return void t.lpUI.showModal("modal-global-subscribe");if("MY_ACCOUNT"===r)return void t.lpUI.showModal("modal-global-my-account");if("SHARE_POPUP"===r){let t=s.querySelector(".share-popup");t&&(t.style.display="flex"),e.stopPropagation();return}if("MODAL_"===r.substring(0,6)){let e=r.substring(6);t.lpUI.showModal(`modal-${e}`);return}if(a?.startsWith("mailto:")){let e=a.substring(7);i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Email",eventValue:e})}else if(a?.startsWith("tel:")){let e=a.substring(4);i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"Phone",eventValue:e})}}async _handleSubmit(e){let t=e.closest("form"),{window:i}=this;return t?await i.luxuryPresence.contactForms.submitForm(t):null}_getVimeoSrc(e){if(!e||!e.includes("vimeo.com")||e.length>2e3)return null;let t=e.match(/(?:(?:www\.)?vimeo\.com\/(?:showcase\/\d+(?:\/video\/|\?video[=/])|channels\/(?:\w+\/)?|groups\/(?:[^/]*)\/videos\/|)|player\.vimeo\.com\/video\/)(\d+)(?:(?:\?.*&*h=|\/)+([\d,a-f]+))?/);if(!t)return null;let[,i,s]=t,r=`https://player.vimeo.com/video/${i}?`;return s&&(r+=`h=${s}&`),r+="autoplay=1"}_handleVideoButton(e){let{document:t}=this,i=e.closest("section"),{src:s}=e.dataset,r="";if(s&&(s.includes("youtube.com")||s.includes("youtu.be"))&&!s.includes("youtube.com/embed")){let e=s.match(/(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v=)
1999)|youtu.be\/)([a-zA-Z0-9_-]{6,11})/);e&&(r=e[1])}let a=this._getVimeoSrc(s);if(r?s=`https://youtube.com/embed/${r}?autoplay=1&controls=0`:a&&(s=a),!s||!i)return;let o=s.endsWith(".mp4")||s.endsWith(".webm")||s.includes("cloudinary.com"),n=`
2000      <div id="modal-${i.id}" class="modal visible">
2001        <div class="modal-content">
2002          <div class="lightbox-video">
2003            <div class="video-player">
2004              <div class="embed-container">
2005                ${o?`<video controls autoplay src="${s}"></video>`:`<iframe frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" width="100%" height="100%" src="${s}"></iframe>`}
2006              </div>
2007            </div>
2008          </div>
2009        </div>
2010        <button class="close lp-close" type="button" aria-label="close modal"><span class="lp-close-icon" aria-hidden="true"></span></button>
2011      </div>
2012    `;t.body.insertAdjacentHTML("beforeend",n);let l=t.getElementById(`modal-${i.id}`);l.querySelector(".close").addEventListener("click",()=>{l.remove()})}_handleContactUsButton(e){let{window:t,document:i}=this;i.sendGoogleAnalyticsEvent({hitType:"event",eventCategory:"button",eventAction:"click",eventLabel:"contact"}),t.lpUI.showModal("modal-global-contact-us",{scrollLock:!0})}_trackConversion(e){let{window:t,document:i}=this,{gtagConversionId:s,gtagConversionLabel:r,fbEventName:a}=e.dataset;if(s&&r){t.dataLayer&&t.dataLayer.length&&(t.dataLayer.some(e=>e.length&&"config"===e[0]&&e[1]===s)||i.sendGoogleTagManagerEvent("config",s));let e=`${s}/${r}`;i.sendGoogleTagManagerEvent("event","conversion",{send_to:e})}t.fbq&&a&&t.fbq("track",a,{})}}(A,window,document),x=new class extends i{constructor(e,t,i){super(e,t,i),this.validatedForms=[]}initialize(e={}){try{let{window:t,document:i}=this,{selector:s}=e,r=[];if(r=s?i.querySelectorAll(`${s} form[data-type="contact-form"]`):i.querySelectorAll('form[data-type="contact-form"]'),i.querySelectorAll('input[type="tel"]').length&&!t.libphonenumber&&t?.luxuryPresence?.libs){let{loadJs:e,jsLibsMap:i}=t.luxuryPresence.libs,{libphonenumber:s}=i;e(s.jsSrc,this.attachValidation.bind(this,r))}else this.attachValidation(r);this.validatedForms=this.validatedForms.concat(r)}catch(e){console.log(e)}}destroy(){this.validatedForms=[]}attachValidation(e){e.forEach(e=>{e.querySelectorAll("input, select, textarea").forEach(e=>{this.applyFieldValidation(e)})})}applyFieldValidation(e){"tel"===e.getAttribute("type")&&this._applyPhoneValidation(e)}_applyPhoneValidation(e){let{window:t}=this;if(t.libphonenumber){let i=t.libphonenumber.isValidPhoneNumber;e.addEventListener("keyup",function(){if(this.hasAttribute("required")||this.value.replace(/\s/g,"").length)try{let e=this.value;i(e,"US")?this.setCustomValidity(""):this.setCustomValidity("Please enter a valid phone number.")}catch(e){this.setCustomValidity("Please enter a valid phone number.")}else this.setCustomValidity("")})}}}(A,window,document),T=new class extends i{constructor(e,t,i){super(e,t,i),this.forms=[],this.homeValuationService=new n(e,t,i)}initialize(e={}){try{let{document:t}=this,{selector:i}=e,s=[];(s=i?t.querySelectorAll(`${i} form[data-type="contact-form"]`):t.querySelectorAll('form[data-type="contact-form"]')).forEach(e=>{this._attachSubmitHandler(e)}),this.forms=this.forms.concat(s)}catch(e){console.log(e)}}destroy(){this.forms=[]}submitForm(e){this._handleSubmit(null,e).catch(e=>console.error(e))}_attachValidation(e){let{window:t}=this;e.querySelectorAll("input, select, textarea").forEach(e=>{t.luxuryPresence.validation.applyFieldValidation(e)})}_attachSubmitHandler(e){e.addEventListener("submit",t=>this._handleSubmit(t,e))}_extractFormValues(e){let t=new FormData(e),i={},s=[],r=/^name(?:-\d+)?$/;return t.forEach((e,t)=>{if("string"==typeof e){let a=e.trim();r.test(t)&&a&&s.push(a);let o=i[t];i[t]=o?`${o} ${a}`:a}else i[t]=e}),s.length?i.name=s.join(" ").trim():!i.name&&i.firstName&&(i.name=i.firstName,i.lastName&&(i.name+=` ${i.lastName}`)),this._deriveNameParts(i)}_deriveNameParts(e){if(e.firstName||!e.name)return e;let t=e.name.indexOf(" ");return -1===t?{...e,firstName:e.name}:{...e,firstName:e.name.slice(0,t),lastName:e.lastName||e.name.slice(t+1).trim()}}_buildSubmissionData(e,t,i){let{window:s,config:r}=this,a=Object.keys(e).filter(e=>!c.includes(e)).reduce((t,i)=>(t[i]=e[i],t),{}),{pageId:o,companyId:n,websiteId:l,pageMeta:d}=r,u=s.localStorage.getItem("utm_vars")||"{}",h=s.localStorage.getItem("referrer")||"",p=this._getFormId(i);return{activity:{author_email:e.email,author_name:e.name,firstName:e.firstName||void 0,lastName:e.lastName||void 0,author_phone:e.phone||e.phoneNumber,activity_source:e.source||"CONTACT_INQUIRY",comments_attributes:[{text:e.message||void 0}],source_url:s.location.href,content:{...a,...JSON.parse(u)}},page:{pageId:o,companyId:n,websiteId:l,pageMeta:{...d,formId:p}},companyId:n,referrer:h,fields:t}}_handleSubmissionSuccess(e){let{window:t}=this,i=e.dataset.delay||2e3;e.classList.remove("loading"),e.classList.remove("error"),e.classList.add("success"),e.querySelectorAll(".success").forEach(e
2012=>e.classList.remove("hide")),e.dispatchEvent(new Event("formsubmitted")),setTimeout(()=>{t.lpUI.hideClosestModal(e),e.reset(),t.lpUI.sideMenuHide(),e.querySelectorAll(".success").forEach(e=>e.classList.add("hide")),e.classList.remove("success")},i)}async _handleSubmit(e,t){if(e&&e.preventDefault(),!t.classList.contains("loading")){this._hideSubmissionError(t),t.classList.remove("error"),t.classList.add("loading");try{let e=this._extractFormValues(t);if(e.middleName)return void t.classList.remove("loading");let i=this._getFields(t),s=this._buildSubmissionData(e,i,t);r(this.window,this.document);let a=await this._waitForLeadSubmit(e=>this._submitLeadRequest(s,e));if(this._sendGAEvent(s),a?.redirected)return void this._showRedirectPending(t);this._handleSubmissionSuccess(t)}catch(e){console.error("Form submission failed:",e),t.dispatchEvent(new Event("formsubmiterror")),t.classList.remove("loading"),t.classList.add("error"),e.userMessage?this._showSubmissionError(t,e.userMessage):this._showSubmissionError(t,"Something went wrong. Please try again.")}}}async _waitForLeadSubmit(e){let t,i={expired:!1,expiresAt:Date.now()+6e3},s=new Promise(e=>{t=setTimeout(()=>{i.expired=!0,e(null)},6e3)}),r=e(i).catch(e=>{if(a(i))return null;throw e});try{return await Promise.race([r,s])}finally{clearTimeout(t)}}_showRedirectPending(e){if(e.classList.add(d),e.querySelector(`.${d}__indicator`))return;let t=this.document.createElement("div");t.className=`${d}__indicator`,t.setAttribute("role","status"),t.setAttribute("aria-label","Loading"),t.innerHTML='<span class="lp-i lp-i--spinner lp-i--pulse" aria-hidden="true"></span>',e.appendChild(t)}_aliasUserWithEventBus(e){try{if(!this.window.eventBusProvider?.alias||!this.window.eventBusProvider?.isIdentified||!this.window.eventBusProvider?.getDistinctId||!this.window.LuxuryPresenceEventBus?.generateUUIDv5FromCompanyEmail)return;if(this.window.eventBusProvider.isIdentified())return void console.log("[EventBus] User already identified, skipping alias");let t=e.activity?.author_email,{companyId:i}=this.config;if(!t||!i)return void console.warn("[EventBus] Missing required data for user alias");let s=this.window.eventBusProvider.getDistinctId();if(!s)return void console.warn("[EventBus] No anonymous ID available for alias");let r=this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(i,t);this.window.eventBusProvider.alias({anonId:s,canonicalId:r}),console.log("[EventBus] User aliased with canonical ID")}catch(e){console.error("[EventBus] User alias failed:",e)}}async _submitLeadRequest(e,t){let{config:i}=this;return(this._aliasUserWithEventBus(e),i.myhomeDashboardEnabled&&(e.activity?.activity_source==="HOME_VALUATION"||e.activity?.activity_source==="HOME_VALUE"))?this.homeValuationService._submitHomeValuationRequest({...e,deadline:t}):fetch(`${i.leadIngesterUrl}/api/v1/leads`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.ok?e.json():e.json().then(e=>{throw e}))}_sendGAEvent(e){let{document:t}=this,i={hitType:"event",eventCategory:"button",eventAction:"click"};switch(e.activity.activity_source){case"NEWSLETTER_SIGNUP":i.eventLabel="Newsletter",t.sendGoogleTagManagerEvent("event","newsletter_signup");break;case"HOME_SEARCH":i.eventLabel="HomeSearch",t.sendGoogleTagManagerEvent("event","home_search");break;case"HOME_VALUE":case"HOME_VALUATION":i.eventLabel="HomeValue",t.sendGoogleTagManagerEvent("event","home_valuation");break;case"EBOOK":i.eventLabel="Ebook",t.sendGoogleTagManagerEvent("event","ebook_download");break;default:i={hitType:"pageview",page:"/thank-you"},t.sendGoogleTagManagerEvent("event","contact_inquiry")}t.sendGoogleAnalyticsEvent(i)}_getFields(e){let t=e.querySelectorAll("input, select, textarea"),i={};return t.forEach(t=>{let{id:s,name:r,type:a}=t;if(r===l)return!0;let o="";if(s){let i=e.querySelector(`label[for='${s}']`);i?o=i.textContent.trim():t.placeholder&&(o=t.placeholder.trim())}i[r]={label:o,type:t.tagName,inputType:"INPUT"===t.tagName?a:"text"}}),i}_getFormId(e){let t=e.closest("section[id^='section-'], footer[id], .modal[id^='modal-']");return t?.id?this._cleanFormId(t.id):""}_cleanFormId(e){for(let t of["section-","modal-"])if(e.startsWith(t))return e.substring(t.length);return e}_showSubmissionError(e,t){let i=e.querySelector(".submission-error-message");i||((i=this.document.createElement("div")).className="submission-error-message",i.setAttribute("role","alert"),e.appendChild(i)),i.textContent=t||"Something went wrong. Please try again.",i.style.display="block"}_hideSubmissionError(e){let t=e.querySelector(".submission-error-message");t&&(t.style.display="none")}}(A,window,document),k=new class extends i{constructor(e,t,i){super(e,t,i),this.retries=3,this.callbacks=[],this.id=`__googleMapsScriptId${Date.now()}`,this._apiKey="",this.reset()}set apiKey(e){this._apiKey=e,this.config.setGoogleMapsAPIKey(e)}get apiKey(){return this._apiKey}reset(){this.deleteScript(),this.done=!1,this.loading=!1,this.failed=!1,this.errors=[],this.onerrorEvent=null}destroy(){this.reset()}async getMapApiKey(){if(this.apiKey)return this.apiKey;let e=this._hadPreviousFailure(),t=!1;for(let i=1;i<=3;i+=1){let s=e&&!t;try{let e=await fetch(this._getMapKeyUrl(i,s));if(t=t||s,this._setFailureFlag(!1),!e.ok)throw Error(`Failed to fetch API key: ${e.status}`);let r=await e.text();if(!r)return"";return this.apiKey=r,this.apiKey}catch(e){console.error(e),i<3&&await this._delay(300*2**(i-1))}}return this._setFailureFlag(!0),""}_getMapKeyUrl(e,t){let i=[];e>1&&i.push(`attempt=${e}`),t&&i.push("recovered_after_failure=1");let s=i.length?`?${i.join("&")}`:"";return`${this._getBaseUrl()}/api/v1/map${s}`}_hadPreviousFailure(){try{return"1"===this.window.sessionStorage.getItem(u)}catch(e){return!1}}_setFailureFlag(e){try{e?this.window.sessionStorage.setItem(u,"1"):this.window.sessionStorage.removeItem(u)}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");
2012let t="https://maps.googleapis.com/maps/api/js";return t+`?callback=__googleMapsCallback&key=${e}&libraries=places`}async setScript(){let e;if(this.document.getElementById(this.id))return void this.callback();try{e=await this.createUrl()}catch(e){console.error(e),this.failed=!0,this.loading=!1,this.onerrorEvent=e,this.callback();return}let t=this.document.createElement("script");t.id=this.id,t.type="text/javascript",t.src=e,t.onerror=this.loadErrorCallback.bind(this),t.defer=!0,t.async=!0,this.document.head.appendChild(t)}loadErrorCallback(e){if(this.errors.push(e),this.errors.length<=this.retries){let e=this.errors.length*2**this.errors.length;console.log(`Failed to load Google Maps script, retrying in ${e} ms.`),setTimeout(()=>{this.deleteScript(),this.setScript().catch(e=>console.error(e))},e)}else this.failed=!0,this.onerrorEvent=e,this.callback()}deleteScript(){let e=this.document.getElementById(this.id);e&&e.remove()}load(){return this.loadPromise()}loadPromise(){return new Promise((e,t)=>{this.loadCallback(i=>{i?t(i):e()})})}loadCallback(e){this.callbacks.push(e),this.execute()}setCallback(){this.window.__googleMapsCallback=this.callback.bind(this)}resetIfRetryingFailed(){this.failed&&this.reset()}callback(){this.done=!0,this.loading=!1,this.callbacks.forEach(e=>{e(this.onerrorEvent)}),this.callbacks=[]}execute(){this.window.google&&this.window.google.maps&&this.window.google.maps.version&&this.callback(),this.resetIfRetryingFailed(),this.done?this.callback():this.loading||(this.loading=!0,this.setCallback(),this.setScript().catch(e=>console.error(e)))}_getBaseUrl(){let{isBuilder:e,websiteApiGatewayUrl:t}=this.config;return e?t:""}resizeStaticMapDimensions(e,t){if(e<=1024&&t<=1024)return{width:e,height:t};let i=Math.min(1024/e,1024/t);return{width:parseInt(e*i),height:parseInt(t*i)}}convertThemeToStaticApiUrl(e){return e.map(e=>{let t=e.stylers.reduce((e,t)=>{let i=t.visibility?`visibility:${t.visibility}`:"",s=t.color?`color:${t.color.replace("#","0x")}`:"",r=t.lightness?`lightness:${t.lightness}`:"";return`${e}|${i}${s}${r}`},""),i=e.elementType?`|element:${e.elementType}`:"";return`feature:${e.featureType}${i}${t}`})}async getMapApiSignedUrl(e){try{let t=await fetch(`${this._getBaseUrl()}/api/v1/map/signature?${e}`);if(!t.ok)throw Error("Failed to fetch signed URL");let{url:i}=await t.json();return i}catch(e){return console.error(e),""}}generateStaticMapUrl(e,t,i,s,r,a){let{width:o,height:n}=this.resizeStaticMapDimensions(r,a),l={center:`${e},${t}`,zoom:i,scale:2,size:`${o}x${n}`,key:this.apiKey};s&&(l.style=this.convertThemeToStaticApiUrl(s));let d=new URLSearchParams;return Object.entries(l).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>d.append(e,t.toString())):d.append(e,t.toString())}),`https://maps.googleapis.com/maps/api/staticmap?${d.toString()}`}async generateDigitallySignedStaticMapUrl({srcWidth:e,srcHeight:t,theme:i,...s}){let{width:r,height:a}=this.resizeStaticMapDimensions(e,t),o={...s,size:`${r}x${a}`};i&&(o.style=this.convertThemeToStaticApiUrl(i));let n=new URLSearchParams;Object.entries(o).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.append(e,t.toString())):n.append(e,t.toString())});let l=n.toString();try{return await this.getMapApiSignedUrl(l)}catch(e){return console.error(e),""}}}(A,window,document),C=new class extends i{destroy(){}updateQueryString(e,t,i){i||(i=this.window.location.href);let s=RegExp(`([?&])${e}=.*?(&|#|$)`,"i"),r="";null!=t&&(Array.isArray(t)?t.length&&(r=this.serializeArray(e,t)):"object"==typeof t?(s=RegExp(`([?&])${e}\\[[^=]*\\]=.*?(&|#|$)`,"i"),r=this.serializeObj(t,"",e)):r=`${e}=${encodeURIComponent(t)}`);let a=i.split("#"),o=a[0];if(s.test(i)){let e=o;for(r=r?`$1${r}$2`:"$1";s.test(e);)o=e.replace(s,r),e=e.replace(s,"$1");o=o.replace(/(&|\?)$/,"")}else if(r){let e=-1!==o.indexOf("?")?"&":"?";o+=`${e}${r}`}return void 0!==a[1]&&null!==a[1]&&(o+=`#${a[1]}`),o}getParameterByName(e,t){t||(t=this.window.location.href),e=e.replace(/[[\]]/g,"\\$&");let i=RegExp(`[?&]${e}(=([^&#]*)|&|#|$)`),s=Array.from(RegExp.prototype[Symbol.matchAll].call(i,t)).flat();if(!s.length){let i=RegExp(`[?&]${e}(\\[.*?\\])=(.*?)(?=&|#|$)`,"g");return s=Array.from(RegExp.prototype[Symbol.matchAll].call(i,t)).flat(),this._parseParamToObject(s,"advancedFilters"===e)}return s.length>3?s.reduce((e,t,i)=>((i+1)%3==0&&e.push(decodeURIComponent(t.replace(/\+/g," "))),e),[]):s[2]?decode
2012URIComponent(s[2].replace(/\+/g," ")):""}makePageKey(e){return e.replace("section-","").replace(/-/g,"")}makeParamKey(e,t){return e.global?e.urlKey:`${t}-${e.urlKey}`}deserializeParams(e,t){let i={},s=this.makePageKey(t),r=this.getParameterByName(s);return r&&(i.page=parseInt(r)),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,s),r=this.getParameterByName(t);if("int"===e.type)isFinite(r=parseInt(r))||(r=null);else if("bool"===e.type||"boolean"===e.type)r="true"===r||"false"!==r&&null;else if("json"===e.type)try{r=JSON.parse(r)}catch(e){}i[e.formKey||e.param]=r}),i}serializeParams(e,t,i){let s=this.window.location.href,r=this.makePageKey(t);return s=this.updateQueryString(r,i.page,s),Array.isArray(e)&&e.forEach(e=>{let t=this.makeParamKey(e,r),a=i[e.formKey||e.param];"json"===e.type&&null!=a&&(a=JSON.stringify(a)),s=this.updateQueryString(t,a,s)}),s}formatSliderAtom(e,t=""){return t+(Number.isInteger(e)?e:e.toFixed(2))}formatSliderValue(e,t="",i=""){return e<1e3?this.formatSliderAtom(e,t):e<1e6?`${this.formatSliderAtom(e/1e3,t)}${i}K`:`${this.formatSliderAtom(e/1e6,t)}${i}M`}formatSliderPriceRange(e,t,i,s){return t.min===e&&0!==e?`${s.lowPrefix}${this.formatSliderValue(e,i," ")}`:t.max===e?`${this.formatSliderValue(e,i," ")}${s.highSuffix}`:`${this.formatSliderValue(e,i," ")}`}formatSliderAreaRange(e,t,i,s){return t.min===e&&0!==e?`${s.lowPrefix}${this.formatSliderValue(e)} ${i}`:t.max===e?`${this.formatSliderValue(e)}${s.highSuffix} ${i}`:`${this.formatSliderValue(e)} ${i}`}getSearchFormValues(e){let{queryElement:t,priceSliderElement:i,areaSliderElement:s,neighborhoodSelect:r}=e,a={};if(t&&(a.search=t.value||null),i){let e=i.value.split(";"),t=parseInt(i.dataset.min),s=parseInt(i.dataset.max),r=parseInt(e[0]),o=parseInt(e[1]);a.priceMin=r!==t?r:null,a.priceMax=o!==s?o:null}if(s){let e=s.value.split(";"),t=parseInt(s.dataset.min),i=parseInt(s.dataset.max),r=parseInt(e[0]),o=parseInt(e[1]);a.areaMin=r!==t?r:null,a.areaMax=o!==i?o:null}return r&&(a.neighborhoodId=r.value||null),a}serializeObj(e,t="",i=""){let s=[];for(let r in e)if(e.hasOwnProperty(r)){let a,o=e[r];if(i){let e=t?`[${t}][${r}]`:`[${r}]`;a=`${i}${e}`}else a=t?`${t}[${r}]`:r;null!==o&&Array.isArray(o)?o.length&&s.push(this.serializeArray(a,o)):null!==o&&"object"==typeof o?s.push(this.serializeObj(o,a)):s.push(`${a}=${encodeURIComponent(o)}`)}return s.join("&")}serializeArray(e,t,i=""){let s=[];return t.forEach(t=>{let r=i?`${i}${e}`:e;s.push(`${r}=${encodeURIComponent(t)}`)}),s.join("&")}_parseParamToObject(e,t=!1){if(!e.length)return null;let i={};for(let s=0;s<e.length;s++)if((s+1)%3==0){let r=decodeURIComponent(e[s].replace(/\+/g," ")),a=e[s-1];Object.assign(i,this._setObjectPath(a,r,i,t))}return i}_setObjectPath(e,t,i,s=!1){let r=e.split(/[\[\]]/).filter(Boolean),a=["in","nin","btw","ciin","cinin"],o={},n=o,l=((e,t,i)=>{if(!t)return;let s=(Array.isArray(t)?t:t.match(/([^[.\]])+/g)).reduce((e,t)=>e&&e[t],e);return void 0===s?i:s})(i,r.join("."));return r.forEach((e,o)=>{o===r.length-1?l?n[e]=Array.isArray(l)?[...l,t]:[l,t]:n[e]=s&&a.includes(e)?[t]:t:(n[e]=i[e]?i[e]:{},n=n[e])}),o}}(A,window,document),M=new class extends i{constructor(e,t,i){super(e,t,i),this._createLightbox=this._createLightbox.bind(this),this.expandSliders=[]}initialize(e={}){try{let{document:e}=this,t=e.querySelectorAll(".has-mobile-expand");t.forEach(e=>{this._addExpandButton(e)}),this.expandSliders=this.expandSliders.concat(t)}catch(e){console.log(e)}}destroy(){let{document:e}=this;e.querySelectorAll(".lp-expand-btn, .lp-expand-btn-wrapper").forEach(e=>e.remove()),this.expandSliders=[]}_addExpandButton(e){let{document:t}=this,i=e.closest("section[id]"),s=e.dataset.append,r=i.querySelector(".lp-expand-btn");if(!r)if((r=t.createElement("button")).className="lp-expand-btn",r.setAttribute("aria-label","Open a lightbox"),r.innerHTML='<span class="lp-i lp-i--expand-alt" aria-hidden="true"></span>',s){let e=i.querySelector(s);e&&e.appendChild(r)}else{let i=t.createElement("div");i.className="lp-expand-btn-wrapper",i.style.position="relative",i.appendChild(r),e.parentNode.insertBefore(i,e.nextSibling)}r.addEventListener("click",()=>{this._createLightbox({slider:e,section:i})})}_createLightbox({slider:e,section:t,initialIndex:i}){let{window:s,document:r}=this,a=`lightbox-for-${t?.id}`,o=s.$&&s.$.fn.slick,n=o&&e.slick,l="function"==typeof s.Splide,d=e.classList.contains("is-initialized")&&e.classList.contains("splide");function c(){let t=r.createElement("div");t.id=a,t.className="lp-lightbox",t.setAttribute("tabindex","-1"),t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true"),t.innerHTML=`
2013      <button class="lp-lightbox__close" aria-label="close modal"></button>
2014      <div class="lp-lightbox__content">
2015        <div class="lp-lightbox__carousel splide" role="group" aria-label="Image Gallery">
2016          <div class="splide__arrows">
2017            <button class="splide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev"></button>
2018            <button class="splide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next"></button>
2019          </div>
2020          <div class="splide__track">
2021            <ul class="splide__list"></ul>
2022          </div>
2023        </div>
2024      </div>
2025    `,"function"==typeof s.lpUI.requestScrollLock?s.lpUI.requestScrollLock(a):r.body.style.overflow="hidden",r.body.appendChild(t);let o=t.querySelector(".lp-lightbox__carousel"),n=o.querySelector(".splide__list");t.classList.add("show"),(d?e.querySelectorAll(".splide__slide:not(.splide__slide--clone) img"):e.querySelectorAll("img")).forEac
2025h(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let i=r.createElement("li");i.className="lp-lightbox__slide splide__slide",i.appendChild(t),n.appendChild(i)});let l=new s.Splide(o,{rewind:!0,arrows:!0,arrowPath:"",type:"loop",clones:1,pagination:!1,perPage:1,perMove:1});l.mount(),void 0!==i&&i>=0&&l.go(i),setTimeout(()=>{t.focus()},100);let c=e=>{if(!t.classList.contains("show"))return;let i=t.querySelector(".splide__arrow--prev"),s=t.querySelector(".splide__arrow--next"),r=t.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&i?(e.preventDefault(),i.click()):"ArrowRight"===e.key&&s?(e.preventDefault(),s.click()):"Escape"===e.key&&r&&(e.preventDefault(),r.click())};r.addEventListener("keydown",c),t.querySelector(".lp-lightbox__close").addEventListener("click",()=>{r.removeEventListener("keydown",c),t.classList.remove("show"),l&&l.destroy(),"function"==typeof s.lpUI.releaseScrollLock?s.lpUI.releaseScrollLock(a):r.body.style.overflow="",t.remove()})}if("function"==typeof s.lpUI.requestScrollLock?s.lpUI.requestScrollLock(a):r.body.style.overflow="hidden",o&&!d){let t,i,o,l,d;i={arrows:!0,dots:!1,infinite:!0,draggable:!0,prevArrow:'<button type="button" class="lp-lightbox-arrow--prev lp-lightbox-arrow" aria-label="Previous"></button>',nextArrow:'<button type="button" class="lp-lightbox-arrow--next lp-lightbox-arrow" aria-label="Next"></button>'},(o=r.createElement("div")).id=a,o.className="lp-lightbox",o.setAttribute("tabindex","-1"),o.setAttribute("role","dialog"),o.setAttribute("aria-modal","true"),o.innerHTML=`
2026        <button class="lp-lightbox__close" aria-label="close modal"></button>
2027        <div class="lp-lightbox__content">
2028          <div class="lp-lightbox__carousel"></div>
2029        </div>
2030      `,r.body.appendChild(o),l=o.querySelector(".lp-lightbox__carousel"),o.classList.add("show"),n?(t=e.slick.$slides.find("img"),i.initialSlide=e.slick?.currentSlide||0,t.each(function(){s.$(".lp-lightbox__carousel").append(s.$(this).clone(!1).removeAttr("style").wrap('<div class="lp-lightbox__slide"></div>').parent())})):(t=e.querySelectorAll("img")).forEach(e=>{let t=e.cloneNode(!0);t.removeAttribute("style");let i=r.createElement("div");i.className="lp-lightbox__slide",i.appendChild(t),l.appendChild(i)}),s.$(l).slick(i),setTimeout(()=>{o.focus()},100),d=e=>{if(!o.classList.contains("show"))return;let t=o.querySelector(".lp-lightbox-arrow--prev"),i=o.querySelector(".lp-lightbox-arrow--next"),s=o.querySelector(".lp-lightbox__close");"ArrowLeft"===e.key&&t?(e.preventDefault(),t.click()):"ArrowRight"===e.key&&i?(e.preventDefault(),i.click()):"Escape"===e.key&&s&&(e.preventDefault(),s.click())},r.addEventListener("keydown",d),o.querySelector(".lp-lightbox__close").addEventListener("click",()=>{r.removeEventListener("keydown",d),o.classList.remove("show");let t=l?.slick?s.$(l).slick("slickCurrentSlide"):0;l?.slick&&s.$(l).slick("unslick"),n&&s.$(e).slick("slickGoTo",t),"function"==typeof s.lpUI.releaseScrollLock?s.lpUI.releaseScrollLock(a):r.body.style.overflow="",o.remove()})}else l?c():(s.luxuryPresence.libs.loadCss(s.luxuryPresence.libs.jsLibsMap.splide.cssSrc),s.luxuryPresence.libs.loadJs(s.luxuryPresence.libs.jsLibsMap.splide.jsSrc,()=>{c(),s.luxuryPresence.libs.jsLibsMap.splide.isLoaded=!0}))}}(A,window,document),P=new class extends i{destroy(){this.window.divolte||(this.window.divolteLp=function(){(this.window.divolteLp.q=this.window.divolteLp.q||[]).push(arguments)})}initialize(e={}){let{divolteServiceUrl:t}=this.config;t&&!this.window.divolte&&this.loadScript()}loadScript(){let{divolteServiceUrl:e}=this.config,t=this.document.createElement("script");t.id="divolte-script",t.type="text/javascript",t.defer=!0,t.async=!0,t.src=`${e}/divolte.js`,this.document.head.appendChild(t),t.addEventListener("load",this.executeQueue.bind(this))}executeQueue(){(this.window.divolteLp.q||[]).forEach(([e,t])=>{this[e](t)}),this.window.divolteLp=this.divolteLp.bind(this)}divolteLp(e,t){try{this[e](t)}catch(e){console.log(e)}}sendLpEvent(e,t){if(!e.includes("pageView"))return void console.log(`${e} IS NOT SUPPORTED`);let{companyId:i,templateId:s,websiteId:r,pageId:a,shareId:o,pageMeta:n}=this.config;this.window.divolte.signal(e,Object.assign({companyId:i,templateId:s,websiteId:r,pageId:a,shareId:o,pageMeta:n},t))}sendLpPageView(){this.sendLpEvent("pageView",{})}}(A,window,document),U=new class extends i{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"}
2030)),(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",{})}}(A,window,document),N=new class extends i{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(h,this.window[e])})}_renderGoogleOneTap(){if(!this._isGoogleOneTapOnCooldown()){let e=this.document.createElement("div");google.accounts.id.initializeIntermediate({src:this._buildUrlAndCopyAttributes(e,e,"googleOneTap")}),this.window.localStorage.removeItem("googleOneTapExpiration"),this.window.addEventListener("message",this._listenToOneTapMessage)}}_listenToOneTapMessage(e){let t="show_intermediate_iframe",{buyerSellerServiceUrl:i}=this.config,{data:s,origin:r}=e,{type:a,height:o,event:n,source:l,token:d}=s;if(a===t||"hide_intermediate_iframe"===a){let e=this.document.getElementById("onetap_google_intermediate_iframe");e&&(e.style.height=o,e.style.display=a===t?"unset":"none")}r===i&&"GOOGLE_SIGN_ON"===l&&("success"===n?(this._setExpirationLsItem(864e5),this._handleQualifyingQuestionsModal(d)):"cancel"===n&&this._setExpirationLsItem(72e5))}_setExpirationLsItem(e){let t=new Date().getTime()+e;this.window.localStorage.setItem("googleOneTapExpiration",t)}_isGoogleOneTapOnCooldown(){return Number(this.window.localStorage.getItem("googleOneTapExpiration"))>new Date().getTime()}_convertGoogleSignIn(e){this._replaceWithIframe("googleSignIn",e)}_convertFacebookSignIn(e){this._replaceWithIframe("facebookSignIn",e)}_replaceWithIframe(e,t){this._attachSuccessCallback(t);let i=this.document.createElement("iframe");i.src=this._buildUrlAndCopyAttributes(t,i,e),i.dataset.isSocialOauthButton=!0,t.replaceWith(i)}_listenToMessages(e){let{buyerSellerServiceUrl:t}=this.config;if(e.origin===t&&"success"===e.data.event){let e=new Event(h);this.window.dispatchEvent(e),r(this.window,this.document),this.successListeners.forEach(t=>{this.window[t]?this.window[t](e):console.error(`Callback function ${t} not found on window object`)}),this.document.documentElement.classList.add("is-login-success")}}_attachSuccessCallback(e){this.window.addEventListener("message",this._listenToMessages);let t=e.dataset.onSuccessFunctionName;t&&this.successListeners.push(t)}_buildUrlAndCopyAttributes(e,t,i){let{buyerSellerServiceUrl:s,companyId:r,websiteId:a,pageId:o,pageMeta:n}=this.config,{location:l}=this.window,d=l.origin+l.pathname,c=new URL(`${s}/buttons/${i}`),u=this.window.localStorage.getItem("utm_vars"),h=this.window.localStorage.getItem("referrer");c.searchParams.append("companyId",r),c.searchParams.append("websiteId",a),c.searchParams.append("pageId",o),c.searchParams.append("sourceUrl",d),c.searchParams.append("pageMeta",JSON.stringify(n)),u&&c.searchParams.append("utm",u),h&&c.searchParams.append("referrer",h);let p=["data-size","data-width","data-text","data-button-type","data-shape","data-layout","data-max-rows","data-use-continue-as","data-type","data-theme","data-logo_alignment","data-locale"];
2030return Array.from(e.attributes).forEach(e=>{p.includes(e.nodeName)?c.searchParams.append(e.nodeName,e.nodeValue):t.setAttribute("id"===e.nodeName?"data-id":e.nodeName,e.nodeValue)}),c.toString()}_decodeToken(e){try{let t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),i=4-t.length%4,s=4===i?t:t+"=".repeat(i);return JSON.parse(atob(s))}catch(e){return null}}_handleQualifyingQuestionsModal(e){if(e&&this.window.luxuryPresence&&this.window.luxuryPresence.qualifyingQuestionsModal){let t=this._decodeToken(e);t&&t.email&&this.window.luxuryPresence.qualifyingQuestionsModal.showModal(t.email,"Google Sign On")}}}(A,window,document),R=new class extends i{constructor(e,t,i){super(e,t,i),this.showModal=this.showModal.bind(this),this.hasModalBeenSubmitted=this.hasModalBeenSubmitted.bind(this),this.modalId="qualifying-questions-modal",this.cookieKey="qualifyingQuestionsModalSubmitted",this.qualifyingQuestionsModalEnabled=!0,this.eventListeners=[],this.timeouts=[]}initialize(e={}){this.qualifyingQuestionsModalEnabled=e.qualifyingQuestionsModalEnabled??this.qualifyingQuestionsModalEnabled,this.qualifyingQuestionsModalEnabled&&this.attachModalCloseListeners()}destroy(){this.eventListeners.forEach(({element:e,event:t,handler:i})=>{e&&e.removeEventListener&&e.removeEventListener(t,i)}),this.timeouts.forEach(e=>{clearTimeout(e)}),this.restoreBodyScroll(),this.eventListeners=[],this.timeouts=[]}hasModalBeenSubmitted(){return"true"===this.getCookie(this.cookieKey)}setModalSubmittedCookie(){this.setCookie(this.cookieKey,"true",365)}showModal(e,t){!this.qualifyingQuestionsModalEnabled||this.hasModalBeenSubmitted()||(this.updateEmailValue(e),this.updateTriggerSourceValue(t),this.showModalElement())}getModalElement(){let e=this.document.getElementById(this.modalId);return e||console.error("Modal element not found:",this.modalId),e}updateEmailValue(e){let t=this.getModalElement();if(!t)return;let i=t.querySelector('input[name="email"]');i&&"string"==typeof e&&(i.value=e)}updateTriggerSourceValue(e){let t=this.getModalElement();if(!t)return;let i=t.querySelector(`#${this.modalId}-triggerSource`);i&&"string"==typeof e&&(i.value=e)}showModalElement(){let e=this.getModalElement();e&&(e.style.display="flex",this.blockBodyScroll())}getCookie(e){let t=`; ${this.document.cookie}`.split(`; ${e}=`);return 2===t.length?decodeURIComponent(t.pop().split(";").shift()):null}setCookie(e,t,i){let s="";if(i){let e=new Date;e.setTime(e.getTime()+864e5*i),s=`; expires=${e.toUTCString()}`}let r="; path=/; SameSite=Lax";this.window&&this.window.location&&"https:"===this.window.location.protocol&&(r+="; Secure"),this.document.cookie=`${e}=${encodeURIComponent(t||"")}${s}${r}`}blockBodyScroll(){this._prevOverflow=this.document.body.style.overflow,this.document.body.style.overflow="hidden"}restoreBodyScroll(){this.document.body.style.overflow=this._prevOverflow||"",this._prevOverflow=null}attachModalCloseListeners(){let e=this.getModalElement();if(!e)return;let t=this.document.getElementById(`${this.modalId}-form`);if(t){let i=()=>{this.setModalSubmittedCookie();let t=setTimeout(()=>{e.style.display="none",this.restoreBodyScroll()},100);this.timeouts.push(t)};t.addEventListener("formsubmitted",i),this.eventListeners.push({element:t,event:"formsubmitted",handler:i})}let i=e.querySelector('[data-dismiss="modal"]');if(i){let t=()=>{e.style.display="none",this.restoreBodyScroll()};i.addEventListener("click",t),this.eventListeners.push({element:i,event:"click",handler:t})}let s=t=>{(t.target===e||t.target.id===this.modalId)&&(e.style.display="none",this.restoreBodyScroll())};e.addEventListener("click",s),this.eventListeners.push({element:e,event:"click",handler:s})}}(A,window,document),B=new class extends i{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=`
2031      query {
2032        validSession {
2033          success
2034        }
2035      }
2036    `;try{let e=await this.window.fetch("/graphql",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({query:i})});if(!e.ok)return console.error("SessionController: HTTP error during session validation",e.status),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let t=await e.json();if(t.errors)return this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1;let s=t.data?.validSession?.success===!0;return this.lastValidationResult=s,this.lastValidationTime=Date.now(),s}catch(e){return console.error("SessionController: Error validating session",e),this.lastValidationResult=!1,this.lastValidationTime=Date.now(),!1}finally{this.isValidating=!1}}clearCache(){this.lastValidationResult=null,this.lastValidationTime=null}}(A,window,document),O=new class extends i{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=p[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))}}(A,window,document),V=new class extends i{destroy(){}transformVariables(e,t){let i;return g(i={...t},["testimonialId"]),y(i,["testimonialId"],"testimonialIds"),0===i.limit&&delete i.limit,(void 0===i.limit||null===i.limit)&&(("testimonials"===e||"testimonialsCount"===e)&&(i.limit=50),("agents"===e||"agentsCount"===e||"neighborhoods"===e||"neighborhoodsCount"===e||"posts"===e||"postsCount"===e||"pressReleases"===e||"pressReleasesCount"===e)&&(i.limit=100)),!function(e){let{sortDir:t}=e;"string"==typeof t&&t.includes("_")&&(e.sortDir=t.replace(/_/g," "))}(i),!function(e,t){switch(t){case"agent":break;case"testimonials":case"testimonialsCount":g(e,["testimonialIds"]);break;case"agents":case"agentsCount":g(e,["officeId","teamId","developmentId","agentIds","tags"]),y(e,["officeId"],"officeIds"),y(e,["teamId"],"teamIds"),y(e,["developmentId"],"developmentIds");break;case"neighborhoods":case"neighborhoodsCount":g(e,["neighborhoodIds","neighborhoodId"]),y(e,["neighborhoodIds","neighborhoodId"],"neighborhoodId");break;case"developments":case"developmentsCount":g(e,["agentId","neighborhoodIds","neighborhoodId","developmentIds","tag"]),e.agentId&&Array.isArray(e.agentId)&&([e.agentId]=e.agentId),y(e,["neighborhoodIds","neighborhoodId"],"neighborhoodIds");break;case"properties":case"propertiesCount":g(e,["statusIds","statusId","propertyTypeIds","propertyTypeId","propertyId","networkId","propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","
2036spaceTypeIds","addressState","addressCity","backfillProviders","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"]),["propertyIds","agentIds","teamIds","officeIds","neighborhoodIds","spaceTypeIds","backfillMLSListingIds","backfillMLSAgentIds","backfillMLSOfficeIds"].forEach(t=>y(e,[t],t)),y(e,["statusIds","statusId"],"propertyStatusId"),e.excludeStatusId&&(e.excludePropertyStatusId=e.excludeStatusId,delete e.excludeStatusId),y(e,["propertyTypeIds","propertyTypeId"],"propertyTypeId"),y(e,["networkId"],"networkId"),y(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":g(e,["categoryIds","categoryId","neighborhoodId"]),void 0!==e.order&&(e.sort=e.order,delete e.order),y(e,["categoryIds","categoryId"],"categoryId");break;case"postCategories":g(e,["categoryId","categoryIds"]),void 0!==e.order&&(e.sort=e.order,delete e.order),y(e,["categoryIds","categoryId"],"categoryId");break;case"pressReleases":case"pressReleasesCount":g(e,["pressReleaseId","categories","propertyId","developmentId","agentId","teamId"]),y(e,["pressReleaseId"],"pressReleaseIds");break;case"offices":case"officesCount":g(e,["officeId","officeIds","tags"]),y(e,["officeId"],"officeIds");break;case"teams":case"teamsCount":g(e,["teamId","teamIds"]),y(e,["teamId"],"teamIds");break;case"pois":g(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?E(t,f):"agents"===e||"agentsCount"===e?I(t,w):"neighborhood"===e?E(t,v):"neighborhoods"===e||"neighborhoodsCount"===e?I(t,b):"development"===e?E(t,S):"developments"===e||"developmentsCount"===e?I(t,_):t}transformPage(e){return{items:e&&e.items||[],count:e&&e.total||0}}}(A,window,document);function D(e,t){if(window.luxuryPresence[e])try{window.luxuryPresence[e].destroy()}catch(e){console.log(e)}window.luxuryPresence[e]=t}D("config",A),D("modals",L),D("buttons",$),D("validation",x),D("contactForms",T),D("mapApiLoader",k),D("pagination",C),D("expandSliders",M),D("divolte",P),D("eventBus",U),D("oauth",N),D("qualifyingQuestionsModal",R),D("session",B),D("consent",O),D("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(){}}),D("routerApi",V),window.luxuryPresence.formatSliderPriceRange=C.formatSliderPriceRange.bind(C),window.luxuryPresence.formatSliderAreaRange=C.formatSliderAreaRange.bind(C),window.luxuryPresence.getSearchFormValues=C.getSearchFormValues.bind(C),window.luxuryPresence.handlebarsHelpersFactory=function(t){var i;return((i=e)&&i.__esModule?i.default:i)(t,{isEqual:(e,t)=>e==t})}})();
2037//# sourceMappingURL=lp-sdk.js.map
2038
2039    </script>
2039
2040
2041    
2041<script>
2042        var lpGlobalInitialized = false;
2043
2044        function lpGlobalInit () {
2045          if (lpGlobalInitialized) {
2046            return;
2047          }
2048            lpGlobalInitialized = true;
2049            // Initialize wow animation plugin only according to turbolinks
2050            var wow;
2051            if (window.WOW) {
2052                wow = new WOW({
2053                    animateClass: 'animated',
2054                    offset: wowOffset,
2055                    live: false,
2056                    callback: function(box) {}
2057                });
2058            }
2059            // Initialize handlebar helpers only once
2060            function handlebarsInit() {
2061              if (!window.Handlebars) {
2062                return;
2063              }
2064              HandlebarsIntl.registerWith(Handlebars);
2065              Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars));
2066            }
2067
2068            handlebarsInit();
2069
2070            /* Initialize Luxury Presence SDK */
2071            try {
2072                window.luxuryPresence.config.setCompany("b8978102-23d8-42d2-b1c5-bbed6df2e9fd", {});
2073                window.luxuryPresence.config.setWebsite("f8eeb622-1c43-422f-bf48-840bd660be00", {
2074                    myhomeDashboardEnabled: true,
2075                    mlsEnabled: true,
2076                    hstValuationRedirectEnabled: true,
2077                    hvStepTwoCaptureEnabled: false
2078                });
2079                const url = new URL(window.location.href);
2080                const shareId = url.searchParams.get('shareId');
2081                window.luxuryPresence.config.setPage("1d85eb8e-9986-440e-a9b2-48ec4523181f", {
2082                    sourceResource: "",
2083                    pageElementId: "",
2084                    pageQueryVariables: {},
2085                    shareId: "",
2086                });
2087                window.luxuryPresence.config.setWebsiteApiGatewayUrl("https://wgw.luxurypresence.com", {});
2088                window.luxuryPresence.config.setBuyerSellerServiceUrl("https://bss.luxurypresence.com", {});
2089                    window.luxuryPresence.config.setDivolteServiceUrl("https://t.luxurypresence.com", {});
2090                  window.luxuryPresence.config.setEventBusUrl("https://cdn.luxurypresence.com/scripts/event-bus-js", {});
2091                  window.luxuryPresence.config.setEventBus({
2092                    enabled: true,
2093                    apiKey: "phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr",
2094                    url: "https://p.luxurypresence.com",
2095                  });
2096                window.luxuryPresence.config.setTemplateId("dbfbedc7-c7e2-4812-86ee-0ee198862c21", {});
2097                window.luxuryPresence.config.setLeadIngesterUrl("https://leads.luxurypresence.com", {});
2098                window.luxuryPresence.buttons.initialize({});
2099                    window.luxuryPresence.consent.initialize({ provider: 'lp-consent' });
2100                window.luxuryPresence.contactForms.initialize({});
2101                window.luxuryPresence.validation.initialize({});
2102                window.luxuryPresence.expandSliders.initialize({});
2103                window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: false, iframe: false });
2104                window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true });
2105            } catch (e) {
2106                console.log(e);
2107            }
2108
2109            /* Inject Section Specific Javascript */
2110                try {
2111(function init(sectionDomId) {
2112  const disclaimerLabel = document.querySelector('#' + sectionDomId + ' .lp-tcr-content');
2113  if (disclaimerLabel) {
2114    const input = disclaimerLabel.querySelector('input');
2115    if (input) {
2116      input.setAttribute('id', `${sectionDomId}-termsAccepted`);
2117      input.value = 'true';
2118      const label = document.createElement('label');
2119      label.setAttribute('for', `${sectionDomId}-termsAccepted`);
2120      label.classList.add('lp-visually-hidden');
2121      label.textContent = 'Opt in/Disclaimer Consent:';
2122      disclaimerLabel.prepend(label);
2123    }
2124  }
2125  function setHttp(link) {
2126    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
2127      link = 'https://' + link;
2128    }
2129    return link;
2130  }
2131  const socialLinks = document.querySelectorAll('#' + sectionDomId + ' .socials__link, #' + sectionDomId + ' .lp-socials__link');
2132  socialLinks.forEach(linkElement => {
2133    const href = linkElement.getAttribute('href');
2134    if (href) {
2135      linkElement.setAttribute('href', setHttp(href));
2136    }
2137  });
2138  const redirectLink = $('#' + sectionDomId + ' .redirect-link');
2139  if (redirectLink.length) {
2140    const rawHref = setHttp(redirectLink.attr('href'));
2141    let formEvent;
2142    if (rawHref) {
2143      formEvent = redirectLink.data('redirect') ? 'formsubmitted' : 'reset';
2144      $('#' + sectionDomId + ' .contact-form').find('form').on(formEvent, function () {
2145        redirectLink.attr('href', rawHref);
2146        redirectLink[0].click();
2147      });
2148    }
2149  }
2150})('modal-global-contact-us');
2151} catch(e) {
2152console.log(e);
2153}
2154                
2155                try {
2156(function init(sectionDomId) {
2157  const $section = $('#' + sectionDomId);
2158  const $hamburger = $section.find('.hamburger-component');
2159  const $window = $(window);
2160  $window.on('lpui-sidemenu-show.lpui-auto-clean', function () {
2161    $hamburger.addClass('active');
2162  });
2163  $window.on('lpui-sidemenu-hide.lpui-auto-clean', function () {
2164    $hamburger.removeClass('active');
2165  });
2166  setTimeout(() => {
2167    if ($window.scrollTop() > 0) {
2168      $section.find('.wow').each(function () {
2169        wow.applyStyle(this, true);
2170        wow.show(this);
2171      });
2172    }
2173  }, 500);
2174  function updateSubsVisibility(e) {
2175    try {
2176      e.forEach(function (record) {
2177        var $target = $(record.target);
2178        if (!$target.hasClass('sub-nav')) {
2179          return;
2180        }
2181        var $link = $target.siblings('.navigation__link');
2182        if (!$link.length) {
2183          return;
2184        }
2185        if ($target.hasClass('visible')) {
2186          $link.addClass('visible-dropdown');
2187        } else {
2188          $link.removeClass('visible-dropdown');
2189        }
2190      });
2191    } catch (e) {
2192      console.log(e);
2193    }
2194  }
2195  var observer = new MutationObserver(updateSubsVisibility);
2196  observer.observe($section.find('.header')[0], {
2197    subtree: true,
2198    attributes: true,
2199    attributeFilter: ["class"]
2200  });
2201})('global-navbar');
2202} catch(e) {
2203console.log(e);
2204}
2205                try {
2206(function init(sectionDomId, options) {
2207  var elementSelector = options.elementSelector || 'nav';
2208  var element = document.querySelector(elementSelector);
2209  var sections = document.querySelectorAll('body > section');
2210  var subNavContainers = element.querySelectorAll('.sub-nav');
2211  var initialBackgroundColor = options.initialBackgroundColor || element.style.backgroundColor;
2212  var backgroundColorScroll = options.backgroundColorScroll || '#191919';
2213  var fontColor = options.fontColor || '#fff';
2214  var fontColorScroll = options.fontColorScroll || '#000';
2215  var didScroll = false;
2216  var lastScrollTop = 0;
2217  var delta = 5;
2218
2219  // eslint-disable-next-line sonarjs/no-collapsible-if
2220  if (wow) {
2221    // Wowjs might not trigger for position fixed elements
2222    if (window.scrollY > 0) {
2223      element.querySelectorAll('.wow').forEach(el => wow.show(el));
2224    }
2225  }
2226  function adjustNavPinState() {
2227    // Remove 'visible' class from all subNavContainers
2228    for (let i = 0; i < subNavContainers.length; i++) {
2229      subNavContainers[i].classList.remove('visible');
2230    }
2231    if (window.scrollY > 0) {
2232      element.style.backgroundColor = backgroundColorScroll;
2233      element.style.color = fontColorScroll;
2234      element.classList.add('scroll');
2235    } else {
2236      element.style.backgroundColor = initialBackgroundColor;
2237      element.style.color = fontColor;
2238      element.classList.remove('scroll');
2239    }
2240  }
2241  adjustNavPinState();
2242  function onScroll() {
2243    didScroll = true;
2244  }
2245  window.addEventListener('scroll', onScroll);
2246
2247  // eslint-disable-next-line
2248  var debounceInterval = setInterval(() => {
2249    if (didScroll) {
2250      // eslint-disable-next-line
2251      hasScrolled();
2252      didScroll = false;
2253    }
2254  }, 250);
2255  function hasScrolled() {
2256    adjustNavPinState();
2257    // eslint-disable-next-line
2258    var navbarHeight = element.offsetHeight;
2259    // eslint-disable-next-line
2260    var st = window.scrollY;
2261
2262    // Make sure they scroll more than delta
2263    if (Math.abs(lastScrollTop - st) <= delta) {
2264      return;
2265    }
2266    if (st > lastScrollTop && st > navbarHeight) {
2267      // Scroll Down
2268      element.style.transform = `translateY(-${navbarHeight}px) scaleY(0)`;
2269      document.documentElement.style.setProperty('--global-header-height', '0px');
2270
2271      // Some sections "follow" the navbar with class sticky (i.e. Producer search)
2272      sections.forEach(section => {
2273        if (section.classList.contains('sticky')) {
2274          section.style.top = '0px';
2275        }
2276      });
2277    } else {
2278      // Scroll Up
2279      // eslint-disable-next-line
2280      if (st + window.innerHeight < document.documentElement.scrollHeight) {
2281        element.style.transform = `translateY(0) scaleY(1)`;
2282        document.documentElement.style.setProperty('--global-header-height', `${navbarHeight}px`);
2283        sections.forEach(section => {
2284          if (section.classList.contains('sticky')) {
2285            section.style.top = `${navbarHeight}px`;
2286          }
2287        });
2288      }
2289    }
2290    lastScrollTop = st;
2291  }
2292})('NAVBAR', JSON.parse("{\"fontColor\":\"#ffffff\",\"elementSelector\":\"nav\",\"fontColorScroll\":\"#000000\",\"backgroundColorScroll\":\"#ffffff\",\"initialBackgroundColor\":\"rgba(0,0,0,0)\"}"));
2293} catch(e) {
2294console.log(e);
2295}
2296                try {
2297(function init(sectionDomId) {
2298  var $sidemenu = $('#' + sectionDomId);
2299  var $link = $sidemenu.find('.sub-nav-link');
2300  var shown = false;
2301  function onShow() {
2302    if (shown) {
2303      return;
2304    }
2305    shown = true;
2306    window.lpUI.requestScrollLock(sectionDomId);
2307  }
2308  function onHide() {
2309    if (!shown) {
2310      return;
2311    }
2312    shown = false;
2313    window.lpUI.releaseScrollLock(sectionDomId);
2314    $('body').removeClass('locked');
2315    $('.hamburger.active').removeClass('active');
2316  }
2317  const handleLinkClick = href => {
2318    if (href && href.match(/^#[^#].*$/)) {
2319      window.lpUI.sideMenuHide();
2320    }
2321  };
2322  $sidemenu.find('a').click(function () {
2323    const href = $(this).attr('href');
2324    handleLinkClick(href);
2325  });
2326  $sidemenu.on('lpui-show', onShow);
2327  $sidemenu.on('lpui-hide', onHide);
2328  $link.click(function () {
2329    lpUI.sideMenuHide();
2330  });
2331})('global-sidemenu');
2332} catch(e) {
2333console.log(e);
2334}
2335                
2336                try {
2337(function init(footerId) {
2338  var textContent = $(".text_content_wrap p").text().trim().length;
2339  const socialLinks = $(`#${footerId} .lp-socials__link`);
2340  if (textContent < 1) {
2341    $(".text_content_wrap").remove();
2342    $(".second_text_footer").css({
2343      'margin-bottom': 0
2344    });
2345  }
2346  if (socialLinks.length > 0) {
2347    socialLinks.attr('data-wow-offset', '10');
2348  }
2349  if ($(window).width() > 1280) {
2350    let footer = document.querySelector("#" + footerId);
2351    let copyrightElem = footer.querySelector(".copy_zone");
2352    if (copyrightElem) {
2353      copyrightElem.style.whiteSpace = "nowrap";
2354      let nowrapElemWidth = copyrightElem.clientWidth;
2355      copyrightElem.style.whiteSpace = "";
2356      let normalElemWidth = copyrightElem.clientWidth;
2357      if (nowrapElemWidth > normalElemWidth) {
2358        footer.querySelector(".form-col--socials").classList.add("form-col--xl-auto");
2359      }
2360    }
2361  }
2362  const form = $("#" + footerId).find("form");
2363  const redirectLink = $('#' + footerId + ' .redirect-link');
2364  form.on("reset", function () {
2365    redirectPage(redirectLink);
2366  });
2367  function redirectPage(link) {
2368    if (link.length) {
2369      const rawHref = link.attr('href');
2370      link.attr('href', setHttp(rawHref));
2371      link[0].click();
2372    }
2373  }
2374  function setHttp(link) {
2375    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
2376      link = 'http://' + link;
2377    }
2378    return link;
2379  }
2380})('global-footer');
2381} catch(e) {
2382console.log(e);
2383}
2384                
2385                try {
2386(function init(sectionDomId) {
2387  var _section = $('#' + sectionDomId);
2388  var _footer = document.getElementById('global-footer');
2389  const redirectLink = _section.find('.js-redirect-link');
2390  function setHttp(link) {
2391    if (link.search(/^(http[s]?\:\/\/|\/)/) == -1) {
2392      link = 'https://' + link;
2393    }
2394    return link;
2395  }
2396  function redirectPage(link) {
2397    if (link.length) {
2398      window.location.href = setHttp(link.attr('href'));
2399    }
2400  }
2401  const emailInput = _section.find('.js-email-input');
2402  const emailRegex = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~\-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+/;
2403  emailInput.on('input', function () {
2404    if (emailRegex.test(this.value)) {
2405      this.setCustomValidity('');
2406    } else {
2407      this.setCustomValidity('Please enter a valid email address.');
2408    }
2409    this.reportValidity();
2410  });
2411  _section.find('input[name="name"]').on("keyup", function () {
2412    if (this.value.replaceAll(/\d/g, "").trim().split(" ").length < 2 || this.value.replaceAll(/\d/g, "").trim() === "") {
2413      this.setCustomValidity("Please input your first name and last name.");
2414    } else {
2415      this.setCustomValidity("");
2416    }
2417  });
2418  _section.find('form').on("reset", function () {
2419    $(this).addClass("show-success");
2420    redirectPage(redirectLink);
2421  });
2422  $(window).scroll(function () {
2423    if ($(this).scrollTop() >= 150) _section.find('.btn-holder').addClass('visible');else _section.find('.btn-holder').removeClass('visible');
2424  });
2425  _section.find('.close-btn, .connect-btn').click(function () {
2426    _section.find('.pop-up').toggle();
2427    _section.find('.btn-holder').toggle();
2428  });
2429  if (!_footer) return;
2430  const observer = new IntersectionObserver(entries => {
2431    entries.forEach(entry => {
2432      if (entry.isIntersecting) _section.hide();else _section.show();
2433    });
2434  }, {
2435    threshold: 0.1
2436  });
2437  observer.observe(_footer);
2438  function selectToDropdown(selectItem) {
2439    let customDropdown = `
2440        <div class="custom-select" role="presentation">
2441        <button class="custom-select-toggle is-placeholder" type="button" aria-haspopup="true" aria-expanded="false"></button>
2442        <div class="custom-select-menu" style="display: none;max-height: none;">
2443        <div class="custom-select-content">
2444        </div>
2445        </div>
2446        </div>`;
2447    $(customDropdown).insertAfter(selectItem);
2448    let $dropdown = $($(selectItem).next());
2449    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
2450    let $dropdownMenu = $dropdown.find(".custom-select-menu");
2451    let $dropdownContent = $dropdown.find(".custom-select-content");
2452    $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select");
2453    $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom");
2454    $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id"));
2455    appendOptionButtons(selectItem, $dropdownContent);
2456    $(selectItem).removeClass().addClass("sr-only");
2457    var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text();
2458    $dropdownToggle.html(toggleText);
2459    $dropdown.on("click", ".custom-select-item", function (e) {
2460      if ($(this).hasClass("is-disabled")) return;
2461      let elementNumber = $(this).index();
2462      let $originalSelect = $(this).closest(".custom-select").siblings("select");
2463      let $linkedOption = $originalSelect.find("option").eq(elementNumber);
2464      if (!$linkedOption.prop("selected")) {
2465        $linkedOption.prop("selected", true);
2466        $originalSelect.change();
2467        $(this).addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected");
2468        $dropdownToggle.html($(this).html());
2469        closeSelectMenu($(this).closest(".custom-select-menu"));
2470      }
2471      $dropdownToggle.removeClass("is-placeholder");
2472    });
2473    function convertOptionToButton(option) {
2474      var optionText = $(option).text();
2475      var optionValue = $(option).attr("value") || $(option).text();
2476      var optionIsDisabled = $(option).prop("disabled");
2477      var outputButton = `<button value="${optionValue}" class="custom-select-item" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`;
2478      return outputButton;
2479    }
2480    function appendOptionButtons(selectItem, appendTarget) {
2481      $(selectItem).find("option").each(function () {
2482        let currentButton = convertOptionToButton(this);
2483        $(appendTarget).append(currentButton);
2484      });
2485    }
2486    function showSelectMenu(selectMenu) {
2487      var customSelect = $(selectMenu).closest(".custom-select")[0];
2488      $(customSelect).addClass("open");
2489      $(selectMenu).slideDown();
2490    }
2491    function closeSelectMenu(selectMenu) {
2492      var customSelect = $(selectMenu).closest(".custom-select")[0];
2493      $(customSelect).removeClass("open");
2494      $(selectMenu).slideUp();
2495    }
2496    $dropdown.on("click", ".custom-select-toggle", function (e) {
2497      var $customSelect = $(this).closest(".custom-select");
2498      var selectMenu = $customSelect.find(".custom-select-menu")[0];
2499      if ($customSelect.hasClass("open")) {
2500        closeSelectMenu(selectMenu);
2501      } else {
2502        showSelectMenu(selectMenu);
2503      }
2504    });
2505    $(document).on("click", function (e) {
2506      if ($(e.target).closest(".custom-select").length < 1 && $(".custom-select").hasClass("open")) {
2507        $(".custom-select.open").each(function () {
2508          var selectMenu = $(this).find(".custom-select-menu")[0];
2509          closeSelectMenu(selectMenu);
2510        });
2511      }
2512    });
2513  }
2514  $(".pop-up select[name='interest']").each(function () {
2515    selectToDropdown(this);
2516  });
2517})('global-mobile-contact');
2518} catch(e) {
2519console.log(e);
2520}
2521                
2522                try {
2523(function init(sectionDomId) {})('modal-global-subscribe');
2524} catch(e) {
2525console.log(e);
2526}
2527                
2528                try {
2529(function init(sectionDomId) {})('section-03af5970-969f-4ce5-87e6-2b86762a7411', 'undefined');
2530} catch(e) {
2531console.log(e);
2532}
2533                try {
2534(function init(sectionDomId, options) {
2535  let section = null;
2536  switch (sectionDomId) {
2537    case 'NAVBAR':
2538      section = document.querySelector('body > nav, #global-navbar');
2539      break;
2540    case 'FOOTER':
2541      section = document.querySelector('body > footer, #global-footer');
2542      break;
2543    case 'SIDEMENU':
2544      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
2545      break;
2546    case 'CONTACT':
2547      section = document.querySelector('#modal-global-contact-us');
2548      break;
2549    case 'MOBILE_CONTACT':
2550      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
2551      break;
2552    case 'SUBSCRIBE':
2553      // Subscribe Not Implemented
2554      section = null;
2555      break;
2556    case 'ACCOUNT':
2557      // Account Not Implemented
2558      section = null;
2559      break;
2560    default:
2561      section = document.querySelector('#' + sectionDomId);
2562  }
2563  if (!section) {
2564    return;
2565  }
2566
2567  // Where content / items are rendered
2568  const dataContainer = section.querySelector('.data-container');
2569  if (!dataContainer) {
2570    // no place to render items = no need to query server or do anything else
2571    return;
2572  }
2573  let variables = options.variables || {};
2574
2575  // Some variables in options may not have been injected - remove
2576  Object.keys(variables).forEach(function (variableName) {
2577    if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) {
2578      delete variables[variableName];
2579    }
2580  });
2581
2582  // Merge page query variables
2583  if (options.usePageResource) {
2584    variables = {
2585      ...variables,
2586      ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource]
2587    };
2588  }
2589
2590  // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers
2591  // resolve the flag — fetchData reads the section stamp, aux fetches read
2592  // their own resource's stamp (auxUsesRouter).
2593  function apiUrl(useRouter) {
2594    return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl);
2595  }
2596
2597  // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's
2598  // (options.routerApiAux is stamped per aux resource server-side).
2599  function auxUsesRouter(resource) {
2600    return !!(options.routerApiAux && options.routerApiAux[resource]);
2601  }
2602
2603  // Pagination Executes on a Numbered Pagination Container
2604  //  Or via a load more button
2605  let mode = 'BUTTONLESS_PAGINATION';
2606  const container = section.querySelector('.pagination-container');
2607  const loadMoreButton = section.querySelector(options?.loadMoreSelector);
2608  if (container) {
2609    mode = 'NUMBERED_PAGINATION';
2610  }
2611  if (loadMoreButton) {
2612    mode = 'LOAD_MORE_BUTTON';
2613  }
2614  let searchContainer = section.querySelector('.search-container');
2615  const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false;
2616  const eventPrefix = '__pagination-';
2617  const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{
2618    param: 'neighborhoodId',
2619    urlKey: 'neighborhood'
2620  }, {
2621    param: 'search',
2622    urlKey: 'search'
2623  }, {
2624    param: 'salesPriceGTE',
2625    urlKey: 'pricemin',
2626    formKey: 'priceMin',
2627    type: 'int'
2628  }, {
2629    param: 'salesPriceLTE',
2630    urlKey: 'pricemax',
2631    formKey: 'priceMax',
2632    type: 'int'
2633  }, {
2634    param: 'livingSpaceSizeGTE',
2635    urlKey: 'areamin',
2636    formKey: 'areaMin',
2637    type: 'int'
2638  }, {
2639    param: 'livingSpaceSizeLTE',
2640    urlKey: 'areamax',
2641    formKey: 'areaMax',
2642    type: 'int'
2643  }] : []);
2644
2645  // Total entries - initialized in first render
2646  let totalNumber = 0;
2647  const DefaultSearchParams = {
2648    page: 1
2649  };
2650  searchFormParams.forEach(function (formParam) {
2651    DefaultSearchParams[formParam.formKey || formParam.param] = null;
2652  });
2653  let searchParams = {
2654    ...DefaultSearchParams
2655  };
2656  const offset = options.variables?.offset || 0;
2657  let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section;
2658  let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100;
2659
2660  // entries of per page
2661  // when query variables for a given section would't be filled options.pageSize can store
2662  // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value
2663  let pageSize = parseInt(options.pageSize, 10) || 9;
2664
2665  // Adding mobile pageRange support
2666  var NARROW_BREAKPOINT = 600;
2667  var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT;
2668  var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`);
2669
2670  // Page range (pages on both sides of the current page)
2671  var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0;
2672  var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2;
2673  var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange;
2674
2675  // Whether to display the 'Previous' button
2676  var showPrevious = true;
2677
2678  // Whether to display the 'Next' button
2679  var showNext = true;
2680
2681  // Whether to display the page buttons
2682  var showPageNumbers = true;
2683
2684  // 'Previous' text
2685  var prevText = options.prevText || '&laquo;';
2686
2687  // 'Next' text
2688  var nextText = options.nextText || '&raquo;';
2689
2690  // Ellipsis text
2691  var ellipsisText = '&hellip;';
2692  var classPrefix = 'paginationjs';
2693
2694  // Default active class
2695  var activeClassName = 'active';
2696
2697  // Default disable class
2698  var disableClassName = 'disabled';
2699
2700  // Pagination element's position in the container
2701  var position = 'bottom';
2702
2703  // Whether to trigger pagination at initialization
2704  var triggerPagingOnInit = !options.skipInitialLoad;
2705  var showFirstOnEllipsisShow = true;
2706  var showLastOnEllipsisShow = true;
2707
2708  // Instantiated in init()
2709  var el = null;
2710
2711  // Controls scrollTop logic
2712  var firstRender = true;
2713  var renderBySearch = false;
2714  var disabled = false;
2715
2716  // Pagination script class selector
2717  var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script';
2718
2719  // Property Specific Image Override if No Image
2720  var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage;
2721
2722  // Construct template
2723  var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || '';
2724  var template = Handlebars.compile(templateHTML);
2725
2726  // Initialize
2727  init();
2728  function init() {
2729    Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
2730
2731    // Append/prepend pagination element to the pagination container
2732    if (mode === 'NUMBERED_PAGINATION') {
2733      el = document.createElement('div');
2734      el.className = 'paginationjs';
2735      container[position === 'bottom' ? 'append' : 'prepend'](el);
2736    }
2737    if (searchContainer) {
2738      initSearchContainer({
2739        fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true',
2740        fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true',
2741        fetchOffices: searchContainer.dataset.fetchOffices === 'true',
2742        fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true'
2743      }, function () {
2744        syncSearchFormState(searchParams);
2745      });
2746    }
2747
2748    // Bind events
2749    observer();
2750  }
2751  function syncSearchFormState(params) {
2752    searchContainer.dispatchEvent(new CustomEvent('sync', {
2753      detail: params
2754    }));
2755  }
2756  function initSearchContainer(options, done) {
2757    var promises = [];
2758    if (options.fetchNeighborhoods) {
2759      promises.push(fetchAllNeighborhoods(function (neighborhoods) {
2760        searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', {
2761          detail: {
2762            data: neighborhoods.map(function (item) {
2763              return {
2764                value: item.id,
2765                label: item.name
2766              };
2767            })
2768          }
2769        }));
2770      }));
2771    }
2772    if (options.fetchPostCategories) {
2773      promises.push(fetchPostCategories(function (categories) {
2774        searchContainer.dispatchEvent(new CustomEvent('post-categories-data', {
2775          detail: {
2776            data: categories
2777          }
2778        }));
2779      }));
2780    }
2781    if (options.fetchOffices) {
2782      promises.push(fetchOffices(function (offices) {
2783        searchContainer.dispatchEvent(new CustomEvent('offices-data', {
2784          detail: {
2785            data: offices
2786          }
2787        }));
2788      }));
2789    }
2790    if (options.fetchRentalRates) {
2791      promises.push(fetchAllRentalRates(function (rentalRates) {
2792        searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', {
2793          detail: {
2794            data: rentalRates
2795          }
2796        }));
2797      }));
2798    }
2799    if (promises.length > 0) {
2800      Promise.all(promises).then(function () {
2801        done();
2802      });
2803    } else {
2804      // element's custom code is not executed yet, so we're scheduling callback to after element's code
2805      setTimeout(done);
2806    }
2807  }
2808  function fetchAllNeighborhoods(done) {
2809    var useRouter = auxUsesRouter('neighborhoods');
2810    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same
2811    // args on both APIs (the federated neighborhoods field accepts
2812    // withProperties/withBlogPosts); only the selection set differs.
2813    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') + '}}';
2814    var payload = {};
2815    payload.offset = 0;
2816    payload.limit = 100;
2817    payload.companyId = variables.companyId;
2818    if (options.resource === 'properties') {
2819      payload.withProperties = {
2820        active: true
2821      };
2822      ['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) {
2823        if (variables[field] !== undefined && variables[field] !== null) {
2824          payload.withProperties[field] = variables[field];
2825        }
2826      });
2827    }
2828    if (options.resource === 'posts') {
2829      payload.withBlogPosts = {
2830        active: true
2831      };
2832      ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) {
2833        if (variables[field] !== undefined && variables[field] !== null) {
2834          payload.withBlogPosts[field] = variables[field];
2835        }
2836      });
2837    }
2838
2839    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2840    if (useRouter) {
2841      payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload);
2842    }
2843    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2844      query: gqlQuery,
2845      variables: payload
2846    }).then(function (res) {
2847      var value = res.body.data && res.body.data.neighborhoods || {};
2848      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2849      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2850      done(items, items.length);
2851    });
2852  }
2853  function fetchPostCategories(done) {
2854    var featured = options.resource === 'posts' && !!variables.featured;
2855    var useRouter = auxUsesRouter('postCategories');
2856    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
2857    // selection set differs ({ items {...} } on the router).
2858    var selection = 'id, name, publishedCount, featuredPublishedCount';
2859    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) + '}}';
2860    var payload = {};
2861    payload.offset = 0;
2862    payload.limit = 100;
2863    payload.companyId = variables.companyId;
2864    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2865      query: gqlQuery,
2866      variables: payload
2867    }).then(function (res) {
2868      var value = res.body.data && res.body.data.postCategories || {};
2869      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2870      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2871      done(items.map(function (item) {
2872        item.count = featured ? item.featuredPublishedCount : item.publishedCount;
2873        return item;
2874      }), items.length);
2875    });
2876  }
2877  function fetchOffices(done) {
2878    var useRouter = auxUsesRouter('offices');
2879    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
2880    // selection set differs ({ items {...} } on the router).
2881    var selection = 'id, name, tags';
2882    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two
2883    // APIs differ in more than the items wrapper: federated offices takes
2884    // companyId: ID! (legacy gateway: String), so each branch builds its whole doc.
2885    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 + '}}';
2886    var payload = {
2887      offset: 0,
2888      limit: 100,
2889      companyId: variables.companyId
2890    };
2891
2892    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2893    if (useRouter) {
2894      payload = window.luxuryPresence.routerApi.transformVariables('office
2894s', payload);
2895    }
2896    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
2897      query: gqlQuery,
2898      variables: payload
2899    }).then(function (res) {
2900      var value = res.body.data && res.body.data.offices || {};
2901      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2902      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
2903      done(items, items.length);
2904    });
2905  }
2906
2907  // ROUTER-CLEANUP: no rentalRates field on the federated router — legacy only.
2908  function fetchAllRentalRates(done) {
2909    var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl;
2910    var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}';
2911    var payload = {
2912      offset: 0,
2913      limit: 100,
2914      companyId: variables.companyId
2915    };
2916    superagent.post(url + '/graphql').withCredentials().send({
2917      query: gqlQuery,
2918      variables: payload
2919    }).then(function (res) {
2920      var items = res.body.data && res.body.data.rentalRates || [];
2921      done(items, items.length);
2922    }).catch(function (err) {
2923      console.error('Error fetching rental rates:', err);
2924      done([], 0);
2925    });
2926  }
2927  function fetchData(params, done) {
2928    var resource = options.resource;
2929    var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource];
2930    var payload = {};
2931    try {
2932      payload = JSON.parse(JSON.stringify(variables));
2933    } catch (e) {
2934      Object.keys(variables).forEach(function (variableName) {
2935        payload[variableName] = variables[variableName];
2936      });
2937    }
2938    payload.offset = (params.page - 1) * pageSize + offset;
2939    payload.limit = pageSize;
2940    payload.companyId = options.companyId;
2941    searchFormParams.forEach(function (formParam) {
2942      var val = params[formParam.formKey || formParam.param];
2943      if (val !== null && val !== undefined) {
2944        objSet(payload, formParam.param, val);
2945      }
2946    });
2947
2948    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2949    if (options.useRouterApi) {
2950      payload = window.luxuryPresence.routerApi.transformVariables(resource, payload);
2951    }
2952
2953    // TODO: Disabled loading due to jarring effect
2954    // dataContainer.html('Loading...');
2955    superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({
2956      query: gqlQuery,
2957      variables: payload
2958    }).then(function (res) {
2959      if (res.body.errors) {
2960        done(res.body.errors);
2961        return;
2962      }
2963      var data = res.body.data || {};
2964      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
2965      var resources;
2966      var resourceCount;
2967      if (options.useRouterApi) {
2968        var page = window.luxuryPresence.routerApi.transformPage(data[resource]);
2969        resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items);
2970        resourceCount = page.count;
2971      } else {
2972        resources = data[resource] || [];
2973        resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0;
2974      }
2975      if (resource === 'properties' && propertyPlaceholderImage?.id) {
2976        resources = resources.map(resource => {
2977          if (resource.media?.length === 0) {
2978            return Object.assign(resource, {
2979              media: [propertyPlaceholderImage]
2980            });
2981          }
2982          return resource;
2983        });
2984      }
2985      done(null, resources, resourceCount);
2986    });
2987  }
2988  function getTotalPage() {
2989    return Math.ceil(totalNumber / pageSize);
2990  }
2991  function renderPaginationList() {
2992    var totalPages = getTotalPage();
2993    var rangeStart = searchParams.page - pageRange;
2994    var rangeEnd = searchParams.page + pageRange;
2995    if (rangeEnd > totalPages) {
2996      rangeEnd = totalPages;
2997      rangeStart = totalPages - pageRange * 2;
2998      rangeStart = rangeStart < 1 ? 1 : rangeStart;
2999    }
3000    if (rangeStart <= 1) {
3001      rangeStart = 1;
3002      rangeEnd = Math.min(pageRange * 2 + 1, totalPages);
3003    }
3004
3005    // Making sure that 1 more page button is shown in edge positions
3006    if (pageRange === 0) {
3007      if (searchParams.page === totalPages) {
3008        rangeStart = totalPages <= 1 ? 1 : totalPages - 1;
3009      }
3010      if (searchParams.page === 1) {
3011        rangeEnd = Math.min(2, totalPages);
3012      }
3013    }
3014
3015    // Render pagination list
3016    if (mode === 'NUMBERED_PAGINATION') {
3017      el.innerHTML = generateHTML({
3018        currentPage: searchParams.page,
3019        pageRange: pageRange,
3020        rangeStart: rangeStart,
3021        rangeEnd: rangeEnd
3022      });
3023      if (totalPages < 2 && hidePaginationOnFirstPage) {
3024        container.style.display = 'none';
3025      } else {
3026        container.style.display = '';
3027      }
3028    } else if (mode === 'LOAD_MORE_BUTTON') {
3029      if (searchParams.page >= totalPages) {
3030        loadMoreButton.style.display = 'none';
3031      } else {
3032        loadMoreButton.style.display = '';
3033      }
3034    }
3035  }
3036  function render(data) {
3037    renderPaginationList();
3038
3039    // Render new content with handlebars
3040    var html = '';
3041    if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) {
3042      // If using load more, append search results to existing results
3043      html = dataContainer.innerHTML;
3044    }
3045    for (var i = 0; i < data.length; i++) {
3046      var itemData = recursivelyParse(data[i]);
3047      itemData.sectionIndex = options.sectionIndex;
3048      itemData.renderOptions = options.renderOptions;
3049      html += template(itemData);
3050    }
3051    dataContainer.innerHTML = html;
3052
3053    // Scroll Top
3054    if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) {
3055      // Only animate to the top if we replace dataContainer (numbered pagination)
3056      setTimeout(() => {
3057        const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset;
3058        window.scrollTo({
3059          top: scrollTargetOffsetTop,
3060          behavior: 'smooth'
3061        });
3062      }, 250);
3063    }
3064    return true;
3065  }
3066  function generateHTML(args) {
3067    const totalPages = getTotalPage();
3068    const {
3069      rangeStart,
3070      rangeEnd
3071    } = args;
3072    const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
3073      ...searchParams,
3074      page
3075    });
3076    let html = '';
3077    if (showPrevious || showPageNumbers || showNext) {
3078      html += '<div class="paginationjs-pages"><ul>';
3079
3080      // Previous button
3081      if (showPrevious) {
3082        if (searchParams.page <= 1) {
3083          html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`;
3084        } else {
3085          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>`;
3086        }
3087      }
3088
3089      // Pages
3090      if (showPageNumbers) {
3091        if (rangeStart <= 3) {
3092          for (let i = 1; i < rangeStart; i++) {
3093            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>`;
3094          }
3095        } else {
3096          if (showFirstOnEllipsisShow) {
3097            html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`;
3098          }
3099          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
3100        }
3101        for (let i = rangeStart; i <= rangeEnd; i++) {
3102          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>`;
3103        }
3104        if (rangeEnd < totalPages - 2) {
3105          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
3106          if (showLastOnEllipsisShow) {
3107            html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`;
3108          }
3109        } else {
3110          for (let i = rangeEnd + 1; i <= totalPages; i++) {
3111            html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`;
3112          }
3113        }
3114      }
3115
3116      // Next button
3117      if (showNext) {
3118        if (searchParams.page >= totalPages) {
3119          html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`;
3120        } else {
3121          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>`;
3122        }
3123      }
3124      html += '</ul></div>';
3125    }
3126    return html;
3127  }
3128  function go(newSearchParams, callback, restorationVisit) {
3129    if (disabled) return;
3130    var goToPageNumber = newSearchParams.page;
3131
3132    // Page number is out of bounds
3133    if (!goToPageNumber || goToPageNumber < 1) return;
3134    var totalPage = getTotalPage();
3135
3136    // Page number is out of bounds
3137    if (!restorationVisit && totalNumber > 0) {
3138      if (goToPageNumber > totalPage) return;
3139    }
3140    if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
3141      var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
3142        ...newSearchParams,
3143        page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null
3144      });
3145      if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) {
3146        window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, {
3147          queryString: true
3148        }));
3149      }
3150    }
3151
3152    // Fetch and update page
3153    fetchData(newSearchParams, renderWithData);
3154    disabled = true;
3155    function renderWithData(err, data, count) {
3156      if (err) {
3157        dataContainer.dispatchEvent(new Event('error'));
3158      } else {
3159        searchParams = {
3160          ...newSearchParams
3161        };
3162        totalNumber = count - offset;
3163        if (data.length === 0) {
3164          dataContainer.dispatchEvent(new Event('no-data'));
3165        } else {
3166          dataContainer.dispatchEvent(new Event('data'));
3167        }
3168        render(data);
3169        firstRender = false;
3170      }
3171      disabled = false;
3172      renderBySearch = false;
3173    }
3174  }
3175  function areQueryParamsEqual(first, second) {
3176    var differ = Object.keys(first).find(function (key) {
3177      return first[key] !== undefined && first[key] !== null && first[key] !== second[key];
3178    });
3179    if (differ) {
3180      return false;
3181    }
3182    differ = Object.keys(second).find(function (key) {
3183      return second[key] !== undefined && second[key] !== null && second[key] !== first[key];
3184    });
3185    return !differ;
3186  }
3187  function next(callback) {
3188    go({
3189      ...searchParams,
3190      page: searchParams.page + 1
3191    }, callback);
3192  }
3193  function previous(callback) {
3194    go({
3195      ...searchParams,
3196      page: searchParams.page - 1
3197    }, callback);
3198  }
3199  function refresh(callback) {
3200    go(searchParams, callback);
3201  }
3202  function update(params, callback) {
3203    renderBySearch = true;
3204    go(params, callback);
3205  }
3206  function observer() {
3207    if (searchContainer) {
3208      searchContainer.addEventListener('search', function (event, newSearchParams) {
3209        newSearchParams = event.detail || newSearchParams;
3210        update({
3211          ...searchParams,
3212          ...newSearchParams,
3213          page: 1
3214        });
3215      });
3216      searchContainer.addEventListener('clear-search', function () {
3217        const defaultSearchParams = {
3218          ...DefaultSearchParams
3219        };
3220        const isCurrentSearchFormStateDefault = areQueryParamsEqual({
3221          ...defaultSearchParams,
3222          page: null
3223        }, {
3224          ...searchParams,
3225          page: null
3226        });
3227
3228        // if mode is LOAD_MORE_BUTTON we should't make anything on clear
3229        // when search form have default state
3230        if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') {
3231          return;
3232        }
3233
3234        // if someone initially go to some page and click 'Clear' on search from
3235        // we should't navigate to first page. We should preserve page value
3236        if (isCurrentSearchFormStateDefault) {
3237          defaultSearchParams.page = searchParams.page;
3238        }
3239        syncSearchFormState(defaultSearchParams);
3240        update(defaultSearchParams);
3241      });
3242    }
3243    if (mode === 'LOAD_MORE_BUTTON') {
3244      loadMoreButton.addEventListener('click', function (event) {
3245        go({
3246          ...searchParams,
3247          page: searchParams.page + 1
3248        });
3249        return false;
3250      });
3251    }
3252    if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') {
3253      // Do initial render
3254      go(Object.assign({}, searchParams, {
3255        page: 1
3256      }));
3257      return;
3258    }
3259    if (mode === 'NUMBERED_PAGINATION') {
3260      // Go to specified page number
3261      container.addEventListener(eventPrefix + 'go', function (event) {
3262        let {
3263          pageNumber,
3264          done
3265        } = event.detail || {};
3266        pageNumber = parseInt(pageNumber, 10);
3267        if (!pageNumber) {
3268          return;
3269        }
3270        go({
3271          ...searchParams,
3272          page: pageNumber
3273        }, done);
3274      });
3275
3276      // Page number button click
3277      el.addEventListener('click', function (event) {
3278        let clickTarget = event.target;
3279        let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next');
3280        let pageNumber = current?.getAttribute('data-num');
3281        if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) {
3282          return;
3283        } else {
3284          go({
3285            ...searchParams,
3286            page: parseInt(pageNumber, 10)
3287          });
3288        }
3289        event.preventDefault();
3290      });
3291
3292      // Whether to load the default page
3293      var defaultPageNumber = searchParams.page;
3294      if (triggerPagingOnInit) {
3295        container.dispatchEvent(new CustomEvent(eventPrefix + 'go', {
3296          detail: {
3297            pageNumber: defaultPageNumber
3298          }
3299        }));
3300      }
3301    }
3302    window.addEventListener('popstate', function (event) {
3303      var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
3304      if (!areQueryParamsEqual(newParams, searchParams)) {
3305        go(newParams, null, true);
3306        if (searchContainer) {
3307          syncSearchFormState(newParams);
3308        }
3309      }
3310    });
3311  }
3312  function replaceVariables(template, variables) {
3313    var formattedString;
3314    for (var key in variables) {
3315      var value = variables[key];
3316      var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img');
3317      formattedString = (formattedString || template).replace(regexp, value);
3318    }
3319    return formattedString;
3320  }
3321  function isTextEditorValue(obj) {
3322    return 'raw' in obj || 'gjs' in obj;
3323  }
3324  function getTextEditorValue(obj) {
3325    if (!obj.html) {
3326      return '';
3327    }
3328    var data = obj.html;
3329    var css = (obj.raw || obj.gjs || {}).css;
3330    if (css) {
3331      data = data + '<style>' + css + '</style>';
3332    }
3333    return data;
3334  }
3335
3336  /**
3337   * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor.
3338   * strips out raw proprties and returns only HTML if it exists.
3339   * @param {Object} resources a collection retrieved from the database
3340   * @return {Object} the newly modified object.
3341   */
3342  function recursivelyParse(resources) {
3343    forEach(resources, function (value, key) {
3344      if (!value) {
3345        return;
3346      }
3347      if (value instanceof Object) {
3348        if (isTextEditorValue(value)) {
3349          resources[key] = getTextEditorValue(value);
3350          return;
3351        } else {
3352          return recursivelyParse(value);
3353        }
3354      }
3355      try {
3356        var parsedData = JSON.parse(value);
3357        if (isTextEditorValue(parsedData)) {
3358          resources[key] = getTextEditorValue(parsedData);
3359        }
3360      } catch (e) {
3361        // do nothing if we failed to parse value as JSON
3362      }
3363    });
3364    return resources;
3365  }
3366  function forEach(collection, iteratee) {
3367    var func = Array.isArray(collection) ? arrayEach : baseFor;
3368    return func(collection, iteratee);
3369  }
3370  function baseFor(object, iteratee) {
3371    if (!object) {
3372      return;
3373    }
3374    var iterable = Object(object);
3375    var props = Object.keys(object);
3376    var length = props.length;
3377    var index = -1;
3378    while (length--) {
3379      var key = props[++index];
3380      if (iteratee(iterable[key], key, iterable) === false) {
3381        break;
3382      }
3383    }
3384    return object;
3385  }
3386  function objSet(obj, path, value) {
3387    const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
3388    pathArray.reduce((acc, key, i) => {
3389      if (acc[key] === undefined) acc[key] = {};
3390      if (i === pathArray.length - 1) acc[key] = value;
3391      return acc[key];
3392    }, obj);
3393  }
3394  function arrayEach(array, iteratee) {
3395    var index = -1;
3396    var length = array.length;
3397    while (++index < length) {
3398      if (iteratee(array[index], index, array) === false) {
3399        break;
3400      }
3401    }
3402    return array;
3403  }
3404  function selectPageRangeMode(e) {
3405    pageRange = e.matches ? mobilePageRange : desktopPageRange;
3406    renderPaginationList();
3407  }
3408  paginationMql.addEventListener('change', selectPageRangeMode);
3409})('section-40e257c9-edea-4cb8-9ee1-32c3ade9c174', JSON.parse("{\"pageSize\":\"4\",\"resource\":\"agents\",\"pageRange\":0,\"variables\":{\"limit\":4,\"offset\":0,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"categoryId\":\"{{pageElement.categoryId}}\",\"agentIds\":[\"4cb99f5a-1472-43f5-ad3e-a9785e1fb3f4\",\"804ba048-3147-4865-843d-6aeb2945ad30\",\"bba54182-667c-4b16-86c2-92a7bef69859\",\"68205833-723a-4432-bee8-2a9312b5b5ae\"]},\"searchFormParams\":[{\"param\":\"search\",\"urlKey\":\"search\"},{\"param\":\"officeId\",\"global\":true,\"urlKey\":\"officeId\"},{\"param\":\"tags\",\"global\":true,\"urlKey\":\"area\"}],\"skipScrollOnSearch\":false,\"scrollTargetSelector\":\".search-form\",\"hidePaginationOnFirstPage\":true,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"usePageResource\":false,\"sectionIndex\":3,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
3410} catch(e) {
3411console.log(e);
3412}
3413                try {
3414(function init(sectionDomId) {
3415  const $section = $("#" + sectionDomId);
3416  const $searchContainer = $section.find(".search-container");
3417  const $officeSelect = $section.find('.js-office-input');
3418  const $tagSelect = $section.find('.js-tag-input');
3419  const $searchInput = $section.find('.js-search-input');
3420  const $emptyMsg = $section.find('.js-empty-message');
3421  const $dataContainer = $section.find('.data-container');
3422  const $containter = $section.find('.js-container');
3423  const officeFilter = $searchContainer.data('fetchOffices');
3424  const $resetSearchInput = $searchContainer.find('.lp-input-reset');
3425  convertSelectToDropdown($tagSelect);
3426  $resetSearchInput.on('click', function (event) {
3427    event.preventDefault();
3428    $searchInput.val('');
3429    onSearch();
3430  });
3431  $dataContainer.on("data", function () {
3432    $emptyMsg.removeClass("visible");
3433    $containter.removeClass('no-data');
3434  });
3435  $dataContainer.on("no-data", function () {
3436    $emptyMsg.addClass("visible");
3437    $containter.addClass('no-data');
3438  });
3439  $searchInput.on('input', window.luxuryPresence.debounce(onSearch, 1000));
3440  function onSearch() {
3441    const params = {};
3442    if (officeFilter) params.officeId = $officeSelect.val() === '' ? null : [$officeSelect.val()];
3443    if ($tagSelect.length > 0) params.tags = $tagSelect.val() === '' ? null : [$tagSelect.val()];
3444    params.search = $searchInput.val() || null;
3445    $searchContainer[0]?.dispatchEvent(new CustomEvent('search', {
3446      detail: params
3447    }));
3448  }
3449  if (!officeFilter && $tagSelect.length === 0) return;
3450  var previousOption = '';
3451  $searchContainer.on('offices-data', function (evt) {
3452    let {
3453      data
3454    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3455    data = evt.detail?.data || data;
3456    $officeSelect.append(data.map(office => `<option value="${office.id}">${office.name}</option>`).join("\n"));
3457    convertSelectToDropdown($officeSelect);
3458  });
3459  function updateDropdown(select, value) {
3460    let $dropdown = $(select).next();
3461    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
3462    let $dropdownContent = $dropdown.find(".custom-select-content");
3463    let $selectedOption = $dropdownContent.find(`button[value="${value}"]`);
3464    function unselectOption() {
3465      $linkedOption = $originalSelect.find("option").eq(0);
3466      $linkedOption.prop("selected", true);
3467      $dropdownToggle.html($linkedOption.html());
3468      $dropdownContent.find(".custom-select-item").removeClass("is-selected");
3469      $originalSelect.change();
3470      previousOption = "";
3471    }
3472    if (!$selectedOption) return;
3473    if ($selectedOption.hasClass("is-disabled")) return;
3474    let elementNumber = $selectedOption.index();
3475    let $originalSelect = $selectedOption.closest(".custom-select").siblings("select");
3476    let $linkedOption = $originalSelect.find("option").eq(elementNumber);
3477    if (previousOption === value) {
3478      unselectOption();
3479      return;
3480    }
3481    if (!$linkedOption.prop("selected")) {
3482      $linkedOption.prop("selected", true);
3483      previousOption = value;
3484      $originalSelect.change();
3485      $selectedOption.addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected");
3486      closeSelectMenu($selectedOption.closest(".custom-select-menu"));
3487      $dropdownToggle.html($linkedOption.html());
3488      if ($linkedOption.val()) {
3489        $dropdownToggle.removeClass("is-placeholder");
3490        $dropdown[$linkedOption.val() !== "" ? "addClass" : "removeClass"]("has-selection");
3491      } else {
3492        $dropdown.removeClass("has-selection");
3493        $dropdownToggle.addClass("is-placeholder");
3494      }
3495    }
3496  }
3497  function convertSelectToDropdown(selectItem) {
3498    let customDropdown = `
3499          <div class="custom-select" role="presentation">
3500              <button class="custom-select-toggle" type="button" aria-haspopup="true" aria-expanded="false"></button>
3501              <div class="custom-select-menu">
3502                  <div class="custom-select-content">
3503                  </div>
3504              </div>
3505          </div>`;
3506    $(customDropdown).insertAfter(selectItem);
3507    let $dropdown = $(selectItem).next();
3508    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
3509    let $dropdownMenu = $dropdown.find(".custom-select-menu");
3510    let $dropdownContent = $dropdown.find(".custom-select-content");
3511    $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select");
3512    $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom");
3513    $dropdownToggle.attr("data-name", $(selectItem).attr("name"));
3514    $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id"));
3515    appendOptionButtons(selectItem, $dropdownContent);
3516    $(selectItem).removeClass().addClass("sr-only");
3517    $(selectItem).on("focus", function () {
3518      showSelectMenu($dropdownMenu[0]);
3519      $dropdownToggle.focus();
3520    });
3521    var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text();
3522    $dropdownToggle.addClass("is-placeholder").html(toggleText);
3523    $dropdown.on("click", ".custom-select-item", function (e) {
3524      updateDropdown($(this).closest(".lp-input-group").find("select"), $(this).attr("value"));
3525    });
3526    function convertOptionToButton(option) {
3527      var optionText = $(option).text();
3528      var optionValue = $(option).attr("value") || $(option).text();
3529      var optionIsDisabled = $(option).prop("disabled");
3530      var outputButton = `<button value="${optionValue}" class="custom-select-item lp-icon" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`;
3531      return outputButton;
3532    }
3533    function appendOptionButtons(selectItem, appendTarget) {
3534      $(selectItem).find("option").each(function () {
3535        let currentButton = convertOptionToButton(this);
3536        $(appendTarget).append(currentButton);
3537      });
3538    }
3539    function showSelectMenu(selectMenu) {
3540      var customSelect = $(selectMenu).closest(".custom-select")[0];
3541      customSelect.classList.add('open');
3542      $(selectMenu).slideDown();
3543    }
3544    $dropdown.on("click", ".custom-select-toggle", function (e) {
3545      var $customSelect = $(this).closest(".custom-select");
3546      var selectMenu = $customSelect.find(".custom-select-menu")[0];
3547      if ($customSelect.hasClass("open")) {
3548        closeSelectMenu(selectMenu);
3549      } else {
3550        showSelectMenu(selectMenu);
3551      }
3552    });
3553    $(document.body).on("click", function (e) {
3554      if (!$(e.target).closest(`#${sectionDomId} .js-select-input`).length) {
3555        $(`#${sectionDomId} .custom-select.open`).each(function () {
3556          const selectMenu = $(this).find(".custom-select-menu")[0];
3557          closeSelectMenu(selectMenu);
3558        });
3559      }
3560    });
3561  }
3562  function closeSelectMenu(selectMenu) {
3563    var customSelect = $(selectMenu).closest(".custom-select")[0];
3564    $(customSelect).removeClass("open");
3565    $(selectMenu).slideUp();
3566  }
3567  $officeSelect.change(onSearch);
3568  $tagSelect.change(onSearch);
3569})('section-40e257c9-edea-4cb8-9ee1-32c3ade9c174', JSON.parse("{\"resource\":\"agents\",\"useRouterApi\":false,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"usePageResource\":false,\"sectionIndex\":3,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
3570} catch(e) {
3571console.log(e);
3572}
3573                try {
3574(function init(sectionDomId, options) {
3575  let section = null;
3576  switch (sectionDomId) {
3577    case 'NAVBAR':
3578      section = document.querySelector('body > nav, #global-navbar');
3579      break;
3580    case 'FOOTER':
3581      section = document.querySelector('body > footer, #global-footer');
3582      break;
3583    case 'SIDEMENU':
3584      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
3585      break;
3586    case 'CONTACT':
3587      section = document.querySelector('#modal-global-contact-us');
3588      break;
3589    case 'MOBILE_CONTACT':
3590      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
3591      break;
3592    case 'SUBSCRIBE':
3593      // Subscribe Not Implemented
3594      section = null;
3595      break;
3596    case 'ACCOUNT':
3597      // Account Not Implemented
3598      section = null;
3599      break;
3600    default:
3601      section = document.querySelector('#' + sectionDomId);
3602  }
3603  if (!section) {
3604    return;
3605  }
3606
3607  // Where content / items are rendered
3608  const dataContainer = section.querySelector('.data-container');
3609  if (!dataContainer) {
3610    // no place to render items = no need to query server or do anything else
3611    return;
3612  }
3613  let variables = options.variables || {};
3614
3615  // Some variables in options may not have been injected - remove
3616  Object.keys(variables).forEach(function (variableName) {
3617    if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) {
3618      delete variables[variableName];
3619    }
3620  });
3621
3622  // Merge page query variables
3623  if (options.usePageResource) {
3624    variables = {
3625      ...variables,
3626      ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource]
3627    };
3628  }
3629
3630  // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers
3631  // resolve the flag — fetchData reads the section stamp, aux fetches read
3632  // their own resource's stamp (auxUsesRouter).
3633  function apiUrl(useRouter) {
3634    return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl);
3635  }
3636
3637  // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's
3638  // (options.routerApiAux is stamped per aux resource server-side).
3639  function auxUsesRouter(resource) {
3640    return !!(options.routerApiAux && options.routerApiAux[resource]);
3641  }
3642
3643  // Pagination Executes on a Numbered Pagination Container
3644  //  Or via a load more button
3645  let mode = 'BUTTONLESS_PAGINATION';
3646  const container = section.querySelector('.pagination-container');
3647  const loadMoreButton = section.querySelector(options?.loadMoreSelector);
3648  if (container) {
3649    mode = 'NUMBERED_PAGINATION';
3650  }
3651  if (loadMoreButton) {
3652    mode = 'LOAD_MORE_BUTTON';
3653  }
3654  let searchContainer = section.querySelector('.search-container');
3655  const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false;
3656  const eventPrefix = '__pagination-';
3657  const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{
3658    param: 'neighborhoodId',
3659    urlKey: 'neighborhood'
3660  }, {
3661    param: 'search',
3662    urlKey: 'search'
3663  }, {
3664    param: 'salesPriceGTE',
3665    urlKey: 'pricemin',
3666    formKey: 'priceMin',
3667    type: 'int'
3668  }, {
3669    param: 'salesPriceLTE',
3670    urlKey: 'pricemax',
3671    formKey: 'priceMax',
3672    type: 'int'
3673  }, {
3674    param: 'livingSpaceSizeGTE',
3675    urlKey: 'areamin',
3676    formKey: 'areaMin',
3677    type: 'int'
3678  }, {
3679    param: 'livingSpaceSizeLTE',
3680    urlKey: 'areamax',
3681    formKey: 'areaMax',
3682    type: 'int'
3683  }] : []);
3684
3685  // Total entries - initialized in first render
3686  let totalNumber = 0;
3687  const DefaultSearchParams = {
3688    page: 1
3689  };
3690  searchFormParams.forEach(function (formParam) {
3691    DefaultSearchParams[formParam.formKey || formParam.param] = null;
3692  });
3693  let searchParams = {
3694    ...DefaultSearchParams
3695  };
3696  const offset = options.variables?.offset || 0;
3697  let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section;
3698  let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100;
3699
3700  // entries of per page
3701  // when query variables for a given section would't be filled options.pageSize can store
3702  // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value
3703  let pageSize = parseInt(options.pageSize, 10) || 9;
3704
3705  // Adding mobile pageRange support
3706  var NARROW_BREAKPOINT = 600;
3707  var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT;
3708  var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`);
3709
3710  // Page range (pages on both sides of the current page)
3711  var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0;
3712  var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2;
3713  var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange;
3714
3715  // Whether to display the 'Previous' button
3716  var showPrevious = true;
3717
3718  // Whether to display the 'Next' button
3719  var showNext = true;
3720
3721  // Whether to display the page buttons
3722  var showPageNumbers = true;
3723
3724  // 'Previous' text
3725  var prevText = options.prevText || '&laquo;';
3726
3727  // 'Next' text
3728  var nextText = options.nextText || '&raquo;';
3729
3730  // Ellipsis text
3731  var ellipsisText = '&hellip;';
3732  var classPrefix = 'paginationjs';
3733
3734  // Default active class
3735  var activeClassName = 'active';
3736
3737  // Default disable class
3738  var disableClassName = 'disabled';
3739
3740  // Pagination element's position in the container
3741  var position = 'bottom';
3742
3743  // Whether to trigger pagination at initialization
3744  var triggerPagingOnInit = !options.skipInitialLoad;
3745  var showFirstOnEllipsisShow = true;
3746  var showLastOnEllipsisShow = true;
3747
3748  // Instantiated in init()
3749  var el = null;
3750
3751  // Controls scrollTop logic
3752  var firstRender = true;
3753  var renderBySearch = false;
3754  var disabled = false;
3755
3756  // Pagination script class selector
3757  var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script';
3758
3759  // Property Specific Image Override if No Image
3760  var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage;
3761
3762  // Construct template
3763  var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || '';
3764  var template = Handlebars.compile(templateHTML);
3765
3766  // Initialize
3767  init();
3768  function init() {
3769    Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
3770
3771    // Append/prepend pagination element to the pagination container
3772    if (mode === 'NUMBERED_PAGINATION') {
3773      el = document.createElement('div');
3774      el.className = 'paginationjs';
3775      container[position === 'bottom' ? 'append' : 'prepend'](el);
3776    }
3777    if (searchContainer) {
3778      initSearchContainer({
3779        fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true',
3780        fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true',
3781        fetchOffices: searchContainer.dataset.fetchOffices === 'true',
3782        fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true'
3783      }, function () {
3784        syncSearchFormState(searchParams);
3785      });
3786    }
3787
3788    // Bind events
3789    observer();
3790  }
3791  function syncSearchFormState(params) {
3792    searchContainer.dispatchEvent(new CustomEvent('sync', {
3793      detail: params
3794    }));
3795  }
3796  function initSearchContainer(options, done) {
3797    var promises = [];
3798    if (options.fetchNeighborhoods) {
3799      promises.push(fetchAllNeighborhoods(function (neighborhoods) {
3800        searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', {
3801          detail: {
3802            data: neighborhoods.map(function (item) {
3803              return {
3804                value: item.id,
3805                label: item.name
3806              };
3807            })
3808          }
3809        }));
3810      }));
3811    }
3812    if (options.fetchPostCategories) {
3813      promises.push(fetchPostCategories(function (categories) {
3814        searchContainer.dispatchEvent(new CustomEvent('post-categories-data', {
3815          detail: {
3816            data: categories
3817          }
3818        }));
3819      }));
3820    }
3821    if (options.fetchOffices) {
3822      promises.push(fetchOffices(function (offices) {
3823        searchContainer.dispatchEvent(new CustomEvent('offices-data', {
3824          detail: {
3825            data: offices
3826          }
3827        }));
3828      }));
3829    }
3830    if (options.fetchRentalRates) {
3831      promises.push(fetchAllRentalRates(function (rentalRates) {
3832        searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', {
3833          detail: {
3834            data: rentalRates
3835          }
3836        }));
3837      }));
3838    }
3839    if (promises.length > 0) {
3840      Promise.all(promises).then(function () {
3841        done();
3842      });
3843    } else {
3844      // element's custom code is not executed yet, so we're scheduling callback to after element's code
3845      setTimeout(done);
3846    }
3847  }
3848  function fetchAllNeighborhoods(done) {
3849    var useRouter = auxUsesRouter('neighborhoods');
3850    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same
3851    // args on both APIs (the federated neighborhoods field accepts
3852    // withProperties/withBlogPosts); only the selection set differs.
3853    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') + '}}';
3854    var payload = {};
3855    payload.offset = 0;
3856    payload.limit = 100;
3857    payload.companyId = variables.companyId;
3858    if (options.resource === 'properties') {
3859      payload.withProperties = {
3860        active: true
3861      };
3862      ['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) {
3863        if (variables[field] !== undefined && variables[field] !== null) {
3864          payload.withProperties[field] = variables[field];
3865        }
3866      });
3867    }
3868    if (options.resource === 'posts') {
3869      payload.withBlogPosts = {
3870        active: true
3871      };
3872      ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) {
3873        if (variables[field] !== undefined && variables[field] !== null) {
3874          payload.withBlogPosts[field] = variables[field];
3875        }
3876      });
3877    }
3878
3879    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3880    if (useRouter) {
3881      payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload);
3882    }
3883    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
3884      query: gqlQuery,
3885      variables: payload
3886    }).then(function (res) {
3887      var value = res.body.data && res.body.data.neighborhoods || {};
3888      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3889      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
3890      done(items, items.length);
3891    });
3892  }
3893  function fetchPostCategories(done) {
3894    var featured = options.resource === 'posts' && !!variables.featured;
3895    var useRouter = auxUsesRouter('postCategories');
3896    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
3897    // selection set differs ({ items {...} } on the router).
3898    var selection = 'id, name, publishedCount, featuredPublishedCount';
3899    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) + '}}';
3900    var payload = {};
3901    payload.offset = 0;
3902    payload.limit = 100;
3903    payload.companyId = variables.companyId;
3904    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
3905      query: gqlQuery,
3906      variables: payload
3907    }).then(function (res) {
3908      var value = res.body.data && res.body.data.postCategories || {};
3909      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3910      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
3911      done(items.map(function (item) {
3912        item.count = featured ? item.featuredPublishedCount : item.publishedCount;
3913        return item;
3914      }), items.length);
3915    });
3916  }
3917  function fetchOffices(done) {
3918    var useRouter = auxUsesRouter('offices');
3919    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
3920    // selection set differs ({ items {...} } on the router).
3921    var selection = 'id, name, tags';
3922    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two
3923    // APIs differ in more than the items wrapper: federated offices takes
3924    // companyId: ID! (legacy gateway: String), so each branch builds its whole doc.
3925    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 + '}}';
3926    var payload = {
3927      offset: 0,
3928      limit: 100,
3929      companyId: variables.companyId
3930    };
3931
3932    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3933    if (useRouter) {
3934      payload = window.luxuryPresence.routerApi.transformVariables('office
3934s', payload);
3935    }
3936    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
3937      query: gqlQuery,
3938      variables: payload
3939    }).then(function (res) {
3940      var value = res.body.data && res.body.data.offices || {};
3941      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3942      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
3943      done(items, items.length);
3944    });
3945  }
3946
3947  // ROUTER-CLEANUP: no rentalRates field on the federated router — legacy only.
3948  function fetchAllRentalRates(done) {
3949    var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl;
3950    var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}';
3951    var payload = {
3952      offset: 0,
3953      limit: 100,
3954      companyId: variables.companyId
3955    };
3956    superagent.post(url + '/graphql').withCredentials().send({
3957      query: gqlQuery,
3958      variables: payload
3959    }).then(function (res) {
3960      var items = res.body.data && res.body.data.rentalRates || [];
3961      done(items, items.length);
3962    }).catch(function (err) {
3963      console.error('Error fetching rental rates:', err);
3964      done([], 0);
3965    });
3966  }
3967  function fetchData(params, done) {
3968    var resource = options.resource;
3969    var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource];
3970    var payload = {};
3971    try {
3972      payload = JSON.parse(JSON.stringify(variables));
3973    } catch (e) {
3974      Object.keys(variables).forEach(function (variableName) {
3975        payload[variableName] = variables[variableName];
3976      });
3977    }
3978    payload.offset = (params.page - 1) * pageSize + offset;
3979    payload.limit = pageSize;
3980    payload.companyId = options.companyId;
3981    searchFormParams.forEach(function (formParam) {
3982      var val = params[formParam.formKey || formParam.param];
3983      if (val !== null && val !== undefined) {
3984        objSet(payload, formParam.param, val);
3985      }
3986    });
3987
3988    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
3989    if (options.useRouterApi) {
3990      payload = window.luxuryPresence.routerApi.transformVariables(resource, payload);
3991    }
3992
3993    // TODO: Disabled loading due to jarring effect
3994    // dataContainer.html('Loading...');
3995    superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({
3996      query: gqlQuery,
3997      variables: payload
3998    }).then(function (res) {
3999      if (res.body.errors) {
4000        done(res.body.errors);
4001        return;
4002      }
4003      var data = res.body.data || {};
4004      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
4005      var resources;
4006      var resourceCount;
4007      if (options.useRouterApi) {
4008        var page = window.luxuryPresence.routerApi.transformPage(data[resource]);
4009        resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items);
4010        resourceCount = page.count;
4011      } else {
4012        resources = data[resource] || [];
4013        resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0;
4014      }
4015      if (resource === 'properties' && propertyPlaceholderImage?.id) {
4016        resources = resources.map(resource => {
4017          if (resource.media?.length === 0) {
4018            return Object.assign(resource, {
4019              media: [propertyPlaceholderImage]
4020            });
4021          }
4022          return resource;
4023        });
4024      }
4025      done(null, resources, resourceCount);
4026    });
4027  }
4028  function getTotalPage() {
4029    return Math.ceil(totalNumber / pageSize);
4030  }
4031  function renderPaginationList() {
4032    var totalPages = getTotalPage();
4033    var rangeStart = searchParams.page - pageRange;
4034    var rangeEnd = searchParams.page + pageRange;
4035    if (rangeEnd > totalPages) {
4036      rangeEnd = totalPages;
4037      rangeStart = totalPages - pageRange * 2;
4038      rangeStart = rangeStart < 1 ? 1 : rangeStart;
4039    }
4040    if (rangeStart <= 1) {
4041      rangeStart = 1;
4042      rangeEnd = Math.min(pageRange * 2 + 1, totalPages);
4043    }
4044
4045    // Making sure that 1 more page button is shown in edge positions
4046    if (pageRange === 0) {
4047      if (searchParams.page === totalPages) {
4048        rangeStart = totalPages <= 1 ? 1 : totalPages - 1;
4049      }
4050      if (searchParams.page === 1) {
4051        rangeEnd = Math.min(2, totalPages);
4052      }
4053    }
4054
4055    // Render pagination list
4056    if (mode === 'NUMBERED_PAGINATION') {
4057      el.innerHTML = generateHTML({
4058        currentPage: searchParams.page,
4059        pageRange: pageRange,
4060        rangeStart: rangeStart,
4061        rangeEnd: rangeEnd
4062      });
4063      if (totalPages < 2 && hidePaginationOnFirstPage) {
4064        container.style.display = 'none';
4065      } else {
4066        container.style.display = '';
4067      }
4068    } else if (mode === 'LOAD_MORE_BUTTON') {
4069      if (searchParams.page >= totalPages) {
4070        loadMoreButton.style.display = 'none';
4071      } else {
4072        loadMoreButton.style.display = '';
4073      }
4074    }
4075  }
4076  function render(data) {
4077    renderPaginationList();
4078
4079    // Render new content with handlebars
4080    var html = '';
4081    if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) {
4082      // If using load more, append search results to existing results
4083      html = dataContainer.innerHTML;
4084    }
4085    for (var i = 0; i < data.length; i++) {
4086      var itemData = recursivelyParse(data[i]);
4087      itemData.sectionIndex = options.sectionIndex;
4088      itemData.renderOptions = options.renderOptions;
4089      html += template(itemData);
4090    }
4091    dataContainer.innerHTML = html;
4092
4093    // Scroll Top
4094    if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) {
4095      // Only animate to the top if we replace dataContainer (numbered pagination)
4096      setTimeout(() => {
4097        const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset;
4098        window.scrollTo({
4099          top: scrollTargetOffsetTop,
4100          behavior: 'smooth'
4101        });
4102      }, 250);
4103    }
4104    return true;
4105  }
4106  function generateHTML(args) {
4107    const totalPages = getTotalPage();
4108    const {
4109      rangeStart,
4110      rangeEnd
4111    } = args;
4112    const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
4113      ...searchParams,
4114      page
4115    });
4116    let html = '';
4117    if (showPrevious || showPageNumbers || showNext) {
4118      html += '<div class="paginationjs-pages"><ul>';
4119
4120      // Previous button
4121      if (showPrevious) {
4122        if (searchParams.page <= 1) {
4123          html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`;
4124        } else {
4125          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>`;
4126        }
4127      }
4128
4129      // Pages
4130      if (showPageNumbers) {
4131        if (rangeStart <= 3) {
4132          for (let i = 1; i < rangeStart; i++) {
4133            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>`;
4134          }
4135        } else {
4136          if (showFirstOnEllipsisShow) {
4137            html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`;
4138          }
4139          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
4140        }
4141        for (let i = rangeStart; i <= rangeEnd; i++) {
4142          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>`;
4143        }
4144        if (rangeEnd < totalPages - 2) {
4145          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
4146          if (showLastOnEllipsisShow) {
4147            html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`;
4148          }
4149        } else {
4150          for (let i = rangeEnd + 1; i <= totalPages; i++) {
4151            html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`;
4152          }
4153        }
4154      }
4155
4156      // Next button
4157      if (showNext) {
4158        if (searchParams.page >= totalPages) {
4159          html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`;
4160        } else {
4161          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>`;
4162        }
4163      }
4164      html += '</ul></div>';
4165    }
4166    return html;
4167  }
4168  function go(newSearchParams, callback, restorationVisit) {
4169    if (disabled) return;
4170    var goToPageNumber = newSearchParams.page;
4171
4172    // Page number is out of bounds
4173    if (!goToPageNumber || goToPageNumber < 1) return;
4174    var totalPage = getTotalPage();
4175
4176    // Page number is out of bounds
4177    if (!restorationVisit && totalNumber > 0) {
4178      if (goToPageNumber > totalPage) return;
4179    }
4180    if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
4181      var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
4182        ...newSearchParams,
4183        page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null
4184      });
4185      if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) {
4186        window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, {
4187          queryString: true
4188        }));
4189      }
4190    }
4191
4192    // Fetch and update page
4193    fetchData(newSearchParams, renderWithData);
4194    disabled = true;
4195    function renderWithData(err, data, count) {
4196      if (err) {
4197        dataContainer.dispatchEvent(new Event('error'));
4198      } else {
4199        searchParams = {
4200          ...newSearchParams
4201        };
4202        totalNumber = count - offset;
4203        if (data.length === 0) {
4204          dataContainer.dispatchEvent(new Event('no-data'));
4205        } else {
4206          dataContainer.dispatchEvent(new Event('data'));
4207        }
4208        render(data);
4209        firstRender = false;
4210      }
4211      disabled = false;
4212      renderBySearch = false;
4213    }
4214  }
4215  function areQueryParamsEqual(first, second) {
4216    var differ = Object.keys(first).find(function (key) {
4217      return first[key] !== undefined && first[key] !== null && first[key] !== second[key];
4218    });
4219    if (differ) {
4220      return false;
4221    }
4222    differ = Object.keys(second).find(function (key) {
4223      return second[key] !== undefined && second[key] !== null && second[key] !== first[key];
4224    });
4225    return !differ;
4226  }
4227  function next(callback) {
4228    go({
4229      ...searchParams,
4230      page: searchParams.page + 1
4231    }, callback);
4232  }
4233  function previous(callback) {
4234    go({
4235      ...searchParams,
4236      page: searchParams.page - 1
4237    }, callback);
4238  }
4239  function refresh(callback) {
4240    go(searchParams, callback);
4241  }
4242  function update(params, callback) {
4243    renderBySearch = true;
4244    go(params, callback);
4245  }
4246  function observer() {
4247    if (searchContainer) {
4248      searchContainer.addEventListener('search', function (event, newSearchParams) {
4249        newSearchParams = event.detail || newSearchParams;
4250        update({
4251          ...searchParams,
4252          ...newSearchParams,
4253          page: 1
4254        });
4255      });
4256      searchContainer.addEventListener('clear-search', function () {
4257        const defaultSearchParams = {
4258          ...DefaultSearchParams
4259        };
4260        const isCurrentSearchFormStateDefault = areQueryParamsEqual({
4261          ...defaultSearchParams,
4262          page: null
4263        }, {
4264          ...searchParams,
4265          page: null
4266        });
4267
4268        // if mode is LOAD_MORE_BUTTON we should't make anything on clear
4269        // when search form have default state
4270        if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') {
4271          return;
4272        }
4273
4274        // if someone initially go to some page and click 'Clear' on search from
4275        // we should't navigate to first page. We should preserve page value
4276        if (isCurrentSearchFormStateDefault) {
4277          defaultSearchParams.page = searchParams.page;
4278        }
4279        syncSearchFormState(defaultSearchParams);
4280        update(defaultSearchParams);
4281      });
4282    }
4283    if (mode === 'LOAD_MORE_BUTTON') {
4284      loadMoreButton.addEventListener('click', function (event) {
4285        go({
4286          ...searchParams,
4287          page: searchParams.page + 1
4288        });
4289        return false;
4290      });
4291    }
4292    if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') {
4293      // Do initial render
4294      go(Object.assign({}, searchParams, {
4295        page: 1
4296      }));
4297      return;
4298    }
4299    if (mode === 'NUMBERED_PAGINATION') {
4300      // Go to specified page number
4301      container.addEventListener(eventPrefix + 'go', function (event) {
4302        let {
4303          pageNumber,
4304          done
4305        } = event.detail || {};
4306        pageNumber = parseInt(pageNumber, 10);
4307        if (!pageNumber) {
4308          return;
4309        }
4310        go({
4311          ...searchParams,
4312          page: pageNumber
4313        }, done);
4314      });
4315
4316      // Page number button click
4317      el.addEventListener('click', function (event) {
4318        let clickTarget = event.target;
4319        let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next');
4320        let pageNumber = current?.getAttribute('data-num');
4321        if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) {
4322          return;
4323        } else {
4324          go({
4325            ...searchParams,
4326            page: parseInt(pageNumber, 10)
4327          });
4328        }
4329        event.preventDefault();
4330      });
4331
4332      // Whether to load the default page
4333      var defaultPageNumber = searchParams.page;
4334      if (triggerPagingOnInit) {
4335        container.dispatchEvent(new CustomEvent(eventPrefix + 'go', {
4336          detail: {
4337            pageNumber: defaultPageNumber
4338          }
4339        }));
4340      }
4341    }
4342    window.addEventListener('popstate', function (event) {
4343      var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
4344      if (!areQueryParamsEqual(newParams, searchParams)) {
4345        go(newParams, null, true);
4346        if (searchContainer) {
4347          syncSearchFormState(newParams);
4348        }
4349      }
4350    });
4351  }
4352  function replaceVariables(template, variables) {
4353    var formattedString;
4354    for (var key in variables) {
4355      var value = variables[key];
4356      var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img');
4357      formattedString = (formattedString || template).replace(regexp, value);
4358    }
4359    return formattedString;
4360  }
4361  function isTextEditorValue(obj) {
4362    return 'raw' in obj || 'gjs' in obj;
4363  }
4364  function getTextEditorValue(obj) {
4365    if (!obj.html) {
4366      return '';
4367    }
4368    var data = obj.html;
4369    var css = (obj.raw || obj.gjs || {}).css;
4370    if (css) {
4371      data = data + '<style>' + css + '</style>';
4372    }
4373    return data;
4374  }
4375
4376  /**
4377   * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor.
4378   * strips out raw proprties and returns only HTML if it exists.
4379   * @param {Object} resources a collection retrieved from the database
4380   * @return {Object} the newly modified object.
4381   */
4382  function recursivelyParse(resources) {
4383    forEach(resources, function (value, key) {
4384      if (!value) {
4385        return;
4386      }
4387      if (value instanceof Object) {
4388        if (isTextEditorValue(value)) {
4389          resources[key] = getTextEditorValue(value);
4390          return;
4391        } else {
4392          return recursivelyParse(value);
4393        }
4394      }
4395      try {
4396        var parsedData = JSON.parse(value);
4397        if (isTextEditorValue(parsedData)) {
4398          resources[key] = getTextEditorValue(parsedData);
4399        }
4400      } catch (e) {
4401        // do nothing if we failed to parse value as JSON
4402      }
4403    });
4404    return resources;
4405  }
4406  function forEach(collection, iteratee) {
4407    var func = Array.isArray(collection) ? arrayEach : baseFor;
4408    return func(collection, iteratee);
4409  }
4410  function baseFor(object, iteratee) {
4411    if (!object) {
4412      return;
4413    }
4414    var iterable = Object(object);
4415    var props = Object.keys(object);
4416    var length = props.length;
4417    var index = -1;
4418    while (length--) {
4419      var key = props[++index];
4420      if (iteratee(iterable[key], key, iterable) === false) {
4421        break;
4422      }
4423    }
4424    return object;
4425  }
4426  function objSet(obj, path, value) {
4427    const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
4428    pathArray.reduce((acc, key, i) => {
4429      if (acc[key] === undefined) acc[key] = {};
4430      if (i === pathArray.length - 1) acc[key] = value;
4431      return acc[key];
4432    }, obj);
4433  }
4434  function arrayEach(array, iteratee) {
4435    var index = -1;
4436    var length = array.length;
4437    while (++index < length) {
4438      if (iteratee(array[index], index, array) === false) {
4439        break;
4440      }
4441    }
4442    return array;
4443  }
4444  function selectPageRangeMode(e) {
4445    pageRange = e.matches ? mobilePageRange : desktopPageRange;
4446    renderPaginationList();
4447  }
4448  paginationMql.addEventListener('change', selectPageRangeMode);
4449})('section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9', JSON.parse("{\"pageSize\":\"3\",\"resource\":\"agents\",\"pageRange\":0,\"variables\":{\"limit\":3,\"offset\":0,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"categoryId\":\"{{pageElement.categoryId}}\",\"agentIds\":[\"79c24224-08a8-465d-bbe5-1aa21a8e451d\",\"44189d60-a252-41b5-8fdb-5e0caaa5dcfa\",\"9d5035ff-29b6-472d-bda8-fe57f2abea13\"]},\"searchFormParams\":[{\"param\":\"search\",\"urlKey\":\"search\"},{\"param\":\"officeId\",\"global\":true,\"urlKey\":\"officeId\"},{\"param\":\"tags\",\"global\":true,\"urlKey\":\"area\"}],\"skipScrollOnSearch\":false,\"scrollTargetSelector\":\".search-form\",\"hidePaginationOnFirstPage\":true,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"usePageResource\":false,\"sectionIndex\":4,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
4450} catch(e) {
4451console.log(e);
4452}
4453                try {
4454(function init(sectionDomId) {
4455  const $section = $("#" + sectionDomId);
4456  const $searchContainer = $section.find(".search-container");
4457  const $officeSelect = $section.find('.js-office-input');
4458  const $tagSelect = $section.find('.js-tag-input');
4459  const $searchInput = $section.find('.js-search-input');
4460  const $emptyMsg = $section.find('.js-empty-message');
4461  const $dataContainer = $section.find('.data-container');
4462  const $containter = $section.find('.js-container');
4463  const officeFilter = $searchContainer.data('fetchOffices');
4464  const $resetSearchInput = $searchContainer.find('.lp-input-reset');
4465  convertSelectToDropdown($tagSelect);
4466  $resetSearchInput.on('click', function (event) {
4467    event.preventDefault();
4468    $searchInput.val('');
4469    onSearch();
4470  });
4471  $dataContainer.on("data", function () {
4472    $emptyMsg.removeClass("visible");
4473    $containter.removeClass('no-data');
4474  });
4475  $dataContainer.on("no-data", function () {
4476    $emptyMsg.addClass("visible");
4477    $containter.addClass('no-data');
4478  });
4479  $searchInput.on('input', window.luxuryPresence.debounce(onSearch, 1000));
4480  function onSearch() {
4481    const params = {};
4482    if (officeFilter) params.officeId = $officeSelect.val() === '' ? null : [$officeSelect.val()];
4483    if ($tagSelect.length > 0) params.tags = $tagSelect.val() === '' ? null : [$tagSelect.val()];
4484    params.search = $searchInput.val() || null;
4485    $searchContainer[0]?.dispatchEvent(new CustomEvent('search', {
4486      detail: params
4487    }));
4488  }
4489  if (!officeFilter && $tagSelect.length === 0) return;
4490  var previousOption = '';
4491  $searchContainer.on('offices-data', function (evt) {
4492    let {
4493      data
4494    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
4495    data = evt.detail?.data || data;
4496    $officeSelect.append(data.map(office => `<option value="${office.id}">${office.name}</option>`).join("\n"));
4497    convertSelectToDropdown($officeSelect);
4498  });
4499  function updateDropdown(select, value) {
4500    let $dropdown = $(select).next();
4501    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
4502    let $dropdownContent = $dropdown.find(".custom-select-content");
4503    let $selectedOption = $dropdownContent.find(`button[value="${value}"]`);
4504    function unselectOption() {
4505      $linkedOption = $originalSelect.find("option").eq(0);
4506      $linkedOption.prop("selected", true);
4507      $dropdownToggle.html($linkedOption.html());
4508      $dropdownContent.find(".custom-select-item").removeClass("is-selected");
4509      $originalSelect.change();
4510      previousOption = "";
4511    }
4512    if (!$selectedOption) return;
4513    if ($selectedOption.hasClass("is-disabled")) return;
4514    let elementNumber = $selectedOption.index();
4515    let $originalSelect = $selectedOption.closest(".custom-select").siblings("select");
4516    let $linkedOption = $originalSelect.find("option").eq(elementNumber);
4517    if (previousOption === value) {
4518      unselectOption();
4519      return;
4520    }
4521    if (!$linkedOption.prop("selected")) {
4522      $linkedOption.prop("selected", true);
4523      previousOption = value;
4524      $originalSelect.change();
4525      $selectedOption.addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected");
4526      closeSelectMenu($selectedOption.closest(".custom-select-menu"));
4527      $dropdownToggle.html($linkedOption.html());
4528      if ($linkedOption.val()) {
4529        $dropdownToggle.removeClass("is-placeholder");
4530        $dropdown[$linkedOption.val() !== "" ? "addClass" : "removeClass"]("has-selection");
4531      } else {
4532        $dropdown.removeClass("has-selection");
4533        $dropdownToggle.addClass("is-placeholder");
4534      }
4535    }
4536  }
4537  function convertSelectToDropdown(selectItem) {
4538    let customDropdown = `
4539          <div class="custom-select" role="presentation">
4540              <button class="custom-select-toggle" type="button" aria-haspopup="true" aria-expanded="false"></button>
4541              <div class="custom-select-menu">
4542                  <div class="custom-select-content">
4543                  </div>
4544              </div>
4545          </div>`;
4546    $(customDropdown).insertAfter(selectItem);
4547    let $dropdown = $(selectItem).next();
4548    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
4549    let $dropdownMenu = $dropdown.find(".custom-select-menu");
4550    let $dropdownContent = $dropdown.find(".custom-select-content");
4551    $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select");
4552    $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom");
4553    $dropdownToggle.attr("data-name", $(selectItem).attr("name"));
4554    $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id"));
4555    appendOptionButtons(selectItem, $dropdownContent);
4556    $(selectItem).removeClass().addClass("sr-only");
4557    $(selectItem).on("focus", function () {
4558      showSelectMenu($dropdownMenu[0]);
4559      $dropdownToggle.focus();
4560    });
4561    var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text();
4562    $dropdownToggle.addClass("is-placeholder").html(toggleText);
4563    $dropdown.on("click", ".custom-select-item", function (e) {
4564      updateDropdown($(this).closest(".lp-input-group").find("select"), $(this).attr("value"));
4565    });
4566    function convertOptionToButton(option) {
4567      var optionText = $(option).text();
4568      var optionValue = $(option).attr("value") || $(option).text();
4569      var optionIsDisabled = $(option).prop("disabled");
4570      var outputButton = `<button value="${optionValue}" class="custom-select-item lp-icon" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`;
4571      return outputButton;
4572    }
4573    function appendOptionButtons(selectItem, appendTarget) {
4574      $(selectItem).find("option").each(function () {
4575        let currentButton = convertOptionToButton(this);
4576        $(appendTarget).append(currentButton);
4577      });
4578    }
4579    function showSelectMenu(selectMenu) {
4580      var customSelect = $(selectMenu).closest(".custom-select")[0];
4581      customSelect.classList.add('open');
4582      $(selectMenu).slideDown();
4583    }
4584    $dropdown.on("click", ".custom-select-toggle", function (e) {
4585      var $customSelect = $(this).closest(".custom-select");
4586      var selectMenu = $customSelect.find(".custom-select-menu")[0];
4587      if ($customSelect.hasClass("open")) {
4588        closeSelectMenu(selectMenu);
4589      } else {
4590        showSelectMenu(selectMenu);
4591      }
4592    });
4593    $(document.body).on("click", function (e) {
4594      if (!$(e.target).closest(`#${sectionDomId} .js-select-input`).length) {
4595        $(`#${sectionDomId} .custom-select.open`).each(function () {
4596          const selectMenu = $(this).find(".custom-select-menu")[0];
4597          closeSelectMenu(selectMenu);
4598        });
4599      }
4600    });
4601  }
4602  function closeSelectMenu(selectMenu) {
4603    var customSelect = $(selectMenu).closest(".custom-select")[0];
4604    $(customSelect).removeClass("open");
4605    $(selectMenu).slideUp();
4606  }
4607  $officeSelect.change(onSearch);
4608  $tagSelect.change(onSearch);
4609})('section-439bbb2d-a7c3-4707-8b5f-73fd8b5c86e9', JSON.parse("{\"resource\":\"agents\",\"useRouterApi\":false,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"usePageResource\":false,\"sectionIndex\":4,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
4610} catch(e) {
4611console.log(e);
4612}
4613                try {
4614(function init(sectionDomId, options) {
4615  let section = null;
4616  switch (sectionDomId) {
4617    case 'NAVBAR':
4618      section = document.querySelector('body > nav, #global-navbar');
4619      break;
4620    case 'FOOTER':
4621      section = document.querySelector('body > footer, #global-footer');
4622      break;
4623    case 'SIDEMENU':
4624      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
4625      break;
4626    case 'CONTACT':
4627      section = document.querySelector('#modal-global-contact-us');
4628      break;
4629    case 'MOBILE_CONTACT':
4630      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
4631      break;
4632    case 'SUBSCRIBE':
4633      // Subscribe Not Implemented
4634      section = null;
4635      break;
4636    case 'ACCOUNT':
4637      // Account Not Implemented
4638      section = null;
4639      break;
4640    default:
4641      section = document.querySelector('#' + sectionDomId);
4642  }
4643  if (!section) {
4644    return;
4645  }
4646
4647  // Where content / items are rendered
4648  const dataContainer = section.querySelector('.data-container');
4649  if (!dataContainer) {
4650    // no place to render items = no need to query server or do anything else
4651    return;
4652  }
4653  let variables = options.variables || {};
4654
4655  // Some variables in options may not have been injected - remove
4656  Object.keys(variables).forEach(function (variableName) {
4657    if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) {
4658      delete variables[variableName];
4659    }
4660  });
4661
4662  // Merge page query variables
4663  if (options.usePageResource) {
4664    variables = {
4665      ...variables,
4666      ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource]
4667    };
4668  }
4669
4670  // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers
4671  // resolve the flag — fetchData reads the section stamp, aux fetches read
4672  // their own resource's stamp (auxUsesRouter).
4673  function apiUrl(useRouter) {
4674    return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl);
4675  }
4676
4677  // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's
4678  // (options.routerApiAux is stamped per aux resource server-side).
4679  function auxUsesRouter(resource) {
4680    return !!(options.routerApiAux && options.routerApiAux[resource]);
4681  }
4682
4683  // Pagination Executes on a Numbered Pagination Container
4684  //  Or via a load more button
4685  let mode = 'BUTTONLESS_PAGINATION';
4686  const container = section.querySelector('.pagination-container');
4687  const loadMoreButton = section.querySelector(options?.loadMoreSelector);
4688  if (container) {
4689    mode = 'NUMBERED_PAGINATION';
4690  }
4691  if (loadMoreButton) {
4692    mode = 'LOAD_MORE_BUTTON';
4693  }
4694  let searchContainer = section.querySelector('.search-container');
4695  const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false;
4696  const eventPrefix = '__pagination-';
4697  const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{
4698    param: 'neighborhoodId',
4699    urlKey: 'neighborhood'
4700  }, {
4701    param: 'search',
4702    urlKey: 'search'
4703  }, {
4704    param: 'salesPriceGTE',
4705    urlKey: 'pricemin',
4706    formKey: 'priceMin',
4707    type: 'int'
4708  }, {
4709    param: 'salesPriceLTE',
4710    urlKey: 'pricemax',
4711    formKey: 'priceMax',
4712    type: 'int'
4713  }, {
4714    param: 'livingSpaceSizeGTE',
4715    urlKey: 'areamin',
4716    formKey: 'areaMin',
4717    type: 'int'
4718  }, {
4719    param: 'livingSpaceSizeLTE',
4720    urlKey: 'areamax',
4721    formKey: 'areaMax',
4722    type: 'int'
4723  }] : []);
4724
4725  // Total entries - initialized in first render
4726  let totalNumber = 0;
4727  const DefaultSearchParams = {
4728    page: 1
4729  };
4730  searchFormParams.forEach(function (formParam) {
4731    DefaultSearchParams[formParam.formKey || formParam.param] = null;
4732  });
4733  let searchParams = {
4734    ...DefaultSearchParams
4735  };
4736  const offset = options.variables?.offset || 0;
4737  let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section;
4738  let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100;
4739
4740  // entries of per page
4741  // when query variables for a given section would't be filled options.pageSize can store
4742  // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value
4743  let pageSize = parseInt(options.pageSize, 10) || 9;
4744
4745  // Adding mobile pageRange support
4746  var NARROW_BREAKPOINT = 600;
4747  var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT;
4748  var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`);
4749
4750  // Page range (pages on both sides of the current page)
4751  var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0;
4752  var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2;
4753  var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange;
4754
4755  // Whether to display the 'Previous' button
4756  var showPrevious = true;
4757
4758  // Whether to display the 'Next' button
4759  var showNext = true;
4760
4761  // Whether to display the page buttons
4762  var showPageNumbers = true;
4763
4764  // 'Previous' text
4765  var prevText = options.prevText || '&laquo;';
4766
4767  // 'Next' text
4768  var nextText = options.nextText || '&raquo;';
4769
4770  // Ellipsis text
4771  var ellipsisText = '&hellip;';
4772  var classPrefix = 'paginationjs';
4773
4774  // Default active class
4775  var activeClassName = 'active';
4776
4777  // Default disable class
4778  var disableClassName = 'disabled';
4779
4780  // Pagination element's position in the container
4781  var position = 'bottom';
4782
4783  // Whether to trigger pagination at initialization
4784  var triggerPagingOnInit = !options.skipInitialLoad;
4785  var showFirstOnEllipsisShow = true;
4786  var showLastOnEllipsisShow = true;
4787
4788  // Instantiated in init()
4789  var el = null;
4790
4791  // Controls scrollTop logic
4792  var firstRender = true;
4793  var renderBySearch = false;
4794  var disabled = false;
4795
4796  // Pagination script class selector
4797  var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script';
4798
4799  // Property Specific Image Override if No Image
4800  var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage;
4801
4802  // Construct template
4803  var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || '';
4804  var template = Handlebars.compile(templateHTML);
4805
4806  // Initialize
4807  init();
4808  function init() {
4809    Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
4810
4811    // Append/prepend pagination element to the pagination container
4812    if (mode === 'NUMBERED_PAGINATION') {
4813      el = document.createElement('div');
4814      el.className = 'paginationjs';
4815      container[position === 'bottom' ? 'append' : 'prepend'](el);
4816    }
4817    if (searchContainer) {
4818      initSearchContainer({
4819        fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true',
4820        fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true',
4821        fetchOffices: searchContainer.dataset.fetchOffices === 'true',
4822        fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true'
4823      }, function () {
4824        syncSearchFormState(searchParams);
4825      });
4826    }
4827
4828    // Bind events
4829    observer();
4830  }
4831  function syncSearchFormState(params) {
4832    searchContainer.dispatchEvent(new CustomEvent('sync', {
4833      detail: params
4834    }));
4835  }
4836  function initSearchContainer(options, done) {
4837    var promises = [];
4838    if (options.fetchNeighborhoods) {
4839      promises.push(fetchAllNeighborhoods(function (neighborhoods) {
4840        searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', {
4841          detail: {
4842            data: neighborhoods.map(function (item) {
4843              return {
4844                value: item.id,
4845                label: item.name
4846              };
4847            })
4848          }
4849        }));
4850      }));
4851    }
4852    if (options.fetchPostCategories) {
4853      promises.push(fetchPostCategories(function (categories) {
4854        searchContainer.dispatchEvent(new CustomEvent('post-categories-data', {
4855          detail: {
4856            data: categories
4857          }
4858        }));
4859      }));
4860    }
4861    if (options.fetchOffices) {
4862      promises.push(fetchOffices(function (offices) {
4863        searchContainer.dispatchEvent(new CustomEvent('offices-data', {
4864          detail: {
4865            data: offices
4866          }
4867        }));
4868      }));
4869    }
4870    if (options.fetchRentalRates) {
4871      promises.push(fetchAllRentalRates(function (rentalRates) {
4872        searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', {
4873          detail: {
4874            data: rentalRates
4875          }
4876        }));
4877      }));
4878    }
4879    if (promises.length > 0) {
4880      Promise.all(promises).then(function () {
4881        done();
4882      });
4883    } else {
4884      // element's custom code is not executed yet, so we're scheduling callback to after element's code
4885      setTimeout(done);
4886    }
4887  }
4888  function fetchAllNeighborhoods(done) {
4889    var useRouter = auxUsesRouter('neighborhoods');
4890    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same
4891    // args on both APIs (the federated neighborhoods field accepts
4892    // withProperties/withBlogPosts); only the selection set differs.
4893    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') + '}}';
4894    var payload = {};
4895    payload.offset = 0;
4896    payload.limit = 100;
4897    payload.companyId = variables.companyId;
4898    if (options.resource === 'properties') {
4899      payload.withProperties = {
4900        active: true
4901      };
4902      ['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) {
4903        if (variables[field] !== undefined && variables[field] !== null) {
4904          payload.withProperties[field] = variables[field];
4905        }
4906      });
4907    }
4908    if (options.resource === 'posts') {
4909      payload.withBlogPosts = {
4910        active: true
4911      };
4912      ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) {
4913        if (variables[field] !== undefined && variables[field] !== null) {
4914          payload.withBlogPosts[field] = variables[field];
4915        }
4916      });
4917    }
4918
4919    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
4920    if (useRouter) {
4921      payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload);
4922    }
4923    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
4924      query: gqlQuery,
4925      variables: payload
4926    }).then(function (res) {
4927      var value = res.body.data && res.body.data.neighborhoods || {};
4928      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
4929      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
4930      done(items, items.length);
4931    });
4932  }
4933  function fetchPostCategories(done) {
4934    var featured = options.resource === 'posts' && !!variables.featured;
4935    var useRouter = auxUsesRouter('postCategories');
4936    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
4937    // selection set differs ({ items {...} } on the router).
4938    var selection = 'id, name, publishedCount, featuredPublishedCount';
4939    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) + '}}';
4940    var payload = {};
4941    payload.offset = 0;
4942    payload.limit = 100;
4943    payload.companyId = variables.companyId;
4944    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
4945      query: gqlQuery,
4946      variables: payload
4947    }).then(function (res) {
4948      var value = res.body.data && res.body.data.postCategories || {};
4949      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
4950      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
4951      done(items.map(function (item) {
4952        item.count = featured ? item.featuredPublishedCount : item.publishedCount;
4953        return item;
4954      }), items.length);
4955    });
4956  }
4957  function fetchOffices(done) {
4958    var useRouter = auxUsesRouter('offices');
4959    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
4960    // selection set differs ({ items {...} } on the router).
4961    var selection = 'id, name, tags';
4962    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two
4963    // APIs differ in more than the items wrapper: federated offices takes
4964    // companyId: ID! (legacy gateway: String), so each branch builds its whole doc.
4965    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 + '}}';
4966    var payload = {
4967      offset: 0,
4968      limit: 100,
4969      companyId: variables.companyId
4970    };
4971
4972    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
4973    if (useRouter) {
4974      payload = window.luxuryPresence.routerApi.transformVariables('office
4974s', payload);
4975    }
4976    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
4977      query: gqlQuery,
4978      variables: payload
4979    }).then(function (res) {
4980      var value = res.body.data && res.body.data.offices || {};
4981      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
4982      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
4983      done(items, items.length);
4984    });
4985  }
4986
4987  // ROUTER-CLEANUP: no rentalRates field on the federated router — legacy only.
4988  function fetchAllRentalRates(done) {
4989    var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl;
4990    var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}';
4991    var payload = {
4992      offset: 0,
4993      limit: 100,
4994      companyId: variables.companyId
4995    };
4996    superagent.post(url + '/graphql').withCredentials().send({
4997      query: gqlQuery,
4998      variables: payload
4999    }).then(function (res) {
5000      var items = res.body.data && res.body.data.rentalRates || [];
5001      done(items, items.length);
5002    }).catch(function (err) {
5003      console.error('Error fetching rental rates:', err);
5004      done([], 0);
5005    });
5006  }
5007  function fetchData(params, done) {
5008    var resource = options.resource;
5009    var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource];
5010    var payload = {};
5011    try {
5012      payload = JSON.parse(JSON.stringify(variables));
5013    } catch (e) {
5014      Object.keys(variables).forEach(function (variableName) {
5015        payload[variableName] = variables[variableName];
5016      });
5017    }
5018    payload.offset = (params.page - 1) * pageSize + offset;
5019    payload.limit = pageSize;
5020    payload.companyId = options.companyId;
5021    searchFormParams.forEach(function (formParam) {
5022      var val = params[formParam.formKey || formParam.param];
5023      if (val !== null && val !== undefined) {
5024        objSet(payload, formParam.param, val);
5025      }
5026    });
5027
5028    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
5029    if (options.useRouterApi) {
5030      payload = window.luxuryPresence.routerApi.transformVariables(resource, payload);
5031    }
5032
5033    // TODO: Disabled loading due to jarring effect
5034    // dataContainer.html('Loading...');
5035    superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({
5036      query: gqlQuery,
5037      variables: payload
5038    }).then(function (res) {
5039      if (res.body.errors) {
5040        done(res.body.errors);
5041        return;
5042      }
5043      var data = res.body.data || {};
5044      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
5045      var resources;
5046      var resourceCount;
5047      if (options.useRouterApi) {
5048        var page = window.luxuryPresence.routerApi.transformPage(data[resource]);
5049        resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items);
5050        resourceCount = page.count;
5051      } else {
5052        resources = data[resource] || [];
5053        resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0;
5054      }
5055      if (resource === 'properties' && propertyPlaceholderImage?.id) {
5056        resources = resources.map(resource => {
5057          if (resource.media?.length === 0) {
5058            return Object.assign(resource, {
5059              media: [propertyPlaceholderImage]
5060            });
5061          }
5062          return resource;
5063        });
5064      }
5065      done(null, resources, resourceCount);
5066    });
5067  }
5068  function getTotalPage() {
5069    return Math.ceil(totalNumber / pageSize);
5070  }
5071  function renderPaginationList() {
5072    var totalPages = getTotalPage();
5073    var rangeStart = searchParams.page - pageRange;
5074    var rangeEnd = searchParams.page + pageRange;
5075    if (rangeEnd > totalPages) {
5076      rangeEnd = totalPages;
5077      rangeStart = totalPages - pageRange * 2;
5078      rangeStart = rangeStart < 1 ? 1 : rangeStart;
5079    }
5080    if (rangeStart <= 1) {
5081      rangeStart = 1;
5082      rangeEnd = Math.min(pageRange * 2 + 1, totalPages);
5083    }
5084
5085    // Making sure that 1 more page button is shown in edge positions
5086    if (pageRange === 0) {
5087      if (searchParams.page === totalPages) {
5088        rangeStart = totalPages <= 1 ? 1 : totalPages - 1;
5089      }
5090      if (searchParams.page === 1) {
5091        rangeEnd = Math.min(2, totalPages);
5092      }
5093    }
5094
5095    // Render pagination list
5096    if (mode === 'NUMBERED_PAGINATION') {
5097      el.innerHTML = generateHTML({
5098        currentPage: searchParams.page,
5099        pageRange: pageRange,
5100        rangeStart: rangeStart,
5101        rangeEnd: rangeEnd
5102      });
5103      if (totalPages < 2 && hidePaginationOnFirstPage) {
5104        container.style.display = 'none';
5105      } else {
5106        container.style.display = '';
5107      }
5108    } else if (mode === 'LOAD_MORE_BUTTON') {
5109      if (searchParams.page >= totalPages) {
5110        loadMoreButton.style.display = 'none';
5111      } else {
5112        loadMoreButton.style.display = '';
5113      }
5114    }
5115  }
5116  function render(data) {
5117    renderPaginationList();
5118
5119    // Render new content with handlebars
5120    var html = '';
5121    if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) {
5122      // If using load more, append search results to existing results
5123      html = dataContainer.innerHTML;
5124    }
5125    for (var i = 0; i < data.length; i++) {
5126      var itemData = recursivelyParse(data[i]);
5127      itemData.sectionIndex = options.sectionIndex;
5128      itemData.renderOptions = options.renderOptions;
5129      html += template(itemData);
5130    }
5131    dataContainer.innerHTML = html;
5132
5133    // Scroll Top
5134    if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) {
5135      // Only animate to the top if we replace dataContainer (numbered pagination)
5136      setTimeout(() => {
5137        const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset;
5138        window.scrollTo({
5139          top: scrollTargetOffsetTop,
5140          behavior: 'smooth'
5141        });
5142      }, 250);
5143    }
5144    return true;
5145  }
5146  function generateHTML(args) {
5147    const totalPages = getTotalPage();
5148    const {
5149      rangeStart,
5150      rangeEnd
5151    } = args;
5152    const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
5153      ...searchParams,
5154      page
5155    });
5156    let html = '';
5157    if (showPrevious || showPageNumbers || showNext) {
5158      html += '<div class="paginationjs-pages"><ul>';
5159
5160      // Previous button
5161      if (showPrevious) {
5162        if (searchParams.page <= 1) {
5163          html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`;
5164        } else {
5165          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>`;
5166        }
5167      }
5168
5169      // Pages
5170      if (showPageNumbers) {
5171        if (rangeStart <= 3) {
5172          for (let i = 1; i < rangeStart; i++) {
5173            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>`;
5174          }
5175        } else {
5176          if (showFirstOnEllipsisShow) {
5177            html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`;
5178          }
5179          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
5180        }
5181        for (let i = rangeStart; i <= rangeEnd; i++) {
5182          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>`;
5183        }
5184        if (rangeEnd < totalPages - 2) {
5185          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
5186          if (showLastOnEllipsisShow) {
5187            html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`;
5188          }
5189        } else {
5190          for (let i = rangeEnd + 1; i <= totalPages; i++) {
5191            html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`;
5192          }
5193        }
5194      }
5195
5196      // Next button
5197      if (showNext) {
5198        if (searchParams.page >= totalPages) {
5199          html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`;
5200        } else {
5201          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>`;
5202        }
5203      }
5204      html += '</ul></div>';
5205    }
5206    return html;
5207  }
5208  function go(newSearchParams, callback, restorationVisit) {
5209    if (disabled) return;
5210    var goToPageNumber = newSearchParams.page;
5211
5212    // Page number is out of bounds
5213    if (!goToPageNumber || goToPageNumber < 1) return;
5214    var totalPage = getTotalPage();
5215
5216    // Page number is out of bounds
5217    if (!restorationVisit && totalNumber > 0) {
5218      if (goToPageNumber > totalPage) return;
5219    }
5220    if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
5221      var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
5222        ...newSearchParams,
5223        page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null
5224      });
5225      if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) {
5226        window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, {
5227          queryString: true
5228        }));
5229      }
5230    }
5231
5232    // Fetch and update page
5233    fetchData(newSearchParams, renderWithData);
5234    disabled = true;
5235    function renderWithData(err, data, count) {
5236      if (err) {
5237        dataContainer.dispatchEvent(new Event('error'));
5238      } else {
5239        searchParams = {
5240          ...newSearchParams
5241        };
5242        totalNumber = count - offset;
5243        if (data.length === 0) {
5244          dataContainer.dispatchEvent(new Event('no-data'));
5245        } else {
5246          dataContainer.dispatchEvent(new Event('data'));
5247        }
5248        render(data);
5249        firstRender = false;
5250      }
5251      disabled = false;
5252      renderBySearch = false;
5253    }
5254  }
5255  function areQueryParamsEqual(first, second) {
5256    var differ = Object.keys(first).find(function (key) {
5257      return first[key] !== undefined && first[key] !== null && first[key] !== second[key];
5258    });
5259    if (differ) {
5260      return false;
5261    }
5262    differ = Object.keys(second).find(function (key) {
5263      return second[key] !== undefined && second[key] !== null && second[key] !== first[key];
5264    });
5265    return !differ;
5266  }
5267  function next(callback) {
5268    go({
5269      ...searchParams,
5270      page: searchParams.page + 1
5271    }, callback);
5272  }
5273  function previous(callback) {
5274    go({
5275      ...searchParams,
5276      page: searchParams.page - 1
5277    }, callback);
5278  }
5279  function refresh(callback) {
5280    go(searchParams, callback);
5281  }
5282  function update(params, callback) {
5283    renderBySearch = true;
5284    go(params, callback);
5285  }
5286  function observer() {
5287    if (searchContainer) {
5288      searchContainer.addEventListener('search', function (event, newSearchParams) {
5289        newSearchParams = event.detail || newSearchParams;
5290        update({
5291          ...searchParams,
5292          ...newSearchParams,
5293          page: 1
5294        });
5295      });
5296      searchContainer.addEventListener('clear-search', function () {
5297        const defaultSearchParams = {
5298          ...DefaultSearchParams
5299        };
5300        const isCurrentSearchFormStateDefault = areQueryParamsEqual({
5301          ...defaultSearchParams,
5302          page: null
5303        }, {
5304          ...searchParams,
5305          page: null
5306        });
5307
5308        // if mode is LOAD_MORE_BUTTON we should't make anything on clear
5309        // when search form have default state
5310        if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') {
5311          return;
5312        }
5313
5314        // if someone initially go to some page and click 'Clear' on search from
5315        // we should't navigate to first page. We should preserve page value
5316        if (isCurrentSearchFormStateDefault) {
5317          defaultSearchParams.page = searchParams.page;
5318        }
5319        syncSearchFormState(defaultSearchParams);
5320        update(defaultSearchParams);
5321      });
5322    }
5323    if (mode === 'LOAD_MORE_BUTTON') {
5324      loadMoreButton.addEventListener('click', function (event) {
5325        go({
5326          ...searchParams,
5327          page: searchParams.page + 1
5328        });
5329        return false;
5330      });
5331    }
5332    if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') {
5333      // Do initial render
5334      go(Object.assign({}, searchParams, {
5335        page: 1
5336      }));
5337      return;
5338    }
5339    if (mode === 'NUMBERED_PAGINATION') {
5340      // Go to specified page number
5341      container.addEventListener(eventPrefix + 'go', function (event) {
5342        let {
5343          pageNumber,
5344          done
5345        } = event.detail || {};
5346        pageNumber = parseInt(pageNumber, 10);
5347        if (!pageNumber) {
5348          return;
5349        }
5350        go({
5351          ...searchParams,
5352          page: pageNumber
5353        }, done);
5354      });
5355
5356      // Page number button click
5357      el.addEventListener('click', function (event) {
5358        let clickTarget = event.target;
5359        let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next');
5360        let pageNumber = current?.getAttribute('data-num');
5361        if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) {
5362          return;
5363        } else {
5364          go({
5365            ...searchParams,
5366            page: parseInt(pageNumber, 10)
5367          });
5368        }
5369        event.preventDefault();
5370      });
5371
5372      // Whether to load the default page
5373      var defaultPageNumber = searchParams.page;
5374      if (triggerPagingOnInit) {
5375        container.dispatchEvent(new CustomEvent(eventPrefix + 'go', {
5376          detail: {
5377            pageNumber: defaultPageNumber
5378          }
5379        }));
5380      }
5381    }
5382    window.addEventListener('popstate', function (event) {
5383      var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
5384      if (!areQueryParamsEqual(newParams, searchParams)) {
5385        go(newParams, null, true);
5386        if (searchContainer) {
5387          syncSearchFormState(newParams);
5388        }
5389      }
5390    });
5391  }
5392  function replaceVariables(template, variables) {
5393    var formattedString;
5394    for (var key in variables) {
5395      var value = variables[key];
5396      var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img');
5397      formattedString = (formattedString || template).replace(regexp, value);
5398    }
5399    return formattedString;
5400  }
5401  function isTextEditorValue(obj) {
5402    return 'raw' in obj || 'gjs' in obj;
5403  }
5404  function getTextEditorValue(obj) {
5405    if (!obj.html) {
5406      return '';
5407    }
5408    var data = obj.html;
5409    var css = (obj.raw || obj.gjs || {}).css;
5410    if (css) {
5411      data = data + '<style>' + css + '</style>';
5412    }
5413    return data;
5414  }
5415
5416  /**
5417   * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor.
5418   * strips out raw proprties and returns only HTML if it exists.
5419   * @param {Object} resources a collection retrieved from the database
5420   * @return {Object} the newly modified object.
5421   */
5422  function recursivelyParse(resources) {
5423    forEach(resources, function (value, key) {
5424      if (!value) {
5425        return;
5426      }
5427      if (value instanceof Object) {
5428        if (isTextEditorValue(value)) {
5429          resources[key] = getTextEditorValue(value);
5430          return;
5431        } else {
5432          return recursivelyParse(value);
5433        }
5434      }
5435      try {
5436        var parsedData = JSON.parse(value);
5437        if (isTextEditorValue(parsedData)) {
5438          resources[key] = getTextEditorValue(parsedData);
5439        }
5440      } catch (e) {
5441        // do nothing if we failed to parse value as JSON
5442      }
5443    });
5444    return resources;
5445  }
5446  function forEach(collection, iteratee) {
5447    var func = Array.isArray(collection) ? arrayEach : baseFor;
5448    return func(collection, iteratee);
5449  }
5450  function baseFor(object, iteratee) {
5451    if (!object) {
5452      return;
5453    }
5454    var iterable = Object(object);
5455    var props = Object.keys(object);
5456    var length = props.length;
5457    var index = -1;
5458    while (length--) {
5459      var key = props[++index];
5460      if (iteratee(iterable[key], key, iterable) === false) {
5461        break;
5462      }
5463    }
5464    return object;
5465  }
5466  function objSet(obj, path, value) {
5467    const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
5468    pathArray.reduce((acc, key, i) => {
5469      if (acc[key] === undefined) acc[key] = {};
5470      if (i === pathArray.length - 1) acc[key] = value;
5471      return acc[key];
5472    }, obj);
5473  }
5474  function arrayEach(array, iteratee) {
5475    var index = -1;
5476    var length = array.length;
5477    while (++index < length) {
5478      if (iteratee(array[index], index, array) === false) {
5479        break;
5480      }
5481    }
5482    return array;
5483  }
5484  function selectPageRangeMode(e) {
5485    pageRange = e.matches ? mobilePageRange : desktopPageRange;
5486    renderPaginationList();
5487  }
5488  paginationMql.addEventListener('change', selectPageRangeMode);
5489})('section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a', JSON.parse("{\"pageSize\":\"2\",\"resource\":\"agents\",\"pageRange\":0,\"variables\":{\"limit\":2,\"offset\":0,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"categoryId\":\"{{pageElement.categoryId}}\",\"agentIds\":[\"c07d8560-1e42-40d1-8f2c-1bdda81ca00c\",\"e76d0d28-213d-480d-b033-83f3840a78bd\"]},\"searchFormParams\":[{\"param\":\"search\",\"urlKey\":\"search\"},{\"param\":\"officeId\",\"global\":true,\"urlKey\":\"officeId\"},{\"param\":\"tags\",\"global\":true,\"urlKey\":\"area\"}],\"skipScrollOnSearch\":false,\"scrollTargetSelector\":\".search-form\",\"hidePaginationOnFirstPage\":true,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"usePageResource\":false,\"sectionIndex\":5,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
5490} catch(e) {
5491console.log(e);
5492}
5493                try {
5494(function init(sectionDomId) {
5495  const $section = $("#" + sectionDomId);
5496  const $searchContainer = $section.find(".search-container");
5497  const $officeSelect = $section.find('.js-office-input');
5498  const $tagSelect = $section.find('.js-tag-input');
5499  const $searchInput = $section.find('.js-search-input');
5500  const $emptyMsg = $section.find('.js-empty-message');
5501  const $dataContainer = $section.find('.data-container');
5502  const $containter = $section.find('.js-container');
5503  const officeFilter = $searchContainer.data('fetchOffices');
5504  const $resetSearchInput = $searchContainer.find('.lp-input-reset');
5505  convertSelectToDropdown($tagSelect);
5506  $resetSearchInput.on('click', function (event) {
5507    event.preventDefault();
5508    $searchInput.val('');
5509    onSearch();
5510  });
5511  $dataContainer.on("data", function () {
5512    $emptyMsg.removeClass("visible");
5513    $containter.removeClass('no-data');
5514  });
5515  $dataContainer.on("no-data", function () {
5516    $emptyMsg.addClass("visible");
5517    $containter.addClass('no-data');
5518  });
5519  $searchInput.on('input', window.luxuryPresence.debounce(onSearch, 1000));
5520  function onSearch() {
5521    const params = {};
5522    if (officeFilter) params.officeId = $officeSelect.val() === '' ? null : [$officeSelect.val()];
5523    if ($tagSelect.length > 0) params.tags = $tagSelect.val() === '' ? null : [$tagSelect.val()];
5524    params.search = $searchInput.val() || null;
5525    $searchContainer[0]?.dispatchEvent(new CustomEvent('search', {
5526      detail: params
5527    }));
5528  }
5529  if (!officeFilter && $tagSelect.length === 0) return;
5530  var previousOption = '';
5531  $searchContainer.on('offices-data', function (evt) {
5532    let {
5533      data
5534    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
5535    data = evt.detail?.data || data;
5536    $officeSelect.append(data.map(office => `<option value="${office.id}">${office.name}</option>`).join("\n"));
5537    convertSelectToDropdown($officeSelect);
5538  });
5539  function updateDropdown(select, value) {
5540    let $dropdown = $(select).next();
5541    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
5542    let $dropdownContent = $dropdown.find(".custom-select-content");
5543    let $selectedOption = $dropdownContent.find(`button[value="${value}"]`);
5544    function unselectOption() {
5545      $linkedOption = $originalSelect.find("option").eq(0);
5546      $linkedOption.prop("selected", true);
5547      $dropdownToggle.html($linkedOption.html());
5548      $dropdownContent.find(".custom-select-item").removeClass("is-selected");
5549      $originalSelect.change();
5550      previousOption = "";
5551    }
5552    if (!$selectedOption) return;
5553    if ($selectedOption.hasClass("is-disabled")) return;
5554    let elementNumber = $selectedOption.index();
5555    let $originalSelect = $selectedOption.closest(".custom-select").siblings("select");
5556    let $linkedOption = $originalSelect.find("option").eq(elementNumber);
5557    if (previousOption === value) {
5558      unselectOption();
5559      return;
5560    }
5561    if (!$linkedOption.prop("selected")) {
5562      $linkedOption.prop("selected", true);
5563      previousOption = value;
5564      $originalSelect.change();
5565      $selectedOption.addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected");
5566      closeSelectMenu($selectedOption.closest(".custom-select-menu"));
5567      $dropdownToggle.html($linkedOption.html());
5568      if ($linkedOption.val()) {
5569        $dropdownToggle.removeClass("is-placeholder");
5570        $dropdown[$linkedOption.val() !== "" ? "addClass" : "removeClass"]("has-selection");
5571      } else {
5572        $dropdown.removeClass("has-selection");
5573        $dropdownToggle.addClass("is-placeholder");
5574      }
5575    }
5576  }
5577  function convertSelectToDropdown(selectItem) {
5578    let customDropdown = `
5579          <div class="custom-select" role="presentation">
5580              <button class="custom-select-toggle" type="button" aria-haspopup="true" aria-expanded="false"></button>
5581              <div class="custom-select-menu">
5582                  <div class="custom-select-content">
5583                  </div>
5584              </div>
5585          </div>`;
5586    $(customDropdown).insertAfter(selectItem);
5587    let $dropdown = $(selectItem).next();
5588    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
5589    let $dropdownMenu = $dropdown.find(".custom-select-menu");
5590    let $dropdownContent = $dropdown.find(".custom-select-content");
5591    $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select");
5592    $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom");
5593    $dropdownToggle.attr("data-name", $(selectItem).attr("name"));
5594    $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id"));
5595    appendOptionButtons(selectItem, $dropdownContent);
5596    $(selectItem).removeClass().addClass("sr-only");
5597    $(selectItem).on("focus", function () {
5598      showSelectMenu($dropdownMenu[0]);
5599      $dropdownToggle.focus();
5600    });
5601    var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text();
5602    $dropdownToggle.addClass("is-placeholder").html(toggleText);
5603    $dropdown.on("click", ".custom-select-item", function (e) {
5604      updateDropdown($(this).closest(".lp-input-group").find("select"), $(this).attr("value"));
5605    });
5606    function convertOptionToButton(option) {
5607      var optionText = $(option).text();
5608      var optionValue = $(option).attr("value") || $(option).text();
5609      var optionIsDisabled = $(option).prop("disabled");
5610      var outputButton = `<button value="${optionValue}" class="custom-select-item lp-icon" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`;
5611      return outputButton;
5612    }
5613    function appendOptionButtons(selectItem, appendTarget) {
5614      $(selectItem).find("option").each(function () {
5615        let currentButton = convertOptionToButton(this);
5616        $(appendTarget).append(currentButton);
5617      });
5618    }
5619    function showSelectMenu(selectMenu) {
5620      var customSelect = $(selectMenu).closest(".custom-select")[0];
5621      customSelect.classList.add('open');
5622      $(selectMenu).slideDown();
5623    }
5624    $dropdown.on("click", ".custom-select-toggle", function (e) {
5625      var $customSelect = $(this).closest(".custom-select");
5626      var selectMenu = $customSelect.find(".custom-select-menu")[0];
5627      if ($customSelect.hasClass("open")) {
5628        closeSelectMenu(selectMenu);
5629      } else {
5630        showSelectMenu(selectMenu);
5631      }
5632    });
5633    $(document.body).on("click", function (e) {
5634      if (!$(e.target).closest(`#${sectionDomId} .js-select-input`).length) {
5635        $(`#${sectionDomId} .custom-select.open`).each(function () {
5636          const selectMenu = $(this).find(".custom-select-menu")[0];
5637          closeSelectMenu(selectMenu);
5638        });
5639      }
5640    });
5641  }
5642  function closeSelectMenu(selectMenu) {
5643    var customSelect = $(selectMenu).closest(".custom-select")[0];
5644    $(customSelect).removeClass("open");
5645    $(selectMenu).slideUp();
5646  }
5647  $officeSelect.change(onSearch);
5648  $tagSelect.change(onSearch);
5649})('section-0f5f1393-37b8-4030-be8d-83cc8d9ae46a', JSON.parse("{\"resource\":\"agents\",\"useRouterApi\":false,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"usePageResource\":false,\"sectionIndex\":5,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
5650} catch(e) {
5651console.log(e);
5652}
5653                try {
5654(function init(sectionDomId, options) {
5655  let section = null;
5656  switch (sectionDomId) {
5657    case 'NAVBAR':
5658      section = document.querySelector('body > nav, #global-navbar');
5659      break;
5660    case 'FOOTER':
5661      section = document.querySelector('body > footer, #global-footer');
5662      break;
5663    case 'SIDEMENU':
5664      section = document.querySelector('body > div.sidemenu, #global-sidemenu');
5665      break;
5666    case 'CONTACT':
5667      section = document.querySelector('#modal-global-contact-us');
5668      break;
5669    case 'MOBILE_CONTACT':
5670      section = document.querySelector('body > div.mobile-contact-wrapper, #global-mobile-contact');
5671      break;
5672    case 'SUBSCRIBE':
5673      // Subscribe Not Implemented
5674      section = null;
5675      break;
5676    case 'ACCOUNT':
5677      // Account Not Implemented
5678      section = null;
5679      break;
5680    default:
5681      section = document.querySelector('#' + sectionDomId);
5682  }
5683  if (!section) {
5684    return;
5685  }
5686
5687  // Where content / items are rendered
5688  const dataContainer = section.querySelector('.data-container');
5689  if (!dataContainer) {
5690    // no place to render items = no need to query server or do anything else
5691    return;
5692  }
5693  let variables = options.variables || {};
5694
5695  // Some variables in options may not have been injected - remove
5696  Object.keys(variables).forEach(function (variableName) {
5697    if (typeof variables[variableName] === 'string' && variables[variableName].match(/^{{.*}}$/)) {
5698      delete variables[variableName];
5699    }
5700  });
5701
5702  // Merge page query variables
5703  if (options.usePageResource) {
5704    variables = {
5705      ...variables,
5706      ...window.luxuryPresence.config.pageMeta.pageQueryVariables[options.resource]
5707    };
5708  }
5709
5710  // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Callers
5711  // resolve the flag — fetchData reads the section stamp, aux fetches read
5712  // their own resource's stamp (auxUsesRouter).
5713  function apiUrl(useRouter) {
5714    return options.url || (useRouter ? window.luxuryPresence.defaults.routerUrl : window.luxuryPresence.defaults.apiGatewayUrl);
5715  }
5716
5717  // ROUTER-CLEANUP: aux resources roll out on their own flag, not the section's
5718  // (options.routerApiAux is stamped per aux resource server-side).
5719  function auxUsesRouter(resource) {
5720    return !!(options.routerApiAux && options.routerApiAux[resource]);
5721  }
5722
5723  // Pagination Executes on a Numbered Pagination Container
5724  //  Or via a load more button
5725  let mode = 'BUTTONLESS_PAGINATION';
5726  const container = section.querySelector('.pagination-container');
5727  const loadMoreButton = section.querySelector(options?.loadMoreSelector);
5728  if (container) {
5729    mode = 'NUMBERED_PAGINATION';
5730  }
5731  if (loadMoreButton) {
5732    mode = 'LOAD_MORE_BUTTON';
5733  }
5734  let searchContainer = section.querySelector('.search-container');
5735  const hidePaginationOnFirstPage = options.hidePaginationOnFirstPage || false;
5736  const eventPrefix = '__pagination-';
5737  const searchFormParams = options.searchFormParams || (options.resource === 'properties' ? [{
5738    param: 'neighborhoodId',
5739    urlKey: 'neighborhood'
5740  }, {
5741    param: 'search',
5742    urlKey: 'search'
5743  }, {
5744    param: 'salesPriceGTE',
5745    urlKey: 'pricemin',
5746    formKey: 'priceMin',
5747    type: 'int'
5748  }, {
5749    param: 'salesPriceLTE',
5750    urlKey: 'pricemax',
5751    formKey: 'priceMax',
5752    type: 'int'
5753  }, {
5754    param: 'livingSpaceSizeGTE',
5755    urlKey: 'areamin',
5756    formKey: 'areaMin',
5757    type: 'int'
5758  }, {
5759    param: 'livingSpaceSizeLTE',
5760    urlKey: 'areamax',
5761    formKey: 'areaMax',
5762    type: 'int'
5763  }] : []);
5764
5765  // Total entries - initialized in first render
5766  let totalNumber = 0;
5767  const DefaultSearchParams = {
5768    page: 1
5769  };
5770  searchFormParams.forEach(function (formParam) {
5771    DefaultSearchParams[formParam.formKey || formParam.param] = null;
5772  });
5773  let searchParams = {
5774    ...DefaultSearchParams
5775  };
5776  const offset = options.variables?.offset || 0;
5777  let scrollTarget = options.scrollTargetSelector ? section.querySelector(options.scrollTargetSelector) || section : section;
5778  let scrollOffset = (parseInt(options.scrollOffset, 10) || 0) ?? 100;
5779
5780  // entries of per page
5781  // when query variables for a given section would't be filled options.pageSize can store
5782  // template string, ex: "{{variables.limit}}", below code handles that case and set 9 as a default value
5783  let pageSize = parseInt(options.pageSize, 10) || 9;
5784
5785  // Adding mobile pageRange support
5786  var NARROW_BREAKPOINT = 600;
5787  var mobileBreakpoint = options.mobileBreakpoint > 0 ? options.mobileBreakpoint : NARROW_BREAKPOINT;
5788  var paginationMql = window.matchMedia(`(max-width: ${mobileBreakpoint}px)`);
5789
5790  // Page range (pages on both sides of the current page)
5791  var mobilePageRange = options.mobilePageRange > 0 ? options.mobilePageRange : 0;
5792  var desktopPageRange = options.pageRange >= 0 ? options.pageRange : 2;
5793  var pageRange = paginationMql.matches ? mobilePageRange : desktopPageRange;
5794
5795  // Whether to display the 'Previous' button
5796  var showPrevious = true;
5797
5798  // Whether to display the 'Next' button
5799  var showNext = true;
5800
5801  // Whether to display the page buttons
5802  var showPageNumbers = true;
5803
5804  // 'Previous' text
5805  var prevText = options.prevText || '&laquo;';
5806
5807  // 'Next' text
5808  var nextText = options.nextText || '&raquo;';
5809
5810  // Ellipsis text
5811  var ellipsisText = '&hellip;';
5812  var classPrefix = 'paginationjs';
5813
5814  // Default active class
5815  var activeClassName = 'active';
5816
5817  // Default disable class
5818  var disableClassName = 'disabled';
5819
5820  // Pagination element's position in the container
5821  var position = 'bottom';
5822
5823  // Whether to trigger pagination at initialization
5824  var triggerPagingOnInit = !options.skipInitialLoad;
5825  var showFirstOnEllipsisShow = true;
5826  var showLastOnEllipsisShow = true;
5827
5828  // Instantiated in init()
5829  var el = null;
5830
5831  // Controls scrollTop logic
5832  var firstRender = true;
5833  var renderBySearch = false;
5834  var disabled = false;
5835
5836  // Pagination script class selector
5837  var paginationScriptSelector = options.paginationPartialName ? `.${options.paginationPartialName}` : '.pagination-script';
5838
5839  // Property Specific Image Override if No Image
5840  var propertyPlaceholderImage = window.luxuryPresence.defaults.propertyPlaceholderImage;
5841
5842  // Construct template
5843  var templateHTML = section.querySelector(`script${paginationScriptSelector}`)?.innerHTML || '';
5844  var template = Handlebars.compile(templateHTML);
5845
5846  // Initialize
5847  init();
5848  function init() {
5849    Object.assign(searchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
5850
5851    // Append/prepend pagination element to the pagination container
5852    if (mode === 'NUMBERED_PAGINATION') {
5853      el = document.createElement('div');
5854      el.className = 'paginationjs';
5855      container[position === 'bottom' ? 'append' : 'prepend'](el);
5856    }
5857    if (searchContainer) {
5858      initSearchContainer({
5859        fetchNeighborhoods: searchContainer.dataset.fetchNeighborhoods === 'true',
5860        fetchPostCategories: searchContainer.dataset.fetchPostCategories === 'true',
5861        fetchOffices: searchContainer.dataset.fetchOffices === 'true',
5862        fetchRentalRates: searchContainer.dataset.fetchRentalRates === 'true'
5863      }, function () {
5864        syncSearchFormState(searchParams);
5865      });
5866    }
5867
5868    // Bind events
5869    observer();
5870  }
5871  function syncSearchFormState(params) {
5872    searchContainer.dispatchEvent(new CustomEvent('sync', {
5873      detail: params
5874    }));
5875  }
5876  function initSearchContainer(options, done) {
5877    var promises = [];
5878    if (options.fetchNeighborhoods) {
5879      promises.push(fetchAllNeighborhoods(function (neighborhoods) {
5880        searchContainer.dispatchEvent(new CustomEvent('neighborhoods-data', {
5881          detail: {
5882            data: neighborhoods.map(function (item) {
5883              return {
5884                value: item.id,
5885                label: item.name
5886              };
5887            })
5888          }
5889        }));
5890      }));
5891    }
5892    if (options.fetchPostCategories) {
5893      promises.push(fetchPostCategories(function (categories) {
5894        searchContainer.dispatchEvent(new CustomEvent('post-categories-data', {
5895          detail: {
5896            data: categories
5897          }
5898        }));
5899      }));
5900    }
5901    if (options.fetchOffices) {
5902      promises.push(fetchOffices(function (offices) {
5903        searchContainer.dispatchEvent(new CustomEvent('offices-data', {
5904          detail: {
5905            data: offices
5906          }
5907        }));
5908      }));
5909    }
5910    if (options.fetchRentalRates) {
5911      promises.push(fetchAllRentalRates(function (rentalRates) {
5912        searchContainer.dispatchEvent(new CustomEvent('rental-rates-data', {
5913          detail: {
5914            data: rentalRates
5915          }
5916        }));
5917      }));
5918    }
5919    if (promises.length > 0) {
5920      Promise.all(promises).then(function () {
5921        done();
5922      });
5923    } else {
5924      // element's custom code is not executed yet, so we're scheduling callback to after element's code
5925      setTimeout(done);
5926    }
5927  }
5928  function fetchAllNeighborhoods(done) {
5929    var useRouter = auxUsesRouter('neighborhoods');
5930    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Same
5931    // args on both APIs (the federated neighborhoods field accepts
5932    // withProperties/withBlogPosts); only the selection set differs.
5933    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') + '}}';
5934    var payload = {};
5935    payload.offset = 0;
5936    payload.limit = 100;
5937    payload.companyId = variables.companyId;
5938    if (options.resource === 'properties') {
5939      payload.withProperties = {
5940        active: true
5941      };
5942      ['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) {
5943        if (variables[field] !== undefined && variables[field] !== null) {
5944          payload.withProperties[field] = variables[field];
5945        }
5946      });
5947    }
5948    if (options.resource === 'posts') {
5949      payload.withBlogPosts = {
5950        active: true
5951      };
5952      ['search', 'postStatusId', 'featured', 'categoryId', 'categoryIds', 'neighborhoodId', 'slug'].forEach(function (field) {
5953        if (variables[field] !== undefined && variables[field] !== null) {
5954          payload.withBlogPosts[field] = variables[field];
5955        }
5956      });
5957    }
5958
5959    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
5960    if (useRouter) {
5961      payload = window.luxuryPresence.routerApi.transformVariables('neighborhoods', payload);
5962    }
5963    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
5964      query: gqlQuery,
5965      variables: payload
5966    }).then(function (res) {
5967      var value = res.body.data && res.body.data.neighborhoods || {};
5968      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
5969      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
5970      done(items, items.length);
5971    });
5972  }
5973  function fetchPostCategories(done) {
5974    var featured = options.resource === 'posts' && !!variables.featured;
5975    var useRouter = auxUsesRouter('postCategories');
5976    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
5977    // selection set differs ({ items {...} } on the router).
5978    var selection = 'id, name, publishedCount, featuredPublishedCount';
5979    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) + '}}';
5980    var payload = {};
5981    payload.offset = 0;
5982    payload.limit = 100;
5983    payload.companyId = variables.companyId;
5984    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
5985      query: gqlQuery,
5986      variables: payload
5987    }).then(function (res) {
5988      var value = res.body.data && res.body.data.postCategories || {};
5989      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
5990      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
5991      done(items.map(function (item) {
5992        item.count = featured ? item.featuredPublishedCount : item.publishedCount;
5993        return item;
5994      }), items.length);
5995    });
5996  }
5997  function fetchOffices(done) {
5998    var useRouter = auxUsesRouter('offices');
5999    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. Only the
6000    // selection set differs ({ items {...} } on the router).
6001    var selection = 'id, name, tags';
6002    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired. The two
6003    // APIs differ in more than the items wrapper: federated offices takes
6004    // companyId: ID! (legacy gateway: String), so each branch builds its whole doc.
6005    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 + '}}';
6006    var payload = {
6007      offset: 0,
6008      limit: 100,
6009      companyId: variables.companyId
6010    };
6011
6012    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
6013    if (useRouter) {
6014      payload = window.luxuryPresence.routerApi.transformVariables('office
6014s', payload);
6015    }
6016    superagent.post(apiUrl(useRouter) + '/graphql').withCredentials().send({
6017      query: gqlQuery,
6018      variables: payload
6019    }).then(function (res) {
6020      var value = res.body.data && res.body.data.offices || {};
6021      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
6022      var items = useRouter ? window.luxuryPresence.routerApi.transformPage(value).items : value || [];
6023      done(items, items.length);
6024    });
6025  }
6026
6027  // ROUTER-CLEANUP: no rentalRates field on the federated router — legacy only.
6028  function fetchAllRentalRates(done) {
6029    var url = options.url || window.luxuryPresence.defaults.apiGatewayUrl;
6030    var gqlQuery = 'query ($companyId: String, $offset: Int, $limit: Int) {' + 'rentalRates (companyId: $companyId, offset: $offset, limit: $limit) {rentalRateId, label}}';
6031    var payload = {
6032      offset: 0,
6033      limit: 100,
6034      companyId: variables.companyId
6035    };
6036    superagent.post(url + '/graphql').withCredentials().send({
6037      query: gqlQuery,
6038      variables: payload
6039    }).then(function (res) {
6040      var items = res.body.data && res.body.data.rentalRates || [];
6041      done(items, items.length);
6042    }).catch(function (err) {
6043      console.error('Error fetching rental rates:', err);
6044      done([], 0);
6045    });
6046  }
6047  function fetchData(params, done) {
6048    var resource = options.resource;
6049    var gqlQuery = options.query || window.luxuryPresence.defaults.gql[resource];
6050    var payload = {};
6051    try {
6052      payload = JSON.parse(JSON.stringify(variables));
6053    } catch (e) {
6054      Object.keys(variables).forEach(function (variableName) {
6055        payload[variableName] = variables[variableName];
6056      });
6057    }
6058    payload.offset = (params.page - 1) * pageSize + offset;
6059    payload.limit = pageSize;
6060    payload.companyId = options.companyId;
6061    searchFormParams.forEach(function (formParam) {
6062      var val = params[formParam.formKey || formParam.param];
6063      if (val !== null && val !== undefined) {
6064        objSet(payload, formParam.param, val);
6065      }
6066    });
6067
6068    // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
6069    if (options.useRouterApi) {
6070      payload = window.luxuryPresence.routerApi.transformVariables(resource, payload);
6071    }
6072
6073    // TODO: Disabled loading due to jarring effect
6074    // dataContainer.html('Loading...');
6075    superagent.post(apiUrl(options.useRouterApi) + '/graphql').withCredentials().send({
6076      query: gqlQuery,
6077      variables: payload
6078    }).then(function (res) {
6079      if (res.body.errors) {
6080        done(res.body.errors);
6081        return;
6082      }
6083      var data = res.body.data || {};
6084      // ROUTER-CLEANUP: keep router branch, drop legacy when API retired
6085      var resources;
6086      var resourceCount;
6087      if (options.useRouterApi) {
6088        var page = window.luxuryPresence.routerApi.transformPage(data[resource]);
6089        resources = window.luxuryPresence.routerApi.transformResponse(resource, page.items);
6090        resourceCount = page.count;
6091      } else {
6092        resources = data[resource] || [];
6093        resourceCount = data[resource + 'Count'] && data[resource + 'Count'].count ? data[resource + 'Count'].count : 0;
6094      }
6095      if (resource === 'properties' && propertyPlaceholderImage?.id) {
6096        resources = resources.map(resource => {
6097          if (resource.media?.length === 0) {
6098            return Object.assign(resource, {
6099              media: [propertyPlaceholderImage]
6100            });
6101          }
6102          return resource;
6103        });
6104      }
6105      done(null, resources, resourceCount);
6106    });
6107  }
6108  function getTotalPage() {
6109    return Math.ceil(totalNumber / pageSize);
6110  }
6111  function renderPaginationList() {
6112    var totalPages = getTotalPage();
6113    var rangeStart = searchParams.page - pageRange;
6114    var rangeEnd = searchParams.page + pageRange;
6115    if (rangeEnd > totalPages) {
6116      rangeEnd = totalPages;
6117      rangeStart = totalPages - pageRange * 2;
6118      rangeStart = rangeStart < 1 ? 1 : rangeStart;
6119    }
6120    if (rangeStart <= 1) {
6121      rangeStart = 1;
6122      rangeEnd = Math.min(pageRange * 2 + 1, totalPages);
6123    }
6124
6125    // Making sure that 1 more page button is shown in edge positions
6126    if (pageRange === 0) {
6127      if (searchParams.page === totalPages) {
6128        rangeStart = totalPages <= 1 ? 1 : totalPages - 1;
6129      }
6130      if (searchParams.page === 1) {
6131        rangeEnd = Math.min(2, totalPages);
6132      }
6133    }
6134
6135    // Render pagination list
6136    if (mode === 'NUMBERED_PAGINATION') {
6137      el.innerHTML = generateHTML({
6138        currentPage: searchParams.page,
6139        pageRange: pageRange,
6140        rangeStart: rangeStart,
6141        rangeEnd: rangeEnd
6142      });
6143      if (totalPages < 2 && hidePaginationOnFirstPage) {
6144        container.style.display = 'none';
6145      } else {
6146        container.style.display = '';
6147      }
6148    } else if (mode === 'LOAD_MORE_BUTTON') {
6149      if (searchParams.page >= totalPages) {
6150        loadMoreButton.style.display = 'none';
6151      } else {
6152        loadMoreButton.style.display = '';
6153      }
6154    }
6155  }
6156  function render(data) {
6157    renderPaginationList();
6158
6159    // Render new content with handlebars
6160    var html = '';
6161    if (mode === 'LOAD_MORE_BUTTON' && searchParams.page > 1) {
6162      // If using load more, append search results to existing results
6163      html = dataContainer.innerHTML;
6164    }
6165    for (var i = 0; i < data.length; i++) {
6166      var itemData = recursivelyParse(data[i]);
6167      itemData.sectionIndex = options.sectionIndex;
6168      itemData.renderOptions = options.renderOptions;
6169      html += template(itemData);
6170    }
6171    dataContainer.innerHTML = html;
6172
6173    // Scroll Top
6174    if (!firstRender && mode === 'NUMBERED_PAGINATION' && (!renderBySearch || !options.skipScrollOnSearch)) {
6175      // Only animate to the top if we replace dataContainer (numbered pagination)
6176      setTimeout(() => {
6177        const scrollTargetOffsetTop = scrollTarget.getBoundingClientRect().top + window.scrollY - scrollOffset;
6178        window.scrollTo({
6179          top: scrollTargetOffsetTop,
6180          behavior: 'smooth'
6181        });
6182      }, 250);
6183    }
6184    return true;
6185  }
6186  function generateHTML(args) {
6187    const totalPages = getTotalPage();
6188    const {
6189      rangeStart,
6190      rangeEnd
6191    } = args;
6192    const makeLnk = page => window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
6193      ...searchParams,
6194      page
6195    });
6196    let html = '';
6197    if (showPrevious || showPageNumbers || showNext) {
6198      html += '<div class="paginationjs-pages"><ul>';
6199
6200      // Previous button
6201      if (showPrevious) {
6202        if (searchParams.page <= 1) {
6203          html += `<li class="${classPrefix}-prev ${disableClassName}"><a>${prevText}</a></li>`;
6204        } else {
6205          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>`;
6206        }
6207      }
6208
6209      // Pages
6210      if (showPageNumbers) {
6211        if (rangeStart <= 3) {
6212          for (let i = 1; i < rangeStart; i++) {
6213            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>`;
6214          }
6215        } else {
6216          if (showFirstOnEllipsisShow) {
6217            html += `<li class="${classPrefix}-page ${classPrefix}-first J-paginationjs-page" data-num="1"><a href="${makeLnk(1)}">1</a></li>`;
6218          }
6219          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
6220        }
6221        for (let i = rangeStart; i <= rangeEnd; i++) {
6222          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>`;
6223        }
6224        if (rangeEnd < totalPages - 2) {
6225          html += `<li class="${classPrefix}-ellipsis ${disableClassName}"><a>${ellipsisText}</a></li>`;
6226          if (showLastOnEllipsisShow) {
6227            html += `<li class="${classPrefix}-page ${classPrefix}-last J-paginationjs-page" data-num="${totalPages}"><a href="${makeLnk(totalPages)}">${totalPages}</a></li>`;
6228          }
6229        } else {
6230          for (let i = rangeEnd + 1; i <= totalPages; i++) {
6231            html += `<li class="${classPrefix}-page J-paginationjs-page" data-num="${i}"><a href="${makeLnk(i)}">${i}</a></li>`;
6232          }
6233        }
6234      }
6235
6236      // Next button
6237      if (showNext) {
6238        if (searchParams.page >= totalPages) {
6239          html += `<li class="${classPrefix}-next ${disableClassName}"><a>${nextText}</a></li>`;
6240        } else {
6241          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>`;
6242        }
6243      }
6244      html += '</ul></div>';
6245    }
6246    return html;
6247  }
6248  function go(newSearchParams, callback, restorationVisit) {
6249    if (disabled) return;
6250    var goToPageNumber = newSearchParams.page;
6251
6252    // Page number is out of bounds
6253    if (!goToPageNumber || goToPageNumber < 1) return;
6254    var totalPage = getTotalPage();
6255
6256    // Page number is out of bounds
6257    if (!restorationVisit && totalNumber > 0) {
6258      if (goToPageNumber > totalPage) return;
6259    }
6260    if (!options.skipSerialization && (mode === 'NUMBERED_PAGINATION' || searchContainer)) {
6261      var newURL = window.luxuryPresence.pagination.serializeParams(searchFormParams, sectionDomId, {
6262        ...newSearchParams,
6263        page: goToPageNumber !== 1 && mode === 'NUMBERED_PAGINATION' ? newSearchParams.page : null
6264      });
6265      if (!areQueryParamsEqual(newSearchParams, searchParams) && !restorationVisit) {
6266        window.history.pushState({}, '', window.luxuryPresence.getPath(newURL, {
6267          queryString: true
6268        }));
6269      }
6270    }
6271
6272    // Fetch and update page
6273    fetchData(newSearchParams, renderWithData);
6274    disabled = true;
6275    function renderWithData(err, data, count) {
6276      if (err) {
6277        dataContainer.dispatchEvent(new Event('error'));
6278      } else {
6279        searchParams = {
6280          ...newSearchParams
6281        };
6282        totalNumber = count - offset;
6283        if (data.length === 0) {
6284          dataContainer.dispatchEvent(new Event('no-data'));
6285        } else {
6286          dataContainer.dispatchEvent(new Event('data'));
6287        }
6288        render(data);
6289        firstRender = false;
6290      }
6291      disabled = false;
6292      renderBySearch = false;
6293    }
6294  }
6295  function areQueryParamsEqual(first, second) {
6296    var differ = Object.keys(first).find(function (key) {
6297      return first[key] !== undefined && first[key] !== null && first[key] !== second[key];
6298    });
6299    if (differ) {
6300      return false;
6301    }
6302    differ = Object.keys(second).find(function (key) {
6303      return second[key] !== undefined && second[key] !== null && second[key] !== first[key];
6304    });
6305    return !differ;
6306  }
6307  function next(callback) {
6308    go({
6309      ...searchParams,
6310      page: searchParams.page + 1
6311    }, callback);
6312  }
6313  function previous(callback) {
6314    go({
6315      ...searchParams,
6316      page: searchParams.page - 1
6317    }, callback);
6318  }
6319  function refresh(callback) {
6320    go(searchParams, callback);
6321  }
6322  function update(params, callback) {
6323    renderBySearch = true;
6324    go(params, callback);
6325  }
6326  function observer() {
6327    if (searchContainer) {
6328      searchContainer.addEventListener('search', function (event, newSearchParams) {
6329        newSearchParams = event.detail || newSearchParams;
6330        update({
6331          ...searchParams,
6332          ...newSearchParams,
6333          page: 1
6334        });
6335      });
6336      searchContainer.addEventListener('clear-search', function () {
6337        const defaultSearchParams = {
6338          ...DefaultSearchParams
6339        };
6340        const isCurrentSearchFormStateDefault = areQueryParamsEqual({
6341          ...defaultSearchParams,
6342          page: null
6343        }, {
6344          ...searchParams,
6345          page: null
6346        });
6347
6348        // if mode is LOAD_MORE_BUTTON we should't make anything on clear
6349        // when search form have default state
6350        if (isCurrentSearchFormStateDefault && mode !== 'NUMBERED_PAGINATION') {
6351          return;
6352        }
6353
6354        // if someone initially go to some page and click 'Clear' on search from
6355        // we should't navigate to first page. We should preserve page value
6356        if (isCurrentSearchFormStateDefault) {
6357          defaultSearchParams.page = searchParams.page;
6358        }
6359        syncSearchFormState(defaultSearchParams);
6360        update(defaultSearchParams);
6361      });
6362    }
6363    if (mode === 'LOAD_MORE_BUTTON') {
6364      loadMoreButton.addEventListener('click', function (event) {
6365        go({
6366          ...searchParams,
6367          page: searchParams.page + 1
6368        });
6369        return false;
6370      });
6371    }
6372    if (mode === 'LOAD_MORE_BUTTON' || mode === 'BUTTONLESS_PAGINATION') {
6373      // Do initial render
6374      go(Object.assign({}, searchParams, {
6375        page: 1
6376      }));
6377      return;
6378    }
6379    if (mode === 'NUMBERED_PAGINATION') {
6380      // Go to specified page number
6381      container.addEventListener(eventPrefix + 'go', function (event) {
6382        let {
6383          pageNumber,
6384          done
6385        } = event.detail || {};
6386        pageNumber = parseInt(pageNumber, 10);
6387        if (!pageNumber) {
6388          return;
6389        }
6390        go({
6391          ...searchParams,
6392          page: pageNumber
6393        }, done);
6394      });
6395
6396      // Page number button click
6397      el.addEventListener('click', function (event) {
6398        let clickTarget = event.target;
6399        let current = clickTarget.closest('.J-paginationjs-page, .J-paginationjs-previous, .J-paginationjs-next');
6400        let pageNumber = current?.getAttribute('data-num');
6401        if (!pageNumber || current.classList.contains(disableClassName) || current.classList.contains(activeClassName)) {
6402          return;
6403        } else {
6404          go({
6405            ...searchParams,
6406            page: parseInt(pageNumber, 10)
6407          });
6408        }
6409        event.preventDefault();
6410      });
6411
6412      // Whether to load the default page
6413      var defaultPageNumber = searchParams.page;
6414      if (triggerPagingOnInit) {
6415        container.dispatchEvent(new CustomEvent(eventPrefix + 'go', {
6416          detail: {
6417            pageNumber: defaultPageNumber
6418          }
6419        }));
6420      }
6421    }
6422    window.addEventListener('popstate', function (event) {
6423      var newParams = Object.assign({}, DefaultSearchParams, window.luxuryPresence.pagination.deserializeParams(searchFormParams, sectionDomId));
6424      if (!areQueryParamsEqual(newParams, searchParams)) {
6425        go(newParams, null, true);
6426        if (searchContainer) {
6427          syncSearchFormState(newParams);
6428        }
6429      }
6430    });
6431  }
6432  function replaceVariables(template, variables) {
6433    var formattedString;
6434    for (var key in variables) {
6435      var value = variables[key];
6436      var regexp = new RegExp('<%=\\s*' + key + '\\s*%>', 'img');
6437      formattedString = (formattedString || template).replace(regexp, value);
6438    }
6439    return formattedString;
6440  }
6441  function isTextEditorValue(obj) {
6442    return 'raw' in obj || 'gjs' in obj;
6443  }
6444  function getTextEditorValue(obj) {
6445    if (!obj.html) {
6446      return '';
6447    }
6448    var data = obj.html;
6449    var css = (obj.raw || obj.gjs || {}).css;
6450    if (css) {
6451      data = data + '<style>' + css + '</style>';
6452    }
6453    return data;
6454  }
6455
6456  /**
6457   * check rendered resources for html and raw properties that could indicate if resource is from an advanced text editor.
6458   * strips out raw proprties and returns only HTML if it exists.
6459   * @param {Object} resources a collection retrieved from the database
6460   * @return {Object} the newly modified object.
6461   */
6462  function recursivelyParse(resources) {
6463    forEach(resources, function (value, key) {
6464      if (!value) {
6465        return;
6466      }
6467      if (value instanceof Object) {
6468        if (isTextEditorValue(value)) {
6469          resources[key] = getTextEditorValue(value);
6470          return;
6471        } else {
6472          return recursivelyParse(value);
6473        }
6474      }
6475      try {
6476        var parsedData = JSON.parse(value);
6477        if (isTextEditorValue(parsedData)) {
6478          resources[key] = getTextEditorValue(parsedData);
6479        }
6480      } catch (e) {
6481        // do nothing if we failed to parse value as JSON
6482      }
6483    });
6484    return resources;
6485  }
6486  function forEach(collection, iteratee) {
6487    var func = Array.isArray(collection) ? arrayEach : baseFor;
6488    return func(collection, iteratee);
6489  }
6490  function baseFor(object, iteratee) {
6491    if (!object) {
6492      return;
6493    }
6494    var iterable = Object(object);
6495    var props = Object.keys(object);
6496    var length = props.length;
6497    var index = -1;
6498    while (length--) {
6499      var key = props[++index];
6500      if (iteratee(iterable[key], key, iterable) === false) {
6501        break;
6502      }
6503    }
6504    return object;
6505  }
6506  function objSet(obj, path, value) {
6507    const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
6508    pathArray.reduce((acc, key, i) => {
6509      if (acc[key] === undefined) acc[key] = {};
6510      if (i === pathArray.length - 1) acc[key] = value;
6511      return acc[key];
6512    }, obj);
6513  }
6514  function arrayEach(array, iteratee) {
6515    var index = -1;
6516    var length = array.length;
6517    while (++index < length) {
6518      if (iteratee(array[index], index, array) === false) {
6519        break;
6520      }
6521    }
6522    return array;
6523  }
6524  function selectPageRangeMode(e) {
6525    pageRange = e.matches ? mobilePageRange : desktopPageRange;
6526    renderPaginationList();
6527  }
6528  paginationMql.addEventListener('change', selectPageRangeMode);
6529})('section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de', JSON.parse("{\"pageSize\":\"9\",\"resource\":\"agents\",\"pageRange\":0,\"variables\":{\"limit\":9,\"offset\":0,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"categoryId\":\"{{pageElement.categoryId}}\",\"agentIds\":[\"0cf0a601-c484-4cc2-ac21-c28c15be3cb1\",\"1a58f8d0-84e2-4d90-9a17-fd7402860c7d\",\"a15a7a3b-224b-4746-99d2-1c6fc342c207\",\"afbd345c-b824-4bbf-b0b8-3ff57854c6ec\",\"9b86d143-978c-4fc7-9e1e-2e899ba2725a\",\"2fede9a8-b094-45eb-886d-ce39b87034a3\",\"20e2e2d7-90c1-4cca-80a2-9a26bb29638f\",\"ad415e28-f716-4c5a-a978-6e51539d440d\",\"a2f39871-ee1b-45f1-9b29-ce4ec14ca942\"]},\"searchFormParams\":[{\"param\":\"search\",\"urlKey\":\"search\"},{\"param\":\"officeId\",\"global\":true,\"urlKey\":\"officeId\"},{\"param\":\"tags\",\"global\":true,\"urlKey\":\"area\"}],\"skipScrollOnSearch\":false,\"scrollTargetSelector\":\".search-form\",\"hidePaginationOnFirstPage\":true,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"usePageResource\":false,\"sectionIndex\":6,\"useRouterApi\":false,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
6530} catch(e) {
6531console.log(e);
6532}
6533                try {
6534(function init(sectionDomId) {
6535  const $section = $("#" + sectionDomId);
6536  const $searchContainer = $section.find(".search-container");
6537  const $officeSelect = $section.find('.js-office-input');
6538  const $tagSelect = $section.find('.js-tag-input');
6539  const $searchInput = $section.find('.js-search-input');
6540  const $emptyMsg = $section.find('.js-empty-message');
6541  const $dataContainer = $section.find('.data-container');
6542  const $containter = $section.find('.js-container');
6543  const officeFilter = $searchContainer.data('fetchOffices');
6544  const $resetSearchInput = $searchContainer.find('.lp-input-reset');
6545  convertSelectToDropdown($tagSelect);
6546  $resetSearchInput.on('click', function (event) {
6547    event.preventDefault();
6548    $searchInput.val('');
6549    onSearch();
6550  });
6551  $dataContainer.on("data", function () {
6552    $emptyMsg.removeClass("visible");
6553    $containter.removeClass('no-data');
6554  });
6555  $dataContainer.on("no-data", function () {
6556    $emptyMsg.addClass("visible");
6557    $containter.addClass('no-data');
6558  });
6559  $searchInput.on('input', window.luxuryPresence.debounce(onSearch, 1000));
6560  function onSearch() {
6561    const params = {};
6562    if (officeFilter) params.officeId = $officeSelect.val() === '' ? null : [$officeSelect.val()];
6563    if ($tagSelect.length > 0) params.tags = $tagSelect.val() === '' ? null : [$tagSelect.val()];
6564    params.search = $searchInput.val() || null;
6565    $searchContainer[0]?.dispatchEvent(new CustomEvent('search', {
6566      detail: params
6567    }));
6568  }
6569  if (!officeFilter && $tagSelect.length === 0) return;
6570  var previousOption = '';
6571  $searchContainer.on('offices-data', function (evt) {
6572    let {
6573      data
6574    } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
6575    data = evt.detail?.data || data;
6576    $officeSelect.append(data.map(office => `<option value="${office.id}">${office.name}</option>`).join("\n"));
6577    convertSelectToDropdown($officeSelect);
6578  });
6579  function updateDropdown(select, value) {
6580    let $dropdown = $(select).next();
6581    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
6582    let $dropdownContent = $dropdown.find(".custom-select-content");
6583    let $selectedOption = $dropdownContent.find(`button[value="${value}"]`);
6584    function unselectOption() {
6585      $linkedOption = $originalSelect.find("option").eq(0);
6586      $linkedOption.prop("selected", true);
6587      $dropdownToggle.html($linkedOption.html());
6588      $dropdownContent.find(".custom-select-item").removeClass("is-selected");
6589      $originalSelect.change();
6590      previousOption = "";
6591    }
6592    if (!$selectedOption) return;
6593    if ($selectedOption.hasClass("is-disabled")) return;
6594    let elementNumber = $selectedOption.index();
6595    let $originalSelect = $selectedOption.closest(".custom-select").siblings("select");
6596    let $linkedOption = $originalSelect.find("option").eq(elementNumber);
6597    if (previousOption === value) {
6598      unselectOption();
6599      return;
6600    }
6601    if (!$linkedOption.prop("selected")) {
6602      $linkedOption.prop("selected", true);
6603      previousOption = value;
6604      $originalSelect.change();
6605      $selectedOption.addClass("is-selected").siblings(".custom-select-item").removeClass("is-selected");
6606      closeSelectMenu($selectedOption.closest(".custom-select-menu"));
6607      $dropdownToggle.html($linkedOption.html());
6608      if ($linkedOption.val()) {
6609        $dropdownToggle.removeClass("is-placeholder");
6610        $dropdown[$linkedOption.val() !== "" ? "addClass" : "removeClass"]("has-selection");
6611      } else {
6612        $dropdown.removeClass("has-selection");
6613        $dropdownToggle.addClass("is-placeholder");
6614      }
6615    }
6616  }
6617  function convertSelectToDropdown(selectItem) {
6618    let customDropdown = `
6619          <div class="custom-select" role="presentation">
6620              <button class="custom-select-toggle" type="button" aria-haspopup="true" aria-expanded="false"></button>
6621              <div class="custom-select-menu">
6622                  <div class="custom-select-content">
6623                  </div>
6624              </div>
6625          </div>`;
6626    $(customDropdown).insertAfter(selectItem);
6627    let $dropdown = $(selectItem).next();
6628    let $dropdownToggle = $dropdown.find(".custom-select-toggle");
6629    let $dropdownMenu = $dropdown.find(".custom-select-menu");
6630    let $dropdownContent = $dropdown.find(".custom-select-content");
6631    $dropdownToggle.addClass($(selectItem).attr("class")).removeClass("dropdown-select");
6632    $dropdownToggle.attr("id", $(selectItem).attr("id") + "custom");
6633    $dropdownToggle.attr("data-name", $(selectItem).attr("name"));
6634    $dropdownMenu.attr("aria-labelledby", $dropdownToggle.attr("id"));
6635    appendOptionButtons(selectItem, $dropdownContent);
6636    $(selectItem).removeClass().addClass("sr-only");
6637    $(selectItem).on("focus", function () {
6638      showSelectMenu($dropdownMenu[0]);
6639      $dropdownToggle.focus();
6640    });
6641    var toggleText = $(selectItem).find(":selected").first().text() || $(selectItem).children().first().text();
6642    $dropdownToggle.addClass("is-placeholder").html(toggleText);
6643    $dropdown.on("click", ".custom-select-item", function (e) {
6644      updateDropdown($(this).closest(".lp-input-group").find("select"), $(this).attr("value"));
6645    });
6646    function convertOptionToButton(option) {
6647      var optionText = $(option).text();
6648      var optionValue = $(option).attr("value") || $(option).text();
6649      var optionIsDisabled = $(option).prop("disabled");
6650      var outputButton = `<button value="${optionValue}" class="custom-select-item lp-icon" type="button" ${optionIsDisabled ? "disabled" : ""}>${optionText}</button>`;
6651      return outputButton;
6652    }
6653    function appendOptionButtons(selectItem, appendTarget) {
6654      $(selectItem).find("option").each(function () {
6655        let currentButton = convertOptionToButton(this);
6656        $(appendTarget).append(currentButton);
6657      });
6658    }
6659    function showSelectMenu(selectMenu) {
6660      var customSelect = $(selectMenu).closest(".custom-select")[0];
6661      customSelect.classList.add('open');
6662      $(selectMenu).slideDown();
6663    }
6664    $dropdown.on("click", ".custom-select-toggle", function (e) {
6665      var $customSelect = $(this).closest(".custom-select");
6666      var selectMenu = $customSelect.find(".custom-select-menu")[0];
6667      if ($customSelect.hasClass("open")) {
6668        closeSelectMenu(selectMenu);
6669      } else {
6670        showSelectMenu(selectMenu);
6671      }
6672    });
6673    $(document.body).on("click", function (e) {
6674      if (!$(e.target).closest(`#${sectionDomId} .js-select-input`).length) {
6675        $(`#${sectionDomId} .custom-select.open`).each(function () {
6676          const selectMenu = $(this).find(".custom-select-menu")[0];
6677          closeSelectMenu(selectMenu);
6678        });
6679      }
6680    });
6681  }
6682  function closeSelectMenu(selectMenu) {
6683    var customSelect = $(selectMenu).closest(".custom-select")[0];
6684    $(customSelect).removeClass("open");
6685    $(selectMenu).slideUp();
6686  }
6687  $officeSelect.change(onSearch);
6688  $tagSelect.change(onSearch);
6689})('section-5e3b5ca5-96e5-4866-9c1f-384cbb2438de', JSON.parse("{\"resource\":\"agents\",\"useRouterApi\":false,\"companyId\":\"b8978102-23d8-42d2-b1c5-bbed6df2e9fd\",\"usePageResource\":false,\"sectionIndex\":6,\"routerApiAux\":{\"testimonials\":true,\"agents\":false,\"neighborhoods\":false,\"developments\":false,\"properties\":false,\"posts\":true,\"pressReleases\":true,\"offices\":true,\"teams\":true,\"pois\":true,\"postCategories\":true}}"));
6690} catch(e) {
6691console.log(e);
6692}
6693                try {
6694(function init(sectionDomId) {
6695  var $contactForm = $('#' + sectionDomId + ' .newsletter-signup__form');
6696  $contactForm.find('.contact-form__reset').click(function (e) {
6697    e.preventDefault();
6698    $(this).closest('form').removeClass('success').trigger("reset");
6699  });
6700  $contactForm.find('input[name="name"]').on("keyup", function () {
6701    if (this.value.replaceAll(/\d/g, "").trim() === "") {
6702      this.setCustomValidity("Please enter your name.");
6703    } else {
6704      this.setCustomValidity("");
6705    }
6706  });
6707  const form = $("#" + sectionDomId).find("form");
6708  const redirectLink = $('#' + sectionDomId + ' .redirect-link');
6709  form.on("reset", function () {
6710    redirectPage(redirectLink);
6711  });
6712  function redirectPage(link) {
6713    if (link.length) {
6714      const rawHref = link.attr('href');
6715      link.attr('href', setHttp(rawHref));
6716      link[0].click();
6717    }
6718  }
6719  function setHttp(link) {
6720    if (link.search(/^http[s]?\:\/\/|\//) == -1) {
6721      link = 'http://' + link;
6722    }
6723    return link;
6724  }
6725})('section-2c81dbbf-0b52-4cc5-a6fa-5bc175d67ec5', 'undefined');
6726} catch(e) {
6727console.log(e);
6728}
6729                try {
6730(function init(sectionDomId) {// please write all js here and use sectionDomId in selectors in order of DOM encapsulation
6731})('section-90b955a0-1aef-435e-aa96-59c408339909', 'undefined');
6732} catch(e) {
6733console.log(e);
6734}
6735
6736            var { body } = document;
6737            var globalNav = body.querySelector(':scope > nav');
6738            var globalSideMenu = body.querySelector(':scope > div.sidemenu');
6739
6740            document.querySelectorAll('body > .modal .close').forEach(modalCloseBtn => {
6741                modalCloseBtn.addEventListener('click', function() {
6742                window.lpUI.hideClosestModal(modalCloseBtn);
6743              });
6744            });
6745
6746            window.addEventListener('click', function() {
6747                document.querySelectorAll('.share-popup').forEach(sharedPopup => {
6748                    sharedPopup.style.display = 'none' ;
6749                });
6750            });
6751
6752            /* Misc Partials / Addons */
6753            function initWOW() {
6754                if (wow) {
6755                    wow.init();
6756                    wow.scrollHandler();
6757                    setTimeout(function () {
6758                        const wowHideStyle = document.getElementById('wow-hide-elements');
6759                        if(wowHideStyle) {
6760                            wowHideStyle.disabled = true;
6761                        }
6762                    }, 1);
6763                }
6764            }
6765
6766            const wowHideElements =  document.getElementById('wow-hide-elements');
6767            if (wowHideElements) {
6768               wowHideElements.disabled = false;
6769            }
6770
6771                initWOW();
6772
6773            /* Generic Navbar Handling */
6774            globalNav?.querySelectorAll('.hamburger-component').forEach(hamburgerComponent => {
6775                hamburgerComponent.addEventListener('click', function() {
6776                window.lpUI.sideMenuToggle();
6777              });
6778            });
6779            globalSideMenu?.querySelectorAll('.toggle').forEach(toggleEl => {
6780                toggleEl.addEventListener('click', function() {
6781                window.lpUI.sideMenuToggle();
6782              });
6783            });
6784
6785            document.querySelectorAll('body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a').forEach(linkEl => {
6786                linkEl.addEventListener('click', function(e) {
6787                  e.preventDefault();
6788                  e.stopPropagation();
6789                  var subNav = linkEl.parentElement.querySelector(':scope > .sub-nav');
6790                  if (subNav && subNav.classList.contains('visible')){
6791                    subNav.classList.remove('visible');
6792                  } else {
6793                    globalNav?.querySelectorAll('.sub-nav-container .sub-nav').forEach(globalSubNav => {
6794                      globalSubNav.classList.remove('visible');
6795                    });
6796                    globalSideMenu?.querySelectorAll('.sub-nav').forEach(sideMenuSubNav => {
6797                        sideMenuSubNav.classList.remove('visible');
6798                    });
6799                    subNav?.classList.add('visible');
6800                  }
6801                });
6802            });
6803            window.addEventListener('click', function() {
6804                document.querySelectorAll('nav .sub-nav.visible, .sidemenu .sub-nav.visible').forEach(subNavEl => {
6805                    subNavEl.classList.remove('visible');
6806                });
6807            });
6808
6809        }
6810
6811        document.addEventListener('DOMContentLoaded', lpGlobalInit);
6812
6813    </script>
6813
6814
6815    
6815<script type="module">
6816    function selectorExists(selector) {
6817        return document.querySelector(selector) !== null;
6818    }
6819
6820    // Function to initialize the third-party library
6821    function initParoller(selector = '.my-paroller') {
6822        var $parollerElements = $(selector);
6823        if ($parollerElements.length > 0 && typeof $parollerElements.paroller === 'function') {
6824            $parollerElements.paroller();
6825        }
6826    }
6827
6828    const parollerSelector = '.my-paroller';
6829
6830    if (selectorExists(parollerSelector)) {
6831        window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() {
6832            initParoller(parollerSelector);
6833            window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded = true;
6834        });
6835    }
6836    </script>
6836
6837
6838            <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 6838-6839
6838
6839            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
6839GTM-TTW62GG
vendor: 107 bytes, lines 6839-6841
6839"
6840            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
6841            
6841<!-- End Google Tag Manager -->
6842            <!-- Google Tag Manager (noscript) -->
vendor: 80 bytes, lines 6842-6843
6842
6843            <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
6843GTM-T9SFQGHZ
vendor: 107 bytes, lines 6843-6845
6843"
6844            height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
6845            
6845<!-- End Google Tag Manager -->
6846        
6847            
6847<script
6848                src="https://cdn.luxurypresence.com/scripts/a11y-widget/latest/widget.js"
6849                data-website-id="f8eeb622-1c43-422f-bf48-840bd660be00"
6850                
6851                defer></script>
vendor: 1 bytes, line 6851
6851
6852<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 6852
6852
6853<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:'a42a11c29a5ea468',t:'MTc5MDY3NTI3Nw=='};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>
6853</body>
6854</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.