/* ═══════════════════════════════════════════════════════════
   Localist — prototype stylesheet
   Implements Design System v2. Tokens are the system's tokens;
   do not introduce values that aren't here.
   ═══════════════════════════════════════════════════════════ */
:root{
  /* brand — from Localist_Logo_Vector.eps */
  --marigold:#F3AC39; --marigold-600:#D68F14; --marigold-ink:#7A4E06; --marigold-wash:#FDF1DC;
  --rose:#E52A7A; --rose-600:#C21568; --rose-800:#8E0F4C; --rose-wash:#FCE6F1;
  --harbour:#0C84B1; --harbour-700:#0A5C7E; --harbour-300:#7FC4DF; --harbour-wash:#E4F1F7;
  /* extended */
  --leaf:#AAC22C; --leaf-700:#4F6B08; --leaf-wash:#F1F7DF;
  /* anchor */
  --lacquer:#0E3440; --lacquer-800:#0B2C36;
  /* neutrals */
  --ink:#241F1A; --ink-2:#4E463B; --muted:#6E665B;
  --line:#EDE4D5; --line-strong:#E0D4BE; --stone:#F4F0E8;
  --paper:#FFFAF2; --surface:#FFFFFF;
  /* type */
  --display:'Poppins','Museo Sans','Sofia Pro','Avenir Next',system-ui,sans-serif;
  --ui:'Be Vietnam Pro','Inter','Segoe UI',system-ui,-apple-system,sans-serif;
  /* space */
  --s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:20px;--s6:24px;--s8:32px;--s10:40px;--s12:48px;--s16:64px;--s20:80px;--s28:112px;
  /* radius */
  --r-pill:999px; --r-input:12px; --r-card:16px; --r-panel:24px;
  /* elevation */
  --e1:0 1px 2px rgba(36,31,26,.05), 0 6px 16px rgba(36,31,26,.06);
  --e2:0 4px 10px rgba(36,31,26,.09), 0 18px 38px rgba(36,31,26,.09);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
body{margin:0;overflow-x:hidden;background:var(--paper);color:var(--ink);
  font-family:var(--ui);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{margin:0;font-family:var(--display);line-height:1.05;letter-spacing:-.03em;font-weight:800}
p,ul,ol,figure,table{margin:0}
a{color:var(--harbour-700)}
img,svg{display:block;max-width:100%}
button{font:inherit;color:inherit}
code{font-family:ui-monospace,'SF Mono',Menlo,monospace;font-size:.86em}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.wrap-wide{max-width:1440px;margin:0 auto;padding:0 24px}
.wrap-prose{max-width:680px;margin:0 auto;padding:0 24px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--harbour);outline-offset:2px;border-radius:6px}
.skip{position:absolute;left:-9999px;background:#fff;padding:10px 14px;z-index:200}
.skip:focus{left:12px;top:12px}
[hidden]{display:none!important}

/* ── wordmark ─────────────────────────────────────────── */
.wm{height:30px;width:auto}
.wm .wm-local{fill:var(--wm-local,var(--marigold))}
.wm .wm-ist{fill:var(--wm-ist,var(--rose))}
.wm .wm-pin{fill:var(--wm-pin,var(--harbour))}

/* ── prototype strip ──────────────────────────────────── */
.proto{background:var(--lacquer);color:var(--harbour-300);font-size:12.5px}
.proto .wrap-wide{padding-top:9px;padding-bottom:9px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.proto strong{color:var(--marigold);font-weight:600}
.proto .spacer{flex:1}
.pbtn{background:transparent;border:1px solid rgba(255,255,255,.34);color:#fff;border-radius:var(--r-pill);
  padding:4px 12px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}
.pbtn:hover{background:rgba(255,255,255,.12)}
.pbtn.on{background:var(--marigold);border-color:var(--marigold);color:var(--ink)}
.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 auto}
.dot.live{background:var(--leaf)} .dot.snap{background:var(--marigold)} .dot.err{background:#FF8FB8}
.proto select,.proto input{font:inherit;font-size:12px;background:rgba(255,255,255,.1);color:#fff;
  border:1px solid rgba(255,255,255,.28);border-radius:var(--r-pill);padding:4px 10px}
.proto select option{color:#111}
.protopanel{background:var(--lacquer-800);color:#CBD9DF;border-top:1px solid rgba(255,255,255,.14);font-size:13px}
.protopanel .wrap-wide{padding:16px 24px}
.protopanel h4{font-family:var(--ui);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--marigold);margin-bottom:8px}
.protopanel p{max-width:88ch;line-height:1.6;margin-bottom:10px}
.protopanel input[type=password]{width:min(420px,100%);font-size:13px;padding:8px 12px;border-radius:var(--r-input)}
.protopanel a{color:var(--harbour-300)}

/* ── header ───────────────────────────────────────────── */
header.site{position:sticky;top:0;z-index:60;background:var(--paper);border-bottom:1px solid var(--line);transition:background .2s}
header.site.scrolled{background:var(--lacquer);border-bottom-color:transparent}
header.site.scrolled nav.main a,header.site.scrolled .saved{color:var(--harbour-300)}
header.site.scrolled nav.main a:hover,header.site.scrolled nav.main a[aria-current]{background:rgba(255,255,255,.12);color:#fff}
header.site.scrolled .saved .n{background:rgba(255,255,255,.16);color:#fff}
header.site.scrolled .lang{border-color:rgba(255,255,255,.35)}
header.site.scrolled .lang button{color:#9FB6BF}
header.site.scrolled .lang button[aria-pressed="true"]{background:var(--marigold);color:var(--ink)}
header.site.scrolled .menu-toggle{border-color:rgba(255,255,255,.35)}
header.site.scrolled .menu-toggle svg{stroke:#fff}
header.site.dark{background:var(--lacquer);border-bottom-color:transparent}
.headrow{display:flex;align-items:center;gap:14px;padding:12px 24px;max-width:1440px;margin:0 auto}
.brand{display:flex;align-items:center;text-decoration:none;flex:0 0 auto}
.city{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;color:var(--ink);
  background:var(--marigold-wash);border:1px solid var(--marigold);border-radius:var(--r-pill);padding:5px 12px;cursor:pointer}
.city svg{width:12px;height:12px;stroke:var(--marigold-ink);fill:none;stroke-width:2.4}
nav.main{margin-left:auto}
nav.main ul{display:flex;gap:2px;list-style:none;margin:0;padding:0;align-items:center}
nav.main a{display:block;padding:7px 12px;border-radius:var(--r-pill);font-size:14.5px;font-weight:500;
  color:var(--ink-2);text-decoration:none}
nav.main a:hover{background:var(--stone);color:var(--ink)}
nav.main a[aria-current]{color:var(--ink);font-weight:600;background:var(--stone)}
.head-actions{display:flex;align-items:center;gap:8px}
.lang{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--r-pill);overflow:hidden;font-size:12.5px;font-weight:600}
.lang button{border:0;background:transparent;padding:5px 11px;cursor:pointer;color:var(--muted)}
.lang button[aria-pressed="true"]{background:var(--lacquer);color:#fff}
.saved{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--ink-2);text-decoration:none;
  padding:7px 10px;border-radius:var(--r-pill)}
.saved:hover{background:var(--stone)}
.saved svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9}
.saved .n{font-size:11.5px;font-weight:700;background:var(--stone);color:var(--ink-2);border-radius:var(--r-pill);padding:1px 7px}
.menu-toggle{display:none;background:transparent;border:1.5px solid var(--line-strong);border-radius:var(--r-input);padding:8px 10px;cursor:pointer}
.menu-toggle svg{width:18px;height:18px;fill:none;stroke:var(--ink);stroke-width:2}
.mobmenu{display:none;border-top:1px solid var(--line);background:var(--surface);padding:14px 24px}
.mobmenu.open{display:block}
.mobmenu ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.mobmenu a{display:block;padding:11px 12px;border-radius:var(--r-input);text-decoration:none;color:var(--ink);font-weight:500}
.mobmenu a:hover{background:var(--stone)}
.mobmenu .lang{margin-bottom:12px}

/* ── buttons ──────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--ui);
  font-size:15px;font-weight:600;padding:11px 20px;border-radius:var(--r-pill);border:1.5px solid transparent;
  cursor:pointer;text-decoration:none;transition:background .15s,color .15s,border-color .15s,transform .08s}
.btn:active{transform:translateY(1px)}
.btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}
.btn-primary{background:var(--rose-600);color:#fff}
.btn-primary:hover{background:var(--rose-800)}
.btn-dark{background:var(--lacquer);color:#fff}
.btn-dark:hover{background:#000}
.btn-marigold{background:var(--marigold);color:var(--ink)}
.btn-marigold:hover{background:var(--marigold-600)}
.btn-outline{background:transparent;color:var(--ink);border-color:var(--line-strong)}
.btn-outline:hover{border-color:var(--ink);background:var(--stone)}
.btn-quiet{background:transparent;color:var(--harbour-700);padding:11px 6px}
.btn-quiet:hover{text-decoration:underline;text-underline-offset:3px}
.btn-sm{font-size:13.5px;padding:8px 15px}
.btn-lg{font-size:16.5px;padding:14px 26px}
.btn[disabled]{opacity:.42;pointer-events:none}
.on-marigold .btn-outline{color:var(--ink);border-color:rgba(36,31,26,.32)}
.on-marigold .btn-outline:hover{background:rgba(255,255,255,.4);border-color:var(--ink)}
.on-lacquer .btn-outline{color:#fff;border-color:rgba(255,255,255,.4)}
.on-lacquer .btn-outline:hover{background:rgba(255,255,255,.12);border-color:#fff}

/* ── section rhythm ───────────────────────────────────── */
.sec-editorial{padding:var(--s20) 0}
.sec-product{padding:var(--s12) 0}
.kicker{font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--marigold-ink);
  display:flex;align-items:center;gap:10px;margin-bottom:12px}
.kicker::after{content:"";height:2px;flex:1;max-width:110px;background:var(--rose);border-radius:2px}
.on-lacquer .kicker{color:var(--marigold)} .on-lacquer .kicker::after{background:rgba(255,255,255,.35)}
h2.sec-t{font-size:clamp(26px,3.6vw,38px)}
.sec-sub{margin-top:var(--s4);font-size:17px;color:var(--ink-2);max-width:min(100%,66ch)}
.on-lacquer{background:var(--lacquer);color:#CBD9DF}
.on-lacquer h2,.on-lacquer h3,.on-lacquer h4{color:#fff}
.on-lacquer .sec-sub{color:#9FB6BF}
.on-lacquer a{color:var(--harbour-300)}
.bg-wash{background:var(--marigold-wash)}

/* ── hero ─────────────────────────────────────────────── */
.hero{background:var(--marigold);color:var(--ink);padding:var(--s16) 0 0}
.hero .wrap-wide{padding-bottom:0}
.hero .kicker{color:var(--marigold-ink)} .hero .kicker::after{background:rgba(36,31,26,.3)}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:var(--s10);align-items:center}
h1.hero-t{font-family:var(--display);font-weight:900;font-size:clamp(34px,5.2vw,56px);line-height:1;letter-spacing:-.035em}
.hero-sub{margin-top:var(--s5);font-size:18px;font-weight:500;max-width:min(100%,44ch);color:#3A2708}
.hero-note{margin-top:var(--s3);font-size:14px;color:var(--marigold-ink);max-width:min(100%,52ch)}
.hero-art{display:grid;grid-template-columns:1.35fr 1fr;grid-template-rows:auto auto;gap:12px}
.hero-art .ph{border-radius:var(--r-card);overflow:hidden;position:relative;background:var(--marigold-600)}
.hero-art .ph:nth-child(1){grid-row:span 2;aspect-ratio:3/4}
.hero-art .ph:nth-child(2),.hero-art .ph:nth-child(3){aspect-ratio:4/3}
.hero-search{padding-bottom:var(--s12);margin-top:var(--s10)}
.capsule-wrap{max-width:1180px;margin:0 auto;padding:0 24px;transform:translateY(50%)}
.hero-tail{height:56px;background:linear-gradient(var(--marigold) 50%, var(--paper) 50%)}

/* photo frame with illustration fallback */
.ph{position:relative;background:var(--stone);overflow:hidden;border-radius:var(--r-card);aspect-ratio:4/3}
.ph .fallback{position:absolute;inset:0;width:100%;height:100%}
.ph img{position:relative;width:100%;height:100%;object-fit:cover;z-index:1}
.ph img[data-failed]{display:none}
.credit{position:absolute;left:0;right:0;bottom:0;z-index:2;font-size:10px;line-height:1.5;
  background:rgba(14,52,64,.92);color:#FFFFFF;padding:5px 9px;letter-spacing:.01em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.credit a{color:#fff;text-decoration:underline;text-underline-offset:2px}

/* ── search capsule ───────────────────────────────────── */
.capsule{background:var(--surface);border-radius:var(--r-pill);box-shadow:var(--e2);
  display:grid;grid-template-columns:1.15fr 1fr .82fr .95fr 1fr auto;align-items:center;padding:6px 6px 6px 4px}
.cf{padding:8px 16px;min-width:0;border-radius:var(--r-pill);cursor:pointer;background:transparent;border:0;
  text-align:left;display:flex;flex-direction:column;gap:2px;justify-content:center}
.cf .lbl,.cf .val{display:block;width:100%}
.cf + .cf{box-shadow:inset 1px 0 0 var(--line)}
.cf:hover{background:var(--stone);box-shadow:none}
.cf .lbl{font-size:11px;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:var(--muted)}
.cf .val{font-size:14.5px;color:var(--ink);font-weight:500;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cf .val.ph-text{color:var(--muted);font-weight:400}
.cgo{width:48px;height:48px;border-radius:50%;border:0;background:var(--rose-600);color:#fff;
  display:grid;place-items:center;cursor:pointer;flex:0 0 auto;justify-self:end;margin-left:6px}
.cgo svg{width:19px;height:19px;fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round}
.capsule-m{display:none;width:100%;background:var(--surface);border-radius:var(--r-pill);box-shadow:var(--e2);
  padding:9px 9px 9px 20px;align-items:center;gap:12px;border:0;cursor:pointer;text-align:left}
.capsule-m .t{font-size:15px;font-weight:600;color:var(--ink);display:block}
.capsule-m .s{font-size:12.5px;color:var(--muted);display:block}

/* full-screen search sheet */
.sheet{position:fixed;inset:0;z-index:120;background:var(--paper);display:flex;flex-direction:column;transform:translateY(100%);
  transition:transform .26s;overflow:hidden}
.sheet.open{transform:none}
.sheet-top{display:flex;align-items:center;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line);background:var(--surface)}
.sheet-top h3{font-size:17px}
.sheet-body{flex:1;overflow-y:auto;padding:20px}
.sheet-foot{border-top:1px solid var(--line);padding:14px 20px;display:flex;gap:12px;align-items:center;background:var(--surface)}
.iconbtn{width:38px;height:38px;border-radius:var(--r-pill);border:1.5px solid var(--line-strong);background:var(--surface);
  cursor:pointer;display:grid;place-items:center;flex:0 0 auto}
.iconbtn svg{width:17px;height:17px;fill:none;stroke:var(--ink);stroke-width:2;stroke-linecap:round}
body.locked{overflow:hidden}

/* ── filters ──────────────────────────────────────────── */
.filterbar{position:sticky;top:57px;z-index:40;background:var(--paper);border-bottom:1px solid var(--line);padding:12px 0}
.filterrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:7px;background:var(--surface);border:1.5px solid var(--line-strong);
  border-radius:var(--r-pill);padding:7px 15px;font-size:13.5px;font-weight:500;color:var(--ink-2);cursor:pointer;white-space:nowrap}
.chip:hover{border-color:var(--ink);color:var(--ink)}
.chip[aria-pressed="true"]{background:var(--lacquer);border-color:var(--lacquer);color:#fff}
.chip .n{background:rgba(255,255,255,.22);border-radius:var(--r-pill);padding:0 7px;font-size:11.5px;font-weight:700}
.chip svg{width:10px;height:10px;stroke:currentColor;fill:none;stroke-width:2.4;opacity:.6}
.chip.more{border-style:dashed}
.chip.clear{border-color:transparent;color:var(--harbour-700);text-decoration:underline;text-underline-offset:3px}
h1.resultline{font-family:var(--display);font-size:22px;font-weight:800;letter-spacing:-.025em;
  color:var(--ink);margin-top:14px;line-height:1.25}
h1.resultline .sub{display:block;font-family:var(--ui);font-size:13.5px;font-weight:400;
  letter-spacing:0;color:var(--muted);margin-top:6px}
.resultline b{color:var(--ink)}
.legend{margin-top:0;margin-bottom:var(--s5)}
.legend summary{display:none}
.legend .legend-body{padding:14px 16px}
.resultline em{font-style:italic}

/* ── discovery layout ─────────────────────────────────── */
.discovery{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:var(--s6);align-items:start;padding-top:var(--s6)}
.results{min-width:0}
.mappanel{position:sticky;top:126px}

/* ── property cards ───────────────────────────────────── */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:var(--s6) var(--s5)}
.pcard{background:transparent;border:0;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;
  display:flex;flex-direction:column;gap:10px;text-decoration:none}
.pmedia{position:relative;aspect-ratio:4/3;border-radius:var(--r-card);overflow:hidden;background:var(--stone)}
.pmedia img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}
.pcard:hover .pmedia img{transform:scale(1.03)}
.pmedia.src{background:var(--lacquer);display:grid;place-items:center}
.pmedia.src img{width:auto;height:100%;object-fit:contain;max-width:100%}
.pmedia.none{background:var(--marigold-wash);display:grid;place-items:center;
  background-image:repeating-linear-gradient(-45deg,transparent 0 9px,rgba(214,143,20,.11) 9px 18px)}
.pmedia.none .glyph{width:34px;opacity:.5}
.pmedia.none .nt{position:absolute;left:0;right:0;bottom:12px;text-align:center;font-size:12px;font-weight:600;color:var(--marigold-ink)}
.save{position:absolute;top:10px;right:10px;z-index:3;width:34px;height:34px;border-radius:50%;border:0;
  background:rgba(255,255,255,.94);display:grid;place-items:center;cursor:pointer;box-shadow:0 1px 5px rgba(0,0,0,.18)}
.save svg{width:17px;height:17px;fill:none;stroke:var(--ink);stroke-width:2}
.save[aria-pressed="true"] svg{fill:var(--rose);stroke:var(--rose)}
.mediatag{position:absolute;left:0;right:0;bottom:0;z-index:2;text-align:center;font-size:10.5px;font-weight:600;
  background:rgba(14,52,64,.94);color:#fff;padding:6px 10px}
.loc{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}
.loc svg{width:13px;height:13px;stroke:var(--harbour);fill:none;stroke-width:2;flex:0 0 auto}
.loc b{color:var(--ink);font-weight:600;font-size:14.5px}
.price{font-family:var(--display);font-size:21px;font-weight:800;letter-spacing:-.02em;color:var(--ink)}
.price small{font-family:var(--ui);font-size:13px;font-weight:400;color:var(--muted);letter-spacing:0}
.approxfx{font-size:12px;color:var(--muted);margin-top:-4px}
.facts{font-size:14px;color:var(--ink-2)}
.facts .dim{color:var(--muted);font-style:italic}
.offers{font-size:13px;color:var(--muted)}
.offers.multi{color:var(--harbour-700);font-weight:600}
.cardrule{height:1px;background:var(--line);margin:2px 0}

/* ── badges ───────────────────────────────────────────── */
.badge{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line-strong);background:var(--surface);
  border-radius:var(--r-pill);padding:3px 11px 3px 9px;font-size:12px;font-weight:600;color:var(--ink-2);
  white-space:nowrap;line-height:1.7}
.badge::before{content:"";width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--muted)}
.badge.confirmed::before{background:var(--leaf)}
.badge.evidence::before{background:var(--harbour)}
.badge.fresh::before{background:var(--marigold)}
.badge.unconf::before{background:transparent;border:2px solid var(--marigold);width:9px;height:9px}
.badge.stale{border-color:var(--marigold);color:var(--marigold-ink)}
.badge.stale::before{background:transparent;border:2px solid var(--marigold-600);width:9px;height:9px}
.badge.unknown::before{background:transparent;border:1.5px dashed var(--muted);width:8px;height:8px}
.badge.stop{border-color:var(--rose-800);color:var(--rose-800)}
.badge.stop::before{background:var(--rose-800)}
.badgerow{display:flex;flex-wrap:wrap;gap:7px}

/* ── legend ───────────────────────────────────────────── */
.legend{border:1px solid var(--line);border-radius:var(--r-card);background:var(--surface);margin-bottom:var(--s5)}
.legend summary{cursor:pointer;list-style:none;padding:12px 16px;font-size:14px;font-weight:600;color:var(--harbour-700);
  display:flex;align-items:center;gap:9px}
.legend summary::-webkit-details-marker{display:none}
.legend summary::before{content:"";width:0;height:0;border-left:5px solid currentColor;border-top:4px solid transparent;
  border-bottom:4px solid transparent;transition:transform .15s}
.legend[open] summary::before{transform:rotate(90deg)}
.legend-body{padding:0 16px 16px;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px 22px}
.legend-item{display:flex;gap:10px;align-items:baseline;font-size:13px;color:var(--ink-2);line-height:1.5}
.legend-item .badge{flex:0 0 auto}
.legend-foot{grid-column:1/-1;border-top:1px solid var(--line);padding-top:12px;font-size:12.5px;color:var(--muted);line-height:1.6}

/* ── notes ────────────────────────────────────────────── */
.note{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--line-strong);
  border-radius:var(--r-input);padding:13px 16px;font-size:14px;color:var(--ink-2);line-height:1.55}
.note b{color:var(--ink)}
.note.harbour{border-left-color:var(--harbour);background:var(--harbour-wash);color:var(--harbour-700)}
.note.harbour b{color:var(--harbour-700)}
.note.rose{border-left-color:var(--rose-600)}
.note + .note{margin-top:12px}

/* ── map ──────────────────────────────────────────────── */
.mapshell{border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;background:var(--surface)}
.maphead{display:flex;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);
  font-size:12.5px;color:var(--muted)}
.maphead b{color:var(--ink)}
.mapcanvas{position:relative;aspect-ratio:4/4.4;background:var(--paper)}
.mapcanvas svg.base{position:absolute;inset:0;width:100%;height:100%}
.mappin{position:absolute;transform:translate(-50%,-100%);background:var(--harbour-700);color:#fff;border:0;
  border-radius:var(--r-pill);padding:6px 13px;font-family:var(--display);font-size:13px;font-weight:700;cursor:pointer;
  box-shadow:0 3px 10px rgba(7,57,79,.34);white-space:nowrap;z-index:3}
.mappin::after{content:"";position:absolute;left:50%;bottom:-4px;width:9px;height:9px;background:var(--harbour-700);
  transform:translateX(-50%) rotate(45deg)}
.mappin.approx{background:rgba(12,132,177,.1);color:var(--lacquer);border:2px dashed var(--harbour);
  box-shadow:none;transform:translate(-50%,-50%);padding:5px 12px}
.mappin.approx::after{display:none}
.mappin.hot{background:var(--rose-600);z-index:4}
.mappin.hot::after{background:var(--rose-600)}
.wardlbl{position:absolute;transform:translate(-50%,10px);font-size:11px;font-weight:600;color:var(--muted);
  white-space:nowrap;pointer-events:none;z-index:2;
  text-shadow:0 0 4px var(--paper),0 0 8px var(--paper),0 0 3px var(--paper)}
.maplegend{display:flex;flex-wrap:wrap;gap:8px 18px;padding:11px 14px;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink-2)}
.maplegend span{display:inline-flex;align-items:center;gap:7px}
.lsw{width:16px;height:11px;border-radius:3px;flex:0 0 auto}
.lsw.exact{background:var(--harbour-700)}
.lsw.approx{background:rgba(12,132,177,.12);border:1.5px dashed var(--harbour)}
.lsw.none{background:var(--stone);border:1px solid var(--line-strong)}
.mappill{display:none;position:fixed;left:50%;transform:translateX(-50%);bottom:20px;z-index:70;
  background:var(--lacquer);color:#fff;border:0;border-radius:var(--r-pill);padding:12px 22px;font-size:14.5px;
  font-weight:600;box-shadow:var(--e2);cursor:pointer;gap:9px;align-items:center}
.mappill svg{width:16px;height:16px;fill:none;stroke:#fff;stroke-width:2}

/* ── forms ────────────────────────────────────────────── */
.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--s5)}
.f label{display:block;font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:var(--muted);margin-bottom:6px}
.f input,.f select,.f textarea{width:100%;font-family:var(--ui);font-size:15.5px;color:var(--ink);background:var(--surface);
  border:1.5px solid var(--line-strong);border-radius:var(--r-input);padding:11px 13px;transition:border-color .15s,box-shadow .15s}
.f textarea{min-height:110px;resize:vertical}
.f input:focus,.f select:focus,.f textarea:focus{outline:none;border-color:var(--harbour);box-shadow:0 0 0 3px var(--harbour-wash)}
.f .help{font-size:12.5px;color:var(--muted);margin-top:6px;line-height:1.5}
.f .err{font-size:12.5px;color:var(--rose-800);margin-top:6px;font-weight:500}
.f.bad input,.f.bad select{border-color:var(--rose-600)}
.f.span2{grid-column:1/-1}
.opt{font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted);font-size:11.5px}
.tg{display:flex;gap:10px;align-items:flex-start;font-size:15px;color:var(--ink-2);line-height:1.5}
.tg input{width:19px;height:19px;accent-color:var(--rose-600);margin:3px 0 0;flex:0 0 auto}
.formsec{border-top:1px solid var(--line);padding-top:var(--s8);margin-top:var(--s8)}
.formsec:first-of-type{border-top:0;padding-top:0;margin-top:0}
.formsec h3{font-size:20px;margin-bottom:6px}
.formsec .lead{font-size:15px;color:var(--ink-2);margin-bottom:var(--s5);max-width:min(100%,62ch)}

/* ── detail page ──────────────────────────────────────── */
.detail{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s6);max-width:760px;margin:0 auto}
.dmedia{aspect-ratio:16/10;border-radius:var(--r-panel);overflow:hidden;position:relative;background:var(--stone)}
.dmedia.src{background:var(--lacquer);display:grid;place-items:center}
.dmedia.src img{width:auto;height:100%;object-fit:contain}
.dmedia.none{background:var(--marigold-wash);display:grid;place-items:center;
  background-image:repeating-linear-gradient(-45deg,transparent 0 12px,rgba(214,143,20,.11) 12px 24px)}
.dmedia.none .glyph{width:52px;opacity:.5}
.dmedia.none .nt{position:absolute;left:0;right:0;bottom:18px;text-align:center;font-size:13px;font-weight:600;color:var(--marigold-ink)}
.dhead h1{font-size:clamp(26px,4vw,34px);letter-spacing:-.03em}
.dprice{font-family:var(--display);font-size:21px;font-weight:800;letter-spacing:-.025em;margin-top:14px}
.dprice small{font-family:var(--ui);font-size:15px;font-weight:400;color:var(--muted);letter-spacing:0}
.block{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:18px 20px}
.block > h3{font-family:var(--ui);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);
  font-weight:700;margin-bottom:14px}
.facts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:14px 18px}
.fact .k{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:700}
.fact .v{font-size:15px;color:var(--ink);margin-top:3px;line-height:1.45}
.fact .v.unknown{color:var(--muted);font-style:italic}
.rawpost{font-size:15px;color:var(--ink-2);line-height:1.75;white-space:pre-wrap}
.offerbox{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden}
.offertop{padding:16px 20px;display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.offerwho{flex:1;min-width:180px}
.pname{font-size:17px;font-weight:600;color:var(--ink)}
.prole{font-size:12.5px;color:var(--muted);margin-top:3px}
.offermoney{text-align:right}
.offermoney .amt{font-family:var(--display);font-size:21px;font-weight:800;letter-spacing:-.02em}
.offermoney .per{font-size:12.5px;color:var(--muted)}
.offerterms{border-top:1px solid var(--line);padding:16px 20px;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:14px 18px}
.offerfoot{border-top:1px solid var(--line);padding:14px 20px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.offerfoot .dates{font-size:12.5px;color:var(--muted);flex:1;min-width:170px;line-height:1.5}
.srcbox{border-top:1px solid var(--line);background:var(--harbour-wash);padding:14px 20px;display:flex;gap:11px;align-items:flex-start}
.srcbox svg{width:17px;height:17px;stroke:var(--harbour-700);fill:none;stroke-width:1.9;flex:0 0 auto;margin-top:3px}
.srcbox .g{font-size:14px;font-weight:600;color:var(--harbour-700)}
.srcbox .d{font-size:12.5px;color:var(--harbour-700);opacity:.8}
.fineprint{font-size:12.5px;color:var(--muted);line-height:1.65}
.stickybar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:80;background:var(--surface);
  border-top:1px solid var(--line);padding:12px 20px;gap:14px;align-items:center;box-shadow:0 -6px 20px rgba(36,31,26,.08)}
.stickybar .p{font-family:var(--display);font-size:19px;font-weight:800;flex:1}
.stickybar .p small{font-family:var(--ui);font-size:12px;font-weight:400;color:var(--muted)}

/* ── how it works ─────────────────────────────────────── */
.flow{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s4);margin-top:var(--s8)}
.step{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:20px 18px}
.step .n{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--rose-600);font-weight:700}
.step svg{width:26px;height:26px;stroke:var(--harbour);fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;margin:10px 0 8px}
.step h3{font-size:17.5px}
.step p{margin-top:8px;font-size:14px;color:var(--ink-2)}

/* ── principles ───────────────────────────────────────── */
.principles{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--s4);margin-top:var(--s8)}
.principle{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);border-radius:var(--r-card);padding:18px}
.principle h4{font-size:16px}
.principle p{font-size:13.5px;color:#9FB6BF;margin-top:7px;line-height:1.55}
.neverbox{margin-top:var(--s6);border-top:1px solid rgba(255,255,255,.18);padding-top:var(--s5);
  font-size:13.5px;color:#9FB6BF;line-height:1.7;max-width:min(100%,84ch)}
.neverbox b{color:#fff}
.neverbox .never{color:#FFD9AC}

/* ── advertiser strip ─────────────────────────────────── */
.advrow{display:flex;gap:var(--s6);align-items:center;flex-wrap:wrap}
.advrow .t{flex:1;min-width:260px}
.advrow h2{font-size:24px}
.advrow p{margin-top:8px;font-size:15px;color:var(--ink-2);max-width:min(100%,58ch)}

/* ── guide ────────────────────────────────────────────── */
.gstrip{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:var(--s5);margin-top:var(--s8)}
.gcard{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);border-radius:var(--r-card);overflow:hidden;
  display:flex;flex-direction:column}
.gcard .ph{aspect-ratio:3/2;background:rgba(255,255,255,.05)}
.gcard .b{padding:14px 16px 18px;flex:1}
.gcard .cat{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--marigold)}
.gcard .t{font-family:var(--display);font-weight:800;font-size:17px;color:#fff;margin-top:6px;letter-spacing:-.02em;line-height:1.15}
.gcard .m{font-size:12.5px;color:#9FB6BF;margin-top:7px}
.gplace{margin-top:var(--s6);border:1.5px dashed rgba(255,255,255,.32);border-radius:var(--r-input);
  padding:14px 18px;font-size:13.5px;color:#CBD9DF;line-height:1.6}
.gplace b{color:#fff}

/* ── footer ───────────────────────────────────────────── */
footer.site{background:var(--lacquer);color:var(--harbour-300);padding:var(--s12) 0 var(--s8)}
footer.site .wm{height:28px;margin-bottom:var(--s4)}
.footgrid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:var(--s8)}
.footabout{font-size:14px;max-width:38ch;line-height:1.6}
.footnav h5{font-family:var(--ui);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--marigold);
  margin:0 0 12px;font-weight:700}
.footnav ul{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.footnav a{color:#E2EAED;text-decoration:none;font-size:14px}
.footnav a:hover{text-decoration:underline;text-underline-offset:3px}
.footbottom{margin-top:var(--s8);padding-top:var(--s5);border-top:1px solid rgba(255,255,255,.16);
  display:flex;gap:16px;justify-content:space-between;flex-wrap:wrap;font-size:12.5px}

/* ── empty / loading ──────────────────────────────────── */
.empty{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--s10) var(--s6);text-align:center}
.empty .glyph{width:44px;margin:0 auto var(--s4);opacity:.45}
.empty h3{font-size:20px}
.empty p{margin-top:10px;font-size:15px;color:var(--ink-2);max-width:min(100%,52ch);margin-left:auto;margin-right:auto}
.empty .acts{margin-top:var(--s5);display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.skel{background:var(--stone);border-radius:var(--r-card);animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.55}}

/* ── responsive ───────────────────────────────────────── */
@media (max-width:1199px){
  .cards{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
}
@media (max-width:1023px){
  .discovery{grid-template-columns:1fr}
  .mappanel{position:static;order:-1}
  .mapcanvas{aspect-ratio:16/8}
  .flow{grid-template-columns:1fr 1fr}
  .hero-grid{grid-template-columns:1fr;gap:var(--s8)}
  .hero-art{grid-template-columns:1fr 1fr}
  .hero-art .ph:nth-child(1){grid-row:auto;aspect-ratio:4/3;grid-column:1/-1}
  .footgrid{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  nav.main{display:none}
  .menu-toggle{display:block}
  .head-actions{margin-left:auto}
  .capsule{display:none}
  .capsule-m{display:flex}
  .capsule-wrap{transform:translateY(50%)}
}
@media (max-width:767px){
  .wrap,.wrap-wide,.wrap-prose{padding-left:20px;padding-right:20px}
  .headrow{padding:11px 20px;gap:10px}
  .head-actions .btn-primary{display:none}
  .cards{grid-template-columns:1fr}
  .flow{grid-template-columns:1fr}
  .footgrid{grid-template-columns:1fr}
  .sec-editorial{padding:var(--s16) 0}
  .filterrow{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}
  .filterrow::-webkit-scrollbar{display:none}
  .mappanel{display:none}
  .mappill{display:flex}
  .stickybar{display:flex}
  .detail{padding-bottom:80px}
  .offermoney{text-align:left}
  .hero{padding-top:var(--s10)}
  .hero-art{grid-template-columns:1fr}
  .hero-art .ph:nth-child(3){display:none}
}

/* ── media fallback layer (expired / blocked image → branded absence) ── */
.pmedia .nofallback,.dmedia .nofallback{position:absolute;inset:0;z-index:2;display:none;place-items:center;
  background:var(--marigold-wash);
  background-image:repeating-linear-gradient(-45deg,transparent 0 9px,rgba(214,143,20,.11) 9px 18px)}
.dmedia .nofallback{background-image:repeating-linear-gradient(-45deg,transparent 0 12px,rgba(214,143,20,.11) 12px 24px)}
.pmedia.imgfail .nofallback,.dmedia.imgfail .nofallback{display:grid}
.pmedia.imgfail img,.dmedia.imgfail img{display:none}
.pmedia.imgfail .mediatag,.dmedia.imgfail .mediatag{display:none}
.pmedia.imgfail,.dmedia.imgfail{background:var(--marigold-wash)}
.nofallback .glyph{width:34px;opacity:.5}
.dmedia .nofallback .glyph{width:52px}
.nofallback .nt{position:absolute;left:0;right:0;bottom:12px;text-align:center;font-size:12px;
  font-weight:600;color:var(--marigold-ink)}
.dmedia .nofallback .nt{bottom:18px;font-size:13px}

/* mobile header: wordmark + city + saved-count + menu only (§19).
   The language toggle lives in the sheet, where it is the first item. */
@media (max-width:767px){
  .head-actions > .lang{display:none}
  .saved [data-i18n-text]{display:none}
  .saved{padding:7px 6px;gap:4px}
  .wm{height:26px}
  .city{padding:5px 10px;font-size:13px}
}
@media (max-width:400px){
  .city span{max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* A no-photo detail hero reserves less height than a photo would — there is
   nothing to show, so it does not claim photo-sized space. */
.dmedia.none,.dmedia.imgfail{aspect-ratio:16/6}


/* ═══ round 1 — competitive-scan mechanisms ═══════════════ */

/* M1 · price line states what it excludes */
.pricewrap{display:grid;gap:2px}
.exclline{font-size:13px;color:var(--ink-2);font-weight:500}
.exclline.unknown{color:var(--muted);font-style:italic;font-weight:400}

/* M5 · availability is its own fact, separate from the advertised date */
.availline{font-size:13.5px;color:var(--ink-2);display:flex;align-items:center;gap:7px}
.availline.unknown{color:var(--muted);font-style:italic}
.adot{width:7px;height:7px;border-radius:50%;background:var(--harbour);flex:0 0 auto}
.adot.off{background:transparent;border:1.5px dashed var(--muted)}

/* M7 · provenance as a mark on the card */
.srcmark{position:absolute;left:10px;bottom:10px;z-index:3;display:inline-flex;align-items:center;gap:6px;
  background:rgba(255,255,255,.94);color:var(--lacquer);border-radius:var(--r-pill);
  padding:4px 10px 4px 8px;font-size:11.5px;font-weight:600;box-shadow:0 1px 4px rgba(0,0,0,.16)}
.srcmark svg{width:13px;height:13px;fill:none;stroke:var(--harbour-700);stroke-width:1.9}
.pmedia.src .srcmark{bottom:34px}

/* M8 · name the gaps rather than gesturing at them */
.gapline{font-size:12.5px;color:var(--muted);line-height:1.5}
.gapline b{color:var(--ink-2);font-weight:600}

/* M4 · mode row above the filters */
.moderow{display:flex;gap:22px;align-items:center;border-bottom:1px solid var(--line);
  padding:0 0 2px;margin-bottom:12px;overflow-x:auto;scrollbar-width:none}
.moderow::-webkit-scrollbar{display:none}
.mode{background:transparent;border:0;padding:8px 0 10px;font-size:15px;font-weight:500;color:var(--muted);
  cursor:pointer;white-space:nowrap;border-bottom:2.5px solid transparent;margin-bottom:-2px}
.mode:hover{color:var(--ink)}
.mode[aria-pressed="true"]{color:var(--ink);font-weight:600;border-bottom-color:var(--lacquer)}
.mode .c{font-size:12.5px;color:var(--muted);font-weight:500;margin-left:5px}
.mode[aria-pressed="true"] .c{color:var(--ink-2)}

/* M9 · the absence of paid placement, stated */
.nopaid{font-size:12.5px;color:var(--muted);line-height:1.5;display:flex;gap:8px;align-items:flex-start;
  margin-top:10px;max-width:min(100%,74ch)}
.nopaid svg{width:14px;height:14px;stroke:var(--lacquer);fill:none;stroke-width:2.2;flex:0 0 auto;margin-top:3px}

@media (max-width:767px){ .moderow{gap:18px} }

/* detail — what we don't know */
.unknown-block{border-left:4px solid var(--line-strong)}
.unknowns{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.unknowns li{display:grid;grid-template-columns:150px minmax(0,1fr);gap:16px;font-size:14.5px;
  padding-bottom:14px;border-bottom:1px solid var(--line)}
.unknowns li:last-child{border-bottom:0;padding-bottom:0}
.unknowns b{font-weight:600;color:var(--ink)}
.unknowns span{color:var(--ink-2);line-height:1.55}
.unknown-foot{margin-top:16px;font-size:13px;color:var(--muted);line-height:1.6}
@media (max-width:640px){.unknowns li{grid-template-columns:1fr;gap:4px}}

/* card: a home you can refer to by name, not only by price */
.ptitle{font-family:var(--display);font-size:17px;font-weight:800;letter-spacing:-.025em;
  line-height:1.2;color:var(--ink);margin-bottom:-2px}
.pcard{gap:8px}
.srcmark{left:10px;bottom:10px}

/* detail — every field wears its evidence tier */
.fact .v{display:flex;align-items:flex-start;gap:8px}
.tdot{display:none}
.tdot.none{display:block;width:8px;height:8px;border-radius:50%;flex:0 0 auto;
  margin-top:7px;background:transparent;border:1.5px dashed var(--muted)}
.evidence-panel{background:var(--harbour-wash);border-color:rgba(12,132,177,.22)}
.evidence-panel .rawpost{color:var(--harbour-700)}
.evidence-panel > h3{color:var(--harbour-700)}
.guidelink{display:none;font-size:14.5px;font-weight:500;color:var(--ink-2);text-decoration:none;padding:7px 10px;border-radius:var(--r-pill)}
.guidelink:hover{background:var(--stone);color:var(--ink)}
header.site.scrolled .guidelink{color:var(--harbour-300)}
@media (max-width:900px){.guidelink{display:none}}

/* ═══ V4 — homepage progression ═══════════════════════════ */

/* a global .note must never inherit into a dark surface: it carries a white
   background, and light-on-light was the 1.44:1 defect in v3. */
.on-lacquer .note,.cmpcard.ours .note{color:var(--ink-2)}

/* homes available now — promoted directly under the hero */
.livehead{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s6);
  flex-wrap:wrap;margin-bottom:var(--s6)}
.livehead .sec-sub{margin-top:10px}
.livethin{margin-top:var(--s6);font-size:14px;color:var(--muted);line-height:1.6;
  max-width:min(100%,68ch);border-top:1px solid var(--line);padding-top:var(--s5)}

/* why this exists — the fragmentation figure */
.fraggrid{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);
  gap:var(--s10);align-items:center;margin-top:var(--s8)}
.fragfig svg{width:100%;height:auto}
.fraglist{list-style:none;margin:0;padding:0;display:grid;gap:var(--s5)}
.fraglist li{display:grid;gap:4px}
.fraglist b{font-size:16.5px;font-weight:600;color:var(--ink)}
.fraglist span{font-size:14.5px;color:var(--ink-2);line-height:1.55}
.fragafter{margin-top:var(--s8);font-size:17px;color:var(--ink);line-height:1.6;
  max-width:min(100%,72ch);font-weight:500}

/* how to read a listing — three lines, not a manifesto */
.claritygrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s6);margin-top:var(--s8)}
.clarity{display:grid;gap:6px;padding-top:var(--s4);border-top:2px solid var(--marigold)}
.clarity b{font-size:16.5px;font-weight:600;color:var(--ink)}
.clarity span{font-size:14.5px;color:var(--ink-2);line-height:1.55}

/* about the data page */
.dsec{padding-top:var(--s8);margin-top:var(--s8);border-top:1px solid var(--line)}
.dsec:first-child{padding-top:0;margin-top:0;border-top:0}
.dsec h2{font-size:24px;margin-bottom:12px}
.dsec p{font-size:16px;color:var(--ink-2);line-height:1.7}
.deflist{display:grid;gap:14px;margin-top:var(--s6)}
.deflist p{display:grid;grid-template-columns:210px minmax(0,1fr);gap:16px;align-items:baseline;font-size:14.5px}
.deflist .badge{justify-self:start}
.deflist .lsw{width:20px;height:13px;justify-self:start}
.dsec.never .neverlist{color:var(--marigold-ink);font-weight:500}

@media (max-width:900px){
  .fraggrid{grid-template-columns:1fr;gap:var(--s8)}
  .fragfig{max-width:340px}
  .claritygrid{grid-template-columns:1fr;gap:var(--s5)}
  .deflist p{grid-template-columns:1fr;gap:6px}
}
