/* ================= THEME TOKENS ================= */
/* Civic Modern — LIGHT is the base case. .dark overrides for toggle. */
:root{
  --bg:#FBFCFD;
  --bg2:#F1F5F9;
  --surface:#FFFFFF;
  --surface2:#F8FAFC;
  --border:#E2E8F0;
  --border2:#CBD5E1;
  --text:#0F1E33;
  --muted:#475569;
  --faint:#94A3B8;
  --teal:#0E8F8A;
  --teal2:#0B7A75;
  --teal-soft:#E1F5F3;
  --blue:#1D5FD8;
  --blue2:#1749A8;
  --blue-soft:#EAF1FE;
  --cyan:#1D5FD8;
  --green:#0E7C4A;
  --green-soft:#E2F5EC;
  --amber:#B4690E;
  --amber-soft:#FBEFD9;
  --amber-dim:#B4690E;
  --on-teal:#FFFFFF;
  --shadow-card:0 1px 2px rgba(15,30,51,.04), 0 8px 24px -16px rgba(15,30,51,.18);
  --shadow-pop:0 20px 50px -22px rgba(15,30,51,.35);
  --map-dot:#0E8F8A;
  --font-display:'Sora',system-ui,sans-serif;
  --font-body:'Instrument Sans',system-ui,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,monospace;
}
.dark{
  --bg:#0a1420;
  --bg2:#0d1a26;
  --surface:#0f1d2b;
  --surface2:#132436;
  --border:#1e3346;
  --border2:#274156;
  --text:#e8eef4;
  --muted:#8aa0b3;
  --faint:#5f7488;
  --teal:#2dd4bf;
  --teal2:#14b8a6;
  --teal-soft:rgba(45,212,191,.12);
  --blue:#5591c7;
  --blue2:#3f78b0;
  --blue-soft:rgba(85,145,199,.14);
  --cyan:#22d3ee;
  --green:#34d399;
  --green-soft:rgba(52,211,153,.14);
  --amber:#fbbf24;
  --amber-soft:rgba(251,191,36,.10);
  --amber-dim:#b78a2a;
  --on-teal:#052e2b;
  --shadow-card:0 30px 80px -40px rgba(0,0,0,.6);
  --shadow-pop:0 20px 50px -20px rgba(0,0,0,.8);
  --map-dot:#2dd4bf;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;line-height:1.55;transition:background .25s,color .25s}
body{overflow-x:hidden}
.hidden{display:none!important}
strong{color:var(--text);font-weight:600}
button{font-family:inherit;cursor:pointer}
a{color:var(--blue)}

/* logo */
.logo{width:30px;height:30px;color:var(--teal)}
.logo.sm{width:24px;height:24px}
.brand-name{font-family:var(--font-display);font-weight:700;font-size:19px;letter-spacing:-.02em}
.brand-row{display:flex;align-items:center;gap:10px;margin-bottom:26px}

/* ============ SIGN IN ============ */
.signin-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;padding:32px 20px}
.grid-bg{position:absolute;inset:0;background:
  radial-gradient(1100px 600px at 50% -10%, var(--blue-soft), transparent 60%),
  linear-gradient(rgba(148,163,184,.16) 1px, transparent 1px),
  linear-gradient(90deg, rgba(148,163,184,.16) 1px, transparent 1px);
  background-size:auto, 46px 46px, 46px 46px;background-color:var(--bg);
  mask-image:radial-gradient(circle at 50% 30%, #000 55%, transparent 100%);z-index:0}
.dark .grid-bg{background:
  radial-gradient(1100px 600px at 50% -10%, rgba(45,212,191,.10), transparent 60%),
  linear-gradient(rgba(30,51,70,.35) 1px, transparent 1px),
  linear-gradient(90deg, rgba(30,51,70,.35) 1px, transparent 1px);
  background-size:auto, 46px 46px, 46px 46px;background-color:var(--bg)}
.signin-card{position:relative;z-index:1;width:100%;max-width:460px;background:var(--surface);
  border:1px solid var(--border);border-radius:18px;padding:38px 34px;box-shadow:var(--shadow-card)}
.eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;color:var(--teal);text-transform:uppercase;margin-bottom:14px}
.signin-h1{font-family:var(--font-display);font-weight:700;font-size:29px;line-height:1.15;letter-spacing:-.02em;margin-bottom:14px}
.signin-body{color:var(--muted);font-size:15px;margin-bottom:26px}
.field-label{display:block;font-size:13px;font-weight:600;color:var(--text);margin:0 0 8px 2px}
.select-wrap{position:relative;margin-bottom:18px}
.select-wrap::after{content:"";position:absolute;right:16px;top:50%;width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.field-select{width:100%;appearance:none;background:var(--bg);color:var(--text);border:1px solid var(--border2);
  border-radius:11px;padding:13px 40px 13px 14px;font-size:14px;font-family:inherit;transition:border-color .15s}
.field-select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.btn-primary{background:var(--blue);color:#fff;font-weight:700;font-size:15px;
  border:none;border-radius:11px;padding:14px 20px;transition:transform .1s, box-shadow .2s, background .15s;box-shadow:0 8px 22px -10px rgba(29,95,216,.6)}
.btn-primary:hover{transform:translateY(-1px);background:var(--blue2);box-shadow:0 12px 28px -10px rgba(29,95,216,.7)}
.btn-primary:active{transform:translateY(0)}
.btn-block{width:100%;margin-top:6px}
.arr{margin-left:2px}
.signin-footer{display:flex;align-items:center;gap:8px;margin-top:20px;color:var(--faint);font-size:12.5px}
.signin-footer svg{color:var(--teal);flex-shrink:0}

/* ============ WORKSPACE ============ */
.workspace{min-height:100vh}
.appbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;
  padding:12px 22px;background:color-mix(in srgb, var(--surface) 85%, transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}
.appbar-brand{display:flex;align-items:center;gap:9px}
.appbar-tag{font-family:var(--font-mono);font-size:11px;color:var(--faint);border-left:1px solid var(--border2);padding-left:10px;margin-left:2px;letter-spacing:.04em}
.appbar-right{display:flex;align-items:center;gap:14px}
.appbar-pha{font-size:12.5px;color:var(--muted);max-width:340px;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* theme toggle */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:9px;
  background:var(--bg2);border:1px solid var(--border);color:var(--muted);transition:all .15s;flex-shrink:0}
.theme-toggle:hover{color:var(--text);border-color:var(--border2)}
.btn-switch-state{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 13px;border-radius:9px;
  background:var(--bg2);border:1px solid var(--border);color:var(--muted);font-size:12.5px;font-weight:600;
  cursor:pointer;transition:all .15s;flex-shrink:0;font-family:inherit}
.btn-switch-state:hover{color:var(--teal);border-color:var(--teal)}
.btn-switch-state svg{flex-shrink:0}
.theme-toggle svg{width:18px;height:18px}
.theme-toggle .icon-moon{display:none}
.dark .theme-toggle .icon-sun{display:none}
.dark .theme-toggle .icon-moon{display:block}

.map-header{padding:20px 22px 14px;position:sticky;top:53px;z-index:30;background:linear-gradient(180deg,var(--bg) 70%,transparent);border-bottom:0}
.map-title{font-family:var(--font-display);font-weight:700;font-size:20px;letter-spacing:-.01em;line-height:1.2}
.map-sub{color:var(--muted);font-size:13.5px;margin-top:5px}
.ms-loading{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-style:italic}
.ms-spin{width:11px;height:11px;border:2px solid var(--border2);border-top-color:var(--teal);border-radius:50%;animation:sp .7s linear infinite;display:inline-block}
.map-wrap{position:relative}
.map{height:460px;width:100%;background:var(--bg2);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.map-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--bg2) 80%,transparent);z-index:5;font-size:13.5px;color:var(--muted);gap:10px}
.spin{width:18px;height:18px;border:2px solid var(--border2);border-top-color:var(--teal);border-radius:50%;animation:sp .7s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* map legend */
.map-legend{position:absolute;bottom:14px;left:14px;z-index:6;background:color-mix(in srgb,var(--surface) 92%,transparent);
  backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:11px;padding:10px 13px;display:flex;flex-direction:column;gap:7px;box-shadow:var(--shadow-card)}
.map-legend .lg{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);font-weight:500}
.lg-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0;border:1.5px solid #fff}
.dark .lg-dot{border-color:rgba(255,255,255,.25)}
.lg-dot.all{background:var(--map-dot)}
.lg-dot.comp{background:var(--amber)}
.lg-dot.subj{background:var(--blue)}

.content{max-width:1060px;margin:0 auto;padding:26px 22px 60px}

/* stepper */
.stepper{display:flex;align-items:center;gap:0;margin-bottom:24px;flex-wrap:wrap}
.step{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--faint);font-weight:600;white-space:nowrap}
.step-num{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;
  background:var(--bg2);border:1px solid var(--border2);color:var(--muted);font-size:12px;font-family:var(--font-mono)}
.step.active{color:var(--text)}
.step.active .step-num{background:var(--blue);color:#fff;border-color:transparent}
.step.done .step-num{background:var(--teal-soft);color:var(--teal);border-color:var(--teal)}
.step-line{flex:1;min-width:20px;height:1px;background:var(--border2);margin:0 12px}

/* cards */
.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px;margin-bottom:22px;box-shadow:var(--shadow-card)}
.card-h3{font-family:var(--font-display);font-weight:600;font-size:18px;margin-bottom:6px}
.card-sub{color:var(--muted);font-size:13.5px;margin-bottom:16px}

/* search */
.search-input-wrap{position:relative}
.search-icon{position:absolute;left:15px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--faint)}
.search-input{width:100%;background:var(--bg);border:1px solid var(--border2);border-radius:11px;
  padding:14px 14px 14px 44px;color:var(--text);font-size:14.5px;font-family:inherit;transition:border-color .15s,box-shadow .15s}
.search-input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.search-input::placeholder{color:var(--faint)}
.search-results{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--surface);
  border:1px solid var(--border2);border-radius:12px;max-height:320px;overflow-y:auto;z-index:20;box-shadow:var(--shadow-pop)}
.sr-item{padding:11px 15px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s}
.sr-item:last-child{border-bottom:none}
.sr-item:hover,.sr-item.hi{background:var(--blue-soft)}
.sr-name{font-size:14px;font-weight:600}
.sr-addr{font-size:12.5px;color:var(--muted);margin-top:2px}
.sr-empty{padding:14px 15px;color:var(--faint);font-size:13px}

/* subject card */
.subj-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:6px}
.subj-eyebrow{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-mono);font-size:15px;font-weight:700;letter-spacing:.22em;color:var(--teal);text-transform:uppercase;background:var(--teal-soft,color-mix(in srgb,var(--teal) 12%,transparent));border:1px solid color-mix(in srgb,var(--teal) 35%,transparent);border-radius:8px;padding:7px 14px}
.subj-eyebrow-dot{width:9px;height:9px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 4px color-mix(in srgb,var(--teal) 22%,transparent)}
.legend{display:flex;gap:8px;flex-wrap:wrap}
.legend-pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;padding:4px 10px;border-radius:20px;font-weight:600}
.legend-pill.db{background:var(--green-soft);color:var(--green);border:1px solid color-mix(in srgb,var(--green) 30%,transparent)}
.legend-pill.est{background:var(--amber-soft);color:var(--amber);border:1px solid color-mix(in srgb,var(--amber) 30%,transparent)}
.dot{width:7px;height:7px;border-radius:50%}
.dot.g{background:var(--green)} .dot.a{background:var(--amber)}
.subj-name{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:-.01em;margin-top:12px}
.subj-addr{color:var(--muted);font-size:14px;margin-top:3px}
.ptype-pill{display:inline-block;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:6px;background:var(--blue-soft);color:var(--blue);margin-top:8px;font-weight:600}

.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}
.tile{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:14px}
.tile-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;color:var(--faint);text-transform:uppercase}
.tile-val{font-size:17px;font-weight:600;margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-family:var(--font-display)}

/* nine-factor comparability cards (24 CFR 982.507(b)) */
.factors-head{margin-top:22px;font-family:var(--font-display);font-weight:600;font-size:14.5px;color:var(--muted)}
.factors-head strong{color:var(--text)}
.factors-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}
.fcard{position:relative;background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:14px 14px 30px}
.fcard-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;color:var(--faint);text-transform:uppercase}
.fcard-val{font-family:var(--font-display);font-weight:600;font-size:17px;margin-top:7px;line-height:1.25}
.fcard-val.sm{font-size:13.5px}
.fcard-sub{font-size:12px;color:var(--muted);margin-top:5px;line-height:1.4}
.fcard-src{position:absolute;left:14px;right:14px;bottom:11px;width:max-content;max-width:calc(100% - 28px);font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:.04em;padding:2px 7px;border-radius:6px;background:var(--green-soft);color:var(--green);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fcard-src.na{background:var(--amber-soft);color:var(--amber)}
.fcard-src.src-link{display:inline-flex;align-items:center;gap:5px;text-decoration:none;transition:background .12s,color .12s}
.fcard-src.src-link svg{width:10px;height:10px;flex-shrink:0}
.fcard-src.src-link:hover{background:var(--green);color:#fff}
.badge{font-size:10px;font-weight:700;padding:2px 7px;border-radius:6px;font-family:var(--font-mono);letter-spacing:.03em}
.badge.db{background:var(--green-soft);color:var(--green)}
.badge.est{background:var(--amber-soft);color:var(--amber)}

.roster-head{margin-top:24px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.roster-title{font-family:var(--font-display);font-weight:600;font-size:15.5px}
.roster-sub{color:var(--muted);font-size:12.5px}
.roster-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}
.unit-card{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:14px;cursor:pointer;transition:border-color .12s,box-shadow .12s}
.unit-card:hover{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.unit-card.sel{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.unit-bed{font-family:var(--font-display);font-weight:600;font-size:15px}
.unit-line{font-size:12.5px;color:var(--muted);margin-top:5px}
.unit-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}

.util-head{margin-top:26px;display:flex;flex-direction:column;gap:3px}
.util-title{font-family:var(--font-display);font-weight:600;font-size:15.5px}
.util-sub{color:var(--muted);font-size:12.5px;line-height:1.45}
.util-legend{margin-top:12px;background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;font-size:12px;color:var(--muted);line-height:1.55;display:flex;flex-direction:column;gap:4px}
.util-legend strong{color:var(--text)}
.util-legend em{font-style:italic;color:var(--text)}
.util-legend-cite{margin-top:2px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.02em;color:var(--faint)}
.util-group-label{margin-top:16px;font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.util-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:9px}
.util-item{display:flex;align-items:flex-start;gap:11px;background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:12px 13px;cursor:pointer;user-select:none;transition:border-color .12s}
.util-item:hover{border-color:var(--teal)}
.util-to{flex-shrink:0;width:26px;height:26px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:700;font-size:13px;border:1.5px solid var(--border2)}
.util-to.t{background:var(--teal);border-color:var(--teal);color:var(--on-teal)}
.util-to.o{background:var(--blue-soft);border-color:color-mix(in srgb,var(--blue) 35%,transparent);color:var(--blue)}
.util-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.util-label-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.util-label{font-family:var(--font-display);font-weight:600;font-size:14px}
.util-desc{font-size:11.5px;color:var(--muted);line-height:1.4}
.util-who{font-weight:700;color:var(--text)}
.util-confirm{font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:2px 6px;border-radius:5px;background:var(--green-soft);color:var(--green)}

.gen-btn{margin-top:24px;width:100%;background:var(--blue);color:#fff;
  font-weight:700;font-size:16px;border:none;border-radius:13px;padding:17px;display:flex;align-items:center;justify-content:center;gap:9px;
  box-shadow:0 10px 26px -10px rgba(29,95,216,.5);transition:transform .1s,background .15s}
.gen-btn:hover{transform:translateY(-1px);background:var(--blue2)}
.gen-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.gen-sub{text-align:center;color:var(--muted);font-size:12.5px;margin-top:11px}

/* report */
.report-card{border-color:var(--border2)}
.report-eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;color:var(--teal);text-transform:uppercase}
.report-h2{font-family:var(--font-display);font-weight:700;font-size:20px;margin-top:8px;margin-bottom:4px}
.report-meta{color:var(--muted);font-size:13px;margin-bottom:18px}
.rr-verdict{display:flex;align-items:center;gap:12px;padding:16px 18px;border-radius:12px;margin-bottom:18px;background:var(--green-soft);border:1px solid color-mix(in srgb,var(--green) 30%,transparent)}
.rr-verdict.high{background:var(--amber-soft);border-color:color-mix(in srgb,var(--amber) 35%,transparent)}
.rr-verdict-icon{width:40px;height:40px;border-radius:10px;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;font-weight:700}
.rr-verdict.high .rr-verdict-icon{background:var(--amber)}
.rr-verdict-title{font-family:var(--font-display);font-weight:700;font-size:16px}
.rr-verdict-sub{font-size:13px;color:var(--muted);margin-top:2px}
.rr-table{width:100%;border-collapse:collapse;font-size:13.5px;margin-top:8px}
.rr-table th{text-align:left;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;color:var(--faint);text-transform:uppercase;padding:8px 10px;border-bottom:1px solid var(--border2);font-weight:600}
.rr-table td{padding:11px 10px;border-bottom:1px solid var(--border)}
.rr-table tr:last-child td{border-bottom:none}
.rr-table .num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.rr-det{color:var(--teal);font-weight:700}
.rr-note{font-size:12.5px;color:var(--muted);margin-top:14px;padding:12px 14px;background:var(--bg2);border:1px solid var(--border);border-radius:10px}
.rr-src{font-size:11.5px;color:var(--faint);margin-top:3px}
.rr-src a{color:var(--blue);text-decoration:none}
.rr-src a:hover{text-decoration:underline}
.comp-sub{font-family:var(--font-display);font-weight:600;font-size:14px;margin:20px 0 8px}

/* sections */
.section{margin-top:40px}
.section-head{display:flex;gap:14px;align-items:flex-start;margin-bottom:20px}
.section-icon{flex-shrink:0;width:38px;height:38px;border-radius:10px;background:var(--teal-soft);color:var(--teal);
  display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;font-family:var(--font-display)}
.section-icon.warn{background:var(--amber-soft);color:var(--amber)}
.section-title{font-family:var(--font-display);font-weight:700;font-size:21px;letter-spacing:-.01em}
.section-sub{color:var(--muted);font-size:13.5px;margin-top:4px}

.method-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.method-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px;box-shadow:var(--shadow-card)}
.method-title{font-family:var(--font-display);font-weight:600;font-size:15px;margin-bottom:7px}
.method-body{color:var(--muted);font-size:13px;line-height:1.5}
.method-cite{display:inline-flex;align-items:center;gap:5px;margin-top:12px;font-family:var(--font-mono);font-size:11.5px;color:var(--blue);text-decoration:none;transition:color .12s}
.method-cite:hover{color:var(--teal)}

.hotma-box{margin-top:18px;background:var(--amber-soft);border:1px solid color-mix(in srgb,var(--amber) 25%,transparent);border-radius:14px;padding:20px}
.hotma-badge{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;color:var(--amber);margin-bottom:8px}
.hotma-box p{color:var(--muted);font-size:13.5px;line-height:1.6}

.disclaimer-list{list-style:none;display:flex;flex-direction:column;gap:12px}
.disclaimer-list li{position:relative;padding-left:26px;color:var(--muted);font-size:13.5px;line-height:1.5}
.disclaimer-list li::before{content:"";position:absolute;left:6px;top:8px;width:6px;height:6px;border-radius:50%;background:var(--amber)}

.app-footer{margin-top:48px;padding-top:22px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:6px;color:var(--faint);font-size:12px}

/* maplibre popup */
.maplibregl-popup-content{background:var(--surface);border:1px solid var(--border2);border-radius:12px;padding:14px 15px;color:var(--text);box-shadow:var(--shadow-pop);font-family:var(--font-body)}
.maplibregl-popup-tip{border-top-color:var(--surface)!important;border-bottom-color:var(--surface)!important}
.maplibregl-popup-close-button{color:var(--muted);font-size:18px;padding:2px 7px}
.pop-name{font-family:var(--font-display);font-weight:600;font-size:15px;padding-right:14px}
.pop-addr{font-size:12.5px;color:var(--muted);margin-top:3px}
.pop-meta{font-size:12px;color:var(--faint);margin-top:6px}
.pop-btn{margin-top:11px;width:100%;background:var(--blue);color:#fff;font-weight:700;font-size:13px;border:none;border-radius:9px;padding:9px}
.pop-btn:hover{background:var(--blue2)}

/* dot markers rendered as DOM elements */
.dot-marker{border-radius:50%;cursor:pointer;border:1.5px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.dark .dot-marker{border-color:rgba(255,255,255,.3)}

/* responsive */
@media(max-width:760px){
  .tiles,.roster-grid,.method-grid,.factors-grid{grid-template-columns:1fr}
  .util-grid{grid-template-columns:1fr}
  .map{height:380px}
  .signin-card{padding:30px 22px}
  .signin-h1{font-size:25px}
  .appbar-pha{display:none}
  .map-header{top:53px}
  .step-line{margin:0 6px}
  .step{font-size:12px}
}
@media(max-width:440px){
  .util-grid{grid-template-columns:1fr}
  .content{padding:22px 16px 50px}
}

/* ============ v2: MULTI-SELECT + COSTAR REPORT ============ */
/* subject card layout w/ photo */
.subj-main{flex:1;min-width:240px}
.subj-photo{width:190px;height:132px;border-radius:12px;object-fit:cover;border:1px solid var(--border2);background:var(--bg2);flex-shrink:0}

/* unit multi-select checkmark */
.unit-check{position:absolute;top:10px;right:10px;width:20px;height:20px;border-radius:6px;border:1.5px solid var(--border2);
  background:var(--surface);display:inline-flex;align-items:center;justify-content:center;transition:all .12s}
.unit-check svg{width:12px;height:12px;opacity:0;color:#fff}
.unit-card{position:relative}
.unit-card.sel .unit-check{background:var(--blue);border-color:var(--blue)}
.unit-card.sel .unit-check svg{opacity:1}

/* utilities sub caption */
.util-sub{color:var(--muted);font-size:12.5px;margin-top:3px}

/* report action buttons */
.report-actions{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0 6px}
.pdf{background:var(--teal);color:var(--on-teal);font-weight:700;font-size:14.5px;border:none;border-radius:11px;
  padding:13px 20px;display:inline-flex;align-items:center;gap:9px;box-shadow:0 8px 22px -12px rgba(14,143,138,.6);transition:transform .1s,background .15s}
.pdf:hover{transform:translateY(-1px);background:var(--teal2)}
.pdf:disabled{opacity:.55;cursor:progress;transform:none}
.pdf svg{width:17px;height:17px}
.pdf-note{color:var(--faint);font-size:12px;margin-top:8px}

/* FMR band line */
.fmr-line{font-size:12.5px;color:var(--muted);margin-top:4px}
.fmr-line .num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}
.rr-thin{font-weight:400;color:var(--muted)}
.zero{color:var(--faint)}

/* per-bedroom block */
.bed-block{margin-top:26px;padding-top:22px;border-top:1px solid var(--border2)}
.bed-block:first-of-type{border-top:none;margin-top:14px;padding-top:0}
.bed-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:4px}
.bed-title{font-family:var(--font-display);font-weight:700;font-size:17px}
.bed-sub{color:var(--muted);font-size:12.5px;margin-top:2px}

/* ===== "LIVE BRAIN" LOADING ANIMATION ===== */
.brain{padding:6px 2px 4px}
.brain-head{display:flex;align-items:center;gap:14px}
.brain-head>div{flex:1;min-width:0}
.brain-title{font-family:var(--font-display);font-weight:700;font-size:16px;color:var(--text)}
.brain-sub{font-size:12.5px;color:var(--muted);margin-top:2px}
.brain-sub strong{color:var(--text)}
.brain-pct{font-family:var(--font-mono);font-weight:700;font-size:22px;color:var(--teal);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.brain-pulse{position:relative;width:34px;height:34px;flex:none;display:inline-flex;align-items:center;justify-content:center}
.brain-pulse i{position:absolute;inset:0;margin:auto;width:10px;height:10px;border-radius:50%;background:var(--teal);opacity:.9}
.brain-pulse i:nth-child(2){animation:brainRing 1.6s ease-out infinite}
.brain-pulse i:nth-child(3){animation:brainRing 1.6s ease-out .8s infinite}
@keyframes brainRing{0%{transform:scale(1);opacity:.5}100%{transform:scale(3.4);opacity:0}}
.brain-bar{height:6px;border-radius:6px;background:var(--bg2);overflow:hidden;margin:16px 0 6px}
.brain-bar>span{display:block;height:100%;width:0;border-radius:6px;background:linear-gradient(90deg,var(--teal),var(--blue));transition:width .42s cubic-bezier(.4,0,.2,1)}
.brain-steps{list-style:none;margin:14px 0 4px;padding:0;display:flex;flex-direction:column;gap:2px}
.bstep{display:flex;align-items:flex-start;gap:12px;padding:8px 10px;border-radius:10px;opacity:.45;transition:opacity .3s,background .3s}
.bstep.active{opacity:1;background:var(--teal-soft)}
.bstep.done{opacity:.85}
.bstep-dot{position:relative;width:20px;height:20px;flex:none;border-radius:50%;border:1.5px solid var(--border2);margin-top:1px;display:inline-flex;align-items:center;justify-content:center;color:#fff;transition:background .3s,border-color .3s}
.bstep.done .bstep-dot{background:var(--teal);border-color:var(--teal)}
.bstep-check{width:13px;height:13px;opacity:0;transition:opacity .25s}
.bstep.done .bstep-check{opacity:1}
.bstep-spin{position:absolute;width:14px;height:14px;border-radius:50%;border:2px solid var(--teal);border-top-color:transparent;opacity:0}
.bstep.active .bstep-spin{opacity:1;animation:bspin .7s linear infinite}
.bstep.active .bstep-dot{border-color:var(--teal)}
@keyframes bspin{to{transform:rotate(360deg)}}
.bstep-txt{display:flex;flex-direction:column;gap:1px;min-width:0}
.bstep-txt b{font-family:var(--font-display);font-weight:600;font-size:13.5px;color:var(--text)}
.bstep-txt em{font-style:normal;font-size:11.5px;color:var(--muted)}
@media(prefers-reduced-motion:reduce){.brain-pulse i,.bstep-spin{animation:none}}

/* ===== PER-BED RESULT HERO ===== */
.comp-sub{font-family:var(--font-display);font-weight:600;font-size:13.5px;margin:16px 0 10px;color:var(--muted)}
.result-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap}
.rh-left{min-width:0;flex:1}
.rh-unit{font-family:var(--font-display);font-weight:700;font-size:22px;line-height:1.1;color:var(--text)}
.rh-tags{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}
.rh-tag{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:11px;font-weight:600;padding:3px 9px;border-radius:20px;background:var(--bg2);color:var(--muted);white-space:nowrap;border:1px solid var(--border)}
.rh-right{text-align:right;flex:none}
.rh-cap{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;color:var(--teal);font-weight:600}
.rh-num{font-family:var(--font-display);font-weight:700;font-size:40px;line-height:1;letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums;margin-top:3px}
.rh-num span{font-family:var(--font-body);font-size:16px;font-weight:500;color:var(--muted);letter-spacing:0}
.rh-det{font-size:11.5px;color:var(--faint);margin-top:5px}
.rh-band{font-family:var(--font-mono);font-size:12px;color:var(--muted);margin-top:3px}
.rh-band b{color:var(--text);font-weight:600}
.score-bar{height:8px;border-radius:8px;background:var(--bg2);overflow:hidden;margin:18px 0 14px}
.score-bar>span{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,var(--teal),var(--blue));width:0;animation:scoreGrow .9s cubic-bezier(.4,0,.2,1) forwards}
@keyframes scoreGrow{from{width:0}}
@media(prefers-reduced-motion:reduce){.score-bar>span{animation:none}}
.rh-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}
.rh-stat{display:flex;flex-direction:column;gap:2px}
.rh-stat b{font-family:var(--font-display);font-weight:700;font-size:20px;color:var(--text);line-height:1;font-variant-numeric:tabular-nums}
.rh-stat span{font-size:11px;color:var(--muted)}
.rh-util{font-size:12.5px;color:var(--muted);line-height:1.5;padding:10px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:10px}
.rh-util strong{color:var(--text)}

/* ===== COLLAPSIBLE COMPARABLES DATA TABLE ===== */
.comp-panel{margin-top:16px;border:1px solid var(--border2);border-radius:12px;overflow:hidden}
.comp-panel>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:13px 16px;font-family:var(--font-display);font-weight:600;font-size:14px;color:var(--text);background:var(--surface2);user-select:none}
.comp-panel>summary::-webkit-details-marker{display:none}
.comp-panel>summary:hover{background:var(--bg2)}
.cp-chev{width:18px;height:18px;color:var(--muted);transition:transform .25s}
.comp-panel[open] .cp-chev{transform:rotate(180deg)}
.comp-table-wrap{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}
.comp-table{width:100%;border-collapse:collapse;font-size:13px;min-width:820px}
.comp-table th{text-align:left;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;color:var(--faint);text-transform:uppercase;
  padding:11px 14px;border-bottom:1px solid var(--border2);font-weight:600;white-space:nowrap;background:var(--surface)}
.comp-table th .th-sub{display:block;font-size:8.5px;letter-spacing:.04em;color:var(--faint);opacity:.8;font-weight:500;margin-top:1px}
.comp-table td{padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle}
.comp-table tr:last-child td{border-bottom:none}
.comp-table .num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.ct-name{display:flex;align-items:flex-start;gap:9px;min-width:260px;max-width:360px}
.ct-idx{font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--teal);padding-top:1px}
.ct-name>div{min-width:0}
.ct-name b{font-family:var(--font-display);font-weight:600;font-size:13.5px;color:var(--text);line-height:1.25}
.ct-name em{display:block;font-style:normal;font-size:11.5px;color:var(--muted);margin-top:1px}
.ct-samplecount{display:inline-block;font-family:var(--font-mono);font-size:9.5px;font-weight:700;letter-spacing:.03em;
  color:var(--teal);background:var(--teal-soft);border-radius:5px;padding:1px 6px;margin-left:5px;vertical-align:middle}
.ct-samples{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:5px}
.ct-samples .samp{font-family:var(--font-mono);font-size:10px;color:var(--muted);background:var(--surface2);border:1px solid var(--border);border-radius:5px;padding:1px 6px}
.ct-med{font-family:var(--font-mono);font-size:8.5px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}
.ct-nosrc{color:var(--faint)}
.ct-foot{padding:10px 14px;font-size:11px;color:var(--muted);background:var(--surface2);line-height:1.5}
/* inline nine-factor block, shown on every comparable row */
.nf-inline{margin-top:7px}
.nf-inline>summary{cursor:pointer;list-style:none;font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.03em;
  color:var(--teal);display:inline-flex;align-items:center;gap:5px;padding:2px 0;user-select:none}
.nf-inline>summary::-webkit-details-marker{display:none}
.nf-inline>summary::before{content:"▸";font-size:9px;transition:transform .15s ease;color:var(--teal)}
.nf-inline[open]>summary::before{transform:rotate(90deg)}
/* ---- rebuilt nine-factor block: inline chip summary + flat scannable grid (no cascading list) ---- */
/* summary line: label + at-a-glance chip strip of factors that moved + data-backed count */
.nf-inline>summary{flex-wrap:wrap;gap:7px}
.nf-sum-lead{flex:none}
.nf-sum-chips{display:inline-flex;flex-wrap:wrap;gap:4px;font-family:var(--font-body);font-weight:600;letter-spacing:0}
.nf-sum-count{margin-left:auto;font-family:var(--font-mono);font-size:9.5px;font-weight:700;letter-spacing:.04em;
  color:var(--teal);background:var(--surface2);border:1px solid var(--border);border-radius:20px;padding:2px 8px;white-space:nowrap}
.nfc-chip{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:10px;font-weight:700;
  padding:2px 7px;border-radius:6px;white-space:nowrap;font-variant-numeric:tabular-nums}
.nfc-chip.pos{background:var(--green-soft);color:var(--green)}
.nfc-chip.neg{background:var(--amber-soft);color:var(--amber)}
.nfc-chip.flat{background:var(--bg2);color:var(--muted);font-weight:600}
/* flat grid: one row per factor — factor · adj · source flag · basis */
.nfg{margin:8px 0 2px;border:1px solid var(--border);border-radius:9px;background:var(--surface2);overflow:hidden}
.nfg-head,.nfg-row{display:grid;grid-template-columns:96px 62px 96px 1fr;gap:10px;align-items:baseline;padding:6px 11px}
.nfg-head{font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--faint);background:var(--bg2);border-bottom:1px solid var(--border)}
.nfg-row{font-size:11px;line-height:1.35;border-bottom:1px solid var(--border)}
.nfg-row:last-child{border-bottom:none}
.nfg-fac{font-weight:600;color:var(--text)}
.nfg-val{font-family:var(--font-mono);font-weight:700;font-size:10.5px;font-variant-numeric:tabular-nums}
.nfg-val.pos{color:var(--green)}.nfg-val.neg{color:var(--amber)}.nfg-val.zero{color:var(--faint)}
.nfg-why{color:var(--muted);font-size:10.5px}
.nfg-flag{font-family:var(--font-mono);font-size:8.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;
  padding:2px 6px;border-radius:5px;white-space:nowrap;align-self:start;text-align:center}
.nfg-flag.backed{background:var(--green-soft);color:var(--green)}
.nfg-flag.matched{background:var(--bg2);color:var(--muted)}
.nfg-flag.reviewer{background:rgba(29,95,216,.10);color:var(--blue)}
.nfg-flag.assess{background:var(--amber-soft);color:var(--amber)}
/* precision badge — which learned tier drove the dollars + fit metrics */
.prec-badge{margin-top:14px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;
  padding:10px 13px;border:1px solid var(--border2);border-radius:11px;
  background:linear-gradient(180deg,var(--surface2),var(--surface));}
.prec-badge.loading{font-size:11.5px;color:var(--muted);gap:8px}
.prec-badge .pb-dot{width:7px;height:7px;border-radius:50%;background:var(--amber);flex:none}
.pb-lead{display:inline-flex;align-items:center;gap:8px}
.pb-tier{font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.03em;padding:3px 9px;border-radius:7px;
  text-transform:uppercase;background:var(--green-soft);color:var(--green);white-space:nowrap}
.pb-tier.regional{background:rgba(29,95,216,.10);color:var(--blue)}
.pb-tier.national{background:var(--bg2);color:var(--muted)}
.pb-label{font-size:11px;font-weight:600;color:var(--text)}
.pb-metrics{display:inline-flex;flex-wrap:wrap;gap:5px}
.pb-metric{font-family:var(--font-mono);font-size:9.5px;font-weight:700;letter-spacing:.02em;font-variant-numeric:tabular-nums;
  padding:2px 7px;border-radius:6px;background:var(--surface);border:1px solid var(--border);color:var(--text)}
.pb-metric.cal{background:var(--amber-soft);color:var(--amber);border-color:transparent;font-weight:600}
.pb-foot{flex-basis:100%;font-size:10.5px;color:var(--muted);line-height:1.4}
.adjchip.note{background:var(--amber-soft);color:var(--amber);white-space:normal;line-height:1.35;max-width:230px;font-weight:600}
.cs-badge{display:inline-flex;align-items:baseline;gap:1px;font-family:var(--font-mono);font-weight:700;font-size:14px;
  padding:3px 8px;border-radius:8px;font-variant-numeric:tabular-nums}
.cs-badge i{font-style:normal;font-size:9px;font-weight:600;opacity:.7}
.cs-badge.hi{background:var(--green-soft);color:var(--green)}
.cs-badge.mid{background:var(--amber-soft);color:var(--amber)}
.cs-badge.lo{background:var(--bg2);color:var(--muted)}
.ct-adj{max-width:240px}
.adjchip{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:10.5px;font-weight:600;
  padding:2px 7px;border-radius:6px;margin:1px 2px 1px 0;white-space:nowrap}
.adjchip.pos{background:var(--green-soft);color:var(--green)}
.adjchip.neg{background:var(--amber-soft);color:var(--amber)}
.adjchip.zero{background:var(--bg2);color:var(--faint)}
.ct-adjusted{font-weight:700;color:var(--text)}
.ct-src{max-width:180px}
.ct-src a{color:var(--blue);text-decoration:none;font-size:12px;display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.ct-src a:hover{text-decoration:underline}

/* nine-factor grid */
.nine-wrap{margin-top:16px;border:1px solid var(--border2);border-radius:12px;overflow:hidden}
.rr-table.nine{margin-top:0}
.rr-table.nine th,.rr-table.nine td{padding:9px 12px}
.rr-table.nine .fac{font-weight:600;color:var(--text)}
.rr-table.nine .fac-reason{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.4}
.rr-table.nine tr.nine-total td{background:var(--surface2);font-weight:700;border-top:1px solid var(--border2)}

/* verdict chips (per-factor + comp status) */
.vchip{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:10.5px;font-weight:700;
  padding:3px 9px;border-radius:20px;letter-spacing:.03em;white-space:nowrap}
.vchip.ok{background:var(--green-soft);color:var(--green)}
.vchip.no{background:var(--amber-soft);color:var(--amber)}
.vchip.pend{background:var(--bg2);color:var(--faint);border:1px solid var(--border2)}

/* comp-count badge in determination summary */
.comp-badge{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-mono);
  font-weight:700;font-size:12px;padding:3px 9px;border-radius:20px;letter-spacing:.02em;
  background:var(--green-soft);color:var(--green);white-space:nowrap}
.comp-badge.low{background:var(--amber-soft);color:var(--amber)}
.comp-badge .cb-label{font-size:9.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;opacity:.8}
.comp-badge .cb-icon{width:12px;height:12px;flex:none;margin-right:1px}
.bed-head-chips{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}

@media(max-width:760px){
  .rh-stats{grid-template-columns:repeat(2,1fr)}
  .result-hero{flex-direction:column}
  .rh-right{text-align:left}
  .rh-num{font-size:34px}
  .subj-photo{width:100%;height:150px}
}

/* ===== Amenity dollar-weight editor (reviewer-editable, 982.507(b)(2)) ===== */
.aw-panel{margin-top:20px;border:1px solid var(--border2);border-radius:12px;overflow:hidden;background:var(--surface)}
.aw-panel>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:10px;
  padding:13px 16px;font-weight:650;font-size:14px;color:var(--text);background:var(--surface2)}
.aw-panel>summary::-webkit-details-marker{display:none}
.aw-panel>summary::before{content:"";width:8px;height:8px;border-right:2px solid var(--muted);
  border-bottom:2px solid var(--muted);transform:rotate(-45deg);transition:transform .18s;margin-right:2px}
.aw-panel[open]>summary::before{transform:rotate(45deg)}
.aw-panel>summary:hover{background:var(--bg2)}
.aw-badge{font-size:10.5px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;
  color:var(--teal2);background:var(--teal-soft);border-radius:20px;padding:2px 9px}
.aw-body{padding:14px 16px 18px}
.aw-note{font-size:12.5px;line-height:1.55;color:var(--muted);margin:0 0 14px}
.aw-note a{color:var(--blue);text-decoration:underline}
.aw-globals{display:flex;flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:16px}
.aw-fld{display:flex;flex-direction:column;gap:5px}
.aw-fld label{font-size:11.5px;font-weight:600;color:var(--muted)}
.aw-ov-input{position:relative;display:flex;align-items:center}
.aw-dollar{position:absolute;left:10px;font-size:13px;color:var(--faint);pointer-events:none}
.aw-ov-input input{width:110px;padding:8px 10px 8px 22px;border:1px solid var(--border2);border-radius:8px;
  background:var(--bg);color:var(--text);font-size:13px;font-variant-numeric:tabular-nums}
.aw-ov-input input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.aw-reset{align-self:flex-end;background:var(--bg2);color:var(--muted);border:1px solid var(--border2);
  border-radius:8px;padding:8px 14px;font-size:12.5px;font-weight:600;cursor:pointer}
.aw-reset:hover{background:var(--border);color:var(--text)}
.aw-ov-head{font-size:11.5px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;
  color:var(--faint);margin:6px 0 10px;padding-top:12px;border-top:1px solid var(--border)}
.aw-ov-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 16px}
.aw-ov-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.aw-ov-name{font-size:12.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aw-ov-row .aw-ov-input input{width:86px}
.aw-empty{font-size:12.5px;color:var(--muted);font-style:italic}
@media(max-width:640px){.aw-ov-grid{grid-template-columns:1fr}}
