:root{
  --bg:#0f1115; --card:#181b22; --line:#262b35; --ink:#e8eaed; --muted:#9aa3b2;
  --good:#27c093; --warn:#f3b13a; --bad:#ec5f6a; --pend:#8b93a6; --accent:#5aa9ff;
}
*{box-sizing:border-box}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font:16px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  padding:0 20px 64px;
}
.wrap{max-width:820px;margin:0 auto}
body.is-home .wrap{max-width:1320px}

/* home: candidates left, map right */
.board{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,470px);
  gap:28px;align-items:start}
.board-list{min-width:0}
.board-map{position:sticky;top:20px}
#map{height:min(640px,72vh);min-height:460px;border:1px solid var(--line);
  border-radius:12px;z-index:0;background:#0b0d11}
.map-toggles{display:flex;flex-wrap:wrap;gap:8px;margin:0 2px 12px}
.map-toggles .tg{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;
  border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);
  font-size:12.5px;font-weight:600;cursor:pointer;user-select:none;transition:opacity .12s}
.map-toggles .tg:has(input:not(:checked)){opacity:.4}
.map-toggles input{accent-color:var(--accent);margin:0;cursor:pointer}
.map-toggles .tg-dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.map-cap{color:var(--pend);font-size:11.5px;margin:10px 2px 0;line-height:1.4}
.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#1d212a;color:var(--ink);
  border:1px solid var(--line)}
.leaflet-popup-content{margin:11px 13px;font-size:13px;line-height:1.5}
.leaflet-popup-content .pop-addr{font-weight:700;display:block;margin-bottom:2px}
.leaflet-popup-content .pop-meta{color:var(--muted);font-size:12px;display:block;margin-bottom:6px}
.leaflet-popup-content .pop-thumb{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;
  border-radius:6px;border:1px solid var(--line);margin:0 0 8px}
.leaflet-popup-content .pop-link{font-weight:600}
.leaflet-container{font:inherit;background:#0b0d11}
/* lift the dark basemap so streets read (tiles only — SVG overlays unaffected) */
.leaflet-tile{filter:brightness(2.2) contrast(1.12)}
.leaflet-tooltip{background:rgba(24,27,34,.95);border:1px solid var(--line);color:var(--ink);
  box-shadow:none;font-size:12px}
.leaflet-tooltip::before{display:none}
.leaflet-control-attribution{background:rgba(15,17,21,.8)!important;color:var(--muted)!important}
.leaflet-control-attribution a{color:var(--accent)!important}

@media (max-width:980px){
  body.is-home .wrap{max-width:820px}
  .board{grid-template-columns:1fr}
  .board-map{position:static}
  #map{height:60vh;min-height:380px}
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

.site-head{display:flex;align-items:baseline;justify-content:space-between;
  padding:22px 0 26px;border-bottom:1px solid var(--line);margin-bottom:30px}
.site-head .brand{font-weight:700;letter-spacing:-.3px;color:var(--ink);font-size:16px}
.site-head nav a{color:var(--muted);font-size:13.5px}

h1{font-size:30px;margin:0 0 6px;letter-spacing:-.5px}
.hero{margin:6px 0 34px}
.lede{color:var(--muted);max-width:620px;margin:6px 0 0;font-size:16px}
.target{display:inline-block;margin:18px 0 0;padding:7px 13px;border:1px solid var(--line);
  border-radius:999px;background:var(--card);color:var(--muted);font-size:13px}
.target b{color:var(--accent)}

.section-h{font-size:20px;margin:38px 0 2px;letter-spacing:-.2px}
.section-sub{color:var(--muted);font-size:13px;margin:0 0 14px}

/* down-payment slider → live monthly */
.dp-control{background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:14px 16px;margin:0 0 14px}
.dp-head{display:flex;align-items:baseline;gap:10px;margin:0 0 10px}
.dp-head label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-weight:600}
.dp-head #dp-readout{font-size:18px;color:var(--accent);letter-spacing:-.3px}
.dp-head .dp-pct{margin-left:auto;font-size:12px;color:var(--muted)}
#dp-slider{width:100%;accent-color:var(--accent);cursor:pointer;height:22px}
.dp-note{color:var(--pend);font-size:11px;margin:6px 0 0;line-height:1.4}

td.mo-cell .mo-val{font-variant-numeric:tabular-nums}
td.mo-cell .mo-val.over-target{color:var(--bad)}
td.mo-cell .mo-pmi{display:block;font-size:9px;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;color:var(--warn);margin-top:1px}

table.houses{width:100%;border-collapse:collapse;font-size:14.5px;
  background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
table.houses thead th{
  text-align:left;padding:11px 14px;background:#12151b;color:var(--muted);
  font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;
  border-bottom:1px solid var(--line)}
table.houses tbody td{padding:11px 14px;vertical-align:middle}
/* house row + its summary row form one bordered unit */
table.houses tr.house-row td{border-bottom:none;padding-bottom:6px}
table.houses tr.summary-row td{padding:0 14px 13px;border-bottom:1px solid var(--line);
  color:var(--muted);font-size:13.5px;line-height:1.55}
table.houses tr.summary-row td p{margin:0}
table.houses tr.summary-row strong{color:var(--ink);font-weight:600}
table.houses tbody tr.summary-row:last-child td{border-bottom:none}
.summary-cell{display:flex;gap:14px;align-items:flex-start}
.summary-cell .thumb-link{flex:none;display:block;line-height:0}
.summary-cell .thumb{width:150px;aspect-ratio:4/3;object-fit:cover;border-radius:8px;
  border:1px solid var(--line);background:var(--line);display:block}
.summary-cell .thumb-link:hover .thumb{border-color:var(--accent)}
.summary-text{min-width:0;flex:1}
.summary-text .spec-line{color:var(--ink);font-weight:600;font-size:12.5px;
  letter-spacing:.02em;margin:0 0 6px}
@media (max-width:560px){.summary-cell{flex-direction:column}.summary-cell .thumb{width:100%}}
table.houses tr.house-row:hover,
table.houses tr.house-row:hover + tr.summary-row{background:#1d212a}
table.houses tr.is-hidden{display:none}
/* over the price cap: dimmed + flagged, restored on hover */
table.houses tr.over-limit{opacity:.5}
table.houses tr.over-limit.house-row:hover,
table.houses tr.over-limit.house-row:hover + tr.summary-row{opacity:1}
.over-tag{display:block;width:fit-content;margin-top:5px;padding:1px 6px;border-radius:4px;
  font-size:9.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;
  background:rgba(243,177,58,.15);color:var(--warn);border:1px solid rgba(243,177,58,.4)}
.addr a{font-weight:600;color:var(--ink)}
.addr small{display:block;color:var(--muted);font-weight:400;font-size:12px;margin-top:2px}
.num{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--muted)}
td.num{color:var(--ink);font-weight:600}
td.num .pend-dash{color:var(--pend);font-weight:400}

/* sortable headers */
th.sort-th{cursor:pointer;user-select:none;position:relative;padding-right:22px}
th.sort-th:hover{color:var(--ink)}
th.sort-th::after{content:"";position:absolute;right:10px;top:50%;
  margin-top:-2px;opacity:.35;border:4px solid transparent;border-top-color:currentColor}
th.sorted-asc::after{margin-top:-6px;border-top-color:transparent;border-bottom-color:var(--accent);opacity:1}
th.sorted-desc::after{border-top-color:var(--accent);opacity:1}
th.sort-th:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}

/* narrow color-coded verdict column */
th.vcol{width:1%;white-space:nowrap;text-align:center}
td.vcell{text-align:center}
.vdot{width:11px;height:11px;border-radius:50%;display:inline-block;vertical-align:middle;cursor:help}
.v-good{background:var(--good)}
.v-warn{background:var(--warn)}
.v-bad{background:var(--bad)}
.v-pend{background:var(--pend)}

.stat{display:inline-block;padding:2px 8px;border-radius:4px;font-size:10.5px;
  font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.s-active{background:rgba(39,192,147,.12);color:var(--good);border:1px solid rgba(39,192,147,.3)}
.s-pending{background:rgba(243,177,58,.15);color:var(--warn);border:1px solid rgba(243,177,58,.45)}
.s-off{background:rgba(111,120,145,.15);color:var(--pend);border:1px solid rgba(111,120,145,.4)}

.back{display:inline-block;color:var(--muted);font-size:13px;margin:0 0 14px}
.eval .hero{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;
  border-radius:10px;border:1px solid var(--line);margin:0 0 20px;background:var(--line)}
.house-map{height:300px;border:1px solid var(--line);border-radius:10px;
  margin:0 0 28px;z-index:0;background:#0b0d11}
.eval .meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 4px}
.eval .addr-line{color:var(--muted);font-size:14.5px}
.eval .subline{color:var(--pend);font-size:12.5px;margin:0 0 26px;
  padding-bottom:18px;border-bottom:1px solid var(--line)}

.content{font-size:16px}
.content h2{font-size:19px;margin:30px 0 8px;letter-spacing:-.2px}
.content h3{font-size:16px;margin:22px 0 6px;color:var(--muted)}
.content p{margin:0 0 14px}
.content ul,.content ol{padding-left:22px;margin:0 0 16px}
.content li{margin:0 0 6px}
.content strong{color:#fff}
.content a{word-break:break-word}
.content code{background:#12151b;border:1px solid var(--line);border-radius:4px;
  padding:1px 5px;font-size:14px}
.content blockquote{border-left:3px solid var(--line);margin:0 0 16px;padding:2px 0 2px 16px;color:var(--muted)}

footer{margin-top:44px;padding-top:18px;border-top:1px solid var(--line);
  color:var(--pend);font-size:12px}
