.estate{position:relative;background:var(--cream);color:var(--night);padding:clamp(4rem,9vw,7.5rem) 0 clamp(4.5rem,10vw,8rem);overflow:hidden}
.estate-head{text-align:center;max-width:720px;margin:0 auto clamp(2.2rem,5vw,3.4rem);padding:0 1rem}
.estate .eyebrow{display:inline-block;font-family:'Montserrat',sans-serif;font-size:.66rem;font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:var(--rust);margin-bottom:1rem}
.estate h2{font-family:'Yeseva One',serif;font-weight:400;font-size:clamp(1.7rem,3.6vw,2.8rem);letter-spacing:.05em;color:var(--forest)}
.estate-sub{font-family:'Montserrat',sans-serif;font-weight:300;font-size:clamp(1rem,1.5vw,1.18rem);color:var(--soft);margin-top:1rem;line-height:1.75;letter-spacing:.012em}

.estate-stage{position:relative;max-width:860px;margin:0 auto}
.map-shell{position:relative;border-radius:6px;overflow:hidden;box-shadow:0 40px 80px -44px rgba(31,31,31,.45);background:#efe7d6;aspect-ratio:1190/1322;width:100%;margin:0 auto}
.map-canvas{position:absolute;inset:0}
.map-pic{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}

.hotspot{position:absolute;transform:translate(-50%,-100%);z-index:5;
  width:clamp(22px,2.6vw,28px);height:clamp(30px,3.6vw,38px);
  cursor:pointer;border:0;background:none;padding:0;-webkit-tap-highlight-color:transparent}

@media(pointer:coarse){
  .hotspot::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
    width:44px;height:44px;border-radius:50%}
}

.hotspot::after{content:"";position:absolute;left:50%;bottom:-2px;transform:translateX(-50%);
  width:40%;height:5px;border-radius:50%;background:rgba(31,31,31,.28);filter:blur(2px);z-index:0;
  transition:transform .25s,opacity .25s}

.hs-pin{position:absolute;top:0;left:50%;transform:translateX(-50%) rotate(-45deg);
  width:clamp(22px,2.6vw,28px);height:clamp(22px,2.6vw,28px);
  background:#fff;border:1.5px solid var(--rust);
  border-radius:50% 50% 50% 0;
  box-shadow:0 4px 12px -3px rgba(31,31,31,.45),0 0 0 1px rgba(255,255,255,.6) inset;
  display:flex;align-items:center;justify-content:center;z-index:2;
  transition:transform .25s,background .25s,border-color .25s}

.hs-pin::before{content:"";position:absolute;inset:0;border-radius:inherit;
  border:1.5px solid var(--rust);opacity:0;z-index:-1;pointer-events:none;
  animation:hsPulse 3s ease-out infinite;animation-delay:var(--pulse-delay,0s)}
@keyframes hsPulse{0%{transform:scale(1);opacity:.45}70%{opacity:0}100%{transform:scale(1.9);opacity:0}}

.hotspot:hover .hs-pin::before,.hotspot:focus-visible .hs-pin::before,.hotspot.active .hs-pin::before{animation:none;opacity:0}
@media(prefers-reduced-motion:reduce){.hs-pin::before{animation:none}}

.hs-ico{transform:rotate(45deg);width:52%;height:52%;display:flex;align-items:center;justify-content:center;color:var(--rust);transition:color .25s}
.hs-ico svg{width:100%;height:100%;display:block;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

.hotspot:hover,.hotspot:focus-visible{z-index:90;outline:none}
.hotspot:hover .hs-pin,.hotspot:focus-visible .hs-pin,.hotspot.active .hs-pin{
  background:var(--rust);border-color:#fff;
  transform:translateX(-50%) rotate(-45deg) scale(1.2)}
.hotspot:hover .hs-ico,.hotspot:focus-visible .hs-ico,.hotspot.active .hs-ico{color:#fff}
.hotspot:hover::after,.hotspot:focus-visible::after{transform:translateX(-50%) scale(1.15);opacity:.45}

.hs-label{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(6px);background:var(--night);color:var(--cream);font-family:'Montserrat',sans-serif;font-size:.62rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:.42rem .7rem;border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .22s,transform .22s;z-index:10;box-shadow:0 8px 20px -8px rgba(0,0,0,.6)}
.hs-label::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--night)}
.hotspot:hover .hs-label,.hotspot:focus-visible .hs-label{opacity:1;transform:translateX(-50%) translateY(0)}

.estate-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:.55rem;max-width:820px;margin:clamp(1.6rem,3vw,2.4rem) auto 0;padding:0 1rem}
.lg-chip{font-family:'Montserrat',sans-serif;font-size:.64rem;font-weight:600;letter-spacing:.06em;color:var(--forest);background:#fff;border:1px solid #e6ddcd;padding:.52rem .95rem;border-radius:24px;cursor:pointer;transition:.22s;display:inline-flex;align-items:center;gap:.5rem;-webkit-tap-highlight-color:transparent}
.lg-chip::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--rust);flex:0 0 auto}
.lg-chip:hover,.lg-chip.active{background:var(--forest);color:var(--cream);border-color:var(--forest)}
.lg-chip:hover::before,.lg-chip.active::before{background:var(--gold)}

.estate-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:clamp(1rem,4vw,2.5rem);
  opacity:0;visibility:hidden;transition:opacity .32s ease,visibility .32s ease}
.estate-modal.open{opacity:1;visibility:visible}
.em-backdrop{position:absolute;inset:0;background:rgba(20,15,10,.6);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.em-card{position:relative;z-index:2;background:#fff;border-radius:8px;overflow:hidden;width:100%;max-width:680px;max-height:90vh;overflow-y:auto;
  box-shadow:0 50px 90px -30px rgba(0,0,0,.6);transform:translateY(24px) scale(.97);transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.estate-modal.open .em-card{transform:none}
.em-grid{display:grid;grid-template-columns:1fr 1.15fr;min-height:260px}
.em-img{position:relative;background-size:cover;background-position:center;background-color:#e6dccb;min-height:200px}

.em-img.em-noimg{background-color:#ece3d2;display:flex;align-items:center;justify-content:center}
.em-img.em-noimg::after{content:"No image";font-family:'Montserrat',sans-serif;font-size:.66rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:#b3a585}
.em-img.em-noimg .em-tag{z-index:1}
.em-tag{position:absolute;top:1rem;left:1rem;background:var(--rust);color:var(--cream);font-family:'Montserrat',sans-serif;font-size:.56rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;padding:.4rem .7rem;border-radius:3px}
.em-body{padding:clamp(1.5rem,3.2vw,2.4rem);display:flex;flex-direction:column;gap:.7rem}
.em-kicker{font-family:'Montserrat',sans-serif;font-size:.6rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--rust)}
.em-body h3{font-family:'Yeseva One',serif;font-weight:400;font-size:clamp(1.35rem,2.6vw,1.9rem);letter-spacing:.03em;color:var(--forest)}
.em-body p{font-family:'Montserrat',sans-serif;font-weight:300;font-size:clamp(1rem,1.5vw,1.16rem);line-height:1.7;letter-spacing:.012em;color:var(--soft)}
.em-facts{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.3rem}
.em-facts span{font-family:'Montserrat',sans-serif;font-size:.6rem;font-weight:600;letter-spacing:.06em;color:var(--forest);background:#f3eee3;border:1px solid #e7e0d1;padding:.34rem .65rem;border-radius:20px}
.em-cta{margin-top:auto;padding-top:.8rem;display:flex;gap:1.2rem;align-items:center;flex-wrap:wrap}
.em-cta .btn-more{padding:.95rem 2.1rem;font-size:.7rem}
.em-link{font-family:'Montserrat',sans-serif;font-size:.66rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--forest);text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}
.em-link:hover{color:var(--rust)}
.em-close{position:absolute;top:.7rem;right:.8rem;z-index:4;width:38px;height:38px;border-radius:50%;border:1px solid #e3dccd;background:rgba(255,255,255,.95);color:var(--forest);font-size:1.3rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.25s}
.em-close:hover{background:var(--rust);color:#fff;border-color:var(--rust);transform:rotate(90deg)}

body.modal-open{overflow:hidden}

@media(max-width:680px){
  .em-grid{grid-template-columns:1fr}
  .em-img{min-height:170px}
  .em-card{max-height:88vh}
}
@media(max-width:560px){
  .hs-label{display:none}
}
@media(prefers-reduced-motion:reduce){
  .em-card,.estate-modal{transition:opacity .2s}
}
