
<style id="brg-panel-css">
/* ══════════════════════════════════════════════════════
   NAV HIDE WHILE PANEL IS OPEN
   ══════════════════════════════════════════════════════ */
#mainNav {
    transition: background .45s ease,
                -webkit-backdrop-filter .45s ease,
                backdrop-filter .45s ease,
                transform .42s cubic-bezier(.32,.72,0,1);
}
#mainNav.brg-nav-hidden { transform: translateY(-110%); }

/* ══════════════════════════════════════════════════════
   BODY SCROLL LOCK — overflow:hidden on <html> only.
   position:fixed on body breaks backdrop-filter on iOS Safari.
   ══════════════════════════════════════════════════════ */
html.brg-html-locked { overflow: hidden; }

/* ══════════════════════════════════════════════════════
   OVERLAY — scrim + slide animation (panel is the scroll container)
   ══════════════════════════════════════════════════════ */
#brg-panel-overlay {
    position:fixed;inset:0;z-index:201;
    background:rgba(0,0,0,.48);
    -webkit-backdrop-filter:blur(20px);
    backdrop-filter:blur(20px);
    overflow:hidden;
    opacity:0;pointer-events:none;
    transition:opacity .5s ease;
}
#brg-panel-overlay.brg-ov-on { opacity:1;pointer-events:auto; }
/* Close: the blur lingers briefly while the sheet exits, then fades away */
#brg-panel-overlay.brg-ov-closing { opacity:0; transition:opacity .34s ease .14s; }
/* During touch drag the JS drives the sheet transform + scrim opacity directly */
#brg-panel-overlay.brg-ov-dragging { transition:none; }
.brg-ov-dragging #brg-panel { transition:none; }

/* ══════════════════════════════════════════════════════
   PANEL CARD
   ══════════════════════════════════════════════════════ */
#brg-panel {
    width:75vw;
    min-width:320px;
    max-width:1600px;
    margin:calc(40px + env(safe-area-inset-top, 0px)) auto 0;
    max-height:calc(100vh - 40px - env(safe-area-inset-top, 0px));
    max-height:calc(100dvh - 40px - env(safe-area-inset-top, 0px));
    /* Fill the viewport below the peek gap so the sheet sits flush against
       the bottom edge even while only the skeleton is loaded (the mobile
       bottom-gap fix — dvh keeps it right under iOS toolbars). */
    min-height:calc(100vh - 40px - env(safe-area-inset-top, 0px));
    min-height:calc(100dvh - 40px - env(safe-area-inset-top, 0px));
    padding-bottom:env(safe-area-inset-bottom, 0px); /* keep the last section above the home indicator */
    background:#fff;
    border-radius:18px 18px 0 0;
    display:flex;flex-direction:column;
    position:relative;
    overflow-y:auto;
    overflow-x:hidden;
    overscroll-behavior:contain;
    -webkit-overflow-scrolling:touch;
    /* The sheet slides; the overlay only fades */
    transform:translateY(103%);
    transition:transform .62s cubic-bezier(.32,.72,0,1);
    will-change:transform;
}
.brg-ov-on #brg-panel { transform:translateY(0); }
.brg-ov-closing #brg-panel {
    transform:translateY(103%);
    transition:transform .46s cubic-bezier(.4,0,1,1);
}
@media(max-width:480px){
    #brg-panel {
        width:100%; margin-top:calc(20px + env(safe-area-inset-top, 0px));
        max-height:calc(100vh - 20px - env(safe-area-inset-top, 0px));
        max-height:calc(100dvh - 20px - env(safe-area-inset-top, 0px));
        min-height:calc(100vh - 20px - env(safe-area-inset-top, 0px));
        min-height:calc(100dvh - 20px - env(safe-area-inset-top, 0px));
    }
}

/* ── Sticky header ── */
#brg-pnl-hdr {
    flex-shrink:0;
    position:sticky;top:0;z-index:10;
    display:flex;align-items:center;justify-content:space-between;gap:10px;
    padding:0 18px 0 24px;height:60px;
    background:#fff;
    border-bottom:1px solid rgba(29,29,27,.1);
    border-radius:18px 18px 0 0;
}
/* Sheet grabber — drag affordance, touch screens only */
#brg-pnl-hdr::before {
    content:'';
    position:absolute;top:7px;left:50%;
    width:36px;height:4px;border-radius:2px;
    transform:translateX(-50%);
    background:rgba(29,29,27,.18);
    display:none;
}
@media(hover:none) and (pointer:coarse){
    #brg-pnl-hdr::before { display:block; }
}
#brg-pnl-hdr-info { min-width:0;flex:1;display:flex;flex-direction:column;gap:2px; }
#brg-pnl-eyebrow {
    display:block;font-family:var(--sans,'Neue Montreal',sans-serif);
    font-size:.48rem;font-weight:500;letter-spacing:.3em;
    text-transform:uppercase;color:var(--gold,#B8965A);line-height:1;
}
#brg-pnl-title {
    display:block;font-family:var(--sans,'Neue Montreal',sans-serif);
    font-size:.88rem;font-weight:400;color:#1d1d1b;
    letter-spacing:-.01em;line-height:1.25;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
#brg-pnl-hdr-right { display:flex;align-items:center;gap:6px;flex-shrink:0; }
#brg-pnl-ext {
    display:flex;align-items:center;justify-content:center;
    width:34px;height:34px;border-radius:50%;
    color:rgba(29,29,27,.4);text-decoration:none;
    transition:color .25s,background .25s;
}
#brg-pnl-ext:hover { color:#1d1d1b;background:rgba(29,29,27,.06); }
#brg-pnl-ext svg { width:13px;height:13px;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none; }
#brg-pnl-close {
    width:36px;height:36px;border-radius:50%;
    background:rgba(29,29,27,.08);border:none;cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    color:#1d1d1b;
    transition:background .25s,transform .25s;
    -webkit-tap-highlight-color:transparent;flex-shrink:0;
}
#brg-pnl-close:hover  { background:rgba(29,29,27,.16);transform:scale(1.08); }
#brg-pnl-close:active { transform:scale(.93); }
#brg-pnl-close svg { width:14px;height:14px;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;fill:none;pointer-events:none; }

#brg-pnl-body { flex:1; }

/* ══════════════════════════════════════════════════════
   GALLERY
   ══════════════════════════════════════════════════════ */
.brg-gal {
    position:relative;width:100%;aspect-ratio:16/9;
    overflow:hidden;background:#fff;
    user-select:none;-webkit-user-select:none;
}
.brg-gal-track {
    display:flex;height:100%;
    transition:transform 1.1s cubic-bezier(.32,.72,0,1);
    will-change:transform;
}
.brg-gal-slide { min-width:100%;height:100%;overflow:hidden; }
.brg-gal-slide img {
    width:100%;height:100%;object-fit:cover;display:block;
    user-select:none;-webkit-user-drag:none;pointer-events:none;
    opacity:0;transition:opacity .5s ease;
}
.brg-gal-empty {
    width:100%;aspect-ratio:16/9;
    background:#151515;
    display:flex;align-items:center;justify-content:center;
}
.brg-gal-empty svg { width:44px;height:44px;stroke:rgba(255,255,255,.18);stroke-width:1;fill:none; }
.brg-gal-arr {
    position:absolute;top:50%;transform:translateY(-50%);z-index:3;
    width:44px;height:44px;border-radius:50%;
    background:rgba(255,255,255,.16);
    -webkit-backdrop-filter:blur(6px);
    backdrop-filter:blur(6px);
    border:1px solid rgba(255,255,255,.22);color:#fff;
    display:flex;align-items:center;justify-content:center;
    cursor:pointer;transition:background .22s;
    -webkit-tap-highlight-color:transparent;
}
.brg-gal-arr:hover  { background:rgba(255,255,255,.3); }
.brg-gal-arr:active { transform:translateY(-50%) scale(.9); }
.brg-gal-arr.brg-prev { left:16px; }
.brg-gal-arr.brg-next { right:16px; }
.brg-gal-arr svg { width:18px;height:18px;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;fill:none; }
.brg-gal-arr[disabled] { opacity:.28;pointer-events:none; }

/* ── Unified bottom bar — media pills │ dots │ count badge ── */
.brg-gal-bottom {
    position:absolute;bottom:0;left:0;right:0;z-index:3;
    display:flex;align-items:center;
    padding:0 16px 14px;
    pointer-events:none;
}
.brg-gal-media {
    flex:1;display:flex;gap:6px;flex-wrap:wrap;
    align-items:center;pointer-events:auto;
    min-width:0;
}
.brg-gal-dots {
    flex:0 1 auto;min-width:0;display:flex;justify-content:center;
    align-items:center;gap:6px;flex-wrap:nowrap;overflow:hidden;
    padding:0 8px;pointer-events:none;
}
@media(max-width:600px){
    .brg-gal-dots.brg-gal-many { display:none; }
}
.brg-gal-dot {
    width:5px;height:5px;border-radius:50%;border:none;padding:0;
    background:rgba(255,255,255,.38);cursor:pointer;pointer-events:auto;
    transition:width .3s cubic-bezier(.32,.72,0,1),background .3s,border-radius .3s;
    -webkit-tap-highlight-color:transparent;
}
.brg-gal-dot.on { width:20px;border-radius:3px;background:var(--gold,#B8965A); }
.brg-gal-bright {
    flex:1;display:flex;justify-content:flex-end;
    align-items:center;gap:8px;pointer-events:auto;
}
/* Media pill and count pill share one geometry (28px capsule) */
.brg-gal-mbtn,
.brg-gal-count {
    display:inline-flex;align-items:center;gap:5px;
    padding:0 11px;height:28px;border-radius:14px;
    background:rgba(0,0,0,.38);
    -webkit-backdrop-filter:blur(8px);
    backdrop-filter:blur(8px);
    border:1px solid rgba(255,255,255,.18);
    color:rgba(255,255,255,.9);
    font-family:var(--sans,'Neue Montreal',sans-serif);
    font-size:.52rem;font-weight:500;letter-spacing:.1em;
    text-transform:uppercase;text-decoration:none;
    cursor:pointer;white-space:nowrap;flex-shrink:0;
    transition:background .22s;
    -webkit-tap-highlight-color:transparent;
}
.brg-gal-mbtn:hover, .brg-gal-count:hover { background:rgba(0,0,0,.58); color:#fff; }
.brg-gal-count { cursor:zoom-in; }
.brg-gal-mbtn svg { width:11px;height:11px;stroke:currentColor;stroke-width:2;fill:none;flex-shrink:0; }

/* Odometer — the counter number rolls vertically on change */
.brg-odo { display:inline-block;position:relative;overflow:hidden;height:1.2em;line-height:1.2em;vertical-align:bottom; }
.brg-odo > span { display:block;height:1.2em; }
.brg-odo .brg-odo-out { position:absolute;left:0;top:0;width:100%; }
@keyframes brgOdoIn  { from { transform:translateY(100%); }  to { transform:translateY(0); } }
@keyframes brgOdoOut { from { transform:translateY(0); }     to { transform:translateY(-100%); } }
.brg-odo .brg-odo-in  { animation:brgOdoIn  .32s cubic-bezier(.32,.72,0,1) both; }
.brg-odo .brg-odo-out { animation:brgOdoOut .32s cubic-bezier(.32,.72,0,1) both; }

/* ── Small screens: pills collapse to icons, row scrolls under a fade ── */
@media(max-width:600px){
    .brg-gal-media {
        flex-wrap:nowrap;overflow-x:auto;
        -webkit-overflow-scrolling:touch;
        scrollbar-width:none;
        -webkit-mask-image:linear-gradient(90deg,#000 82%,transparent 100%);
        mask-image:linear-gradient(90deg,#000 82%,transparent 100%);
        padding-right:14px;
    }
    .brg-gal-media::-webkit-scrollbar { display:none; }
    /* 3+ pills: drop the labels, keep the icons as tidy circles */
    .brg-gal-media.brg-media-dense .brg-mbtn-txt { display:none; }
    .brg-gal-media.brg-media-dense .brg-gal-mbtn { width:28px;padding:0;justify-content:center;gap:0; }
    .brg-gal-media.brg-media-dense .brg-gal-mbtn svg { width:12px;height:12px; }
}
@media(max-width:400px){
    .brg-gal-bottom { padding:0 10px 10px; }
    .brg-gal-media  { gap:4px; }
}

/* ══════════════════════════════════════════════════════
   SPEC ROW
   ══════════════════════════════════════════════════════ */
.brg-stats{background:#fff;border-bottom:1px solid rgba(29,29,27,.12)}
.brg-stats ul{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}
.brg-stats li{flex:1;min-width:120px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;text-align:left;padding:22px 22px 20px;border-right:1px solid rgba(29,29,27,.08);cursor:default}
.brg-stats li.brg-stat-price{flex:1.6;min-width:160px}
.brg-stats li:last-child{border-right:none}
.brg-stat-lbl{display:block;font-family:var(--sans,'Neue Montreal',sans-serif);font-size:.56rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:#6b6b68;margin-bottom:9px;white-space:nowrap}
.brg-stat-v{font-family:var(--sans,'Neue Montreal',sans-serif);font-weight:400;font-size:clamp(.9rem,1.5vw,1.1rem);letter-spacing:.01em;color:#1d1d1b;line-height:1.25;word-break:break-word}
.brg-stat-sfx{font-size:.8em;opacity:.7;margin-left:2px}
.brg-stat-v small{display:block;font-family:var(--sans,'Neue Montreal',sans-serif);font-size:.6rem;font-weight:400;letter-spacing:.12em;text-transform:uppercase;color:#9a9a96;margin-top:4px}
@media(max-width:767px){.brg-stats li{flex:0 0 50%;border-bottom:1px solid rgba(29,29,27,.08)}.brg-stats li.brg-stat-price{flex:0 0 100%;border-right:none}.brg-stats li:nth-child(even){border-right:none}.brg-stat-v{font-size:clamp(.9rem,4vw,1.15rem)}}
@media(max-width:400px){.brg-stats li{flex:0 0 100%;border-right:none}}

/* ══════════════════════════════════════════════════════
   DESCRIPTION
   ══════════════════════════════════════════════════════ */
.brg-desc{padding:40px 28px 32px;border-bottom:1px solid rgba(29,29,27,.12);background:#fff}
.brg-desc h2{font-family:var(--serif,'ABC Arizona',Georgia,serif);font-size:clamp(1.45rem,2.8vw,2.1rem);font-weight:300;text-transform:uppercase;color:#1d1d1b;letter-spacing:.01em;line-height:1.08;margin-bottom:22px}
.brg-desc-txt{font-family:var(--sans,'Neue Montreal',sans-serif);font-weight:400;font-size:1rem;color:#3c3c3a;line-height:1.8;letter-spacing:.01em}
.brg-desc-txt p{margin-bottom:1.1em}
.brg-desc-txt p:last-child{margin-bottom:0}
.brg-desc-txt ul,.brg-desc-txt ol{padding-left:1.4em;margin-bottom:1em}
.brg-desc-txt li{margin-bottom:.4em}

/* ══════════════════════════════════════════════════════
   PROPERTY DETAILS
   ══════════════════════════════════════════════════════ */
.brg-details{padding:36px 28px 44px;background:#fff;border-bottom:1px solid rgba(29,29,27,.12)}
.brg-details-ttl{font-family:var(--sans,'Neue Montreal',sans-serif);font-size:.62rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--gold,#B8965A);text-align:left;margin-bottom:6px}
.brg-inf-grid{display:grid;grid-template-columns:repeat(3,1fr);column-gap:24px;margin-bottom:36px}
.brg-inf-cell{border-top:1px solid rgba(29,29,27,.12);padding:15px 0 17px;display:flex;flex-direction:column;gap:6px}
.brg-inf-lbl{font-family:var(--sans,'Neue Montreal',sans-serif);font-size:.52rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:#6b6b68;line-height:1}
.brg-inf-val{font-family:var(--sans,'Neue Montreal',sans-serif);font-size:.88rem;font-weight:400;color:#1d1d1b;line-height:1.3}
.brg-tags-block{display:flex;flex-direction:column;gap:26px}
.brg-tags-ttl{font-family:var(--sans,'Neue Montreal',sans-serif);font-size:.56rem;font-weight:500;letter-spacing:.2em;text-transform:uppercase;color:#6b6b68;margin:0 0 12px}
.brg-tags-wrap{display:flex;flex-wrap:wrap;gap:8px}
.brg-tag{display:inline-block;padding:6px 13px;border:1px solid rgba(29,29,27,.16);background:#fff;font-family:var(--sans,'Neue Montreal',sans-serif);font-size:.56rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:#1d1d1b;transition:border-color .25s}
.brg-tag:hover{border-color:#1d1d1b}
@media(max-width:767px){.brg-inf-grid{grid-template-columns:repeat(2,1fr);column-gap:18px}.brg-details{padding:28px 18px 36px}}

/* ══════════════════════════════════════════════════════
   CONTACT — dark moment
   ══════════════════════════════════════════════════════ */
.brg-cntct{padding:64px 28px 56px;background:#151515;position:relative;overflow:hidden}
.brg-cntct-inner{max-width:520px;margin:0 auto;text-align:center}
.brg-cntct-eye{font-family:var(--sans,'Neue Montreal',sans-serif);font-size:.56rem;font-weight:500;letter-spacing:.26em;text-transform:uppercase;color:var(--gold-light,#D4B87A);margin-bottom:14px}
.brg-cntct-ttl{font-family:var(--serif,'ABC Arizona',Georgia,serif);font-style:italic;font-size:clamp(1.5rem,3vw,2.1rem);font-weight:300;color:#fff;letter-spacing:-.015em;line-height:1.2;margin:0}
.brg-cntct-line{width:52px;height:1px;background:var(--gold,#B8965A);margin:18px auto 0}
.brg-cntct-sub{font-family:var(--sans,'Neue Montreal',sans-serif);font-weight:400;font-size:.85rem;color:rgba(255,255,255,.58);line-height:1.75;letter-spacing:.01em;margin:22px 0 32px}
.brg-cntct .hs-form input,.brg-cntct .hs-form textarea,.brg-cntct .hs-form select{background:rgba(255,255,255,.05)!important;border:1px solid rgba(255,255,255,.18)!important;color:#fff!important;font-family:var(--sans)!important;border-radius:0!important}
.brg-cntct .hs-form input:focus,.brg-cntct .hs-form textarea:focus,.brg-cntct .hs-form select:focus{border-color:rgba(255,255,255,.5)!important;outline:none!important}
.brg-cntct .hs-form input::placeholder,.brg-cntct .hs-form textarea::placeholder{color:rgba(255,255,255,.3)!important}
.brg-cntct .hs-form label{font-family:var(--sans)!important;font-size:.58rem!important;font-weight:500!important;letter-spacing:.14em!important;text-transform:uppercase!important;color:rgba(255,255,255,.55)!important}
.brg-cntct .hs-form .hs-button{background:#fff!important;border:1px solid #fff!important;color:#1d1d1b!important;font-family:var(--sans)!important;font-size:.62rem!important;font-weight:500!important;padding:17px 36px!important;letter-spacing:.18em!important;text-transform:uppercase!important;border-radius:2px!important;cursor:pointer!important;transform:scale(1)!important;transition:background .7s var(--ease),color .7s var(--ease),transform .7s cubic-bezier(0.34,1.65,0.64,1)!important}
.brg-cntct .hs-form .hs-button:hover{background:rgba(255,255,255,.88)!important;transform:scale(1.03)!important}
@supports not (-webkit-hyphens:none){.brg-cntct .hs-form .hs-button{transition:background .7s var(--ease),color .7s var(--ease),letter-spacing .7s cubic-bezier(0.34,1.45,0.64,1),transform .7s cubic-bezier(0.34,1.65,0.64,1)!important}.brg-cntct .hs-form .hs-button:hover{letter-spacing:.22em!important}}
.brg-cntct .submitted-message{font-family:var(--serif)!important;font-size:1rem!important;color:#fff!important;font-weight:300!important}
#brg-pnl-hs-contact{min-height:48px}

/* ══════════════════════════════════════════════════════
   PDF SECTION
   ══════════════════════════════════════════════════════ */
.brg-pdf{padding:32px 28px 56px;background:#fff;text-align:center}
.brg-pdf-btn{display:inline-block;width:100%;max-width:380px;padding:15px 28px;background:transparent;border:1px solid #1d1d1b;border-radius:2px;color:#1d1d1b;font-family:var(--sans,'Neue Montreal',sans-serif);font-size:.6rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;cursor:pointer;transform:scale(1);transition:background .7s var(--ease),color .7s var(--ease),transform .7s cubic-bezier(0.34,1.65,0.64,1);-webkit-tap-highlight-color:transparent}
.brg-pdf-btn:hover{background:#1d1d1b;color:#fff;transform:scale(1.03)}
@supports not (-webkit-hyphens:none){.brg-pdf-btn{transition:background .7s var(--ease),color .7s var(--ease),letter-spacing .7s cubic-bezier(0.34,1.45,0.64,1),transform .7s cubic-bezier(0.34,1.65,0.64,1)}.brg-pdf-btn:hover{letter-spacing:.22em}}
.brg-pdf-form{max-width:380px;margin:18px auto 0;padding:24px 20px 20px;background:#fff;border:1px solid rgba(29,29,27,.16);display:none;text-align:left}
.brg-pdf-form.open{display:block}
.brg-gate-row{display:flex;gap:10px}
.brg-gate input{width:100%;box-sizing:border-box;margin:0 0 10px;padding:11px 12px;border:1px solid rgba(29,29,27,.18);border-radius:0;font-family:var(--sans);font-size:16px;color:#1d1d1b;background:#fff}
.brg-gate input:focus{outline:none;border-color:#1d1d1b}
.brg-gate-submit{width:100%;padding:12px 16px;background:var(--navy,#1B2A4A);border:1px solid var(--navy,#1B2A4A);color:#fff;font-family:var(--sans);font-size:.62rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;border-radius:2px;cursor:pointer}
.brg-gate-submit[disabled]{opacity:.6;cursor:default}
.brg-gate-msg{margin:10px 0 0;font-family:var(--sans);font-size:.64rem;color:#6b6b68;min-height:1em}
.brg-gate-msg a{color:var(--navy,#1B2A4A);text-decoration:underline}

/* ══════════════════════════════════════════════════════
   PANEL LOADER / ERROR — skeleton with shimmer
   ══════════════════════════════════════════════════════ */
.brg-pnl-err {
    padding:60px 28px;text-align:center;
    font-family:var(--sans,'Neue Montreal',sans-serif);
    font-size:.88rem;color:#6b6b68;line-height:1.7;
}
.brg-sk-wrap { width:100%; }
@keyframes brgShimmer { from { background-position:120% 0; } to { background-position:-80% 0; } }
.brg-sk-gal, .brg-sk-stat, .brg-sk-line {
    background:#efedea linear-gradient(100deg,rgba(255,255,255,0) 36%,rgba(255,255,255,.55) 50%,rgba(255,255,255,0) 64%);
    background-size:200% 100%;
    background-position:120% 0;
    animation:brgShimmer 1.6s linear infinite;
}
.brg-sk-gal { width:100%;aspect-ratio:16/9; }
.brg-sk-stats { display:flex;gap:24px;padding:28px; }
.brg-sk-stat { display:block;width:64px;height:14px; }
.brg-sk-lines { display:flex;flex-direction:column;gap:12px;padding:0 28px 28px; }
.brg-sk-line { display:block;width:100%;height:12px; }
.brg-sk-line-sm { width:62%; }

/* ══════════════════════════════════════════════════════
   FLOORPLAN LIGHTBOX
   ══════════════════════════════════════════════════════ */
#brg-fp-lb {
    display:none;
    position:fixed;inset:0;z-index:215;
    background:rgba(10,16,28,.96);
    align-items:center;justify-content:center;
    padding:calc(60px + env(safe-area-inset-top, 0px)) 24px calc(24px + env(safe-area-inset-bottom, 0px));
}
#brg-fp-lb.open { display:flex; }
#brg-fp-img {
    max-width:100%;max-height:100%;
    object-fit:contain;
    border-radius:4px;
    box-shadow:0 24px 80px rgba(0,0,0,.5);
}
#brg-fp-close {
    position:absolute;top:calc(16px + env(safe-area-inset-top, 0px));right:16px;
    width:44px;height:44px;border-radius:50%;
    background:rgba(255,255,255,.12);
    border:1px solid rgba(255,255,255,.18);
    display:flex;align-items:center;justify-content:center;
    cursor:pointer;transition:background .2s;
}
#brg-fp-close:hover { background:rgba(255,255,255,.24); }
#brg-fp-close svg { width:18px;height:18px;stroke:#fff;stroke-width:2;stroke-linecap:round;fill:none; }

/* ══════════════════════════════════════════════════════
   PHOTO LIGHTBOX — FLIP zoom from the gallery slide
   ══════════════════════════════════════════════════════ */
#brg-lb {
    position:fixed;inset:0;z-index:210;
    background:rgba(8,14,24,.97);
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    opacity:0;pointer-events:none;transition:opacity .3s ease;
}
#brg-lb.brg-lb-on { opacity:1;pointer-events:auto; }
#brg-lb-img {
    max-width:96vw;max-height:90vh;width:auto;height:auto;
    object-fit:contain;display:block;user-select:none;
    -webkit-user-drag:none;border-radius:2px;
    transform-origin:top left;
}
#brg-lb-img.brg-flip { transition:transform .5s cubic-bezier(.32,.72,0,1); }
.brg-lb-x {
    position:absolute;top:calc(20px + env(safe-area-inset-top, 0px));right:20px;
    width:40px;height:40px;border-radius:50%;
    background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);
    color:#fff;display:flex;align-items:center;justify-content:center;
    cursor:pointer;transition:background .22s;z-index:1;
    -webkit-tap-highlight-color:transparent;
}
.brg-lb-x:hover { background:rgba(255,255,255,.22); }
.brg-lb-x svg   { width:14px;height:14px;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;fill:none; }
.brg-lb-nav {
    position:absolute;top:50%;transform:translateY(-50%);
    width:48px;height:48px;border-radius:50%;
    background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);
    color:#fff;display:flex;align-items:center;justify-content:center;
    cursor:pointer;transition:background .22s;
    -webkit-tap-highlight-color:transparent;
}
.brg-lb-nav:hover { background:rgba(255,255,255,.22); }
.brg-lb-nav svg   { width:20px;height:20px;stroke:currentColor;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;fill:none; }
.brg-lb-p { left:16px; }
.brg-lb-n { right:16px; }
.brg-lb-count {
    position:absolute;bottom:calc(24px + env(safe-area-inset-bottom, 0px));left:0;right:0;text-align:center;
    font-family:var(--sans,'Neue Montreal',sans-serif);
    font-size:.68rem;letter-spacing:.14em;color:rgba(255,255,255,.55);
    pointer-events:none;
}
.brg-lb-nav[disabled] { opacity:.25;pointer-events:none; }
@media(max-width:767px){
    .brg-lb-p { left:8px; }
    .brg-lb-n { right:8px; }
}

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
    #brg-panel, #brg-panel-overlay, .brg-gal-track,
    .brg-cntct-line, #brg-lb, #brg-lb-img,
    .brg-gal-arr, .brg-gal-dot,
    .brg-sk-gal, .brg-sk-stat, .brg-sk-line,
    .brg-gal-slide img, .brg-odo .brg-odo-in, .brg-odo .brg-odo-out {
        transition:none!important; animation:none!important;
    }
}

/* ── Mobile tweaks ── */
@media(max-width:767px){
    #brg-pnl-hdr  { height:56px;padding:0 14px 0 18px; }
    .brg-desc     { padding:28px 18px 22px; }
    .brg-cntct    { padding:44px 18px 40px; }
    .brg-pdf      { padding:24px 18px 44px; }
}
</style>

<!-- ══════════════════════════════════════════════════════
     BOTTOM SHEET PANEL — the panel is the scroll container;
     the sticky header never scrolls away.
     ══════════════════════════════════════════════════════ -->
<div id="brg-panel-overlay"
     role="dialog"
     aria-modal="true"
     aria-labelledby="brg-pnl-title"
     aria-hidden="true"
     tabindex="-1">

<div id="brg-panel">

    <div id="brg-pnl-hdr">
        <div id="brg-pnl-hdr-info">
            <span id="brg-pnl-eyebrow">Property</span>
            <span id="brg-pnl-title"></span>
        </div>
        <div id="brg-pnl-hdr-right">
            <a id="brg-pnl-ext" href="#" target="_blank" rel="noopener"
               title="View full page">
                <svg viewBox="0 0 24 24"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg>
            </a>
            <button id="brg-pnl-close"
                    aria-label="Close">
                <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
            </button>
        </div>
    </div>

    <div id="brg-pnl-body"><!-- populated by JS --></div>

</div><!-- #brg-panel -->

</div><!-- #brg-panel-overlay -->

<!-- Floorplan lightbox -->
<div id="brg-fp-lb" aria-hidden="true" aria-label="Floorplan" role="dialog">
    <button id="brg-fp-close" aria-label="Close">
        <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
    </button>
    <img id="brg-fp-img" src="" alt="Floorplan">
</div>

<!-- Photo lightbox -->
<div id="brg-lb" role="dialog" aria-modal="true"
     aria-label="Photo gallery"
     aria-hidden="true">
    <button class="brg-lb-x" aria-label="Close">
        <svg viewBox="0 0 24 24"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
    </button>
    <img id="brg-lb-img" src="" alt="" draggable="false">
    <button class="brg-lb-nav brg-lb-p" aria-label="Previous photo">
        <svg viewBox="0 0 24 24"><polyline points="15 18 9 12 15 6"/></svg>
    </button>
    <button class="brg-lb-nav brg-lb-n" aria-label="Next photo">
        <svg viewBox="0 0 24 24"><polyline points="9 18 15 12 9 6"/></svg>
    </button>
    <div class="brg-lb-count" aria-live="polite"></div>
</div>

<script id="brg-panel-js">
(function () {
'use strict';

/* ── DOM refs ─────────────────────────────────────────── */
var overlay  = document.getElementById('brg-panel-overlay');
var panel    = document.getElementById('brg-panel');
var pnlBody  = document.getElementById('brg-pnl-body');
var pnlTitle = document.getElementById('brg-pnl-title');
var pnlExt   = document.getElementById('brg-pnl-ext');
var pnlClose = document.getElementById('brg-pnl-close');
var pnlHdr   = document.getElementById('brg-pnl-hdr');
var lb       = document.getElementById('brg-lb');
var lbImg    = document.getElementById('brg-lb-img');
var lbClose  = lb.querySelector('.brg-lb-x');
var lbPrev   = lb.querySelector('.brg-lb-p');
var lbNext   = lb.querySelector('.brg-lb-n');
var lbCount  = lb.querySelector('.brg-lb-count');
var fpLb     = document.getElementById('brg-fp-lb');
var fpImg    = document.getElementById('brg-fp-img');
var fpClose  = document.getElementById('brg-fp-close');

if (!panel || !overlay) return;

var REDUCE = window.matchMedia('(prefers-reduced-motion: reduce)').matches;

/* ── Config ───────────────────────────────────────────── */
var CFG = {
    ajaxUrl:  "https:\/\/baldorealtygroup.com\/wp-admin\/admin-ajax.php?lang=en",
    nonce:    "b135a6c2ad",
    lang:     "en",
    hsPortal: '25138093',
    hsRegion: 'eu1',
    hsSrc:    '//js-eu1.hs-scripts.com/25138093.js'
};

/* ── State ────────────────────────────────────────────── */
var S = {
    open:false,busy:false,fetchId:0,scrollY:0,origUrl:'',origTitle:'',sbWidth:0,
    pushed:false,
    galIdx:0,galTotal:0,galTimer:null,galPlaying:false,
    lbImages:[],lbIdx:0,lbOpen:false,
    pdfInited:false,hsLoading:false,hsCallbacks:[],currentId:null,
    preNonce:null,preNonceTime:0,preNonceInflight:null
};
var NONCE_TTL = 10000;

function esc(s){if(s==null)return '';return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');}
function icon(path,vb){vb=vb||'0 0 24 24';return '<svg viewBox="'+vb+'" aria-hidden="true" focusable="false">'+path+'</svg>';}
var ICON = {
    play:  icon('<polygon points="5 3 19 12 5 21 5 3"/>'),
    pause: icon('<rect x="6" y="4" width="4" height="16"/><rect x="14" y="4" width="4" height="16"/>'),
    globe: icon('<circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>'),
    plan:  icon('<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/>'),
    chevL: icon('<polyline points="15 18 9 12 15 6"/>'),
    chevR: icon('<polyline points="9 18 15 12 9 6"/>'),
    imgOff:icon('<rect x="3" y="3" width="18" height="18" rx="2"/><line x1="3" y1="21" x2="21" y2="3"/>')
};

/* ────────────────────────────────────────────────────────
   SCROLL LOCK
───────────────────────────────────────────────────────── */
function lockScroll(){
    S.scrollY = window.pageYOffset;
    S.sbWidth = window.innerWidth - document.documentElement.clientWidth;
    if (S.sbWidth > 0) document.body.style.paddingRight = S.sbWidth + 'px';
    document.documentElement.classList.add('brg-html-locked');
}
function unlockScroll(){
    document.documentElement.classList.remove('brg-html-locked');
    document.body.style.paddingRight = '';
    document.body.style.overflow = '';
    window.scrollTo(0, S.scrollY);
}

/* ────────────────────────────────────────────────────────
   PANEL OPEN / CLOSE
───────────────────────────────────────────────────────── */
function openPanel(postId, enId){
    enId = enId || postId;
    if (S.open && S.currentId === postId) return;

    if (!S.open) {
        /* Close mobile menu if open — mirrors closeMob() in header.php */
        var mm = document.getElementById('brgMobWrap');
        var hb = document.getElementById('navHamburger');
        if (mm && mm.classList.contains('open')) {
            mm.classList.remove('open');
            mm.setAttribute('aria-hidden', 'true');
            if (hb) { hb.setAttribute('aria-expanded', 'false'); hb.classList.remove('is-open'); }
            document.body.style.overflow = '';
        }
        lockScroll();
        var navEl = document.getElementById('mainNav');
        if (navEl) navEl.classList.add('brg-nav-hidden');
        overlay.classList.remove('brg-ov-closing');
        overlay.classList.add('brg-ov-on');
        overlay.removeAttribute('aria-hidden');
        /* iOS Safari can cache a stale scrollTop without the rAF reset */
        requestAnimationFrame(function(){ panel.scrollTop = 0; });
        S.open      = true;
        S.origUrl   = window.location.href;
        S.origTitle = document.title;
    }
    S.currentId = postId;
    loadProperty(postId, enId);
}

function closePanel(fromPopstate){
    if (!S.open) return;
    S.open = false; S.currentId = null;
    panel.scrollTop = 0;

    overlay.classList.remove('brg-ov-dragging');
    panel.style.transform = '';
    overlay.style.opacity = '';
    overlay.classList.add('brg-ov-closing');
    overlay.classList.remove('brg-ov-on');

    var cleaned = false;
    function cleanup(){
        if (cleaned) return;
        cleaned = true;
        if (S.open) return; /* reopened before the close finished — leave the live panel alone */
        overlay.classList.remove('brg-ov-closing');
        overlay.setAttribute('aria-hidden','true');
        pnlBody.innerHTML = ''; pnlTitle.textContent = '';
        if (pnlExt) pnlExt.href = '#';
        clearInterval(S.galTimer); S.galTimer = null; S.galPlaying = false;
        S.galIdx = 0; S.galTotal = 0;
        S.lbImages = []; S.pdfInited = false;
        var navEl = document.getElementById('mainNav');
        if (navEl) navEl.classList.remove('brg-nav-hidden');
    }
    panel.addEventListener('transitionend', function onEnd(e){
        if (e.target !== panel || e.propertyName !== 'transform') return;
        panel.removeEventListener('transitionend', onEnd);
        cleanup();
    });
    setTimeout(cleanup, 520); /* fallback: reduced-motion sets transition:none */

    unlockScroll();
    closeLightbox(true);

    /* History: the panel session added exactly one entry (first open pushed,
       later opens replaced). Walking back removes it, so the browser's back
       button is clean afterwards. On popstate the browser already moved. */
    document.title = S.origTitle;
    if (!fromPopstate && S.pushed) {
        S.pushed = false;
        history.back();
    } else {
        S.pushed = false;
        if (!fromPopstate) history.replaceState({}, S.origTitle, S.origUrl);
    }
}

/* ────────────────────────────────────────────────────────
   DRAG-TO-DISMISS — touch-follow sheet (coarse pointers)
   Engages when the gesture starts on the header, or anywhere
   in the panel while its scrollTop is 0 and the pull is
   downward + vertical-dominant. Release past 120px or with
   downward velocity > .55 px/ms dismisses; otherwise springs
   back. Transform-only; horizontal gallery swipes unaffected.
───────────────────────────────────────────────────────── */
(function(){
    var startY = 0, startX = 0, lastY = 0, lastT = 0, vel = 0;
    var dragging = false, candidate = false, fromHeader = false;

    function onStart(e){
        if (!S.open || S.lbOpen || e.touches.length !== 1) return;
        startY = lastY = e.touches[0].clientY;
        startX = e.touches[0].clientX;
        lastT  = e.timeStamp;
        fromHeader = !!e.target.closest('#brg-pnl-hdr');
        candidate  = fromHeader || panel.scrollTop <= 0;
        dragging   = false;
        vel        = 0;
    }
    function onMove(e){
        if (!candidate || !S.open) return;
        var y  = e.touches[0].clientY;
        var dy = y - startY;
        var dx = Math.abs(e.touches[0].clientX - startX);

        if (!dragging) {
            /* Engage only on a clearly downward, vertical-dominant pull */
            if (dy > 10 && dy > dx * 1.4 && (fromHeader || panel.scrollTop <= 0)) {
                dragging = true;
                overlay.classList.add('brg-ov-dragging');
            } else if (dy < -6 || dx > 24) {
                candidate = false; /* upward scroll or horizontal swipe — hands off */
                return;
            }
        }
        if (dragging) {
            e.preventDefault(); /* stop the panel scrolling underneath */
            var pull = Math.max(0, dy);
            /* light resistance past 200px so it feels weighted */
            var eased = pull < 200 ? pull : 200 + (pull - 200) * .55;
            panel.style.transform   = 'translateY(' + eased + 'px)';
            overlay.style.opacity   = String(Math.max(.3, 1 - eased / 700));
            var dt = e.timeStamp - lastT;
            if (dt > 0) vel = (y - lastY) / dt;
            lastY = y; lastT = e.timeStamp;
        }
    }
    function onEnd(){
        if (!dragging) { candidate = false; return; }
        dragging = false; candidate = false;
        var pulled = parseFloat((panel.style.transform.match(/translateY\(([\d.]+)px\)/) || [0,0])[1]) || 0;
        overlay.classList.remove('brg-ov-dragging');
        if (pulled > 120 || vel > .55) {
            closePanel();
        } else {
            /* spring back — clear inline styles, class transitions ease home */
            panel.style.transform = '';
            overlay.style.opacity = '';
        }
    }
    panel.addEventListener('touchstart', onStart, { passive: true });
    panel.addEventListener('touchmove',  onMove,  { passive: false });
    panel.addEventListener('touchend',   onEnd,   { passive: true });
    panel.addEventListener('touchcancel',onEnd,   { passive: true });
})();

/* ────────────────────────────────────────────────────────
   NONCE — prefetch on hover, ride in-flight requests
───────────────────────────────────────────────────────── */
function prefetchNonce(){
    if (S.preNonceInflight) return S.preNonceInflight;
    if (S.preNonce && (Date.now() - S.preNonceTime) < NONCE_TTL) return Promise.resolve(S.preNonce);
    var fd = new FormData();
    fd.append('action','brg_get_nonce');
    S.preNonceInflight = fetch(CFG.ajaxUrl, { method:'POST', body:fd })
        .then(function(r){ return r.json(); })
        .then(function(nr){
            if (nr && nr.success && nr.data && nr.data.nonce) { S.preNonce = nr.data.nonce; S.preNonceTime = Date.now(); }
            S.preNonceInflight = null;
            return S.preNonce;
        })
        .catch(function(){ S.preNonceInflight = null; return null; });
    return S.preNonceInflight;
}

/* ────────────────────────────────────────────────────────
   FETCH PROPERTY DATA
───────────────────────────────────────────────────────── */
function loadProperty(postId, enId){
    var myId = ++S.fetchId;
    S.busy = true; S.pdfInited = false;
    pnlBody.innerHTML = buildLoader();

    if (S.preNonce && (Date.now() - S.preNonceTime) < NONCE_TTL) {
        fetchPanel(myId, postId, enId, S.preNonce);
    } else if (S.preNonceInflight) {
        S.preNonceInflight.then(function(n){
            if (myId !== S.fetchId) return;
            if (n && (Date.now() - S.preNonceTime) < NONCE_TTL) fetchPanel(myId, postId, enId, n);
            else fetchNonceThenPanel(myId, postId, enId);
        });
    } else {
        fetchNonceThenPanel(myId, postId, enId);
    }
}
function fetchNonceThenPanel(myId, postId, enId){
    var nonceFd = new FormData();
    nonceFd.append('action','brg_get_nonce');
    fetch(CFG.ajaxUrl, { method:'POST', body:nonceFd })
        .then(function(r){ return r.json(); })
        .then(function(nr){
            if (myId !== S.fetchId) return;
            var fresh = (nr && nr.success && nr.data && nr.data.nonce) ? nr.data.nonce : CFG.nonce;
            fetchPanel(myId, postId, enId, fresh);
        })
        .catch(function(){
            if (myId !== S.fetchId) return;
            S.busy = false;
            pnlBody.innerHTML = '<div class="brg-pnl-err">Connection error. Please try again.</div>';
        });
}
function fetchPanel(myId, postId, enId, nonce){
    var fd = new FormData();
    fd.append('action','brg_property_panel');
    fd.append('nonce', nonce);
    fd.append('post_id', postId);
    fd.append('en_id', enId || postId);
    fd.append('lang', CFG.lang);
    fetch(CFG.ajaxUrl, { method:'POST', body:fd })
        .then(function(r){ return r.json(); })
        .then(function(res){
            if (!res || myId !== S.fetchId) return;
            S.busy = false;
            if (res.success && res.data) renderPanel(res.data);
            else { S.preNonce = null; pnlBody.innerHTML = '<div class="brg-pnl-err">Property could not be loaded.</div>'; }
        })
        .catch(function(){
            if (myId !== S.fetchId) return;
            S.busy = false; S.preNonce = null;
            pnlBody.innerHTML = '<div class="brg-pnl-err">Connection error. Please try again.</div>';
        });
}

/* ────────────────────────────────────────────────────────
   RENDER
───────────────────────────────────────────────────────── */
function renderPanel(d){
    var s = d.strings || {};
    pnlTitle.textContent = d.title || '';
    if (pnlExt) { pnlExt.href = d.permalink || '#'; pnlExt.title = s.view_full || 'View full page'; }

    /* History: one entry per panel session — push once, then replace */
    if (d.permalink) {
        var st = { brgPanel:true, postId:d.post_id, enId:d.en_id || d.post_id };
        if (S.pushed) history.replaceState(st, d.title, d.permalink);
        else { history.pushState(st, d.title, d.permalink); S.pushed = true; }
        document.title = d.title + ' — Baldo Realty Group';
    }

    S.galIdx = 0;
    S.galTotal = (d.slides && d.slides.length) ? d.slides.length : 0;
    S.lbImages = d.all_images || d.slides || [];

    pnlBody.innerHTML = [
        buildGallery(d, s),
        buildStats(d, s),
        buildDescription(d),
        buildDetails(d, s),
        buildContact(d, s),
        buildPdf(d, s)
    ].join('');

    initGallery();
    initGalleryLightbox();
    initGalleryFade();
    initPdfToggle(d);
    initHubSpot(d);

    panel.scrollTop = 0;
    setTimeout(function(){ overlay.focus(); }, 50);
}

/* ─── Gallery HTML ───────────────────────────────────── */
function buildGallery(d, s){
    if (!d.slides || !d.slides.length) {
        return '<div class="brg-gal-empty">' + ICON.imgOff + '</div>';
    }
    var multi = d.slides.length > 1;
    var h = '<div class="brg-gal" id="brg-gal" role="img" aria-label="' + esc(d.title) + '">';
    h += '<div class="brg-gal-track" id="brg-gal-track">';
    d.slides.forEach(function(img, i){
        var load = i < 3 ? 'eager' : 'lazy';
        h += '<div class="brg-gal-slide"><img src="' + esc(img.full || img.url) + '" alt="' + esc(img.alt || d.title) + '" loading="' + load + '"></div>';
    });
    h += '</div>';

    if (multi) {
        h += '<button class="brg-gal-arr brg-prev" aria-label="Previous photo">' + ICON.chevL + '</button>';
        h += '<button class="brg-gal-arr brg-next" aria-label="Next photo">'    + ICON.chevR + '</button>';
    }

    h += '<div class="brg-gal-bottom">';

    /* Left — media pills (labels wrapped so small screens can go icon-only) */
    var mBtns = [];
    function mbtn(inner){ mBtns.push(inner); }
    if (d.youtube_id)  mbtn('<a class="brg-gal-mbtn" href="https://www.youtube.com/watch?v=' + esc(d.youtube_id) + '" target="_blank" rel="noopener">' + ICON.play + '<span class="brg-mbtn-txt">' + esc(s.video || 'Video') + '</span></a>');
    if (d.vimeo_id)    mbtn('<a class="brg-gal-mbtn" href="https://vimeo.com/' + esc(d.vimeo_id) + '" target="_blank" rel="noopener">' + ICON.play + '<span class="brg-mbtn-txt">' + esc(s.video || 'Video') + '</span></a>');
    if (d.virtual_tour) mbtn('<a class="brg-gal-mbtn" href="' + esc(d.virtual_tour) + '" target="_blank" rel="noopener noreferrer">' + ICON.globe + '<span class="brg-mbtn-txt">' + esc(s.virtual || 'Tour') + '</span></a>');
    if (d.floorplans && d.floorplans.length) mbtn('<button class="brg-gal-mbtn brg-fp-trigger" data-fp="' + esc(d.floorplans[0]) + '">' + ICON.plan + '<span class="brg-mbtn-txt">' + esc(s.floorplan || 'Floorplan') + '</span></button>');
    h += '<div class="brg-gal-media' + (mBtns.length >= 3 ? ' brg-media-dense' : '') + '">' + mBtns.join('') + '</div>';

    /* Centre — dots */
    if (multi) {
        h += '<div class="brg-gal-dots' + (d.slides.length > 10 ? ' brg-gal-many' : '') + '" id="brg-gal-dots" aria-hidden="true">';
        d.slides.forEach(function(_, i){
            h += '<button class="brg-gal-dot' + (i===0?' on':'') + '" data-i="' + i + '" tabindex="-1"></button>';
        });
        h += '</div>';
    } else {
        h += '<div class="brg-gal-dots"></div>';
    }

    /* Right — autoplay toggle + count pill (odometer number when many) */
    h += '<div class="brg-gal-bright">';
    if (multi) h += '<button class="brg-gal-mbtn brg-gal-auto" id="brg-gal-auto" aria-label="Pause slideshow">' + ICON.pause + '</button>';
    if (S.lbImages.length) {
        var many = d.slides.length > 10;
        h += '<span class="brg-gal-count" id="brg-gal-count" tabindex="0" role="button" aria-label="View all photos"'
           + (many ? ' data-many="1" data-total="' + d.slides.length + '"' : '') + '>'
           + (many
               ? '<span class="brg-odo" id="brg-gal-odo"><span class="brg-odo-cur">1</span></span>&nbsp;/&nbsp;' + d.slides.length
               : S.lbImages.length + '&nbsp;<span class="brg-mbtn-txt">' + esc(s.photo || 'Photos') + '</span>')
           + '</span>';
    }
    h += '</div>';

    h += '</div>'; /* .brg-gal-bottom */
    h += '</div>';
    return h;
}

/* ─── Stats HTML ─────────────────────────────────────── */
function buildStats(d, s){
    function ok(v){ return v && v !== '0' && v !== 0; }
    function cell(lbl, val, sfx){
        if (!ok(val)) return '';
        return '<li><span class="brg-stat-lbl">' + esc(lbl) + '</span><span class="brg-stat-v">' + esc(val) + (sfx ? '<span class="brg-stat-sfx">' + sfx + '</span>' : '') + '</span></li>';
    }
    var li = '';
    if (ok(d.price_display)) {
        li += '<li class="brg-stat-price"><span class="brg-stat-lbl">' + esc(s.price || 'Price') + '</span><span class="brg-stat-v">' + esc(d.price_display)
            + (d.rent_type === 'monthly' ? '<small>' + esc(s.rent_monthly || 'Monthly') + '</small>' : '')
            + (d.rent_type === 'weekly'  ? '<small>' + esc(s.rent_weekly  || 'Weekly')  + '</small>' : '')
            + '</span></li>';
    }
    li += cell(s.bedrooms   || 'Bedrooms',    d.bedrooms);
    li += cell(s.bathrooms  || 'Bathrooms',   d.bathrooms);
    li += cell(s.parking    || 'Parking',     d.parking);
    li += cell(s.mq         || 'm² Total',    d.mq,          ' m²');
    li += cell(s.mq_internal|| 'm² Internal', d.mq_internal, ' m²');
    li += cell(s.mq_external|| 'm² External', d.mq_external, ' m²');
    if (!li) return '';
    return '<div class="brg-stats"><ul>' + li + '</ul></div>';
}

/* ─── Description HTML ───────────────────────────────── */
function buildDescription(d){
    if (!d.title && !d.description) return '';
    var h = '<div class="brg-desc">';
    if (d.title)       h += '<h2>' + esc(d.title) + '</h2>';
    if (d.description) h += '<div class="brg-desc-txt">' + d.description + '</div>';
    return h + '</div>';
}

/* ─── Details HTML ───────────────────────────────────── */
function buildDetails(d, s){
    function ok(v){ return v && v !== '0' && v !== 0; }
    function cell(lbl, val){
        if (!ok(val)) return '';
        return '<div class="brg-inf-cell"><span class="brg-inf-lbl">' + esc(lbl) + '</span><span class="brg-inf-val">' + esc(val) + '</span></div>';
    }
    var info = [
        cell(s.prop_type, d.property_type),
        cell(s.status,    d.property_status),
        cell(s.location,  d.location),
        cell(s.prop_id,   d.property_id_val),
        cell(s.bedrooms,  d.bedrooms),
        cell(s.bathrooms, d.bathrooms),
        ok(d.mq)          ? cell(s.mq,          d.mq          + ' m²') : '',
        ok(d.mq_internal) ? cell(s.mq_internal, d.mq_internal + ' m²') : '',
        ok(d.mq_external) ? cell(s.mq_external, d.mq_external + ' m²') : '',
        cell(s.parking,   d.parking)
    ].join('');
    function tags(ttl, raw){
        if (!ok(raw)) return '';
        var items = String(raw).split(/[\n,]+/).map(function(t){ return t.trim(); }).filter(Boolean);
        if (!items.length) return '';
        return '<div class="brg-tags-section"><p class="brg-tags-ttl">' + esc(ttl) + '</p><div class="brg-tags-wrap">'
             + items.map(function(t){ return '<span class="brg-tag">' + esc(t) + '</span>'; }).join('')
             + '</div></div>';
    }
    var tagsHtml = tags(s.services || 'Services', d.services) + tags(s.features || 'Features', d.features);
    if (!info && !tagsHtml) return '';
    return '<div class="brg-details"><div class="brg-details-ttl">' + esc(s.services_title || 'Details') + '</div>'
         + (info ? '<div class="brg-inf-grid">' + info + '</div>' : '')
         + (tagsHtml ? '<div class="brg-tags-block">' + tagsHtml + '</div>' : '')
         + '</div>';
}

/* ─── Contact / PDF / Loader HTML ────────────────────── */
function buildContact(d, s){
    return '<div class="brg-cntct" data-theme="dark"><div class="brg-cntct-inner">'
         + '<p class="brg-cntct-eye">'  + esc(s.contact_eyebrow || 'Enquiries') + '</p>'
         + '<h3 class="brg-cntct-ttl">' + esc(s.contact_title   || 'Speak With Us') + '</h3>'
         + '<div class="brg-cntct-line"></div>'
         + '<p class="brg-cntct-sub">'  + esc(s.contact_sub || '') + '</p>'
         + '<div id="brg-pnl-hs-contact"></div>'
         + '</div></div>';
}
function buildPdf(d, s){
    return '<div class="brg-pdf"><button class="brg-pdf-btn" id="brg-pdf-btn">' + esc(s.download_pdf || 'Download Brochure') + '</button>'
      + '<div class="brg-pdf-form" id="brg-pdf-form">'
      + '<form class="brg-gate" id="brg-gate" novalidate data-wait="' + esc(s.pdf_wait||'') + '" data-err="' + esc(s.pdf_err||'') + '" data-open="' + esc(s.pdf_open||'') + '">'
      + '<div class="brg-gate-row"><input type="text" name="firstname" placeholder="' + esc(s.pdf_first||'First name') + '" autocomplete="given-name" required><input type="text" name="lastname" placeholder="' + esc(s.pdf_last||'Last name') + '" autocomplete="family-name" required></div>'
      + '<input type="email" name="email" placeholder="' + esc(s.pdf_email||'Email') + '" autocomplete="email" required>'
      + '<button type="submit" class="brg-gate-submit">' + esc(s.pdf_submit||'Download') + '</button>'
      + '<p class="brg-gate-msg" aria-live="polite"></p>'
      + '</form></div></div>';
}
function buildLoader(){
    return '<div class="brg-sk-wrap"><div class="brg-sk-gal"></div>'
         + '<div class="brg-sk-stats"><span class="brg-sk-stat"></span><span class="brg-sk-stat"></span><span class="brg-sk-stat"></span></div>'
         + '<div class="brg-sk-lines"><span class="brg-sk-line"></span><span class="brg-sk-line brg-sk-line-sm"></span></div></div>';
}

/* ────────────────────────────────────────────────────────
   GALLERY INTERACTION
───────────────────────────────────────────────────────── */
/* Odometer roll for the "n / total" counter */
function odoSet(n){
    var odo = document.getElementById('brg-gal-odo');
    if (!odo) return;
    var cur = odo.querySelector('.brg-odo-cur');
    if (!cur || cur.textContent === String(n)) return;
    if (REDUCE) { cur.textContent = String(n); return; }
    var out = document.createElement('span');
    out.className = 'brg-odo-out';
    out.textContent = cur.textContent;
    cur.textContent = String(n);
    cur.classList.remove('brg-odo-in');
    void cur.offsetWidth; /* restart animation */
    cur.classList.add('brg-odo-in');
    odo.appendChild(out);
    setTimeout(function(){ if (out.parentNode) out.parentNode.removeChild(out); }, 360);
}

function initGallery(){
    var track   = document.getElementById('brg-gal-track');
    var dotWrap = document.getElementById('brg-gal-dots');
    var prev    = pnlBody.querySelector('.brg-gal-arr.brg-prev');
    var next    = pnlBody.querySelector('.brg-gal-arr.brg-next');
    if (!track) return;
    var total = S.galTotal;
    if (total < 2) return;

    function goTo(n){
        n = ((n % total) + total) % total;
        S.galIdx = n;
        track.style.transform = 'translateX(-' + (n * 100) + '%)';
        if (dotWrap) Array.from(dotWrap.children).forEach(function(d, i){ d.classList.toggle('on', i === n); });
        var posCnt = document.getElementById('brg-gal-count');
        if (posCnt && posCnt.dataset.many) odoSet(n + 1);
        if (prev) prev.disabled = false;
        if (next) next.disabled = false;
    }

    var autoBtn = document.getElementById('brg-gal-auto');
    S.galPlaying = true;
    function startTimer(){ S.galTimer = setInterval(function(){ goTo(S.galIdx + 1); }, 4000); }
    function stopTimer(){ clearInterval(S.galTimer); S.galTimer = null; }
    function pauseAutoplay(){
        if (!S.galPlaying) return;
        S.galPlaying = false; stopTimer();
        if (autoBtn) { autoBtn.setAttribute('aria-label','Play slideshow'); autoBtn.innerHTML = ICON.play; }
    }
    function resumeAutoplay(){
        if (S.galPlaying) return;
        S.galPlaying = true; startTimer();
        if (autoBtn) { autoBtn.setAttribute('aria-label','Pause slideshow'); autoBtn.innerHTML = ICON.pause; }
    }
    startTimer();

    if (autoBtn) autoBtn.addEventListener('click', function(e){ e.stopPropagation(); S.galPlaying ? pauseAutoplay() : resumeAutoplay(); });
    if (prev) prev.addEventListener('click', function(e){ e.stopPropagation(); pauseAutoplay(); goTo(S.galIdx - 1); });
    if (next) next.addEventListener('click', function(e){ e.stopPropagation(); pauseAutoplay(); goTo(S.galIdx + 1); });
    if (dotWrap) dotWrap.addEventListener('click', function(e){
        var btn = e.target.closest('.brg-gal-dot');
        if (btn) { e.stopPropagation(); pauseAutoplay(); goTo(parseInt(btn.dataset.i, 10)); }
    });

    /* Touch swipe */
    var tx = 0, ty = 0, swiping = false;
    track.addEventListener('touchstart', function(e){ tx = e.touches[0].clientX; ty = e.touches[0].clientY; swiping = false; }, { passive:true });
    track.addEventListener('touchmove', function(e){
        var dx = Math.abs(e.touches[0].clientX - tx), dy = Math.abs(e.touches[0].clientY - ty);
        if (dx > dy && dx > 8) swiping = true;
    }, { passive:true });
    track.addEventListener('touchend', function(e){
        if (!swiping) return;
        var dx = e.changedTouches[0].clientX - tx;
        if (Math.abs(dx) > 40) { pauseAutoplay(); dx > 0 ? goTo(S.galIdx - 1) : goTo(S.galIdx + 1); }
        swiping = false;
    }, { passive:true });

    goTo(0);
}

function initGalleryLightbox(){
    var cnt = document.getElementById('brg-gal-count');
    if (cnt) cnt.addEventListener('click', function(e){ e.stopPropagation(); openLightbox(S.galIdx); });
    var gal = document.getElementById('brg-gal');
    if (gal) gal.addEventListener('click', function(e){
        var btn = e.target.closest('.brg-fp-trigger');
        if (!btn) return;
        e.stopPropagation();
        openFloorplan(btn.dataset.fp);
    });
}

/* Decode-then-fade slide reveal */
function initGalleryFade(){
    var imgs = pnlBody.querySelectorAll('.brg-gal-slide img');
    imgs.forEach(function(img){
        function reveal(){ img.style.opacity = '1'; }
        if (img.complete && img.naturalWidth) { reveal(); return; }
        if (typeof img.decode === 'function') img.decode().then(reveal).catch(reveal);
        else { img.addEventListener('load', reveal, { once:true }); img.addEventListener('error', reveal, { once:true }); }
    });
}

/* ────────────────────────────────────────────────────────
   FLOORPLAN LIGHTBOX
───────────────────────────────────────────────────────── */
function openFloorplan(url){
    if (!fpImg || !fpLb) return;
    fpImg.src = url;
    fpLb.classList.add('open');
    fpLb.removeAttribute('aria-hidden');
    if (fpClose) fpClose.focus();
    document.addEventListener('keydown', fpEsc);
}
function closeFloorplan(){
    if (!fpLb) return;
    fpLb.classList.remove('open');
    fpLb.setAttribute('aria-hidden','true');
    if (fpImg) fpImg.src = '';
    document.removeEventListener('keydown', fpEsc);
}
function fpEsc(e){ if (e.key === 'Escape') closeFloorplan(); }
if (fpClose) fpClose.addEventListener('click', closeFloorplan);
if (fpLb) fpLb.addEventListener('click', function(e){ if (e.target === fpLb) closeFloorplan(); });

/* ────────────────────────────────────────────────────────
   PHOTO LIGHTBOX — FLIP zoom from the visible gallery slide
───────────────────────────────────────────────────────── */
function currentSlideImg(){
    var track = document.getElementById('brg-gal-track');
    if (!track || !track.children[S.galIdx]) return null;
    return track.children[S.galIdx].querySelector('img');
}
function flipFrom(sourceImg){
    /* First: measure target (lightbox img at rest). Last: source rect.
       Invert: transform lightbox img onto source, then Play back to rest. */
    var from = sourceImg.getBoundingClientRect();
    var to   = lbImg.getBoundingClientRect();
    if (!to.width || !to.height || !from.width) return;
    var sx = from.width  / to.width;
    var sy = from.height / to.height;
    lbImg.classList.remove('brg-flip');
    lbImg.style.transform = 'translate(' + (from.left - to.left) + 'px,' + (from.top - to.top) + 'px) scale(' + sx + ',' + sy + ')';
    void lbImg.offsetWidth;
    lbImg.classList.add('brg-flip');
    lbImg.style.transform = '';
    lbImg.addEventListener('transitionend', function onEnd(){
        lbImg.removeEventListener('transitionend', onEnd);
        lbImg.classList.remove('brg-flip');
    });
}
function openLightbox(startIdx){
    if (!S.lbImages.length || !lb) return;
    S.lbIdx  = Math.max(0, Math.min(startIdx, S.lbImages.length - 1));
    S.lbOpen = true;
    lb.classList.add('brg-lb-on');
    lb.removeAttribute('aria-hidden');
    updateLb();
    document.addEventListener('keydown', lbKeys);
    if (lbClose) lbClose.focus();

    if (REDUCE) return;
    var src = currentSlideImg();
    if (!src) return;
    /* Run the FLIP once the lightbox image has real dimensions */
    function tryFlip(){
        if (lbImg.complete && lbImg.naturalWidth) { requestAnimationFrame(function(){ flipFrom(src); }); }
    }
    if (lbImg.complete && lbImg.naturalWidth) tryFlip();
    else lbImg.addEventListener('load', tryFlip, { once:true });
}
function closeLightbox(instant){
    if (!S.lbOpen || !lb) return;
    S.lbOpen = false;
    document.removeEventListener('keydown', lbKeys);

    var src = (!instant && !REDUCE && S.lbIdx === S.galIdx) ? currentSlideImg() : null;
    if (src && lbImg.naturalWidth) {
        /* Reverse FLIP — shrink back onto the gallery slide, then fade */
        var from = lbImg.getBoundingClientRect();
        var to   = src.getBoundingClientRect();
        if (from.width && to.width) {
            lbImg.classList.add('brg-flip');
            lbImg.style.transform = 'translate(' + (to.left - from.left) + 'px,' + (to.top - from.top) + 'px) scale(' + (to.width / from.width) + ',' + (to.height / from.height) + ')';
            setTimeout(function(){
                lbImg.classList.remove('brg-flip');
                lbImg.style.transform = '';
            }, 320);
        }
    }
    lb.classList.remove('brg-lb-on');
    lb.setAttribute('aria-hidden','true');
}
function updateLb(){
    var img = S.lbImages[S.lbIdx];
    if (!img) return;
    lbImg.classList.remove('brg-flip');
    lbImg.style.transform = '';
    lbImg.src = img.full || img.url;
    lbImg.alt = img.alt || '';
    lbCount.textContent = (S.lbIdx + 1) + ' / ' + S.lbImages.length;
    lbPrev.disabled = (S.lbIdx === 0);
    lbNext.disabled = (S.lbIdx === S.lbImages.length - 1);
}
function lbKeys(e){
    if (e.key === 'ArrowLeft')  { S.lbIdx = Math.max(0, S.lbIdx - 1); updateLb(); }
    if (e.key === 'ArrowRight') { S.lbIdx = Math.min(S.lbImages.length - 1, S.lbIdx + 1); updateLb(); }
    if (e.key === 'Escape')     { closeLightbox(); }
}
lbClose.addEventListener('click', function(){ closeLightbox(); });
lbPrev.addEventListener('click',  function(){ S.lbIdx = Math.max(0, S.lbIdx - 1); updateLb(); });
lbNext.addEventListener('click',  function(){ S.lbIdx = Math.min(S.lbImages.length - 1, S.lbIdx + 1); updateLb(); });

/* ────────────────────────────────────────────────────────
   PDF GATE
───────────────────────────────────────────────────────── */
function brgWireGate(form, ajaxUrl, postId, lang){
    if (!form || form.dataset.wired) return;
    form.dataset.wired = '1';
    var msg = form.querySelector('.brg-gate-msg');
    var btn = form.querySelector('.brg-gate-submit');
    var WAIT = form.dataset.wait || 'Preparing your brochure...';
    var ERR  = form.dataset.err  || 'Something went wrong. Please try again.';
    var OPEN = form.dataset.open || 'Open your brochure';
    var reEmail = /^[^@\s]+@[^@\s]+\.[^@\s]+$/;
    form.addEventListener('submit', function(e){
        e.preventDefault();
        var fn = (form.firstname.value||'').trim();
        var ln = (form.lastname.value||'').trim();
        var em = (form.email.value||'').trim();
        if (msg) msg.textContent = '';
        if (!fn || !ln || !reEmail.test(em)) { if (msg) msg.textContent = ERR; return; }
        var old = btn ? btn.textContent : '';
        if (btn) { btn.disabled = true; btn.textContent = WAIT; }
        var win = window.open('', '_blank');
        var nf = new FormData(); nf.append('action','brg_get_nonce');
        fetch(ajaxUrl, { method:'POST', body:nf }).then(function(r){ return r.json(); }).then(function(nr){
            var nonce = (nr && nr.success && nr.data && nr.data.nonce) ? nr.data.nonce : '';
            var fd = new FormData();
            fd.append('action','brg_hubspot_pdf_gate');
            fd.append('nonce', nonce);
            fd.append('post_id', postId);
            fd.append('lang', lang);
            fd.append('firstname', fn);
            fd.append('lastname', ln);
            fd.append('email', em);
            return fetch(ajaxUrl, { method:'POST', body:fd });
        }).then(function(r){ return r.json(); }).then(function(res){
            if (btn) { btn.disabled = false; btn.textContent = old; }
            if (res && res.success && res.data && res.data.pdf_url) {
                if (win) { win.location.href = res.data.pdf_url; }
                else if (msg) { msg.innerHTML = '<a href="' + res.data.pdf_url + '" target="_blank" rel="noopener">' + OPEN + '</a>'; }
            } else {
                if (win) { try { win.close(); } catch(err){} }
                if (msg) msg.textContent = (res && typeof res.data === 'string') ? res.data : ERR;
            }
        }).catch(function(){
            if (btn) { btn.disabled = false; btn.textContent = old; }
            if (win) { try { win.close(); } catch(err){} }
            if (msg) msg.textContent = ERR;
        });
    });
}
function initPdfToggle(d){
    var btn  = document.getElementById('brg-pdf-btn');
    var form = document.getElementById('brg-pdf-form');
    if (!btn || !form) return;
    btn.addEventListener('click', function(e){
        e.stopPropagation();
        if (form.classList.contains('open')) { form.classList.remove('open'); return; }
        form.classList.add('open');
        setTimeout(function(){ form.scrollIntoView({ behavior:'smooth', block:'nearest' }); }, 60);
    });
    var gate = document.getElementById('brg-gate');
    if (gate) brgWireGate(gate, CFG.ajaxUrl, d.post_id, CFG.lang);
}

/* ────────────────────────────────────────────────────────
   HUBSPOT
───────────────────────────────────────────────────────── */
function initHubSpot(d){
    withHubSpot(function(){
        var el = document.getElementById('brg-pnl-hs-contact');
        if (el && el.children.length === 0 && d.hs_contact_form_id) {
            window.hbspt.forms.create({ region:CFG.hsRegion, portalId:CFG.hsPortal, formId:d.hs_contact_form_id, target:'#brg-pnl-hs-contact' });
        }
    });
}
function withHubSpot(cb){
    if (window.hbspt && window.hbspt.forms) { cb(); return; }
    S.hsCallbacks.push(cb);
    if (S.hsLoading) return;
    S.hsLoading = true;
    var sc = document.createElement('script');
    sc.src = CFG.hsSrc; sc.async = true; sc.id = 'hs-script-loader';
    sc.onload = function(){
        var tries = 0;
        var poll = setInterval(function(){
            if (window.hbspt && window.hbspt.forms) {
                clearInterval(poll);
                var cbs = S.hsCallbacks.slice();
                S.hsCallbacks = [];
                cbs.forEach(function(fn){ fn(); });
            } else if (++tries > 100) { /* ~8s — give up quietly */
                clearInterval(poll);
                S.hsCallbacks = [];
            }
        }, 80);
    };
    document.head.appendChild(sc);
}

/* ────────────────────────────────────────────────────────
   EVENTS
───────────────────────────────────────────────────────── */

/* Card click — delegated, covers AJAX-loaded cards */
document.addEventListener('click', function(e){
    var card = e.target.closest('.prop-card[data-post-id]');
    if (!card) return;
    e.preventDefault();
    openPanel(card.getAttribute('data-post-id'), card.getAttribute('data-en-id') || card.getAttribute('data-post-id'));
});

/* Nonce prefetch on hover — delegated so AJAX-loaded cards count too.
   mouseover never fires during touch scroll, so mobile keeps 2-step flow. */
document.addEventListener('mouseover', function(e){
    if (e.target.closest && e.target.closest('.prop-card[data-post-id]')) prefetchNonce();
});

pnlClose.addEventListener('click', function(){ closePanel(); });
overlay.addEventListener('click', function(e){ if (e.target === overlay) closePanel(); });
document.addEventListener('keydown', function(e){
    if (e.key === 'Escape' && S.open && !S.lbOpen) closePanel();
});

window.addEventListener('popstate', function(e){
    if (S.open) { S.pushed = false; closePanel(true); }
    else if (e.state && e.state.brgPanel && e.state.postId) { S.pushed = true; openPanel(e.state.postId, e.state.enId || e.state.postId); } /* flag first so renderPanel replaces the restored entry */
});

/* Focus trap */
overlay.addEventListener('keydown', function(e){
    if (e.key !== 'Tab') return;
    var f = overlay.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),textarea:not([disabled]),select:not([disabled]),[tabindex]:not([tabindex="-1"])');
    if (!f.length) return;
    if (e.shiftKey && document.activeElement === f[0]) { e.preventDefault(); f[f.length-1].focus(); }
    else if (!e.shiftKey && document.activeElement === f[f.length-1]) { e.preventDefault(); f[0].focus(); }
});

}());
</script>
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//baldorealtygroup.com/wp-content/plugins/wordpress-seo/css/main-sitemap.xsl"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<sitemap>
		<loc>https://baldorealtygroup.com/post-sitemap.xml</loc>
		<lastmod>2026-06-26T10:14:36+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://baldorealtygroup.com/page-sitemap.xml</loc>
		<lastmod>2026-04-22T09:37:21+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://baldorealtygroup.com/property-sitemap.xml</loc>
		<lastmod>2026-07-02T09:52:32+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://baldorealtygroup.com/project-sitemap.xml</loc>
		<lastmod>2025-10-20T13:13:26+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://baldorealtygroup.com/category-sitemap.xml</loc>
		<lastmod>2026-06-26T10:11:27+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://baldorealtygroup.com/property_status-sitemap.xml</loc>
		<lastmod>2026-07-02T09:50:45+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://baldorealtygroup.com/property_location-sitemap.xml</loc>
		<lastmod>2026-07-02T09:50:45+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://baldorealtygroup.com/property_destinations-sitemap.xml</loc>
		<lastmod>2026-07-02T09:50:45+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://baldorealtygroup.com/property_type-sitemap.xml</loc>
		<lastmod>2026-07-02T09:50:45+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://baldorealtygroup.com/property_tipo-sitemap.xml</loc>
		<lastmod>2026-04-22T14:39:20+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://baldorealtygroup.com/project_location-sitemap.xml</loc>
		<lastmod>2025-10-20T13:13:26+00:00</lastmod>
	</sitemap>
</sitemapindex>
<!-- XML Sitemap generated by Yoast SEO -->