:root {
  --pine:#1e2c24; --pine-2:#2a3d32; --snow:#f7f3ec; --sand:#e7ddd0; --ink:#1a1814;
  --soft:#5c554c; --accent:#c4a574; --white:#fff; --radius:14px; --shadow:0 18px 50px rgba(20,30,24,.18);
  --sold:#6b5b4a; --pending:#8a6a2f; --forsale:#2f5d45;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; font-family:"Source Sans 3",system-ui,sans-serif; color:var(--ink); background:var(--snow); line-height:1.55; }
img { max-width:100%; display:block; }
a { color:inherit; }
.stage-banner { background:#7a1f1f; color:#fff; text-align:center; font-size:.78rem; letter-spacing:.04em; padding:.55rem .75rem; }
.wrap { width:min(1120px, calc(100% - 2rem)); margin-inline:auto; }
.site-header { background:var(--pine); color:var(--snow); position:sticky; top:0; z-index:40; }
.nav { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.7rem 0; flex-wrap:wrap; }
.brand img { height:40px; width:auto; border-radius:8px; }
.nav-links { display:flex; gap:.9rem; flex-wrap:wrap; font-size:.92rem; }
.nav-links a { text-decoration:none; opacity:.85; }
.nav-links a:hover, .nav-links a.active { opacity:1; text-decoration:underline; text-underline-offset:4px; }
.nav-cta { display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; }
.pill { background:var(--accent); color:var(--pine); text-decoration:none; font-weight:600; font-size:.82rem; padding:.45rem .8rem; border-radius:999px; }

.btn { display:inline-flex; align-items:center; justify-content:center; gap:.4rem; text-decoration:none; font-weight:600; border-radius:999px; padding:.85rem 1.25rem; font-size:1rem; border:2px solid transparent; cursor:pointer; }
.btn-primary { background:var(--accent); color:var(--pine); }
.btn-ghost { background:transparent; color:var(--snow); border-color:rgba(247,243,236,.55); }
.btn-dark { background:var(--pine); color:var(--snow); }
.btn-outline { background:transparent; border-color:var(--pine); color:var(--pine); }

.eyebrow { text-transform:uppercase; letter-spacing:.16em; font-size:.72rem; font-weight:600; opacity:.9; margin:0 0 .6rem; }
h1,h2 { font-family:Fraunces,Georgia,serif; font-weight:700; color:var(--pine); line-height:1.15; }
h1 { font-size:clamp(2rem, 4.5vw, 3.1rem); margin:0 0 .5rem; }
h2 { font-size:clamp(1.55rem, 3.2vw, 2.1rem); margin:0 0 .85rem; }
.lead { font-size:1.08rem; color:var(--soft); max-width:42rem; margin:0 0 1.25rem; }
.meta { font-size:.88rem; color:var(--soft); }

/* INDEX */
.index-hero { padding:2.5rem 0 1.5rem; }
.index-hero p { max-width:40rem; color:var(--soft); margin:.5rem 0 0; }
.toolbar { display:flex; flex-wrap:wrap; gap:.75rem; align-items:center; justify-content:space-between; margin:0 0 1.25rem; }
.filters { display:flex; flex-wrap:wrap; gap:.5rem; }
.chip { border:1px solid rgba(30,44,36,.18); background:var(--white); color:var(--pine); border-radius:999px; padding:.45rem .9rem; font-size:.9rem; font-weight:600; cursor:pointer; }
.chip[aria-pressed="true"] { background:var(--pine); color:var(--snow); border-color:var(--pine); }
.sort select { border:1px solid rgba(30,44,36,.18); background:var(--white); border-radius:999px; padding:.5rem .9rem; font:inherit; color:var(--pine); }

.cards { display:grid; grid-template-columns:1fr; gap:1.25rem; padding-bottom:3rem; }
@media (min-width:700px) { .cards { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (min-width:1000px) { .cards { grid-template-columns:repeat(3,minmax(0,1fr)); } }
.card { background:var(--white); border-radius:18px; overflow:hidden; box-shadow:var(--shadow); border:1px solid rgba(30,44,36,.06); display:flex; flex-direction:column; text-decoration:none; color:inherit; transition:transform .2s ease; }
.card:hover { transform:translateY(-3px); }
.card-media { position:relative; aspect-ratio:4/3; background:#111; }
.card-media img { width:100%; height:100%; object-fit:cover; }
.badge { position:absolute; top:.75rem; left:.75rem; z-index:1; font-size:.72rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; padding:.35rem .65rem; border-radius:999px; color:#fff; }
.badge.for-sale { background:var(--forsale); }
.badge.pending { background:var(--pending); }
.badge.sold { background:var(--sold); }
.card-body { padding:1.1rem 1.15rem 1.25rem; display:flex; flex-direction:column; gap:.35rem; flex:1; }
.card-body h2 { font-size:1.35rem; margin:0; }
.card-price { font-family:Fraunces,Georgia,serif; font-size:1.55rem; color:var(--pine); font-weight:700; }
.card-stats { display:flex; gap:.75rem; flex-wrap:wrap; font-size:.92rem; color:var(--soft); }
.empty { padding:2rem; text-align:center; color:var(--soft); background:var(--white); border-radius:14px; }

/* DETAIL HERO */
.hero { position:relative; min-height:min(78vh, 680px); display:grid; align-items:end; color:var(--snow); background:#111; }
.hero-bg { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.hero::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(14,22,18,.08) 0%, rgba(14,22,18,.18) 45%, rgba(14,22,18,.72) 100%); }
.hero-inner { position:relative; z-index:1; padding:2.5rem 0 2.75rem; }
.hero h1 { color:var(--snow); }
.hero .sub { font-size:clamp(1rem, 2.4vw, 1.2rem); max-width:36rem; margin:0 0 1.25rem; opacity:.95; }
.hero-price { display:inline-flex; flex-direction:column; gap:.15rem; background:rgba(247,243,236,.95); color:var(--pine); padding:.85rem 1.15rem; border-radius:12px; box-shadow:var(--shadow); }
.hero-price .amt { font-family:Fraunces,Georgia,serif; font-size:clamp(1.8rem, 4vw, 2.4rem); font-weight:700; line-height:1; }
.hero-price .terms { font-size:.88rem; color:var(--soft); }
.hero-actions { display:flex; flex-wrap:wrap; gap:.7rem; margin-top:1.1rem; }
.hero .badge { position:static; display:inline-block; margin-bottom:.6rem; }

section { padding:3rem 0; }
section.tight { padding:2.25rem 0; }
.story { font-size:1.05rem; max-width:40rem; }
.story p { margin:0 0 1rem; }
.highlights { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.75rem; margin:1.5rem 0 0; }
@media (min-width:720px) { .highlights { grid-template-columns:repeat(4,minmax(0,1fr)); } }
.hl { background:var(--white); border:1px solid rgba(30,44,36,.08); border-radius:var(--radius); padding:1rem; box-shadow:0 6px 18px rgba(20,30,24,.04); }
.hl strong { display:block; font-family:Fraunces,Georgia,serif; color:var(--pine); font-size:1.05rem; margin-bottom:.25rem; }
.hl span { font-size:.9rem; color:var(--soft); }

.gallery { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.6rem; }
@media (min-width:900px) { .gallery { grid-template-columns:repeat(3,minmax(0,1fr)); gap:.75rem; } }
.gal-item { margin:0; background:#000; border-radius:12px; overflow:hidden; position:relative; cursor:zoom-in; border:0; padding:0; width:100%; color:inherit; font:inherit; text-align:left; }
.gal-item img { width:100%; aspect-ratio:4/3; object-fit:cover; transition:transform .35s ease; }
.gal-item:hover img { transform:scale(1.03); }
.gal-item figcaption, .gal-item .cap { position:absolute; left:0; right:0; bottom:0; padding:.55rem .7rem; font-size:.78rem; color:#fff; background:linear-gradient(transparent, rgba(0,0,0,.72)); }
.gal-item:first-child { grid-column:1 / -1; }
@media (min-width:900px) {
  .gal-item:first-child { grid-column:span 2; grid-row:span 2; }
  .gal-item:first-child img { aspect-ratio:auto; height:100%; min-height:100%; }
}

.deal-grid { display:grid; gap:1.25rem; }
@media (min-width:860px) { .deal-grid { grid-template-columns:1.15fr .85fr; align-items:start; } }
.panel { background:var(--white); border-radius:18px; padding:1.35rem 1.4rem; box-shadow:var(--shadow); border:1px solid rgba(30,44,36,.06); }
.panel.dark { background:var(--pine); color:var(--snow); }
.panel.dark h2, .panel.dark .eyebrow { color:var(--snow); }
.price-lg { font-family:Fraunces,Georgia,serif; font-size:clamp(2.2rem, 4vw, 2.8rem); margin:.2rem 0 .6rem; color:var(--pine); }
.panel.dark .price-lg { color:var(--snow); }
.terms { list-style:none; padding:0; margin:0 0 1rem; }
.terms li { padding:.55rem 0; border-bottom:1px solid rgba(30,44,36,.08); font-size:.98rem; }
.panel.dark .terms li { border-bottom-color:rgba(247,243,236,.12); }
.terms li:last-child { border-bottom:0; }
.disclaimer { font-size:.82rem; color:var(--soft); background:var(--sand); border-radius:10px; padding:.85rem 1rem; margin-top:1rem; }
.panel.dark .disclaimer { background:rgba(0,0,0,.22); color:#d9d0c3; }
.cta-stack { display:flex; flex-direction:column; gap:.7rem; margin-top:1rem; }
.cta-stack .btn { width:100%; }
.owner-name { font-family:Fraunces,Georgia,serif; font-size:1.45rem; margin:.15rem 0; }
.owner-phone { font-size:1.55rem; font-weight:700; text-decoration:none; letter-spacing:.01em; }
.panel.dark .owner-phone { color:var(--accent); }

.life { background:var(--pine); color:var(--snow); }
.life h2 { color:var(--snow); }
.life .lead { color:#d5ccc0; }
.life-grid { display:grid; gap:1rem; }
@media (min-width:720px) { .life-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
.life-card { background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.1); border-radius:14px; padding:1.1rem 1.15rem; }
.life-card h3 { font-family:Fraunces,Georgia,serif; margin:0 0 .4rem; font-size:1.15rem; color:var(--snow); }
.life-card p { margin:0; color:#d8d0c4; font-size:.95rem; }

.map-section { background:var(--sand); }
.map-wrap { position:relative; border-radius:16px; overflow:hidden; box-shadow:var(--shadow); background:#cfd8d0; }
.map-static { width:100%; height:auto; aspect-ratio:768/512; object-fit:cover; display:block; }
.map-badge { position:absolute; top:.75rem; left:.75rem; z-index:2; background:rgba(30,44,36,.92); color:#f7f3ec; font-size:.78rem; font-weight:600; padding:.4rem .7rem; border-radius:999px; letter-spacing:.04em; text-transform:uppercase; }
.map-actions { display:flex; flex-wrap:wrap; gap:.65rem; margin-top:1rem; }
.open-item { margin-top:1rem; font-size:.9rem; background:var(--white); border-left:4px solid var(--accent); padding:.85rem 1rem; border-radius:8px; color:var(--soft); }

.sticky-cta { position:fixed; left:0; right:0; bottom:0; z-index:50; background:rgba(30,44,36,.96); color:var(--snow); padding:.7rem .85rem; display:flex; gap:.65rem; justify-content:center; align-items:center; box-shadow:0 -8px 30px rgba(0,0,0,.25); }
.sticky-cta .btn { padding:.7rem 1rem; font-size:.95rem; }
@media (min-width:860px) { .sticky-cta { display:none; } }
body.has-sticky { padding-bottom:5.5rem; }
@media (min-width:860px) { body.has-sticky { padding-bottom:0; } }

footer.site-footer { background:#142019; color:#cfc6b8; padding:2.5rem 0 2rem; font-size:.92rem; }
.footer-grid { display:grid; gap:1.25rem; }
@media (min-width:720px) { .footer-grid { grid-template-columns:1.2fr 1fr 1fr; } }
.footer-grid a { color:#eee6da; }
.brand-text { font-family:Fraunces,Georgia,serif; font-size:1.3rem; color:var(--snow); margin:0 0 .4rem; }
.footer-note { margin-top:1.5rem; font-size:.8rem; opacity:.85; border-top:1px solid rgba(255,255,255,.08); padding-top:1rem; }

/* lightbox */
.lightbox { position:fixed; inset:0; z-index:100; background:rgba(10,14,12,.92); display:none; align-items:center; justify-content:center; padding:1rem; }
.lightbox.open { display:flex; }
.lightbox img { max-width:min(1100px,100%); max-height:90vh; object-fit:contain; border-radius:8px; }
.lightbox button { position:absolute; top:1rem; right:1rem; background:var(--accent); color:var(--pine); border:0; border-radius:999px; padding:.55rem 1rem; font-weight:700; cursor:pointer; }

.noscript-box { background:var(--sand); padding:1rem 1.25rem; margin:1rem auto; border-radius:12px; max-width:1120px; }
.error-box { padding:2rem; color:#7a1f1f; }
