Help
RSS
API
Feed
Maltego
Contact
Domain > 22649weepingoak.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-12-15
104.21.60.243
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Mon, 15 Dec 2025 12:46:00 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveCache-Control: max-age3600Expires: Mon, 15 Dec 2025 13:46:00 GMTLocation: https://22649weepingoak.com/Set-Cookie: __cf_bmD_7HX9.SY16HYAe.402bA9ilhnspi04r44oj5uApE2o-1765802760-1.0.1.1-dt1sK1aDa8Aao0wJ4GAUGbqLlBwjhM8.1r0sGgptuVSwSVpfiTRg.GF5eveSQKSu5IMq4idxdGpRdS82qeebxy3EZkuGaftka8gZuyb49hs; path/; expiresMon, 15-Dec-25 13:16:00 GMT; domain.22649weepingoak.com; HttpOnlyServer: cloudflareCF-RAY: 9ae60a921863b74e-PDX html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>cloudflare/center>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Mon, 15 Dec 2025 12:46:00 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveCF-RAY: 9ae60a927fbeb338-PDXx-powered-by: Luxury Presencex-amz-id-2: 6/gk5ZoXd/mphAaFZfXQxMiIv1Ez0/OQRQD8o8tBhQpRSnk7ht3d7AxGIAUUuTyxRu6DMKXww4ox-amz-request-id: DSETBZZR0AP7CGEHlast-modified: Mon, 15 Dec 2025 04:56:33 GMTx-amz-server-side-encryption: AES256Accept-Ranges: bytesCache-Control: max-age600, stale-while-revalidate1200, publiccf-cache-status: MISSSet-Cookie: __cf_bm9lT7Hg7hxvA6oDgE17f015436pmYRx5yItWj0JK9cxE-1765802760-1.0.1.1-3TRGM82LpvBmGRvQ55Agtv5z7AcpDSrLlm9iZfKB.NIqusUt98TBsu6N3qBdn0aQv8nzlqdVSjikwH_g6C_D61ZnTFna_i5B_pOR5iu1xS4; path/; expiresMon, 15-Dec-25 13:16:00 GMT; domain.22649weepingoak.com; HttpOnly; SecureServer: cloudflare !DOCTYPE html>html classno-js langen>head> meta charsetutf-8> meta http-equivx-ua-compatible contentieedge> meta nameviewport contentwidthdevice-width, initial-scale1.0> meta nametwitter:card contentsummary_large_image> title>22649 Weeping Oak Ct/title> meta propertyog:title content22649 Weeping Oak Ct> meta nametwitter:title content22649 Weeping Oak Ct> meta propertyog:image contenthttps://dlajgvw9htjpb.cloudfront.net/cms/c25ef3cc-17f3-4e20-8741-4a53adcbbde4/ML81991450/-155255731523980844.jpg> meta nametwitter:image contenthttps://dlajgvw9htjpb.cloudfront.net/cms/c25ef3cc-17f3-4e20-8741-4a53adcbbde4/ML81991450/-155255731523980844.jpg> meta propertyog:url contenthttps://22649weepingoak.com/> link relcanonical hrefhttps://22649weepingoak.com/> script>(function(html){html.className html.className.replace(/\bno-js\b/,js)})(document.documentElement);/script> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link relstylesheet hrefhttps://fonts.googleapis.com/css?familyTenor%20Sans:400>link relstylesheet hrefhttps://fonts.googleapis.com/css?familyHanken%20Grotesk:100,200,300,400,500,600,700,800,900,100i,200i,300i,400i,500i,600i,700i,800i,900i> link relpreload hrefhttps://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css asstyle onloadthis.onloadnull;this.relstylesheet> noscript>link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css>/noscript> link relicon typeimage/x-icon href/favicon.ico> link relicon typeimage/png sizes16x16 href/favicon-16x16.png> link relicon typeimage/png sizes32x32 href/favicon-32x32.png> link relicon typeimage/png sizes48x48 href/favicon-48x48.png> style idglobal-css>:root{--global-primary-font-family:Tenor Sans,sans-serif;--global-primary-font-family-short:Tenor Sans;--global-secondary-font-family:Hanken Grotesk,sans-serif;--global-secondary-font-family-short:Hanken Grotesk;--global-body-padding:0px;--global-background-color:#fff;--global-body-font-size:16px;--global-h1-font-size:120px;--global-h2-font-size:64px;--global-h3-font-size:36px;--global-h4-font-size:24px;--global-h5-font-size:18px;--global-h6-font-size:13px;--global-section-padding:96px;}@media (max-width: 768px){:root{--global-section-padding:64px;}}body{padding:0px;background-color:#fff;font-family:Hanken Grotesk,sans-serif;font-size:16px;}@media (min-width: 768px){body{padding:0px 0px 0px 0px;}}h1,h2,h3,h4,h5,h6,button{font-family:Tenor Sans,sans-serif;}h1{font-size:120px;}h2{font-size:64px;}h3{font-size:36px;}h4{font-size:24px;}h5{font-size:18px;}h6{font-size:13px;}/style> link relstylesheet typetext/css hrefhttps://styles.luxurypresence.com/pinnacle-property/index.css /> style idwebsite-css>/style> style idwow-hide-elements>.wow{visibility:hidden!important}/style> style idpage-css> #section-847ccd62-4735-40ec-8f0c-f682d3ab693b{color:#fdfdff;--fontColor:#fdfdff;--fontColor_H:240;--fontColor_S:100%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b{overflow:hidden;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .section{position:relative;width:100vw;min-height:100vh;overflow:hidden;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .holder{overflow:hidden;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .lp-h1{margin-bottom:16px;}@media (min-width: 1800px){#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .lp-h1{margin-bottom:1.1111vw;}}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .lp-text--subtitle{margin-bottom:0;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text{max-width:765px;margin:0 auto;text-align:center;}@media (max-width: 767px){#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text{max-width:90%;}}@media (min-width: 1800px){#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text{max-width:53.125vw;}}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text-container{position:absolute;width:100%;bottom:80px;}@media (max-width: 767px){#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text-container{bottom:60px;}}@media (min-width: 1800px){#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text-container{bottom:5.5556vw;}}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text li{display:inline;position:relative;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text li:not(:last-of-type){padding-right:12px;margin-right:12px;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text li:not(:last-of-type):before{content:;background:rgba(255, 255, 255, 0.6);top:50%;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);position:absolute;left:100%;width:4px;height:4px;}@media (max-width: 767px){#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text li:not(:last-of-type):before{background-color:var(--colorBeige300, #C9C4BF);}}@media (max-width: 767px){#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text li.city{display:block;padding-right:0;margin-right:0;margin-bottom:5px;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .text li.city:before{content:unset;}}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .media{position:absolute;left:0;right:0;top:0;bottom:0;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .media:after{content:;background:linear-gradient(180deg, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.2) 47.92%, rgba(0, 0, 0, 0.5) 100%);position:absolute;left:0;right:0;top:0;bottom:0;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .media-image{height:100%;width:100%;object-fit:cover;}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .scroll-down{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;padding:10px;margin-top:47px;z-index:3;}@media (min-width: 1800px){#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .scroll-down{margin-top:3.2639vw;}}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .scroll-down:after{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);}#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .scroll-down--container{width:100%;height:88px;}@media (max-width: 1024px){#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .scroll-down--container{display:none;}}@media (min-width: 1800px){#section-847ccd62-4735-40ec-8f0c-f682d3ab693b .scroll-down--container{height:6.1111vw;}}#section-819451f6-3835-4bf6-baad-6877cf33a129{color:#262626;--fontColor:#262626;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:15%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#fff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#fff;}#section-819451f6-3835-4bf6-baad-6877cf33a129 .description{overflow:hidden;}#section-819451f6-3835-4bf6-baad-6877cf33a129 .lp-h3{margin-bottom:96px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;text-align:center;}@media (min-width: 768px) and (max-width: 1439px){#section-819451f6-3835-4bf6-baad-6877cf33a129 .lp-h3{margin-bottom:104px;}}@media (max-width: 767px){#section-819451f6-3835-4bf6-baad-6877cf33a129 .lp-h3{margin-bottom:53px;text-align:center;-webkit-line-clamp:5;}}@media (min-width: 1621px){#section-819451f6-3835-4bf6-baad-6877cf33a129 .lp-h3{margin-bottom:6.6667vw;}}#section-819451f6-3835-4bf6-baad-6877cf33a129 .pretitle-block{padding:184px 92px 0 92px;}@media (min-width: 768px) and (max-width: 1439px){#section-819451f6-3835-4bf6-baad-6877cf33a129 .pretitle-block{padding:160px 64px 0 64px;}}@media (max-width: 767px){#section-819451f6-3835-4bf6-baad-6877cf33a129 .pretitle-block{padding:120px 23px 0 23px;}}@media (min-width: 1621px){#section-819451f6-3835-4bf6-baad-6877cf33a129 .pretitle-block{padding:12.7778vw 6.3889vw 0 6.3889vw;}}#section-819451f6-3835-4bf6-baad-6877cf33a129 .pretitle-block,#section-819451f6-3835-4bf6-baad-6877cf33a129 .more-text-block{border-left:1px solid var(--graphicColor);border-right:1px solid var(--graphicColor);}#section-819451f6-3835-4bf6-baad-6877cf33a129 .more-text-block{opacity:0;}#section-819451f6-3835-4bf6-baad-6877cf33a129 .more-text-block.visible{-webkit-animation:2s linear 0s forwards fadeInUp;animation:2s linear 0s forwards fadeInUp;}#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7{color:#64615f;--fontColor:#64615f;--fontColor_H:24;--fontColor_S:3%;--fontColor_L:38%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#f2f1f0;--bgColor_H:30;--bgColor_S:7%;--bgColor_L:95%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#f2f1f0;}#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .holder{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr fit-content(33%);grid-template-columns:1fr 1fr fit-content(33%);}@media (min-width: 1440px) and (max-width: 1620px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .holder{max-width:915px;margin-left:auto;margin-right:auto;}}@media (max-width: 767px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .holder{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}@media (min-width: 1621px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .holder{max-width:63.5417vw;}}@media (max-width: 767px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%;text-align:center;margin-bottom:40px;}}#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item-value{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:10px;-webkit-align-items:flex-end;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}@media (max-width: 767px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item-value{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}}@media (min-width: 1621px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item-value{margin-bottom:0.6944vw;}}#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item-unit{margin-bottom:10px;margin-left:5px;}@media (max-width: 767px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item-unit{margin-bottom:5px;}}@media (min-width: 1621px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item-unit{margin-bottom:0.6944vw;margin-left:0.3977vw;}}#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item-title{margin-bottom:0;margin-top:14px;}@media (min-width: 1621px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item-title{margin-top:0.9.722vw;}}@media (min-width: 768px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item:nth-child(n+4){margin-top:56px;}}@media (min-width: 1621px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 .item:nth-child(n+4){margin-top:3.8889vw;}}#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 h2,#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 h3{color:var(--numberColor);}@media (min-width: 768px) and (max-width: 1100px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 h2{display:none;}}#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 h3{display:none;}@media (min-width: 768px) and (max-width: 1100px){#section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 h3{display:block;}}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,20px,0);opacity:0;-webkit-transform:translate3d(0,20px,0);-moz-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,20px,0);opacity:0;-webkit-transform:translate3d(0,20px,0);-moz-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@-webkit-keyframes fadeInUp{0%{-webkit-transform:translate3d(0,50px,0);opacity:0;-webkit-transform:translate3d(0,50px,0);-moz-transform:translate3d(0,50px,0);-ms-transform:translate3d(0,50px,0);transform:translate3d(0,50px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@keyframes fadeInUp{0%{-webkit-transform:translate3d(0,50px,0);opacity:0;-webkit-transform:translate3d(0,50px,0);-moz-transform:translate3d(0,50px,0);-ms-transform:translate3d(0,50px,0);transform:translate3d(0,50px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}#section-58957342-23fb-4407-9607-203b09d36ac6{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#262626;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:15%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#262626;}#section-58957342-23fb-4407-9607-203b09d36ac6 .lp-vertical-paddings{--extra-space:94px;--vertical-padding:184px;padding:calc(var(--vertical-padding) + var(--extra-space)) 0;}@media (min-width: 1800px){#section-58957342-23fb-4407-9607-203b09d36ac6 .lp-vertical-paddings{--extra-space:6.525vw;--vertical-padding:12.7778vw;}}@media (min-width: 768px) and (max-width: 1439px){#section-58957342-23fb-4407-9607-203b09d36ac6 .lp-vertical-paddings{--extra-space:39px;--vertical-padding:160px;}}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .lp-vertical-paddings{--extra-space:0px;--vertical-padding:120px;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider{position:relative;height:520px;}@media (min-width: 1800px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider{height:36.05vw;}}@media (min-width: 768px) and (max-width: 1439px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider{height:375px;}}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider{height:240px;}}@media (max-width: 768px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider.slick-initialized .slider-item img{display:none;}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider.slick-initialized .slider-item.slick-current img,#section-58957342-23fb-4407-9607-203b09d36ac6 .slider.slick-initialized .slider-item.pre-active img{display:block;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-list{overflow:visible;}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-slide{padding:0 40px;outline:none;}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-slide{padding-left:0;padding-right:0;max-width:100vw;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-slide:focus{outline:none;}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-slide.mobile-updated{padding:0 8px;max-width:50vw;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-slide .slider-img{padding-top:520px;-webkit-transition:-webkit-transform .8s ease;transition:transform .8s ease;}@media (min-width: 1800px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-slide .slider-img{padding-top:36.05vw;}}@media (min-width: 768px) and (max-width: 1439px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-slide .slider-img{padding-top:375px;}}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-slide .slider-img{padding-top:240px;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-slide img{-webkit-transform:translateX(-100%);-moz-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);left:100%;}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-slide img{-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);left:50%;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-track{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider-img{position:relative;display:block;-webkit-transition:all .8s ease-in;transition:all .8s ease-in;}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider-img img{height:100%;width:auto;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);position:absolute;left:50%;top:0;-webkit-transition:all .8s ease-out;transition:all .8s ease-out;}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider-img img{object-fit:contain;width:100%;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-current .slider-img img,#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-first .slider-img img{--scale:1.361538461538462;-webkit-transform:translateX(-50%) scale(var(--scale))!important;-moz-transform:translateX(-50%) scale(var(--scale))!important;-ms-transform:translateX(-50%) scale(var(--scale))!important;transform:translateX(-50%) scale(var(--scale))!important;left:50%!important;cursor:none;}@media (min-width: 1800px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-current .slider-img img,#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-first .slider-img img{--scale:1.364863052636182;}}@media (min-width: 768px) and (max-width: 1439px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-current .slider-img img,#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-first .slider-img img{--scale:1.208;}}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-current .slider-img img,#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-first .slider-img img{--scale:1;}}@media (min-width: 768px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-current~.slick-slide .slider-img img{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);left:0;}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-last .slider-img img{-webkit-transform:translateX(-100%)!important;-moz-transform:translateX(-100%)!important;-ms-transform:translateX(-100%)!important;transform:translateX(-100%)!important;left:100%!important;}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider .slick-next .slider-img img{-webkit-transform:translateX(0)!important;-moz-transform:translateX(0)!important;-ms-transform:translateX(0)!important;transform:translateX(0)!important;left:0!important;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .slider-holder{position:relative;display:none;}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider-arrows{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media (min-width: 1223px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider-arrows .slick-prev{left:60px;}}@media (min-width: 1223px){#section-58957342-23fb-4407-9607-203b09d36ac6 .slider-arrows .slick-next{right:60px;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar{position:relative;width:140px;}@media (min-width: 1800px){#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar{width:9.7222vw;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar-holder{position:absolute;left:50%;bottom:calc(-64px - var(--extra-space));-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}@media (min-width: 1800px){#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar-holder{bottom:calc(-4.4444vw - var(--extra-space));}}@media (min-width: 768px) and (max-width: 1439px){#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar-holder{bottom:calc(-80px - var(--extra-space));}}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar-holder{bottom:calc(-72px - var(--extra-space));}}#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar-current,#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar-total{position:absolute;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar-current{right:calc(100% + 32px);}#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar-total{left:calc(100% + 32px);}#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar-progress{position:relative;}#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar-progress:after{content:;position:absolute;left:0;top:50%;height:1px;width:100%;border-top:1px solid var(--colorAccent, #BC8F45);}#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar:before{content:;position:absolute;left:0;top:50%;height:1px;width:100%;}#section-58957342-23fb-4407-9607-203b09d36ac6 .progressbar:before{border-top:1px solid var(--colorGray200, #464341);}#section-58957342-23fb-4407-9607-203b09d36ac6 .images__wrap{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}#section-58957342-23fb-4407-9607-203b09d36ac6 .images__item{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;padding:12px;}@media (max-width: 992px){#section-58957342-23fb-4407-9607-203b09d36ac6 .images__item{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;padding:3px;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .images__item:nth-child(3n-2){-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}#section-58957342-23fb-4407-9607-203b09d36ac6 .images__image{padding-bottom:56%;width:100%;background:center no-repeat;-webkit-background-size:cover;background-size:cover;cursor:pointer;}#section-58957342-23fb-4407-9607-203b09d36ac6 .modal-1{display:none;position:fixed;background-color:#000;top:0;left:0;height:100%;width:100%;z-index:1000;overflow-y:auto;padding:120px 120px 254px 120px;}@media (min-width: 1800px){#section-58957342-23fb-4407-9607-203b09d36ac6 .modal-1{padding:8.3333vw 8.3333vw 17.6389vw 8.3333vw;}}@media (min-width: 768px) and (max-width: 1439px){#section-58957342-23fb-4407-9607-203b09d36ac6 .modal-1{padding:82px 64px 64px 94px;}}@media (max-width: 767px){#section-58957342-23fb-4407-9607-203b09d36ac6 .modal-1{padding:88px 0 96px 0;}}#section-58957342-23fb-4407-9607-203b09d36ac6 .modal-1::-webkit-scrollbar{display:none;}#section-58957342-23fb-4407-9607-203b09d36ac6 .visible{display:block;}#section-58957342-23fb-4407-9607-203b09d36ac6 .lp-expand-btn{display:none;}#section-58957342-23fb-4407-9607-203b09d36ac6 .lp-cursor-container.hide{opacity:0;-webkit-transform:scale3d(0, 0, 0);-moz-transform:scale3d(0, 0, 0);-ms-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);}#section-9af2dc98-5100-445f-a4c2-86088820c480{color:transparent;--fontColor:transparent;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:0;--fontColor_darkenDir:1;--bgColor:transparent;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:0%;--bgColor_A:0;--bgColor_darkenDir:1;background-color:transparent;}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour{overflow:hidden;}@media (min-width: 1224px) and (max-width: 1799px){#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour{height:787px;}}@media (min-width: 768px) and (max-width: 1223px){#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour{height:524px;}}@media (max-width: 767px){#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour{height:260px;}}@media (min-width: 1800px){#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour{height:53.2639vw;}}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour .tour-overlay{position:relative;width:100%;height:100%;}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour .tour-image{position:absolute;height:100%;width:100%;object-fit:cover;}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour iframe{width:100%;height:70vh;border:none;display:block;margin-bottom:0;}@media (max-width: 540px){#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour iframe{display:none;}}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour .button-wrapper{position:relative;width:100%;height:100%;cursor:pointer;}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour .button-wrapper:before{content:;position:absolute;left:0;right:0;top:0;bottom:0;background-color:#000;opacity:.4;}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour__header{padding:30px;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;}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour__overlay{position:fixed;top:0;left:0;width:100%;height:100vh;display:none;background-color:#000;z-index:1000;}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour__overlay .close-icon{position:relative;z-index:1;width:32px;height:32px;background:none;padding:10px;border:none;border-radius:0;color:#fff;font-size:0;cursor:pointer;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour__overlay .close-icon:before,#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour__overlay .close-icon:after{content:;position:absolute;left:6px;top:50%;margin-top:-1px;width:20px;height:2px;border-radius:2px;background-color:currentColor;-webkit-transition:all 0.3s;transition:all 0.3s;}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour__overlay .close-icon:before{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg);}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour__overlay .close-icon:after{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg);}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour__overlay iframe{width:100%;height:calc(100vh - 84px);border:none;display:block;margin-bottom:0;}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour .visible{display:block;}#section-9af2dc98-5100-445f-a4c2-86088820c480 .virtual-tour .ico-holder{position:absolute;z-index:100;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);}#section-97650f29-42ec-409b-b791-f91c3df71036{color:#ffffff;--fontColor:#ffffff;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:100%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#000000;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:0%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#000000;}#section-97650f29-42ec-409b-b791-f91c3df71036 .section{overflow:hidden;}#section-97650f29-42ec-409b-b791-f91c3df71036 .item{position:relative;height:787px;width:100%;border:0;background-color:transparent;cursor:pointer;}#section-97650f29-42ec-409b-b791-f91c3df71036 .item:after{content:;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#000;opacity:.4;}@media (max-width: 767px){#section-97650f29-42ec-409b-b791-f91c3df71036 .item{height:260px;}}@media (min-width: 767px) and (max-width: 1223px){#section-97650f29-42ec-409b-b791-f91c3df71036 .item{height:524px;}}@media (min-width: 1800px){#section-97650f29-42ec-409b-b791-f91c3df71036 .item{height:54.6528vw;}}#section-97650f29-42ec-409b-b791-f91c3df71036 .item img{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;}#section-97650f29-42ec-409b-b791-f91c3df71036 .ico-holder{position:absolute;z-index:100;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);height:110px;width:110px;}@media (min-width: 2000px){#section-97650f29-42ec-409b-b791-f91c3df71036 .ico-holder{height:7.6389vw;width:7.6389vw;}}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#ffffff;}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__container{width:100%;padding-left:40px;padding-right:40px;}@media (max-width: 767px){#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__container{padding-left:20px;padding-right:20px;}}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__header{margin-bottom:30px;max-width:640px;margin-left:auto;margin-right:auto;text-align:center;}@media (min-width: 768px){#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__header{margin-bottom:50px;}}@media (min-width: 1200px){#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__header{margin-bottom:70px;}}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__header img{max-width:260px;height:auto;}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__header img:not(:only-child){margin-bottom:30px;}@media (min-width: 768px){#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__header img:not(:only-child){margin-bottom:50px;}}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__heading{margin-bottom:20px;}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__lead{margin-bottom:0;font-size:20px;line-height:1.4;}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__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;margin-left:-20px;margin-right:-20px;}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__col{width:100%;margin-bottom:20px;padding:0 20px;}@media (min-width: 768px){#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__col{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__col:last-child .gallery-card{padding-top:50%;}}@media (min-width: 992px){#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__col{-webkit-flex-basis:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%;margin-bottom:40px;}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__col:nth-child(8n + 7),#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-component__col:nth-child(8n + 8){-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;}}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-card{position:relative;height:100%;padding-top:100%;-webkit-text-decoration:none;text-decoration:none;overflow:hidden;}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-card:focus{outline:none;}@media (hover: hover) and (pointer: fine){#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-card:hover img{-webkit-transform:scale(1.05);-moz-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05);}}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .gallery-card>img{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;-webkit-transition:-webkit-transform .5s ease-out;transition:transform .5s ease-out;cursor:-webkit-zoom-in;cursor:zoom-in;}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .slick-track-locked{-webkit-transform:translate3d(0, 0, 0)!important;-moz-transform:translate3d(0, 0, 0)!important;-ms-transform:translate3d(0, 0, 0)!important;transform:translate3d(0, 0, 0)!important;}#section-b5603f86-ad71-4508-8ae1-e4e95c2e1761 .lp-text--subtitle{margin-left:auto;margin-right:auto;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db{color:#000000;--fontColor:#000000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#ffffff;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__container{width:100%;padding-left:40px;padding-right:40px;}@media (max-width: 767px){#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__container{padding-left:20px;padding-right:20px;}}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__header{margin-bottom:30px;max-width:640px;margin-left:auto;margin-right:auto;text-align:center;}@media (min-width: 768px){#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__header{margin-bottom:50px;}}@media (min-width: 1200px){#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__header{margin-bottom:70px;}}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__header img{max-width:260px;height:auto;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__header img:not(:only-child){margin-bottom:30px;}@media (min-width: 768px){#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__header img:not(:only-child){margin-bottom:50px;}}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__heading{margin-bottom:20px;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__lead{margin-bottom:0;font-size:20px;line-height:1.4;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__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;margin-left:-20px;margin-right:-20px;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__col{width:100%;margin-bottom:20px;padding:0 20px;}@media (min-width: 768px){#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__col{-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__col:last-child .gallery-card{padding-top:50%;}}@media (min-width: 992px){#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__col{-webkit-flex-basis:33.33333%;-ms-flex-preferred-size:33.33333%;flex-basis:33.33333%;margin-bottom:40px;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__col:nth-child(8n + 7),#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-component__col:nth-child(8n + 8){-webkit-flex-basis:50%;-ms-flex-preferred-size:50%;flex-basis:50%;}}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-card{position:relative;height:100%;padding-top:100%;-webkit-text-decoration:none;text-decoration:none;overflow:hidden;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-card:focus{outline:none;}@media (hover: hover) and (pointer: fine){#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-card:hover img{-webkit-transform:scale(1.05);-moz-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05);}}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .gallery-card>img{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;-webkit-transition:-webkit-transform .5s ease-out;transition:transform .5s ease-out;cursor:-webkit-zoom-in;cursor:zoom-in;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .slick-track-locked{-webkit-transform:translate3d(0, 0, 0)!important;-moz-transform:translate3d(0, 0, 0)!important;-ms-transform:translate3d(0, 0, 0)!important;transform:translate3d(0, 0, 0)!important;}#section-4b00fa46-0fa4-4d82-a723-f382db13c3db .lp-text--subtitle{margin-left:auto;margin-right:auto;}#section-16de5598-4463-4e6d-85d2-971cbad274fa{color:#262626;--fontColor:#262626;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:15%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#f2f1f0;--bgColor_H:30;--bgColor_S:7%;--bgColor_L:95%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#f2f1f0;}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section{--colorLighter1:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.5);--colorLighter2:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.3);}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .heading{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;padding:40px 0;cursor:pointer;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:all ease .2s;transition:all ease .2s;cursor:pointer;}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .heading{padding:2.7778vw 0;}}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .heading-number{width:315px;color:var(--numberColor);}@media (min-width: 768px) and (max-width: 1223px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .heading-number{width:100px;}}@media (max-width: 767px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .heading-number{width:37px;}}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .heading-number{width:21.875vw;}}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .lp-h2{padding-right:40px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;position:relative;line-height:1;-webkit-transition:color .5s linear;transition:color .5s linear;}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .lp-h2:after{content:;position:absolute;display:block;right:0;top:50%;height:0;width:24px;border-top:1px solid var(--iconColor);}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .lp-h2:before{content:;position:absolute;display:block;right:11.5px;top:calc(50% - 11.5px);height:24px;width:0;border-left:1px solid var(--iconColor);}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .lp-h2{padding-right:2.7778vw;}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .lp-h2:after{width:1.6667vw;}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .lp-h2:before{right:.7986vw;top:calc(50% - .7986vw);height:1.6667vw;}}@media (min-width: 768px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .list{-webkit-column-count:2;column-count:2;-webkit-column-gap:80px;column-gap:80px;}}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .list{-webkit-column-gap:5.4444vw;column-gap:5.4444vw;}}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item{border-top:solid 1px var(--graphicColor);}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item:last-child{border-bottom:solid 1px var(--graphicColor);}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item:last-child.active_acc{padding-bottom:100px;}@media (max-width: 1223px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item:last-child.active_acc{padding-bottom:70px;}}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item:last-child.active_acc{padding-bottom:6.9444vw;}}@media (min-width: 768px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item{break-inside:avoid-column;}}@media (hover: hover) and (pointer: fine){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item:not(.active_acc) .heading:hover .lp-h2{color:var(--iconColor);}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item:not(.active_acc) .heading:hover .lp-h2:after,#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item:not(.active_acc) .heading:hover .lp-h2:before{-webkit-animation:rotate360 10s linear infinite;animation:rotate360 10s linear infinite;-webkit-animation:rotate360 10s linear infinite;animation:rotate360 10s linear infinite;-webkit-animation-play-state:running;animation-play-state:running;}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item:not(.active_acc) .heading:hover .heading-number{color:var(--iconColor);}}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item.active_acc .heading{padding-bottom:96px;}@media (min-width: 768px) and (max-width: 1223px;){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item.active_acc .heading{padding-bottom:104px;}}@media (max-width: 767px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item.active_acc .heading{padding-bottom:56px;}}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item.active_acc .heading{padding-bottom:6.6667vw;}}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item.active_acc .lp-h2:before{display:none;}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item.active_acc:not(:last-child){padding-bottom:90px;}@media (max-width: 767px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item.active_acc:not(:last-child){padding-bottom:56px;}}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .item.active_acc:not(:last-child){padding-bottom:6.25vw;}}@media (min-width: 1224px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .content{padding-left:315px;padding-right:100px;}}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .content{padding-left:21.875vw;padding-right:7.6389vw;}}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .cell{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;border-top:solid 1px var(--graphicColor);padding:24px 0;}@media (max-width: 767px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .cell{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;padding-left:40px;}}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .cell{padding:1.6667vw 0;}}@media (min-width: 768px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .cell .lp-h4{width:305px;}}@media (max-width: 767px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .cell .lp-h4{margin-bottom:20px;}}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .cell .lp-h4{width:21.1806vw;}}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .cell .amenities-value{color:var(--numberColor);-webkit-flex:1 0;-ms-flex:1 0;flex:1 0;}@media (max-width: 560px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .cell .amenities-value{margin-top:3px;}}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .files{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:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;}@media (max-width: 1223px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .files{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .files :not(:last-child){margin-bottom:30px;}}@media (min-width: 1224px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .files :nth-child(odd){margin-right:20px;}}@media (min-width: 768px) and (max-width: 1223px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .files{padding-left:100px;}}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .files :nth-child(odd){margin-right:1.3889vw;}}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .btn--download{padding-left:60px;position:relative;text-align:left;}@media (min-width: 1224px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .btn--download{-webkit-flex:0 0 240px;-ms-flex:0 0 240px;flex:0 0 240px;}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .btn--download:nth-child(even):not(:last-child){margin-bottom:20px;}}@media (min-width: 768px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .btn--download{width:480px;}}@media (max-width: 767px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .btn--download{width:100%;}}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .btn--download:after{position:absolute;-webkit-clip-path:path(M4.5 0.5V8.45024L1.86 5.9144L1.14 6.6056L4.64 9.9656L5 10.2949L5.36 9.96512L8.86 6.60512L8.14 5.91392L5.5 8.45072V0.5H4.5ZM0.5 11.54V12.5H9.5V11.54H0.5Z);clip-path:path(M4.5 0.5V8.45024L1.86 5.9144L1.14 6.6056L4.64 9.9656L5 10.2949L5.36 9.96512L8.86 6.60512L8.14 5.91392L5.5 8.45072V0.5H4.5ZM0.5 11.54V12.5H9.5V11.54H0.5Z);-webkit-transform:unset;-moz-transform:unset;-ms-transform:unset;transform:unset;left:5px;top:20px;right:unset;}@media (min-width: 1800px){#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .btn--download{padding-left:4.1667vw;-webkit-flex:0 0 16.6667vw;-ms-flex:0 0 16.6667vw;flex:0 0 16.6667vw;}#section-16de5598-4463-4e6d-85d2-971cbad274fa .section .btn--download:nth-child(even):not(:last-child){margin-bottom:1.3889vw;}}@-webkit-keyframes rotate360{to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}@keyframes rotate360{to{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3{color:rgba(229, 222, 216, 1);--fontColor:rgba(229, 222, 216, 1);--fontColor_H:28;--fontColor_S:20%;--fontColor_L:87%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:rgba(38, 38, 38, 1);--bgColor_H:0;--bgColor_S:0%;--bgColor_L:15%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:rgba(38, 38, 38, 1);}@media (max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .mg-calc.lp-vertical-paddings{padding-top:0!important;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .mg-calc__row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:-5%;margin-right:-5%;position:relative;z-index:2;}@media(max-width: 1200px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .mg-calc__row{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;margin-left:0;margin-right:0;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .mg-calc__col{-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%;padding-left:5%;padding-right:5%;}@media(max-width: 1200px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .mg-calc__col{padding-left:0;padding-right:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .mg-calc__title{margin-bottom:16px;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .mg-calc__description{margin-bottom:24px;white-space:pre-line;max-width:100%;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc{margin:0;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-left:-20px;margin-right:-20px;}@media(max-width: 1200px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__row{margin-left:-8px;margin-right:-8px;}}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__row{margin-left:0;margin-right:0;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__col{-webkit-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%;padding-left:20px;padding-right:20px;}@media(max-width: 1200px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__col{padding-left:8px;padding-right:8px;}}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__col{padding-left:0;padding-right:0;-webkit-flex:0 0 100%;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__group{margin-bottom:16px;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__group .lp-input{width:100%;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__select-wrap{position:relative;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__header{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__label{margin-bottom:0;margin-right:5px;display:block;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__info{background-color:transparent;border:none;color:inherit;padding:5px;cursor:pointer;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__info svg{display:block;stroke:currentColor;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__footer{padding-top:96px;}@media(max-width: 1200px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__footer{padding-top:24px;}}@media(max-width: 580px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__footer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__footer .lp-link{cursor:pointer;margin-bottom:20px;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__reset{margin-right:47px;}@media(max-width: 580px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__reset{margin-right:20px;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__reset svg{-webkit-transition:0.3s all;transition:0.3s all;stroke:currentColor;margin-left:5px;}@media (hover: hover) and (pointer: fine){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__reset:hover svg{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .calc__reset:focus{color:inherit;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results{height:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;background-color:var(--chartCardBackgroundColor);position:relative;border-radius:4px;-webkit-transition:opacity 0s ease-out;transition:opacity 0s ease-out;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results.sticky{position:fixed;height:-webkit-fit-content;height:-moz-fit-content;height:fit-content;top:0;left:0;right:0;padding-left:25px;padding-right:25px;opacity:1;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results.sticky:before{top:-50px;}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results:before{content:;display:block;position:absolute;left:-100px;right:-100px;top:0;bottom:0;min-height:100%;background-color:var(--chartCardBackgroundColor);}}@media(max-width: 1200px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results{margin-bottom:32px;}}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results{margin-bottom:56px;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__main{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding-top:40px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__main{padding:0;display:none;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__footer{padding:24px 40px;position:relative;}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__footer{padding-bottom:40px;padding-left:0;padding-right:0;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__footer:before{display:block;content:;height:1px;position:absolute;left:0;right:0;top:0;background-color:currentColor;opacity:0.1;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__legend{padding-left:40px;padding-right:40px;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__legend{padding-left:0;padding-right:0;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__chart{position:relative;color:var(--chartCardFontColor);}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__expand{display:none;}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__expand{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;position:absolute;-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;left:50%;bottom:0;width:48px;height:48px;border-radius:50%;background-color:#c4c4c4;-webkit-transform:translate(-50%, 50%);-moz-transform:translate(-50%, 50%);-ms-transform:translate(-50%, 50%);transform:translate(-50%, 50%);}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__expand svg{-webkit-transition:0.3s all;transition:0.3s all;stroke:currentColor;-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg);}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .results__expand.active svg{-webkit-transform:rotate(0deg);-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg);}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .legend{padding:0;margin:0;list-style-type:none;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .legend__item{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px;position:relative;padding-left:24px;-webkit-transition:0.3s all;transition:0.3s all;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .legend__item:nth-child(2):before{opacity:0.75;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .legend__item:nth-child(3):before{opacity:0.5;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .legend__item:nth-child(4):before{opacity:0.25;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .legend__item:before{content:;position:absolute;width:12px;height:12px;left:0;display:block;border-radius:4px;background-color:var(--markerColor);}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .legend__item.is-hovered .legend__name,#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .legend__item.is-hovered .legend__val{opacity:0.3;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .legend__val{color:var(--chartCardFontColor);}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .share{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .share__label{margin-right:20px;color:var(--chartCardFontColor);}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .share .lp-socials{width:100%;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .chart{text-align:center;padding:30px;position:relative;-webkit-transition:0.2s all;transition:0.2s all;}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .chart{text-align:left;padding-left:0;padding-right:0;height:128px;width:70px;}}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .chart.active{width:240px;height:300px;margin-left:calc(50% - 120px);}}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .chart svg{width:100%;height:100%;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .chart__text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);transform:translate(-50%, -50%);text-align:center;}@media(min-width: 768.02px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .chart__text{display:none;}}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .chart__text span{display:block;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .chart__title{color:var(--chartCardFontColor);fill:currentColor;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .chart__val{font-size:24px;color:var(--chartCardFontColor);fill:currentColor;font-family:var(--global-primary-font-family);}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .tooltip{border:1px solid #c4c4c4;border-radius:2px;background-color:#f4f4f4;font-size:12px;position:absolute;width:296px;z-index:900;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .tooltip__title{padding:8px 8px 8px 16px;border-bottom:1px solid #c4c4c4;color:#000;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .tooltip__close{height:24px;width:24px;border:none;background-color:transparent;position:relative;padding:0;cursor:pointer;color:inherit;outline:none;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .tooltip__close:before,#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .tooltip__close:after{content:;width:12px;height:1px;background-color:currentColor;display:block;position:absolute;left:50%;top:50%;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .tooltip__close:before{-webkit-transform:translate(-50%, -50%) rotate(45deg);-moz-transform:translate(-50%, -50%) rotate(45deg);-ms-transform:translate(-50%, -50%) rotate(45deg);transform:translate(-50%, -50%) rotate(45deg);}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .tooltip__close:after{-webkit-transform:translate(-50%, -50%) rotate(135deg);-moz-transform:translate(-50%, -50%) rotate(135deg);-ms-transform:translate(-50%, -50%) rotate(135deg);transform:translate(-50%, -50%) rotate(135deg);}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .tooltip__content{padding:16px;color:#848484;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .lp-combo-input .lp-input:first-child{min-width:0;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;width:auto;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .lp-combo-input .lp-input:last-child{width:80px;-webkit-flex-basis:auto;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;padding-left:5px;padding-right:5px;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .lp-socials li{margin-bottom:0;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .visually-hidden,#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .sr-only{position:absolute;width:0;height:0;overflow:hidden;opacity:0;visibility:hidden;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .svg-chart{overflow:visible;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .svg-chart .circle__item{-webkit-transition:all .25s linear;transition:all .25s linear;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .svg-chart .circle__item:nth-child(2){stroke-opacity:0.75;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .svg-chart .circle__item:nth-child(3){stroke-opacity:0.5;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .svg-chart .circle__item:nth-child(4){stroke-opacity:0.25;}#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .svg-chart .circle__item:hover,#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .svg-chart .circle__item.is-hovered{-webkit-filter:drop-shadow(6px -8px 6px rgb(0 0 0 / 0.25));filter:drop-shadow(6px -8px 6px rgb(0 0 0 / 0.25));}@media(max-width: 768px){#section-6277abb2-d381-4023-b086-2f9ed466c3d3 .svg-chart .chart-text{display:none;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a{color:#262626;--fontColor:#262626;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:15%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#ffffff;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .section{--colorLighter1:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.5);--colorLighter2:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.3);overflow:hidden;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .map{width:100%;height:100%;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .map-container{height:432px;margin:0 auto;position:relative;}@media (max-width: 767px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .map-container{height:100vw;margin:0 -32px;}}@media (min-width: 768px) and (max-width: 1439px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .map-container{height:27vw;margin:0 -64px;}}@media (min-width: 1621px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .map-container{height:30vw;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .map iframe{width:100%;height:100%;border:none;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .map img{width:100%;height:100%;object-fit:cover;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .map .marker-container{position:absolute;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;width:100%;height:100%;pointer-events:none;margin-top:-26px;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .lp-title-group{margin:96px auto 101px;}@media (min-width: 768px) and (max-width: 1439px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .lp-title-group{margin:104px auto;}}@media (max-width: 767px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .lp-title-group{margin:56px auto;}}@media (min-width: 1621px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .lp-title-group{margin:6.6667vw auto;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .lp-text--pretitle{color:var(--colorLighter1);}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .lp-h3{text-align:center;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .description{position:relative;max-width:794px;width:100%;margin:0 auto;padding-top:96px;}@media (max-width: 767px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .description{padding-top:56px;}}@media (min-width: 768px) and (max-width: 1439px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .description{padding-top:104px;}}@media (min-width: 1621px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .description{padding-top:6.6667vw;max-width:55.1389vw;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .description:before{content:;width:100%;border-left:1px solid var(--graphicColor);border-right:1px solid var(--graphicColor);height:96px;-webkit-transform:translateY(-100%);-moz-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);position:absolute;}@media (max-width: 767px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .description:before{height:56px;}}@media (min-width: 768px) and (max-width: 1439px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .description:before{height:104px;}}@media (min-width: 1621px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .description:before{height:6.6667vw;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .subtitle-holder{padding:96px 0;}@media (max-width: 767px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .subtitle-holder{padding:53px 0;}}@media (min-width: 768px) and (max-width: 1439px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .subtitle-holder{padding:104px 0;}}@media (min-width: 1621px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .subtitle-holder{padding:6.6667vw 0;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .pretitle-block{padding:184px 92px 0 92px;margin:0 auto;max-width:794px;}@media (min-width: 768px) and (max-width: 1439px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .pretitle-block{padding:160px 64px 0 64px;}}@media (max-width: 767px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .pretitle-block{padding:120px 23px 0 23px;}}@media (min-width: 1621px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .pretitle-block{padding:12.7778vw 6.3889vw 0 6.3889vw;max-width:55.1389vw;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .more-text-block{width:calc(100% + 2px);opacity:0;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .more-text-block.visible{-webkit-animation:2s linear 0s forwards fadeInUp;animation:2s linear 0s forwards fadeInUp;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .pretitle-block,#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .more-text-block{border-left:1px solid var(--graphicColor);border-right:1px solid var(--graphicColor);}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls{cursor:pointer;margin:0 16px;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;padding:0;width:40px;}@media (max-width: 767px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls{margin:0 40px;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-svpc,#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls button{background-color:white;width:40px;height:40px;border:1px solid white;border-radius:50%;cursor:pointer;position:relative;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-svpc{position:absolute;right:16px;top:20px;}@media (max-width: 767px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-svpc{right:40px;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls button:hover{color:rgba(0, 0, 0, 0.9);}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.zoom-control{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;height:auto;margin-bottom:18px;}@media (max-width: 767px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.zoom-control{margin-bottom:26px;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.zoom-control button{padding:0;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.zoom-control button:after{content:;border-bottom:1px solid #000;width:16px;height:0;left:11.5px;top:19px;position:absolute;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.zoom-control button.zoom-control-in{margin-bottom:10px;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.zoom-control button.zoom-control-in:before{content:;border-right:1px solid #000;width:0;height:16px;left:19px;top:11.5px;position:absolute;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control{margin-bottom:6px;}@media (max-width: 767px){#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control{margin-bottom:14px;}}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control button{background-color:white;width:40px;height:40px;border:1px solid white;border-radius:50%;cursor:pointer;position:relative;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control .fullscreen-control-icon{border-style:solid;position:absolute;width:5px;height:5px;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control .fullscreen-control-icon.fullscreen-control-top-left{border-width:1px 0 0 1px;border-top-left-radius:3px;left:12px;top:12px;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control.is-fullscreen .fullscreen-control-icon.fullscreen-control-top-left{border-width:0 1px 1px 0;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control .fullscreen-control-icon.fullscreen-control-top-right{border-width:1px 1px 0 0;border-top-right-radius:3px;right:12px;top:12px;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control.is-fullscreen .fullscreen-control-icon.fullscreen-control-top-right{border-width:0 0 1px 1px;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control .fullscreen-control-icon.fullscreen-control-bottom-left{border-width:0 0 1px 1px;border-bottom-left-radius:3px;left:12px;bottom:12px;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control.is-fullscreen .fullscreen-control-icon.fullscreen-control-bottom-left{border-width:1px 1px 0 0;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control .fullscreen-control-icon.fullscreen-control-bottom-right{border-width:0 1px 1px 0;border-bottom-right-radius:3px;right:12px;bottom:12px;}#section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a .gm-style .controls.fullscreen-control.is-fullscreen .fullscreen-control-icon.fullscreen-control-bottom-right{border-width:1px 0 0 1px;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055{color:#000;--fontColor:#000;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:0%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#ffffff;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:100%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#ffffff;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055{overflow:visible;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 section{overflow:visible;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .lp-title-group{max-width:100%;text-align:left;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .lp-title-group .lp-text--subtitle{max-width:100%;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .lp-title-group .lp-h2{margin-top:0;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 1200px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule{-webkit-flex-direction:column-reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse;}}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule .custom-select-menu{z-index:15;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule.no-image{-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule.no-image .lp-title-group{text-align:center;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule.no-image .schedule__content{width:100%;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule.no-image .schedule__form{width:816px;margin-left:auto;margin-right:auto;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__image{width:50%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;height:1146px;}@media (max-width: 1920px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__image{height:800px;}}@media (max-width: 1200px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__image{width:100%;height:776px;}}@media (max-width: 580px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__image{display:none;}}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__image img{width:100%;height:100%;object-fit:cover;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__content{width:50%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;padding-left:48px;padding-right:48px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}@media (max-width: 1200px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__content{width:100%;}}@media (max-width: 768px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__content{padding-left:24px;padding-right:24px;}}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__content--padding{padding-top:48px;padding-bottom:48px;}@media (max-width: 1200px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__content--padding{padding-bottom:64px;padding-top:88px;}}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__form{display:block;margin:0;padding:0;width:640px;max-width:100%;}@media (max-width: 1200px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule__form{margin-left:auto;margin-right:auto;}}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .step{padding-left:64px;padding-right:64px;}@media (max-width: 768px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .step{padding-left:0;padding-right:0;}}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar{margin-bottom:16px;}@media (max-width: 768px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar{margin-left:64px;margin-right:64px;}}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar__slide{padding-left:8px;padding-right:8px;cursor:pointer;outline:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar__slide:focus{outline:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar__slide.selected .calendar__item{border-color:#000000;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar__item{border:1px solid #C4C4C4;border-radius:2px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-left:auto;margin-right:auto;height:160px;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar__day{font-size:14px;line-height:1.71;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar__date{font-size:56px;line-height:1.18;font-family:var(--global-primary-font-family);}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar__month{font-size:14px;line-height:1.71;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar .slick-list{margin-left:-8px;margin-right:-8px;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar .lp-arrow{position:absolute;top:50%;outline:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar .lp-arrow:focus{outline:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar .lp-arrow.lp-arrow--next{right:0;left:auto;-webkit-transform:translate(calc(100% + 16px), -50%);-moz-transform:translate(calc(100% + 16px), -50%);-ms-transform:translate(calc(100% + 16px), -50%);transform:translate(calc(100% + 16px), -50%);}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .calendar .lp-arrow.lp-arrow--prev{left:0;right:auto;-webkit-transform:translate(calc(-100% - 16px), -50%);-moz-transform:translate(calc(-100% - 16px), -50%);-ms-transform:translate(calc(-100% - 16px), -50%);transform:translate(calc(-100% - 16px), -50%);}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .type-selector{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin-bottom:24px;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .type-selector__group{width:50%;-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .type-selector__input{position:absolute;clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;tabindex:-1;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .type-selector__input:checked+.type-selector__label{opacity:1;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .type-selector__label{opacity:0.5;width:100%;}@media (max-width: 560px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .type-selector__label{min-width:auto;}}@media (max-width: 768px){#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .type-selector__label span{display:none;}}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .time-frame-select:not(.sr-only){width:100%;margin-bottom:16px;background-color:transparent;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .custom-select-content{max-height:210px;overflow-y:auto;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .btn-next{width:100%;text-transform:uppercase;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .slick-dots{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;list-style-type:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .slick-dots li{margin-right:10px;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .step{display:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .step.visible{display:block;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .info-form .input-container{margin-bottom:16px;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .info-form .lp-input{width:100%;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .info-form .submit-text{display:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .info-form .submit-text--default{display:inline;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .scheduled-time{font-size:14px;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .schedule-reset{cursor:pointer;font-size:14px;background:transparent;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .btn-submit{width:100%;margin-bottom:8px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .sync-icon{display:none;margin-right:10px;-webkit-animation:i-spin 2s linear infinite;animation:i-spin 2s linear infinite;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .success-icon{display:none;margin-right:10px;-webkit-transition:0s;transition:0s;visibility:visible;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .loading{pointer-events:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .loading .sync-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .loading .submit-text--default{display:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .loading .submit-text--loading{display:inline;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .loading .submit-text--success{display:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .thank-you-message{display:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .success{pointer-events:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .success .thank-you-message{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .success .scheduled-time{display:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .success .schedule-reset{display:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .success .success-icon{display:block;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .success .submit-text--default{display:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .success .submit-text--loading{display:none;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .success .submit-text--success{display:inline;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .sr-only{position:absolute;width:0;height:0;overflow:hidden;opacity:0;visibility:hidden;}#section-0e41715e-ad01-4d5c-91f3-d1d01a170055 .lp-h-pot{width:0;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7{--borderColor:var(--colorAccent);color:#e5ded8;--fontColor:#e5ded8;--fontColor_H:28;--fontColor_S:20%;--fontColor_L:87%;--fontColor_A:1;--fontColor_darkenDir:-1;--bgColor:#262626;--bgColor_H:0;--bgColor_S:0%;--bgColor_L:15%;--bgColor_A:1;--bgColor_darkenDir:1;background-color:#262626;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section{--colorLighter1:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 1);--colorLighter2:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), .3);width:100%;background:center no-repeat;-webkit-background-size:cover;background-size:cover;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;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .lp-text--subtitle{max-width:100%;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .input-container+.input-container{margin-top:56px;}@media (max-width: 767px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .input-container+.input-container{margin-top:48px;}}@media (min-width: 1800px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .input-container+.input-container{margin-top:3.8889vw;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form-holder{width:100%;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form{margin:auto;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;position:relative;}@media (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;}}@media (min-width: 768px) and (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form{padding-left:0;}}@media (max-width: 767px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form{padding:0 32px;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form .form-group{width:40vw;}@media (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form .form-group{width:475px;padding:0;}}@media (max-width: 767px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form .form-group{width:100%;}}@media (min-width: 768px) and (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form .form-group .lp-title-group{display:none;}}@media (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form .form-group .thank-you{display:none;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form--with-image{-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:flex-start;justify-content:flex-start;max-width:unset;text-align:left;}@media (min-width: 768px) and (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form--with-image{padding-left:64px;}}@media (max-width: 768px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form--with-image{height:auto;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form--with-image .lp-title-group{text-align:left;margin-left:0;}@media (max-width: 767px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form--with-image .lp-title-group{max-width:100%;margin-bottom:72px;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form--with-image .image{width:49vw;height:428px;object-fit:cover;}@media (min-width: 768px) and (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form--with-image .image{width:100%;height:416px;margin-bottom:56px;}}@media (max-width: 767px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form--with-image .image{display:none;}}@media (min-width: 1800px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form--with-image .image{height:29.7222vw;}}@media (min-width: 1224px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form--with-image .form-group{padding-left:8.6806vw;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form .h-pot{position:absolute;height:0;width:0;overflow:hidden;visibility:hidden;line-height:0;font-size:0;z-index:-1;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .lp-input{width:100%;display:block;color:var(--textColor);border-color:1px solid var(--colorLighter1);}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .lp-input:placeholder-shown{color:var(--textColor);border-color:1px solid var(--colorLighter1);opacity:.6;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .btn-submit{margin-top:70px;}@media (max-width: 767px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .btn-submit{width:100%;}}@media (min-width: 768px) and (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .btn-submit{margin-top:90px;}}@media (min-width: 1800px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .btn-submit{margin-top:4.8611vw;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form-inputs-wrap{width:26.7361vw;overflow:hidden;}@media (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form-inputs-wrap{width:100%;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .form-inputs-wrap .lp-btn{display:block;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .thank-you{display:none;text-align:left;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:left;-webkit-box-align:left;-ms-flex-align:left;align-items:left;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;margin-bottom:56px;max-width:494px;}@media (min-width: 1800px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .thank-you{max-width:34.3056vw;margin-bottom:3.8889vw;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .thank-you .lp-h2{margin-bottom:56px;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .thank-you.tablet{display:none;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .sent .lp-title-group{display:none;}@media (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .sent>.thank-you{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media (min-width: 1224px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .sent .form-group .thank-you{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .sent .lp-title-group,#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .sent .form-inputs-wrap{display:none;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section h2{margin-bottom:8px;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .lp-ico-success:before{width:12px;height:10px;color:var(--borderColor);-webkit-mask-image:url(data:image/svg+xml,%3Csvg xmlnshttp://www.w3.org/2000/svg width12 height10 viewBox0 0 12 10 fillnone%3E%3Cpath fill-ruleevenodd clip-ruleevenodd dM3.91006 7.49585L1.7071 5.29291C1.31658 4.90239 0.683416 4.90239 0.292893 5.29291C-0.0976309 5.68343 -0.0976309 6.3166 0.292893 6.70712L3.29288 9.70709C3.7168 10.131 4.4159 10.0892 4.7863 9.61781L11.7863 1.61786C12.1275 1.18359 12.0521 0.554936 11.6178 0.213723C11.1835 -0.127489 10.5549 -0.0520504 10.2136 0.38222L3.91006 7.49585Z fill%23BC8F45/%3E%3C/svg%3E);-webkit-mask-image:url(data:image/svg+xml,%3Csvg xmlnshttp://www.w3.org/2000/svg width12 height10 viewBox0 0 12 10 fillnone%3E%3Cpath fill-ruleevenodd clip-ruleevenodd dM3.91006 7.49585L1.7071 5.29291C1.31658 4.90239 0.683416 4.90239 0.292893 5.29291C-0.0976309 5.68343 -0.0976309 6.3166 0.292893 6.70712L3.29288 9.70709C3.7168 10.131 4.4159 10.0892 4.7863 9.61781L11.7863 1.61786C12.1275 1.18359 12.0521 0.554936 11.6178 0.213723C11.1835 -0.127489 10.5549 -0.0520504 10.2136 0.38222L3.91006 7.49585Z fill%23BC8F45/%3E%3C/svg%3E);mask-image:url(data:image/svg+xml,%3Csvg xmlnshttp://www.w3.org/2000/svg width12 height10 viewBox0 0 12 10 fillnone%3E%3Cpath fill-ruleevenodd clip-ruleevenodd dM3.91006 7.49585L1.7071 5.29291C1.31658 4.90239 0.683416 4.90239 0.292893 5.29291C-0.0976309 5.68343 -0.0976309 6.3166 0.292893 6.70712L3.29288 9.70709C3.7168 10.131 4.4159 10.0892 4.7863 9.61781L11.7863 1.61786C12.1275 1.18359 12.0521 0.554936 11.6178 0.213723C11.1835 -0.127489 10.5549 -0.0520504 10.2136 0.38222L3.91006 7.49585Z fill%23BC8F45/%3E%3C/svg%3E);}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .gradient__color{stop-color:var(--borderColor);}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .form-inputs-wrap.center-aligned{margin-left:auto;margin-right:auto;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .tablet{display:none;}@media (min-width: 768px) and (max-width: 1223px){#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .tablet{display:block;margin-bottom:56px;}}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .my-textarea{text-align:left;letter-spacing:initial;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .my-textarea:empty:not(:focus){border-bottom:1px solid var(--colorLighter1);opacity:.6;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .my-textarea:empty:not(:focus):before{content:attr(data-placeholder);font-family:inherit;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .sync-icon{display:none;margin-left:24px;-webkit-animation:i-spin 2s linear infinite;animation:i-spin 2s linear infinite;position:relative;top:3px;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .success-icon{display:none;margin-left:24px;-webkit-transition:0s;transition:0s;visibility:visible;position:relative;top:0px;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .loading{pointer-events:none;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .loading .sync-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .success{pointer-events:none;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .success .success-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .loading .btn-submit:after,#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .success .btn-submit:after{content:unset;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .lp-input:-webkit-autofill:-webkit-autofill,#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .lp-input:-webkit-autofill:hover:-webkit-autofill,#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .lp-input:-webkit-autofill:focus:-webkit-autofill,#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .lp-input:-webkit-autofill:-webkit-autofill:hover,#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .lp-input:-webkit-autofill:hover:-webkit-autofill:hover,#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .lp-input:-webkit-autofill:focus:-webkit-autofill:hover,#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .lp-input:-webkit-autofill:-webkit-autofill:focus,#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .lp-input:-webkit-autofill:hover:-webkit-autofill:focus,#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .lp-input:-webkit-autofill:focus:-webkit-autofill:focus{border:1px solid transparent;border-bottom:1px solid var(--colorLighter1);-webkit-text-fill-color:var(--colorLighter1);-webkit-box-shadow:0 0 0 1000px transparent inset;-webkit-transition:background-color 5000s ease-in-out 10000s;transition:background-color 5000s ease-in-out 10000s;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .lp-disclaimer{margin-top:16px;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .lp-input::-webkit-input-placeholder{color:var(--textColor);opacity:1;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .lp-input::-moz-placeholder{color:var(--textColor);opacity:1;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .lp-input:-ms-input-placeholder{color:var(--textColor);opacity:1;}#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7 .section .lp-input::placeholder{color:var(--textColor);opacity:1;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209{color:#262626;--fontColor:#262626;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:15%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#f2f1f0;--bgColor_H:30;--bgColor_S:7%;--bgColor_L:95%;--bgColor_A:1;--bgColor_darkenDir:-1;background-color:#f2f1f0;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section{--colorLighter1:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.5);--colorLighter2:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.3);}@media (max-width: 767px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section{padding-top:96px;padding-bottom:56px;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .item{height:100%;background-color:var(--colorWhite, #ffffff);padding:80px 220px;text-align:center;margin:0 120px;}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .item{padding:5.5556vw 15.2778vw;margin:0 8.3333vw;}}@media (min-width: 768px) and (max-width: 1439px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .item{padding:64px 101px;margin:0 80px;}}@media (max-width: 767px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .item{padding:40px 16px;margin:0 16px;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .item h2{margin-bottom:18px;}@media (min-width: 768px) and (max-width: 1439px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .item h2{margin-bottom:26px;}}@media (max-width: 767px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .item h2{margin-bottom:16px;}}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .item h2{margin-bottom:1.667vw;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .lp-text--pretitle{margin-bottom:40px;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .lp-text--pretitle span{display:none;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .position{margin-bottom:40px;}@media (max-width: 1439px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .position{margin-bottom:24px;}}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .position{margin-bottom:1.25vw;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .licence{color:var(--colorLighter1);margin-bottom:32px;}@media (max-width: 1439px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .licence{margin-bottom:40px;}}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .licence{margin-bottom:2.7778vw;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .licence a{color:var(--colorLighter1);}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .bioshort{margin-bottom:32px;}@media (max-width: 1439px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .bioshort{margin-bottom:40px;}}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .bioshort{margin-bottom:2.7778vw;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .avatar{display:inline-block;vertical-align:top;width:135px;height:135px;border-radius:50%;overflow:hidden;background-color:var(--colorBlack, #262626);margin-bottom:24px;text-align:center;}@media (min-width: 768px) and (max-width: 1439px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .avatar{width:112px;height:112px;}}@media (max-width: 767px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .avatar{width:96px;height:96px;}}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .avatar{width:9.375vw;height:9.375vw;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .avatar img{width:100%;height:100%;object-fit:cover;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .avatar h4{color:var(--colorWhite, #ffffff);line-height:65px;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .links{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:space-evenly;-ms-flex-pack:space-evenly;-webkit-justify-content:space-evenly;justify-content:space-evenly;padding-bottom:50px;}@media (min-width: 768px) and (max-width: 1439px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .links{padding-bottom:46px;}}@media (max-width: 767px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .links{padding-bottom:48px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .links{padding-bottom:3.472vw;}}@media (max-width: 1223px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .website{margin-bottom:10px;overflow:hidden;padding-bottom:10px;max-width:100%;white-space:nowrap;text-overflow:ellipsis;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:space-evenly;-ms-flex-pack:space-evenly;-webkit-justify-content:space-evenly;justify-content:space-evenly;border-top:1px solid var(--colorBeige200, #E5DED8);padding-top:40px;}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts{padding-top:2.7778vw;}}@media (max-width: 767px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts{-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-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts .lp-link{display:block;margin-bottom:20px;}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts .lp-link{margin-bottom:1.3889vw;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts-title{color:var(--colorLighter1);margin-bottom:32px;}@media (min-width: 768px) and (max-width: 1439px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts-title{margin-bottom:24px;}}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts-title{margin-bottom:2.2222vw;}}@media (max-width: 767px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts-title{margin-bottom:8px;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts .email{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;max-width:100%;}@media (max-width: 767px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .contacts .phone:not(:last-child){margin-bottom:24px;-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-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .holder{max-width:100vw;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .holder.multi-agent .lp-text--pretitle span{display:inline;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .holder.multi-agent .item{margin:0 20px;}@media (min-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .holder.multi-agent .item{padding:5.5556vw 15.2778vw;margin:0 1.25vw;}}@media (min-width: 768px) and (max-width: 1439px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .holder.multi-agent .item{padding:64px 101px;margin:0 16px;}}@media (max-width: 767px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .holder.multi-agent .item{padding:40px 16px;margin:0 8px;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .slider{position:relative;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .slider .slick-slide{outline:none;height:inherit!important;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .slider .slick-slide:focus{outline:none;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .slider .slick-track{display:-webkit-box!important;display:-webkit-flex!important;display:-ms-flexbox!important;display:flex!important;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .slider-arrows .slick-prev{left:2.7778vw;}@media (max-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .slider-arrows .slick-prev{left:33px;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .slider-arrows .slick-next{right:2.7778vw;}@media (max-width: 1800px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .slider-arrows .slick-next{right:33px;}}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .slick-dots{margin:20px 0 0 0;width:100%;position:relative;left:-10px;text-align:center;-webkit-transform:unset;-moz-transform:unset;-ms-transform:unset;transform:unset;}#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .slick-dots li:not(.slick-active){border-top:1px solid var(--colorBeige300, #C9C4BF);}@media (min-width: 560px){#section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 .section .lp-socials{-webkit-box-flex-wrap:nowrap;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}nav{-webkit-transition:.3s all ease;transition:.3s all ease;}nav .header{--fontColor:var(--colorWhite, #ffffff);--bgColor:transparent;background-color:var(--bgColor);-webkit-transition:all .5s ease-in;transition:all .5s ease-in;width:100vw;}nav .header.scroll{--fontColor:var(--colorBlack, #262626);--bgColor:var(--colorWhite, #ffffff);}nav .header.scroll .logo__img.dark,nav .header.scroll .lp-btn--dark{opacity:1;}nav .header.scroll .logo__img.light,nav .header.scroll .lp-btn--light{opacity:0;}nav .lp-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:raw;-ms-flex-direction:raw;flex-direction:raw;-webkit-box-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;height:112px;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;}@media (min-width: 768px) and (max-width: 1300px){nav .lp-container{height:96px;}}@media (max-width: 767px){nav .lp-container{height:80px;}}@media (min-width: 1301px){nav .lp-container{padding-left:91px;padding-right:91px;}}@media (min-width: 1800px){nav .lp-container{padding-left:6.3194vw;padding-right:6.3194vw;}}@media (min-width: 2000px){nav .lp-container{height:7.7778vw;}}nav .nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:raw;-ms-flex-direction:raw;flex-direction:raw;list-style:none;margin:0;padding:0;position:absolute;left:0;width:100%;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;}nav .nav li{margin-bottom:0;color:var(--fontColor);-webkit-transition:all .5s ease-in;transition:all .5s ease-in;cursor:pointer;position:relative;text-transform:capitalize;opacity:0;-webkit-animation:1s linear 0s forwards fadeInDown;animation:1s linear 0s forwards fadeInDown;}nav .nav li:hover{color:var(--colorAccent, #BC8F45);}nav .nav li:not(:last-child){margin-right:32px;}nav .nav li.active:after{content:;height:1px;position:absolute;bottom:-5px;left:0;width:100%;background-color:var(--colorAccent, #BC8F45);-webkit-transition:0.4s;transition:0.4s;}@media (max-width: 1300px){nav .nav{display:none;}}nav .buttons{position:relative;}nav .logo{position:relative;-webkit-animation-delay:.5s;animation-delay:.5s;-webkit-animation:1s linear .5s forwards slideInDown;animation:1s linear .5s forwards slideInDown;opacity:0;-webkit-transform:translate3d(0,-50px,0);-moz-transform:translate3d(0,-50px,0);-ms-transform:translate3d(0,-50px,0);transform:translate3d(0,-50px,0);z-index:3;}nav .logo__img.dark{opacity:0;}nav .logo__img{-webkit-transition:opacity .5s ease-in;transition:opacity .5s ease-in;vertical-align:middle;max-width:200px;max-height:100px;position:absolute;left:0;top:50%;-webkit-transform:translateY(-50%);-moz-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);}@media (max-width: 1300px){nav .logo__img{max-width:130px;max-height:60px;}}@media (max-width: 450px){nav .logo__img{max-width:90px;max-height:50px;}}nav .right{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}nav .lp-btn--dark{opacity:0;position:absolute;left:0;pointer-events:none;}@media (max-width: 767px){nav .lp-btn:after{display:none;}}@media (max-width: 450px){nav .lp-btn{padding-left:20px;padding-right:20px;}}nav .hamburger-component{background-color:transparent;cursor:pointer;outline:none;position:relative;padding:0;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;justify-content:center;width:48px;height:48px;border:none;display:none;margin-left:50px;-webkit-animation-delay:.5s;animation-delay:.5s;-webkit-animation:1s linear 0s forwards slideInDown;animation:1s linear 0s forwards slideInDown;}nav .hamburger-component:hover span:before,nav .hamburger-component:hover span:after{width:100%;-webkit-transition:0.3s all ease;transition:0.3s all ease;}@media (min-width: 1301px){nav .hamburger-component{display:none;}}@media (max-width: 1300px){nav .hamburger-component{margin-left:20px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}}@media (max-width: 450px){nav .hamburger-component{margin-left:10px;}}nav .hamburger-component span{display:block;width:32px;height:1px;border-radius:2px;-webkit-transition:0.2s all;transition:0.2s all;position:relative;background-color:var(--fontColor);}nav .hamburger-component span:before,nav .hamburger-component span:after{display:block;width:32px;height:1px;border-radius:2px;background-color:var(--fontColor);position:absolute;right:0;content:;-webkit-transition:0.3s all ease;transition:0.3s all ease;}nav .hamburger-component span:before{top:-8px;}nav .hamburger-component span:after{bottom:-8px;}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,20px,0);opacity:0;-webkit-transform:translate3d(0,20px,0);-moz-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,20px,0);opacity:0;-webkit-transform:translate3d(0,20px,0);-moz-transform:translate3d(0,20px,0);-ms-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-20px,0);opacity:0;-webkit-transform:translate3d(0,-20px,0);-moz-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-20px,0);opacity:0;-webkit-transform:translate3d(0,-20px,0);-moz-transform:translate3d(0,-20px,0);-ms-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@-webkit-keyframes fadeInUp{0%{-webkit-transform:translate3d(0,50px,0);opacity:0;-webkit-transform:translate3d(0,50px,0);-moz-transform:translate3d(0,50px,0);-ms-transform:translate3d(0,50px,0);transform:translate3d(0,50px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@keyframes fadeInUp{0%{-webkit-transform:translate3d(0,50px,0);opacity:0;-webkit-transform:translate3d(0,50px,0);-moz-transform:translate3d(0,50px,0);-ms-transform:translate3d(0,50px,0);transform:translate3d(0,50px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@-webkit-keyframes fadeInDown{0%{-webkit-transform:translate3d(0,-50px,0);opacity:0;-webkit-transform:translate3d(0,-50px,0);-moz-transform:translate3d(0,-50px,0);-ms-transform:translate3d(0,-50px,0);transform:translate3d(0,-50px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@keyframes fadeInDown{0%{-webkit-transform:translate3d(0,-50px,0);opacity:0;-webkit-transform:translate3d(0,-50px,0);-moz-transform:translate3d(0,-50px,0);-ms-transform:translate3d(0,-50px,0);transform:translate3d(0,-50px,0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@-webkit-keyframes fadeInLeft{0%{-webkit-transform:translate3d(-50px,0,0);opacity:0;-webkit-transform:translate3d(-50px,0, 0);-moz-transform:translate3d(-50px,0, 0);-ms-transform:translate3d(-50px,0, 0);transform:translate3d(-50px,0, 0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@keyframes fadeInLeft{0%{-webkit-transform:translate3d(-50px,0,0);opacity:0;-webkit-transform:translate3d(-50px,0, 0);-moz-transform:translate3d(-50px,0, 0);-ms-transform:translate3d(-50px,0, 0);transform:translate3d(-50px,0, 0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@-webkit-keyframes fadeInRight{0%{-webkit-transform:translate3d(50px,0,0);opacity:0;-webkit-transform:translate3d(50px,0, 0);-moz-transform:translate3d(50px,0, 0);-ms-transform:translate3d(50px,0, 0);transform:translate3d(50px,0, 0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}@keyframes fadeInRight{0%{-webkit-transform:translate3d(50px,0,0);opacity:0;-webkit-transform:translate3d(50px,0, 0);-moz-transform:translate3d(50px,0, 0);-ms-transform:translate3d(50px,0, 0);transform:translate3d(50px,0, 0);}to{-webkit-transform:translateZ(0);opacity:1;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);}}body>div.sidemenu{background-color:#F2F1F0;color:#262626;--fontColor:#262626;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:15%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#F2F1F0;--bgColor_H:30;--bgColor_S:7%;--bgColor_L:95%;--bgColor_A:1;--bgColor_darkenDir:-1;}body>div.sidemenu{-webkit-transform:translateX(100%);-moz-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);-webkit-transition:0.3s -webkit-transform ease,0s visibility linear 0.3s;transition:0.3s transform ease,0s visibility linear 0.3s;display:block;width:100%;left:auto;right:0;top:0;}body>div.sidemenu.visible{-webkit-transform:translateX(0);-moz-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);opacity:1;-webkit-transition:0.3s -webkit-transform ease,0s visibility linear 0s;transition:0.3s transform ease,0s visibility linear 0s;}@media (min-width: 1301px){body>div.sidemenu{display:none;}}body>div.sidemenu .lp-container{position:relative;width:100vw;height:100vh;}body>div.sidemenu .nav{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}body>div.sidemenu .nav-container{position:absolute;top:0;left:0;width:100%;height:100%;padding:120px 0 8px;overflow-y:auto;}@media (max-width: 767px){body>div.sidemenu .nav-container{padding:90px 32px 36px;}}body>div.sidemenu .lp-h2{margin-bottom:64px;position:relative;min-width:308px;max-width:100%;text-align:center;}@media (max-width: 767px){body>div.sidemenu .lp-h2{margin-bottom:48px;width:100%;}}body>div.sidemenu .lp-h2 a{color:currentColor;}body>div.sidemenu .lp-h2:not(:last-child):after{position:absolute;content:;border-bottom:1px solid currentColor;opacity:.1;height:1px;left:0;width:100%;bottom:-32px;}@media (max-width: 767px){body>div.sidemenu .lp-h2:not(:last-child):after{bottom:-24px;}}body>div.sidemenu .logo{position:absolute;left:64px;top:49px;max-width:150px;max-height:70px;}@media (max-width: 767px){body>div.sidemenu .logo{left:32px;top:32px;max-width:50px;max-height:50px;}}body>div.sidemenu .close-wrapper{position:absolute;right:70px;top:46px;}@media (max-width: 767px){body>div.sidemenu .close-wrapper{right:28px;top:30px;}}body>div.sidemenu .close-icon{cursor:pointer;position:relative;border:none;background:transparent;width:40px;height:40px;outline:none;padding:0;color:var(--fontColor);}body>div.sidemenu .close-icon:focus{outline:none;border:none;color:var(--fontColor);}body>div.sidemenu .close-icon:active{background:transparent;outline:none;border:none;color:var(--fontColor);}body>div.sidemenu .close-icon:before,body>div.sidemenu .close-icon:after{content:;display:block;position:absolute;width:32px;height:1px;background-color:var(--fontColor);right:-10px;top:50%;}body>div.sidemenu .close-icon: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 .close-icon:after{-webkit-transform:translate(-50%, -50%) rotate(-225deg);-moz-transform:translate(-50%, -50%) rotate(-225deg);-ms-transform:translate(-50%, -50%) rotate(-225deg);transform:translate(-50%, -50%) rotate(-225deg);}footer{background-color:#F2F1F0;color:#262626;--fontColor:#262626;--fontColor_H:0;--fontColor_S:0%;--fontColor_L:15%;--fontColor_A:1;--fontColor_darkenDir:1;--bgColor:#F2F1F0;--bgColor_H:30;--bgColor_S:7%;--bgColor_L:95%;--bgColor_A:1;--bgColor_darkenDir:-1;}footer .section{--colorLighter1:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.8);--colorLighter2:hsla(var(--fontColor_H), var(--fontColor_S), var(--fontColor_L), 0.5);overflow:hidden;}footer .custom-vertical-paddings{padding-top:8.33vw;padding-bottom:8.33vw;}@media (max-width: 1799px){footer .custom-vertical-paddings{padding-top:120px;padding-bottom:120px;}}@media (max-width: 1024px){footer .custom-vertical-paddings{padding-top:104px;padding-bottom:56px;}}@media (max-width: 767px){footer .custom-vertical-paddings{padding-top:56px;padding-bottom:24px;}}footer .top{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:start;-webkit-box-align:start;-ms-flex-align:start;align-items:start;-webkit-box-flex-wrap:wrap;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:83px;}@media (min-width: 1800px){footer .top{margin-bottom:5.7639vw;}}@media (min-width: 768px) and (max-width: 1300px){footer .top{margin-bottom:96px;}}@media (max-width: 767px){footer .top{margin-bottom:51px;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .top-block:not(:last-of-type){padding-right:56px;}@media (min-width: 1800px){footer .top-block:not(:last-of-type){padding-right:3.8889vw;}}@media (min-width: 768px) and (max-width: 1300px){footer .top-block:not(:last-of-type){padding-right:60px;}}@media (max-width: 767px){footer .top-block:not(:last-of-type){padding-right:0;margin-bottom:40px;}}footer .top .info{max-width:220px;}@media (min-width: 1800px){footer .top .info{max-width:16.6667vw;}}@media (min-width: 768px) and (max-width: 1024px){footer .top .info{max-width:190px;}}@media (max-width: 767px){footer .top .info{max-width:unset;}}footer .top .lp-h5{margin-bottom:24px;}@media (min-width: 1800px){footer .top .lp-h5{margin-bottom:1.6667vw;}}footer .contact-block{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;position:relative;}@media (max-width: 767px){footer .contact-block{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}@media (min-width: 1301px){footer .contact-block:first-child .top-block{padding-right:96px;max-width:320px;}}footer .contact a,footer .office a{color:currentColor;-webkit-text-decoration:none;text-decoration:none;}footer .contact p,footer .office p{margin-bottom:0;}footer .sitemap{max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;}footer .sitemap ul{-webkit-columns:2;columns:2;-webkit-columns:2;-moz-columns:2;-webkit-column-gap:24px;column-gap:24px;padding:0;margin:0;}@media (min-width: 1800px){footer .sitemap ul{-webkit-column-gap:1.6667vw;column-gap:1.6667vw;}}footer .sitemap li{display:block;margin:0;}footer .sitemap a{color:currentColor;}footer .form{margin-bottom:0;}footer .form .h-pot{position:absolute;height:0;width:0;overflow:hidden;visibility:hidden;line-height:0;font-size:0;z-index:-1;}footer .subscribe{-webkit-flex:0 0 408px;-ms-flex:0 0 408px;flex:0 0 408px;}footer .subscribe .btn-submit{margin-top:30px;}@media (min-width: 1800px){footer .subscribe .btn-submit{margin-top:2.0833vw;}}footer .subscribe .lp-input{width:284px;}@media (min-width: 1800px){footer .subscribe .lp-input{width:19.7222vw;}}@media (min-width: 768px) and (max-width: 1300px){footer .subscribe .lp-input{width:347px;}}@media (max-width: 767px){footer .subscribe .lp-input{width:100%;}}@media (min-width: 1800px){footer .subscribe{-webkit-flex:0 0 25.3333vw;-ms-flex:0 0 25.3333vw;flex:0 0 25.3333vw;}}@media (max-width: 1300px){footer .subscribe{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;width:100%;}}@media (min-width: 768px) and (max-width: 1300px){footer .subscribe{margin-bottom:120px;}}footer .lp-link:after{content:unset;}footer .scroll-up{width:40px;height:40px;background-color:transparent;position:absolute;padding:0;cursor:pointer;font-size:0;line-height:0;border-radius:999px;border:1px solid var(--colorAccent, #BC8F45);-webkit-transition:.3s;transition:.3s;right:0;bottom:0;}@media (max-width: 1300px){footer .scroll-up{display:none;}}@media (hover: hover) and (pointer: fine){footer .scroll-up:hover{background-color:var(--colorAccent, #BC8F45);}footer .scroll-up:hover:after{color:var(--colorWhite, #FFFFFF);}}footer .scroll-up:after{content:\e900;font-size:8px;font-family:lp-icon;display:inline-block;color:var(--colorGray100);-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);position:relative;top:2px;left:0px;}@media (min-width: 1800px){footer .scroll-up{width:2.7778vw;height:2.7778vw;}footer .scroll-up:after{font-size:.5556vw;top:.1389vw;}}footer .bottom{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 767px){footer .bottom{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .disclaimer{margin-bottom:8px;color:var(--colorLighter2);}@media (min-width: 1800px){footer .disclaimer{margin-bottom:0.5556vw;}}footer .disclaimer-logos{margin-top:15px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;-webkit-justify-content:start;justify-content:start;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}footer .disclaimer-logos img{max-width:150px;max-height:70px;margin-right:15px;}footer .disclaimer a{color:currentColor;}footer .lp-h6{text-transform:unset;}footer .lp-logo{max-width:97px;max-height:35px;}footer .by{margin-right:83px;font-size:18px;}@media (min-width: 1800px){footer .by{margin-right:5.7639vw;}}footer .by .lp-link:after{content:;background-color:var(--colorBlack);}footer .copyright{color:var(--colorLighter1);}footer .copyright-container{color:var(--colorLighter1);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 767px){footer .copyright-container{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}}footer .copyright-container a{color:var(--colorLighter1);}footer .copyright-text{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}@media (max-width: 1300px){footer .copyright-text{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}footer .copyright-text .by{margin-right:0;}}footer .copyright-text.no-lp-logo{margin-left:408px;}@media (min-width: 1800px){footer .copyright-text.no-lp-logo{margin-left:25.3333vw;}}@media (min-width: 768px) and (max-width: 1300px){footer .copyright-text.no-lp-logo{margin-left:202px;}}@media (max-width: 767px){footer .copyright-text.no-lp-logo{margin-left:0;}}footer .logo-container{-webkit-flex:0 0 408px;-ms-flex:0 0 408px;flex:0 0 408px;}@media (min-width: 1800px){footer .logo-container{-webkit-flex:0 0 25.3333vw;-ms-flex:0 0 25.3333vw;flex:0 0 25.3333vw;}}@media (min-width: 768px) and (max-width: 1300px){footer .logo-container{-webkit-flex:0 0 202px;-ms-flex:0 0 202px;flex:0 0 202px;}}@media (max-width: 767px){footer .logo-container{-webkit-flex:unset;-ms-flex:unset;flex:unset;}}footer .logo-img{max-width:200px;max-height:75px;}@media (min-width: 768px) and (max-width: 1300px){footer .logo-img{max-width:175px;}}@media (min-width: 1800px){footer .logo-img{max-width:13.8889vw;max-height:5.2083vw;}}@media (max-width: 767px){footer .logo{margin-bottom:35px;}}footer .sync-icon{display:none;margin-left:24px;-webkit-animation:i-spin 2s linear infinite;animation:i-spin 2s linear infinite;position:relative;top:3px;}footer .success-icon{display:none;margin-left:24px;-webkit-transition:0s;transition:0s;visibility:visible;position:relative;top:0px;}footer .loading{pointer-events:none;}footer .loading .sync-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}footer .success{pointer-events:none;}footer .success .success-icon{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;}footer .loading .btn-submit:after,footer .success .btn-submit:after{content:unset;} /style> style idcustom-style-css>.hyperlink-style-1{color:rgba(255, 255, 255, 1)!important;}.hyperlink-style-1:hover{color:rgba(255,255,255,1)!important;}.pagination-style-1 li a{color:rgba(0,0,0,1)!important;background-color:rgba(255, 255, 255, 0)!important;border-color:rgba(0, 0, 0, 0)!important;}.pagination-style-1 li a:hover{color:rgba(11, 11, 11, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(188, 143, 69, 1)!important;}.pagination-style-1 li.active a{color:rgba(11, 11, 11, 1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(188, 143, 69, 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(0, 0, 0, 0)!important;}.pagination-style-2 li a:hover{color:rgba(255,255,255,1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(188, 143, 69, 1)!important;}.pagination-style-2 li.active a{color:rgba(255,255,255,1)!important;background-color:rgba(0, 0, 0, 0)!important;border-color:rgba(188, 143, 69, 1)!important;}.hyperlink-style-2{color:rgba(0,0,0,1)!important;}.hyperlink-style-2:hover{color:rgba(0, 0, 0, 1)!important;}.button-style-2{color:rgba(0,0,0,1)!important;background-color:rgba(188, 143, 69, 0)!important;border-color:rgba(188, 143, 69, 1)!important;}.button-style-2:hover{color:rgba(0, 0, 0, 1)!important;background-color:rgba(188, 143, 69, 1)!important;border-color:rgba(188, 143, 69, 1)!important;}.social_icons-style-2 a{border-color:rgba(0, 0, 0, 0)!important;background-color:rgba(255, 255, 255, 0)!important;color:rgba(229, 222, 216, 1)!important;}.social_icons-style-2 a:hover{border-color:rgba(255, 255, 255, 0)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(188, 143, 69, 1)!important;}.social_icons-style-2 a i{color:inherit!important;}.social_icons-style-2 a svg,.social_icons-style-2 a svg path{fill:currentColor!important;}.social_icons-style-1 a{border-color:rgba(0, 0, 0, 0)!important;background-color:rgba(255, 255, 255, 0)!important;color:rgba(100, 97, 95, 1)!important;}.social_icons-style-1 a:hover{border-color:rgba(255, 255, 255, 0)!important;background-color:rgba(0, 0, 0, 0)!important;color:rgba(188, 143, 69, 1)!important;}.social_icons-style-1 a i{color:inherit!important;}.social_icons-style-1 a svg,.social_icons-style-1 a svg path{fill:currentColor!important;}.button-style-1{color:rgba(255, 255, 255, 1)!important;background-color:rgba(188, 143, 69, 0)!important;border-color:rgba(188, 143, 69, 1)!important;}.button-style-1:hover{color:rgba(255,255,255,1)!important;background-color:rgba(188, 143, 69, 1)!important;border-color:rgba(188, 143, 69, 1)!important;}/style> script> (function utmParse() { const url new URL(window.location.href); if (url.search) { const utm url.search.split(/\?|&/g).reduce((acc, current) > { const matched current.match(/utm_(content|campaign|medium|source|term|id)|gclid/g); if (matched) { accmatched0 current.replace(`${matched0}`, ); } return acc; }, {}); if (Object.keys(utm).length) { window.localStorage.setItem(utm_vars, JSON.stringify(utm)); } else { // Remove old utm vars window.localStorage.removeItem(utm_vars); } } // Set referrer in local storage // This is meant to be stored once to avoid self-referrals and to have the first referrer only. if (!window.localStorage.getItem(referrer)) { // Capture the Referrer URL const referrer document.referrer; if (referrer) { // Only store the referrer if it comes from outside the current domain (to avoid self-referrals) const currentDomain window.location.hostname; const referrerDomain new URL(referrer).hostname; if (referrerDomain ! currentDomain) { // Store it in localStorage localStorage.setItem(referrer, referrer); } } } })(); /script> !-- GOOGLE TRANSLATE STYLES are moved to external CSS -->/head>body> div idgoogle_translate_element styledisplay: none>/div> nav idglobal-navbar data-el-id3cc969fe-69d1-48a1-84b5-73d4d7c5ff79> div classheader> div classlp-container> div classlogo> a href/ classlogo__link> /a> /div> ul classnav > /ul> div classright> div classbuttons js data-btn-defaultbutton-style-1 data-btn-scrollbutton-style-2> a rolebutton data-typeCONTACT_US classlp-btn lp-btn--light wow fadeInLeft default > Contact us /a> a rolebutton data-typeCONTACT_US classlp-btn lp-btn--dark scroll > Contact us /a> /div> button classhamburger-component> span>/span> /button> /div> /div>/div> /nav> div idglobal-sidemenu classsidemenu data-el-id31dd7079-bdc3-4e17-8d88-3ac104eb7ffd> div classsidebar> div classlp-container> div classlogo> a href/> /a> /div> div classnav-container> div classnav nav--static> h2 data-anchoroverview classlp-h2 nav__item>Overview/h2> h2 data-anchorgallery classlp-h2 nav__item>Gallery/h2> h2 data-anchorvirtual-tour classlp-h2 nav__item>Virtual Tour/h2> h2 data-anchoramenities classlp-h2 nav__item>Amenities/h2> h2 data-anchorquotes classlp-h2 nav__item>Quotes/h2> h2 data-anchorvideo classlp-h2 nav__item>Video/h2> h2 data-anchorlocation classlp-h2 nav__item>Location/h2> h2 data-anchorcontact-section classlp-h2 nav__item>Contact Us/h2> /div> /div> div classclose-wrapper> button classtoggle close-icon> /button> /div> /div>/div> /div> div idglobal-mobile-contact classmobile-contact-wrapper data-el-id> /div> section idsection-847ccd62-4735-40ec-8f0c-f682d3ab693b classsolid-section is-font-color-light is-background-color-light data-el-id65d1b319-f151-458e-afc1-e1dc50b19a05> div classsolid-subsection section stylecolor: #fdfdff; background-color: #ffffff;> /div> div classholder stylecolor: #fdfdff> div classmedia wow fadeInUp data-wow-delay.5s> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c25ef3cc-17f3-4e20-8741-4a53adcbbde4/ML81991450/-155255731523980844.jpg classmedia-image altname> /div> div classtext-container> div classtext> h1 classlp-h1 wow slideInUp data-wow-delay1s>22649 Weeping Oak Ct/h1> ul classlp-text--subtitle wow fadeInUp data-wow-delay1.2s> li classcity>CUPERTINO, CA/li> li>$1,925,000/li> /ul> div classscroll-down--container> button classlp-arrow scroll-down js wow zoomIn data-wow-delay1.8s>/button> /div> /div> /div> /div> /div>/section>section idsection-819451f6-3835-4bf6-baad-6877cf33a129 classsolid-section is-font-color-dark is-background-color-light data-el-id24d3a261-200c-42ed-8738-ae77d70b314d>div classdescription lp-container lp-container--s style--graphicColor: #E5DED8;> div classpretitle-block wow fadeInUp data-wow-delay.5s> p classlp-text--pretitle stylecolor: #64615F>ABOUT/p> /div> div classlp-h3 js wow fadeInUp data-wow-delay.7s>Best Value Great Cupertino School Property/div> div classmore-text-block js> div classmore-text-holder js> div classmore-text js> Welcome to this charming corner-unit, two-story townhome located in Cupertinos prestigious Westridge Community. This home features 3 bedrooms, 2.5 bathrooms, and a 2-car side-by-side garage. Situated in a highly sought-after school district, it is zoned for award-winning Cupertino schools, including Stevens Creek Elementary, Kennedy Middle School, and Monta Vista High School. The interior boasts fresh paint, updated lighting fixtures, and dual-pane windows. The kitchen is equipped with stainless steel appliances, granite countertops, and ample cabinet space. The inviting living room is filled with natural light from large windows, creating a warm and welcoming ambiance. Step outside to enjoy a private backyard that connects the home to the detached garage, offering both convenience and privacy. LOW HOA $440/month! The resort-like community features a large swimming pool, a modern clubhouse, green spaces, walkways, and neighborhood gardening by sign-up. With easy access to major highways 280 and 85, as well as proximity to Silicon Valley employers, Whole Foods, shopping, and more, this property perfectly blends comfort and convenience. Dont miss the opportunity to own a home in an excellent school district and a prime Cupertino location! /div> div classmore-text-cropped js> Welcome to this charming corner-unit, two-story townhome located in Cupertinos prestigious Westridge Community. This home features 3 bedrooms, 2.5 bathrooms, and a 2-car side-by-side garage. Situated in a highly sought-after school district, it is zoned for award-winning Cupertino schools, including Stevens Creek Elementary, Kennedy Middle School, and Monta Vista High School. The interior boasts fresh paint, updated lighting fixtures, and dual-pane windows. The kitchen is equipped with stainless steel appliances, granite countertops, and ample cabinet space. The inviting living room is filled with natural light from large windows, creating a warm and welcoming ambiance. Step outside to enjoy a private backyard that connects the home to the detached garage, offering both convenience and privacy. LOW HOA $440/month! The resort-like community features a large swimming pool, a modern clubhouse, green spaces, walkways, and neighborhood gardening by sign-up. With easy access to major highways 280 and 85, as well as proximity to Silicon Valley employers, Whole Foods, shopping, and more, this property perfectly blends comfort and convenience. Dont miss the opportunity to own a home in an excellent school district and a prime Cupertino location! /div> /div> a classlp-link link-more js wow fadeInLeft data-wow-delay1s>Show more/a> /div>/div>/section>section idsection-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7 classsolid-section is-font-color-dark is-background-color-light data-el-id7a696512-5d29-4648-b25c-53580e4e72b8>div classoverview section lp-vertical-paddings style--numberColor: #262626;> div classlp-container> div classholder> div classitem> div classitem-value> h2 classlp-h2 wow slideInUp data-wow-delay.1s>1970/h2> h3 classlp-h3 wow slideInUp data-wow-delay.1s>1970/h3> /div> p classitem-title wow fadeInUp data-wow-delay.1s>Year Built/p> /div> div classitem> div classitem-value> h2 classlp-h2 wow slideInUp data-wow-delay.15s>3/h2> h3 classlp-h3 wow slideInUp data-wow-delay.15s>3/h3> /div> p classitem-title wow fadeInUp data-wow-delay.15s>Total Bedrooms/p> /div> div classitem> div classitem-value> h2 classlp-h2 wow slideInUp data-wow-delay.2s>2.5/h2> h3 classlp-h3 wow slideInUp data-wow-delay.2s>2.5/h3> /div> p classitem-title wow fadeInUp data-wow-delay.2s>Total Bathrooms/p> /div> div classitem> div classitem-value> h2 classlp-h2 wow slideInUp data-wow-delay.5s>1,614/h2> h3 classlp-h3 wow slideInUp data-wow-delay.5s>1,614/h3> p classitem-unit wow slideInUp data-wow-delay.5s>Sq.Ft./p> /div> p classitem-title wow fadeInUp data-wow-delay.5s>Living Space/p> /div> div classitem> div classitem-value> h2 classlp-h2 wow slideInUp data-wow-delay.55s>1,873.08/h2> h3 classlp-h3 wow slideInUp data-wow-delay.55s>1,873.08/h3> p classitem-unit wow slideInUp data-wow-delay.55s>Sq.Ft./p> /div> p classitem-title wow fadeInUp data-wow-delay.55s>Lot Size/p> /div> div classitem> div classitem-value> h2 classlp-h2 wow slideInUp data-wow-delay.6s>1.0/h2> h3 classlp-h3 wow slideInUp data-wow-delay.6s>1.0/h3> /div> p classitem-title wow fadeInUp data-wow-delay.6s>Garage Space/p> /div> /div> /div>/div>/section>section idsection-58957342-23fb-4407-9607-203b09d36ac6 classsolid-section is-font-color-light is-background-color-dark data-el-idc53a8e5a-e61f-415e-91ce-74ca88bb4c84>/section>section idsection-9af2dc98-5100-445f-a4c2-86088820c480 classsolid-section is-font-color-dark is-background-color-dark data-el-id9646f1dc-e89a-43a7-8e19-6bc85b8996b6>div classvirtual-tour section basic-margins> div classtour-overlay wow fadeInUp data-wow-delay.2s> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c25ef3cc-17f3-4e20-8741-4a53adcbbde4/ML81991450/-155255731523980844.jpg classtour-image altthumbnail loadinglazy> div classbutton-wrapper> div classico-holder> div classlp-play-vt lp-play-vt--light fadeIn mobile-button js-animation-target data-wow-delay1s>/div> /div> /div> /div> div classvirtual-tour__overlay> div classvirtual-tour__header> div classclose-icon> /div> /div> iframe classjs-mobileVirtualTour data-srchttps://my.matterport.com/show/?m=drWMjMp8QnM frameborder0 srcabout:blank>/iframe> /div>/div>/section>section idsection-97650f29-42ec-409b-b791-f91c3df71036 classsolid-section is-font-color-light is-background-color-dark data-el-idc8e4838b-6df1-4058-bb1e-4dc9b5e2dd19>div classvideo section> button classitem wow fadeInUp data-typeVIDEO data-srchttps://youtu.be/fgmMeAirqfQ> div classico-holder wow fadeIn data-wow-delay1s> div classlp-ico lp-ico--light lp-ico-video js-animation-target >/div> /div> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/2b78db39-76f5-4fba-a6ab-aab632367c6a srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/2b78db39-76f5-4fba-a6ab-aab632367c6a 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/2b78db39-76f5-4fba-a6ab-aab632367c6a 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/2b78db39-76f5-4fba-a6ab-aab632367c6a 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1920/https://media-production.lp-cdn.com/media/2b78db39-76f5-4fba-a6ab-aab632367c6a 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width2560/https://media-production.lp-cdn.com/media/2b78db39-76f5-4fba-a6ab-aab632367c6a 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/2b78db39-76f5-4fba-a6ab-aab632367c6a 3420w alt sizes100vw loadinglazy> /button>/div>/section>section idsection-b5603f86-ad71-4508-8ae1-e4e95c2e1761 classsolid-section is-font-color-dark is-background-color-light data-el-id014927e8-e953-40ac-bd59-a1df7d50918b> div classgallery-component js-lightbox lp-vertical-paddings redesign data-arrows-style> div classlp-container gallery-component__container> div classgallery-component__header> h2 classgallery-component__heading lp-h2>Floor Plan/h2> /div> div classrow gallery-component__row> div classgallery-component__col> div classgallery-card> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/09679583-1d5a-4728-9b3f-ed831b1c8cd3 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/09679583-1d5a-4728-9b3f-ed831b1c8cd3 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/09679583-1d5a-4728-9b3f-ed831b1c8cd3 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/09679583-1d5a-4728-9b3f-ed831b1c8cd3 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1920/https://media-production.lp-cdn.com/media/09679583-1d5a-4728-9b3f-ed831b1c8cd3 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width2560/https://media-production.lp-cdn.com/media/09679583-1d5a-4728-9b3f-ed831b1c8cd3 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width3456/https://media-production.lp-cdn.com/media/09679583-1d5a-4728-9b3f-ed831b1c8cd3 3456w sizes(max-width: 767px) 100vw, (max-width: 991px) 50vw, 33vw altimage loadinglazy> /div> /div> /div> /div> /div>/section>section idsection-4b00fa46-0fa4-4d82-a723-f382db13c3db classsolid-section is-font-color-dark is-background-color-light data-el-id014927e8-e953-40ac-bd59-a1df7d50918b> div classgallery-component js-lightbox lp-vertical-paddings redesign data-arrows-style> div classlp-container gallery-component__container> div classgallery-component__header> h2 classgallery-component__heading lp-h2>Neighborhood/h2> /div> div classrow gallery-component__row> div classgallery-component__col> div classgallery-card> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/3e65cbd8-435d-46a9-9b61-fbcbe2522367 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/3e65cbd8-435d-46a9-9b61-fbcbe2522367 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/3e65cbd8-435d-46a9-9b61-fbcbe2522367 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/3e65cbd8-435d-46a9-9b61-fbcbe2522367 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/3e65cbd8-435d-46a9-9b61-fbcbe2522367 1545w sizes(max-width: 767px) 100vw, (max-width: 991px) 50vw, 33vw altimage classportrait loadinglazy> /div> /div> div classgallery-component__col> div classgallery-card> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/46a8e6f0-edb4-4147-a7f1-0efc601fd663 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/46a8e6f0-edb4-4147-a7f1-0efc601fd663 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/46a8e6f0-edb4-4147-a7f1-0efc601fd663 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/46a8e6f0-edb4-4147-a7f1-0efc601fd663 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1920/https://media-production.lp-cdn.com/media/46a8e6f0-edb4-4147-a7f1-0efc601fd663 1920w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width2560/https://media-production.lp-cdn.com/media/46a8e6f0-edb4-4147-a7f1-0efc601fd663 2560w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/46a8e6f0-edb4-4147-a7f1-0efc601fd663 3300w sizes(max-width: 767px) 100vw, (max-width: 991px) 50vw, 33vw altimage loadinglazy> /div> /div> div classgallery-component__col> div classgallery-card> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/65c19c50-5924-4756-827f-5a48d77d6375 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/65c19c50-5924-4756-827f-5a48d77d6375 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/65c19c50-5924-4756-827f-5a48d77d6375 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/65c19c50-5924-4756-827f-5a48d77d6375 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/65c19c50-5924-4756-827f-5a48d77d6375 1545w sizes(max-width: 767px) 100vw, (max-width: 991px) 50vw, 33vw altimage classportrait loadinglazy> /div> /div> div classgallery-component__col> div classgallery-card> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/07445639-f25a-4a89-ab18-79ae8fa2e552 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/07445639-f25a-4a89-ab18-79ae8fa2e552 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/07445639-f25a-4a89-ab18-79ae8fa2e552 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/07445639-f25a-4a89-ab18-79ae8fa2e552 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/07445639-f25a-4a89-ab18-79ae8fa2e552 1545w sizes(max-width: 767px) 100vw, (max-width: 991px) 50vw, 33vw altimage classportrait loadinglazy> /div> /div> div classgallery-component__col> div classgallery-card> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/18868a90-f4a9-4fb1-8971-91ea4e067168 srcsethttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width320/https://media-production.lp-cdn.com/media/18868a90-f4a9-4fb1-8971-91ea4e067168 320w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/18868a90-f4a9-4fb1-8971-91ea4e067168 960w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width1280/https://media-production.lp-cdn.com/media/18868a90-f4a9-4fb1-8971-91ea4e067168 1280w, https://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85/https://media-production.lp-cdn.com/media/18868a90-f4a9-4fb1-8971-91ea4e067168 1545w sizes(max-width: 767px) 100vw, (max-width: 991px) 50vw, 33vw altimage classportrait loadinglazy> /div> /div> /div> /div> /div>/section>section idsection-16de5598-4463-4e6d-85d2-971cbad274fa classsolid-section is-font-color-dark is-background-color-light data-el-id916b93b3-42eb-4bfe-ac4d-ac1e7fdd7990>div classamenities section lp-vertical-paddings style--graphicColor: #B4B3B3; --iconColor: #BC8F45; --numberColor: #64615F> div classlp-container> div classamenities-list> div classitem> div classheading js> span classheading-number js wow fadeInUp data-wow-delay.1s>01/span> h2 classlp-h2 wow fadeInUp data-wow-delay.1s>Interior/h2> /div> div classcontent info-acc> div classcell> h4 classlp-h4>Total Bedrooms/h4> span classamenities-value>3/span> /div> div classcell> h4 classlp-h4>Total Bathrooms/h4> span classamenities-value>2.5/span> /div> div classcell> h4 classlp-h4>Full Bathrooms/h4> span classamenities-value>2/span> /div> div classcell> h4 classlp-h4>Half Bathroom/h4> span classamenities-value>1/span> /div> div classcell> h4 classlp-h4>Fireplace/h4> span classamenities-value>Family Room, Gas/span> /div> /div> /div> div classitem> div classheading js wow fadeInUp data-wow-delay.15s> span classheading-number js wow fadeInUp data-wow-delay.15s>01/span> h2 classlp-h2>Exterior & Building/h2> /div> div classcontent info-acc> div classcell> h4 classlp-h4>Stories/h4> span classamenities-value>2/span> /div> div classcell> h4 classlp-h4>Garage Space/h4> span classamenities-value>1.0/span> /div> div classcell> h4 classlp-h4>Water Source/h4> span classamenities-value>Public/span> /div> div classcell> h4 classlp-h4>Pool/h4> span classamenities-value>Community/span> /div> div classcell> h4 classlp-h4>Roof/h4> span classamenities-value>Other/span> /div> div classcell> h4 classlp-h4>Parking/h4> span classamenities-value>Detached/span> /div> div classcell> h4 classlp-h4>Heat Type/h4> span classamenities-value>Natural Gas/span> /div> div classcell> h4 classlp-h4>Air Conditioning/h4> span classamenities-value>None/span> /div> div classcell> h4 classlp-h4>Sewer/h4> span classamenities-value>Public Sewer/span> /div> div classcell> h4 classlp-h4>HOA Amenities/h4> span classamenities-value>Clubhouse, Pool, Recreation Facilities, Roof Deck/span> /div> /div> /div> div classitem> div classheading js> span classheading-number js wow fadeInUp data-wow-delay.2s>01/span> h2 classlp-h2 wow fadeInUp data-wow-delay.2s>Lot & Area/h2> /div> div classcontent info-acc> div classcell> h4 classlp-h4>Status/h4> span classamenities-value>Sold/span> /div> div classcell> h4 classlp-h4>Living Area/h4> span classamenities-value>1,614 Sq.Ft./span> /div> div classcell> h4 classlp-h4>Total Area/h4> span classamenities-value>1,614 Sq.Ft./span> /div> div classcell> h4 classlp-h4>Lot Size/h4> span classamenities-value>1,873.08 Sq.Ft./span> /div> div classcell> h4 classlp-h4>MLS® ID/h4> span classamenities-value>ML81991450/span> /div> div classcell> h4 classlp-h4>Type/h4> span classamenities-value> Townhouse /span> /div> div classcell> h4 classlp-h4>Year Built/h4> span classamenities-value>1970/span> /div> div classcell> h4 classlp-h4>High School/h4> span classamenities-value>Monta Vista High/span> /div> div classcell> h4 classlp-h4>School District/h4> span classamenities-value>Fremont Union High/span> /div> /div> /div> div classitem> div classheading js> span classheading-number js wow fadeInUp data-wow-delay.25s>01/span> h2 classlp-h2 wow fadeInUp data-wow-delay.25s>Finance/h2> /div> div classcontent info-acc> div classcell> h4 classlp-h4>Sales Price/h4> span classamenities-value>$1,925,000/span> /div> div classcell> h4 classlp-h4>HOA Fees/h4> span classamenities-value>$440/mo /span> /div> div classcell> h4 classlp-h4>Zoning/h4> span classamenities-value>R1C2/span> /div> /div> /div> /div> /div>/div>/section>section idsection-6277abb2-d381-4023-b086-2f9ed466c3d3 classsolid-section is-font-color-light is-background-color-dark data-el-ida20c6258-e500-4b74-ab53-34667fe44fbe>/section>section idsection-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a classsolid-section is-font-color-dark is-background-color-light data-el-id128f6ba7-19de-4f6c-be5a-b2ec330af13e>div classlocation section style--graphicColor: #E5DED8;> div classlp-container lp-container--l> div classpretitle-block> p classlp-text--pretitle wow fadeInUp>Explore/p> /div> div classlp-title-group> h2 classlp-h2 js wow fadeInUp data-wow-delay.2s>/h2> /div> div classmap-container wow fadeInUp data-wow-delay.2s> div classmap data-lat37.324245 data-lng-122.070965>/div> /div> /div> /div> div classcontrols-container styledisplay: none> div classcontrols zoom-control> button classzoom-control-in titleZoom In>+/button> button classzoom-control-out titleZoom Out>−/button> /div> div classcontrols fullscreen-control> button titleToggle Fullscreen> div classfullscreen-control-icon fullscreen-control-top-left >/div> div classfullscreen-control-icon fullscreen-control-top-right >/div> div classfullscreen-control-icon fullscreen-control-bottom-left >/div> div classfullscreen-control-icon fullscreen-control-bottom-right >/div> /button> /div> /div>/div>/section>section idsection-0e41715e-ad01-4d5c-91f3-d1d01a170055 classsolid-section is-font-color-dark is-background-color-light data-el-ide9002bc3-993e-444a-b2e1-d546d6fa9b4e>/section>section idsection-5545de1e-7a9b-4231-a5fb-428f82e4dff7 classsolid-section is-font-color-light is-background-color-dark data-el-id7ac3b0e8-cc83-4b4d-8739-8b109c2040d5> div classcontact-section section> div classform-holder lp-vertical-paddings> form classjs form form--with-image data-typecontact-form> div classlp-title-group tablet> h2 classlp-h2 wow fadeInUp>Let’s connect/h2> /div> div classthank-you> h2 classlp-h2>Thank you for your message/h2> p>We will be in touch with you shortly/p> /div> img srchttps://dlajgvw9htjpb.cloudfront.net/cms/c25ef3cc-17f3-4e20-8741-4a53adcbbde4/ML81991450/-155255731523980844.jpg classimage wow fadeIn js-animation-target altname loadinglazy> div classform-group> div classthank-you> h2 classlp-h2>Thank you for your message/h2> p>We will be in touch with you shortly/p> /div> div classlp-title-group> h2 classlp-h2 wow fadeInUp>Let’s connect/h2> /div> div classform-inputs-wrap > div classinput-container wow fadeInLeft data-wow-delay.1s> input idsection-5545de1e-7a9b-4231-a5fb-428f82e4dff7-mp-name namename typetext classlp-input lp-input--light placeholderYour Name required> /div> div classinput-container wow fadeInLeft data-wow-delay.15s> input idsection-5545de1e-7a9b-4231-a5fb-428f82e4dff7-mp-phone namephone typetel classlp-input lp-input--light placeholderPhone required> /div> div classinput-container wow fadeInLeft data-wow-delay.2s> input idsection-5545de1e-7a9b-4231-a5fb-428f82e4dff7-mp-email nameemail typeemail classlp-input lp-input--light placeholderEmail Address required patterna-zA-Z0-9.!#$%&’*+/?^_`{|}~-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)+> /div> div classinput-container wow fadeInLeft data-wow-delay.25s styleposition: relative;> input idsection-5545de1e-7a9b-4231-a5fb-428f82e4dff7-mp-message namemessage typemessage classlp-input lp-input--light placeholderYour Message required tabindex-1 styleopacity: 0; position: absolute;> div classmy-textarea js lp-input lp-input--light contenteditable data-placeholderMessage styleposition: relative; z-index: 1;>/div> /div> div classlp-h-pot> label forsection-5545de1e-7a9b-4231-a5fb-428f82e4dff7-middleName>Middle Name/label> input idsection-5545de1e-7a9b-4231-a5fb-428f82e4dff7-middleName namemiddleName value autocompleteoff tabindex-1> /div> div classlp-disclaimer wow fadeInLeft data-wow-delay.3s> label styledisplay: none; forsection-5545de1e-7a9b-4231-a5fb-428f82e4dff7-termsAccepted>Opt In/Disclaimer Consent:/label> label classlp-tcr-content> span classlp-tcr-checkbox> input typecheckbox idsection-5545de1e-7a9b-4231-a5fb-428f82e4dff7-termsAccepted nametermsAccepted oninvalidthis.setCustomValidity(Please accept the terms and conditions) oninputthis.setCustomValidity() required />/span> span classlp-tcr-message> By providing Wen Guo your contact information, you acknowledge and agree to our a href/terms-and-conditions target_blank>Privacy Policy/a> and consent to receiving marketing communications, including through automated calls, texts, and emails, some of which may use artificial or prerecorded voices. This consent isn’t necessary for purchasing any products or services and you may opt out at any time. To opt out from texts, you can reply, ‘stop’ at any time. To opt out from emails, you can click on the unsubscribe link in the emails. Message and data rates may apply. /span> /label>/div> input typehidden namesource valueCONTACT_INQUIRY> button classbtn-submit lp-btn lp-btn--light button-style-1 wow fadeInLeft js typesubmit data-wow-delay.35s> Send Message span classsync-icon> svg xmlnshttp://www.w3.org/2000/svg width16 height16 viewBox0 0 16 16 fillnone> path dM15 8C15 4.89724 12.9806 2.26353 10.1817 1.34641C9.85391 1.23898 9.51531 1.15512 9.16788 1.09683C8.78872 1.03322 8.39862 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15C11.866 15 15 11.866 15 8Z strokeurl(#section-5545de1e-7a9b-4231-a5fb-428f82e4dff7-paint0_angular_1938_14) stroke-width2/> defs> radialGradient idsection-5545de1e-7a9b-4231-a5fb-428f82e4dff7-paint0_angular_1938_14 cx0 cy0 r1.5 gradientUnitsuserSpaceOnUse gradientTransformtranslate(8 9.83333) rotate(-90) scale(6.16667)> stop classgradient__color stop-color#E7B58B stop-opacity1/> stop classgradient__color offset1 stop-color#BC8F45 stop-opacity0/> /radialGradient> /defs> /svg> /span> span classsuccess-icon lp-ico lp-ico-success> /span> /button> /div> /div> /form> /div>/div>/section>section idsection-3ec4c7f5-5d80-479e-aba2-98a6aa68a209 classsolid-section is-font-color-dark is-background-color-light data-el-idf71ae3e8-00ba-44b1-afe9-cc772dd8cc3c>div classagents section lp-vertical-paddings> div class> div classholder > div classslider js > div classitem stylebackground-color: #FFFFFF> div classavatar> img srchttps://media-production.lp-cdn.com/cdn-cgi/image/formatauto,quality85,fitscale-down,width960/https://media-production.lp-cdn.com/media/s8cebq20pfwhpg0pmqu6 altWen Guo loadinglazy> h4 classlp-h4 js initials>EM/h4> /div> h2 classlp-h2 js name>Wen Guo/h2> h5 classlp-h5 position>Founder and Owner/h5> p classlicence>02037634/p> div classbioshort> p classfull-text styledisplay: none>Wen is a top producing listing agent and owner of Wen Guo Real Estate Group. As a former architect and fashion-tech entrepreneur, she is a true architecture and marketing specialist, and a team-building veteran. Her passion is to consistently offer an unparalleled experience for all buyers and sellers./p> p classparcial-text>Wen is a top producing listing agent and owner of Wen Guo Real Estate Group. As a former architect and fashion-tech entrepreneur, she is a true architecture and marketing specialist, and a team-building veteran. Her passion is to consistently offer an unparalleled experience for all buyers and sellers./p> a classlp-link hyperlink-style-2 js-more data-statusmore>Show more/a> /div> div classlinks> ul classlp-socials socials> li> a hrefhttps://www.facebook.com/wenguoregroup/ classlp-socials__link lp-socials__link js-link data-wow-delay0s target_blank aria-labelFACEBOOK > span classlp-i lp-i--facebook aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.linkedin.com/in/guowen/ classlp-socials__link lp-socials__link js-link data-wow-delay0.1s target_blank aria-labelLINKEDIN > span classlp-i lp-i--linkedin aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.youtube.com/channel/UC6MXyOnm2dR_LKGyQom8hXg classlp-socials__link lp-socials__link js-link data-wow-delay0.2s target_blank aria-labelYOUTUBE > span classlp-i lp-i--youtube aria-hiddentrue>/span> /a> /li> li> a hrefhttps://www.instagram.com/wenguoregroup/?hl=en classlp-socials__link lp-socials__link js-link data-wow-delay0.3s target_blank aria-labelINSTAGRAM > span classlp-i lp-i--instagram aria-hiddentrue>/span> /a> /li> /ul> /div> div classcontacts> div classphone> h6 classlp-h6 contacts-title>Phone/h6> a hreftel:(650) 817-5000 classlp-link hyperlink-style-2 lp-h5>(650) 817-5000/a> /div> div classemail> h6 classlp-h6 contacts-title>Email/h6> a href/cdn-cgi/l/email-protection#4a3d2f240a3d2f242d38253f3a6429252775393f28202f293e7778787c7e736f787a1d2f2f3a23242d6f787a052b216f787a09253f383e6f78096f787a091f1a0f181e0304056f78096f787a090b6f787a737f7a7b7e classlp-link hyperlink-style-2 lp-h5> span class__cf_email__ data-cfemail8dfae8e3cdfae8e3eaffe2f8fda3eee2e0>email protected/span> /a> /div> /div> /div> /div> /div> /div>/div>/section> div idmodals classmodals>/div> footer idglobal-footer classis-font-color-dark is-background-color-light data-el-id53b0f493-eef5-4f82-bc82-ba3bee3edcc4> div classsection> div classlp-container lp-container--l custom-vertical-paddings> div classtop> div classtop-block subscribe wow fadeInLeft data-wow-delay.5s> h5 classlp-h5>Subscribe to our newsletter/h5> form classform data-typecontact-form> div classform-group form-group--one-liner> div classinput-container> input id-mp-email nameemail typeemail classlp-input placeholderEmail Address required patterna-zA-Z0-9.!#$%&’*+/?^_`{|}~-+@a-zA-Z0-9-+(?:\.a-zA-Z0-9-+)+> /div> div classlp-h-pot> label for-middleName>Middle Name/label> input id-middleName namemiddleName value autocompleteoff tabindex-1> /div> input typehidden namesource valueNEWSLETTER_SIGNUP /> div classlp-disclaimer> label styledisplay: none; for-termsAccepted>Opt In/Disclaimer Consent:/label> label classlp-tcr-content> span classlp-tcr-checkbox> input typecheckbox id-termsAccepted nametermsAccepted oninvalidthis.setCustomValidity(Please accept the terms and conditions) oninputthis.setCustomValidity() required />/span> span classlp-tcr-message> By providing Wen Guo your contact information, you acknowledge and agree to our a href/terms-and-conditions target_blank>Privacy Policy/a> and consent to receiving marketing communications, including through automated calls, texts, and emails, some of which may use artificial or prerecorded voices. This consent isn’t necessary for purchasing any products or services and you may opt out at any time. To opt out from texts, you can reply, ‘stop’ at any time. To opt out from emails, you can click on the unsubscribe link in the emails. Message and data rates may apply. /span> /label>/div> button classbtn-submit lp-btn lp-btn--mob-full-width button-style-2 typesubmit> Contact us span classsync-icon> svg xmlnshttp://www.w3.org/2000/svg width16 height16 viewBox0 0 16 16 fillnone> path dM15 8C15 4.89724 12.9806 2.26353 10.1817 1.34641C9.85391 1.23898 9.51531 1.15512 9.16788 1.09683C8.78872 1.03322 8.39862 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15C11.866 15 15 11.866 15 8Z strokeurl(#paint0_angular_1938_14) stroke-width2/> defs> radialGradient idpaint0_angular_1938_14 cx0 cy0 r1.5 gradientUnitsuserSpaceOnUse gradientTransformtranslate(8 9.83333) rotate(-90) scale(6.16667)> stop stop-color#E7B58B stop-opacity1/> stop offset1 stop-color#BC8F45 stop-opacity0/> /radialGradient> /defs> /svg> /span> span classsuccess-icon> svg xmlnshttp://www.w3.org/2000/svg width12 height10 viewBox0 0 12 10 fillnone> path fill-ruleevenodd clip-ruleevenodd dM3.91006 7.49585L1.7071 5.29291C1.31658 4.90239 0.683416 4.90239 0.292893 5.29291C-0.0976309 5.68343 -0.0976309 6.3166 0.292893 6.70712L3.29288 9.70709C3.7168 10.131 4.4159 10.0892 4.7863 9.61781L11.7863 1.61786C12.1275 1.18359 12.0521 0.554936 11.6178 0.213723C11.1835 -0.127489 10.5549 -0.0520504 10.2136 0.38222L3.91006 7.49585Z fill#BC8F45/> /svg> /span> /button> /div> /form> /div> div classcontact-block> button classscroll-up js wow zoomIn data-wow-delay1.2s>/button> /div> /div> div classbottom> div classdisclaimer-container wow fadeInUp data-wow-delay1s> div classdisclaimer js lp-h6> p>We do not make any representation or warranty regarding any information, including without limitation its accuracy or completeness, contained on this Website./p> /div> /div> /div> div classcopyright-container wow fadeInUp data-wow-delay1s> div classlogo-container> img srchttps://media-production.lp-cdn.com/media/e9ebc23a-fb30-4413-8e7f-875945565c5e classlp-logo alt> /div> div classcopyright-text> div classby>Website designed and developed by a hrefhttps://luxurypresence.com target_blank classlp-link>Luxury Presence./a>/div> div classcopyright> © Copyright. span classauto-year-update>/span> a classlp-link href/terms-and-conditions>All Rights Reserved/a> /div> /div> /div> /div>/div> /footer> div idqualifying-questions-modal tabindex-1 roledialog aria-modaltrue aria-labelledbyqualifying-questions-modal-title aria-hiddentrue styleposition: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 1050; display: none; align-items: center; justify-content: center;> style> #qualifying-questions-modal .custom-select-toggle { border: 1px solid #848484; border-radius: 8px; padding: 12px 16px; } #qualifying-questions-modal .custom-select-toggle.is-placeholder { color: #848484; } #qualifying-questions-modal #qualifying-questions-modal-phoneNumber::placeholder { color: #848484; opacity: 1; } #qualifying-questions-modal .disclaimer-more { display: none; } #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-more { display: inline; } #qualifying-questions-modal #qualifying-questions-modal-disclaimer-text:not(.collapsed) .disclaimer-ellipsis { display: none; } /style> script data-cfasyncfalse src/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js>/script>script> function toggleDisclaimerQualifyingQuestionsModal() { const disclaimerText document.getElementById(qualifying-questions-modal-disclaimer-text); const toggleButton document.getElementById(qualifying-questions-modal-toggle-disclaimer); if (disclaimerText.classList.contains(collapsed)) { disclaimerText.classList.remove(collapsed); toggleButton.textContent Read less; toggleButton.setAttribute(aria-expanded, true); } else { disclaimerText.classList.add(collapsed); toggleButton.textContent Read more; toggleButton.setAttribute(aria-expanded, false); } } /script> div stylemax-width: 400px; width: 95%; margin: 0 auto;> div stylebackground: #fff; border: none; border-radius: 16px; color: black; box-shadow: none; position: relative;> button typebutton data-dismissmodal aria-labelClose styleposition: absolute; right: 20px; top: 10px; font-size: 28px; font-weight: 300; color: black; opacity: 1; background: none; border: none; padding: 0; width: auto; height: auto; cursor: pointer; z-index: 10;> span aria-hiddentrue>×/span> /button> div stylepadding: 40px 30px 32px;> div styletext-align: left; margin-bottom: 32px;> h2 idqualifying-questions-modal-title stylemargin: 0; color: #333; font-size: 18px; line-height: 1.4; text-transform: uppercase; letter-spacing: 0.5px; font-weight: normal;> Thanks, please provide more information to help serve you /h2> /div> form idqualifying-questions-modal-form data-typecontact-form> input typehidden namesource valuePROFILE_UPDATE /> input typehidden nameemail value idqualifying-questions-modal-email /> input typehidden nametriggerSource idqualifying-questions-modal-triggerSource value /> label forqualifying-questions-modal-email styledisplay:none;> Email /label> label forqualifying-questions-modal-triggerSource styledisplay:none;> Trigger Source /label> div stylemargin-bottom: 20px;> label forqualifying-questions-modal-phoneNumber styledisplay:none;> Phone Number /label> input typetel idqualifying-questions-modal-phoneNumber namephoneNumber stylepadding: 12px 16px; font-size: 16px; border: 1px solid #848484; border-radius: 8px; background: transparent; color: black; width: 100%; box-sizing: border-box; outline: none; pattern^\+?1?-.\s?\(?0-9{3}\)?-.\s?0-9{3}-.\s?0-9{4}$ required placeholderPhone aria-labelPhone Number inputmodetel autocompletetel onfocusthis.style.borderColorblack; onblurthis.style.borderColor#848484; /> /div> div stylemargin-bottom: 20px;> label forqualifying-questions-modal-interest styledisplay:none;> Interest /label> select idqualifying-questions-modal-interest nameinterest required data-labelInterest aria-labelInterest stylepadding: 12px 16px; font-size: 16px; border: 1px solid #848484; border-radius: 8px; background: #fff; color: #848484; width: 100%; box-sizing: border-box; outline: none; appearance: none; -webkit-appearance: none; -moz-appearance: none; background-image: url(data:image/svg+xml;charsetutf8,%3Csvg xmlns%22http://www.w3.org/2000/svg%22 viewBox%220 0 16 16%22%3E%3Cpath fill%22%23666%22 d%22M4.427 7.427l3.396 3.396a.25.25 0 00.354 0l3.396-3.396A.25.25 0 0011.396 7H4.604a.25.25 0 00-.177.427z%22/%3E%3C/svg%3E); background-repeat: no-repeat; background-position: right 16px center; background-size: 16px; onfocusthis.style.borderColorblack; this.style.colorblack; onblurthis.style.borderColor#848484; if(this.value ) this.style.color#848484; else this.style.colorblack; > option value stylebackground: #fff; color: #848484; disabled selected>Interested in.../option> option valueSelling & Buying stylebackground: #fff; color: black;>Selling & Buying/option> option valueSelling stylebackground: #fff; color: black;>Selling/option> option valueBuying stylebackground: #fff; color: black;>Buying/option> option valueRenting stylebackground: #fff; color: black;>Renting/option> option valueOther stylebackground: #fff; color: black;>Other/option> /select> /div> div stylemargin-bottom: 32px; font-size: 12px; line-height: 1.2;> label styledisplay: none; forqualifying-questions-modal-qualifying-questions-termsAccepted>Opt In/Disclaimer Consent:/label> label classlp-tcr-content> span classlp-tcr-checkbox> input typecheckbox idqualifying-questions-modal-qualifying-questions-termsAccepted nametermsAccepted aria-describedbyqualifying-questions-modal-disclaimer-text oninvalidthis.setCustomValidity(Please accept the terms and conditions) oninputthis.setCustomValidity() required />/span> span classlp-tcr-message> div idqualifying-questions-modal-disclaimer-text classcollapsed stylecolor: #848484;> By providing strong>Wen Guo/strong> your contact information, you acknowledge and agree to our a href/terms-and-conditions target_blank relnoopener noreferrer styletext-decoration: underline;>Privacy Policy/a> and consent to receiving marketingspan classdisclaimer-more> communications, including through automated calls, texts, and emails, some of which may use artificial or prerecorded voices. This consent isnt necessary for purchasing any products or services and you may opt out at any time. To opt out from texts, you can reply, stop at any time. To opt out from emails, you can click on the unsubscribe link in the emails. Message and data rates may apply./span>span classdisclaimer-ellipsis>.../span> /div> button idqualifying-questions-modal-toggle-disclaimer typebutton stylebackground: none; border: none; color: #848484; font-size: inherit; font-weight: bold; padding: 0; margin-top: 4px; cursor: pointer; aria-expandedfalse onclicktoggleDisclaimerQualifyingQuestionsModal() > Read more /button> /span> /label> /div> div> button typesubmit stylepadding: 12px 24px; font-size: 16px; font-weight: normal; border-radius: 8px; border: 1px solid black; background: black; color: white; width: 100%; cursor: pointer; transition: all 0.2s ease; text-transform: uppercase; letter-spacing: 0.5px; onmouseoverthis.style.backgroundtransparent; this.style.colorblack; onmouseoutthis.style.backgroundblack; this.style.colorwhite; > Submit /button> /div> /form> /div> /div> /div> /div> script> (function() { var lazyVideos .slice.call(document.querySelectorAll(video.lazy)); if (IntersectionObserver in window && lazyVideos.length > 0) { var lazyVideoObserver new IntersectionObserver(function(entries, observer) { entries.forEach(function(video) { if (video.isIntersecting) { for (var source in video.target.children) { var videoSource video.target.childrensource; if (typeof videoSource.tagName string && videoSource.tagName SOURCE) { videoSource.src videoSource.dataset.src; } } video.target.load(); video.target.classList.remove(lazy); lazyVideoObserver.unobserve(video.target); } }); }); lazyVideos.forEach(function(lazyVideo) { lazyVideoObserver.observe(lazyVideo); }); } })(); /script> !-- Global site tag (gtag.js) - Google Analytics --> script defer srchttps://www.googletagmanager.com/gtag/js>/script> !-- Google Tag Manager --> script>(function(w,d,s,l,i){wlwl||;wl.push({gtm.start: new Date().getTime(),event:gtm.js});var fd.getElementsByTagName(s)0, jd.createElement(s),dll!dataLayer?&l+l:;j.defertrue;j.asyncfalse;j.src https://www.googletagmanager.com/gtm.js?id+i+dl;f.parentNode.insertBefore(j,f); })(window,document,script,dataLayer,GTM-T9SFQGHZ);/script> !-- End Google Tag Manager --> !-- LP Tracker (divolte.js) - LP Divolte --> script>window.divolteLpwindow.divolteLp||function(){(divolteLp.qdivolteLp.q||).push(arguments)}/script> !-- LP Tracker (eventBus) - LP EventBus --> script>window.eventBusLpwindow.eventBusLp||function(){(eventBusLp.qeventBusLp.q||).push(arguments)}/script> script> window.dataLayer window.dataLayer || ; document.sendGoogleTagManagerEvent function() { /* Honor GPC-enabled browsers and prevent GTM event if GPC is enabled. More details: https://global-privacy-control.glitch.me/ */ if (window.navigator.globalPrivacyControl) { return; } dataLayer.push(arguments); } document.sendGoogleTagManagerEvent(js, new Date()); document.sendGoogleAnalyticsEvent function(googleEvent) { /* Now this has a mapping to match ga4 in order to not modify buttons.js and contactForms.js */ document.sendGoogleTagManagerEvent(event, googleEvent.eventAction, { event_category: googleEvent.eventCategory, event_label: googleEvent.eventLabel, value: googleEvent.eventValue }) }; document.addEventListener(DOMContentLoaded, function() { var pageView { hitType: pageview, page: location.pathname, location: location.href }; (function() { //If the page has an element with ID of auto-year-update the element will be populated with the current year. var date new Date(); var elements document.getElementsByClassName(auto-year-update); var i; for (i 0; i elements.length; i++) { elementsi.innerText date.getFullYear(); } })(); if (window.divolteLp) { window.divolteLp(sendLpPageView, {}); } if (window.eventBusLp) { window.eventBusLp(sendLpPageView, {}); } document.sendGoogleAnalyticsEvent(pageView); }); /script> script> // Function to dynamically load a script function loadScript(url, callback) { var script document.createElement(script); script.type text/javascript; script.src url; script.defer true; script.async true; script.onload callback; document.head.appendChild(script); } // Function to dynamically load CSS file function loadCSS(url) { var link document.createElement(link); link.rel stylesheet; link.href url; document.head.appendChild(link); } // Global methods / variables that can be accessed by element js window.luxuryPresence { libs: { loadJs: loadScript, loadCss: loadCSS, jsLibsMap: { paroller: { jsSrc: https://d1e1jt2fj4r8r.cloudfront.net/javascript/jquery.paroller.min.js, isLoaded: false, }, ionRangeSlider: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js, cssSrc: https://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/css/ion.rangeSlider.min.css, isLoaded: false, requires: jquery, }, splide: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/js/splide.min.js, cssSrc: https://cdnjs.cloudflare.com/ajax/libs/splidejs/4.1.4/css/splide-core.min.css, isLoaded: false, }, wow: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js, isLoaded: false, }, jquery: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js, isLoaded: false, }, slick: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js, isLoaded: false, requires: jquery, }, libphonenumber: { jsSrc: https://cdnjs.cloudflare.com/ajax/libs/libphonenumber-js/1.11.8/libphonenumber-js.min.js, isLoaded: false, }, }, }, }; /script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js integritysha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g crossoriginanonymous referrerpolicyno-referrer onloadwindow.luxuryPresence.libs.jsLibsMap.jquery.isLoaded true>/script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.8/handlebars.min.js>/script> script defer srchttps://cdn.jsdelivr.net/npm/handlebars-intl@1.1.2/dist/handlebars-intl.min.js>/script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/superagent/4.1.0/superagent.min.js>/script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js onloadwindow.luxuryPresence.libs.jsLibsMap.slick.isLoaded true>/script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js onloadwindow.luxuryPresence.libs.jsLibsMap.wow.isLoaded true>/script> script defer srchttps://cdnjs.cloudflare.com/ajax/libs/ion-rangeslider/2.3.1/js/ion.rangeSlider.min.js onloadwindow.luxuryPresence.libs.jsLibsMap.ionRangeSlider.isLoaded true>/script> !-- GOOGLE TRANSLATE SCRIPT --> script> function googleTranslateElementInit() { // list of languages can be overridden by setting window.customLanguages in the head JS. example `window.customLanguages en,de,fr,ro,sk,pl` // Language codes can be taken from here https://cloud.google.com/translate/docs/languages const DEFAULT_LANGUAGES en,es,zh-CN,zh-TW,tl,vi,ar,ko,ru,de,fr,hi,pt; document.querySelectorAll(data-typeTRANSLATE).forEach(function(translate){ translate.innerText ; new google.translate.TranslateElement({ pageLanguage: en, layout: google.translate.TranslateElement.InlineLayout.SIMPLE, includedLanguages: window.customLanguages || DEFAULT_LANGUAGES, }, translate); }); } /script> script defer src//translate.google.com/translate_a/element.js?cbgoogleTranslateElementInit>/script> script defer srchttps://accounts.google.com/gsi/intermediate>/script> !-- GOOGLE TRANSLATE SCRIPT END--> script> // UI helpers (function () { function getSideMenu () { return document.querySelector(body > div.sidemenu); } function sideMenuHide (instant) { var sideMenu getSideMenu(); if (!sideMenu || !sideMenu.classList.contains(visible)) { return; } sideMenu.classList.remove(visible); sideMenu.dispatchEvent(new CustomEvent(lpui-hide, { detail: { instant: !!instant } })); window.dispatchEvent(new CustomEvent(lpui-sidemenu-hide, { detail: {instant: !!instant} })); } function sideMenuShow () { var sideMenu getSideMenu(); if (!sideMenu || sideMenu.classList.contains(visible)) { return; } sideMenu.classList.add(visible); sideMenu.dispatchEvent(new Event(lpui-show)); window.dispatchEvent(new Event(lpui-sidemenu-show)); } function sideMenuToggle () { var sideMenu getSideMenu(); if (!sideMenu) { return; } var isSideMenuVisible sideMenu.classList.contains(visible); if (isSideMenuVisible) { sideMenuHide(); } else { sideMenuShow(); } } var scrollLockRequests {}; window.__debug_scrollLockRequests scrollLockRequests; var hideScrollStyles + body {+ overflow: hidden; + }; var hideScrollId hide-body-scroll-style; function scrollLock () { var style document.createElement(style); style.id hideScrollId; style.textContent hideScrollStyles; document.head.appendChild(style); window.dispatchEvent(new Event(lpui-scroll-locked)); } function scrollUnlock () { document.getElementById(hideScrollId)?.remove(); window.dispatchEvent(new Event(lpui-scroll-unlocked)); } function requestScrollLock (lockId) { var wasLocked Object.keys(scrollLockRequests).length > 0; scrollLockRequestslockId || __anonymous_lock true; if (!wasLocked) { scrollLock(); } } function releaseScrollLock (lockId) { if (lockId) { delete scrollLockRequestslockId; if (!Object.keys(scrollLockRequests).length) { scrollUnlock(); } } else { scrollLockRequests {}; window.__debug_scrollLockRequests scrollLockRequests; scrollUnlock(); } } function showModal (modalId, options) { var modal document.getElementById(modalId); if (!modal) { return; } if (!modal.classList.contains(visible)) { modal.classList.add(visible); if (options && options.scrollLock) { window.lpUI.requestScrollLock(modalId); } modal.dispatchEvent(new Event(lpui-show)); window.dispatchEvent(new CustomEvent(lpui-modal-show, { detail: { id: modalId } })); } const visibleModals document.querySelectorAll(.modal.visible); if (visibleModals.length > 1) { const maxZIndex Array.from(visibleModals).reduce((maxZIndex, modal) > { const zIndex window.getComputedStyle(modal).zIndex; const parsedZIndex zIndex ! auto ? parseInt(zIndex) : 0; return Math.max(maxZIndex, parsedZIndex); }, 0); modal.style.zIndex maxZIndex + 1; } } function _hideModal (modalEl) { if (!modalEl) { return; } if (!modalEl.classList.contains(visible)) { return; } modalEl.classList.remove(visible); modalEl.style.zIndex ; modalEl.dispatchEvent(new Event(lpui-hide)); var modalId modalEl.getAttribute(id); if (modalId) { window.lpUI.releaseScrollLock(modalId); window.dispatchEvent(new CustomEvent(lpui-modal-hide, { detail: { id: modalId } })); } } function hideModal (modalId) { _hideModal(document.getElementById(modalId)); } function hideClosestModal (el) { const modal el?.closest(.modal); if (!modal) { return; } if (modal.classList) { _hideModal(modal); return; } if (modal.length && modal0.classList) { _hideModal(modal0); } } window.lpUI { sideMenuHide: sideMenuHide, sideMenuShow: sideMenuShow, sideMenuToggle: sideMenuToggle, requestScrollLock: requestScrollLock, releaseScrollLock: releaseScrollLock, showModal: showModal, hideModal: hideModal, hideClosestModal: hideClosestModal } })(); var stringifyPrimitive function(v) { switch (typeof v) { case string: return v; case boolean: return v ? true : false; case number: return isFinite(v) ? v : ; default: return ; } }; function objectToQuerystring(obj, sep, eq, name) { // https://github.com/Gozala/querystring/blob/master/encode.js sep sep || &; eq eq || ; if (obj null) { obj undefined; } if (typeof obj object) { return Object.keys(obj).map(function(k) { var ks encodeURIComponent(stringifyPrimitive(k)) + eq; if (Array.isArray(objk)) { return objk.map(function(v) { return ks + encodeURIComponent(stringifyPrimitive(v)); }).join(sep); } else { return ks + encodeURIComponent(stringifyPrimitive(objk)); } }).filter(Boolean).join(sep); } if (!name) return ; return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj)); } function getPath(url, options) { var parser document.createElement(a); parser.href url || ; var path parser.pathname || ; if (path0 ! /) { // IE does not return path starting with a slash path / + path; } if (options && options.queryString) { path + parser.search; } return path; } function getMLSAutocomplete(keyword) { var searchURL window.location.protocol + // + window.location.hostname + /home-search/auto_complete; var query { kind: listings, query: keyword }; return superagent .get(searchURL) .query(query) .then(function(res) { var data res.body || ; /* Of the format: { _index: listing_auto_completes_production_20190723232720775, _type: listing_auto_complete, _id: 235875624, _score: 0, status_modified_at: 1553250708, city: Jupiter, price: 1335743, display_address: 10088 Calabrese Trail Unit: 9 Jupiter FL 33478, sold_price: null, id: 235875624, state: FL, photo_urls: http://cdn.photos.sparkplatform.com/fl/20190322153144208228000000-o.jpg , status: Pending }, ... */ return data; }); } function getMLSAutocompleteWithFilters(keyword, filters {}) { var searchURL window.location.protocol + // + window.location.hostname + /home-search/auto_complete; return superagent .get(searchURL) .query({ kind: listings, query: keyword, ...filters }) .then(function(res) { /* Of the format: { _index: listing_auto_completes_production_20190723232720775, _type: listing_auto_complete, _id: 235875624, _score: 0, status_modified_at: 1553250708, city: Jupiter, price: 1335743, display_address: 10088 Calabrese Trail Unit: 9 Jupiter FL 33478, sold_price: null, id: 235875624, state: FL, photo_urls: http://cdn.photos.sparkplatform.com/fl/20190322153144208228000000-o.jpg , status: Pending }, ... */ return res.body || ; }); } function makeMlsLink(data) { // Code Dupe from utils/googlePlace // mapping of google data type to mls data type var mapping { neighborhood: neighborhood, locality: place, administrative_area_level_2: county, administrative_area_level_1: state, postal_code: postalcode, }; function _filterTypes(types) { return types.filter(function(type) { return type ! political }); } if (!data || !Object.keys(data).length) { return /home-search/listings; } var newData {}; _filterTypes(data.types).forEach(function(type) { if (mappingtype) { newData.search_type mappingtype; } }); newData.omnibox data.formatted_address; data.address_components.forEach(function(component) { _filterTypes(component.types).forEach(function(type) { if (mappingtype) { newDatamappingtype component.long_name; } }); }); var bounds data.geometry.bounds; var convertedData Object.assign(bounds, newData); return /home-search/listings? + objectToQuerystring(convertedData); } function debounce(func, wait) { let timeout; return function(...args) { const context this; clearTimeout(timeout); timeout setTimeout(() > func.apply(context, args), wait) } } // Global methods / variables that can be accessed by element js window.luxuryPresence { ...window.luxuryPresence, defaults: { companyId: c25ef3cc-17f3-4e20-8741-4a53adcbbde4, apiGatewayUrl: https://gw.luxurypresence.com, gql: {agents:\n query Agents (\n $agentId: ID\n $agentIds: ID!\n $companyId: String\n $network: Boolean\n $networkId: String\n $officeId: ID!\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n $tags: String\n $tagsMode: TagsModeEnum\n $teamId: ID!\n $developmentId: ID!\n $prioritizeIds: Boolean\n ) {\n agents (\n agentId: $agentId\n agentIds: $agentIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n officeId: $officeId\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n tags: $tags\n tagsMode: $tagsMode\n teamId: $teamId\n developmentId: $developmentId\n prioritizeIds: $prioritizeIds\n ) {\n id\n firstName\n lastName\n avatar {\n smallUrl\n mediumUrl\n largeUrl\n height\n width\n }\n position\n bioLong\n bioShort\n seoTitle\n seoDescription\n slug\n phoneNumber\n phoneNumber2\n license\n email\n leadAgent\n greaterArea\n tags\n }\n agentsCount(\n agentIds: $agentIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n officeId: $officeId\n search: $search\n tags: $tags\n tagsMode: $tagsMode\n teamId: $teamId\n developmentId: $developmentId\n prioritizeIds: $prioritizeIds\n ) {\n count\n }\n }\n,properties:\n query Properties(\n $agentIds: ID!\n $teamIds: ID!\n $neighborhoodIds: ID!\n $officeIds: ID!\n $propertyId: ID\n $companyId: String\n $networkId: String\n $network: Boolean\n $statusId: String\n $propertyIds: ID!\n $prioritizeIds: Boolean\n $statusIds: String!\n $excludeStatusId: String!\n $neighborhoodId: String\n $addressState: String!\n $addressCity: String!\n $relatedNeighborhoodPropertyId: String\n $developmentId: String\n $featuredListing: Boolean\n $leaseProperty: Boolean\n $search: String\n $searchTermMode: SearchTermModeEnum\n $globalProperty: Boolean\n $archived: Boolean\n $salesPriceGTE: Float\n $salesPriceLTE: Float\n $leasePriceGTE: Float\n $leasePriceLTE: Float\n $livingSpaceSizeGTE: Float\n $livingSpaceSizeLTE: Float\n $bathCountGTE: Float\n $bathCountLTE: Float\n $bedroomCountGTE: Float\n $bedroomCountLTE: Float\n $architectureStyle: String\n $lifestyle: String\n $propertyTypeId: String\n $propertyTypeIds: String!\n $spaceTypeIds: ID!\n $tag: String\n $backfillMLSResults: Boolean\n $displayMLSListings: String\n $hostname: String\n $websiteId: ID\n $backfillProviders: String!\n $backfillMLSListingIds: String!\n $backfillMLSAgentIds: String!\n $backfillMLSOfficeIds: String!\n $backfillBoundary: JSON\n $openHouse: Boolean\n $withGeo: Boolean\n $advancedFilters: JSON\n $seasonalPriceId: ID\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n ) {\n properties(\n \n agentIds: $agentIds\n teamIds: $teamIds\n propertyId: $propertyId\n propertyIds: $propertyIds\n prioritizeIds: $prioritizeIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n statusId: $statusId\n statusIds: $statusIds\n excludeStatusId: $excludeStatusId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n officeIds: $officeIds\n addressState: $addressState\n addressCity: $addressCity\n developmentId: $developmentId\n featuredListing: $featuredListing\n leaseProperty: $leaseProperty\n search: $search\n searchTermMode: $searchTermMode\n salesPriceGTE: $salesPriceGTE\n salesPriceLTE: $salesPriceLTE\n leasePriceGTE: $leasePriceGTE\n leasePriceLTE: $leasePriceLTE\n livingSpaceSizeGTE: $livingSpaceSizeGTE\n livingSpaceSizeLTE: $livingSpaceSizeLTE\n bathCountGTE: $bathCountGTE\n bathCountLTE: $bathCountLTE\n bedroomCountGTE: $bedroomCountGTE\n bedroomCountLTE: $bedroomCountLTE\n architectureStyle: $architectureStyle\n lifestyle: $lifestyle\n propertyTypeId: $propertyTypeId\n propertyTypeIds: $propertyTypeIds\n spaceTypeIds: $spaceTypeIds\n tag: $tag\n archived: $archived\n globalProperty: $globalProperty\n withGeo: $withGeo\n openHouse: $openHouse\n displayMLSListings: $displayMLSListings\n advancedFilters: $advancedFilters\n seasonalPriceId: $seasonalPriceId\n\n relatedNeighborhoodPropertyId: $relatedNeighborhoodPropertyId\n backfillMLSResults: $backfillMLSResults\n hostname: $hostname\n websiteId: $websiteId\n backfillProviders: $backfillProviders\n backfillMLSListingIds: $backfillMLSListingIds\n backfillMLSAgentIds: $backfillMLSAgentIds\n backfillMLSOfficeIds: $backfillMLSOfficeIds\n backfillBoundary: $backfillBoundary\n offset: $offset\n limit: $limit\n sort: $sort,\n sortDir: $sortDir\n ){\n id\n name\n status\n salesPrice\n reducedPrice\n isPasswordProtected\n bedroomCount\n bathCount\n fullBathCount\n halfBathCount\n threeQuarterBathCount\n fullAddress\n addressLine1\n addressLine2\n addressCity\n addressState\n addressCountry\n postalCode\n description\n syncedAt\n officeName\n attributionContact\n neighborhood {\n id\n }\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n seoTitle\n seoDescription\n slug\n fromMLS\n mlsId\n mlsLogo\n mlsAttribution\n openHouse\n openHouseHours\n priceUponRequest\n privateAddress\n leaseProperty\n leasePrice\n currency\n leaseTermFrequencyInterval\n leaseTermFrequencyCount\n leasePeriod\n livingSpaceSize\n livingSpaceUnits\n lotAreaSize\n lotAreaUnits\n tags\n latitude\n longitude\n timeZone\n buyerAgencyCompensation\n buyerAgencyCompensationType\n landIdUrl\n }\n propertiesCount(\n \n agentIds: $agentIds\n teamIds: $teamIds\n propertyId: $propertyId\n propertyIds: $propertyIds\n prioritizeIds: $prioritizeIds\n companyId: $companyId\n network: $network\n networkId: $networkId\n statusId: $statusId\n statusIds: $statusIds\n excludeStatusId: $excludeStatusId\n neighborhoodId: $neighborhoodId\n neighborhoodIds: $neighborhoodIds\n officeIds: $officeIds\n addressState: $addressState\n addressCity: $addressCity\n developmentId: $developmentId\n featuredListing: $featuredListing\n leaseProperty: $leaseProperty\n search: $search\n searchTermMode: $searchTermMode\n salesPriceGTE: $salesPriceGTE\n salesPriceLTE: $salesPriceLTE\n leasePriceGTE: $leasePriceGTE\n leasePriceLTE: $leasePriceLTE\n livingSpaceSizeGTE: $livingSpaceSizeGTE\n livingSpaceSizeLTE: $livingSpaceSizeLTE\n bathCountGTE: $bathCountGTE\n bathCountLTE: $bathCountLTE\n bedroomCountGTE: $bedroomCountGTE\n bedroomCountLTE: $bedroomCountLTE\n architectureStyle: $architectureStyle\n lifestyle: $lifestyle\n propertyTypeId: $propertyTypeId\n propertyTypeIds: $propertyTypeIds\n spaceTypeIds: $spaceTypeIds\n tag: $tag\n archived: $archived\n globalProperty: $globalProperty\n withGeo: $withGeo\n openHouse: $openHouse\n displayMLSListings: $displayMLSListings\n advancedFilters: $advancedFilters\n seasonalPriceId: $seasonalPriceId\n\n ) {\n count\n }\n }\n,pressReleases:\n query PressReleases (\n $pressReleaseId: ID\n $companyId: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n $categories: String!\n $propertyId: String!\n $developmentId: String!\n $agentId: String!\n $teamId: String!\n ) {\n pressReleases (\n pressReleaseId: $pressReleaseId\n companyId: $companyId\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n categories: $categories\n propertyId: $propertyId\n developmentId: $developmentId\n agentId: $agentId\n teamId: $teamId\n ) {\n id\n title\n description\n author\n externalUrl\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n publishedAt\n categories\n }\n pressReleasesCount(\n companyId: $companyId\n search: $search\n categories: $categories\n propertyId: $propertyId\n developmentId: $developmentId\n agentId: $agentId\n teamId: $teamId\n ) {\n count\n }\n }\n,posts:\n query Posts (\n $postId: ID\n $companyId: String\n $offset: Int\n $limit: Int\n $order: String\n $sortDir: SortDirectionEnum\n $search: String\n $featured: Boolean\n $categoryId: String\n $categoryIds: String!\n $neighborhoodId: String!\n ) {\n posts (\n postId: $postId\n companyId: $companyId\n offset: $offset\n limit: $limit\n order: $order\n sortDir: $sortDir\n search: $search\n featured: $featured\n postStatusId: \5f528253-abb7-484e-95c3-330269ac1102\\n categoryId: $categoryId\n categoryIds: $categoryIds\n neighborhoodId: $neighborhoodId\n ) {\n id\n title\n subtitle\n description\n status\n featured\n slug\n categories {\n id\n name\n }\n createdAt\n publishedAt\n scheduledAt\n createdBy {\n firstName\n lastName\n }\n customAuthor\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n seoTitle\n seoDescription\n slug\n }\n postsCount(\n companyId: $companyId\n search: $search\n featured: $featured\n postStatusId: \5f528253-abb7-484e-95c3-330269ac1102\\n categoryId: $categoryId\n categoryIds: $categoryIds\n neighborhoodId: $neighborhoodId\n ) {\n count\n }\n }\n,testimonials:\n query Testimonials(\n $testimonialId: ID\n $agentId: ID\n $teamId: ID\n $companyId: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n ) {\n testimonials(\n testimonialId: $testimonialId\n agentId: $agentId\n teamId: $teamId\n companyId: $companyId\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n ){\n id\n body\n author\n position\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n seoTitle\n seoDescription\n agents {\n slug\n email\n firstName\n lastName\n avatar {\n smallUrl\n height\n width\n }\n }\n }\n testimonialsCount(\n companyId: $companyId\n agentId: $agentId\n teamId: $teamId\n search: $search\n ) {\n count\n }\n }\n,neighborhoods:\n query Neighborhoods (\n $neighborhoodId: ID\n $companyId: String\n $search: String\n $tag: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n ) {\n neighborhoods (\n neighborhoodId: $neighborhoodId\n companyId: $companyId\n search: $search\n tag: $tag\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n ) {\n id\n name\n description\n descriptionShort\n slug\n tags\n googlePlaceData\n mlsLink\n createdAt\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n seoTitle\n seoDescription\n }\n neighborhoodsCount(\n companyId: $companyId\n search: $search\n tag: $tag\n ) {\n count\n }\n }\n,developments:\n query Developments (\n $developmentId: ID\n $companyId: String\n $offset: Int\n $limit: Int\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n $tag: String!\n $agentId: ID!\n ) {\n developments (\n developmentId: $developmentId\n companyId: $companyId\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n tag: $tag\n agentId: $agentId\n ) {\n id\n name\n description\n descriptionShort\n slug\n createdAt\n media {\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n height\n width\n }\n googlePlaceData\n seoTitle\n seoDescription\n tags\n }\n developmentsCount(\n companyId: $companyId\n search: $search\n tag: $tag\n agentId: $agentId\n ) {\n count\n }\n }\n,pois:\nquery PointsOfInterest(\n $regionId: String!,\n $radius: Int,\n $offset: Int,\n $limit: Int,\n $categories: PoiCategoryEnum!,\n $sortBy: PoiSortByEnum\n) {\n pois(\n regionId: $regionId,\n radius: $radius,\n offset: $offset,\n limit: $limit,\n categories: $categories,\n sortBy: $sortBy\n ) {\n name\n imageUrl\n url\n reviewCount\n rating\n price\n displayPhone\n distance\n category\n location {\n address1\n address2\n address3\n city\n zipCode\n country\n state\n }\n }\n }\n,offices:\n query Offices (\n $officeId: ID\n $officeIds: ID!\n $companyId: String\n $slug: String\n $sort: String\n $sortDir: SortDirectionEnum\n $search: String\n $tags: String\n $offset: Int\n $limit: Int\n ) {\n offices (\n officeId: $officeId\n officeIds: $officeIds\n companyId: $companyId\n slug: $slug\n sort: $sort\n sortDir: $sortDir\n search: $search\n tags: $tags\n offset: $offset\n limit: $limit\n ) {\n id\n companyId\n name\n slug\n officeMlsId\n shortDescription\n fullDescription\n addressLine1\n addressLine2\n addressCity\n addressState\n addressPostalCode\n addressCountry\n phone\n email\n officeHours\n coordinates\n googlePlaceData \n seoTitle\n seoDescription\n fullAddress\n media {\n id\n originalUrl\n thumbnailUrl\n smallUrl\n mediumUrl\n largeUrl\n xLargeUrl\n xxLargeUrl\n }\n }\n officesCount(\n companyId: $companyId\n officeId: $officeId\n officeIds: $officeIds\n slug: $slug\n search: $search\n tags: $tags\n ) {\n count\n }\n }\n,teams:query TeamsAndCount(\n $offset: Int\n $limit: Int\n $search: String\n $sort: String\n $sortDir: SortDirectionEnum\n $companyId: ID\n) {\n teams(\n offset: $offset\n limit: $limit\n sort: $sort\n sortDir: $sortDir\n search: $search\n companyId: $companyId\n ) {\n \n id\n companyId\n name\n email\n shortBio\n fullBio\n addressLine1\n addressLine2\n addressCity\n addressState\n addressCountry\n phoneNumber1\n phoneNumber2\n postalCode\n avatar {\n id\n thumbnailUrl\n smallUrl\n mediumUrl\n largeUrl\n }\n urlWebsite\n socialLinks\n socialLinksArray\n tags\n seoTitle\n seoDesc\n slug\n displayOrder\n\n }\n teamsCount(\n search: $search\n companyId: $companyId\n ) {\n count\n }\n}}, propertyPlaceholderImage: {} }, objectToQuerystring: objectToQuerystring, getPath: getPath, getMLSAutocomplete: getMLSAutocomplete, getMLSAutocompleteWithFilters: getMLSAutocompleteWithFilters, makeMlsLink: makeMlsLink, debounce: debounce, }; var wowOffset 100; /script> script> (() > {function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a;}// Entry point for lp-sdk bundle// This file exists to ensure Parcel v2 outputs the correct filename/* global window */ var $53de3c160faf5a81$exports {};/*WARNING!!! This file is used both on the server and in clients web-browserplease dont require/import any server-side related config/functions hereIf we need something, lets pass it as a parameter of the factory*/ var $0ce6edea77f7b81a$exports {};$0ce6edea77f7b81a$exports { getVideoFirstFrame (videoUrl) { // The default Cloudinary asset delivery URL has the following structure: https://res.cloudinary.com/cloud_name>/asset_type>/delivery_type>/transformations>/version>/public_id>.extension> // https://cloudinary.com/documentation/video_manipulation_and_delivery#transformation_url_structure // The problem is that transformations> and version> are optional, and transformations> can be chained separated by / // One more issue to be handled https://cloudinary.com/documentation/advanced_url_delivery_options#seo_friendly_media_asset_urls const CLOUDINARY_URL https://res.cloudinary.com/; const invalid !videoUrl || !videoUrl.startsWith(CLOUDINARY_URL); if (invalid) return null; const urlComponents videoUrl.replace(CLOUDINARY_URL, ).replace(f_auto:video, f_auto).split(/); // checking if asset_type> is not video or videos if (urlComponents1.toLowerCase().indexOf(video) -1) return null; // Filename is last urlComponent public_id>.extension> let filename urlComponentsurlComponents.length - 1; if (filename.lastIndexOf(.) > -1) filename `${filename.slice(0, filename.lastIndexOf(.))}.jpg`; else filename + .jpg; urlComponentsurlComponents.length - 1 filename; // We need to add so_0,eo_0 transformation to the url to target the first frame. // we want to find the position at which we want to insert it as a chained transformation const firstFrameTransformation so_0,eo_0; let firstFrameTransformationPosition 3; // checking cases for SEO-friendly URLs if (urlComponents1.toLowerCase() videos && urlComponents2 ! ) firstFrameTransformationPosition 2; // checking the last transformation position in the url // https://cloudinary.com/documentation/transformation_reference // https://regex101.com/r/lE3W6u/1 const transformationRegex /^(?:a-z{1,3}|\$\w+)_\S+$/; while(firstFrameTransformationPosition urlComponents.length - 1 && transformationRegex.test(urlComponentsfirstFrameTransformationPosition))firstFrameTransformationPosition++; urlComponents.splice(firstFrameTransformationPosition, 0, firstFrameTransformation); return CLOUDINARY_URL + urlComponents.join(/); }};/** * Create helpers with given Handlebars instance * * @param {Object} HandlebarsInstance * @param {Function} isEqual - we use different implementation if isEqual on server and on client * @return {Object} */ function $53de3c160faf5a81$var$handlebarsHelpersFactory(HandlebarsInstance, { isEqual: isEqual }) { // notice!: code below assumes list is ordered lowest to highest width const MEDIA_SIZES { field: thumbnailUrl, w: 320 }, { field: smallUrl, w: 960 }, { field: mediumUrl, w: 1280 }, { field: largeUrl, w: 1920 }, { field: xLargeUrl, w: 2560 }, { field: xxLargeUrl, w: 3456 } ; const MEDIA_SIZE_FOR_SRC 1280; const lpFormatNumber function(number, unit, precision) { const localization en-US; if (!number) return ; if (typeof number string) { const trimmed number.trim(); if (/^+\-0-9./.test(trimmed)) return number; // returning text as is assuming it already has all formatting // eslint-disable-next-line number parseFloat(trimmed); if (!number) return ; } const currencyPrecision typeof precision number ? precision : 0; const currencyFractionDigits Number.isInteger(number) ? 0 : currencyPrecision; const currencyFractionOptions { minimumFractionDigits: currencyFractionDigits, maximumFractionDigits: currencyFractionDigits }; if (unit USD) return `$${number.toLocaleString(localization, currencyFractionOptions)}`; if (unit CAD) return `$${number.toLocaleString(localization, currencyFractionOptions)} CAD`; if (unit EUR) return `\u{20AC}${number.toLocaleString(localization, currencyFractionOptions)}`; if (unit GBP) return `\xa3${number.toLocaleString(localization, currencyFractionOptions)}`; if (unit PERCENT) return `${number}%`; if (precision && typeof precision number && number > -1) return number.toLocaleString(localization, { maximumFractionDigits: precision }); return number.toLocaleString(localization); }; const formatFrequency function(freqUnit) { switch(freqUnit){ case DAY: return daily; case MONTH: return monthly; case WEEK: return weekly; case YEAR: return yearly; case QUARTER: return quarterly; case HALF_YEAR: return semi-annually; case NIGHTLY: return nightly; case SEASONAL: return seasonally; default: return ; } }; const formatFrequencyShort function(freqUnit) { switch(freqUnit){ case DAY: return day; case WEEK: return wk; case MONTH: return mo; case YEAR: return yr; case QUARTER: return 3 mos; case HALF_YEAR: return 6 mos; case NIGHTLY: return night; case SEASONAL: return season; default: return ; } }; const formatFrequencyStd function(freqUnit) { switch(freqUnit){ case DAY: return day; case WEEK: return week; case MONTH: return month; case YEAR: return year; case QUARTER: return quarter; case HALF_YEAR: return 6 months; case NIGHTLY: return night; case SEASONAL: return season; default: return ; } }; const formatFrequencyExt function(unit, options) { let val; let separator; const opts options || {}; switch(opts.mode){ case short: val formatFrequencyShort(unit); separator opts.frequencySeparator || /; break; case standard: case std: val formatFrequencyStd(unit); separator opts.frequencySeparator || /; break; case long: default: val formatFrequency(unit); separator opts.frequencySeparator || ; } if (!val) return ; if (!opts.frequencyTag && !opts.frequencyClass) return separator + val; return `${separator}${opts.frequencyTag || span}${opts.frequencyClass ? ` class${opts.frequencyClass}` : }>${val}/${opts.frequencyTag || span}>`; }; return { isEmpty (arg1, options) { const result !arg1 || (typeof arg1 string ? !arg1.trim() : false) || !Object.keys(arg1).length; if (options.fn) return result ? options.fn(this) : options.inverse(this); return result; }, ifEquals (arg1, arg2, options) { return isEqual(arg1, arg2) ? options.fn(this) : options.inverse(this); }, raw-helper: function(options) { return options.fn(); }, striptags (txt) { if (!txt) return ; // Remove HTML Comments (escaping something to not make real html comment by expression) // eslint-disable-next-line no-useless-escape,no-param-reassign txt txt.replace(/\!--(.|\r\n)*?-\->/g, ); // Remove XML fragments and style> and svg> tags with content // eslint-disable-next-line txt txt.replace(/(xml|style|svg)(^*|^*|^>)*>(.|\r\n)*?\/\1>/gi, ); // Replace with space // eslint-disable-next-line no-param-reassign txt txt.replace(/ /g, ); // Remove HTML Tags const regexp /\/?(^*|^*|^>)*(>|$)/g; return txt.replace(regexp, ); }, striptagsLineBreaks (txt) { if (!txt) return ; // Remove HTML Comments (escaping something to not make real html comment by expression) // eslint-disable-next-line no-useless-escape,no-param-reassign txt txt.replace(/\!--(.|\r\n)*?-\->/g, ); // Remove XML fragments and style> and svg> tags with content // eslint-disable-next-line no-param-reassign txt txt.replace(/(xml|style|svg)(^*|^*|^>)*>(.|\r\n)*?\/\1>/gi, ); // Replace br> and /p> tags with line break char, skipping last /p> which is not followed by br> or /p> // eslint-disable-next-line no-param-reassign txt txt.replace(/(br\s*\/?>)|(\/p\s*>)(?.*(\/p\s*>|br\s*\/?>))/g, ); // Replace with space // eslint-disable-next-line no-param-reassign txt txt.replace(/ /g, ); // Remove HTML Tags const regexp /\/?(^*|^*|^>)*(>|$)/g; return txt.replace(regexp, ); }, truncate (text, limit, suffix) { if (!text) return ; if (text.length > limit) return typeof suffix string ? text.slice(0, limit - suffix.length) + suffix : text.slice(0, limit); return text; }, // eslint-disable-next-line setSubArray (items , start, end, subArrayName, options) { // eslint-disable-next-line options.data.rootsubArrayName items.slice(start, end); }, formatAreaUnit (areaUnit) { switch(areaUnit){ case ACRE: return Acres; case SQUARE_METER: return Sq.M.; case SQUARE_YARD: return Sq.Yd.; default: return Sq.Ft.; } }, formatFrequency: formatFrequency, formatFrequencyShort: formatFrequencyShort, lpFormatFrequency (freqUnit, options) { return formatFrequencyExt(freqUnit, options && options.hash); }, subArray (index, start, end, options) { return index > start && index end ? options.fn(this) : options.inverse(this); }, formatPropertyStatus (status) { let formattedStatus ; switch(status){ case SOLD: formattedStatus Sold; break; case FOR_SALE: formattedStatus For Sale; break; case COMING_SOON: formattedStatus Coming Soon; break; case INACTIVE: formattedStatus Inactive; break; case POCKET_LISTING: formattedStatus Pocket Listing; break; case PENDING: formattedStatus Pending; break; case UNDER_CONTRACT: formattedStatus Under Contract; break; case ACTIVE_UNDER_CONTRACT: formattedStatus Active Under Contract; break; default: formattedStatus status; } return formattedStatus; }, formatGrade (gradeValue) { switch(gradeValue){ case UNDERGRADUATE_COURSES: return Undergrad; case PRE_KINDERGARTEN: return PreK; case KINDERGARTEN: return K; case FIRST_GRADE: return 1st; case SECOND_GRADE: return 2nd; case THIRD_GRADE: return 3rd; case FOURTH_GRADE: return 4th; case FIFTH_GRADE: return 5th; case SIXTH_GRADE: return 6th; case SEVENTH_GRADE: return 7th; case EIGHTH_GRADE: return 8th; case NINTH_GRADE: return 9th; case TENTH_GRADE: return 10th; case ELEVENTH_GRADE: return 11th; case TWELFTH_GRADE: return 12th; default: return ; } }, encodeURI (uri) { return encodeURI(uri); }, encodeURIComponent (txt) { return encodeURIComponent(txt); }, hbFormatDate (date, type) { const newDate date current ? new Date() : new Date(date); const months January, February, March, April, May, June, July, August, September, October, November, December ; if (type YYYY || type year) return `${newDate.getFullYear()}`; if (type MM/DD/YY) { let month newDate.getMonth() + 1; if (month 10) month `0${month.toString()}`; return `${month}/${newDate.getDate()}/${newDate.getFullYear().toString().substr(-2)}`; } return `${monthsnewDate.getMonth()} ${newDate.getDate()}, ${newDate.getFullYear()}`; }, openHousesFormat (startDate, endDate, timeZone) { if (!startDate || !endDate) return ; /** * return formatted time. * @param {date} date * @return {time} time. */ const getTime (date)>{ let hours date.getHours(); if (hours > 12) hours - 12; const prefix 0; let time `${hours}:${date.getMinutes() > 9 ? date.getMinutes() : prefix + date.getMinutes()}`; if (date.getHours() > 11) time + PM; else time + AM; return time; }; let tz ; let startFDate startDate; let endFDate endDate; if (timeZone) { startFDate new Date(startDate).toLocaleString(en-US, { timeZone: timeZone }); endFDate new Date(endDate).toLocaleString(en-US, { timeZone: timeZone }); , , , tz new Date(endDate).toLocaleString(en-US, { timeZone: timeZone, timeZoneName: short }).split( ); } const date new Date(startFDate); const openHouseDate date.toLocaleDateString(en-US); const time1 getTime(date); const date2 new Date(endFDate); const time2 getTime(date2); return `${openHouseDate} ${time1} - ${time2} ${tz}`; }, math (lvalue, operator, rvalue) { // eslint-disable-next-line lvalue parseFloat(lvalue); // eslint-disable-next-line rvalue parseFloat(rvalue); return ({ +: lvalue + rvalue, -: lvalue - rvalue, *: lvalue * rvalue, /: lvalue / rvalue, %: lvalue % rvalue })operator; }, findByKey (values, key, value, options) { const result (values || ).find((entry)>entrykey value); return options.fn(result); }, capitalize (string, split, options) { let capitalized; if (typeof string string && string.length) capitalized string.toLowerCase().split(split).map((w)>w.charAt(0).toUpperCase() + w.slice(1)).join( ).toString(); return capitalized; }, and (...arg) { return Array.prototype.slice.call(arg).every(Boolean); }, or (...arg) { return Array.prototype.slice.call(arg, 0, -1).some(Boolean); }, not (arg) { return !arg; }, orderByIds (items, orderedIds, options) { let ret ; let data null; if (options.data) data HandlebarsInstance.createFrame(options.data); // When passed orderedIds, filter out empty items including empty strings and // only show items (and in that order) in a loop // If no orderedIds provided, show all items const filteredIds (orderedIds || ).filter(Boolean); if (filteredIds && filteredIds.length) { let skippedItems 0; ret filteredIds.reduce((res, id, idx)>{ const item (items || ).find((item)>item.id id); // ID doesnt exist so ditch it if (!item) { skippedItems + 1; return res; } if (data) data.index idx - skippedItems; return res + options.fn(item, { data: data }); }, ); } else for(let i 0, j (items || ).length; i j; i++){ if (data) data.index i; ret + options.fn(itemsi, { data: data }); } return ret; }, ifIn (elem, list, options) { if (list && list.indexOf(elem) > -1) return options.fn(this); return options.inverse(this); }, partial (name, options) { // Register a partial and output the content in a script for clientside rendering HandlebarsInstance.registerPartial(name, HandlebarsInstance.compile(options.fn())); // eslint-disable-next-line const script `script typetext/x-handlebars-template class${name} pagination-script>${options.fn()}/${script}>`; return script; }, numCompare (l, r, operator, options) { const operators { : function(l, r) { // eslint-disable-next-line return l r; }, : function(l, r) { return l r; }, !: function(l, r) { // eslint-disable-next-line return l ! r; }, : function(l, r) { return l r; }, >: function(l, r) { return l > r; }, : function(l, r) { return l r; }, >: function(l, r) { return l > r; } }; const result operatorsoperator(l, r); if (result) return options.fn ? options.fn(this) : true; return options.fn ? options.inverse(this) : false; }, lpFormatNumber: lpFormatNumber, arrayToHtmlList (arr, options) { // eslint-disable-next-line return arr.reduce((acc, current)>{ try { if (typeof current object || current null) return acc; // eslint-disable-next-line return acc + `li>${current}/li>`; } catch (e) { /* empty */ } }, ); }, join (array, separator, options) { if (!array || !array.join) return ; return array.join(typeof separator string ? separator : , ); }, dedupe (items, key, options) { let data null; let skippedItems 0; const list new Set(); if (options.data) data HandlebarsInstance.createFrame(options.data); return (items || ).reduce((res, item, idx)>{ const val key ? itemkey : item; // Item is unique if were passed a key that is not defined const isUnique !list.has(val) || key && val undefined; if (isUnique) list.add(val); else { skippedItems + 1; return res; } if (data) data.index idx - skippedItems; return res + options.fn(item, { data: data }); }, ); }, JSONstringify (obj, options) { return JSON.stringify(obj); }, // eslint-disable-next-line sonarjs/cognitive-complexity formatPropertyPrice (...args) { const options argsargs.length - 1; const opts options.hash; const property args.length > 1 ? args0 : opts.property; const precision opts.precision || 0; if (args.length > 2) // eslint-disable-next-line opts.mode args1; if (!opts.mode) opts.mode short; let separator args.length > 3 ? args2 : opts.separator; if (typeof separator ! string) separator | ; if (property.isPasswordProtected) return Exclusive Listing; let priceUponRequestText args.length > 4 ? args3 : opts.priceUponRequestText; if (typeof priceUponRequestText ! string) priceUponRequestText Price Upon Request; if (property.priceUponRequest) return priceUponRequestText; let price property.salesPrice; let reduced null; // eslint-disable-next-line sonarjs/no-collapsible-if if (property.status ! SOLD && property.status ! Leased) { if (property.reducedPrice) { if (!opts.reducedClass) price property.reducedPrice; else reduced property.reducedPrice; } } let result ; if (reduced) result + `${opts.reducedTag || span} class${opts.reducedClass}>${lpFormatNumber(reduced, property.currency, precision)}/${opts.reducedTag || span}>`; if (price) { price lpFormatNumber(price, property.currency, precision); if (opts.priceTag || opts.priceClass) result + `${opts.priceTag || span}${opts.priceClass ? ` class${opts.priceClass}` : }>${price}/${opts.priceTag || span}>`; else result + price; } const leasePrice property.leasePrice && lpFormatNumber(property.leasePrice, property.currency, precision); if (leasePrice) { if (result) result + separator; const leaseText `${leasePrice}${formatFrequencyExt(property.leasePeriod, opts)}`; if (opts.leaseTag || opts.leaseClass) result + `${opts.leaseTag || span}${opts.leaseClass ? ` class${opts.leaseClass}` : }>${leaseText}/${opts.leaseTag || span}>`; else result + leaseText; } return new HandlebarsInstance.SafeString(result); }, // eslint-disable-next-line sonarjs/cognitive-complexity mediaImage (mediaSource, options {}) { if (!mediaSource) return; const { lazy: lazy, ...attributes } options.hash; let src ; let srcset ; if (typeof mediaSource string) src mediaSource; else { const srcMap {}; const { height: height, width: width, altTagText: altTagText } mediaSource; MEDIA_SIZES.forEach((src)>{ if (mediaSourcesrc.field && !srcMapmediaSourcesrc.field) srcMapmediaSourcesrc.field src.w; }); const srcs Object.keys(srcMap); if (!srcs.length) return; if (altTagText) attributes.alt altTagText; if (height && width) { if (height > width) { if (attributes.class) attributes.class + portrait; else attributes.class portrait; } if (setDims in options.hash) { attributes.width width; attributes.height height; } } if (srcs.length > 1 && width && width srcMapsrcssrcs.length - 1) { const maxSrc srcs.findIndex((src)>srcMapsrc > width); srcs.splice(maxSrc + 1); srcMapsrcssrcs.length - 1 width; } if (srcs.length > 1) { srcset srcs.map((s)>`${s} ${srcMaps}w`).join(, ); srcs.sort((a, b)>Math.abs(srcMapa - MEDIA_SIZE_FOR_SRC) - Math.abs(srcMapb - MEDIA_SIZE_FOR_SRC)); } // eslint-disable-next-line src srcs0; } delete attributes.setDims; if (!srcset) delete attributes.sizes; if (!(alt in attributes)) attributes.alt ; if (!(loading in attributes) && (options?.data?.root?.sectionIndex > 1 || lazy)) attributes.loading lazy; const attrs Object.keys(attributes).map((k)>`${HandlebarsInstance.escapeExpression(k)}${HandlebarsInstance.escapeExpression(attributesk)}`).join( ); return new HandlebarsInstance.SafeString(// eslint-disable-next-line sonarjs/no-nested-template-literals `img src${src}${srcset ? ` srcset${srcset}` : }${attrs ? ` ${attrs}` : }>`); }, bgImage (mediaSource) { if (!mediaSource) return ; if (typeof mediaSource string) return mediaSource; return mediaSource.largeUrl || mediaSource.url || ; }, concat (...rest) { let outStr ; // rest params are Array instances while arguments object is not for(const arg in rest)if (restarg ! null && restarg ! undefined && typeof restarg ! object) outStr + restarg; return outStr; }, setVideoExtension (uri, format) { if (!uri || !format) return ; const decodedUri new URL(uri); if (decodedUri.host ! res.cloudinary.com) { // Not a cloudinary uri, do not rewrite if (decodedUri.pathname.endsWith(`.${format}`)) return uri; return ; } // Rewrite the cloudinary uri const lastPeriodIdx decodedUri.pathname.lastIndexOf(.); let pathWithoutFormat decodedUri.pathname; if (lastPeriodIdx ! -1) pathWithoutFormat decodedUri.pathname.substr(0, lastPeriodIdx); decodedUri.pathname `${pathWithoutFormat}.${format}`; return decodedUri.toString(); }, addVideoSources (uri) { if (!uri) return ; const VIDEO_VARIANTS { format: webm, codec: vp9, htmlCodecs: ;codecsvp9 }, { format: mp4, codec: h265, htmlCodecs: ;codecshvc1 }, { format: mp4, codec: h264, htmlCodecs: } ; const VIDEO_EXT_REGEXP /\.(?:3gp|mpeg|mp4|m4v|m4p|ogv|ogg|mov|webm)$/; if (!uri.includes(res.cloudinary.com)) // keep existing or no extension for non Cloudinary urls return `source data-src${uri}>`; const uriNoExt uri.replace(VIDEO_EXT_REGEXP, ); const sources VIDEO_VARIANTS.map((type)>{ const cloudinaryFormatUrl `${uriNoExt.replace(/f_auto(?::video)?/, `f_${type.format},vc_${type.codec}`)}.${type.format}`; return `source data-src${cloudinaryFormatUrl} typevideo/${type.format}${type.htmlCodecs}>`; }); return sources.join(\n); }, cloudinaryVideoFirstFrame: $0ce6edea77f7b81a$exports.getVideoFirstFrame, initials (text, options) { if (!text) return ; if (options?.hash?.endChar) // eslint-disable-next-line text text.split(options.hash.endChar)0; // eslint-disable-next-line const maxChars +options?.hash?.maxChars || 2; // we do not allow this to be 0 let result text.match(/\b\w/g)?.slice(0, maxChars); if (!result) return ; if (options?.hash?.addText) result result.map((item)>item + options.hash.addText); return result.join(options?.hash?.joinWith || ).toUpperCase(); } };}$53de3c160faf5a81$exports $53de3c160faf5a81$var$handlebarsHelpersFactory;/* global window, document */ // eslint-disable-next-line import/prefer-default-exportclass $dc851cf3939b6ef5$export$ff0712c26d5458f7 { /** * Initialize Modal Controller * @param {Object} options */ constructor(options){ this.isBuilder false; this.companyId null; this.websiteId null; this.pageId null; this.shareId null; this.pageMeta null; this.websiteApiGatewayUrl null; this.buyerSellerServiceUrl null; this.leadIngesterUrl null; this.divolteServiceUrl null; this.eventBus null; this.templateId null; this.myhomeDashboardEnabled false; this.recaptcha { // Extend for future recaptcha settings enabled: false, recaptchaSiteId: }; this.googleMapsAPIKey null; } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() {} /** * Set page and supporting data * @param {string} pageId * @param {Object} options */ setPage(pageId, options {}) { this.pageId pageId; this.shareId options.shareId || null; this.pageMeta { sourceResource: options.sourceResource, pageElementId: options.pageElementId, pageQueryVariables: options.pageQueryVariables || {} }; } /** * Sets if we are in pagebuilder context or not * @param {boolean} isBuilder */ setIsBuilder(isBuilder) { this.isBuilder isBuilder; } /** * Set Company and supporting data * @param {string} companyId * @param {Object} options */ setCompany(companyId, options {}) { this.companyId companyId; } /** * Set website and supporting data * @param {string} websiteId * @param {Object} options */ setWebsite(websiteId, options {}) { this.websiteId websiteId; if (options.recaptchaSiteId) this.recaptcha { enabled: true, recaptchaSiteId: options.recaptchaSiteId }; if (options.myhomeDashboardEnabled) this.myhomeDashboardEnabled options.myhomeDashboardEnabled; } /** * Set websiteApiGatewayUrl * @param {string} websiteApiGatewayUrl * @param {Object} options */ setWebsiteApiGatewayUrl(websiteApiGatewayUrl, options {}) { this.websiteApiGatewayUrl websiteApiGatewayUrl; } /** * Set buyerSellerServiceUrl * @param {string} buyerSellerServiceUrl * @param {Object} options */ setBuyerSellerServiceUrl(buyerSellerServiceUrl, options {}) { this.buyerSellerServiceUrl buyerSellerServiceUrl; } /** * Set divolteServiceUrl and supporting data * @param {string} divolteServiceUrl * @param {Object} options */ setDivolteServiceUrl(divolteServiceUrl, options {}) { this.divolteServiceUrl divolteServiceUrl; } /** * Set eventBusUrl * @param {string} eventBusUrl * @param {Object} options */ setEventBusUrl(eventBusUrl, options {}) { this.eventBusUrl eventBusUrl; } /** * Set templateId and supporting data * @param {string} templateId * @param {Object} options */ setTemplateId(templateId, options {}) { this.templateId templateId; } /** * Set leadIngesterUrl * @param {string} leadIngesterUrl * @param {Object} options */ setLeadIngesterUrl(leadIngesterUrl, options {}) { this.leadIngesterUrl leadIngesterUrl; } /** * Set googleMapsAPIKey * @param {string} googleMapsAPIKey * @param {Object} options */ setGoogleMapsAPIKey(googleMapsAPIKey, options {}) { this.googleMapsAPIKey googleMapsAPIKey; } /** * Set eventBus * @param {Object} options */ setEventBus({ enabled: enabled, apiKey: apiKey, url: url }) { this.eventBus { enabled: enabled, apiKey: apiKey, url: url }; }}/* eslint-disable import/prefer-default-export */ // eslint-disable-next-line import/prefer-default-exportclass $7c391e2f7931d60d$export$3b5bd9381a52554c { /** * Initialize Base Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ // TODO: Listen for events from configController to update configuration this.config config; this.window window; this.document document; if (!this.destroy) // With turbolinks, we want to ensure that on each page load we have the latest version of the sdk // Controllers are deconstructed and replaced (on the window object) per request // Controllers must use the destory method to remove event handlers to prevent undefined behavior throw new Error(Controllers must implement a deconstructor); }}// eslint-disable-next-line import/prefer-default-exportconst $a3e97e89bbc2a366$export$f037eeffb5561205 2000;class $0ead03fdb95fa9ce$export$d507f25e63650365 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Modal Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.setLoginState this.setLoginState.bind(this); this.pageId null; this.modals ; this.exitModalTriggered {}; this.exitModalEventListeners ; } /** * Initialize Modal Controller at run time * Attach handlers and events to DOM * @param {Object} options */ initialize(options) { try { const { config: config, document: document } this; this.pageId config.pageId; this.modals document.querySelectorAll(body > #modals > .modal); options.modals.forEach((m)>{ this._attachModalHandler(m); }); } catch (e) { // eslint-disable-next-line no-console console.log(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { const { document: document } this; this.exitModalEventListeners.forEach((listener)>{ document.removeEventListener(mouseout, listener); }); this.modals ; this.exitModalTriggered {}; this.exitModalEventListeners ; } /** * Set modal to local storage with expiration * @param {string} modalId */ setModalWithExpiry(modalId) { const { window: window } this; const TTL 86400000; // 24 hours const now new Date(); const expiry now.getTime() + TTL; const key `modal-controller-${modalId}`; try { window.localStorage.setItem(key, JSON.stringify(expiry)); } catch (err) { // catch error when setting item to storage on iOS private browser } } /** * Save success login modal to local storage */ setLoginState() { const { window: window } this; try { window.localStorage.setItem(isSignedUp, true); } catch (err) { // catch error when setting item to storage on iOS private browser } } /** * Get modal and check expiration * @param {string} modalId * @return {boolean} */ getModalWithExpiry(modalId) { const { window: window } this; const storage window.localStorage; const expirationTime storage.getItem(`modal-controller-${modalId}`); if (!expirationTime) return false; const expiry JSON.parse(expirationTime); const now new Date(); if (now.getTime() > expiry) { storage.removeItem(`modal-controller-${modalId}`); return false; } return true; } /** * Make a modal visible * @param {string} modalId * @param {Object} options */ show(modalId, options {}) { // TODO: migrate logic from page.handlebars const { window: window } this; const modalViewed this.getModalWithExpiry(modalId); // Only show a modal if it has not been seen // Does not affect show modal on button click if (modalId && !modalViewed || options.forced true) { window.lpUI.showModal(`modal-${modalId}`, options); this.setModalWithExpiry(modalId); } } /** * Attach events based on Modal type and page settings * @param {Modal} modal */ _attachModalHandler(modal) { const { pageId: pageId } this; const { trigger: trigger, pageSpecific: pageSpecific } modal; if (pageSpecific) { const pageIds modal.pages.map((p)>p.pageId); if (!pageIds.includes(pageId)) // Modal does not belong to this page return; } if (trigger EXIT) this._exitModalHandler(modal); else if (trigger TIMER) this._timerModalHandler(modal); else if (trigger FORCED) this._forcedModalHandler(modal); } /** * Attach events for exit Modals * @param {Modal} modal */ _exitModalHandler(modal) { // eslint-disable-next-line const that this; const { document: document, exitModalTriggered: exitModalTriggered } this; const { modalId: modalId } modal; /** * Handle the mouseout dom event * @param {Event} event */ function triggerExitModal(event) { if (exitModalTriggeredmodalId) return; if (!event.toElement && !event.relatedTarget) { that.show(modalId); exitModalTriggeredmodalId true; } } document.addEventListener(mouseout, triggerExitModal); this.exitModalEventListeners.push(triggerExitModal); } /** * Attach events for timer Modals * @param {Modal} modal */ _timerModalHandler(modal) { const { modalId: modalId, timerDelay: timerDelay } modal; setTimeout(()>{ this.show(modalId); }, timerDelay); } /** * Attach events for Forced Modals * @param {Modal} modal */ _forcedModalHandler(modal) { const { modalId: modalId } modal; const { window: window, document: document } this; const isLoggedIn window.localStorage.getItem(isSignedUp) true; if (!isLoggedIn) { // watch for event triggering success login const forcedModal document.querySelector(`#modal-${modalId}`); const contactForm forcedModal?.querySelector(form); const MODAL_CLOSE_DELAY contactForm?.dataset.delay || (0, $a3e97e89bbc2a366$export$f037eeffb5561205); // form submit autoclose is handled by contactForms controller contactForm.addEventListener(formsubmitted, ()>{ this.setLoginState(); }); window.addEventListener(oauthSuccess, ()>{ this.setLoginState(); contactForm.classList.add(success); setTimeout(()>{ window.lpUI.hideModal(`modal-${modalId}`); contactForm.reset(); contactForm.classList.remove(success); }, MODAL_CLOSE_DELAY); }); this.show(modalId, { forced: true }); } }}/* eslint-disable import/prefer-default-export */ /* global window */ /* eslint-disable import/prefer-default-export */ /** * Handle navigation push * @param {string} href * @param {boolean} _blank */ const $fc0a058ae42af628$export$95e8d77caafa3e06 (href, _blank false)>{ if (!href) return; if (_blank) { window.open(href); return; } window.location.assign(href);};const $fc0a058ae42af628$export$267a1435fe18b8d4 (obj, path, defValue)>{ if (!path) return undefined; const pathArray Array.isArray(path) ? path : path.match(/(^.\)+/g); const result pathArray.reduce((prevObj, key)>prevObj && prevObjkey, obj); return result undefined ? defValue : result;};class $d48f9f944810f613$export$ca3218b7861b9cb0 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Button Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this._boundClickHandler this._buttonClickHandler.bind(this); } /** * Initialize Button Controller at run time * Attach handlers and events to DOM * @param {Object} options */ initialize(options {}) { try { const { document: document } this; document.body.removeEventListener(click, this._boundClickHandler); document.body.addEventListener(click, this._boundClickHandler); } catch (e) { // eslint-disable-next-line no-console console.error(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { const { document: document } this; document.body.removeEventListener(click, this._boundClickHandler); } /** * Buttons click handler * @param {event} e */ _buttonClickHandler(e) { this._handleButtonClick(e).catch((e)>console.error(e)); } /** * Handle button click * We need special function to have easy way to detach listener * @param {Event} e */ async _handleButtonClick(e) { const { window: window, document: document } this; const button e.target.closest(button, a); if (!button) return; const type button.dataset.type || ; const href button.href || button.dataset.href || ; const target button.target || ; const { submit: submit } button.dataset; if (submit) { try { await this._handleSubmit(button); } catch (err) { // eslint-disable-next-line no-console console.error(err); } (0, $fc0a058ae42af628$export$95e8d77caafa3e06)(href, target _blank); } this._trackConversion(button); if (type VIDEO) { this._handleVideoButton(button); return; } if (type CONTACT_US) { this._handleContactUsButton(button); return; } if (type SUBSCRIBE) { // TODO: Extend for an overwritten subscribe window.lpUI.showModal(modal-global-subscribe); return; } if (type MY_ACCOUNT) { // TODO: Extend for an overwritten subscribe window.lpUI.showModal(modal-global-my-account); return; } if (type SHARE_POPUP) { // TODO: Extend for an overwritten subscribe const sharePopup button.querySelector(.share-popup); if (sharePopup) sharePopup.style.display flex; e.stopPropagation(); // this may not work in current delegate mode return; } // Custom modals if (type.substring(0, 6) MODAL_) { const modalId type.substring(6); window.lpUI.showModal(`modal-${modalId}`); return; } // MAILTO / TEL Event if (href?.startsWith(mailto:)) { const email href.substring(7); // TODO: Replace with SDK method document.sendGoogleAnalyticsEvent({ hitType: event, eventCategory: button, eventAction: click, eventLabel: Email, eventValue: email }); } else if (href?.startsWith(tel:)) { const phoneNumber href.substring(4); // TODO: Replace with SDK method document.sendGoogleAnalyticsEvent({ hitType: event, eventCategory: button, eventAction: click, eventLabel: Phone, eventValue: phoneNumber }); } } /** * Handle submit * @param {HTMLButtonElement|HTMLAnchorElement} button */ async _handleSubmit(button) { const form button.closest(form); const { window: window } this; if (form) return await window.luxuryPresence.contactForms.submitForm(form); return null; } _getVimeoSrc(link) { if (!link || !link.includes(vimeo.com) || link.length > 2000) return null; const matchResult link.match(/(?:(?:www\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:^/*)\/videos\/|)|player.vimeo.com\/video\/)(\d+)(?:(?:\?.*&*h|\/)+(\d,a-f+))?/); if (!matchResult) return null; const , vimeoId, vimeoHashParameter matchResult; let src `https://player.vimeo.com/video/${vimeoId}?`; if (vimeoHashParameter) src + `h${vimeoHashParameter}&`; src + autoplay1; return src; } /** * Handle type video click * @param {HTMLElement} button */ // eslint-disable-next-line sonarjs/cognitive-complexity _handleVideoButton(button) { const { document: document } this; const section button.closest(section); // Embed youtube/vimeo video url let { src: src } button.dataset; let youtubeId ; if (src && (src.includes(youtube.com) || src.includes(youtu.be)) && !src.includes(youtube.com/embed)) { // test link: https://regexr.com/3anm9 const youtubeRegex /(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\?(?:\S*?&?v))|youtu.be\/)(a-zA-Z0-9_-{6,11})/; const youtubeResult src.match(youtubeRegex); // eslint-disable-next-line if (youtubeResult) youtubeId youtubeResult1; } const vimeoSrc this._getVimeoSrc(src); if (youtubeId) src `https://youtube.com/embed/${youtubeId}?autoplay1&controls0`; else if (vimeoSrc) src vimeoSrc; if (!src || !section) return; const isVideoFile src.endsWith(.mp4) || src.endsWith(.webm) || src.includes(cloudinary.com); const modalHtml ` div idmodal-${section.id} classmodal visible> div classmodal-content> div classlightbox-video> div classvideo-player> div classembed-container> ${isVideoFile ? `video controls autoplay src${src}>/video>` : `iframe frameborder0 allowfullscreen1 allowaccelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture titleYouTube video player width100% height100% src${src}>/iframe>`} /div> /div> /div> /div> button classclose lp-close typebutton aria-labelclose modal>span classlp-close-icon aria-hiddentrue>/span>/button> /div> `; document.body.insertAdjacentHTML(beforeend, modalHtml); const modal document.getElementById(`modal-${section.id}`); const closeModal modal.querySelector(.close); closeModal.addEventListener(click, ()>{ modal.remove(); }); } /** * Handle type contact us click * @param {HTMLElement} button */ _handleContactUsButton(button) { const { window: window, document: document } this; // TODO: Extend for an overwritten contact us document.sendGoogleAnalyticsEvent({ hitType: event, eventCategory: button, eventAction: click, eventLabel: contact }); window.lpUI.showModal(modal-global-contact-us, { scrollLock: true }); } /** * Track conversion * @param {HTMLElement} button */ _trackConversion(button) { const { window: window, document: document } this; // Conversion Tracking Options const { gtagConversionId: gtagConversionId, gtagConversionLabel: gtagConversionLabel, fbEventName: fbEventName } button.dataset; if (gtagConversionId && gtagConversionLabel) { if (window.dataLayer && window.dataLayer.length) { const configured window.dataLayer.some((layer)>layer.length && layer0 config && layer1 gtagConversionId); if (!configured) document.sendGoogleTagManagerEvent(config, gtagConversionId); } const sentTo `${gtagConversionId}/${gtagConversionLabel}`; document.sendGoogleTagManagerEvent(event, conversion, { send_to: sentTo }); } if (window.fbq && fbEventName) window.fbq(track, fbEventName, {}); }}/* eslint-disable import/prefer-default-export */ class $68a2d4aa500c7a05$export$61ec8f2b6291ec31 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Validation Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.validatedForms ; } /** * Initialize Contact Form Controller at run time * Attach handlers and events to DOM * @param {Object} options */ initialize(options {}) { try { const { window: window, document: document } this; const { selector: selector } options; let validatedForms ; if (selector) validatedForms document.querySelectorAll(`${selector} formdata-typecontact-form`); else validatedForms document.querySelectorAll(formdata-typecontact-form); const isPhoneValidationLibRequired !!document.querySelectorAll(inputtypetel).length; // we are loading the phone validation lib from the globally defined list of libs if (isPhoneValidationLibRequired && !window.libphonenumber && window?.luxuryPresence?.libs) { const { loadJs: loadJs, jsLibsMap: jsLibsMap } window.luxuryPresence.libs; const { libphonenumber: libphonenumber } jsLibsMap; loadJs(libphonenumber.jsSrc, this.attachValidation.bind(this, validatedForms)); } else this.attachValidation(validatedForms); this.validatedForms this.validatedForms.concat(validatedForms); } catch (e) { // eslint-disable-next-line no-console console.log(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { this.validatedForms ; } /** * Validate all forms in the document * @param {NodeListOfHTMLFormElement>} forms */ attachValidation(forms) { forms.forEach((form)>{ const inputs form.querySelectorAll(input, select, textarea); inputs.forEach((input)>{ this.applyFieldValidation(input); }); }); } /** * Field Validation Handler from global context * @param {HTMLInputElement|HTMLTextAreaElement|HTMLSelectElement} inputField */ applyFieldValidation(inputField) { const fieldType inputField.getAttribute(type); if (fieldType tel) this._applyPhoneValidation(inputField); } /** * Phone Field Validation Handler * @param {HTMLInputElement} inputField */ _applyPhoneValidation(inputField) { const { window: window } this; if (window.libphonenumber) { // https://codepen.io/coinscope/pen/BaXBvBp?editors1010 const phoneUtil window.libphonenumber.isValidPhoneNumber; inputField.addEventListener(keyup, function() { if (this.hasAttribute(required) || this.value.replace(/\s/g, ).length) try { const phoneNumber this.value; const region US; const isValidNumber phoneUtil(phoneNumber, region); if (!isValidNumber) this.setCustomValidity(Please enter a valid phone number.); else this.setCustomValidity(); } catch (e) { this.setCustomValidity(Please enter a valid phone number.); } else this.setCustomValidity(); }); } }}const $2aefad83322125c9$var$homeValuationRoute /api/v1/home-valuation;class $2aefad83322125c9$export$2e2bcd8739ae039 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { destroy() { // } /** * Clean address string by removing call time frame suffix and extra whitespace * * Handles 17 templates that append , call time frame: value to the address: * - TheTrailblazerSir_2, TheMasterpiece (2x), TheInspirationSir_1, TheIconSir_3 * - Influencer, GlobalCollective, Evolution, CorcoranAgent_1 * - CompassSE (2x), CompassPrestige (2x), CompassNavigator * - ColdwellBanker (2x), Classic * * @param {string} address - Raw address string that may contain time frame info * @return {string} - Cleaned address string */ _cleanAddressString(address) { if (!address || typeof address ! string) return ; let cleaned address.trim(); // Fix 1: Handle User entered address:\n... pattern from TheProducer templates // Extract only the user entered address, ignore geocoded part if (cleaned.includes(User entered address:)) { const match cleaned.match(/User entered address:\s*\n?\s*(^\n+)/); if (match && match1) cleaned match1.trim(); } // Fix 2: Remove , call time frame: ... suffix if present (affects 17 templates) const timeFrameIndex cleaned.indexOf(, call time frame:); if (timeFrameIndex ! -1) cleaned cleaned.substring(0, timeFrameIndex).trim(); return cleaned; } /** * Transform Google Maps address components to structured format * @param {Array} addressComponents - Google Maps address components * @return {Object} - Structured address object */ _transformAddressComponents(addressComponents) { const get (t)>(addressComponents.find((c)>c.componentType t) || {}).componentName?.text; const structuredAddress {}; const streetNumber get(street_number); const streetName get(route); const state get(administrative_area_level_1); const zipcode get(postal_code); const addressLine2 get(subpremise); // explicit precedence for city const city get(locality) || get(sublocality_level_1) || get(neighborhood); if (streetNumber) structuredAddress.streetNumber streetNumber; if (streetName) structuredAddress.streetName streetName; if (city) structuredAddress.city city; if (state) structuredAddress.state state; if (zipcode) structuredAddress.zipcode zipcode; if (addressLine2) structuredAddress.addressLine2 addressLine2; return structuredAddress; } /** * Extract address and coordinates from Google Maps validation data * @param {Object} validatedAddressData - Google Maps validation result * @return {Object} - Object containing structuredAddress and coordinates */ _extractAddressAndCoordinates(validatedAddressData) { let structuredAddress null; let coordinates null; if (validatedAddressData?.result) { const { result: result } validatedAddressData; // Extract structured address components if (result.address?.addressComponents) structuredAddress this._transformAddressComponents(result.address.addressComponents); // Extract coordinates if (result.geocode?.location) coordinates { latitude: result.geocode.location.latitude, longitude: result.geocode.location.longitude }; } return { structuredAddress: structuredAddress, coordinates: coordinates }; } /** * Filter out empty string values from an object, keeping only non-empty values * @param {Object} obj - Object to filter * @return {Object} - Filtered object without empty strings */ _filterEmptyStrings(obj) { const filtered {}; for (const key, value of Object.entries(obj))if (value ! && value ! null && value ! undefined) filteredkey value; return filtered; } /** * Extract raw address from form data with priority fallback chain. * Order is critical to handle 38 home valuation templates with different field naming: * * IMPORTANT: contactForms.js (line 189) stores namemessage in comments_attributes0.text * because message is in DEFAULT_LEAD_FIELDS. Fields NOT in DEFAULT_LEAD_FIELDS go to content. * * Priority (most specific → most generic): * 1. address - Pattern 1: 9 templates (explicit address, stored in content) * 2. property-address - Pattern 3: 4 templates (dash variant with JS, stored in content) * 3. property_address - Pattern 4: 3 templates (underscore, stored in content - handles VanguardProperties!) * 4. Property_Address - Pattern 5: 1 template (capital P - TheProducer/HomeValuationRansomHouse, stored in content) * 5. comments_attributes0.text - Pattern 2: ALL 17 templates with namemessage store HERE! * (e.g., Evolution/HomeValuation, TheProducer/HomeValuation, etc.) * 6. message - Pattern 6: 4 templates with JS-populated message (rare, checked last) * 7-8. homeValuationAddress, propertyAddress - Legacy/unknown formats * * Critical: Each field is cleaned BEFORE checking, so dropdown values are skipped and we try next field * * @param {Object} data - Form data * @return {string} - Raw address string (may contain trailing text like , call time frame: ...) */ _getRawAddress(data) { const content data.activity.content || {}; const comments data.activity.comments_attributes?.0?.text; const possibleFields content.address, contentproperty-address, content.property_address, content.Property_Address, comments, content.message, content.homeValuationAddress, content.propertyAddress ; return possibleFields.map((field)>field && this._cleanAddressString(field)).find(Boolean) || ; } /** * Build formatted address string from structured address components * @param {Object} structuredAddress - Structured address object * @return {string} - Formatted address string */ _formatStructuredAddress(structuredAddress) { if (!structuredAddress || Object.keys(structuredAddress).length 0) return ; const parts ; // Line 1: streetNumber streetName addressLine2 const line1 structuredAddress.streetNumber, structuredAddress.streetName, structuredAddress.addressLine2 .filter(Boolean).join( ); parts.push(line1); // Line 2: city, state zipcode const cityState structuredAddress.city, structuredAddress.state .filter(Boolean).join(, ); const line2 cityState, structuredAddress.zipcode .filter(Boolean).join( ); parts.push(line2); return parts.filter(Boolean).join(, ); } /** * Build home valuation data object * @param {Object} data - Form data * @param {string} homeValuationEstimate - Home valuation estimate * @param {Object} structuredAddress - Structured address object * @param {Object} coordinates - Coordinates object * @return {Object} - Home valuation data object */ _buildHomeValuationData(data, homeValuationEstimate, structuredAddress, coordinates) { // Build homeValuationAddress from structured address (validated by Google) if available // Format: streetNumber streetName, city, state zipcode, addressLine2 const homeValuationAddress this._formatStructuredAddress(structuredAddress) || this._getRawAddress(data); // Validate that we have an address before proceeding if (!homeValuationAddress) throw new Error(Unable to extract home valuation address from form data); // Required fields that must always be included const requiredFields { companyId: data.companyId, homeValuationAddress: homeValuationAddress, homeValuationEstimate: homeValuationEstimate ? new Intl.NumberFormat(en-US, { style: currency, currency: USD, maximumFractionDigits: 0, minimumFractionDigits: 0 }).format(homeValuationEstimate) : null, websiteId: data.page.websiteId, sourceUrl: data.activity.source_url }; // Optional fields that will be filtered if empty const optionalFields { leadEmailAddress: data.activity.author_email, leadFullName: data.activity.author_name, leadPhoneNumber: data.activity.author_phone, parcelId: data.activity.content?.parcelId, resourceId: data.page.pageMeta?.resourceId, pageId: data.page.pageId, sourceResource: data.page.pageMeta?.sourceResource, pageElementId: data.page.pageMeta?.pageElementId, formId: data.page.pageMeta?.formId, gRecaptchaResponse: data.g_recaptcha_response, gRecaptchaAction: data.g_recaptcha_action, utmSource: data.activity.content?.utm_source, utmMedium: data.activity.content?.utm_medium, utmCampaign: data.activity.content?.utm_campaign, utmTerm: data.activity.content?.utm_term, utmContent: data.activity.content?.utm_content, utmId: data.activity.content?.utm_id, timeToSell: data.activity.content?.timeToSell, lookingToBuy: data.activity.content?.lookingToBuy, referrer: data.referrer, content: data.activity.content || {}, fields: data.fields || {} }; // Filter out empty strings from optional fields const filteredOptionalFields this._filterEmptyStrings(optionalFields); return { ...requiredFields, ...filteredOptionalFields, // Add structured address and coordinates if they exist ...structuredAddress && { address: structuredAddress }, ...coordinates && { coordinates: coordinates } }; } /** * Submit home valuation request with Google Maps validation * @param {Object} data * @return {PromiseObject>} */ async _submitHomeValuationRequest(data) { const { config: config } this; // Use websiteApiGatewayUrl from config if (!config.websiteApiGatewayUrl) throw new Error(websiteApiGatewayUrl not configured for home valuation); // Extract and clean address for Google Maps validation // _getRawAddress() handles priority extraction and cleaning from 38 templates (see method for details) let validatedAddressData null; const rawAddress this._getRawAddress(data); if (!rawAddress) // eslint-disable-next-line no-console console.error(Home valuation: No address found in form data); if (rawAddress) try { validatedAddressData await this._validateAddressWithGoogleMaps(rawAddress); } catch (error) { // eslint-disable-next-line no-console console.error(Error validating address with Google Maps:, error); } // Get home valuation estimate first const homeValuationEstimate await this._getHomeValuationEstimate(validatedAddressData); // Extract structured address and coordinates from Google Maps validation const { structuredAddress: structuredAddress, coordinates: coordinates } this._extractAddressAndCoordinates(validatedAddressData); const leadRoute `${config.websiteApiGatewayUrl}${$2aefad83322125c9$var$homeValuationRoute}`; const homeValuationData this._buildHomeValuationData(data, homeValuationEstimate, structuredAddress, coordinates); const controller new AbortController(); const timeoutId setTimeout(()>controller.abort(), 10000); return fetch(leadRoute, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(homeValuationData), signal: controller.signal }).then(async (response)>{ clearTimeout(timeoutId); const text await response.text(); let payload; try { payload text ? JSON.parse(text) : {}; } catch { payload { raw: text }; } if (!response.ok) throw payload && typeof payload object && Object.keys(payload).length ? payload : { message: Request failed, status: response.status }; if (payload && payload.status success && payload.redirectUrl) { this.window.location.href payload.redirectUrl; return { redirected: true, url: payload.redirectUrl }; } return payload; }).catch((error)>{ clearTimeout(timeoutId); throw error; }); } /** * Validate address using Google Maps Address Validation API * @param {string} addressStr - The address string to validate * @returns {PromiseObject|null>} - Validated address data or null if validation fails */ async _validateAddressWithGoogleMaps(addressStr) { const { config: config, window: window } this; // Ensure Google Maps API key is loaded let apiKey config.googleMapsAPIKey; if (!apiKey && window.luxuryPresence?.mapApiLoader) apiKey await window.luxuryPresence.mapApiLoader.getMapApiKey(); if (!apiKey) throw new Error(Google Maps API key not configured); try { const response await fetch(`https://addressvalidation.googleapis.com/v1:validateAddress?key${apiKey}`, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ address: { addressLines: addressStr }, enableUspsCass: false }) }); if (!response.ok) throw new Error(`Address validation failed: ${response.status}`); return await response.json(); } catch (error) { console.error(Error validating address with Google Maps:, error); throw error; } } /** * Check if structured address has all mandatory fields * @param {Object} structuredAddress - Structured address object * @return {boolean} */ _hasMandatoryAddressFields(structuredAddress) { return !!(structuredAddress.streetNumber && structuredAddress.streetName && structuredAddress.city && structuredAddress.state && structuredAddress.zipcode); } /** * Log missing mandatory address fields * @param {Object} structuredAddress - Structured address object */ _logMissingAddressFields(structuredAddress) { const missingFields ; if (!structuredAddress.streetNumber) missingFields.push(streetNumber); if (!structuredAddress.streetName) missingFields.push(streetName); if (!structuredAddress.city) missingFields.push(city); if (!structuredAddress.state) missingFields.push(state); if (!structuredAddress.zipcode) missingFields.push(zipcode); // eslint-disable-next-line no-console console.log(Home valuation estimate skipped - missing required fields:, missingFields.join(, ), Available fields:, Object.keys(structuredAddress).join(, )); } /** * Build query string from structured address * @param {Object} structuredAddress - Structured address object * @return {string} */ _buildAddressQueryString(structuredAddress) { return Object.entries(structuredAddress).map((key, value)>`${encodeURIComponent(key)}${encodeURIComponent(value)}`).join(&); } /** * GET home valuation estimate * @param {string} address * @param {Object} validatedAddressData - Google Maps validated address data * @return {Promisenumber|null>} */ async _getHomeValuationEstimate(validatedAddressData null) { const { config: config } this; if (!config.websiteApiGatewayUrl) throw new Error(websiteApiGatewayUrl not configured); const base `${config.websiteApiGatewayUrl}${$2aefad83322125c9$var$homeValuationRoute}`; // Check if we have validated address data if (!validatedAddressData?.result?.address?.addressComponents) return null; const structuredAddress this._transformAddressComponents(validatedAddressData.result.address.addressComponents); // Check if all mandatory fields exist if (!this._hasMandatoryAddressFields(structuredAddress)) { this._logMissingAddressFields(structuredAddress); return null; } // Build URL with query string const qs this._buildAddressQueryString(structuredAddress); const homeValURL `${base}?${qs}`; try { const controller new AbortController(); const timeoutId setTimeout(()>controller.abort(), 10000); const response await fetch(homeValURL, { headers: { Accept: application/json }, signal: controller.signal }); clearTimeout(timeoutId); const data await response.json(); return data?.valueDollars ?? null; } catch (error) { console.error(Error getting home valuation estimate:, error); return null; } }}const $e10bd00497be8876$export$97de66002300ed70 middleName;const $e10bd00497be8876$var$GRECAPTCHA_ACTION contact_form;// Default lead fieldsconst $e10bd00497be8876$var$DEFAULT_LEAD_FIELDS name, firstName, lastName, $e10bd00497be8876$export$97de66002300ed70, email, phone, phoneNumber, source, message, mlsId, sourceUrl;class $e10bd00497be8876$export$3c5380623cf51249 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Contact Form Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.forms ; this.homeValuationService new (0, $2aefad83322125c9$export$2e2bcd8739ae039)(config, window, document); } /** * Initialize Contact Form Controller at run time * Attach handlers and events to DOM * @param {Object} options */ initialize(options {}) { try { const { document: document } this; const { selector: selector } options; let forms ; if (selector) forms document.querySelectorAll(`${selector} formdata-typecontact-form`); else forms document.querySelectorAll(formdata-typecontact-form); forms.forEach((form)>{ this._attachSubmitHandler(form); // this._attachValidation(form); }); this.forms this.forms.concat(forms); } catch (e) { // eslint-disable-next-line no-console console.log(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { this.forms ; } /** * Handle submit from global context * @param {HTMLFormElement} form */ submitForm(form) { this._handleSubmit(null, form).catch((e)>console.error(e)); } /** * Attach submit event for form * @param {HTMLFormElement} contactForm */ _attachValidation(contactForm) { const { window: window } this; const inputs contactForm.querySelectorAll(input, select, textarea); inputs.forEach((input)>{ window.luxuryPresence.validation.applyFieldValidation(input); }); } /** * Attach submit event for form * @param {HTMLFormElement} contactForm */ _attachSubmitHandler(contactForm) { contactForm.addEventListener(submit, (e)>this._handleSubmit(e, contactForm)); } /** * Submit Contact Form Handler * @param {Event} e * @param {HTMLFormElement} contactForm * @return {PromiseObject>} */ async _handleSubmit(e, contactForm) { const { window: window, config: config } this; if (e) e.preventDefault(); if (contactForm.classList.contains(loading)) // Form already submitting return; contactForm.classList.add(loading); let recaptchaToken ; if (config.recaptcha.enabled) recaptchaToken await this._recaptchaToken(); const formData new FormData(contactForm); const values {}; const nameParts ; const nameKeyRegex /^name(?:-\d+)?$/; formData.forEach((value, key)>{ if (typeof value string) { const curr value.trim(); if (nameKeyRegex.test(key) && curr) nameParts.push(curr); const prev valueskey; valueskey prev ? `${prev} ${curr}` : curr; } else valueskey value; }); if (nameParts.length) values.name nameParts.join( ).trim(); else if (!values.name && values.firstName) { values.name values.firstName; if (values.lastName) values.name + ` ${values.lastName}`; } const fields this._getFields(contactForm); // pass all other form values in content const content Object.keys(values).filter((key)>!$e10bd00497be8876$var$DEFAULT_LEAD_FIELDS.includes(key)).reduce((result, key)>{ // eslint-disable-next-line resultkey valueskey; return result; }, {}); const { pageId: pageId, companyId: companyId, websiteId: websiteId, pageMeta: pageMeta } config; const utm window.localStorage.getItem(utm_vars) || {}; const referrer window.localStorage.getItem(referrer) || ; const formId this._getFormId(contactForm); const data { g_recaptcha_response: recaptchaToken, g_recaptcha_action: $e10bd00497be8876$var$GRECAPTCHA_ACTION, activity: { author_email: values.email, author_name: values.name, author_phone: values.phone || values.phoneNumber, activity_source: values.source || CONTACT_INQUIRY, comments_attributes: { text: values.message || undefined } , source_url: window.location.href, content: { ...content, ...JSON.parse(utm) } }, page: { pageId: pageId, companyId: companyId, websiteId: websiteId, pageMeta: { ...pageMeta, formId: formId } }, companyId: companyId, referrer: referrer, fields: fields }; // TODO: HoneyPot should still send request const robots values.middleName; if (robots) return; try { await this._submitLeadRequest(data); this._sendGAEvent(data); const closeDelay contactForm.dataset.delay || (0, $a3e97e89bbc2a366$export$f037eeffb5561205); contactForm.classList.remove(loading); contactForm.classList.add(success); // TODO: Review producer and classic to deprecate hide contactForm.querySelectorAll(.success).forEach((el)>el.classList.remove(hide)); contactForm.dispatchEvent(new Event(formsubmitted)); setTimeout(()>{ window.lpUI.hideClosestModal(contactForm); contactForm.reset(); window.lpUI.sideMenuHide(); contactForm.querySelectorAll(.success).forEach((el)>el.classList.add(hide)); contactForm.classList.remove(success); }, closeDelay); } catch (err) { // eslint-disable-next-line no-console console.log(err); contactForm.dispatchEvent(new Event(formsubmiterror)); contactForm.classList.remove(loading); contactForm.classList.add(error); } } /** * Get Recaptcha token for assessment * @param {Object} data * @return {Promisestring>} */ _recaptchaToken() { const { window: window, config: config } this; if (!config.recaptcha.recaptchaSiteId) { // eslint-disable-next-line no-console console.log(No recaptchaSiteId provided); return; } return new Promise((resolve, reject)>{ window.grecaptcha.enterprise.ready(()>{ window.grecaptcha.enterprise.execute(config.recaptcha.recaptchaSiteId, { action: $e10bd00497be8876$var$GRECAPTCHA_ACTION }).then((token)>resolve(token)).catch((e)>reject(e)); }); }); } /** * Alias anonymous user with canonical ID using event bus * Links the users anonymous browsing session to their canonical identity * @param {Object} data - Form submission data * @private */ _aliasUserWithEventBus(data) { try { // Check if event bus library and required methods are available if (!this.window.eventBusProvider?.alias || !this.window.eventBusProvider?.isIdentified || !this.window.eventBusProvider?.getDistinctId || !this.window.LuxuryPresenceEventBus?.generateUUIDv5FromCompanyEmail) return; // Event bus or required methods not available // Skip if user is already identified if (this.window.eventBusProvider.isIdentified()) { console.log(EventBus User already identified, skipping alias); return; } const email data.activity?.author_email; const { companyId: companyId } this.config; if (!email || !companyId) { console.warn(EventBus Missing required data for user alias); return; } // Get the anonymous distinct ID from PostHog const anonId this.window.eventBusProvider.getDistinctId(); if (!anonId) { console.warn(EventBus No anonymous ID available for alias); return; } // Generate deterministic canonical ID from company + email const canonicalId this.window.LuxuryPresenceEventBus.generateUUIDv5FromCompanyEmail(companyId, email); // Create alias linking anonymous ID to canonical ID this.window.eventBusProvider.alias({ anonId: anonId, canonicalId: canonicalId }); console.log(EventBus User aliased with canonical ID); } catch (error) { // Never block form submission due to analytics errors console.error(EventBus User alias failed:, error); } } /** * Send Lead Request * @param {Object} data * @return {PromiseObject>} */ async _submitLeadRequest(data) { const { config: config } this; // Alias user with event bus before submitting the lead this._aliasUserWithEventBus(data); if (config.myhomeDashboardEnabled && (data.activity?.activity_source HOME_VALUATION || data.activity?.activity_source HOME_VALUE)) return this.homeValuationService._submitHomeValuationRequest(data); const leadRoute `${config.leadIngesterUrl}/api/v1/leads`; return fetch(leadRoute, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(data) }).then((response)>{ if (!response.ok) return response.json().then((error)>{ throw error; }); return response.json(); }); } /** * Send GA event * @param {Object} data */ _sendGAEvent(data) { const { document: document } this; let event { hitType: event, eventCategory: button, eventAction: click }; switch(data.activity.activity_source){ case NEWSLETTER_SIGNUP: event.eventLabel Newsletter; document.sendGoogleTagManagerEvent(event, newsletter_signup); break; case HOME_SEARCH: event.eventLabel HomeSearch; document.sendGoogleTagManagerEvent(event, home_search); break; case HOME_VALUE: case HOME_VALUATION: event.eventLabel HomeValue; document.sendGoogleTagManagerEvent(event, home_valuation); break; case EBOOK: event.eventLabel Ebook; document.sendGoogleTagManagerEvent(event, ebook_download); break; case CONTACT_INQUIRY: default: // for contact forms, Marketing has requested that they see a page-view of thank-you as indication of success // Note that this will break if we have actual page with url of /thank-you event { hitType: pageview, page: /thank-you }; document.sendGoogleTagManagerEvent(event, contact_inquiry); break; } document.sendGoogleAnalyticsEvent(event); } /** * Gather fields / schema for form, used for display in CRM * @param {HTMLFormElement} form * @return {Object} */ _getFields(form) { const inputs form.querySelectorAll(input, select, textarea); const fields {}; inputs.forEach((input)>{ const { id: id, name: name, type: inputType } input; if (name $e10bd00497be8876$export$97de66002300ed70) // Honeypot continue return true; let label ; if (id) { const labelNode form.querySelector(`labelfor${id}`); if (labelNode) label labelNode.textContent.trim(); else if (input.placeholder) label input.placeholder.trim(); } fieldsname { label: label, type: input.tagName, inputType: input.tagName INPUT ? inputType : text }; }); return fields; } /** * Figure out relevant section or div ID for form * @param {HTMLFormElement} form * @return {string} */ _getFormId(form) { const SELECTORS sectionid^section-, footerid, .modalid^modal-; const parent form.closest(SELECTORS); return parent?.id ? this._cleanFormId(parent.id) : ; } /** * Remove prefix from formID * @param {string} formId * @return {string} */ _cleanFormId(formId) { const PREFIXES section-, modal- ; for (const prefix of PREFIXES){ if (formId.startsWith(prefix)) return formId.substring(prefix.length); } return formId; }}const $ea6901fdf47e0ec1$var$CALLBACK __googleMapsCallback;const $ea6901fdf47e0ec1$var$GOOGLE_MAPS_URL https://maps.googleapis.com/maps/api/js;const $ea6901fdf47e0ec1$export$76299006759be400 1024;class $ea6901fdf47e0ec1$export$3c19195edca3fa5c extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Button Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.retries 3; this.callbacks ; this.id `__googleMapsScriptId${Date.now()}`; this._apiKey ; this.reset(); } /** * Set the Google Maps api key * @param {string} apiKey */ set apiKey(apiKey) { this._apiKey apiKey; this.config.setGoogleMapsAPIKey(apiKey); } /** * Get the Google Maps api key * @return {string} */ get apiKey() { return this._apiKey; } /** * Reset the loader state. */ reset() { this.deleteScript(); this.done false; this.loading false; this.errors ; this.onerrorEvent null; } /** * Destroy */ destroy() { this.reset(); } /** * get map api Key * @return {Promisestring>} */ async getMapApiKey() { if (this.apiKey) return this.apiKey; try { const response await fetch(`${this._getBaseUrl()}/api/v1/map`); if (!response.ok) throw new Error(Failed to fetch API key); const code await response.text(); this.apiKey code; return this.apiKey; } catch (e) { // eslint-disable-next-line no-console console.error(e); return ; } } /** * CreateUrl returns the Google Maps JavaScript API script url . * @return {string} */ async createUrl() { let url $ea6901fdf47e0ec1$var$GOOGLE_MAPS_URL; url + `?callback${$ea6901fdf47e0ec1$var$CALLBACK}`; const apiKey await this.getMapApiKey(); if (apiKey) url + `&key${apiKey}`; url + `&librariesplaces`; return url; } /** * Set the script on document. */ async setScript() { if (this.document.getElementById(this.id)) { this.callback(); return; } const url await this.createUrl(); const script this.document.createElement(script); script.id this.id; script.type text/javascript; script.src url; script.onerror this.loadErrorCallback.bind(this); script.defer true; script.async true; this.document.head.appendChild(script); } /** * Function to be called if script tag fails * @param {Error} e */ loadErrorCallback(e) { this.errors.push(e); if (this.errors.length this.retries) { const delay this.errors.length * 2 ** this.errors.length; // eslint-disable-next-line no-console console.log(`Failed to load Google Maps script, retrying in ${delay} ms.`); setTimeout(()>{ this.deleteScript(); this.setScript().catch((e)>console.error(e)); }, delay); } else { this.onerrorEvent e; this.callback(); } } /** * Delete the script tag */ deleteScript() { const script this.document.getElementById(this.id); if (script) script.remove(); } /** * Load the Google Maps JavaScript API script and return a Promise. * @return {Promise} */ load() { return this.loadPromise(); } /** * Load the Google Maps JavaScript API script and return a Promise. * @return {Promise} */ loadPromise() { return new Promise((resolve, reject)>{ this.loadCallback((err)>{ if (!err) resolve(); else reject(err); }); }); } /** * Load the Google Maps JavaScript API script with a callback. * @param {FunctionEvent>} fn */ loadCallback(fn) { this.callbacks.push(fn); this.execute(); } /** * Sets the callback function that will be sent as part of the script URL. */ setCallback() { this.window.__googleMapsCallback this.callback.bind(this); } /** * Reset if failed */ resetIfRetryingFailed() { if (this.failed) this.reset(); } /** * This is the function that we set the callback parameter to. */ callback() { this.done true; this.loading false; this.callbacks.forEach((cb)>{ cb(this.onerrorEvent); }); this.callbacks ; } /** * Set the script a if needed; set the callback */ execute() { if (this.window.google && this.window.google.maps && this.window.google.maps.version) // Google Maps already loaded this.callback(); this.resetIfRetryingFailed(); if (this.done) this.callback(); else if (this.loading) ; else { this.loading true; this.setCallback(); this.setScript().catch((e)>console.error(e)); } } /** * get base url based on current config * @return {string} */ _getBaseUrl() { // Special handling for page builder since no wag available const { isBuilder: isBuilder, websiteApiGatewayUrl: websiteApiGatewayUrl } this.config; return isBuilder ? websiteApiGatewayUrl : ; } /** * Resize static map requests to the max 1024px while preserving aspect ratio * @param {number} width * @param {number} height * @return {{width, height}} */ resizeStaticMapDimensions(width, height) { if (width $ea6901fdf47e0ec1$export$76299006759be400 && height $ea6901fdf47e0ec1$export$76299006759be400) return { width: width, height: height }; // Size param ignored if dimensions exceed STATIC_MAP_MAX_DIM const ratio Math.min($ea6901fdf47e0ec1$export$76299006759be400 / width, $ea6901fdf47e0ec1$export$76299006759be400 / height); return { width: parseInt(width * ratio), height: parseInt(height * ratio) }; } /** * Convert theme to static api param object * @param {Object} theme * @return {Object} */ convertThemeToStaticApiUrl(theme) { // https://developers.google.com/maps/documentation/maps-static/style-reference // Google Maps Static API uses a special syntax for its urls based on the interactive map styles return theme.map((t)>{ const styles t.stylers.reduce((acc, s)>{ const visibility s.visibility ? `visibility:${s.visibility}` : ; const color s.color ? `color:${s.color.replace(#, 0x)}` : ; const lightness s.lightness ? `lightness:${s.lightness}` : ; return `${acc}|${visibility}${color}${lightness}`; }, ); const element t.elementType ? `|element:${t.elementType}` : ; return `feature:${t.featureType}${element}${styles}`; }); } /** * generate digital signature for url * @param {string} queryString to sign * @return {Promisestring>} digitally signed url */ async getMapApiSignedUrl(queryString) { try { const response await fetch(`${this._getBaseUrl()}/api/v1/map/signature?${queryString}`); if (!response.ok) throw new Error(Failed to fetch signed URL); const { url: url } await response.json(); return url; } catch (e) { // eslint-disable-next-line no-console console.error(e); return ; } } /** * Generate static map url * @param {number} lat * @param {number} lng * @param {number} zoom * @param {Object} theme * @param {number} srcWidth * @param {number} srcHeight * @return {string} */ generateStaticMapUrl(lat, lng, zoom, theme, srcWidth, srcHeight) { const baseUrl https://maps.googleapis.com/maps/api/staticmap; const { width: width, height: height } this.resizeStaticMapDimensions(srcWidth, srcHeight); const query { center: `${lat},${lng}`, zoom: zoom, scale: 2, size: `${width}x${height}`, key: this.apiKey }; if (theme) query.style this.convertThemeToStaticApiUrl(theme); const params new URLSearchParams(); Object.entries(query).forEach((key, value)>{ if (Array.isArray(value)) value.forEach((v)>params.append(key, v.toString())); else params.append(key, value.toString()); }); return `${baseUrl}?${params.toString()}`; } /** * Generate static map url with digital signature * @param {Object} { * srcWidth {number}, required * srcHeight {number}, required * theme {array}, * center: `${lat},${lng}`, required * zoom: number, required * markers: `${lat},${lng}`, * scale: number, * otherQueryParams... (these must match what is compatible with google maps static api query params) * } * @return {Promisestring>} digitally signed url */ async generateDigitallySignedStaticMapUrl({ srcWidth: srcWidth, srcHeight: srcHeight, theme: theme, ...query }) { const { width: width, height: height } this.resizeStaticMapDimensions(srcWidth, srcHeight); const queryParams { ...query, size: `${width}x${height}` }; if (theme) queryParams.style this.convertThemeToStaticApiUrl(theme); const params new URLSearchParams(); Object.entries(queryParams).forEach((key, value)>{ if (Array.isArray(value)) value.forEach((v)>params.append(key, v.toString())); else params.append(key, value.toString()); }); const queryString params.toString(); try { // fetch digitally signed url return await this.getMapApiSignedUrl(queryString); } catch (e) { console.error(e); return ; } }}/* eslint-disable import/prefer-default-export */ class $0a0ad49f13c0b8fd$export$ba9afeb75f20f616 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { // constructor is not needed as it is inherited from BaseController /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() {} /** * Places (re-places) a value into the query string under specified key * or removes it if new value is null or undefined * @param {string} key * @param {string|null|undefined|object|array} value * @param {string} url - defaults to window.location.href * @return {string} */ // eslint-disable-next-line sonarjs/cognitive-complexity updateQueryString(key, value, url) { // https://stackoverflow.com/questions/5999118/how-can-i-add-or-update-a-query-string-parameter if (!url) // eslint-disable-next-line url this.window.location.href; let re new RegExp(`(?&)${key}.*?(&|#|$)`, i); let replacement ; if (typeof value ! undefined && value ! null) { if (Array.isArray(value)) { if (value.length) replacement this.serializeArray(key, value); } else if (typeof value object) { re new RegExp(`(?&)${key}\\^*\\.*?(&|#|$)`, i); replacement this.serializeObj(value, , key); } else replacement `${key}${encodeURIComponent(value)}`; } const hash url.split(#); let result hash0; if (re.test(url)) { let clean result; replacement replacement ? `$1${replacement}$2` : $1; while(re.test(clean)){ result clean.replace(re, replacement); clean clean.replace(re, $1); } result result.replace(/(&|\?)$/, ); } else if (replacement) { const separator result.indexOf(?) ! -1 ? & : ?; result + `${separator}${replacement}`; } if (typeof hash1 ! undefined && hash1 ! null) result + `#${hash1}`; return result; } /** * Returns variable from query string specified by parameter name * @param {string} name * @param {string} url defaults to window.location.href * @return {string|null} */ getParameterByName(name, url) { if (!url) // eslint-disable-next-line url this.window.location.href; // eslint-disable-next-line name name.replace(/\/g, \\$&); const regex new RegExp(`?&${name}((^*)|&|#|$)`); let results Array.from(RegExp.prototypeSymbol.matchAll.call(regex, url)).flat(); // check for object like syntax where the last value can be an array eg. advancedFiltersquerystatusIdsin0 or advancedFiltersquerycity if (!results.length) { const objRegex new RegExp(`?&${name}(\\.*?\\)(.*?)(?&|#|$)`, g); results Array.from(RegExp.prototypeSymbol.matchAll.call(objRegex, url)).flat(); return this._parseParamToObject(results, name advancedFilters); } // For multiple param values, eg arrays /* Results from regex match all come in this form: &advancedFiltersquerystatusIdsinuuid-segundo-123, querystatusIdsin, uuid-segundo-123 So using every third value will be the actual value and the second value will be the path */ if (results.length > 3) return results.reduce((acc, value, index)>{ if ((index + 1) % 3 0) acc.push(decodeURIComponent(value.replace(/\+/g, ))); return acc; }, ); if (!results2) return ; return decodeURIComponent(results2.replace(/\+/g, )); } /** * Generates section specific key to store page number in the URL * @param {string} sectionDomId * @return {string} */ makePageKey(sectionDomId) { return sectionDomId.replace(section-, ).replace(/-/g, ); } /** * Generates specific key to store parameter in the URL * uses prevsiouly calculated baseKey for section specific parameters * @param {Object} formParam * @param {string} baseKey pre-calculated base for section specific parameters * @return {string} */ makeParamKey(formParam, baseKey) { return formParam.global ? formParam.urlKey : `${baseKey}-${formParam.urlKey}`; } /** * Gets a set of parameters from window query string * always returns value of page parameter if present * @param {Object} formConfig * @param {string} sectionDomId * @return {Object} */ deserializeParams(formConfig, sectionDomId) { const params {}; const urlPageKey this.makePageKey(sectionDomId); const page this.getParameterByName(urlPageKey); if (page) params.page parseInt(page); if (Array.isArray(formConfig)) formConfig.forEach((formParam)>{ const key this.makeParamKey(formParam, urlPageKey); let urlValue this.getParameterByName(key); if (formParam.type int) { urlValue parseInt(urlValue); // eslint-disable-next-line if (!isFinite(urlValue)) urlValue null; } else if (formParam.type bool || formParam.type boolean) urlValue // eslint-disable-next-line urlValue true ? true : urlValue false ? false : null; else if (formParam.type json) try { urlValue JSON.parse(urlValue); } catch (e) { // no need to do anything } paramsformParam.formKey || formParam.param urlValue; }); return params; } /** * Serializes set of parameters defined by formConfig into the URL * adding or replacing or removing required parameters * @param {Object} formConfig * @param {string} sectionDomId * @param {Object} params * @return {string} */ serializeParams(formConfig, sectionDomId, params) { let result this.window.location.href; const urlPageKey this.makePageKey(sectionDomId); result this.updateQueryString(urlPageKey, params.page, result); if (Array.isArray(formConfig)) formConfig.forEach((formParam)>{ const key this.makeParamKey(formParam, urlPageKey); let value paramsformParam.formKey || formParam.param; if (formParam.type json && value ! null && typeof value ! undefined) value JSON.stringify(value); result this.updateQueryString(key, value, result); }); return result; } /** * Formats small number for slider values * @param {number} value * @param {string} currency * @return {string} */ formatSliderAtom(value, currency ) { const formattedValue Number.isInteger(value) ? value : value.toFixed(2); return currency + formattedValue; } /** * Formats a number for slider values * @param {number} value * @param {string} currency * @param {string} delimiter * @return {string} */ formatSliderValue(value, currency , delimiter ) { if (value 1000) return this.formatSliderAtom(value, currency); if (value 1000000) return `${this.formatSliderAtom(value / 1000, currency)}${delimiter}K`; return `${this.formatSliderAtom(value / 1000000, currency)}${delimiter}M`; } /** * Format price slider range * @param {number} value * @param {Object} range * @param {string} currency * @param {Object} options * @return {string} */ formatSliderPriceRange(value, range, currency, options) { if (range.min value && value ! 0) return `${options.lowPrefix}${this.formatSliderValue(value, currency, )}`; if (range.max value) return `${this.formatSliderValue(value, currency, )}${options.highSuffix}`; return `${this.formatSliderValue(value, currency, )}`; } /** * Format area slider range * @param {number} value * @param {Object} range * @param {string} suffix * @param {Object} options * @return {string} */ formatSliderAreaRange(value, range, suffix, options) { if (range.min value && value ! 0) return `${options.lowPrefix}${this.formatSliderValue(value)} ${suffix}`; if (range.max value) return `${this.formatSliderValue(value)}${options.highSuffix} ${suffix}`; return `${this.formatSliderValue(value)} ${suffix}`; } /** * Utility function to get properties search parameters from a set of jQuery objects * @param {Object} options * @param {jQuery|HTMLElement} options.queryElement * @param {jQuery|HTMLElement} options.priceSliderElement * @param {jQuery|HTMLElement} options.areaSliderElement * @param {jQuery|HTMLElement} options.neighborhoodSelect * @return {Object} */ // eslint-disable-next-line sonarjs/cognitive-complexity getSearchFormValues(options) { const { queryElement: queryElement, priceSliderElement: priceSliderElement, areaSliderElement: areaSliderElement, neighborhoodSelect: neighborhoodSelect } options; const result {}; if (queryElement) result.search queryElement.value || null; if (priceSliderElement) { const priceValues priceSliderElement.value.split(;); const priceMinLimit parseInt(priceSliderElement.dataset.min); const priceMaxLimit parseInt(priceSliderElement.dataset.max); const priceMin parseInt(priceValues0); const priceMax parseInt(priceValues1); result.priceMin priceMin ! priceMinLimit ? priceMin : null; result.priceMax priceMax ! priceMaxLimit ? priceMax : null; } if (areaSliderElement) { const areaValues areaSliderElement.value.split(;); const areaMinLimit parseInt(areaSliderElement.dataset.min); const areaMaxLimit parseInt(areaSliderElement.dataset.max); const areaMin parseInt(areaValues0); const areaMax parseInt(areaValues1); result.areaMin areaMin ! areaMinLimit ? areaMin : null; result.areaMax areaMax ! areaMaxLimit ? areaMax : null; } if (neighborhoodSelect) result.neighborhoodId neighborhoodSelect.value || null; return result; } /** * Add supports for object typeof values to be encoded on URL * Ref: https://stackoverflow.com/questions/1714786/query-string-encoding-of-a-javascript-object * @param {*} obj * @param {string} prefix * @param {string} baseParam used for grouping in case of nested objects * @returns */ // eslint-disable-next-line sonarjs/cognitive-complexity serializeObj(obj, prefix , baseParam ) { const result ; for(const prop in obj)if (obj.hasOwnProperty(prop)) { const value objprop; let k; if (baseParam) { const newPrefix prefix ? `${prefix}${prop}` : `${prop}`; k `${baseParam}${newPrefix}`; } else k prefix ? `${prefix}${prop}` : prop; if (value ! null && Array.isArray(value)) { if (value.length) result.push(this.serializeArray(k, value)); } else if (value ! null && typeof value object) result.push(this.serializeObj(value, k)); else result.push(`${k}${encodeURIComponent(value)}`); } return result.join(&); } /** * Adds support for array values to be encoded on URL * @param {string} key * @param {Array} value * @param {string} baseParam */ serializeArray(key, value, baseParam ) { const result ; value.forEach((val)>{ const paramName baseParam ? `${baseParam}${key}` : key; result.push(`${paramName}${encodeURIComponent(val)}`); }); return result.join(&); } /** * Private method to process string search values. * @param {Array} results comes from regex matchAll. * @param {Boolean} isAdvancedFilters flag to determine if the search is for advanced filters. * @returns */ _parseParamToObject(results, isAdvancedFilters false) { if (!results.length) return null; const obj {}; for(let i 0; i results.length; i++)/* Results from regex match all come in this form: &advancedFiltersquerystatusIdsinuuid-segundo-123, querystatusIdsin, uuid-segundo-123 So using every third value will be the actual value and the second value will be the path */ if ((i + 1) % 3 0) { const value decodeURIComponent(resultsi.replace(/\+/g, )); const path resultsi - 1; Object.assign(obj, this._setObjectPath(path, value, obj, isAdvancedFilters)); } return obj; } /** * * Private method to set object value given a path * @param {String} path * @param {*} value * @param {Object} baseObj * @param {Boolean} isAdvancedFilters flag to determine if the search is for advanced filters. */ _setObjectPath(path, value, baseObj, isAdvancedFilters false) { // eslint-disable-next-line const keys path.split(/\\/).filter(Boolean); const afArrayKeys in, nin, btw, ciin, cinin ; const obj {}; let ref obj; const valueExists (0, $fc0a058ae42af628$export$267a1435fe18b8d4)(baseObj, keys.join(.)); keys.forEach((key, index)>{ if (index keys.length - 1) { if (valueExists) refkey Array.isArray(valueExists) ? ...valueExists, value : valueExists, value ; else refkey isAdvancedFilters && afArrayKeys.includes(key) ? value : value; } else { refkey baseObjkey ? baseObjkey : {}; ref refkey; } }); return obj; }}/* eslint-disable import/prefer-default-export */ class $2b1790aa32f109d1$export$43e435c053a109f6 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Expand Slider Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this._createLightbox this._createLightbox.bind(this); this.expandSliders ; } /** * Initialize Expand Slider Controller at run time * Attach handlers and events to DOM * @param {Object} options */ initialize(options {}) { try { const { document: document } this; const expandSliders document.querySelectorAll(.has-mobile-expand); expandSliders.forEach((block)>{ this._addExpandButton(block); }); this.expandSliders this.expandSliders.concat(expandSliders); } catch (e) { // eslint-disable-next-line no-console console.log(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { const { document: document } this; document.querySelectorAll(.lp-expand-btn, .lp-expand-btn-wrapper).forEach((element)>element.remove()); this.expandSliders ; } /** * Create expand button for sliders * @param {HTMLElement} slider */ _addExpandButton(slider) { const { document: document } this; const section slider.closest(sectionid); const appendTargetSelector slider.dataset.append; let expandBtn section.querySelector(.lp-expand-btn); if (!expandBtn) { expandBtn document.createElement(button); expandBtn.className lp-expand-btn; expandBtn.setAttribute(aria-label, Open a lightbox); expandBtn.innerHTML `span classlp-i lp-i--expand-alt aria-hiddentrue>/span>`; if (appendTargetSelector) { const appendTarget section.querySelector(appendTargetSelector); if (appendTarget) appendTarget.appendChild(expandBtn); } else { const wrapper document.createElement(div); wrapper.className lp-expand-btn-wrapper; wrapper.style.position relative; wrapper.appendChild(expandBtn); slider.parentNode.insertBefore(wrapper, slider.nextSibling); } } expandBtn.addEventListener(click, ()>{ this._createLightbox({ slider: slider, section: section }); }); } /** * Creates a lightbox modal for displaying slider images in a larger view. * * @param {Object} params - The parameters for the function. * @param {HTMLElement} params.slider - The slider element containing images. * @param {HTMLElement} params.section - The section element related to the slider. */ _createLightbox({ slider: slider, section: section }) { const { window: window, document: document } this; const modalId `lightbox-for-${section?.id}`; const isSlickAvailable window.$ && window.$.fn.slick; const isSectionSlickInitialized isSlickAvailable && slider.slick; const isSplideAvailable typeof window.Splide function; const isSectionSplideInitialized slider.classList.contains(is-initialized) && slider.classList.contains(splide); if (typeof window.lpUI.requestScrollLock function) window.lpUI.requestScrollLock(modalId); else document.body.style.overflow hidden; function createSlickLightbox() { const slickOverlayOptions { arrows: true, dots: false, infinite: true, draggable: true, prevArrow: button typebutton classlp-lightbox-arrow--prev lp-lightbox-arrow aria-labelPrevious>/button>, nextArrow: button typebutton classlp-lightbox-arrow--next lp-lightbox-arrow aria-labelNext>/button> }; const modal document.createElement(div); modal.id modalId; modal.className lp-lightbox; modal.innerHTML ` button classlp-lightbox__close aria-labelclose modal>/button> div classlp-lightbox__content> div classlp-lightbox__carousel>/div> /div> `; document.body.appendChild(modal); const overlaySlider modal.querySelector(.lp-lightbox__carousel); modal.classList.add(show); let sourceImages; if (isSectionSlickInitialized) { sourceImages slider.slick.$slides.find(img); slickOverlayOptions.initialSlide slider.slick?.currentSlide || 0; sourceImages.each(function() { window.$(.lp-lightbox__carousel).append(window.$(this).clone(false).removeAttr(style).wrap(div classlp-lightbox__slide>/div>).parent()); }); } else { sourceImages slider.querySelectorAll(img); sourceImages.forEach((img)>{ const imgClone img.cloneNode(true); imgClone.removeAttribute(style); const slide document.createElement(div); slide.className lp-lightbox__slide; slide.appendChild(imgClone); overlaySlider.appendChild(slide); }); } window.$(overlaySlider).slick(slickOverlayOptions); modal.querySelector(.lp-lightbox__close).addEventListener(click, ()>{ modal.classList.remove(show); const currentSlide overlaySlider?.slick ? window.$(overlaySlider).slick(slickCurrentSlide) : 0; if (overlaySlider?.slick) window.$(overlaySlider).slick(unslick); if (isSectionSlickInitialized) window.$(slider).slick(slickGoTo, currentSlide); if (typeof window.lpUI.releaseScrollLock function) window.lpUI.releaseScrollLock(modalId); else document.body.style.overflow ; modal.remove(); }); } function createSplideLightbox() { const splideOptions { rewind: true, arrows: true, arrowPath: , type: loop, clones: 1, pagination: false, perPage: 1, perMove: 1 }; const modal document.createElement(div); modal.id modalId; modal.className lp-lightbox; modal.innerHTML ` button classlp-lightbox__close aria-labelclose modal>/button> div classlp-lightbox__content> div classlp-lightbox__carousel splide rolegroup aria-labelImage Gallery> div classsplide__arrows> button classsplide__arrow splide__arrow--prev lp-lightbox-arrow lp-lightbox-arrow--prev>/button> button classsplide__arrow splide__arrow--next lp-lightbox-arrow lp-lightbox-arrow--next>/button> /div> div classsplide__track> ul classsplide__list>/ul> /div> /div> /div> `; if (typeof window.lpUI.requestScrollLock function) window.lpUI.requestScrollLock(modalId); else document.body.style.overflow hidden; document.body.appendChild(modal); const overlaySlider modal.querySelector(.lp-lightbox__carousel); const overlaySliderList overlaySlider.querySelector(.splide__list); modal.classList.add(show); let sourceImages; if (isSectionSplideInitialized) sourceImages slider.querySelectorAll(.splide__slide:not(.splide__slide--clone) img); else sourceImages slider.querySelectorAll(img); sourceImages.forEach((img)>{ const imgClone img.cloneNode(true); imgClone.removeAttribute(style); const slide document.createElement(li); slide.className lp-lightbox__slide splide__slide; slide.appendChild(imgClone); overlaySliderList.appendChild(slide); }); const overlaySplide new window.Splide(overlaySlider, splideOptions); overlaySplide.mount(); modal.querySelector(.lp-lightbox__close).addEventListener(click, ()>{ modal.classList.remove(show); if (overlaySplide) overlaySplide.destroy(); if (typeof window.lpUI.releaseScrollLock function) window.lpUI.releaseScrollLock(modalId); else document.body.style.overflow ; modal.remove(); }); } if (isSlickAvailable && !isSectionSplideInitialized) createSlickLightbox(); else if (isSplideAvailable) createSplideLightbox(); else { window.luxuryPresence.libs.loadCss(window.luxuryPresence.libs.jsLibsMap.splide.cssSrc); window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.splide.jsSrc, ()>{ createSplideLightbox(); window.luxuryPresence.libs.jsLibsMap.splide.isLoaded true; }); } }}/* eslint-disable import/prefer-default-export */ class $4f184d9bd3037f15$export$7a6215890afba974 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { // constructor is not needed as it is inherited from BaseController /** * Destroy */ destroy() { if (!this.window.divolte) this.window.divolteLp function() { (this.window.divolteLp.q this.window.divolteLp.q || ).push(// eslint-disable-next-line prefer-rest-params arguments); }; } /** * Initialize divolte controller * @param {Object} options */ initialize(options {}) { const { divolteServiceUrl: divolteServiceUrl } this.config; if (!divolteServiceUrl || this.window.divolte) return; this.loadScript(); } /** * loads divolte */ loadScript() { const { divolteServiceUrl: divolteServiceUrl } this.config; const script this.document.createElement(script); script.id divolte-script; script.type text/javascript; script.defer true; script.async true; script.src `${divolteServiceUrl}/divolte.js`; this.document.head.appendChild(script); script.addEventListener(load, this.executeQueue.bind(this)); } /** * executeQueue */ executeQueue() { (this.window.divolteLp.q || ).forEach((methodName, params)>{ thismethodName(params); }); this.window.divolteLp this.divolteLp.bind(this); } /** * divolteLp * @param {string} name * @param {Object} params */ divolteLp(name, params) { try { thisname(params); } catch (error) { // eslint-disable-next-line no-console console.log(error); } } /** * sendLpEvent * @param {string} name * @param {Object} params */ sendLpEvent(name, params) { // Events must be defined in divolte schema! To ensure correct usage, event names are validated here. if (!name.includes(pageView)) { // Event not defined // eslint-disable-next-line no-console console.log(`${name} IS NOT SUPPORTED`); return; } const { companyId: companyId, templateId: templateId, websiteId: websiteId, pageId: pageId, shareId: shareId, pageMeta: pageMeta } this.config; const baseParams { companyId: companyId, templateId: templateId, websiteId: websiteId, pageId: pageId, shareId: shareId, pageMeta: pageMeta }; this.window.divolte.signal(name, Object.assign(baseParams, params)); } /** * sendLpPageView */ sendLpPageView() { this.sendLpEvent(pageView, {}); }}/* eslint-disable import/prefer-default-export */ const $102039871668a1df$var$EVENT_BUS_SCRIPT event-bus-js.js;const $102039871668a1df$var$EVENT_BUS_VERSION v2.1.0;class $102039871668a1df$export$e22e4b1be0bb6c61 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { // eslint-disable-next-line @typescript-eslint/no-useless-constructor constructor(config, window, document){ super(config, window, document); } /** * Initialize EventBus controller * @param {Object} options */ initialize(options {}) { const enabled options.enabled ! undefined ? options.enabled : this.config.eventBus?.enabled; if (enabled && this.config.eventBus?.apiKey && this.config.eventBus?.url) this.loadScript(); } /** * loads eventBus script */ loadScript() { const { eventBusUrl: eventBusUrl } this.config; const script this.document.createElement(script); script.id posthog-script; script.type text/javascript; script.defer true; script.async true; script.src `${eventBusUrl}/${$102039871668a1df$var$EVENT_BUS_VERSION}/${$102039871668a1df$var$EVENT_BUS_SCRIPT}`; this.document.head.appendChild(script); script.addEventListener(load, this.executeQueue.bind(this)); } /** * executeQueue - Process queued eventBusLp calls */ executeQueue() { // Initialize the event bus provider using the global EventBusJS if (this.window.LuxuryPresenceEventBus) this.window.eventBusProvider this.window.LuxuryPresenceEventBus.createEventBusProvider({ apiKey: this.config.eventBus.apiKey, url: this.config.eventBus.url }); (this.window.eventBusLp.q || ).forEach((methodName, params)>{ thismethodName(params); }); // Replace queue function with real function this.window.eventBusLp this.eventBusLp.bind(this); } /** * Destroy */ destroy() { if (!this.window.eventBusProvider) { // Reset to queue function if no provider exists this.window.eventBusLp function() { (this.window.eventBusLp.q this.window.eventBusLp.q || ).push(// eslint-disable-next-line prefer-rest-params arguments); }; return; } this.window.eventBusProvider.shutdown(); } /** * sendLpEvent * @param {string} eventType * @param {Object} data */ sendLpEvent(eventType, data) { // Events must be defined in event-bus schema! To ensure correct usage, event types are validated here. if (eventType ! user.activity.page.viewed) { // Event type not defined // eslint-disable-next-line no-console console.log(`${eventType} IS NOT SUPPORTED`); return; } if (!this.window.eventBusProvider) return; const { companyId: companyId } this.config; const eventData { company: companyId, data: {} }; try { this.window.eventBusProvider.capture(eventType, eventData); } catch (error) { // eslint-disable-next-line no-console console.log(EventBus capture error:, error); } } /** * eventBusLp * @param {string} name * @param {Object} params */ eventBusLp(name, params) { try { thisname(params); } catch (error) { // eslint-disable-next-line no-console console.log(error); } } /** * sendLpPageView */ sendLpPageView() { this.sendLpEvent(user.activity.page.viewed, {}); }}/* eslint-disable import/prefer-default-export */ const $0d25a3fa2e0f4f92$var$EVENT_NAME oauthSuccess;class $0d25a3fa2e0f4f92$export$b718a981691eae5c extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Button Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.successListeners ; this._listenToMessages this._listenToMessages.bind(this); this._listenToOneTapMessage this._listenToOneTapMessage.bind(this); } /** * Initialize OAuth Controller at run time * Swap out special buttons for the iframe * @param {Object} options */ initialize(options {}) { try { // handle google one tap if (options.googleSignOnEnabled && !options.iframe) this._renderGoogleOneTap(); // handle google sign in buttons this.document.querySelectorAll(divdata-signin-typegoogle-sign-in).forEach((el)>this._convertGoogleSignIn(el)); // handle facebook sign in buttons this.document.querySelectorAll(divdata-signin-typefacebook-sign-in).forEach((el)>this._convertFacebookSignIn(el)); } catch (e) { // eslint-disable-next-line no-console console.log(e); } } /** * Controllers must implement a destroy method to be called * after page navigation to remove event handlers / cleanup */ destroy() { this.successListeners.forEach((callback)>{ this.window.removeEventListener(message, this._listenToMessages); this.window.removeEventListener(message, this._listenToOneTapMessage); this.window.removeEventListener($0d25a3fa2e0f4f92$var$EVENT_NAME, this.windowcallback); }); } /** * Convert google one tap */ _renderGoogleOneTap() { if (!this._isGoogleOneTapOnCooldown()) { const dummyEl this.document.createElement(div); // eslint-disable-next-line no-undef google.accounts.id.initializeIntermediate({ src: this._buildUrlAndCopyAttributes(dummyEl, dummyEl, googleOneTap) }); this.window.localStorage.removeItem(googleOneTapExpiration); this.window.addEventListener(message, this._listenToOneTapMessage); } } /** * Listening for messages from BSS one tap iframes * @param {MessageEvent} e */ _listenToOneTapMessage(e) { const messageTypes { SHOW_INTERMEDIATE_IFRAME: show_intermediate_iframe, HIDE_INTERMEDIATE_IFRAME: hide_intermediate_iframe }; const iframeId onetap_google_intermediate_iframe; const { buyerSellerServiceUrl: buyerSellerServiceUrl } this.config; const { data: data, origin: origin } e; const { type: type, height: height, event: event, source: source, token: token } data; if (type messageTypes.SHOW_INTERMEDIATE_IFRAME || type messageTypes.HIDE_INTERMEDIATE_IFRAME) { const bssIframe this.document.getElementById(iframeId); if (bssIframe) { bssIframe.style.height height; bssIframe.style.display type messageTypes.SHOW_INTERMEDIATE_IFRAME ? unset : none; } } // these events are generated by our code in the bss iframe if (origin buyerSellerServiceUrl && source GOOGLE_SIGN_ON) { if (event success) { this._setExpirationLsItem(86400000); // 24 hours this._handleQualifyingQuestionsModal(token); } else if (event cancel) this._setExpirationLsItem(7200000); // 2 hours } } /** * Set expiration local storage item for google one tap * @param {number} ms */ _setExpirationLsItem(ms) { const expiration new Date().getTime() + ms; this.window.localStorage.setItem(googleOneTapExpiration, expiration); } /** * Check if google one tap is expired * @return {boolean} */ _isGoogleOneTapOnCooldown() { const expirationTime this.window.localStorage.getItem(googleOneTapExpiration); return Number(expirationTime) > new Date().getTime(); } /** * Convert google sign in buttons * @param {HTMLElement} el */ _convertGoogleSignIn(el) { this._replaceWithIframe(googleSignIn, el); } /** * Convert google sign in buttons * @param {HTMLElement} el */ _convertFacebookSignIn(el) { this._replaceWithIframe(facebookSignIn, el); } /** * Convert google sign in buttons * @param {googleSignIn | facebookSignIn} provider * @param {HTMLElement} el */ _replaceWithIframe(provider, el) { this._attachSuccessCallback(el); const iframe this.document.createElement(iframe); iframe.src this._buildUrlAndCopyAttributes(el, iframe, provider); iframe.dataset.isSocialOauthButton true; el.replaceWith(iframe); } /** * Listening for messages from BSS iframes * @param {Event} e */ _listenToMessages(e) { const { buyerSellerServiceUrl: buyerSellerServiceUrl } this.config; // eslint-disable-next-line sonarjs/no-collapsible-if if (e.origin buyerSellerServiceUrl) { if (e.data.event success) { const event new Event($0d25a3fa2e0f4f92$var$EVENT_NAME); this.window.dispatchEvent(event); this.successListeners.forEach((callback)>{ if (this.windowcallback) this.windowcallback(event); else // eslint-disable-next-line no-console console.error(`Callback function ${callback} not found on window object`); }); this.document.documentElement.classList.add(is-login-success); } } } /** * Attach callback to iframe * @param {HTMLElement} el */ _attachSuccessCallback(el) { this.window.addEventListener(message, this._listenToMessages); const callbackFunction el.dataset.onSuccessFunctionName; if (callbackFunction) this.successListeners.push(callbackFunction); } /** * Build Iframe URL * @param {HTMLElement} source * @param {HTMLElement} target * @param {string} provider * @return {string} */ _buildUrlAndCopyAttributes(source, target, provider) { const { buyerSellerServiceUrl: buyerSellerServiceUrl, companyId: companyId, websiteId: websiteId, pageId: pageId, pageMeta: pageMeta } this.config; const { location: location } this.window; const sourceUrl location.origin + location.pathname; const destination new URL(`${buyerSellerServiceUrl}/buttons/${provider}`); const utm this.window.localStorage.getItem(utm_vars); const referrer this.window.localStorage.getItem(referrer); destination.searchParams.append(companyId, companyId); destination.searchParams.append(websiteId, websiteId); destination.searchParams.append(pageId, pageId); destination.searchParams.append(sourceUrl, sourceUrl); destination.searchParams.append(pageMeta, JSON.stringify(pageMeta)); if (utm) destination.searchParams.append(utm, utm); if (referrer) destination.searchParams.append(referrer, referrer); // Google and Facebook Attributes used to style the social button const RESERVED_ATTRIBUTES data-size, data-width, data-text, data-button-type, data-shape, data-layout, data-max-rows, data-use-continue-as, data-type, data-theme, data-logo_alignment, data-locale ; Array.from(source.attributes).forEach((attribute)>{ if (RESERVED_ATTRIBUTES.includes(attribute.nodeName)) destination.searchParams.append(attribute.nodeName, attribute.nodeValue); else target.setAttribute(attribute.nodeName id ? data-id : attribute.nodeName, attribute.nodeValue); }); return destination.toString(); } /** * Decode a JWT token to extract payload information * @param {string} token - The JWT token to decode * @return {Object|null} The decoded payload object or null if decoding fails */ _decodeToken(token) { try { const parts token.split(.); const payload parts1; const base64 payload.replace(/-/g, +).replace(/_/g, /); const padding 4 - base64.length % 4; const padded padding 4 ? base64 : base64 + .repeat(padding); return JSON.parse(atob(padded)); } catch (error) { return null; } } /** * Handle qualifying questions modal showing for Google Sign On * Decodes the JWT token to extract user email and shows the modal if available * @param {string} token - The JWT token containing user information */ _handleQualifyingQuestionsModal(token) { if (token && this.window.luxuryPresence && this.window.luxuryPresence.qualifyingQuestionsModal) { // Decoding only for lead attribution, fine to skip signature verification const decoded this._decodeToken(token); if (decoded && decoded.email) this.window.luxuryPresence.qualifyingQuestionsModal.showModal(decoded.email, Google Sign On); } }}/* eslint-disable import/prefer-default-export */ class $dcf72769f009ff26$export$b900d6fe921fd49c extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { /** * Initialize Qualifying Questions Modal Controller at build time * @param { ConfigController } config * @param {Window} window * @param {Document} document */ constructor(config, window, document){ super(config, window, document); this.showModal this.showModal.bind(this); this.hasModalBeenSubmitted this.hasModalBeenSubmitted.bind(this); this.modalId qualifying-questions-modal; this.cookieKey qualifyingQuestionsModalSubmitted; this.qualifyingQuestionsModalEnabled true; // Store references for cleanup this.eventListeners ; this.timeouts ; } initialize(options {}) { this.qualifyingQuestionsModalEnabled options.qualifyingQuestionsModalEnabled ?? this.qualifyingQuestionsModalEnabled; if (!this.qualifyingQuestionsModalEnabled) return; this.attachModalCloseListeners(); } destroy() { // Remove all stored event listeners this.eventListeners.forEach(({ element: element, event: event, handler: handler })>{ if (element && element.removeEventListener) element.removeEventListener(event, handler); }); this.timeouts.forEach((timeoutId)>{ clearTimeout(timeoutId); }); this.restoreBodyScroll(); this.eventListeners ; this.timeouts ; } /** * Check if modal has been submitted using cookie-based deduplication * @return {boolean} */ hasModalBeenSubmitted() { const cookieValue this.getCookie(this.cookieKey); return cookieValue true; } /** * Set cookie to prevent modal from showing again */ setModalSubmittedCookie() { this.setCookie(this.cookieKey, true, 365); // 1 year } showModal(email, triggerSource) { if (!this.qualifyingQuestionsModalEnabled || this.hasModalBeenSubmitted()) return; this.updateEmailValue(email); this.updateTriggerSourceValue(triggerSource); this.showModalElement(); } /** * Get modal element with error handling * @return {Element|null} */ getModalElement() { const modal this.document.getElementById(this.modalId); if (!modal) console.error(Modal element not found:, this.modalId); return modal; } updateEmailValue(email) { const modal this.getModalElement(); if (!modal) return; const emailInput modal.querySelector(inputnameemail); if (emailInput && typeof email string) emailInput.value email; } updateTriggerSourceValue(triggerSource) { const modal this.getModalElement(); if (!modal) return; const triggerSourceInput modal.querySelector(`#${this.modalId}-triggerSource`); if (triggerSourceInput && typeof triggerSource string) triggerSourceInput.value triggerSource; } showModalElement() { const modal this.getModalElement(); if (!modal) return; modal.style.display flex; this.blockBodyScroll(); } /** * Helper method to get cookie value * @param {string} name * @return {string|null} */ getCookie(name) { const value `; ${this.document.cookie}`; const parts value.split(`; ${name}`); if (parts.length 2) return decodeURIComponent(parts.pop().split(;).shift()); return null; } /** * Helper method to set cookie * @param {string} name * @param {string} value * @param {number} days */ setCookie(name, value, days) { let expires ; if (days) { const date new Date(); date.setTime(date.getTime() + days * 86400000); expires `; expires${date.toUTCString()}`; } let attrs ; path/; SameSiteLax; if (this.window && this.window.location && this.window.location.protocol https:) attrs + ; Secure; this.document.cookie `${name}${encodeURIComponent(value || )}${expires}${attrs}`; } blockBodyScroll() { this._prevOverflow this.document.body.style.overflow; this.document.body.style.overflow hidden; } restoreBodyScroll() { this.document.body.style.overflow this._prevOverflow || ; this._prevOverflow null; } attachModalCloseListeners() { const modal this.getModalElement(); if (!modal) return; // Listen for form submission success (when modal closes automatically) const form this.document.getElementById(`${this.modalId}-form`); if (form) { const formSubmittedHandler ()>{ // Set cookie to prevent showing again and hide modal this.setModalSubmittedCookie(); const timeoutId setTimeout(()>{ modal.style.display none; this.restoreBodyScroll(); }, 100); this.timeouts.push(timeoutId); }; form.addEventListener(formsubmitted, formSubmittedHandler); this.eventListeners.push({ element: form, event: formsubmitted, handler: formSubmittedHandler }); } // Listen for close button clicks const closeButton modal.querySelector(data-dismissmodal); if (closeButton) { const closeButtonHandler ()>{ modal.style.display none; this.restoreBodyScroll(); }; closeButton.addEventListener(click, closeButtonHandler); this.eventListeners.push({ element: closeButton, event: click, handler: closeButtonHandler }); } // Listen for backdrop clicks const backdropClickHandler (e)>{ // Check if click is on the modal backdrop (not on the modal content) if (e.target modal || e.target.id this.modalId) { modal.style.display none; this.restoreBodyScroll(); } }; modal.addEventListener(click, backdropClickHandler); this.eventListeners.push({ element: modal, event: click, handler: backdropClickHandler }); }}/* eslint-disable import/prefer-default-export */ class $50eefeef8d1f2372$export$8a2bf06fbae4dde extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { constructor(configController, window, document){ super(configController, window, document); this.isValidating false; this.lastValidationResult null; this.lastValidationTime null; this.validationCacheDuration 300000; // 5 minutes } /** * Destroy */ destroy() { this.isValidating false; this.lastValidationResult null; this.lastValidationTime null; } /** * Validate user session using GraphQL validSession query * @param {Object} options - Options for session validation * @param {boolean} options.useCache - Whether to use cached validation result * @returns {Promiseboolean>} - true if session is valid, false otherwise */ async validateSession(options {}) { const { useCache: useCache true } options; if (useCache && this.lastValidationResult ! null && this.lastValidationTime) { const timeSinceLastValidation Date.now() - this.lastValidationTime; if (timeSinceLastValidation this.validationCacheDuration) return this.lastValidationResult; } if (this.isValidating) return this.lastValidationResult ! null ? this.lastValidationResult : false; this.isValidating true; const query ` query { validSession { success } } `; try { // query from same domain as the website const response await this.window.fetch(`/graphql`, { method: POST, headers: { Content-Type: application/json }, credentials: include, body: JSON.stringify({ query: query }) }); if (!response.ok) { // eslint-disable-next-line no-console console.error(SessionController: HTTP error during session validation, response.status); this.lastValidationResult false; this.lastValidationTime Date.now(); return false; } const data await response.json(); if (data.errors) { this.lastValidationResult false; this.lastValidationTime Date.now(); return false; } const isValid data.data?.validSession?.success true; this.lastValidationResult isValid; this.lastValidationTime Date.now(); return isValid; } catch (error) { // eslint-disable-next-line no-console console.error(SessionController: Error validating session, error); this.lastValidationResult false; this.lastValidationTime Date.now(); return false; } finally{ this.isValidating false; } } /** * Clear validation cache */ clearCache() { this.lastValidationResult null; this.lastValidationTime null; }}/* eslint-disable import/prefer-default-export */ class $6bb500f67d8e6b7b$export$19036f3e654d7262 extends (0, $7c391e2f7931d60d$export$3b5bd9381a52554c) { constructor(config, window, document){ super(config, window, document); this.consentListener null; } /** * Destroy and cleanup event listeners */ destroy() { if (this.consentListener) { this.document.removeEventListener(cookieyes_consent_update, this.consentListener); this.consentListener null; } } /** * Check if cookieyes-consent cookie includes analytics consent * @returns {boolean} True if analytics is consented to */ hasAnalyticsConsent() { const cookieString this.document.cookie; const match cookieString.match(/cookieyes-consent(^;+)/); if (!match) return false; try { const cookieValue decodeURIComponent(match1); try { const parsed JSON.parse(cookieValue); if (parsed.accepted && Array.isArray(parsed.accepted)) return parsed.accepted.includes(analytics); if (parsed.analytics true || parsed.analytics accepted) return true; } catch (jsonError) { // Ignore JSON parsing errors and try other formats } if (cookieValue.includes(,)) { const categories cookieValue.split(,).map((c)>c.trim()); return categories.includes(analytics); } return cookieValue.includes(analytics); } catch (error) { return false; } } /** * Load PostHog and Divolte scripts */ loadScript() { const shouldAddPostHogScript !this.document.getElementById(posthog-script); const shouldAddDivolteScript !this.document.getElementById(divolte-script); if (shouldAddPostHogScript) this.window.luxuryPresence.eventBus.initialize({ enabled: this.config.eventBus?.enabled }); if (shouldAddDivolteScript) this.window.luxuryPresence.divolte.initialize({}); } /** * Remove PostHog and Divolte scripts */ removeScripts() { this.window.luxuryPresence?.eventBus?.destroy?.(); this.window.luxuryPresence?.divolte?.destroy?.(); this.document.getElementById(posthog-script)?.remove(); this.document.getElementById(divolte-script)?.remove(); } /** * Initialize CookieYes controller */ async initialize() { const isAuthenticated await this.window.luxuryPresence.session.validateSession(); if (this.hasAnalyticsConsent() || isAuthenticated) this.loadScript(); if (!this.consentListener) { this.consentListener (eventData)>{ const data eventData.detail; if (data?.accepted && Array.isArray(data.accepted) && data.accepted.includes(analytics)) this.loadScript(); else this.removeScripts(); }; this.document.addEventListener(cookieyes_consent_update, this.consentListener); } }}const $fa0280e505379701$export$1fd2b467a3644d37 new (0, $dc851cf3939b6ef5$export$ff0712c26d5458f7)({});const $fa0280e505379701$export$e12694e911a05f40 new (0, $0ead03fdb95fa9ce$export$d507f25e63650365)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$3de614e59a842917 new (0, $d48f9f944810f613$export$ca3218b7861b9cb0)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$fb9b298fdbf31455 new (0, $68a2d4aa500c7a05$export$61ec8f2b6291ec31)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$178cc3119b453c2a new (0, $e10bd00497be8876$export$3c5380623cf51249)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$9376af1a01686f2 new (0, $ea6901fdf47e0ec1$export$3c19195edca3fa5c)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$94d36f806562393e new (0, $0a0ad49f13c0b8fd$export$ba9afeb75f20f616)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$89e66d1faf94651e new (0, $2b1790aa32f109d1$export$43e435c053a109f6)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$7743b07270cd6d6c new (0, $4f184d9bd3037f15$export$7a6215890afba974)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$40a7039551318c37 new (0, $102039871668a1df$export$e22e4b1be0bb6c61)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$8a0bbf7e7652fcfc new (0, $0d25a3fa2e0f4f92$export$b718a981691eae5c)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$b313b3f6544c97a3 new (0, $dcf72769f009ff26$export$b900d6fe921fd49c)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$b526bc4ac03268ef new (0, $50eefeef8d1f2372$export$8a2bf06fbae4dde)($fa0280e505379701$export$1fd2b467a3644d37, window, document);const $fa0280e505379701$export$ec41309a2e823376 new (0, $6bb500f67d8e6b7b$export$19036f3e654d7262)($fa0280e505379701$export$1fd2b467a3644d37, window, document);/** * Attach controller to window for usage * @param {string} key * @param {any} controller */ function $89a8a84b77163415$var$attachController(key, controller) { if (window.luxuryPresencekey) try { // New version of sdk, destroy previous window.luxuryPresencekey.destroy(); } catch (e) { // eslint-disable-next-line no-console console.log(e); } window.luxuryPresencekey controller;}$89a8a84b77163415$var$attachController(config, (0, $fa0280e505379701$export$1fd2b467a3644d37));$89a8a84b77163415$var$attachController(modals, (0, $fa0280e505379701$export$e12694e911a05f40));$89a8a84b77163415$var$attachController(buttons, (0, $fa0280e505379701$export$3de614e59a842917));$89a8a84b77163415$var$attachController(validation, (0, $fa0280e505379701$export$fb9b298fdbf31455));$89a8a84b77163415$var$attachController(contactForms, (0, $fa0280e505379701$export$178cc3119b453c2a));$89a8a84b77163415$var$attachController(mapApiLoader, (0, $fa0280e505379701$export$9376af1a01686f2));$89a8a84b77163415$var$attachController(pagination, (0, $fa0280e505379701$export$94d36f806562393e));$89a8a84b77163415$var$attachController(expandSliders, (0, $fa0280e505379701$export$89e66d1faf94651e));$89a8a84b77163415$var$attachController(divolte, (0, $fa0280e505379701$export$7743b07270cd6d6c));$89a8a84b77163415$var$attachController(eventBus, (0, $fa0280e505379701$export$40a7039551318c37));$89a8a84b77163415$var$attachController(oauth, (0, $fa0280e505379701$export$8a0bbf7e7652fcfc));$89a8a84b77163415$var$attachController(qualifyingQuestionsModal, (0, $fa0280e505379701$export$b313b3f6544c97a3));$89a8a84b77163415$var$attachController(session, (0, $fa0280e505379701$export$b526bc4ac03268ef));$89a8a84b77163415$var$attachController(cookieyes, (0, $fa0280e505379701$export$ec41309a2e823376));// methods for existing elements (can be removed later after elements updated)window.luxuryPresence.formatSliderPriceRange (0, $fa0280e505379701$export$94d36f806562393e).formatSliderPriceRange.bind((0, $fa0280e505379701$export$94d36f806562393e));window.luxuryPresence.formatSliderAreaRange (0, $fa0280e505379701$export$94d36f806562393e).formatSliderAreaRange.bind((0, $fa0280e505379701$export$94d36f806562393e));// method below doesnt use this, but just to be safe in case of further method updateswindow.luxuryPresence.getSearchFormValues (0, $fa0280e505379701$export$94d36f806562393e).getSearchFormValues.bind((0, $fa0280e505379701$export$94d36f806562393e));window.luxuryPresence.handlebarsHelpersFactory function(handlebarsInstance) { return (0, (/*@__PURE__*/$parcel$interopDefault($53de3c160faf5a81$exports)))(handlebarsInstance, { isEqual (a, b) { // eslint-disable-next-line return a b; } });};})();//# sourceMappingURLlp-sdk.js.map /script> script> var lpGlobalInitialized false; function lpGlobalInit () { if (lpGlobalInitialized) { return; } lpGlobalInitialized true; // Initialize wow animation plugin only according to turbolinks var wow; if (window.WOW) { wow new WOW({ animateClass: animated, offset: wowOffset, live: false, callback: function(box) {} }); } // Initialize handlebar helpers only once function handlebarsInit() { if (!window.Handlebars) { return; } HandlebarsIntl.registerWith(Handlebars); Handlebars.registerHelper(window.luxuryPresence.handlebarsHelpersFactory(Handlebars)); } handlebarsInit(); /* Initialize Luxury Presence SDK */ try { window.luxuryPresence.config.setCompany(c25ef3cc-17f3-4e20-8741-4a53adcbbde4, {}); window.luxuryPresence.config.setWebsite(d487cbb7-d6fa-4efd-a321-59b55b8a540d, { recaptchaSiteId: , myhomeDashboardEnabled: false }); const url new URL(window.location.href); const shareId url.searchParams.get(shareId); window.luxuryPresence.config.setPage(b3507018-f3b5-4c58-8054-f333f70246cd, { sourceResource: , pageElementId: , pageQueryVariables: {}, shareId: , }); window.luxuryPresence.config.setWebsiteApiGatewayUrl(https://wgw.luxurypresence.com, {}); window.luxuryPresence.config.setBuyerSellerServiceUrl(https://bss.luxurypresence.com, {}); window.luxuryPresence.config.setDivolteServiceUrl(https://t.luxurypresence.com, {}); window.luxuryPresence.config.setEventBusUrl(https://cdn.luxurypresence.com/scripts/event-bus-js, {}); window.luxuryPresence.config.setEventBus({ enabled: true, apiKey: phc_PMYT31xlmXBaTCwpIRx1v6RrpLVZIuP47N3mOT6KLnr, url: https://us.i.posthog.com, }); window.luxuryPresence.config.setTemplateId(82ef847f-2f60-45e8-a100-27d47d5ee3a1, {}); window.luxuryPresence.config.setLeadIngesterUrl(https://leads.luxurypresence.com, {}); window.luxuryPresence.buttons.initialize({}); window.luxuryPresence.eventBus.initialize({}); window.luxuryPresence.contactForms.initialize({}); window.luxuryPresence.validation.initialize({}); window.luxuryPresence.expandSliders.initialize({}); window.luxuryPresence.oauth.initialize({ googleSignOnEnabled: true, iframe: false }); window.luxuryPresence.qualifyingQuestionsModal.initialize({ qualifyingQuestionsModalEnabled: true }); window.luxuryPresence.divolte.initialize({}); } catch (e) { console.log(e); } /* Inject Section Specific Javascript */ try {(function init(sectionDomId) { let section document.getElementById(sectionDomId); if (!section && sectionDomId main-section) { section document.getElementById(global-navbar); } const header section.querySelector(.header); const contactBtns header.querySelectorAll(.lp-btn); const contactBtnsContainer header.querySelector(.buttons); const defaultStyle contactBtnsContainer.getAttribute(data-btn-default); const scrollStyle contactBtnsContainer.getAttribute(data-btn-scroll); const defaultBtn contactBtnsContainer.querySelector(.default); const scrolltBtn contactBtnsContainer.querySelector(.scroll); if (defaultBtn) defaultBtn.classList.add(defaultStyle); if (scrolltBtn) scrolltBtn.classList.add(scrollStyle); let logo header.querySelector(.logo); if (logo.querySelector(.logo__img)) logo.style.width logo.querySelector(.logo__img).offsetWidth + px; .forEach.call(contactBtns, function (btn) { if (btn.getAttribute(data-type) CONTACT_US) { btn.removeAttribute(data-type); btn.setAttribute(data-anchor, contact-section); btn.classList.add(nav__item); } }); function onScroll() { if (waiting) { return; } waiting setTimeout(processScroll, 250); } var waiting null; function processScroll() { waiting null; const st $(window).scrollTop(); if (st > 10) { header.classList.add(scroll); } else { header.classList.remove(scroll); } } const findElement function (selector) { if (!selector) { return null; } if (selector.charAt(0) #) { $element $(`section${selector}`); if (!$element.length) { return null; } return $element; } $element $(`section > .${selector}`); if ($element.length) { return $element.parent(); } $element $(`section#section-${selector}`); if ($element.length) { return $element; } $element $(`section#${selector}`); if ($element.length) { return $element; } return null; }; const scrollDownAnimated function (element) { $(document.documentElement, document.body).animate({ scrollTop: element.offset().top }, 500); }; const defaultNavItems overview, gallery, virtual-tour, amenities, quotes, video, location; if ($(.floor-plans).length) defaultNavItems.push(floor-plans); let defaultNav ; let nav header.querySelector(.nav); const setDefaultNav function () { let sections document.querySelectorAll(section > .section); if (window.luxuryPresence.config.isBuilder) { defaultNav defaultNavItems; } else { .forEach.call(sections, function (section) { defaultNavItems.forEach(selector > { if (section.classList.contains(selector) && !defaultNav.includes(selector)) { defaultNav.push(selector); } }); }); } defaultNav.forEach((selector, index) > { $(nav).append(li data-anchor + selector + classnav__item styleanimation-delay: 1. + index + s> + selector.split(-).join( ) + /li>); }); }; if (!nav.classList.contains(nav-custom) && !$(nav).children().length) setDefaultNav(); const navItemAnchor $(header).find(.nav__item); if (!window.luxuryPresence.config.isBuilder) { navItemAnchor.each(function (e) { const anchorTo findElement($(this).data(anchor)); if (!anchorTo) { $(this).remove(); } }); } navItemAnchor.on(click, function (e) { $(header).find(.nav__item).removeClass(active); $(this).addClass(active); const anchorTo findElement($(this).data(anchor)); if (anchorTo) { scrollDownAnimated(anchorTo); } }); $(window).on(scroll.lpui-auto-clean, onScroll); $(window).on(resize.lpui-auto-clean, onScroll); processScroll();})(global-navbar);} catch(e) {console.log(e);} try {(function init(sectionDomId, options) { var elementSelector options.elementSelector || nav; var element document.querySelector(elementSelector); var sections document.querySelectorAll(body > section); var subNavContainers element.querySelectorAll(.sub-nav); var initialBackgroundColor options.initialBackgroundColor || element.style.backgroundColor; var backgroundColorScroll options.backgroundColorScroll || #191919; var fontColor options.fontColor || #fff; var fontColorScroll options.fontColorScroll || #000; var didScroll false; var lastScrollTop 0; var delta 5; // eslint-disable-next-line sonarjs/no-collapsible-if if (wow) { // Wowjs might not trigger for position fixed elements if (window.scrollY > 0) { element.querySelectorAll(.wow).forEach(el > wow.show(el)); } } function adjustNavPinState() { // Remove visible class from all subNavContainers for (let i 0; i subNavContainers.length; i++) { subNavContainersi.classList.remove(visible); } if (window.scrollY > 0) { element.style.backgroundColor backgroundColorScroll; element.style.color fontColorScroll; element.classList.add(scroll); } else { element.style.backgroundColor initialBackgroundColor; element.style.color fontColor; element.classList.remove(scroll); } } adjustNavPinState(); function onScroll() { didScroll true; } window.addEventListener(scroll, onScroll); // eslint-disable-next-line var debounceInterval setInterval(() > { if (didScroll) { // eslint-disable-next-line hasScrolled(); didScroll false; } }, 250); function hasScrolled() { adjustNavPinState(); // eslint-disable-next-line var navbarHeight element.offsetHeight; // eslint-disable-next-line var st window.scrollY; // Make sure they scroll more than delta if (Math.abs(lastScrollTop - st) delta) { return; } if (st > lastScrollTop && st > navbarHeight) { // Scroll Down element.style.transform `translateY(-${navbarHeight}px) scaleY(0)`; document.documentElement.style.setProperty(--global-header-height, 0px); // Some sections follow the navbar with class sticky (i.e. Producer search) sections.forEach(section > { if (section.classList.contains(sticky)) { section.style.top 0px; } }); } else { // Scroll Up // eslint-disable-next-line if (st + window.innerHeight document.documentElement.scrollHeight) { element.style.transform `translateY(0) scaleY(1)`; document.documentElement.style.setProperty(--global-header-height, `${navbarHeight}px`); sections.forEach(section > { if (section.classList.contains(sticky)) { section.style.top `${navbarHeight}px`; } }); } } lastScrollTop st; }})(NAVBAR, JSON.parse({}));} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $sidemenu $(# + sectionDomId); let shown false; let filteredNav; function onShow() { if (shown) { return; } shown true; window.lpUI.requestScrollLock(sectionDomId); } function onHide() { if (!shown) { return; } shown false; window.lpUI.releaseScrollLock(sectionDomId); } $sidemenu.on(lpui-show, onShow); $sidemenu.on(lpui-hide, onHide); const scrollDownAnimated function (element) { $(document.documentElement, document.body).animate({ scrollTop: element.offset().top - $(#global-navbar).height() }, 2000); }; const findElement function (selector) { if (!selector) { return null; } if (selector.charAt(0) #) { $element $(`section${selector}`); if (!$element.length) { return null; } return $element; } $element $(`section > .${selector}`); if ($element.length) { return $element.parent(); } $element $(`section#section-${selector}`); if ($element.length) { return $element; } $element $(`section#${selector}`); if ($element.length) { return $element; } return null; }; const navItemAnchor $sidemenu.find(.nav__item); navItemAnchor.each(function (e) { const anchorTo findElement($(this).data(anchor)); if (!anchorTo) { $(this).remove(); } }); filteredNav $sidemenu.find(.nav__item); const navsAnchorsClassList filteredNav.map(function () { return $(this).data(anchor).charAt(0) # ? . + $(this).data(anchor).slice(1) : . + $(this).data(anchor); }).toArray().join(, ); let filteredSections; const sectionsList $(sectionid^section-); filteredSections sectionsList.filter(function () { return $(this).find(navsAnchorsClassList).length; }); let sortedNav filteredSections.map(function () { let self $(this); return filteredNav.filter(function () { if (self.children().hasClass($(this).data(anchor))) { return $(this); } })0; }); $sidemenu.find(.nav.nav--static).html(); sortedNav.each(function () { $sidemenu.find(.nav.nav--static).append(this); }); navItemAnchor.on(click, function (e) { onHide(); $sidemenu.removeClass(visible); const anchorTo findElement($(this).data(anchor)); if (anchorTo) { scrollDownAnimated(anchorTo); } });})(global-sidemenu);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var section $(# + sectionDomId + .section); const form $(# + sectionDomId).find(form); const redirectLink $(# + sectionDomId + .redirect-link); section.find(.scroll-up).click(function (e) { e.preventDefault(); $(html, body).animate({ scrollTop: 0 }, 1000); }); $(section).find(.js-link).each(function () { if (!/^(?:f|ht)tps?\:\/\//.test($(this).attr(href))) { $(this).attr(href, http:// + $(this).attr(href)); } }); $(section).find(.js-contact a).addClass(lp-link); $(section).find(.disclaimer a).addClass(lp-link); form.on(reset, function () { redirectPage(redirectLink); }); function redirectPage(link) { if (link.length) { const rawHref link.attr(href); link.attr(href, setHttp(rawHref)); link0.click(); } } function setHttp(link) { if (link.search(/^https?\:\/\/|\//) -1) { link http:// + link; } return link; }})(global-footer);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var section $(# + sectionDomId); var holder section.find(.holder); const scrollDown section.find(.scroll-down); scrollDown.click(function (e) { e.preventDefault(); $(html, body).animate({ scrollTop: section.offset().top + section.outerHeight() }, 800, swing); });})(section-847ccd62-4735-40ec-8f0c-f682d3ab693b, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var section document.getElementById(sectionDomId); var title section.getElementsByClassName(lp-h3)0; if (title) { var reg /\!\?\./; var fullText title.innerHTML; title.innerHTML fullText.split(reg)0 + fullText.charAt(fullText.search(reg)); } var scrollDownAnimated function scrollDownAnimated(element) { $(document.documentElement, document.body).animate({ scrollTop: element.offset().top }, 400); }; /* MORE TEXT*/ var isMobile window.innerWidth 768; var moreText section.getElementsByClassName(more-text)0; var moreTextCropped section.getElementsByClassName(more-text-cropped)0; var moreTextHolder section.getElementsByClassName(more-text-holder)0; var moreTextBlock section.getElementsByClassName(more-text-block)0; var $link $(# + sectionDomId + .link-more.js); var text moreTextCropped.textContent; moreTextCropped.innerText text.trim(); var moreLines 4; var moreLinesMobile 11; var numberOfLines isMobile ? moreLinesMobile : moreLines; function countLines(text) { var divHeight text.offsetHeight; var lineHeight parseInt($(text).css(line-height)); var lines divHeight / lineHeight; return lines; } section.style.setProperty(--maxHeight, moreText.offsetHeight + px); section.style.setProperty(--maxHeightInit, parseFloat($(moreText).css(line-height)) * numberOfLines + px); section.style.setProperty(--moreTextLines, moreLines); section.style.setProperty(--moreTextLinesMobile, moreLinesMobile); if (moreText) { if (countLines(moreText) > numberOfLines) { $(moreTextBlock).addClass(cropped).addClass(extended); } } $link.on(click, function () { $(moreTextBlock).toggleClass(cropped); $(this).toggleClass(link-more--less); if ($(this).hasClass(link-more--less)) { $(this).text(Show less); } else { $(this).text(Show more); scrollDownAnimated($(section)); } }); /* MORE TEXT*/ function processScroll() { var position section.getBoundingClientRect(); if (position.top + 100 window.innerHeight && position.bottom > 0) { $(moreTextBlock).addClass(visible); } } window.addEventListener(scroll, function () { processScroll(); }); processScroll(); $(window).on(scroll.lpui-auto-clean, processScroll); $(window).on(resize.lpui-auto-clean, processScroll);})(section-819451f6-3835-4bf6-baad-6877cf33a129, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { let itemValues document.getElementById(sectionDomId).querySelectorAll(.item-value--custom); let text, ind; .forEach.call(itemValues, function (value) { text value.querySelector(.lp-h2).textContent; ind text.search(/a-zA-Z/g); if (ind > -1) { value.querySelector(.item-unit).textContent text.substr(ind, text.length - ind).trim(); value.querySelector(.lp-h2).textContent text.substr(0, ind).trim(); value.querySelector(.lp-h3).textContent text.substr(0, ind).trim(); } });})(section-4c9cb2e7-5d2c-4f0a-8cfc-eb2f1f8d8ef7, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const section document.querySelector(# + sectionDomId); const gallery section.querySelector(.gallery); const slider section.querySelector(.slider.slider-slick); const sliderHolder section.querySelector(.slider-holder); let cursorArea; const $cursor $(section).find(.js-cursor); const $circle $(section).find(.js-cursor-circle); const progressbar section.querySelector(.progressbar); if (slider) { var bgSlides $(slider).children(); const modal1 section.querySelector(.modal-1); const imageNumber slider.getAttribute(data-image-number); const slidesNumber $(slider).children().length; const progress section.querySelector(.progressbar-progress); const progressCurrent section.querySelector(.progressbar-current); const progressTotal section.querySelector(.progressbar-total); progressTotal.textContent imageNumber 10 ? 0 + imageNumber : imageNumber; progressCurrent.textContent 01; const progressWidth parseInt(progress.offsetWidth) / imageNumber; progress.style.width progressWidth + px; const setCursorArea currentSlide > { if (cursorArea) cursorArea.removeEventListener(mousemove, handleMouseMove, true); cursorArea section.querySelector(.slick-slidedata-slick-index + currentSlide + img); cursorArea.addEventListener(mousemove, handleMouseMove, true); cursorArea.addEventListener(mouseout, handleMouseOut, true); }; const handleMouseOut event > { $cursor.addClass(hide); $circle.addClass(hide); }; const handleMouseMove event > { $cursor.removeClass(hide); $circle.removeClass(hide); const areaOffsetTop $(cursorArea).offset().top + (cursorArea.parentElement.parentElement.getBoundingClientRect().top - cursorArea.getBoundingClientRect().top); let top event.pageY - areaOffsetTop - $cursor.width() / 2; let left event.pageX - $cursor.width() / 2; $cursor.css({ top: `${top}px`, left: `${left}px` }); setTimeout(() > { $circle.css({ top: `${top}px`, left: `${left}px` }); }, 100); }; $(slider).on(init, function (event, slick) { $(# + sectionDomId + .slick-cloned .slider-img).removeClass(wow).attr(style, ); setCursorArea(1); }); $(slider).slick({ slidesToShow: 1, centerMode: true, initialSlide: 1, speed: 800, dots: false, arrows: true, nextArrow: $(# + sectionDomId + .lp-arrow--next), prevArrow: $(# + sectionDomId + .lp-arrow--prev), centerPadding: 85px, responsive: { breakpoint: 767, settings: { slidesToShow: 1, centerPadding: 0 } } }); let setProgress currentSlide > { let slideNum currentSlide > imageNumber - 1 ? currentSlide - imageNumber : currentSlide; if (slideNum 0) slideNum imageNumber; progress.style.width progressWidth * slideNum + px; slideNum slideNum 10 ? 0 + slideNum : slideNum; progressCurrent.textContent slideNum; }; $(slider).on(afterChange, function (event, slick, currentSlide, nextSlide) { setProgress(currentSlide); setCursorArea(currentSlide); }); $(slider).on(beforeChange, function (event, slick, currentSlide, nextSlide) { bgSlides.removeClass(pre-active); bgSlides.eq(nextSlide).prev().addClass(pre-active); bgSlides.eq(nextSlide).addClass(pre-active); bgSlides.eq(nextSlide).next().addClass(pre-active); $(# + sectionDomId + .slick-slide).removeClass(slick-first).removeClass(slick-last).removeClass(slick-next); if (currentSlide slidesNumber - 1 && !nextSlide) { $(# + sectionDomId + .slick-slidedata-slick-index + currentSlide + ).addClass(slick-last); $(# + sectionDomId + .slick-slidedata-slick-index + slidesNumber + ).addClass(slick-first); } else if (nextSlide slidesNumber - 1 && !currentSlide) { $(# + sectionDomId + .slick-slidedata-slick-index-1).addClass(slick-first); $(# + sectionDomId + .slick-slidedata-slick-index + currentSlide + ).addClass(slick-next); } }); slider.querySelectorAll(.slider-img img).forEach(item > { item.addEventListener(click, event > { modal1.classList.add(visible); window.lpUI.requestScrollLock(sectionDomId); }); }); modal1.querySelectorAll(.images__item).forEach((item, index) > { item.addEventListener(click, event > { modal1.classList.add(visible); $(slider).slick(slickGoTo, index + 1); section.querySelector(.lp-expand-btn).click(); }); }); modal1.querySelector(.close).onclick () > { modal1.classList.remove(visible); window.lpUI.releaseScrollLock(sectionDomId); }; const beforeChange (event, slick, currentSlide, nextSlide) > { const lightboxImages $(`#lightbox-for-${sectionDomId} .lp-lightbox__slide img`); lightboxImages.css(display, none); $(slick.$slides.eq(nextSlide)).find(img).css(display, block); }; section.querySelector(.lp-expand-btn).addEventListener(click, function () { const lightboxSlides $(`#lightbox-for-${sectionDomId} .lp-lightbox__slide`); var lightboxSlicked $(`#lightbox-for-${sectionDomId} .slick-initialized`); lightboxSlicked.on(beforeChange, (event, slick, currentSlide, nextSlide) > { beforeChange(event, slick, currentSlide, nextSlide); }); const lightboxCurrentSlide $(`#lightbox-for-${sectionDomId} .lp-lightbox__slide.slick-current`); lightboxSlides.find(img).css(display, none); lightboxCurrentSlide.find(img).css(display, block); }); } else { progressbar.style.display none; }})(section-58957342-23fb-4407-9607-203b09d36ac6, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var $section $(# + sectionDomId); if ($section.find(.virtual-tour).length) { function setAnimations() { const $target $section.find(.js-animation-target); let x 0, y 0; let tx 0, ty 0; let overchk false; let animationRun false; let animationRequest; document.addEventListener(mousemove, function (e) { x e.pageX; y e.pageY; }); $target.each(function () { $(this).css(will-change, transform); $(this).wrap(div classjs-target-wrap>/div>); $(this).closest(.js-target-wrap).append(div classjs-target>/div>).css({ position: relative, width: fit-content }); $(this).next(.js-target).css({ position: absolute, left: 0, top: 0, width: 100%, height: 100% }); $(this).next(.js-target).on(click, function () { if ($section.find(buttondata-typeVIDEO).length) { $section.find(buttondata-typeVIDEO).trigger(click); } }); }); function getOffset(el) { let _x 0; let _y 0; while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) { _x + el.offsetLeft - el.scrollLeft; _y + el.offsetTop - el.scrollTop; el el.offsetParent; } return { top: _y, left: _x }; } function loop(el) { if (overchk) { tx + (x - getOffset(el).left - tx) * 0.04; ty + (y - getOffset(el).top - ty) * 0.04; el.style.transform translate( + tx + px, + ty + px); } else { tx - tx * 0.3; ty - ty * 0.3; el.style.transform translate( + tx + px, + ty + px); } animationRequest requestAnimationFrame(function () { loop(el); }); } function runAnimation(el) { if (!animationRun) { animationRun true; loop(el); overchk true; } } function stopAnmation() { if (animationRun) { setTimeout(function () { window.cancelAnimationFrame(animationRequest); animationRun false; tx 0, ty 0; }, 100); overchk false; } } $section.find(.js-target).on(mouseenter, function () { runAnimation($(this).closest(.js-target-wrap).find(.js-animation-target)0); }); $section.find(.js-target).on(mouseleave, function () { stopAnmation(); }); } if (window.matchMedia((hover: hover) and (pointer: fine)).matches) { setAnimations(); } $section.find(.close-icon).click(function () { $section.find(.virtual-tour__overlay).removeClass(visible); window.lpUI.releaseScrollLock(sectionDomId + -virtualTour); }); let clickHandler function () { $section.find(.virtual-tour__overlay).addClass(visible); window.lpUI.requestScrollLock(sectionDomId + -virtualTour); const src $section.find(iframe.js-mobileVirtualTour).data(src).replace(/^http:/, https:); $section.find(iframe.js-mobileVirtualTour).attr(src, src); }; $section.find(.button-wrapper).on(click, clickHandler); var $iframe $section.find(.js-virtualTour); if (!$iframe.length) { return; } var iframeLoaded false; var mobileBtn $section.find(.mobile-button-wrapper); var imageCover $section.find(.tour-overlay); function loadIframe() { if (iframeLoaded) return; if (mobileBtn.css(display) ! none || imageCover.css(display) block) return; var scrollDistance $(window).scrollTop(); var windowHeight $(window).height(); var iframeScrollDistance $iframe.offset().top; if (scrollDistance > iframeScrollDistance - windowHeight) { const src $iframe.attr(data-src).replace(/^http:/, https:); $iframe.attr(src, src); $iframe.removeAttr(data-src); iframeLoaded true; $(window).off(scroll.lpui-auto-clean, debouncedloadFrame); $(window).off(resize.lpui-auto-clean, debouncedloadFrame); } } var debouncedloadFrame window.luxuryPresence.debounce(loadIframe, 200); $(window).on(scroll.lpui-auto-clean, debouncedloadFrame); $(window).on(resize.lpui-auto-clean, debouncedloadFrame); loadIframe(); }})(section-9af2dc98-5100-445f-a4c2-86088820c480, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $section $(# + sectionDomId); function setAnimations() { const $target $section.find(.js-animation-target); let x 0, y 0; let tx 0, ty 0; let overchk false; let animationRun false; let animationRequest; document.addEventListener(mousemove, function (e) { x e.pageX; y e.pageY; }); $target.each(function () { $(this).css(will-change, transform); $(this).wrap(div classjs-target-wrap>/div>); $(this).closest(.js-target-wrap).append(div classjs-target>/div>).css({ position: relative, width: fit-content }); $(this).next(.js-target).css({ position: absolute, left: 0, top: 0, width: 100%, height: 100% }); }); function getOffset(el) { let _x 0; let _y 0; while (el && !isNaN(el.offsetLeft) && !isNaN(el.offsetTop)) { _x + el.offsetLeft - el.scrollLeft; _y + el.offsetTop - el.scrollTop; el el.offsetParent; } return { top: _y, left: _x }; } function loop(el) { if (overchk) { tx + (x - getOffset(el).left - tx) * 0.04; ty + (y - getOffset(el).top - ty) * 0.04; el.style.transform translate( + tx + px, + ty + px); } else { tx - tx * 0.3; ty - ty * 0.3; el.style.transform translate( + tx + px, + ty + px); } animationRequest requestAnimationFrame(function () { loop(el); }); } function runAnimation(el) { if (!animationRun) { animationRun true; loop(el); overchk true; } } function stopAnmation() { if (animationRun) { setTimeout(function () { window.cancelAnimationFrame(animationRequest); animationRun false; tx 0, ty 0; }, 100); overchk false; } } $section.find(.js-target).on(mouseenter, function () { runAnimation($(this).closest(.js-target-wrap).find(.js-animation-target)0); }); $section.find(.js-target).on(mouseleave, function () { stopAnmation(); }); } if (window.matchMedia((hover: hover) and (pointer: fine)).matches) { setAnimations(); }})(section-97650f29-42ec-409b-b791-f91c3df71036, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var section document.getElementById(sectionDomId); var lightbox section.getElementsByClassName(js-lightbox)0; var images lightbox.getElementsByTagName(img); var isLightboxSliderCreated false || section.querySelector(sectionDomId + -modal); var NAV_SLIDE_WIDTH 100; var NAV_SLIDE_MOBILE_WIDTH 74; const arrowsStyle lightbox ? $(lightbox).data(arrows-style) || : ; var slickMainOptions { arrows: true, dots: false, infinite: true, draggable: true, prevArrow: `button typebutton classlightbox-arrow--prev lightbox-arrow ${arrowsStyle} aria-labelPrevious>/button>`, nextArrow: `button typebutton classlightbox-arrow--next lightbox-arrow ${arrowsStyle} aria-labelNext>/button>` }; var slickNavOptions { arrows: false, dots: false, infinite: true, variableWidth: true, focusOnSelect: true, draggable: true }; if (!isLightboxSliderCreated) { var newSlider document.createElement(div); newSlider.className lightbox-slider; newSlider.style.display none; var newNavSlider document.createElement(div); newNavSlider.className lightbox-nav-slider; newNavSlider.style.display none; for (var i 0; i images.length; i++) { var imgSrc imagesi.dataset.src || imagesi.src; var newImg document.createElement(img); newImg.src imgSrc; newImg.alt lightbox image + (i + 1); var newSlide document.createElement(div); newSlide.className lightbox-slide; newSlide.append(newImg); newSlider.append(newSlide); var newNavSlide document.createElement(div); newNavSlide.className lightbox-nav-slide; newNavSlide.append(newImg.cloneNode()); newNavSlider.append(newNavSlide); } var newModal document.createElement(div); newModal.className modal lightbox-modal; newModal.id sectionDomId + -modal; var newModalContent document.createElement(div); newModalContent.className modal-content lightbox-modal__content; var newModalSliderBlock document.createElement(div); newModalSliderBlock.className lightbox-modal__slider-block; var newCloseBtn document.createElement(button); newCloseBtn.className lightbox-close; newCloseBtn.type button; newCloseBtn.title close lightbox modal; newCloseBtn.addEventListener(click, function (evt) { evt.target.closest(.lightbox-modal).classList.remove(visible); }); newModalSliderBlock.append(newSlider); newModalSliderBlock.append(newNavSlider); newModalContent.append(newModalSliderBlock); newModal.append(newModalContent); newModal.append(newCloseBtn); document.body.append(newModal); } Array.from(images).forEach(function (image, i) { image.addEventListener(click, function () { if (!isLightboxSliderCreated) { newModal.classList.add(visible); newSlider.style.display block; slickMainOptions.initialSlide i; slickMainOptions.asNavFor $(newNavSlider); newNavSlider.style.display block; slickNavOptions.initialSlide i; slickNavOptions.asNavFor $(newSlider); var navWidth newNavSlider.offsetWidth - 8 * 2; console.log(navWidth); var navSlidesCount Math.floor(navWidth / getNavSlideWidth() * 10) / 10; slickNavOptions.variableWidth false; slickNavOptions.slidesToShow navSlidesCount; $(newSlider).slick(slickMainOptions); $(newNavSlider).slick(slickNavOptions); if (doNavSlidesFit(navWidth, images.length)) { lockNavSlickTrack(); } isLightboxSliderCreated true; } else { newModal.classList.add(visible); adjustNavCount(); $(newSlider).slick(slickGoTo, i, true); $(newNavSlider).slick(slickGoTo, i, true); } }); }); function getNavSlideWidth() { return window.matchMedia((max-width: 991px)).matches ? NAV_SLIDE_MOBILE_WIDTH : NAV_SLIDE_WIDTH; } function doNavSlidesFit(containerWidth, slidesCount) { return containerWidth > slidesCount * NAV_SLIDE_WIDTH; } function lockNavSlickTrack() { console.log(lock!); $(.lightbox-nav-slider .slick-track).addClass(slick-track-locked); } function unlockNavSlickTrack() { $(.lightbox-nav-slider .slick-track).removeClass(slick-track-locked); } function adjustNavCount() { var navWidth newNavSlider.offsetWidth - 8 * 2; console.log(navWidth); var navSlidesCount Math.floor(navWidth / getNavSlideWidth() * 10) / 10; $(newNavSlider).slick(setOption, slidesToShow, navSlidesCount); if (doNavSlidesFit(navWidth, images.length)) { lockNavSlickTrack(); } else { unlockNavSlickTrack(); } } window.addEventListener(resize, function () { if (isLightboxSliderCreated && newModal.classList.contains(visible)) { adjustNavCount(); } }); window.addEventListener(orientationchange, function () { if (isLightboxSliderCreated) { adjustNavCount(); } }); if (!isLightboxSliderCreated) { var lightBoxstyle document.createElement(style); lightBoxstyle.innerHTML ` .lightbox-modal { position: fixed; left: 0; top: 0; width: 100%; height: 100vh !important; background-color: rgba(0, 0, 0, 0.9); } @media (min-width: 992px) { .lightbox-modal { background-color: rgba(0, 0, 0, 0.8); } } .lightbox-modal__content { width: 100%; height: 100%; margin-left: auto; margin-right: auto; display: flex; flex-direction: column; justify-content: center; } @media (min-width: 992px) { .lightbox-modal__content { max-width: 1142px; padding-left: 75px; padding-right: 75px; } } .lightbox-modal__slider-block { position: relative; width: 100%; padding-bottom: 50px; } @media (min-width: 992px) { .lightbox-modal__slider-block { padding-bottom: 0; } } .lightbox-slider { width: 100%; height: 531px; } @media (max-width: 991px) { .lightbox-slider { height: 265px; } } .lightbox-slider .slick-list, .lightbox-slider .slick-track { height: 100%; } @media (max-width: 991px) { .lightbox-slider { position: static !important; } } .lightbox-slide { width: 100%; height: 100%; } .lightbox-slide:focus { outline: none; } .lightbox-slide img { width: 100%; height: 100%; object-fit: contain; } .lightbox-nav-slider { width: 100%; background-color: #000; padding: 8px; } @media (max-width: 991px) { .lightbox-nav-slider { padding: 5px; } } .lightbox-nav-slider .lightbox-nav-slide { position: relative; width: 100px; height: 100px; padding: 7px; cursor: pointer; } @media (max-width: 991px) { .lightbox-nav-slider .lightbox-nav-slide { width: 74px; height: 74px; padding: 5px; } } .lightbox-nav-slider .lightbox-nav-slide:focus { outline: none; } .lightbox-nav-slider .lightbox-nav-slide:after { content: ; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background-color: #000; opacity: 0.5; transition: all 0.3s; } .lightbox-nav-slider .lightbox-nav-slide.slick-current:after { opacity: 0; } .lightbox-nav-slider .lightbox-nav-slide img { width: 100%; height: 100%; object-fit: cover; } .lightbox-arrow { position: absolute; top: 50%; width: 46px; height: 46px; margin-top: -23px; padding: 5px; border: 1px solid currentColor; border-radius: 50%; background: transparent; color: #fff; cursor: pointer; transition: all 0.25s; z-index: 1; } @media (max-width: 991px) { .lightbox-arrow { top: auto; bottom: 0; } } .lightbox-arrow:hover{ background: #FFFFFF; color: #000; } .lightbox-arrow:focus { outline: none; } .lightbox-arrow:after { content: ; display: inline-block; width: 10px; height: 10px; border-top: 2px solid currentColor; border-right: 2px solid currentColor; } .lightbox-arrow.slick-disabled { opacity: 0.3; cursor: auto; } .lightbox-arrow--prev { right: calc(100% + 15px); } @media (max-width: 991px) { .lightbox-arrow--prev { right: calc(50% + 8px); } } .lightbox-arrow--prev:after { transform: translateX(2px) rotate(-135deg); } .lightbox-arrow--next { left: calc(100% + 15px); } @media (max-width: 991px) { .lightbox-arrow--next { left: calc(50% + 8px); } } .lightbox-arrow--next:after { transform: translateX(-2px) rotate(45deg); } .lightbox-close { position: absolute; top: 10px; right: 10px; z-index: 1; width: 32px; height: 32px; background: none; padding: 10px; border: none; border-radius: 0; color: #fff; font-size: 0; cursor: pointer; transform: translate3d(0, 0, 0); outline: none; } .lightbox-close:before, .lightbox-close:after { content: ; position: absolute; left: 50%; top: 50%; margin-top: -1px; width: 15px; height: 2px; border-radius: 2px; background-color: currentColor; transition: all 0.3s; } .lightbox-close:before { transform: translateX(-50%) rotate(45deg); } .lightbox-close:after { transform: translateX(-50%) rotate(-45deg); } .lightbox-close:hover:before, .lightbox-close:hover:after { width: 20px; } .slick-track-locked { transform: translate3d(0, 0, 0) !important; } `; document.head.appendChild(lightBoxstyle); }})(section-b5603f86-ad71-4508-8ae1-e4e95c2e1761, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var section document.getElementById(sectionDomId); var lightbox section.getElementsByClassName(js-lightbox)0; var images lightbox.getElementsByTagName(img); var isLightboxSliderCreated false || section.querySelector(sectionDomId + -modal); var NAV_SLIDE_WIDTH 100; var NAV_SLIDE_MOBILE_WIDTH 74; const arrowsStyle lightbox ? $(lightbox).data(arrows-style) || : ; var slickMainOptions { arrows: true, dots: false, infinite: true, draggable: true, prevArrow: `button typebutton classlightbox-arrow--prev lightbox-arrow ${arrowsStyle} aria-labelPrevious>/button>`, nextArrow: `button typebutton classlightbox-arrow--next lightbox-arrow ${arrowsStyle} aria-labelNext>/button>` }; var slickNavOptions { arrows: false, dots: false, infinite: true, variableWidth: true, focusOnSelect: true, draggable: true }; if (!isLightboxSliderCreated) { var newSlider document.createElement(div); newSlider.className lightbox-slider; newSlider.style.display none; var newNavSlider document.createElement(div); newNavSlider.className lightbox-nav-slider; newNavSlider.style.display none; for (var i 0; i images.length; i++) { var imgSrc imagesi.dataset.src || imagesi.src; var newImg document.createElement(img); newImg.src imgSrc; newImg.alt lightbox image + (i + 1); var newSlide document.createElement(div); newSlide.className lightbox-slide; newSlide.append(newImg); newSlider.append(newSlide); var newNavSlide document.createElement(div); newNavSlide.className lightbox-nav-slide; newNavSlide.append(newImg.cloneNode()); newNavSlider.append(newNavSlide); } var newModal document.createElement(div); newModal.className modal lightbox-modal; newModal.id sectionDomId + -modal; var newModalContent document.createElement(div); newModalContent.className modal-content lightbox-modal__content; var newModalSliderBlock document.createElement(div); newModalSliderBlock.className lightbox-modal__slider-block; var newCloseBtn document.createElement(button); newCloseBtn.className lightbox-close; newCloseBtn.type button; newCloseBtn.title close lightbox modal; newCloseBtn.addEventListener(click, function (evt) { evt.target.closest(.lightbox-modal).classList.remove(visible); }); newModalSliderBlock.append(newSlider); newModalSliderBlock.append(newNavSlider); newModalContent.append(newModalSliderBlock); newModal.append(newModalContent); newModal.append(newCloseBtn); document.body.append(newModal); } Array.from(images).forEach(function (image, i) { image.addEventListener(click, function () { if (!isLightboxSliderCreated) { newModal.classList.add(visible); newSlider.style.display block; slickMainOptions.initialSlide i; slickMainOptions.asNavFor $(newNavSlider); newNavSlider.style.display block; slickNavOptions.initialSlide i; slickNavOptions.asNavFor $(newSlider); var navWidth newNavSlider.offsetWidth - 8 * 2; console.log(navWidth); var navSlidesCount Math.floor(navWidth / getNavSlideWidth() * 10) / 10; slickNavOptions.variableWidth false; slickNavOptions.slidesToShow navSlidesCount; $(newSlider).slick(slickMainOptions); $(newNavSlider).slick(slickNavOptions); if (doNavSlidesFit(navWidth, images.length)) { lockNavSlickTrack(); } isLightboxSliderCreated true; } else { newModal.classList.add(visible); adjustNavCount(); $(newSlider).slick(slickGoTo, i, true); $(newNavSlider).slick(slickGoTo, i, true); } }); }); function getNavSlideWidth() { return window.matchMedia((max-width: 991px)).matches ? NAV_SLIDE_MOBILE_WIDTH : NAV_SLIDE_WIDTH; } function doNavSlidesFit(containerWidth, slidesCount) { return containerWidth > slidesCount * NAV_SLIDE_WIDTH; } function lockNavSlickTrack() { console.log(lock!); $(.lightbox-nav-slider .slick-track).addClass(slick-track-locked); } function unlockNavSlickTrack() { $(.lightbox-nav-slider .slick-track).removeClass(slick-track-locked); } function adjustNavCount() { var navWidth newNavSlider.offsetWidth - 8 * 2; console.log(navWidth); var navSlidesCount Math.floor(navWidth / getNavSlideWidth() * 10) / 10; $(newNavSlider).slick(setOption, slidesToShow, navSlidesCount); if (doNavSlidesFit(navWidth, images.length)) { lockNavSlickTrack(); } else { unlockNavSlickTrack(); } } window.addEventListener(resize, function () { if (isLightboxSliderCreated && newModal.classList.contains(visible)) { adjustNavCount(); } }); window.addEventListener(orientationchange, function () { if (isLightboxSliderCreated) { adjustNavCount(); } }); if (!isLightboxSliderCreated) { var lightBoxstyle document.createElement(style); lightBoxstyle.innerHTML ` .lightbox-modal { position: fixed; left: 0; top: 0; width: 100%; height: 100vh !important; background-color: rgba(0, 0, 0, 0.9); } @media (min-width: 992px) { .lightbox-modal { background-color: rgba(0, 0, 0, 0.8); } } .lightbox-modal__content { width: 100%; height: 100%; margin-left: auto; margin-right: auto; display: flex; flex-direction: column; justify-content: center; } @media (min-width: 992px) { .lightbox-modal__content { max-width: 1142px; padding-left: 75px; padding-right: 75px; } } .lightbox-modal__slider-block { position: relative; width: 100%; padding-bottom: 50px; } @media (min-width: 992px) { .lightbox-modal__slider-block { padding-bottom: 0; } } .lightbox-slider { width: 100%; height: 531px; } @media (max-width: 991px) { .lightbox-slider { height: 265px; } } .lightbox-slider .slick-list, .lightbox-slider .slick-track { height: 100%; } @media (max-width: 991px) { .lightbox-slider { position: static !important; } } .lightbox-slide { width: 100%; height: 100%; } .lightbox-slide:focus { outline: none; } .lightbox-slide img { width: 100%; height: 100%; object-fit: contain; } .lightbox-nav-slider { width: 100%; background-color: #000; padding: 8px; } @media (max-width: 991px) { .lightbox-nav-slider { padding: 5px; } } .lightbox-nav-slider .lightbox-nav-slide { position: relative; width: 100px; height: 100px; padding: 7px; cursor: pointer; } @media (max-width: 991px) { .lightbox-nav-slider .lightbox-nav-slide { width: 74px; height: 74px; padding: 5px; } } .lightbox-nav-slider .lightbox-nav-slide:focus { outline: none; } .lightbox-nav-slider .lightbox-nav-slide:after { content: ; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background-color: #000; opacity: 0.5; transition: all 0.3s; } .lightbox-nav-slider .lightbox-nav-slide.slick-current:after { opacity: 0; } .lightbox-nav-slider .lightbox-nav-slide img { width: 100%; height: 100%; object-fit: cover; } .lightbox-arrow { position: absolute; top: 50%; width: 46px; height: 46px; margin-top: -23px; padding: 5px; border: 1px solid currentColor; border-radius: 50%; background: transparent; color: #fff; cursor: pointer; transition: all 0.25s; z-index: 1; } @media (max-width: 991px) { .lightbox-arrow { top: auto; bottom: 0; } } .lightbox-arrow:hover{ background: #FFFFFF; color: #000; } .lightbox-arrow:focus { outline: none; } .lightbox-arrow:after { content: ; display: inline-block; width: 10px; height: 10px; border-top: 2px solid currentColor; border-right: 2px solid currentColor; } .lightbox-arrow.slick-disabled { opacity: 0.3; cursor: auto; } .lightbox-arrow--prev { right: calc(100% + 15px); } @media (max-width: 991px) { .lightbox-arrow--prev { right: calc(50% + 8px); } } .lightbox-arrow--prev:after { transform: translateX(2px) rotate(-135deg); } .lightbox-arrow--next { left: calc(100% + 15px); } @media (max-width: 991px) { .lightbox-arrow--next { left: calc(50% + 8px); } } .lightbox-arrow--next:after { transform: translateX(-2px) rotate(45deg); } .lightbox-close { position: absolute; top: 10px; right: 10px; z-index: 1; width: 32px; height: 32px; background: none; padding: 10px; border: none; border-radius: 0; color: #fff; font-size: 0; cursor: pointer; transform: translate3d(0, 0, 0); outline: none; } .lightbox-close:before, .lightbox-close:after { content: ; position: absolute; left: 50%; top: 50%; margin-top: -1px; width: 15px; height: 2px; border-radius: 2px; background-color: currentColor; transition: all 0.3s; } .lightbox-close:before { transform: translateX(-50%) rotate(45deg); } .lightbox-close:after { transform: translateX(-50%) rotate(-45deg); } .lightbox-close:hover:before, .lightbox-close:hover:after { width: 20px; } .slick-track-locked { transform: translate3d(0, 0, 0) !important; } `; document.head.appendChild(lightBoxstyle); }})(section-4b00fa46-0fa4-4d82-a723-f382db13c3db, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { let height $(#global-navbar) ? $(#global-navbar).height() : 0; const scrollDownAnimated function (element) { $(document.documentElement, document.body).animate({ scrollTop: element.offset().top - height }, 600); }; $(# + sectionDomId + .info-acc).hide().prev().click(function () { delay 0; $(# + sectionDomId + .isPrev).removeClass(isPrev); $(this).parent().prevAll().addClass(isPrev); let $active $(# + sectionDomId + .active_acc).not(this); if ($active.is(:visible)) { $(# + sectionDomId + .info-acc).not(this).slideUp(600); if ($active.hasClass(isPrev)) delay 600; } $(this).next().not(:visible).delay(delay).slideDown(600); }); $(# + sectionDomId + .heading).click(function () { let $prevActive $(# + sectionDomId + .active_acc).not($(this).parent()); let $newActive $(this).parent(); if ($prevActive.length) { if ($prevActive.hasClass(isPrev)) setTimeout(function () { scrollDownAnimated($prevActive); }, 0); $prevActive.removeClass(active_acc); } if ($newActive.hasClass(active_acc)) { $newActive.removeClass(active_acc); } else { $newActive.addClass(active_acc); } }); $(# + sectionDomId + .heading-number).each(function (index) { this.innerHTML 0 + (index + 1); }); if (window.luxuryPresence.config.companyId c2e60f30-a56c-49cf-be4e-8a21ac588006) { $(# + sectionDomId + .js-space-type).text(Setting); }})(section-16de5598-4463-4e6d-85d2-971cbad274fa, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const $section $(# + sectionDomId); const $resultsExpandButton $section.find(.results__expand); const $calc $section.find(.calc); const $calcReset $section.find(.calc__reset); const mgCalc $section.find(.mg-calc); const fallbackPropertyTaxRate parseFloat(mgCalc.data(fallback-property-tax-rate)) || 0; if (mgCalc.length 0) return; const calcCurency mgCalc.data(currency) || USD; const interest mgCalc.data(interest) || 7; const svgChart $section.find(.svg-chart); const $inputHomePrice $section.find(.jsInputHomePrice); const $inputTerm $(`#${sectionDomId}-termInput`); const $inputDownPaymentAmount $section.find(.jsInputDowPaymentAmount); const $inputDownPaymentPercentage $section.find(.jsInputDowPaymentPercentage); const $inputPropertyTax $section.find(.jsInputPropertyTax); const $inputInterestRate $section.find(.jsInputInterestRate); const $inputHoa $section.find(.jsInputHoa); const $principalInterest $section.find(.jsPrincipalInterest); const $propertyTaxes $section.find(.jsPropertyTaxes); const $jsHoa $section.find(.jsHoa); const $yourMonthlyPaymentsAmount $section.find(.jsYourPaymentsAmount); const $resWrap $section.find(.jsResWrap); const $resultChart $section.find(.jsResultChart); let appState {}; const calculateDownPaymentAmount function () { return Math.round(appState.homePrice * appState.downPaymentPercentage / 100); }; const calculatePrincipalAmount function () { return appState.homePrice - appState.downPaymentAmount; }; const calculateYourMonthlyMortgagePaymentsAmount function () { let n appState.term * 12; let r appState.interestRate / 100 / 12; let P appState.homePrice - appState.downPaymentAmount; return !!P * (r * Math.pow(1 + r, n) / (Math.pow(1 + r, n) - 1)) ? Math.round(P * (r * Math.pow(1 + r, n) / (Math.pow(1 + r, n) - 1)) * 100) / 100 : 0; }; const calculateYourMonthlyPaymentsAmount function () { return Math.round((calculateYourMonthlyMortgagePaymentsAmount() + appState.propertyTaxesAmount + appState.hoaDues) * 100) / 100; }; const calculatePercenatge function (total, part) { return part * 100 / total ? Math.round(part * 100 / total * 100) / 100 : 0; }; const formatPercentageString function (num) { return num + %; }; const recalcFeesPerMonth function (data, period) { switch (period) { case YEAR: return Math.round(data / 12); case WEEK: return Math.round(data * 4); case QUARTER: return Math.round(data / 3); case HALF_YEAR: return Math.round(data / 6); default: return Math.round(data); } }; const generateShareLink function () { let url window.location.href.split(?)0; return encodeURIComponent(url + ? + objectToQuerystring(appState).replace(/\./g, %2E)); }; const decodeParameters function (url) { let parameters url.split(?)1; if (!!parameters) { let decodedParamArray decodeURIComponent(parameters).split(&).map(el > el.split()); return Object.fromEntries(decodedParamArray); } else { return false; } }; let currencyFormatter new Intl.NumberFormat(en-US, { style: currency, currency: calcCurency, maximumFractionDigits: 0 }); const renderCalc function () { $inputHomePrice.val(currencyFormatter.format(appState.homePrice)); $inputTerm.val(appState.term); $inputDownPaymentAmount.val(currencyFormatter.format(appState.downPaymentAmount)); $inputDownPaymentPercentage.val(formatPercentageString(appState.downPaymentPercentage)); $inputPropertyTax.val(currencyFormatter.format(appState.propertyTaxesAmount) + /month); $inputInterestRate.val(formatPercentageString(appState.interestRate)); $inputHoa.val(currencyFormatter.format(appState.hoaDues) + /month); $yourMonthlyPaymentsAmount.text(`${currencyFormatter.format(appState.yourMonthlyPaymentsAmount)}`); $principalInterest.text(`${currencyFormatter.format(appState.princepalsAndInterests)} (${calculatePercenatge(appState.yourMonthlyPaymentsAmount, appState.princepalsAndInterests).toFixed(0)}%)`); $propertyTaxes.text(`${currencyFormatter.format(appState.propertyTaxesAmount)} (${calculatePercenatge(appState.yourMonthlyPaymentsAmount, appState.propertyTaxesAmount).toFixed(0)}%)`); $jsHoa.text(`${currencyFormatter.format(appState.hoaDues)} (${calculatePercenatge(appState.yourMonthlyPaymentsAmount, appState.hoaDues).toFixed(0)}%)`); const data prepareData(appState); updateChartData(svgChart, data); }; const initCalc function (param) { if (param && (param.homePrice ! undefined || param.term ! undefined || param.downPaymentPercentage ! undefined || param.downPaymentAmount ! undefined || param.interestRate ! undefined || param.propertyTaxesAmount ! undefined || param.propertyTaxesAmount ! undefined || param.yourMonthlyPaymentsAmount ! undefined || param.princepalsAndInterests ! undefined)) { appState.homePrice param.homePrice ! undefined ? parseFloat(param.homePrice) : 0; appState.term param.term ! undefined ? parseInt(param.term) : 30; appState.downPaymentPercentage param.downPaymentPercentage ! undefined ? parseFloat(param.downPaymentPercentage) : 20; appState.downPaymentAmount param.downPaymentAmount ! undefined ? parseFloat(param.downPaymentAmount) : calculateDownPaymentAmount(); appState.interestRate param.interestRate ! undefined ? parseFloat(param.interestRate) : interest; appState.propertyTaxesAmount param.propertyTaxesAmount ! undefined ? parseFloat(param.propertyTaxesAmount) : Math.round(parseFloat(appState.homePrice) * fallbackPropertyTaxRate); appState.hoaDues param.hoaDues ! undefined ? parseFloat(param.hoaDues) : 0; appState.yourMonthlyPaymentsAmount param.yourMonthlyPaymentsAmount ! undefined ? parseFloat(param.yourMonthlyPaymentsAmount) : calculateYourMonthlyPaymentsAmount(); appState.princepalsAndInterests param.princepalsAndInterests ! undefined ? parseFloat(param.princepalsAndInterests) : calculateYourMonthlyMortgagePaymentsAmount(); } else { appState.homePrice parseFloat($inputHomePrice.data(home-price)) || 0; appState.term parseFloat($inputTerm.val()) || 30; appState.downPaymentPercentage 20; appState.downPaymentAmount calculateDownPaymentAmount(); appState.interestRate interest; if (parseFloat($inputPropertyTax.data(taxes-amount))) { appState.propertyTaxesAmount recalcFeesPerMonth(parseFloat($inputPropertyTax.data(taxes-amount)), $inputPropertyTax.data(taxes-frequency)); } else { appState.propertyTaxesAmount Math.round(appState.homePrice * fallbackPropertyTaxRate); } appState.hoaDues recalcFeesPerMonth(parseFloat($inputHoa.data(hoa)), $inputHoa.data(hoa-frequency)) || 0; appState.yourMonthlyPaymentsAmount calculateYourMonthlyPaymentsAmount(); appState.princepalsAndInterests calculateYourMonthlyMortgagePaymentsAmount(); } renderCalc(); }; const resetCalc function () { $calc.trigger(reset); appState.homePrice parseFloat($inputHomePrice.data(home-price)) || 0; appState.term parseFloat($inputTerm.val()) || 30; appState.downPaymentPercentage 20; appState.downPaymentAmount calculateDownPaymentAmount(); appState.interestRate interest; if (parseFloat($inputPropertyTax.data(taxes-amount))) { appState.propertyTaxesAmount recalcFeesPerMonth(parseFloat($inputPropertyTax.data(taxes-amount)), $inputPropertyTax.data(taxes-frequency)); } else { appState.propertyTaxesAmount Math.round(appState.homePrice * fallbackPropertyTaxRate); } appState.hoaDues recalcFeesPerMonth(parseFloat($inputHoa.data(hoa)), $inputHoa.data(hoa-frequency)) || 0; appState.yourMonthlyPaymentsAmount calculateYourMonthlyPaymentsAmount(); appState.princepalsAndInterests calculateYourMonthlyMortgagePaymentsAmount(); renderCalc(); }; initCalc(decodeParameters(window.location.href)); function filterInput($inp, inputFilter) { return $inp.on(input keydown keyup mousedown mouseup select contextmenu drop, function () { if (inputFilter(this.value)) { this.oldValue this.value; this.oldSelectionStart this.selectionStart; this.oldSelectionEnd this.selectionEnd; } else if (this.hasOwnProperty(oldValue)) { this.value this.oldValue; this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd); } else { this.value ; } }); } ; const $copyHomePriceInput $section.find(.jsCopyInputHomePrice); function handleHomePriceChange() { const parsedNumber parseFloat($copyHomePriceInput.val()); !!parsedNumber ? appState.homePrice Math.round(parsedNumber * 100) / 100 : appState.homePrice 0; appState.downPaymentAmount calculateDownPaymentAmount(); appState.yourMonthlyPaymentsAmount calculateYourMonthlyPaymentsAmount(); appState.princepalsAndInterests calculateYourMonthlyMortgagePaymentsAmount(); renderCalc(); } var homepriceTimeout null; $inputHomePrice.on(input, function () { const cleanValue parseFloat($inputHomePrice.val().replace(/\D+/g, )); $copyHomePriceInput.val(cleanValue); $inputHomePrice.val(currencyFormatter.format(cleanValue)); window.clearTimeout(homepriceTimeout); homepriceTimeout window.setTimeout(handleHomePriceChange, 500); }); const $copyInputDowPaymentAmount $section.find(.jsCopyInputDowPaymentAmount); function handleDownPaymentAmountChange() { const parsedNumber parseFloat($copyInputDowPaymentAmount.val()); !!parsedNumber ? appState.downPaymentAmount parsedNumber appState.homePrice ? parsedNumber : appState.downPaymentAmount appState.homePrice : appState.downPaymentAmount 0; appState.downPaymentPercentage calculatePercenatge(appState.homePrice, appState.downPaymentAmount); appState.yourMonthlyPaymentsAmount calculateYourMonthlyPaymentsAmount(); appState.princepalsAndInterests calculateYourMonthlyMortgagePaymentsAmount(); renderCalc(); } var calculateTimeout null; $inputDownPaymentAmount.on(input, function () { const cleanValue parseFloat($inputDownPaymentAmount.val().replace(/\D+/g, )); $copyInputDowPaymentAmount.val(cleanValue); $inputDownPaymentAmount.val(currencyFormatter.format(cleanValue)); window.clearTimeout(calculateTimeout); calculateTimeout window.setTimeout(handleDownPaymentAmountChange, 500); }); const $copyDowPaymentPercentage $section.find(.jsCopyDowPaymentPercentage); function handleDownPaymentPercentage() { const parsedNumber parseFloat($copyDowPaymentPercentage.val()); !!parseFloat(parsedNumber) && !isNaN(parsedNumber) ? appState.downPaymentPercentage Math.round(parsedNumber * 100) / 100 : appState.downPaymentPercentage 0; appState.downPaymentAmount calculateDownPaymentAmount(); appState.yourMonthlyPaymentsAmount calculateYourMonthlyPaymentsAmount(); appState.princepalsAndInterests calculateYourMonthlyMortgagePaymentsAmount(); renderCalc(); } filterInput($inputDownPaymentPercentage, function (value) { return /^\d*.,?\d{0,2}$/.test(value) && (value || parseFloat(value) 100); }); $inputDownPaymentPercentage.on(focusin, function () { appState.downPaymentPercentage 0 ? $inputDownPaymentPercentage.val() : $inputDownPaymentPercentage.val(appState.downPaymentPercentage); }); $inputDownPaymentPercentage.on(focusout, function () { $inputDownPaymentPercentage.val(appState.downPaymentPercentage + %); }); var downpaymentPercentageTimeout null; $inputDownPaymentPercentage.on(input, function () { const cleanValue this.value.replace(,, .).replace(/^\d./g, ); const parts cleanValue.split(.); const finalValue parts.length > 2 ? parts0 + . + parts.slice(1).join() : cleanValue; $copyDowPaymentPercentage.val(finalValue); window.clearTimeout(downpaymentPercentageTimeout); downpaymentPercentageTimeout window.setTimeout(handleDownPaymentPercentage, 500); }); $inputTerm.on(change, function () { appState.term parseInt($inputTerm.val()); appState.yourMonthlyPaymentsAmount calculateYourMonthlyPaymentsAmount(); appState.princepalsAndInterests calculateYourMonthlyMortgagePaymentsAmount(); renderCalc(); }); function handlePropertyTaxChange() { const parsedNumber parseFloat($copyInputPropertyTax.val()); !!parseFloat(parsedNumber) ? appState.propertyTaxesAmount parseFloat(parsedNumber) : appState.propertyTaxesAmount 0; appState.yourMonthlyPaymentsAmount calculateYourMonthlyPaymentsAmount(); appState.princepalsAndInterests calculateYourMonthlyMortgagePaymentsAmount(); renderCalc(); } const $copyInputPropertyTax $section.find(.jsCopyInputPropertyTax); var propertyTaxTimeout null; $inputPropertyTax.on(input, function () { const cleanValue parseFloat($inputPropertyTax.val().replace(/\D+/g, )); $copyInputPropertyTax.val(cleanValue); $inputPropertyTax.val(currencyFormatter.format(cleanValue)); window.clearTimeout(propertyTaxTimeout); propertyTaxTimeout window.setTimeout(handlePropertyTaxChange, 500); }); $inputPropertyTax.on(focusin, function () { $inputPropertyTax.val(currencyFormatter.format(appState.propertyTaxesAmount)); }); $inputPropertyTax.on(focusout, function () { $inputPropertyTax.val(currencyFormatter.format(appState.propertyTaxesAmount) + /month); }); const $copyInputInterestRate $section.find(.jsCopyInputInterestRate); var inputInterestRateTimeout null; function handleInterestRateChange() { const parsedNumber parseFloat($copyInputInterestRate.val()); !!parseFloat(parsedNumber) ? appState.interestRate parseFloat(parsedNumber) : appState.interestRate 0; appState.yourMonthlyPaymentsAmount calculateYourMonthlyPaymentsAmount(); appState.princepalsAndInterests calculateYourMonthlyMortgagePaymentsAmount(); renderCalc(); } filterInput($inputInterestRate, function (value) { return /^\d*.,?\d{0,2}$/.test(value); }); $inputInterestRate.on(focusin, function () { appState.interestRate 0 ? $inputInterestRate.val() : $inputInterestRate.val(appState.interestRate); }); $inputInterestRate.on(focusout, function () { $inputInterestRate.val(appState.interestRate + %); }); $inputInterestRate.on(input, function () { const cleanValue parseFloat($inputInterestRate.val().replace(/^\d.,/g, ).replace(/(.*.,\d{2}).*/g, $1)); $copyInputInterestRate.val(cleanValue); window.clearTimeout(inputInterestRateTimeout); inputInterestRateTimeout window.setTimeout(handleInterestRateChange, 500); }); function handleInputHoaChange() { const parsedNumber parseFloat($copyInputHoa.val()); !!parseFloat(parsedNumber) ? appState.hoaDues parseFloat(parsedNumber) : appState.hoaDues 0; appState.yourMonthlyPaymentsAmount calculateYourMonthlyPaymentsAmount(); appState.princepalsAndInterests calculateYourMonthlyMortgagePaymentsAmount(); renderCalc(); } const $copyInputHoa $section.find(.jsCopyInputHoa); var inputHoaTimeout null; $inputHoa.on(input, function () { const cleanValue parseFloat($inputHoa.val().replace(/\D+/g, )); $copyInputHoa.val(cleanValue); $inputHoa.val(currencyFormatter.format(cleanValue)); window.clearTimeout(inputHoaTimeout); inputHoaTimeout window.setTimeout(handleInputHoaChange, 500); }); $inputHoa.on(focusin, function () { $inputHoa.val(currencyFormatter.format(appState.hoaDues)); }); $inputHoa.on(focusout, function () { $inputHoa.val(currencyFormatter.format(appState.hoaDues) + /month); }); $calcReset.on(click, function (e) { e.preventDefault(); resetCalc(); }); $section.find(*data-share).on(click, function (e) { let self $(this); switch (self.data(share)) { case facebook: self.attr(href, `https://www.facebook.com/sharer/sharer.php?u${generateShareLink()}"e${self.data(description)}`); break; case twitter: self.attr(href, `https://twitter.com/intent/tweet?url${generateShareLink()}&text${self.data(description)}`); break; default: self.attr(href, `mailto:?body${generateShareLink()}`); } }); const resultsExpand function (e) { e.preventDefault(); $resultsExpandButton.toggleClass(active); $resWrap.slideToggle(200); $resultChart.toggleClass(active); }; $resultsExpandButton.on(click, resultsExpand); const createTooltip function (element) { let positionX; let positionY; let cssTop; if (window.matchMedia((max-width: 580px)).matches) { positionX 30; positionY element.offset().top + element.outerHeight() + 25; } else if (window.matchMedia((max-width: 768px)).matches) { positionX element.offset().left; positionY element.offset().top + element.outerHeight() + 25; } else { positionX element.offset().left + element.outerWidth() + 5; positionY element.offset().top + 20; } const tooltipTitle element.data(tooltip-title) || ; const tooltipContent element.data(tooltip); const tooltipElement `div classtooltip> div classtooltip__title>${tooltipTitle}button classtooltip__close>/button>/div> div classtooltip__content>${tooltipContent}/div> /div>`; $(tooltipElement).insertAfter(element); cssTop element.position().top; $section.find(.tooltip).offset({ top: positionY, left: positionX }).animate({ opacity: 1, top: cssTop }, 200, function () {}); $section.find(.tooltip__close).click(function (e) { e.preventDefault(); destroyTooltips(); }); }; const destroyTooltips function () { const tooltipElement $section.find(.tooltip); if (tooltipElement.length) { let cssTop tooltipElement.position().top + 20; tooltipElement.animate({ opacity: 0, top: cssTop }, 200, function () { $(this).remove(); }); } }; $section.find(*data-tooltip).click(function (e) { e.preventDefault(); destroyTooltips(); createTooltip($(this)); }); $(document.body).click(function (e) { if (!$(e.target).closest(*data-tooltip).length && !$(e.target).closest(.tooltip).length) { destroyTooltips(); } }); $(window).on(resize.lpui-auto-clean, function () { destroyTooltips(); if (window.matchMedia((min-width: 769px)).matches) { $resWrap.removeAttr(style); } }); function convertSelectToDropdown(selectItem) { let customDropdown ` div classcustom-select rolepresentation> button classcustom-select-toggle typebutton aria-haspopuptrue aria-expandedfalse>/button> div classcustom-select-menu> div classcustom-select-content> /div> /div> /div>`; $(customDropdown).insertAfter(selectItem); let $dropdown $(selectItem).next(); let $dropdownToggle $dropdown.find(.custom-select-toggle); let $dropdownMenu $dropdown.find(.custom-select-menu); let $dropdownContent $dropdown.find(.custom-select-content); $dropdownToggle.addClass($(selectItem).attr(class)).removeClass(dropdown-select); $dropdownToggle.attr(id, $(selectItem).attr(id) + custom); $dropdownToggle.attr(data-name, $(selectItem).attr(name)); $dropdownMenu.attr(aria-labelledby, $dropdownToggle.attr(id)); appendOptionButtons(selectItem, $dropdownContent); $(selectItem).removeClass().addClass(sr-only); $(selectItem).on(focus, function () { showSelectMenu($dropdownMenu0); $dropdownToggle.focus(); }); var toggleText $(selectItem).find(:selected).first().text() || $(selectItem).children().first().text(); $dropdownToggle.addClass(is-placeholder).html(toggleText); $dropdown.on(click, .custom-select-item, function (e) { if ($(this).hasClass(is-disabled)) return; let elementNumber $(this).index(); let $originalSelect $(this).closest(.custom-select).siblings(select); let $linkedOption $originalSelect.find(option).eq(elementNumber); if (!$linkedOption.prop(selected)) { $linkedOption.prop(selected, true); $originalSelect.change(); $(this).addClass(is-selected).siblings(.custom-select-item).removeClass(is-selected); $dropdownToggle.removeClass(is-placeholder).html($(this).html()); closeSelectMenu($(this).closest(.custom-select-menu)); } }); function convertOptionToButton(option) { var optionText $(option).text(); var optionValue $(option).attr(value) || $(option).text(); var optionIsDisabled $(option).prop(disabled); var outputButton `button value${optionValue} classcustom-select-item typebutton ${optionIsDisabled ? disabled : }>${optionText}/button>`; return outputButton; } function appendOptionButtons(selectItem, appendTarget) { $(selectItem).find(option).each(function () { let currentButton convertOptionToButton(this); $(appendTarget).append(currentButton); }); } function showSelectMenu(selectMenu) { var customSelect $(selectMenu).closest(.custom-select)0; $(customSelect).addClass(open); $(selectMenu).slideDown(); } function closeSelectMenu(selectMenu) { var customSelect $(selectMenu).closest(.custom-select)0; $(customSelect).removeClass(open); $(selectMenu).slideUp(); } $dropdown.on(click, .custom-select-toggle, function (e) { var $customSelect $(this).closest(.custom-select); var selectMenu $customSelect.find(.custom-select-menu)0; if ($customSelect.hasClass(open)) { closeSelectMenu(selectMenu); } else { showSelectMenu(selectMenu); } }); $(document.body).on(click, function (e) { if ($(e.target).closest(form).length 1 && $(.custom-select).hasClass(open)) { $(.custom-select.open).each(function () { var selectMenu $(this).find(.custom-select-menu)0; closeSelectMenu(selectMenu); }); } }); } function destroyCustomSelects(selectItem) { let selectClasses $(selectItem).find(.custom-select-toggle).removeClass(custom-select-toggle).removeClass(is-placeholder).addClass(dropdown-select).attr(class); $(selectItem).prev(select).removeClass().addClass(selectClasses); $(selectItem).remove(); } ; $section.find(form).on(reset, function () { $(this).find(.custom-select).each(function () { let linkedSelect $(this).siblings(select); $(this).find(.custom-select-toggle).text(linkedSelect.children().last()0.innerText); $(this).find(.custom-select-item).removeClass(is-selected); }); }); let selectInitClasses $section.find(.dropdown-select).attr(class); $section.find(.dropdown-select).each(function () { convertSelectToDropdown(this); }); function prepareData(bulkData) { let buildData {}; buildData.interest bulkData.princepalsAndInterests || 0; buildData.taxes bulkData.propertyTaxesAmount || 0; buildData.hoa bulkData.hoaDues || 0; buildData.total buildData.interest + buildData.taxes + buildData.hoa; return buildData; } function buildItemCircle(elemNS) { let ratio arguments.length > 1 && arguments1 ! undefined ? arguments1 : .5; let offsetRatio arguments.length > 2 && arguments2 ! undefined ? arguments2 : 0; let currentItem arguments.length > 3 ? arguments3 : undefined; let chartCircleLength arguments.length > 4 ? arguments4 : undefined; elemNS.setAttributeNS(null, stroke-dasharray, `${ratio * chartCircleLength}, ${chartCircleLength}`); elemNS.setAttributeNS(null, stroke-dashoffset, `${-offsetRatio * chartCircleLength}`); elemNS.querySelector(title).textContent currencyFormatter.format(currentItem); } function updateChartData(chart, data) { const chartSize 224; const chartStrokeWidth 35; const chartRadius chartSize / 2 - chartStrokeWidth / 2; const chartCircleLength Math.round(chartRadius * 2 * Math.PI); let totalOffsetRatio 0; let dataCircles chart.find(.circle__item); for (let i 0; i dataCircles.length; i++) { let circle dataCirclesi; let outputParamName circle.dataset.for; let currentItem dataoutputParamName; let currentRatio currentItem / data.total ? currentItem / data.total : 0; buildItemCircle(circle, currentRatio, totalOffsetRatio, currentItem, chartCircleLength); totalOffsetRatio + currentRatio; } chart.find(.chart-amount).text(currencyFormatter.format(data.total)); } if (window.matchMedia((hover: hover) and (pointer: fine)).matches) { $resultChart.find(.circle__item).hover(function () { let targetAttr $(this).data(for); $section.find(`.legend__itemdata-for${targetAttr}`).addClass(is-hovered); }, function () { $section.find(.legend__item).removeClass(is-hovered); }); $section.find(.legend__item).hover(function () { let targetAttr $(this).data(for); $(this).addClass(is-hovered); $resultChart.find(`.circle__itemdata-for${targetAttr}`).addClass(is-hovered); }, function () { $(this).removeClass(is-hovered); $resultChart.find(.circle__item).removeClass(is-hovered); }); } let elTopEdge, elHeight, elBottomEdge, screenBottomEdge, screenTopEdge; const $resultsBar $section.find(.results); function inViewport(el) { const resultsBarHeight $section.find(.results).height() + 25; elTopEdge el.offset().top; elHeight el.outerHeight(); elBottomEdge el.offset().top + elHeight; screenBottomEdge $(window).scrollTop() + $(window).innerHeight(); screenTopEdge $(window).scrollTop(); return screenTopEdge > elTopEdge && screenTopEdge + resultsBarHeight elBottomEdge; } function onScroll() { if (window.matchMedia((max-width: 768px)).matches) { if (inViewport(mgCalc)) { $resultsBar.addClass(sticky); $resultsBar.css({ opacity: 1, pointerEvents: initial }); $section.css(z-index, 4); } else { $section.css(z-index, auto); if (screenTopEdge elTopEdge) { $resultsBar.removeAttr(style); $resultsBar.removeClass(sticky); } if (screenTopEdge > elBottomEdge - 100) { $resultsBar.css({ opacity: 0, pointerEvents: none }); } } } } $(window).on(scroll.lpui-auto-clean, onScroll);})(section-6277abb2-d381-4023-b086-2f9ed466c3d3, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { const theme { featureType: administrative, elementType: labels, stylers: { visibility: off } }, { featureType: poi, elementType: geometry.fill, stylers: { color: #C5E3BF } }, { featureType: poi, elementType: labels, stylers: { visibility: off } }, { featureType: road, elementType: geometry, stylers: { lightness: 100 }, { visibility: simplified } }, { featureType: road, elementType: geometry.fill, stylers: { color: #D1D1B8 } }, { featureType: water, elementType: geometry, stylers: { visibility: on }, { color: #C6E2FF } }; const zoom 14; window.luxuryPresence.mapApiLoader.load().then(() > { const section document.getElementById(sectionDomId); const mapContainer document.querySelector(`#${sectionDomId} .map`); const controlsContainer document.querySelector(`#${sectionDomId} .controls-container`); if (!mapContainer) { return; } const lat mapContainer.getAttribute(data-lat); const lng mapContainer.getAttribute(data-lng); const svg `svg xmlnshttp://www.w3.org/2000/svg width38 height54 viewBox0 0 38 54 fillnone> path dM18.75 0.910156C8.39883 0.910156 0 8.41779 0 17.6688C0 32.5653 18.75 53.0481 18.75 53.0481C18.75 53.0481 37.5 32.5653 37.5 17.6688C37.5 8.41779 29.1012 0.910156 18.75 0.910156ZM18.75 26.9791C17.2666 26.9791 15.8166 26.5423 14.5832 25.7239C13.3499 24.9054 12.3886 23.7422 11.8209 22.3812C11.2532 21.0202 11.1047 19.5226 11.3941 18.0778C11.6835 16.6329 12.3978 15.3058 13.4467 14.2641C14.4956 13.2225 15.832 12.5131 17.2868 12.2257C18.7417 11.9383 20.2497 12.0858 21.6201 12.6495C22.9906 13.2133 24.1619 14.1679 24.986 15.3928C25.8101 16.6177 26.25 18.0577 26.25 19.5309C26.2478 21.5056 25.457 23.3988 24.0509 24.7952C22.6449 26.1916 20.7385 26.977 18.75 26.9791Z fill#262626/> /svg> `; const markerIcon { url: data:image/svg+xml;charsetUTF-8;base64, + btoa(svg), fillColor: #cccccc, fillOpacity: 0, anchor: new google.maps.Point(19, 54), strokeWeight: 0, scale: 1 }; const markerContainer document.createElement(div); markerContainer.classList.add(marker-container); markerContainer.innerHTML svg; mapContainer.appendChild(markerContainer); const width mapContainer.offsetWidth; const height mapContainer.offsetHeight; window.luxuryPresence.mapApiLoader.generateDigitallySignedStaticMapUrl({ srcWidth: parseInt(width), srcHeight: parseInt(height), zoom, center: `${lat},${lng}`, theme }).then(url > { const img document.createElement(img); img.setAttribute(src, url); img.setAttribute(alt, Map); img.onclick function () { mapContainer.removeChild(img); initializeMap({ lat: parseFloat(lat), lng: parseFloat(lng) }); }; mapContainer.appendChild(img); }); function initializeMap(latLong) { var url https://www.google.com/maps/search/?api1&query + latLong.lat + , + latLong.lng; const map new google.maps.Map(mapContainer, { center: latLong, zoom, styles: theme, disableDefaultUI: true, zoomControlOptions: { position: google.maps.ControlPosition.LEFT_CENTER }, streetViewControl: true, streetViewControlOptions: { position: google.maps.ControlPosition.TOP_RIGHT } }); const marker new google.maps.Marker({ position: latLong, map: map, icon: markerIcon }); marker.addListener(click, function () { window.open(url, _blank); }); initZoomControl(map); initFullscreenControl(map); } function initZoomControl(map) { controlsContainer.querySelector(.zoom-control-in).onclick function () { map.setZoom(map.getZoom() + 1); }; controlsContainer.querySelector(.zoom-control-out).onclick function () { map.setZoom(map.getZoom() - 1); }; map.controlsgoogle.maps.ControlPosition.RIGHT_BOTTOM.push(controlsContainer.querySelector(.zoom-control)); } function initFullscreenControl(map) { const elementToSendFullscreen map.getDiv().firstChild; const fullscreenControl controlsContainer.querySelector(.fullscreen-control); map.controlsgoogle.maps.ControlPosition.LEFT_BOTTOM.push(fullscreenControl); fullscreenControl.onclick function () { if (isFullscreen(elementToSendFullscreen)) { exitFullscreen(); } else { requestFullscreen(elementToSendFullscreen); } }; document.onwebkitfullscreenchange document.onmsfullscreenchange document.onmozfullscreenchange document.onfullscreenchange function () { if (isFullscreen(elementToSendFullscreen)) { fullscreenControl.classList.add(is-fullscreen); } else { fullscreenControl.classList.remove(is-fullscreen); } }; } function isFullscreen(element) { return (document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement) element; } function requestFullscreen(element) { if (element.requestFullscreen) { element.requestFullscreen(); } else if (element.webkitRequestFullScreen) { element.webkitRequestFullScreen(); } else if (element.mozRequestFullScreen) { element.mozRequestFullScreen(); } else if (element.msRequestFullScreen) { element.msRequestFullScreen(); } } function exitFullscreen() { if (document.exitFullscreen) { document.exitFullscreen(); } else if (document.webkitExitFullscreen) { document.webkitExitFullscreen(); } else if (document.mozCancelFullScreen) { document.mozCancelFullScreen(); } else if (document.msExitFullscreen) { document.msExitFullscreen(); } } const scrollDownAnimated function (element) { $(document.documentElement, document.body).animate({ scrollTop: element.offset().top }, 400); }; const isMobile window.innerWidth 768; let moreText section.getElementsByClassName(more-text)0; let moreTextCropped section.getElementsByClassName(more-text-cropped)0; let moreTextHolder section.getElementsByClassName(more-text-holder)0; let moreTextBlock section.getElementsByClassName(more-text-block)0; let $link $(# + sectionDomId + .link-more.js); let text; if (moreTextCropped) { text moreTextCropped.textContent; moreTextCropped.innerText text.trim(); } if (text && text.trim().length) { const moreLines 5; const moreLinesMobile 5; const numberOfLines isMobile ? moreLinesMobile : moreLines; function countLines(text) { let divHeight text.offsetHeight; let lineHeight parseInt($(text).css(line-height)); let lines divHeight / lineHeight; return lines; } section.style.setProperty(--maxHeight, moreText.offsetHeight + px); section.style.setProperty(--maxHeightInit, parseFloat($(moreText).css(line-height)) * numberOfLines + px); section.style.setProperty(--moreTextLines, moreLines); section.style.setProperty(--moreTextLinesMobile, moreLinesMobile); if (moreText) { if (countLines(moreText) > numberOfLines) { $(moreTextBlock).addClass(cropped).addClass(extended); } } $link.on(click, function () { $(moreTextBlock).toggleClass(cropped); $(this).toggleClass(link-more--less); if ($(this).hasClass(link-more--less)) { $(this).text(Show less); } else { $(this).text(Show more); scrollDownAnimated($(section.getElementsByClassName(subtitle)0)); } }); } else { if (moreTextHolder) moreTextHolder.style.display none; let subtitle section.getElementsByClassName(subtitle)0; if (!subtitle) { let description section.getElementsByClassName(description)0; if (description) description.style.display none; } } function processScroll() { let position section.getBoundingClientRect(); if (position.top + 100 window.innerHeight && position.bottom > 0) { if (moreTextBlock) $(moreTextBlock).addClass(visible); } } window.addEventListener(scroll, function () { processScroll(); }); processScroll(); $(window).on(scroll.lpui-auto-clean, processScroll); $(window).on(resize.lpui-auto-clean, processScroll); });})(section-ce67f81a-9ab8-4e08-be6b-4ddfb57b8e1a, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { var $section $(# + sectionDomId); var $calendarSlider $section.find(.js-calendar); const arrowsStyle $calendarSlider.data(arrows-style) || ; var $timeSelect $(# + sectionDomId + -time_frame); var $scheduleForm $section.find(.js-scheduled-form); var currentDate new Date(); var selectedDateTime {}; var numberOfDays +$calendarSlider.data(limit) - 1; var initSlidesNum $section.find(.no-image).length ? 4 : 3; var availableTime; var startTime $timeSelect.data(start); var endTime $timeSelect.data(end); function getLongTimeHours(time) { var hours Number(time.match(/^(\d+)/)1); var AMPM time.match(/\s(.*)$/)1; if (AMPM PM && hours 12) hours hours + 12; if (AMPM AM && hours 12) hours hours - 12; var sHours hours.toString(); return sHours; } if ($section.find(.schedule).length) { availableTime +getLongTimeHours(startTime), +getLongTimeHours(endTime); } function fillInDates(detesNum) { var startDate new Date(currentDate).getHours() availableTime1 ? 0 : 1; currentDate.setDate(currentDate.getDate() + startDate); for (i 0; i detesNum; i++) { var formattedCurrentDate new Date(currentDate).toLocaleString(default, { weekday: long, year: numeric, month: long, day: numeric }); $calendarSlider.append($(` div classcalendar__slide js-calendar-slide data-date${formattedCurrentDate}> div classcalendar__item> div classcalendar__day>${currentDate.toLocaleString(default, { weekday: long })}/div> div classcalendar__date>${currentDate.toLocaleString(default, { day: numeric })}/div> div classcalendar__month>${currentDate.toLocaleString(default, { month: short })}/div> /div> /div> `)); currentDate.setDate(currentDate.getDate() + 1); } } if ($section.find(.schedule).length) { fillInDates(numberOfDays); } function fillInTime(from, to) { var newDate; for (i from; i to; i++) { newDate new Date(`August 01, 2000 ${i}:00:00`).toLocaleString(en-US, { hour: numeric, minute: numeric, hour12: true }); $timeSelect.append($(`option value${i} >${newDate}/option>`)); } } if ($section.find(.schedule).length) { if (availableTime0 availableTime1) { fillInTime(availableTime0, availableTime1); } else { $timeSelect.find(option).first().text(There is no available time); } } if ($section.find(.schedule).length) { $calendarSlider.slick({ slidesToShow: initSlidesNum, slidesToScroll: 1, infinite: false, arrows: true, dots: false, focusOnSelect: false, nextArrow: `button classlp-arrow lp-arrow--next lp-arrow--dark slick-arrow ${arrowsStyle} aria-labelNext typebutton aria-disabledtrue>/button>`, prevArrow: `button classlp-arrow lp-arrow--prev lp-arrow--dark slick-arrow ${arrowsStyle} aria-labelPrevious typebutton aria-disabledtrue>/button>`, responsive: { breakpoint: 767, settings: { slidesToShow: 2 } }, { breakpoint: 579, settings: { slidesToShow: 1 } } }); } if ($section.find(.schedule).length) { $calendarSlider.find(.js-calendar-slide).on(click, function () { $calendarSlider.find(.js-calendar-slide).removeClass(selected); $(this).addClass(selected); if (new Date($(this).data(date)).getDate() new Date().getDate()) { var currentTime new Date().getHours(); $scheduleForm.find(.custom-select-toggle).addClass(is-placeholder).text($scheduleForm.find(select)0.children0.innerText); $scheduleForm.find(.custom-select-item).removeClass(is-selected); $section.find(.js-btn-next).attr(disabled, disabled); $(# + sectionDomId + -time_frame).closest(.select-holder).find(.custom-select-item:not(:first)).each(function (i) { if ($(this).val() currentTime) { $(this).attr(disabled, disabled); } }); $(# + sectionDomId + -time_frame).find(option:not(:first)).each(function (i) { if ($(this).val() currentTime) { $(this).attr(disabled, disabled); } }); } else { $(# + sectionDomId + -time_frame).find(option:not(:first)).removeAttr(disabled); $(# + sectionDomId + -time_frame).closest(.select-holder).find(.custom-select-item:not(:first)).removeAttr(disabled); } if ($(# + sectionDomId + -time_frame).val() && $section.find(.js-calendar-slide.selected).length && $section.find(.js-type-select:checked).length) { $section.find(.js-btn-next).removeAttr(disabled); } }); $(# + sectionDomId + -time_frame).on(change, function () { if ($section.find(.js-calendar-slide.selected).length && $section.find(.js-type-select:checked).length && $(# + sectionDomId + -time_frame).val()) { $section.find(.js-btn-next).removeAttr(disabled); } }); $section.find(.js-btn-next).click(function (e) { e.preventDefault(); selectedDateTime.date $section.find(.js-calendar-slide.selected).data(date); selectedDateTime.time $(# + sectionDomId + -time_frame).val(); selectedDateTime.type $section.find(.js-type-select:checked).val(); $section.find(.js-step-1).removeClass(visible); $section.find(.js-step-2).addClass(visible); var scheduledDateTime selectedDateTime.date + at + new Date(`August 01, 2000 ${selectedDateTime.time}:00:00`).toLocaleString(en-US, { hour: numeric, minute: numeric, hour12: true }); var leadInfo $section.find(.js-calendar-value).data(name) + + $section.find(.js-calendar-value).data(address) + . + scheduledDateTime + . + selectedDateTime.type; var leadMessage $section.find(.js-calendar-value).data(name) + + $section.find(.js-calendar-value).data(address); $section.find(.js-scheduled-time).text(scheduledDateTime); $section.find(.js-calendar-value).val(leadMessage); $section.find(.js-calendar-lead-time).val(scheduledDateTime); }); } function resetScheduleForm() { $section.find(.js-step-2).removeClass(visible); $section.find(.js-step-1).addClass(visible); $(# + sectionDomId + -time_frame).find(option:not(:first)).removeAttr(disabled); $(# + sectionDomId + -time_frame).closest(.select-holder).find(.custom-select-item:not(:first)).removeAttr(disabled); $section.find(.js-btn-next).attr(disabled, disabled); $section.find(.js-calendar-slide).removeClass(selected); $scheduleForm.find(.js-type-select).first().prop(checked, true); $scheduleForm.find(.custom-select-toggle).addClass(is-placeholder).text($scheduleForm.find(select)0.children0.innerText); $scheduleForm.find(.custom-select-item).removeClass(is-selected); } if ($section.find(.schedule).length) { $scheduleForm.on(reset, resetScheduleForm); $section.find(.js-btn-reset).click(resetScheduleForm); } function convertSelectToDropdown(selectItem) { let customDropdown ` div classcustom-select rolepresentation> button classcustom-select-toggle typebutton aria-haspopuptrue aria-expandedfalse>/button> div classcustom-select-menu> div classcustom-select-content> /div> /div> /div>`; $(customDropdown).insertAfter(selectItem); let $dropdown $(selectItem).next(); let $dropdownToggle $dropdown.find(.custom-select-toggle); let $dropdownMenu $dropdown.find(.custom-select-menu); let $dropdownContent $dropdown.find(.custom-select-content); $dropdownToggle.addClass($(selectItem).attr(class)).removeClass(dropdown-select); $dropdownToggle.attr(id, $(selectItem).attr(id) + custom); $dropdownToggle.attr(data-name, $(selectItem).attr(name)); $dropdownMenu.attr(aria-labelledby, $dropdownToggle.attr(id)); appendOptionButtons(selectItem, $dropdownContent); $(selectItem).removeClass().addClass(sr-only); $(selectItem).on(focus, function () { showSelectMenu($dropdownMenu0); $dropdownToggle.focus(); }); var toggleText $(selectItem).find(:selected).first().text() || $(selectItem).children().first().text(); $dropdownToggle.addClass(is-placeholder).html(toggleText); $dropdown.on(click, .custom-select-item, function (e) { if ($(this).hasClass(is-disabled)) return; let elementNumber $(this).index(); let $originalSelect $(this).closest(.custom-select).siblings(select); let $linkedOption $originalSelect.find(option).eq(elementNumber); if (!$linkedOption.prop(selected)) { $linkedOption.prop(selected, true); $originalSelect.change(); $(this).addClass(is-selected).siblings(.custom-select-item).removeClass(is-selected); $dropdownToggle.removeClass(is-placeholder).html($(this).html()); closeSelectMenu($(this).closest(.custom-select-menu)); } }); function convertOptionToButton(option) { var optionText $(option).text(); var optionValue $(option).attr(value) || $(option).text(); var optionIsDisabled $(option).prop(disabled); var outputButton `button value${optionValue} classcustom-select-item typebutton ${optionIsDisabled ? disabled : }>${optionText}/button>`; return outputButton; } function appendOptionButtons(selectItem, appendTarget) { $(selectItem).find(option).each(function () { let currentButton convertOptionToButton(this); $(appendTarget).append(currentButton); }); } function showSelectMenu(selectMenu) { var customSelect $(selectMenu).closest(.custom-select)0; $(customSelect).addClass(open); $(selectMenu).slideDown(); } function closeSelectMenu(selectMenu) { var customSelect $(selectMenu).closest(.custom-select)0; $(customSelect).removeClass(open); $(selectMenu).slideUp(); } $dropdown.on(click, .custom-select-toggle, function (e) { var $customSelect $(this).closest(.custom-select); var selectMenu $customSelect.find(.custom-select-menu)0; if ($customSelect.hasClass(open)) { closeSelectMenu(selectMenu); } else { showSelectMenu(selectMenu); } }); $(document.body).on(click, function (e) { if ($(e.target).closest(form).length 1 && $(.custom-select).hasClass(open)) { $(.custom-select.open).each(function () { var selectMenu $(this).find(.custom-select-menu)0; closeSelectMenu(selectMenu); }); } }); } function destroyCustomSelects(selectItem) { let selectClasses $(selectItem).find(.custom-select-toggle).removeClass(custom-select-toggle).removeClass(is-placeholder).addClass(dropdown-select).attr(class); $(selectItem).prev(select).removeClass().addClass(selectClasses); $(selectItem).remove(); } ; $section.find(form).on(reset, function () { $(this).find(.custom-select).each(function () { let linkedSelect $(this).siblings(select); $(this).find(.custom-select-toggle).text(linkedSelect.children().last()0.innerText); $(this).find(.custom-select-item).removeClass(is-selected); }); }); let selectInitClasses $section.find(.dropdown-select).attr(class); $section.find(.dropdown-select).each(function () { convertSelectToDropdown(this); }); const form $(# + sectionDomId).find(form); const redirectLink $(# + sectionDomId + .redirect-link); form.on(reset, function () { redirectPage(redirectLink); }); function redirectPage(link) { if (link.length) { const rawHref link.attr(href); link.attr(href, setHttp(rawHref)); link0.click(); } } function setHttp(link) { if (link.search(/^https?\:\/\/|\//) -1) { link http:// + link; } return link; }})(section-0e41715e-ad01-4d5c-91f3-d1d01a170055, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { let section document.getElementById(sectionDomId); let fakeMessage section.querySelector(.my-textarea); const form $(# + sectionDomId).find(form); $(# + sectionDomId + .js.form).on(formsubmitted, function (e) { setTimeout(function () { $(# + sectionDomId + .js.form).addClass(sent); fakeMessage.innerText ; }, 1000); setTimeout(function () { $(# + sectionDomId + .js.form).removeClass(success); }, 4000); setTimeout(function () { $(# + sectionDomId + .js.form).removeClass(sent); }, 6000); }); form.on(reset, function () { const redirectLink $(# + sectionDomId + .redirect-link); redirectPage(redirectLink); }); function redirectPage(link) { if (link.length) { const rawHref link.attr(href); link.attr(href, setHttp(rawHref)); link0.click(); } } function setHttp(link) { if (link.search(/^https?\:\/\/|\//) -1) { link http:// + link; } return link; } fakeMessage.addEventListener(keyup, function (e) { this.parentElement.querySelector(input).value this.innerText; }); let btnSubmit section.querySelector(.btn-submit); section.style.setProperty(--borderColor, $(btnSubmit).css(border-color)); const isDesktop window.innerWidth > 1440; let animatedTarget section.querySelector(.js-animation-target); if (animatedTarget && isDesktop) { const animationOffset section.getBoundingClientRect().bottom - animatedTarget.getBoundingClientRect().bottom; function processScroll() { let position section.getBoundingClientRect(); const headerHeight document.getElementById(global-navbar).offsetHeight; let scrollFactor headerHeight - position.top; if (scrollFactor > 0 && scrollFactor animationOffset) { animatedTarget.style.transform `translateY(${scrollFactor}px)`; } if (scrollFactor > animationOffset) { animatedTarget.style.transform `translateY(${animationOffset}px)`; } if (scrollFactor 0) { animatedTarget.style.transform `translateY(0px)`; } } window.addEventListener(scroll, function () { processScroll(); }); processScroll(); $(window).on(scroll.lpui-auto-clean, processScroll); $(window).on(resize.lpui-auto-clean, processScroll); }})(section-5545de1e-7a9b-4231-a5fb-428f82e4dff7, undefined);} catch(e) {console.log(e);} try {(function init(sectionDomId) { $(# + sectionDomId + .js.item).each(function () { var str $(this).find(.js.name).text(); var matches str.match(/\b(\w)/g); $(this).find(.js.initials).text(matches.join()); }); $(# + sectionDomId).find(.bioshort).each(function () { const fullText $(this).find(.full-text).text(); const parcialText $(this).find(.parcial-text).text().replace(..., ); if (fullText parcialText || fullText.length 350) { $(this).find(.js-more).hide(); } }); $(# + sectionDomId + .js-link).each(function () { if (!/^(?:f|ht)tps?\:\/\//.test($(this).attr(href))) { $(this).attr(href, http:// + $(this).attr(href)); } }); let $slick $(# + sectionDomId + .slick-slider.js); if ($slick) { $slick.slick({ slidesToShow: 1, variableWidth: false, centerMode: true, dots: false, autoplay: true, prevArrow: $(# + sectionDomId + .lp-arrow--prev), nextArrow: $(# + sectionDomId + .lp-arrow--next), centerPadding: 80px, autoplaySpeed: 6000, responsive: { breakpoint: 1025, arrows: false, settings: { centerPadding: 36px } }, { breakpoint: 768, settings: { dots: true, arrows: false, centerPadding: 24px } } }); } $(# + sectionDomId).find(.js-more).on(click, function (e) { if (e.target.dataset.status more) { $(e.target).parent().find(.full-text).show(); $(e.target).parent().find(.parcial-text).hide(); $(e.target).text(Show less); e.target.dataset.status less; } else { $(e.target).parent().find(.full-text).hide(); $(e.target).parent().find(.parcial-text).show(); $(e.target).text(Show more); e.target.dataset.status more; } }); if ($slick) { $slick.on(beforeChange, function (event, slick, currentSlide, nextSlide) { $slick.find(.parcial-text).show(); $slick.slick(slickPlay); $slick.find(.full-text).hide(); $slick.find(.js-more).text(Show more); document.querySelectorAll(# + sectionDomId + .js-more).forEach(e > { e.dataset.status more; }); }); }})(section-3ec4c7f5-5d80-479e-aba2-98a6aa68a209, undefined);} catch(e) {console.log(e);} var { body } document; var globalNav body.querySelector(:scope > nav); var globalSideMenu body.querySelector(:scope > div.sidemenu); document.querySelectorAll(body > .modal .close).forEach(modalCloseBtn > { modalCloseBtn.addEventListener(click, function() { window.lpUI.hideClosestModal(modalCloseBtn); }); }); window.addEventListener(click, function() { document.querySelectorAll(.share-popup).forEach(sharedPopup > { sharedPopup.style.display none ; }); }); /* Misc Partials / Addons */ function initWOW() { if (wow) { wow.init(); wow.scrollHandler(); setTimeout(function () { const wowHideStyle document.getElementById(wow-hide-elements); if(wowHideStyle) { wowHideStyle.disabled true; } }, 1); } } const wowHideElements document.getElementById(wow-hide-elements); if (wowHideElements) { wowHideElements.disabled false; } initWOW(); /* Generic Navbar Handling */ globalNav?.querySelectorAll(.hamburger-component).forEach(hamburgerComponent > { hamburgerComponent.addEventListener(click, function() { window.lpUI.sideMenuToggle(); }); }); globalSideMenu?.querySelectorAll(.toggle).forEach(toggleEl > { toggleEl.addEventListener(click, function() { window.lpUI.sideMenuToggle(); }); }); document.querySelectorAll(body > nav .sub-nav-container > a, body > div.sidemenu .sub-nav-container > a).forEach(linkEl > { linkEl.addEventListener(click, function(e) { e.preventDefault(); e.stopPropagation(); var subNav linkEl.parentElement.querySelector(:scope > .sub-nav); if (subNav && subNav.classList.contains(visible)){ subNav.classList.remove(visible); } else { globalNav?.querySelectorAll(.sub-nav-container .sub-nav).forEach(globalSubNav > { globalSubNav.classList.remove(visible); }); globalSideMenu?.querySelectorAll(.sub-nav).forEach(sideMenuSubNav > { sideMenuSubNav.classList.remove(visible); }); subNav?.classList.add(visible); } }); }); window.addEventListener(click, function() { document.querySelectorAll(nav .sub-nav.visible, .sidemenu .sub-nav.visible).forEach(subNavEl > { subNavEl.classList.remove(visible); }); }); } document.addEventListener(DOMContentLoaded, lpGlobalInit); /script> script typemodule> function selectorExists(selector) { return document.querySelector(selector) ! null; } // Function to initialize the third-party library function initParoller(selector .my-paroller) { var $parollerElements $(selector); if ($parollerElements.length > 0 && typeof $parollerElements.paroller function) { $parollerElements.paroller(); } } const parollerSelector .my-paroller; if (selectorExists(parollerSelector)) { window.luxuryPresence.libs.loadJs(window.luxuryPresence.libs.jsLibsMap.paroller.jsSrc, function() { initParoller(parollerSelector); window.luxuryPresence.libs.jsLibsMap.paroller.isLoaded true; }); } /script> !-- Google Tag Manager (noscript) --> noscript>iframe srchttps://www.googletagmanager.com/ns.html?idGTM-T9SFQGHZ height0 width0 styledisplay:none;visibility:hidden>/iframe>/noscript> !-- End Google Tag Manager --> script>(function(){function c(){var ba.contentDocument||a.contentWindow.document;if(b){var db.createElement(script);d.innerHTMLwindow.__CF$cv$params{r:9ae60a927fbeb338,t:MTc2NTgwMjc2MC4wMDAwMDA};var adocument.createElement(script);a.nonce;a.src/cdn-cgi/challenge-platform/scripts/jsd/main.js;document.getElementsByTagName(head)0.appendChild(a);;b.getElementsByTagName(head)0.appendChild(d)}}if(document.body){var adocument.createElement(iframe);a.height1;a.width1;a.style.positionabsolute;a.style.top0;a.style.left0;a.style.bordernone;a.style.visibilityhidden;document.body.appendChild(a);if(loading!document.readyState)c();else if(window.addEventListener)document.addEventListener(DOMContentLoaded,c);else{var edocument.onreadystatechange||function(){};document.onreadystatechangefunction(b){e(b);loading!document.readyState&&(document.onreadystatechangee,c())}}}})();/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]