:root {
  --bg:#0f1216; --card:#181d24; --muted:#8b96a5; --fg:#e6ebf1;
  --accent:#4cae7d; --accent2:#e0a458; --danger:#e05a5a; --line:#262d37;
}
* { box-sizing:border-box; }
body { margin:0; font:15px/1.5 system-ui,Segoe UI,Roboto,sans-serif; background:var(--bg); color:var(--fg); }
.hidden { display:none !important; }
.muted { color:var(--muted); font-size:.85rem; }
.err { color:var(--danger); font-size:.85rem; margin-top:.4rem; }
a { color:var(--accent); }

/* login */
.login-wrap { min-height:100vh; display:grid; place-items:center; }
.login-card { width:320px; text-align:center; }
.login-card h1 { margin:.2rem 0; }
.login-card input, .login-card button { width:100%; margin-top:.6rem; }

/* layout */
header { display:flex; align-items:center; gap:1rem; padding:.6rem 1rem; background:var(--card); border-bottom:1px solid var(--line); position:sticky; top:0; z-index:5; }
.brand { font-weight:700; }
nav { display:flex; gap:.3rem; flex-wrap:wrap; }
nav button { background:transparent; border:1px solid transparent; color:var(--muted); }
nav button.active { color:var(--fg); border-color:var(--line); background:var(--bg); }
.spacer { flex:1; }
main { padding:1rem; max-width:1000px; margin:0 auto; }
.tab { display:none; } .tab.active { display:block; }
.row { display:flex; align-items:center; gap:.6rem; flex-wrap:wrap; margin-bottom:.8rem; }
h2 { margin:.2rem 0; }

/* controls */
button { background:var(--accent); color:#04110b; border:none; border-radius:6px; padding:.45rem .8rem; font-weight:600; cursor:pointer; }
button.ghost { background:transparent; color:var(--muted); border:1px solid var(--line); }
input, select, textarea { background:var(--bg); color:var(--fg); border:1px solid var(--line); border-radius:6px; padding:.4rem .5rem; }
textarea { width:100%; }

/* cards */
.list { display:flex; flex-direction:column; gap:.5rem; }
.card { background:var(--card); border:1px solid var(--line); border-radius:8px; padding:.7rem .9rem; }
.card h3 { margin:.2rem 0 .5rem; }
.card.lead, .card.county { display:flex; align-items:center; gap:.8rem; }
.grow { flex:1; min-width:0; }
.summary { font-size:.85rem; margin-top:.2rem; }
.stage { display:flex; flex-direction:column; gap:.3rem; }
.out { background:#0a0d11; border:1px solid var(--line); border-radius:6px; padding:.6rem; overflow:auto; max-height:340px; white-space:pre-wrap; }

/* map */
#map { height: 68vh; width: 100%; border:1px solid var(--line); border-radius:8px; background:#0a0d11; }
.leaflet-popup-content { color:#111; }

/* modal */
.modal { position:fixed; inset:0; background:rgba(0,0,0,.6); display:flex; align-items:flex-start; justify-content:center; z-index:1000; overflow-y:auto; padding:3vh 1rem; }
.modal-card { background:var(--card); border:1px solid var(--line); border-radius:12px; width:min(760px,100%); position:relative; padding:1.2rem 1.4rem; }
.modal-x { position:absolute; top:.7rem; right:.8rem; background:transparent; color:var(--muted); border:1px solid var(--line); border-radius:6px; padding:.2rem .5rem; }
.modal h2 { margin:.1rem 0 .1rem; padding-right:2rem; }
.facts { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:.5rem .9rem; margin:.8rem 0; }
.fact { background:var(--bg); border:1px solid var(--line); border-radius:6px; padding:.4rem .6rem; }
.fact .k { font-size:.68rem; color:var(--muted); text-transform:uppercase; letter-spacing:.03em; }
.fact .v { font-size:.95rem; font-weight:600; }
.timeline { display:flex; flex-direction:column; gap:.4rem; margin:.5rem 0; }
.tl-item { display:flex; align-items:center; gap:.6rem; background:var(--bg); border:1px solid var(--line); border-radius:6px; padding:.45rem .6rem; }
.tl-item .sev { min-width:34px; height:34px; border-radius:6px; display:grid; place-items:center; font-weight:800; background:#5a2e2e; }
.countdown { font-size:.72rem; padding:.1rem .45rem; border-radius:10px; background:#3a3f47; }
.countdown.soon { background:#7a3a2a; color:#ffdccc; }
.countdown.today { background:var(--danger); color:#fff; }
.countdown.future { background:#2e5a44; }
#modal-map { height:200px; border-radius:8px; margin:.6rem 0; border:1px solid var(--line); }
.section-title { font-size:.75rem; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); margin:1rem 0 .3rem; border-bottom:1px solid var(--line); padding-bottom:.2rem; }
.ai-box { background:#0a0d11; border:1px solid var(--line); border-radius:8px; padding:.7rem; margin:.4rem 0; white-space:pre-wrap; font-size:.9rem; }
.modal-actions { display:flex; gap:.5rem; flex-wrap:wrap; align-items:center; margin:.6rem 0; }
.clickable { cursor:pointer; }
.clickable:hover { border-color:var(--accent); }

/* score badge */
.score { min-width:46px; height:46px; border-radius:8px; display:grid; place-items:center; font-weight:800; font-size:1.1rem; background:#333; }
.score.s0,.score.s1 { background:#3a3f47; }
.score.s2 { background:#6b5a2e; }
.score.s3 { background:#7a6a2a; color:#fff; }
.score.s4,.score.s5 { background:var(--accent); color:#04110b; }

/* tags */
.tag { display:inline-block; font-size:.72rem; padding:.1rem .45rem; border-radius:10px; background:#2a313b; color:var(--fg); margin-right:.3rem; }
.tag.warn { background:#5a2e2e; color:#ffd7d7; }
.access-api { background:#2e5a44; }
.access-portal_open { background:#2e4a5a; }
.access-portal_rate_limited { background:#5a4a2e; }
.access-portal_login { background:#4a2e5a; }
.access-portal_no_wildcard { background:#5a3a2e; }
.access-restricted { background:#5a2e2e; }
.status-verified { background:#2e5a44; }
.status-needs_verification { background:#5a4a2e; }
.status-blocked { background:#5a2e2e; }
.t-probate,.t-estate { background:#3a4a5a; }
.t-divorce { background:#5a3a4a; }
.t-foreclosure,.t-foreclosure_auction { background:#5a2e2e; }
.t-tax_lien,.t-tax_deed_sale { background:#5a4a2e; }
.t-lis_pendens { background:#4a3a5a; }
