:root{
  --paper:#F6F2EA; --card:#FFFFFF; --ink:#18222C; --muted:#56616B; --line:#E2DBCE;
  --lake:#1E5A66; --lake-dark:#15434C; --brick:#9A3F22; --tint:#E8EFEF;
  --display:"Fraunces",Georgia,serif; --body:"Public Sans",system-ui,sans-serif;
  --r:10px;
}
*{box-sizing:border-box}
[hidden]{display:none !important}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 var(--body)}
a{color:var(--lake)} a:hover{color:var(--lake-dark)}
img{max-width:100%;display:block}
h1,h2{font-family:var(--display);font-weight:600;letter-spacing:-.01em;line-height:1.15}
main{max-width:1240px;margin:0 auto;padding:0 20px 64px}

.sample-banner{background:#FFF4D6;border-bottom:1px solid #E9D59A;color:#5A4500;text-align:center;padding:8px 16px;font-size:14px}
.site-header{max-width:1240px;margin:0 auto;padding:18px 20px;display:flex;justify-content:space-between;align-items:center;gap:16px}
.brand{text-decoration:none;color:var(--ink);display:flex;flex-direction:column}
.brand-name{font-family:var(--display);font-size:26px;font-weight:600}
.brand-name em{font-style:italic;color:var(--lake)}
.brand-sub{font-size:14px;font-weight:600;letter-spacing:.04em;color:var(--ink)}
.site-header nav{display:flex;align-items:center;gap:18px}
.site-header nav a{text-decoration:none;font-weight:600}
.hello{font-weight:600;color:var(--muted)}

.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 20px;border-radius:999px;border:0;
  background:var(--lake);color:#fff !important;font:600 15px var(--body);text-decoration:none;cursor:pointer}
.btn:hover{background:var(--lake-dark)}
.btn-ghost{background:transparent;color:var(--lake) !important;border:1.5px solid var(--lake)}
.btn-ghost:hover{background:var(--tint)}
.btn-block{width:100%}
:focus-visible{outline:3px solid #E0A33B;outline-offset:2px}

.search-hero{padding:28px 0 8px}
.search-hero h1{font-size:clamp(30px,4.4vw,48px);margin:0 0 6px}
.lede{color:var(--muted);margin:0 0 20px}
.filters{display:grid;grid-template-columns:2.2fr repeat(6,minmax(0,1fr)) auto;gap:10px;align-items:end;
  background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}
.field{display:flex;flex-direction:column;gap:4px;min-width:0}
.field label{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
input,select,textarea{font:15px var(--body);color:var(--ink);background:#fff;border:1px solid #CFC6B6;border-radius:8px;min-height:44px;padding:8px 10px;width:100%}
textarea{resize:vertical}

.results-head{display:flex;justify-content:space-between;align-items:baseline;margin:28px 0 12px}
.results-head h2{margin:0;font-size:22px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:20px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;transition:box-shadow .15s}
.card:hover{box-shadow:0 6px 22px rgba(24,34,44,.10)}
.card-link{color:inherit;text-decoration:none;display:block}
.card-photo{position:relative;aspect-ratio:3/2;background:var(--tint)}
/* Rule 9.7: show other brokers' photos whole (no cropping), letterboxed if needed */
.card-img,.card-photo .no-photo{width:100%;height:100%;object-fit:contain;background:#E9E4DA}
.badge{position:absolute;top:10px;left:10px;background:var(--brick);color:#fff;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px}
.card-body{padding:14px 16px 16px}
.price{font-family:var(--display);font-size:24px;font-weight:600}
.price.big{font-size:40px}
.facts{color:var(--ink);font-size:15px}
.sep{color:#B5AB99;margin:0 7px}
.addr{font-weight:600;margin-top:6px}
.city{color:var(--muted);font-size:14px;margin:0}
.courtesy{font-size:15px;color:var(--ink);margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
.no-photo{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:14px;background:var(--tint)}

.pager{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:32px;color:var(--muted)}
.empty{text-align:center;padding:60px 20px;background:var(--card);border:1px dashed #CFC6B6;border-radius:14px}

.detail .back{display:inline-block;margin:18px 0;text-decoration:none;font-weight:600}
.gallery .hero{width:100%;aspect-ratio:16/9;object-fit:contain;background:#E9E4DA;border-radius:14px}
.thumbs{list-style:none;padding:0;margin:10px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px}
.thumb{width:100%;aspect-ratio:3/2;object-fit:contain;background:#E9E4DA;border-radius:8px}
.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:40px;margin-top:28px}
.detail-head h1{font-size:30px;margin:6px 0 2px}
.detail-head .badge{position:static;display:inline-block;margin-left:8px;vertical-align:middle}
.remarks{white-space:pre-line}
.facts-table{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px;margin:0}
.facts-table div{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:10px 0}
.facts-table dt{color:var(--muted)} .facts-table dd{margin:0;font-weight:600;text-align:right}
.inquire,.register{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px;display:flex;flex-direction:column;gap:14px}
aside .inquire{position:sticky;top:20px}
.inquire h2,.register h2{margin:0;font-size:24px}
.register .sub{margin:-6px 0 0;color:var(--muted)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.opt{text-transform:none;letter-spacing:0;font-weight:400}
.consent{display:flex;gap:10px;font-size:12.5px;color:var(--muted);align-items:flex-start}
.consent input{width:20px;min-height:20px;margin-top:2px;flex:none}
.err{color:#A12A1A;font-size:13px;margin:2px 0 0}
[aria-invalid="true"]{border-color:#A12A1A}
.hp{position:absolute;left:-9999px}
.fine{font-size:12px;color:var(--muted);margin:0}

.register-page{max-width:480px;margin:32px auto}
.gate{display:grid;grid-template-columns:minmax(0,1fr) 440px;gap:32px;margin-top:28px;align-items:start}
.gate-teaser{position:relative;border-radius:14px;overflow:hidden;background:var(--card);border:1px solid var(--line)}
.gate-img{width:100%;aspect-ratio:3/2;object-fit:contain;background:#E9E4DA}
.gate-cap{padding:16px 18px}
.thanks,.prose{max-width:640px;margin:48px auto;text-align:center}

.site-footer{border-top:1px solid var(--line);background:#EFE9DD;padding:28px 20px}
.site-footer>*{max-width:1240px;margin-left:auto;margin-right:auto}
.disclaimer{font-size:12.5px;color:var(--muted);line-height:1.6}

@media (max-width:1000px){
  .filters{grid-template-columns:repeat(3,minmax(0,1fr))}
  .filters .wide{grid-column:1/-1}
  .filters .btn{grid-column:1/-1}
  .detail-grid,.gate{grid-template-columns:1fr}
}
@media (max-width:560px){
  .filters{grid-template-columns:repeat(2,minmax(0,1fr))}
  .site-header nav a:first-child{display:none}
  .facts-table{grid-template-columns:1fr}
  .price.big{font-size:32px}
}

.capnote{margin:0;color:var(--muted);font-size:14px}

/* Agent card (Mark) on listing pages */
.agent{display:flex;gap:14px;align-items:center;padding-top:14px;border-top:1px solid var(--line)}
.agent-photo{width:72px;height:72px;border-radius:999px;object-fit:cover;background:#fff;border:1px solid var(--line);flex:none}
.agent-info{display:flex;flex-direction:column;font-size:14px;color:var(--muted);line-height:1.4}
.agent-info strong{font-size:16px;color:var(--ink)}

/* ---------- Search widget layout (State / City / ZIP / Beds / Baths first) ---------- */
.filters{grid-template-columns:repeat(5,minmax(0,1fr))}
.filters .wide{grid-column:span 2}
@media (max-width:1000px){.filters{grid-template-columns:repeat(2,minmax(0,1fr))}.filters .wide,.filters .btn{grid-column:1/-1}}

/* ---------- Results-page parallax (mechanism only; skin pending Mark's reference video) ----------
   A fixed layer sits behind BOTH the header and the results; everything scrolls over it in both
   directions. To skin it, set these tokens (image = a file Mark provides, never another broker's photo):
     --parallax-image   background image, e.g. url("/static/parallax.jpg")
     --parallax-tint    color wash over the image (keeps text readable)
     --panel-bg         background of the results panel that scrolls over the image
   Header behavior: <body data-header-mode="scroll"> (default: header scrolls away over the image)
                    <body data-header-mode="under">  (header stays put; results slide up over it) */
:root{
  --parallax-image:none;
  --parallax-tint:linear-gradient(180deg,rgba(21,67,76,.55),rgba(24,34,44,.35));
  --parallax-fallback:#1E5A66;
  --panel-bg:var(--paper);
}
.parallax-layer{position:fixed;inset:0;z-index:-1;pointer-events:none;will-change:transform;
  background:var(--parallax-tint),var(--parallax-image) center/cover no-repeat,var(--parallax-fallback)}
body.has-parallax{background:transparent}
body.has-parallax .sample-banner,
body.has-parallax .site-header,
body.has-parallax .search-hero{position:relative;z-index:1}
/* Over the image: light text for the header and heading */
body.theme-gold .site-header .brand,
body.theme-gold .site-header .brand-name,
body.theme-gold .site-header .brand-sub,
body.theme-gold .site-header nav a:not(.btn),
body.theme-gold .site-header .hello,
body.theme-gold .search-hero h1,
body.theme-gold .search-hero .lede{color:#fff}
body.theme-gold .site-header .brand-name em{color:#CFE3E6}
body.theme-gold .site-header .btn-ghost{color:#fff !important;border-color:#fff}
/* The results panel scrolls over the fixed image */
body.has-parallax main{position:relative;z-index:1}
body.theme-gold .results{background:var(--panel-bg);border-radius:18px;padding:8px 24px 32px;margin-top:24px;
  box-shadow:0 -8px 40px rgba(0,0,0,.18)}
body.has-parallax .site-footer{position:relative;z-index:1}
/* Header mode "under": on screens tall/wide enough, the header AND search box stay pinned over the
   photo and the results panel slides up over all of them (and back down on the way up).
   Smaller screens fall back to normal scrolling (the pinned search box would not fit). */
@media (min-width:900px) and (min-height:760px){
  body.has-parallax[data-header-mode="under"] main{z-index:auto}
  body.has-parallax[data-header-mode="under"] .site-header{position:sticky;top:0;z-index:1}
  body.has-parallax[data-header-mode="under"] .search-hero{position:sticky;top:var(--header-h,92px);z-index:1}
  body.has-parallax[data-header-mode="under"] .results{position:relative;z-index:2}
  body.has-parallax[data-header-mode="under"] .site-footer{z-index:2}
}
@media (max-width:560px){body.theme-gold .results{padding:4px 12px 24px;border-radius:14px}}

/* ---------- Results page skin: Parkview gold & white (Mark, Sept 28) ----------
   Matches the "About Us" section on parkviewrealtygroup.com: a solid gold panel slides up over a
   fixed photo, and the photo stays pinned underneath. White on this gold is only 2.37:1, so the
   listing details sit on white cards with dark text (readable, and keeps MLS broker attribution
   "readily visible"). Only the large panel heading is white, per Mark. */
:root{
  --gold:#C8A44C;
  --gold-deep:#A8862F;        /* hover/borders */
  --on-gold-strong:#FFFFFF;   /* large heading on the gold panel (per Mark) */
  --on-gold-ink:#1F1A10;      /* dark text/buttons on gold: 6.7:1 */
}
body.theme-gold{
  --panel-bg:var(--gold);
  /* Placeholder until Mark sends the photo: neutral dark, so the gold panel reads clearly */
  --parallax-tint:linear-gradient(180deg,rgba(15,15,15,.45),rgba(15,15,15,.25));
  --parallax-fallback:#2B2B2B;
}
body.theme-gold .results{background:var(--panel-bg);color:var(--on-gold-ink);padding:28px 32px 40px;border-radius:0;
  box-shadow:0 -12px 40px rgba(0,0,0,.28)}
body.theme-gold main{max-width:none;padding:0}
body.theme-gold .search-hero{max-width:1240px;margin:0 auto;padding:28px 20px 40px}
body.theme-gold .results>*{max-width:1200px;margin-left:auto;margin-right:auto}
body.theme-gold .results-head h2{color:var(--on-gold-strong);font-size:32px}
body.theme-gold .capnote{color:var(--on-gold-ink)}
body.theme-gold .card{background:#fff;border-color:transparent;box-shadow:0 4px 18px rgba(0,0,0,.12)}
body.theme-gold .card:hover{box-shadow:0 10px 28px rgba(0,0,0,.2)}
body.theme-gold .empty{background:#fff;border:0}
/* Buttons on the gold panel: dark with white text (readable) */
body.theme-gold .results .btn{background:var(--on-gold-ink);color:#fff !important}
body.theme-gold .results .btn:hover{background:#000}
body.theme-gold .results .btn-ghost{background:#fff;color:var(--on-gold-ink) !important;border:0}
body.theme-gold .pager{color:var(--on-gold-ink);font-weight:600}
/* Search form over the photo: white card, gold accents */
body.theme-gold .filters .btn{background:var(--gold);color:var(--on-gold-ink) !important;font-weight:700}
body.theme-gold .filters .btn:hover{background:var(--gold-deep)}
body.theme-gold .site-header .brand-name em{color:var(--gold)}
body.theme-gold .site-footer{background:#fff}
/* Header pinned under the content (data-header-mode="under"): give it room and keep it legible */
body.theme-gold .site-header{max-width:none;padding-left:max(20px,calc((100% - 1200px)/2));
  padding-right:max(20px,calc((100% - 1200px)/2))}
body.has-parallax[data-header-mode="under"] .sample-banner{position:relative;z-index:3}
@media (max-width:560px){body.theme-gold .results{padding:20px 14px 28px}body.theme-gold .results-head h2{font-size:26px}}

/* Homepage in the gold theme (no motion): dark band behind header + search, gold panel below.
   Uses the same placeholder dark as the results page until Mark's photo arrives. */
body.theme-gold.page-home{background:var(--gold)}
body.theme-gold.page-home .site-header,
body.theme-gold.page-home .search-hero{background:var(--parallax-fallback,#2B2B2B);
  box-shadow:0 0 0 100vmax var(--parallax-fallback,#2B2B2B);clip-path:inset(0 -100vmax)}
body.theme-gold.page-home .results{box-shadow:none}

/* Homes near me */
.near-bar{margin:-4px 0 18px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.linklike{background:none;border:0;padding:0;font:inherit;font-weight:700;text-decoration:underline;cursor:pointer;color:inherit;min-height:44px}
.dist{font-size:14px;font-weight:600;color:var(--ink);margin-top:2px}
body.theme-gold .near-bar{color:var(--on-gold-ink);font-weight:600}
body.theme-gold .results .btn-near{background:#fff;color:var(--on-gold-ink) !important}
body.theme-gold .results .btn-near:hover{background:#f3eee2}

/* Map view + draw-an-area search */
.map-wrap{background:#fff;border-radius:14px;padding:14px;margin:8px 0 24px;box-shadow:0 4px 18px rgba(0,0,0,.12)}
.map{width:100%;height:520px;border-radius:10px;background:#E9E4DA}
/* Fixed-height toolbar so the map never jumps while buttons change during drawing */
.map-tools{display:grid;grid-template-columns:auto auto 1fr;gap:10px;align-items:center;margin-bottom:12px;min-height:104px;align-content:start}
.map-tools .map-hint{grid-column:1/-1}
.map-hint{font-size:14px;color:var(--ink);min-height:2.9em}
.map-note{font-size:13px;color:var(--muted);margin:10px 0 0}
.map-off{background:#fff;border-radius:10px;padding:18px;color:var(--ink)}
.map-toggle{margin:4px 0 16px}
.map-link{margin:10px 0 0;font-size:14px}
.map-link a{font-weight:700}
body.theme-gold .search-hero .map-link a{color:#fff}
.area-note{grid-column:1/-1;margin:0;font-size:14px;color:var(--ink)}
body.theme-gold .results .map-tools .btn{background:var(--on-gold-ink);color:#fff !important}
body.theme-gold .results .map-tools .btn-ghost{background:#fff;color:var(--on-gold-ink) !important;border:1.5px solid var(--on-gold-ink)}
@media (max-width:560px){.map{height:420px}}

/* Single-property SEO pages (our office's listings) */
.crumbs{font-size:14px;margin:16px 0;color:var(--muted)}
.crumbs a{font-weight:600}
.property h1{font-size:32px;margin:6px 0 4px}
.property .h1-city{display:block;font-family:var(--body);font-size:18px;font-weight:500;color:var(--muted);margin-top:4px}
.agent-lg .agent-photo{width:96px;height:96px}
/* Same Parkview gold & white as the homepage/results: dark header band, gold page, white content panels */
body.theme-gold.page-property{background:var(--gold)}
body.theme-gold.page-property .site-header{background:var(--parallax-fallback,#2B2B2B);
  box-shadow:0 0 0 100vmax var(--parallax-fallback,#2B2B2B);clip-path:inset(0 -100vmax)}
body.page-property main{padding-top:8px}
body.page-property .crumbs{color:var(--on-gold-ink)}
body.page-property .crumbs a{color:var(--on-gold-ink)}
body.page-property .gallery{background:#fff;border-radius:14px;padding:12px}
body.page-property .detail-grid>div{background:#fff;border-radius:14px;padding:24px 28px;box-shadow:0 4px 18px rgba(0,0,0,.12)}
body.page-property .inquire{box-shadow:0 4px 18px rgba(0,0,0,.12)}
body.page-property .site-footer{background:#fff}
@media (max-width:560px){body.page-property .detail-grid>div{padding:18px 16px}}
body.page-property .inquire .btn{background:var(--gold);color:var(--on-gold-ink) !important;font-weight:700}

/* ---------- Parkview Realty Group listing flyer (US Letter, print-ready) ---------- */
body.flyer-page{background:#E9E4DA;margin:0}
.flyer-tools{display:flex;gap:10px;justify-content:center;padding:16px}
.flyer{width:8.5in;min-height:11in;margin:0 auto 32px;background:#fff;box-shadow:0 6px 30px rgba(0,0,0,.18);
  display:flex;flex-direction:column;color:#18222C;font-family:"Public Sans",Arial,sans-serif}
.fl-head{background:#1F1A10;color:#fff;display:flex;justify-content:space-between;align-items:center;padding:.22in .4in}
.fl-brand{font-family:Fraunces,Georgia,serif;font-size:26px;font-weight:600}
.fl-brand em{color:#C8A44C}
.fl-status{background:#C8A44C;color:#1F1A10;font-weight:700;font-size:14px;padding:6px 14px;border-radius:999px;letter-spacing:.04em;text-transform:uppercase}
.fl-hero{height:4.1in;background:#E9E4DA}
.fl-hero-img{width:100%;height:100%;object-fit:cover;display:block}
.fl-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;padding:4px 0 0;background:#fff}
.fl-strip img{width:100%;height:1.35in;object-fit:cover;display:block}
.fl-main{padding:.22in .4in .1in;flex:1}
.fl-price{font-family:Fraunces,Georgia,serif;font-size:40px;font-weight:600;color:#1F1A10}
.fl-addr{font-family:Fraunces,Georgia,serif;font-size:26px;margin:2px 0 10px;line-height:1.15}
.fl-addr span{display:block;font-family:"Public Sans",Arial,sans-serif;font-size:16px;font-weight:500;color:#56616B;margin-top:3px}
.fl-facts{display:flex;gap:0;border-top:3px solid #C8A44C;border-bottom:1px solid #E2DBCE;margin:6px 0 12px}
.fl-facts div{flex:1;text-align:center;padding:8px 4px;border-right:1px solid #E2DBCE}
.fl-facts div:last-child{border-right:0}
.fl-facts b{display:block;font-size:20px}
.fl-facts span{font-size:12px;color:#56616B;text-transform:uppercase;letter-spacing:.05em}
.fl-remarks{font-size:13.5px;line-height:1.5;margin:0}
.fl-foot{display:flex;align-items:center;gap:16px;background:#C8A44C;padding:.18in .4in}
.fl-agent-photo{width:84px;height:84px;border-radius:999px;object-fit:cover;background:#fff;border:3px solid #fff;flex:none}
.fl-agent{display:flex;flex-direction:column;flex:1;color:#1F1A10;font-size:14px;line-height:1.4}
.fl-agent strong{font-family:Fraunces,Georgia,serif;font-size:21px}
.fl-web{text-align:right;color:#1F1A10;font-size:12px;display:flex;flex-direction:column}
.fl-web b{font-size:13px;word-break:break-all;max-width:2.8in}
.fl-fine{font-size:10px;color:#56616B;text-align:center;margin:6px 0 8px}
.flyer-link{margin:4px 0 0}
@media screen and (max-width:880px){
  .flyer{width:auto;min-height:0;margin:0 12px 24px}
  .fl-hero{height:auto;aspect-ratio:4/3}
  .fl-foot{flex-wrap:wrap}
  .fl-web{text-align:left}
}
@page{size:letter;margin:0}
@media print{
  body.flyer-page{background:#fff}
  .flyer-tools{display:none}
  .flyer{box-shadow:none;margin:0;width:8.5in;height:11in}
  .fl-head,.fl-foot,.fl-status,.fl-facts{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* SEO additions: summary, related listings, office + agent pages */
.summary{font-size:17px;line-height:1.6;margin:4px 0 8px}
.related{margin-top:28px;background:#fff;border-radius:14px;padding:22px 24px;box-shadow:0 4px 18px rgba(0,0,0,.12)}
.related h2{margin:0 0 14px;font-size:24px}
.related-more{margin:14px 0 0;font-weight:600}
.office-hero{max-width:1240px;margin:0 auto;padding:28px 0 6px;color:var(--on-gold-ink)}
.office-hero h1{margin:0 0 6px;font-size:clamp(28px,4vw,42px)}
.agent-profile{display:flex;gap:24px;align-items:center;background:#fff;border-radius:14px;padding:24px;margin-top:24px;box-shadow:0 4px 18px rgba(0,0,0,.12)}
.agent-profile .agent-photo{width:160px;height:160px;border-radius:999px;object-fit:cover;flex:none;border:1px solid var(--line)}
.agent-profile h1{margin:0 0 4px;font-size:34px}
.agent-role{margin:0 0 8px;color:var(--muted);font-size:17px}
.agent-contact{display:flex;flex-direction:column;gap:2px;margin:0;font-weight:600}
.agent-info a{color:inherit}
@media (max-width:560px){.agent-profile{flex-direction:column;text-align:center}}

/* Photo viewer: clickable thumbnails + full-screen lightbox */
.thumb-btn{display:block;width:100%;padding:0;border:2px solid transparent;border-radius:10px;background:none;cursor:pointer;overflow:hidden}
.thumb-btn[aria-pressed="true"]{border-color:var(--gold,#C8A44C)}
.thumb-btn:focus-visible{outline:3px solid #E0A33B;outline-offset:2px}
.thumb-btn .thumb{border-radius:8px}
.fl-strip .thumb-btn{border-radius:0;border-width:0}
.fl-strip .thumb-btn[aria-pressed="true"]{box-shadow:inset 0 0 0 3px #C8A44C}
.fl-strip-img{width:100%;height:1.35in;object-fit:cover;display:block}
[data-gallery-main]{cursor:zoom-in}
.lightbox{position:fixed;inset:0;z-index:1000;background:rgba(10,10,10,.92);display:flex;align-items:center;justify-content:center}
.lightbox[hidden]{display:none}
.lightbox img{max-width:92vw;max-height:84vh;object-fit:contain;border-radius:6px}
.lightbox button{position:absolute;background:rgba(255,255,255,.14);color:#fff;border:0;border-radius:999px;
  width:52px;height:52px;font-size:34px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.lightbox button:hover{background:rgba(255,255,255,.28)}
.lightbox-prev{left:16px;top:50%;transform:translateY(-50%)}
.lightbox-next{right:16px;top:50%;transform:translateY(-50%)}
.lightbox-close{top:16px;right:16px}
.lightbox-count{position:absolute;bottom:18px;left:0;right:0;text-align:center;color:#fff;font-size:15px}
@media print{.lightbox{display:none !important}}

/* Video tour (YouTube link from the MLS), shown under the photos */
.video-tour{margin:18px 0 0}
.video-tour h2{margin:0 0 10px}
.video-frame{position:relative;width:100%;aspect-ratio:16/9;background:#111;border-radius:14px;overflow:hidden}
.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
body.page-property .video-tour{background:#fff;border-radius:14px;padding:12px}

/* Neighborhood views: open houses and market snapshots (Oct 2026) */
.area-hero .eyebrow{margin:0 0 4px;font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--on-gold-ink)}
.area-buttons{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 22px}
body.page-area .area-buttons .btn{background:var(--on-gold-ink);color:#fff !important;border:1.5px solid var(--on-gold-ink)}
body.page-area .area-buttons .btn-ghost{background:#fff;color:var(--on-gold-ink) !important;border-color:#fff}
.area-switch{display:flex;flex-wrap:wrap;gap:8px;margin:28px 0 0}
.area-switch a{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border-radius:999px;background:rgba(255,255,255,.55);
  color:var(--on-gold-ink);text-decoration:none;font-weight:600;font-size:14px}
.area-switch a[aria-current]{background:var(--on-gold-ink);color:#fff}
.panel{background:#fff;border-radius:14px;padding:22px 24px;box-shadow:0 4px 18px rgba(0,0,0,.12);margin:0 0 20px}
.panel h2{margin:0 0 4px;font-size:22px}
.empty-panel p{margin:6px 0 0}
.oh-day{margin:0 0 26px}
.oh-day>h2{color:var(--on-gold-ink);margin:0 0 12px;font-size:24px}
.oh-item{display:flex;flex-direction:column;gap:0}
.oh-when{display:flex;align-items:center;gap:8px;background:#1D2733;color:#fff;font-weight:700;font-size:15px;padding:9px 14px;
  border-radius:14px 14px 0 0}
.oh-dot{width:9px;height:9px;border-radius:50%;background:#C8A44C;flex:none}
.oh-item .card{border-top-left-radius:0;border-top-right-radius:0}
.oh-note{margin:6px 2px 0;font-size:13px;color:var(--on-gold-ink)}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin:0 0 20px}
.stat-tile{background:#fff;border-radius:14px;padding:16px 18px 14px;box-shadow:0 4px 18px rgba(0,0,0,.10);border-top:6px solid var(--accent)}
.stat-value{font-family:var(--display);font-weight:600;font-size:32px;line-height:1.1;color:var(--accent)}
.stat-label{font-weight:600;font-size:14px;color:var(--ink);margin-top:4px}
.stat-note{font-size:12px;color:var(--muted)}
.chart-panel .chart-sub{margin:0 0 6px;color:var(--muted);font-size:14px}
.chart-svg{width:100%;height:auto;display:block;margin-top:8px}
.chart-legend{list-style:none;padding:0;margin:8px 0 0;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:14px}
.chart-legend .swatch{display:inline-block;width:14px;height:14px;border-radius:4px;margin-right:7px;vertical-align:-2px}
.chart-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.chart-pair .panel{margin:0 0 20px}
@media (max-width:900px){.chart-pair{grid-template-columns:1fr}}
.donut-row{display:flex;flex-wrap:wrap;align-items:center;gap:20px 36px}
.donut-row .chart-svg{width:220px;max-width:100%}
.donut-row .chart-legend{flex-direction:column;font-size:15px}
.chart-empty{color:var(--muted);margin:10px 0 0}
.source-note{color:var(--on-gold-ink);font-size:13px;line-height:1.6;max-width:900px}
.area-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.area-tile{display:flex;flex-direction:column;gap:4px;background:#fff;border-radius:14px;padding:18px 20px;text-decoration:none;color:var(--ink);
  box-shadow:0 4px 18px rgba(0,0,0,.10);min-height:44px}
.area-tile strong{font-family:var(--display);font-size:22px}
.area-tile span{color:var(--muted);font-size:14px}
@media (max-width:560px){.panel{padding:16px}.stat-value{font-size:26px}}

/* Private Search Console dashboard */
.page-dash .panel h3{margin:16px 0 6px;font-size:17px}
.dash-ok{color:#1f6b2a;font-weight:600}
.dash-bad{color:#9b1c1c;font-weight:600}
.dash-muted{color:var(--muted)}
.dash-note{background:#fff;display:inline-block;padding:6px 12px;border-radius:8px;margin:10px 0 0}
.dash-scroll{overflow-x:auto;max-height:560px;overflow-y:auto}
.dash-table{width:100%;border-collapse:collapse;font-size:14px}
.dash-table th{position:sticky;top:0;background:#fff;text-align:left;border-bottom:2px solid var(--line);padding:8px 10px;white-space:nowrap}
.dash-table td{border-bottom:1px solid var(--line);padding:7px 10px;vertical-align:top}
.dash-table td.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ix{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.ix-yes{background:#DDF1E1;color:#1f6b2a}
.ix-no{background:#FDE8D8;color:#8a3b12}
.ix-unknown{background:#EEE;color:#555}

/* Saved searches (Oct 2026) */
.results-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px}
.save-search{display:inline;margin:0}
.btn-save{background:#fff;color:var(--on-gold-ink,#1F1A10) !important;border:1.5px solid var(--on-gold-ink,#1F1A10);font-weight:700}
.btn-save:hover{background:#FFF8E6}
.saved-page{max-width:760px;margin:24px auto;background:#fff;border-radius:14px;padding:24px 28px}
.saved-list{list-style:none;padding:0;margin:16px 0}
.saved-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.saved-item form{margin:0}
.saved-empty{color:var(--muted);padding:12px 0}
.saved-page .note{background:#EEF6EF;border-radius:8px;padding:8px 12px}
.linklike{background:none;border:0;padding:0;color:var(--lake);text-decoration:underline;cursor:pointer;font:inherit}
