/* ==========================================================================
   Brynsights BI — Signals.
   Canonical EstateIntelligence Pro tokens (design.md). Colour in every chart
   means SEVERITY; domain is identity, carried by icon + label. Severity marks
   also differ in shape, because red and amber are close under CVD.
   ========================================================================== */
.bs{
  --bg-page:#F7F9FB; --surface:#FFFFFF; --surface-low:#F2F4F6; --surface-container:#ECEEF0;
  --primary:#0F172A; --primary-2:#2B4358; --accent:#D4AF37; --accent-deep:#B8941F; --info:#3B82F6;
  --success:#14843A; --warn:#B45309; --danger:#BA1A1A; --neutral:#94A3B8;
  --text:#191C1E; --text-muted:#45464D; --text-dim:#76777D;
  --border:#E2E8F0; --border-soft:#EFF1F3;
  --shadow-card:0 4px 12px rgba(15,23,42,.05); --shadow-elevated:0 12px 34px rgba(15,23,42,.14);
  --r-btn:.5rem; --r-card:1rem; --r-pill:9999px;
  font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
  color:var(--text); max-width:1520px; margin:0 auto; padding:20px 24px 96px;
}
.bs *{box-sizing:border-box}
.bs h1,.bs h2,.bs h3,.bs h4{font-family:'Manrope',sans-serif;margin:0}
.bs a{color:inherit;text-decoration:none}
.bs button{font-family:inherit}

/* -------------------------------------------------------------- controls */
.bs-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 20px}
.bs-seg{display:flex;align-items:center;gap:2px;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--r-btn);padding:3px}
.bs-seg > .lb{font-size:9.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-dim);
  padding:0 8px 0 7px}
.bs-seg button{border:0;background:transparent;border-radius:6px;padding:7px 12px;font-size:12.5px;font-weight:600;
  color:var(--text-muted);cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}
.bs-seg button:hover{background:var(--surface-low);color:var(--text)}
.bs-seg button.on{background:var(--primary);color:#fff}
.bs-pick{position:relative}
.bs-pick-btn{display:inline-flex;align-items:center;gap:10px;height:40px;padding:0 14px;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--r-btn);cursor:pointer;transition:border-color .15s}
.bs-pick-btn:hover{border-color:var(--primary)}
.bs-pick-btn .k{display:block;font-size:9.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-dim)}
.bs-pick-btn .v{display:block;font-size:13.5px;font-weight:700;color:var(--primary)}
.bs-pick-btn svg{width:14px;height:14px;color:var(--text-dim)}
.bs-pick-menu{position:absolute;top:calc(100% + 6px);left:0;z-index:80;width:320px;background:var(--surface);
  border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-elevated);padding:6px;display:none}
.bs-pick-menu.open{display:block}
.bs-pick-opt{display:block;width:100%;border:0;background:transparent;text-align:left;padding:10px 12px;
  border-radius:8px;cursor:pointer}
.bs-pick-opt:hover{background:var(--surface-low)}
.bs-pick-opt.on{background:rgba(15,23,42,.05)}
.bs-pick-opt .t{font-size:13px;font-weight:700;color:var(--primary)}
.bs-pick-opt .s{font-size:11.5px;color:var(--text-dim);margin-top:2px}
.bs-sp{flex:1}
.bs-btn{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 15px;border-radius:var(--r-btn);
  border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:13px;font-weight:600;
  cursor:pointer;transition:border-color .15s,color .15s}
.bs-btn:hover{border-color:var(--primary);color:var(--primary)}
.bs-btn svg{width:15px;height:15px}
.bs-btn.gold{background:var(--accent);border-color:var(--accent);color:var(--primary);font-weight:700}
.bs-btn.gold:hover{filter:brightness(1.06)}

/* ------------------------------------------------------------------ tile */
.bs-tile{background:var(--surface);border:1px solid var(--primary);border-radius:12px;overflow:hidden;margin-bottom:20px}
.bs-tile-h{display:flex;align-items:center;gap:10px;padding:12px 16px;
  background:linear-gradient(135deg,#0F172A 0%,#2B4358 100%)}
.bs-tile-h .t{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700;letter-spacing:1px;
  text-transform:uppercase;color:#fff;line-height:1}
.bs-tile-h .t > svg{width:16px;height:16px;opacity:.85;flex:0 0 auto}
.bs-tile-h .sp{flex:1}
.bs-tile-h .badge{font-size:10.5px;font-weight:700;padding:4px 10px;border-radius:var(--r-pill);
  background:rgba(212,175,55,.2);color:#D4AF37;white-space:nowrap}
.bs-tile-h .lnk{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;color:rgba(255,255,255,.85);
  padding:4px 10px;border-radius:6px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.3)}
.bs-tile-h .lnk:hover{color:#fff;background:rgba(255,255,255,.2)}
.bs-tile-h .lnk svg{width:12px;height:12px}
.bs-tile-b{padding:20px}
.bs-tile-f{border-top:1px solid var(--border-soft);background:var(--surface-low);padding:12px 18px;
  font-size:12px;color:var(--text-dim);line-height:1.55}

/* ------------------------------------------------------------------ hero */
.bs-hero{display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:0}
@media(max-width:1180px){.bs-hero{grid-template-columns:1fr}}
.bs-hero-l{padding:22px 24px}
.bs-hero-r{padding:22px 24px;border-left:1px solid var(--border-soft);background:var(--surface-low)}
@media(max-width:1180px){.bs-hero-r{border-left:0;border-top:1px solid var(--border-soft)}}
.bs-fig{display:flex;align-items:flex-end;gap:14px}
.bs-fig .n{font-family:'Manrope',sans-serif;font-weight:800;font-size:64px;line-height:.86;letter-spacing:-.03em;color:var(--primary)}
.bs-fig .cap .k{display:block;font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--accent-deep)}
.bs-fig .cap .v{display:block;font-size:13px;color:var(--text-muted);line-height:1.45;margin-top:3px}
.bs-sevrow{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px}
.bs-sevchip{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--text-muted);
  background:var(--surface);border:1px solid var(--border);border-radius:var(--r-pill);padding:5px 12px 5px 8px;cursor:pointer;
  transition:border-color .15s,background .15s,color .15s}
.bs-sevchip:hover{border-color:var(--primary);color:var(--primary)}
.bs-sevchip.on{border-color:var(--primary);background:rgba(15,23,42,.05);color:var(--primary)}
.bs-sevchip .g{width:18px;height:18px;border-radius:5px;display:flex;align-items:center;justify-content:center;
  font-size:9px;color:#fff;flex:0 0 auto}
.bs-sevchip .c{font-weight:800;color:var(--text-dim);font-variant-numeric:tabular-nums}
.bs-money{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}
.bs-money-c{border:1px solid var(--border);border-radius:10px;padding:12px 14px;background:var(--surface)}
.bs-money-c .v{font-family:'Manrope',sans-serif;font-weight:800;font-size:24px;line-height:1;color:var(--danger)}
.bs-money-c .v.good{color:var(--success)}
.bs-money-c .k{font-size:11px;color:var(--text-dim);margin-top:5px;line-height:1.4}

/* signal timeline strip */
.bs-tl-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}
.bs-tl-h .k{font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}
.bs-tl-h .v{font-size:12px;color:var(--text-dim)}
.bs-tl{width:100%;height:172px;display:block;overflow:visible}
.bs-tl-legend{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;font-size:11.5px;color:var(--text-muted)}
.bs-tl-legend .lg{display:flex;align-items:center;gap:7px}
.bs-tl-mark{cursor:pointer;transition:opacity .15s}
.bs-tl-mark:hover{opacity:.75}

/* ----------------------------------------------------------- domain tiles */
.bs-doms{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media(max-width:1100px){.bs-doms{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.bs-doms{grid-template-columns:1fr}}
.bs-dom{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:12px;
  overflow:hidden;cursor:pointer;text-align:left;padding:0;transition:border-color .15s,box-shadow .15s,transform .15s}
.bs-dom:hover{border-color:var(--primary);box-shadow:var(--shadow-card);transform:translateY(-2px)}
.bs-dom.on{border-color:var(--primary);box-shadow:0 0 0 3px rgba(15,23,42,.06)}
.bs-dom-h{display:flex;align-items:center;gap:9px;padding:13px 14px 0}
.bs-dom-h .ic{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.bs-dom-h .ic svg{width:15px;height:15px;color:#fff}
.bs-dom-h .nm{display:block;font-family:'Manrope',sans-serif;font-size:13.5px;font-weight:700;color:var(--primary)}
.bs-dom-b{padding:11px 14px 0;flex:1}
.bs-dom-b .mv{display:flex;align-items:baseline;gap:8px}
.bs-dom-b .mv .v{font-family:'Manrope',sans-serif;font-size:28px;font-weight:800;color:var(--primary);line-height:1}
.bs-dom-b .mv .u{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-dim)}
.bs-dom-b .bm{display:block;font-size:11.5px;color:var(--text-dim);margin-top:7px;line-height:1.45}
.bs-dom-b .bm b{color:var(--text-muted)}
.bs-delta{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:800;border-radius:var(--r-pill);
  padding:2px 8px;margin-top:8px}
.bs-delta.up{background:rgba(20,132,58,.11);color:var(--success)}
.bs-delta.down{background:rgba(186,26,26,.09);color:var(--danger)}
.bs-delta svg{width:11px;height:11px}
.bs-dom-f{margin-top:12px;padding:9px 14px;border-top:1px solid var(--border-soft);background:var(--surface-low);
  display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11.5px;font-weight:600;color:var(--text-muted)}
.bs-dom-f .n{font-weight:800;color:var(--danger)}
.bs-dom-f .n.z{color:var(--success)}

/* --------------------------------------------------------------- 2-col */
.bs-2col{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:20px;align-items:start}
@media(max-width:1180px){.bs-2col{grid-template-columns:1fr}}
.bs-2col > .bs-tile{margin-bottom:0}

/* ------------------------------------------------------------------ map */
#bsMap{height:430px;width:100%;border-radius:10px;overflow:hidden;border:1px solid var(--border)}
.bs .leaflet-container{font-family:inherit;background:#F1F5F9}
.bs-map-legend{display:flex;flex-wrap:wrap;gap:16px;margin-top:12px;font-size:11.5px;color:var(--text-muted)}
.bs-map-legend .lg{display:flex;align-items:center;gap:7px}
.bs-pin{display:flex;align-items:center;justify-content:center;font-family:'Manrope',sans-serif;font-weight:800;
  color:#fff;border:2px solid #fff;box-shadow:0 2px 8px rgba(15,23,42,.35)}
.bs-pop{font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;min-width:212px}
.bs-pop .nm{font-family:'Manrope',sans-serif;font-size:14px;font-weight:700;color:#0F172A}
.bs-pop .sb{font-size:11px;color:#76777D;margin-top:2px}
.bs-pop .kv{display:grid;grid-template-columns:1fr auto;gap:4px 10px;font-size:11.5px;margin-top:9px;
  padding-top:9px;border-top:1px solid #EFF1F3}
.bs-pop .kv .k{color:#76777D}
.bs-pop .kv .v{color:#191C1E;font-weight:700;font-variant-numeric:tabular-nums}
.bs-pop .go{display:block;margin-top:10px;font-size:11.5px;font-weight:700;color:#2563EB}

/* ------------------------------------------------------------ benchmarks */
table.bs-bm{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}
table.bs-bm thead th{text-align:left;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--text-dim);padding:8px 10px;background:var(--surface-low);border-bottom:1px solid var(--border)}
table.bs-bm tbody td{padding:9px 10px;border-bottom:1px solid var(--border-soft);vertical-align:middle}
table.bs-bm tbody tr:last-child td{border-bottom:0}
table.bs-bm tbody tr:hover{background:var(--surface-low)}
.bs-bm-nm{font-weight:700;color:var(--primary)}
.bs-bm-nm span{display:block;font-size:10.5px;font-weight:600;color:var(--text-dim);margin-top:2px}
.bs-bm-v{font-family:'Manrope',sans-serif;font-weight:700;font-size:14px;color:var(--primary);
  font-variant-numeric:tabular-nums;text-align:right}
.bs-bm-b{font-variant-numeric:tabular-nums;color:var(--text-muted);text-align:right}
.bs-bm-gauge{position:relative;height:20px}
.bs-bm-gauge .trk{position:absolute;left:0;right:0;top:8px;height:4px;border-radius:2px;background:var(--surface-container)}
.bs-bm-gauge .bar{position:absolute;top:6px;height:8px;border-radius:2px}
.bs-bm-gauge .bench{position:absolute;top:2px;width:2px;height:16px;background:var(--primary);border-radius:1px}
.bs-bm-d{font-weight:800;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.bs-bm-d.up{color:var(--success)} .bs-bm-d.down{color:var(--danger)}
.bs-bm-target{width:74px;height:30px;border:1px solid var(--border);border-radius:6px;padding:0 8px;
  font-family:inherit;font-size:12.5px;color:var(--text);text-align:right;background:var(--surface)}
.bs-bm-target:focus{outline:none;border-color:var(--info)}

/* ---------------------------------------------------------- signal cards */
.bs-feed{display:flex;flex-direction:column}
.bs-sig{border-bottom:1px solid var(--border-soft);padding:17px 4px;transition:background .15s}
.bs-sig:last-child{border-bottom:0}
.bs-sig:hover{background:var(--surface-low)}
.bs-sig.flagged{background:rgba(212,175,55,.06);box-shadow:inset 3px 0 0 var(--accent)}
.bs-sig.snoozed{opacity:.5}
.bs-sig-top{display:grid;grid-template-columns:32px minmax(0,1fr) 132px;gap:14px;align-items:start}
.bs-sev{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-size:11px;color:#fff;flex:0 0 auto}
.bs-sig-t{font-size:14.5px;font-weight:700;color:var(--primary);line-height:1.4}
.bs-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.bs-tag{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;border-radius:var(--r-pill);
  padding:3px 9px;background:var(--surface-low);color:var(--text-muted);border:1px solid var(--border-soft)}
.bs-tag .d{width:7px;height:7px;border-radius:2px;flex:0 0 auto}
.bs-tag.hot{background:rgba(186,26,26,.09);color:var(--danger);border-color:rgba(186,26,26,.25)}
.bs-tag.warn{background:rgba(180,83,9,.1);color:var(--warn);border-color:rgba(180,83,9,.25)}
.bs-tag.good{background:rgba(20,132,58,.1);color:var(--success);border-color:rgba(20,132,58,.25)}
.bs-tag.gold{background:rgba(212,175,55,.14);color:var(--accent-deep);border-color:rgba(212,175,55,.4)}
.bs-why{margin-top:11px;display:grid;grid-template-columns:74px minmax(0,1fr);gap:6px 12px;font-size:12.5px;line-height:1.6}
.bs-why .k{font-size:9.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--text-dim);padding-top:3px}
.bs-why .v{color:var(--text-muted)}
.bs-why .v.act{color:var(--primary);font-weight:600}
.bs-ev{font-size:11px;color:var(--text-dim);margin-top:9px;font-variant-numeric:tabular-nums}
.bs-sig-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}
.bs-sig-link{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--info)}
.bs-sig-link:hover{text-decoration:underline}
.bs-sig-link svg{width:12px;height:12px}
.bs-sig-r{text-align:right}
.bs-sig-r .v{font-family:'Manrope',sans-serif;font-size:21px;font-weight:800;line-height:1;color:var(--danger);
  font-variant-numeric:tabular-nums}
.bs-sig-r .v.good{color:var(--success)}
.bs-sig-r .v.zero{color:var(--text-dim);font-size:15px}
.bs-sig-r .k{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);
  margin-top:5px;line-height:1.35}
.bs-spark{display:block;width:120px;height:34px;margin:9px 0 0 auto}
.bs-acts{display:flex;gap:6px;justify-content:flex-end;margin-top:10px;flex-wrap:wrap}
.bs-act{display:inline-flex;align-items:center;gap:5px;height:28px;padding:0 10px;border-radius:6px;
  border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:11.5px;font-weight:600;cursor:pointer;
  transition:border-color .15s,color .15s,background .15s}
.bs-act:hover{border-color:var(--primary);color:var(--primary)}
.bs-act svg{width:12px;height:12px}
.bs-act.on{background:var(--accent);border-color:var(--accent);color:var(--primary);font-weight:700}
.bs-empty{padding:30px 6px;text-align:center;font-size:13px;color:var(--text-dim)}

/* ------------------------------------------------------------- watchlist */
.bs-watch{display:flex;flex-direction:column;gap:9px}
.bs-watch-row{display:flex;align-items:center;gap:11px;border:1px solid var(--border);border-radius:10px;padding:11px 13px;
  background:var(--surface)}
.bs-watch-row .sev{width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;
  font-size:10px;color:#fff;flex:0 0 auto}
.bs-watch-row .tx{flex:1;min-width:0}
.bs-watch-row .tx .t{font-size:12.5px;font-weight:700;color:var(--primary);line-height:1.35}
.bs-watch-row .tx .s{font-size:11px;color:var(--text-dim);margin-top:3px}
.bs-watch-row .amt{font-family:'Manrope',sans-serif;font-weight:800;font-size:14px;color:var(--danger);
  font-variant-numeric:tabular-nums;white-space:nowrap}
.bs-watch-empty{border:1px dashed var(--border);border-radius:10px;background:var(--surface-low);padding:16px 18px}
.bs-watch-empty .t{font-size:12.5px;font-weight:700;color:var(--text-muted)}
.bs-watch-empty .s{font-size:11.5px;color:var(--text-dim);margin-top:5px;line-height:1.55}

/* --------------------------------------------------------------- tooltip */
.bs-tip{position:fixed;z-index:99999;max-width:320px;background:var(--primary);color:#fff;border-radius:10px;
  padding:12px 14px;box-shadow:var(--shadow-elevated);font-size:12px;line-height:1.55;pointer-events:none;opacity:0;
  transform:translateY(4px);transition:opacity .12s,transform .12s}
.bs-tip.on{opacity:1;transform:translateY(0)}
.bs-tip .th{display:flex;align-items:center;gap:8px;font-size:10.5px;font-weight:700;letter-spacing:.05em;
  text-transform:uppercase;color:#D4AF37;margin-bottom:6px}
.bs-tip .tm{font-family:'Manrope',sans-serif;font-size:14px;font-weight:700;margin-bottom:4px}
.bs-tip .tb{color:rgba(255,255,255,.8)}

/* ------------------------------------------- inline door to the Context Pack */
.bs-defchip{display:inline-flex;align-items:center;gap:6px;margin-top:9px;font-size:10.5px;font-weight:700;
  color:var(--text-dim);background:var(--surface-low);border:1px solid var(--border-soft);border-radius:var(--r-pill);
  padding:3px 9px;transition:border-color .15s,color .15s}
.bs-defchip:hover{border-color:var(--primary);color:var(--primary)}
.bs-defchip svg{width:11px;height:11px;flex:0 0 auto}
.bs-defchip.weak{background:rgba(212,175,55,.12);border-color:rgba(212,175,55,.4);color:var(--accent-deep)}
.bs-defchip .w{font-size:9px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
  background:rgba(212,175,55,.22);border-radius:var(--r-pill);padding:1px 6px}
.bs-bm-nm + .bs-defchip{margin-top:6px}
.bs-ctxnote{display:flex;align-items:flex-start;gap:11px;margin-top:16px;padding:12px 14px;border-radius:10px;
  border:1px solid rgba(212,175,55,.45);background:rgba(212,175,55,.08);font-size:12.5px;line-height:1.55;
  color:var(--text-muted)}
.bs-ctxnote svg{width:16px;height:16px;color:var(--accent-deep);flex:0 0 auto;margin-top:1px}
.bs-ctxnote b{color:var(--primary);font-weight:700}
.bs-ctxnote:hover{border-color:var(--accent-deep)}
