/* Shared base: reset + structural helpers. Each template's style.css defines the look. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
img{max-width:100%;display:block;height:auto}
a{color:inherit}
h1,h2,h3,h4{margin:0 0 .5em;line-height:1.15}
p{margin:0 0 1em}
ul,ol{margin:0;padding:0}
button,input,select,textarea{font:inherit;color:inherit}
[hidden]{display:none!important}
.skip{position:absolute;left:-999px;top:0;z-index:999;background:#000;color:#fff;padding:.6em 1em}
.skip:focus{left:8px;top:8px}
.wrap{width:min(1200px,100% - 2.5rem);margin-inline:auto}
.narrow{max-width:820px}
.center{text-align:center}
.btns{display:flex;flex-wrap:wrap;gap:.75rem;margin:0}
.btns.center{justify-content:center}
.sec{padding:clamp(3.5rem,8vw,6.5rem) 0}
svg{width:1.1em;height:1.1em;flex:none}
/* header + mobile nav */
.site-header{position:sticky;top:0;z-index:50}
.hdr-in{display:flex;align-items:center;justify-content:space-between;gap:1.5rem}
.logo{display:flex;align-items:center;gap:.7rem;text-decoration:none}
.logo-text{display:flex;flex-direction:column;line-height:1.1}
.site-nav{display:flex;align-items:center;gap:2rem}
.site-nav ul{list-style:none;display:flex;gap:1.75rem}
.site-nav a{text-decoration:none}
.hdr-cta{display:inline-flex;align-items:center;gap:.45rem;text-decoration:none;white-space:nowrap}
.nav-toggle{display:none;width:44px;height:44px;border:0;background:transparent;cursor:pointer;padding:10px;flex-direction:column;justify-content:center;gap:5px}
.nav-toggle span{display:block;height:2px;width:100%;background:currentColor;transition:transform .3s,opacity .3s}
.nav-open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-open .nav-toggle span:nth-child(2){opacity:0}
.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@media (max-width:900px){
  .nav-toggle{display:flex;position:relative;z-index:60}
  .site-nav{position:fixed;inset:0;flex-direction:column;justify-content:center;gap:2rem;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s;z-index:55}
  .nav-open .site-nav{opacity:1;visibility:visible}
  .site-nav ul{flex-direction:column;align-items:center;gap:1.4rem}
  .site-nav ul a{font-size:1.5rem}
  .nav-open{overflow:hidden}
}
/* cards */
.card{display:flex;flex-direction:column;text-decoration:none;overflow:hidden}
.card-media{position:relative;aspect-ratio:3/2;overflow:hidden}
.card-media img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.card:hover .card-media img{transform:scale(1.05)}
.card-tag{position:absolute;top:.9rem;left:.9rem;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;padding:.3rem .7rem}
.prop-title .card-tag{position:static;display:inline-block;margin-bottom:.8rem}
.card-meta{list-style:none;display:flex;flex-wrap:wrap;gap:.35rem 1.1rem}
.grid-3,.grid-4,.results-grid{display:grid;gap:1.75rem}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.results-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
@media (max-width:1000px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.grid-3,.grid-4{grid-template-columns:1fr}.results-grid{grid-template-columns:1fr}}
/* forms */
.filters{display:grid;grid-template-columns:repeat(6,1fr) auto;gap:1rem;align-items:end}
.filters-title{display:none}
.fld{display:flex;flex-direction:column;gap:.35rem;min-width:0}
.fld span,.contact-form label span,.showing-form label span,.val-form label span{font-size:.75rem;letter-spacing:.06em;text-transform:uppercase}
select,input,textarea{width:100%;padding:.75rem .85rem;border-radius:0;border:1px solid;background:transparent}
select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 16px) 52%,calc(100% - 11px) 52%;background-size:5px 5px;background-repeat:no-repeat;padding-right:2rem}
.btn-reset{cursor:pointer;padding:.75rem 1rem;background:transparent;border:0;text-decoration:underline}
@media (max-width:1000px){.filters{grid-template-columns:repeat(3,1fr)}}
@media (max-width:640px){.filters{grid-template-columns:1fr 1fr}.btn-reset{grid-column:span 2}}
.results-count{margin-bottom:1.25rem}
.no-results{padding:3rem 1rem;text-align:center}
.contact-form,.val-form,.showing-form{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.contact-form label,.val-form label,.showing-form label{display:flex;flex-direction:column;gap:.35rem}
.contact-form .wide,.val-form .wide{grid-column:1/-1}
.showing-form{grid-template-columns:1fr}
.contact-form .btn,.val-form .btn{justify-self:start}
@media (max-width:640px){.contact-form,.val-form{grid-template-columns:1fr}}
.form-thanks{padding:2rem;outline:none}
.thanks-title{font-size:1.5rem;margin-bottom:.4rem}
.thanks-demo{font-size:.8rem;opacity:.7;margin:0}
.form-note{font-size:.8rem;opacity:.7;margin:0}
/* IDX slot */
.idx-slot{display:flex;gap:1.25rem;align-items:flex-start;padding:1.5rem 1.75rem;margin-bottom:2.5rem}
.idx-icon svg{width:2.25rem;height:2.25rem}
.idx-title{font-weight:600;margin-bottom:.25rem}
.idx-text{margin:0;font-size:.92rem;opacity:.85}
/* property */
.crumbs{font-size:.85rem;margin-bottom:1.2rem}
.crumbs a{text-decoration:none}
.crumbs span{opacity:.5;margin:0 .3rem}
.prop-head{padding:2.5rem 0 0}
.prop-title{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;flex-wrap:wrap}
.prop-title h1{margin:0}
.prop-loc{margin:.4rem 0 0}
.prop-price{text-align:right}
.prop-price>b{display:block;font-size:2rem;line-height:1.1;margin-bottom:.5rem}
.prop-price .card-meta{justify-content:flex-end}
.prop-gallery-sec{padding:2rem 0 0}
.gallery{display:grid;grid-template-columns:1fr;gap:.75rem}
.g-main{position:relative;aspect-ratio:16/9;overflow:hidden;background:#111}
.g-main img{width:100%;height:100%;object-fit:cover;cursor:zoom-in}
.g-prev,.g-next{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border:0;border-radius:50%;background:rgba(255,255,255,.9);color:#111;font-size:1.8rem;line-height:1;cursor:pointer}
.g-prev{left:1rem}.g-next{right:1rem}
.g-expand{position:absolute;right:1rem;bottom:1rem;border:0;background:rgba(0,0,0,.65);color:#fff;padding:.5rem .9rem;font-size:.85rem;cursor:pointer}
.g-thumbs{display:grid;grid-template-columns:repeat(5,1fr);gap:.75rem}
.g-thumb{padding:0;border:2px solid transparent;cursor:pointer;aspect-ratio:3/2;overflow:hidden;background:none;opacity:.7;transition:opacity .2s}
.g-thumb.active,.g-thumb:hover{opacity:1}
.g-thumb img{width:100%;height:100%;object-fit:cover}
.prop-body{padding-top:3rem}
.prop-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:3rem;align-items:start}
.prop-lead{font-size:1.2rem}
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin:0 0 2rem}
.facts div{padding:1rem}
.facts dt{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;opacity:.7}
.facts dd{margin:0;font-weight:600}
.features{columns:2;column-gap:2rem;margin:0 0 2rem;padding-left:1.1rem}
.features li{margin-bottom:.4rem;break-inside:avoid}
.map-ph{display:flex;gap:1rem;align-items:center;justify-content:center;min-height:200px;text-align:center;flex-direction:column}
.map-ph svg{width:2rem;height:2rem}
.prop-side{position:sticky;top:110px}
.side-card{padding:1.75rem}
.side-agent{display:flex;gap:1rem;align-items:center;margin-bottom:1.25rem}
.side-agent img{width:72px;height:72px;border-radius:50%;object-fit:cover}
.side-agent span{display:flex;flex-direction:column}
.side-title{font-weight:600;margin:0}
.side-call{margin:1rem 0 0;font-size:.9rem;text-align:center}
.prop-nav{display:flex;justify-content:space-between;margin:2.5rem 0 0}
.sec-head.row{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap}
@media (max-width:900px){.prop-grid{grid-template-columns:1fr}.prop-side{position:static}.facts{grid-template-columns:repeat(2,1fr)}.prop-price{text-align:left}.prop-price .card-meta{justify-content:flex-start}}
@media (max-width:640px){.features{columns:1}.g-thumbs{grid-template-columns:repeat(5,1fr);gap:.4rem}.g-main{aspect-ratio:4/3}.g-prev,.g-next{width:40px;height:40px}}
.lightbox{border:0;padding:0;background:transparent;max-width:100vw;max-height:100vh;width:100vw;height:100vh}
.lightbox::backdrop{background:rgba(0,0,0,.92)}
.lightbox[open]{display:flex;align-items:center;justify-content:center}
.lightbox img{max-width:92vw;max-height:84vh;object-fit:contain}
.lb-close,.lb-prev,.lb-next{position:fixed;border:0;background:rgba(255,255,255,.12);color:#fff;width:52px;height:52px;border-radius:50%;font-size:2rem;line-height:1;cursor:pointer}
.lb-close{top:1rem;right:1rem}.lb-prev{left:1rem;top:50%}.lb-next{right:1rem;top:50%}
.lb-count{position:fixed;bottom:1rem;left:0;right:0;text-align:center;color:#fff;margin:0}
/* footer */
.ft-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1.4fr;gap:2.5rem}
.ft-links,.ft-contact{list-style:none}
.ft-links li,.ft-contact li{margin-bottom:.55rem}
.ft-links a,.ft-contact a{text-decoration:none}
.ft-contact li{display:flex;gap:.6rem;align-items:flex-start}
.ft-contact a{display:flex;gap:.6rem;align-items:center}
.ft-contact svg{margin-top:.25em}
.social{list-style:none;display:flex;gap:.6rem}
.social a{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;text-decoration:none}
.social svg{width:18px;height:18px}
.ft-legal{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;font-size:.78rem}
.ft-legal p{margin:0}
.demo-note{opacity:.75}
@media (max-width:900px){.ft-grid{grid-template-columns:1fr 1fr}.ft-brand{grid-column:1/-1}}
@media (max-width:520px){.ft-grid{grid-template-columns:1fr}}
/* about */
.about-main{display:grid;grid-template-columns:5fr 7fr;gap:clamp(2rem,6vw,5rem);align-items:center}
.about-photo img{width:100%;aspect-ratio:4/5;object-fit:cover}
.about-contact{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem 1.5rem}
.about-contact a{display:inline-flex;gap:.5rem;align-items:center;text-decoration:none}
.creds-wrap{display:grid;grid-template-columns:1fr 1.3fr;gap:3rem;align-items:start}
.creds{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.creds li{padding:1.1rem 1.2rem}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem;margin:0}
.stats dd{margin:0}
@media (max-width:900px){.about-main,.creds-wrap{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.creds{grid-template-columns:1fr}}
/* contact */
.contact-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:start}
.contact-info ul{list-style:none;margin:1.25rem 0}
.contact-info li{display:flex;gap:.6rem;align-items:flex-start;margin-bottom:.7rem}
.contact-info li a{display:flex;gap:.6rem;align-items:center;text-decoration:none}
.contact-info li svg{margin-top:.3em}
.ci-photo{width:96px;height:96px;border-radius:50%;object-fit:cover;margin-bottom:1rem}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr}}
/* page hero */
.page-hero{position:relative;overflow:hidden}
.ph-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ph-in{position:relative}
/* testimonials */
.t-card{margin:0;display:flex;flex-direction:column}
.t-card blockquote{margin:0 0 1.25rem;flex:1}
.t-card figcaption{display:flex;align-items:center;gap:.85rem}
.t-card figcaption span{display:flex;flex-direction:column;line-height:1.3}
.t-av{width:52px;height:52px;border-radius:50%;object-fit:cover;flex:none}
.t-init{display:inline-flex;align-items:center;justify-content:center;font-weight:700}
main,.site-footer{overflow-x:clip}
