/* Pack Private Capital — M&A AI Analyst
 * Navy / charcoal / light-gray executive theme with green/amber/red signals.
 */
:root {
  --navy:        #0f2440;  /* primary brand navy */
  --navy-deep:   #0a1a30;  /* header gradient bottom */
  --navy-soft:   #1c3a5e;  /* hover / secondary navy */
  --steel:       #2f5b87;  /* accent links / active */
  --ink:         #14233a;  /* body text */
  --muted:       #64748b;  /* secondary text */
  --muted-2:     #94a3b8;
  --bg:          #f4f6f9;  /* app background */
  --panel:       #ffffff;
  --line:        #e4e9f0;
  --line-strong: #cdd6e2;
  --slate-bg:    #f1f5f9;

  --good:        #15803d;  --good-bg:  #e7f6ec;  --good-line:#bbe6c8;
  --warn:        #b45309;  --warn-bg:  #fdf3e3;  --warn-line:#f3dcad;
  --bad:         #b91c1c;  --bad-bg:   #fdecec;  --bad-line:#f4c7c7;
  --info-bg:     #eaf1f9;

  --shadow:  0 1px 2px rgba(15,36,64,.05), 0 1px 3px rgba(15,36,64,.08);
  --shadow-lg: 0 12px 40px rgba(10,26,48,.18);
  --radius: 12px;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  background: var(--bg);
  color: var(--ink);
  font-size: 14px;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--steel); text-decoration: none; }
h1,h2,h3,h4 { margin: 0 0 .4em; line-height: 1.25; color: var(--navy); }
button { font-family: inherit; font-size: 13px; cursor: pointer; }
input, select, textarea { font-family: inherit; }

/* ---------- App shell (sidebar + main) ---------- */
.app-shell { display: flex; min-height: 100vh; align-items: stretch; }
.sidebar {
  width: 248px; flex: 0 0 248px; position: sticky; top: 0; align-self: flex-start;
  height: 100vh; overflow-y: auto;
  background: linear-gradient(185deg, var(--navy) 0%, var(--navy-deep) 100%);
  color: #fff; display: flex; flex-direction: column;
  padding: 20px 16px; border-right: 1px solid rgba(0,0,0,.2);
}
.sidebar .brand { display: flex; align-items: center; gap: 12px; padding: 4px 8px 18px; border-bottom: 1px solid rgba(255,255,255,.1); margin-bottom: 14px; }
.sidebar .logo { height: 26px; width: auto; max-width: 120px; object-fit: contain; filter: brightness(0) invert(1); }
.sidebar .title-block { display: flex; flex-direction: column; gap: 1px; }
.sidebar .title { font-size: 15px; font-weight: 700; letter-spacing: .2px; }
.sidebar .subtitle { font-size: 11px; opacity: .62; font-weight: 500; }

.nav { display: flex; flex-direction: column; gap: 3px; flex: 1; }
.nav-label { font-size: 10px; text-transform: uppercase; letter-spacing: .8px; color: rgba(255,255,255,.42); font-weight: 700; padding: 14px 10px 6px; }
.nav .tab {
  display: flex; align-items: center; gap: 11px; width: 100%; text-align: left;
  background: none; border: none; color: rgba(255,255,255,.74);
  padding: 10px 12px; border-radius: 9px; font-size: 13.5px; font-weight: 600;
  border-left: 3px solid transparent; transition: background .12s, color .12s;
}
.nav .tab:hover { background: rgba(255,255,255,.08); color: #fff; }
.nav .tab.active { background: rgba(255,255,255,.14); color: #fff; border-left-color: #fff; }
.nav .nav-ico { font-size: 14px; width: 18px; text-align: center; opacity: .85; }

.sidebar-foot { margin-top: 14px; padding-top: 14px; border-top: 1px solid rgba(255,255,255,.1); display: flex; flex-direction: column; gap: 12px; }
.side-integrations { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18); border-radius: 9px;
  padding: 9px 11px; cursor: pointer; transition: background .12s, border-color .12s; }
.side-integrations:hover { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.34); }
.side-integrations .si-ico { font-size: 15px; color: rgba(255,255,255,.85); }
.side-integrations .si-text { display: flex; flex-direction: column; line-height: 1.2; flex: 1; }
.side-integrations .si-title { font-size: 12.5px; font-weight: 700; color: #fff; }
.side-integrations .si-sub { font-size: 10.5px; color: rgba(255,255,255,.6); }
.side-integrations .si-caret { color: rgba(255,255,255,.5); font-size: 16px; font-weight: 700; }
.demo-badge { background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18); color: rgba(255,255,255,.82); border-radius: 8px; padding: 7px 10px; font-size: 10.5px; font-weight: 600; letter-spacing: .2px; line-height: 1.35; }

/* ---------- Main column + top bar ---------- */
.main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.topbar {
  position: sticky; top: 0; z-index: 5;
  background: rgba(255,255,255,.86); backdrop-filter: saturate(160%) blur(8px);
  border-bottom: 1px solid var(--line); box-shadow: var(--shadow);
  padding: 12px 28px; display: flex; align-items: center; gap: 16px;
}
.topbar-search { position: relative; display: flex; align-items: center; }
.topbar-search .search-ico { position: absolute; left: 12px; color: var(--muted-2); font-size: 15px; pointer-events: none; }
.topbar-search input { background: var(--slate-bg); border: 1px solid var(--line-strong); color: var(--ink); border-radius: 9px; padding: 9px 14px 9px 34px; font-size: 13px; min-width: 320px; }
.topbar-search input::placeholder { color: var(--muted-2); }
.topbar-search input:focus { outline: none; background: #fff; border-color: var(--steel); box-shadow: 0 0 0 3px rgba(47,91,135,.12); }
.header-spacer { flex: 1; }
.header-date { font-size: 12px; color: var(--muted); font-variant-numeric: tabular-nums; }
.btn-primary { background: var(--navy); color: #fff; border: 1px solid var(--navy); border-radius: 9px; padding: 9px 15px; font-weight: 700; }
.btn-primary:hover { background: var(--navy-soft); }
.header-snapshot {
  display: flex; align-items: center; gap: 14px; cursor: pointer;
  background: var(--slate-bg); border: 1px solid var(--line-strong);
  border-radius: 10px; padding: 6px 16px; transition: border-color .12s, box-shadow .12s;
}
.header-snapshot:hover { border-color: var(--steel); box-shadow: 0 0 0 3px rgba(47,91,135,.10); }
.hsnap-item { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.1; }
.hsnap-v { font-size: 17px; font-weight: 800; color: var(--navy); font-variant-numeric: tabular-nums; }
.hsnap-k { font-size: 10px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.hsnap-div { width: 1px; align-self: stretch; background: var(--line-strong); }

/* ---------- Layout ---------- */
.content { flex: 1; }
.view { padding: 24px 28px 70px; max-width: 1420px; }
.hidden { display: none !important; }
.muted { color: var(--muted); }
.table-head-row { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; }

@media (max-width: 860px){
  .app-shell { flex-direction: column; }
  .sidebar { width: auto; flex: none; height: auto; position: static; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 8px 14px; padding: 12px 16px; }
  .sidebar .brand { border-bottom: none; margin-bottom: 0; padding: 0; }
  .nav { flex-direction: row; flex-wrap: wrap; flex: 1 1 100%; gap: 4px; }
  .nav-label { display: none; }
  .nav .tab { width: auto; }
  .sidebar-foot { flex-direction: row; align-items: center; margin-top: 0; padding-top: 0; border-top: none; flex: 1 1 100%; }
  .side-control { flex-direction: row; align-items: center; }
}

/* ---------- Summary cards ---------- */
.cards { display: grid; grid-template-columns: repeat(6, 1fr); gap: 13px; margin-bottom: 18px; }
.card {
  background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 15px 16px; box-shadow: var(--shadow); cursor: pointer; transition: border-color .12s, transform .08s;
  border-left: 3px solid var(--navy);
}
.card:hover { border-color: var(--line-strong); transform: translateY(-1px); }
.card.active-filter { border-color: var(--navy); box-shadow: 0 0 0 2px rgba(15,36,64,.12); }
.card.good { border-left-color: var(--good); }
.card.warn { border-left-color: var(--warn); }
.card.bad { border-left-color: var(--bad); }
.card .k { font-size: 11px; color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: .5px; }
.card .v { font-size: 24px; font-weight: 800; margin-top: 5px; color: var(--navy); font-variant-numeric: tabular-nums; }
.card .sub { font-size: 11.5px; color: var(--muted); margin-top: 2px; }
@media (max-width: 1200px){ .cards { grid-template-columns: repeat(3,1fr);} }
@media (max-width: 720px){ .cards { grid-template-columns: repeat(2,1fr);} }

/* ---------- Saved views ---------- */
.dash-views { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-bottom: 10px; }
.dash-views-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); margin-right: 2px; }
.view-chip { border: 1px solid var(--line-strong); background: var(--panel); color: var(--steel); border-radius: 999px; padding: 6px 13px; font-size: 12.5px; font-weight: 600; cursor: pointer; transition: background .12s, color .12s, border-color .12s; }
.view-chip:hover { border-color: var(--navy); color: var(--navy); }
.view-chip.active { background: var(--navy); color: #fff; border-color: var(--navy); }

/* Score trend indicator (dashboard) */
.score-cell { display: inline-flex; align-items: center; gap: 6px; }
.trend { font-size: 11px; font-weight: 800; font-variant-numeric: tabular-nums; }
.trend.up { color: var(--good); }
.trend.down { color: var(--bad); }
.trend.flat { color: var(--muted-2); font-weight: 600; }

/* ---------- Filter bar ---------- */
.filterbar {
  background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 10px 12px; margin-bottom: 14px; display: flex; gap: 8px; flex-wrap: wrap; align-items: center; box-shadow: var(--shadow);
}
.filterbar input, .filterbar select { border: 1px solid var(--line-strong); border-radius: 8px; padding: 8px 10px; font-size: 13px; color: var(--ink); background: #fff; }
.filterbar .spacer, .filterbar .fb-spacer { flex: 1; }
.filterbar .sort-label, .fb-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); margin-right: 2px; }

/* Filter pills (replace native <select> dropdowns) */
.fpill-wrap { position: relative; display: inline-flex; }
.fpill {
  display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
  border: 1px solid var(--line-strong); background: #fff; color: var(--steel);
  border-radius: 999px; padding: 6px 12px; font-size: 12.5px; font-weight: 600;
  transition: border-color .12s, color .12s, background .12s;
}
.fpill:hover { border-color: var(--navy); color: var(--navy); }
.fpill.open { border-color: var(--navy); color: var(--navy); box-shadow: 0 0 0 3px rgba(47,91,135,.10); }
.fpill.active { background: var(--navy); color: #fff; border-color: var(--navy); }
.fpill.active:hover { background: var(--navy-700, #16365c); }
.fpill .fpill-caret { font-size: 9px; opacity: .65; }
.fpill .fpill-x { font-size: 14px; line-height: 1; opacity: .85; border-radius: 50%; padding: 0 2px; }
.fpill .fpill-x:hover { opacity: 1; background: rgba(255,255,255,.22); }
.fpill.toggle { } /* needs-review style toggle uses the same pill look */
.fpill-menu {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 40; min-width: 180px;
  background: var(--panel); border: 1px solid var(--line-strong); border-radius: 10px;
  box-shadow: var(--shadow-lg); padding: 5px; max-height: 320px; overflow-y: auto;
}
.fpill-opt {
  display: block; width: 100%; text-align: left; border: none; background: none; cursor: pointer;
  padding: 7px 10px; font-size: 12.5px; color: var(--ink); border-radius: 7px; white-space: nowrap;
}
.fpill-opt:hover { background: var(--info-bg); }
.fpill-opt.sel { color: var(--navy); font-weight: 700; }
.chiprow { display: flex; gap: 6px; flex-wrap: wrap; }
.chip { border: 1px solid var(--line-strong); background: var(--panel); color: var(--muted); border-radius: 999px; padding: 6px 12px; font-size: 12px; font-weight: 600; }
.chip.active { background: var(--navy); color: #fff; border-color: var(--navy); }
.link-btn { background: none; border: none; color: var(--steel); font-weight: 600; padding: 6px 4px; }
.inline-input { border: 1px solid var(--line-strong); border-radius: 8px; padding: 8px 10px; font-size: 13px; min-width: 240px; }

/* ---------- Table ---------- */
.table-wrap { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); }
table { width: 100%; border-collapse: collapse; }
thead th { text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); padding: 11px 13px; border-bottom: 1px solid var(--line); background: var(--slate-bg); white-space: nowrap; }
/* Click-to-sort column headers */
thead th.th-sort { cursor: pointer; user-select: none; transition: color .12s, background .12s; }
thead th.th-sort:hover { color: var(--navy); background: #eef2f7; }
thead th.th-sort::after { content: "↕"; font-size: 9px; opacity: .3; margin-left: 5px; }
thead th.th-sort.num::after { margin-left: 4px; }
thead th.th-sort.sorted { color: var(--navy); }
thead th.th-sort.sorted.asc::after { content: "↑"; opacity: 1; }
thead th.th-sort.sorted.desc::after { content: "↓"; opacity: 1; }
tbody td { padding: 12px 13px; border-bottom: 1px solid var(--line); vertical-align: middle; }
tbody tr:last-child td { border-bottom: none; }
tbody tr.row-clickable { cursor: pointer; }
tbody tr.row-clickable:hover { background: var(--info-bg); }
td.action-cell { text-align: center; width: 38px; }
.row-del { border: none; background: none; cursor: pointer; font-size: 14px; line-height: 1; padding: 4px 6px; border-radius: 6px; opacity: 0; transition: opacity .12s, background .12s; }
tbody tr.row-clickable:hover .row-del { opacity: .55; }
.row-del:hover { opacity: 1; background: var(--bad-bg); }
.num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.company-cell { font-weight: 700; color: var(--navy); }
.company-cell .sub { font-weight: 400; font-size: 11.5px; color: var(--muted); display:block; }
.empty-state { padding: 48px; text-align: center; color: var(--muted); }

/* ---------- Missing chip ---------- */
.missing-chip { display: inline-block; background: #f1f5f9; color: var(--muted-2); border: 1px dashed var(--line-strong); border-radius: 6px; padding: 1px 7px; font-size: 11px; font-weight: 600; }
.est-chip { display: inline-block; background: var(--warn-bg); color: var(--warn); border: 1px solid var(--warn-line); border-radius: 6px; padding: 0 6px; font-size: 10px; font-weight: 700; margin-left: 6px; text-transform: uppercase; letter-spacing: .3px; }
.fact-chip { display: inline-block; background: var(--info-bg); color: var(--steel); border-radius: 6px; padding: 0 6px; font-size: 10px; font-weight: 700; margin-left: 6px; text-transform: uppercase; letter-spacing: .3px; }

/* ---------- Badges ---------- */
.badge { display: inline-block; border-radius: 999px; padding: 3px 10px; font-size: 11px; font-weight: 700; white-space: nowrap; }
.status-New { background: var(--info-bg); color: var(--steel); }
.status-InAIReview { background: #ede9fe; color: #6d28d9; }
.status-Reviewed { background: var(--good-bg); color: var(--good); }
.status-NeedsMoreInfo { background: var(--warn-bg); color: var(--warn); }
.status-Passed { background: #f1f5f9; color: var(--muted); }
.status-Watchlist { background: #e0f2fe; color: #0369a1; }
.status-MovedtoDiligence { background: var(--navy); color: #fff; }
.status-Archived { background: #f1f5f9; color: var(--muted-2); }

/* Inline status editing in the pipeline table */
.status-inline-wrap { position: relative; display: inline-block; }
.status-inline-wrap::after {
  content: "▾"; position: absolute; right: 7px; top: 50%; transform: translateY(-50%);
  font-size: 8px; opacity: .55; pointer-events: none;
}
select.status-inline {
  -webkit-appearance: none; appearance: none; border: none; cursor: pointer;
  padding: 3px 20px 3px 10px; font: inherit; font-size: 11px; font-weight: 700;
  line-height: 1.5; max-width: 150px;
}
select.status-inline:hover { filter: brightness(.96); }
select.status-inline:focus { outline: 2px solid var(--steel); outline-offset: 1px; }

.rec { font-weight: 700; font-size: 12px; }
.rec.good { color: var(--good); }
.rec.warn { color: var(--warn); }
.rec.bad { color: var(--bad); }
.rec-dot { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; vertical-align: middle; }
.rec-dot.good { background: var(--good); } .rec-dot.warn { background: var(--warn); } .rec-dot.bad { background: var(--bad); }

/* ---------- Score pill ---------- */
.score-pill { display: inline-flex; align-items: center; justify-content: center; min-width: 38px; padding: 3px 9px; border-radius: 8px; font-weight: 800; font-variant-numeric: tabular-nums; font-size: 13px; }
.score-pill.good { background: var(--good-bg); color: var(--good); }
.score-pill.warn { background: var(--warn-bg); color: var(--warn); }
.score-pill.bad { background: var(--bad-bg); color: var(--bad); }

/* ---------- Buttons ---------- */
.btn { border: 1px solid var(--line-strong); background: var(--panel); color: var(--ink); border-radius: 8px; padding: 8px 13px; font-weight: 600; }
.btn:hover { background: var(--slate-bg); }
.btn.primary { background: var(--navy); border-color: var(--navy); color: #fff; }
.btn.primary:hover { background: var(--navy-soft); }
.btn:disabled, .btn.is-disabled { opacity: .45; cursor: not-allowed; pointer-events: none; filter: grayscale(0.4); }
.btn.good { background: var(--good); border-color: var(--good); color: #fff; }
.btn.warn { background: var(--warn); border-color: var(--warn); color: #fff; }
.btn.bad { background: #fff; border-color: var(--bad-line); color: var(--bad); }
.btn.bad:hover { background: var(--bad-bg); }
.btn.small { padding: 5px 9px; font-size: 12px; }
.btn.block { width: 100%; text-align: left; margin-bottom: 7px; }
.btn:disabled { opacity: .45; cursor: not-allowed; }
.btn-row { display: flex; gap: 8px; flex-wrap: wrap; }

/* ---------- Panels / forms ---------- */
.panel { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px 22px; box-shadow: var(--shadow); margin-bottom: 16px; }
.panel h3 { font-size: 15px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px 18px; }
.form-grid .full { grid-column: 1 / -1; }
.field label { display: block; font-size: 12px; font-weight: 600; color: var(--muted); margin-bottom: 5px; }
.field input, .field select, .field textarea { width: 100%; border: 1px solid var(--line-strong); border-radius: 8px; padding: 9px 11px; font-size: 13px; color: var(--ink); background: #fff; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--steel); box-shadow: 0 0 0 3px rgba(47,91,135,.12); }
.field .hint { font-size: 11.5px; color: var(--muted); margin-top: 4px; }
textarea { resize: vertical; }
/* Section headers inside the intake / edit grids */
.form-section-head { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--steel); border-bottom: 1px solid var(--line); padding-bottom: 6px; margin: 8px 0 -2px; }
.form-section-head:first-child { margin-top: 0; }
.form-section-hint { font-weight: 500; text-transform: none; letter-spacing: 0; color: var(--muted); margin-left: 6px; }
@media (max-width: 900px){ .form-grid { grid-template-columns: 1fr 1fr; } }
/* Collapsible "Financials & detailed profile" section on the New Deal form */
.nd-form-toggle { display: flex; align-items: center; gap: 11px; width: 100%; text-align: left; margin-top: 18px; padding: 12px 14px; background: var(--paper, #f6f8fb); border: 1px solid var(--line-strong); border-radius: 10px; cursor: pointer; transition: background .12s, border-color .12s; }
.nd-form-toggle:hover { background: #eef2f8; border-color: var(--steel); }
.nd-form-toggle .ndft-ico { font-size: 13px; color: var(--steel); transition: transform .15s; flex: 0 0 auto; }
.nd-form-toggle[aria-expanded="true"] .ndft-ico { transform: rotate(90deg); }
.nd-form-toggle .ndft-text { display: flex; flex-direction: column; gap: 2px; }
.nd-form-toggle .ndft-text b { font-size: 13.5px; color: var(--ink); }
.nd-form-toggle .ndft-sub { font-size: 12px; color: var(--muted); font-weight: 500; }
.nd-collapse.collapsed { display: none; }

/* ---------- New deal layout ---------- */
.new-grid { display: grid; grid-template-columns: 1.7fr 1fr; gap: 16px; align-items: start; }
@media (max-width: 1000px){ .new-grid { grid-template-columns: 1fr; } }
.dropzone { border: 2px dashed var(--line-strong); border-radius: 12px; padding: 26px; text-align: center; color: var(--muted); background: #fbfdff; cursor: pointer; transition: border-color .12s, background .12s; }
.dropzone:hover, .dropzone.drag { border-color: var(--steel); background: var(--info-bg); }
.dropzone .dz-icon { font-size: 26px; color: var(--steel); }
.dropzone p { margin: 6px 0; }
.file-list { margin-top: 12px; display: flex; flex-direction: column; gap: 6px; }
.file-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px; font-size: 13px; text-align: left; overflow: hidden; }
.file-row .ft { flex: 0 0 auto; font-size: 10px; font-weight: 700; background: var(--navy); color: #fff; border-radius: 5px; padding: 2px 6px; }
.file-row .fn { flex: 1 1 0; min-width: 0; overflow-wrap: anywhere; word-break: break-word; }
.file-row .fsz { flex: 0 0 auto; white-space: nowrap; }
.file-row .fx { border: none; background: none; color: var(--muted); font-size: 16px; cursor: pointer; }
.file-row .file-link { color: var(--navy); font-weight: 600; text-decoration: none; border-bottom: 1px solid rgba(15,36,64,.25); }
.file-row .file-link:hover { border-bottom-color: var(--navy); }
.file-row .file-view { margin-left: auto; font-size: 12px; font-weight: 600; color: var(--steel); text-decoration: none; white-space: nowrap; }
.file-row .file-view:hover { color: var(--navy); text-decoration: underline; }
.help-note { font-size: 12px; color: var(--muted); background: var(--slate-bg); border-radius: 9px; padding: 11px 13px; }
.extract-row { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
.extract-row .muted { font-size: 12px; }

/* document extraction summary */
.extract-summary:empty { display: none; }
.extract-box { margin-top: 14px; border: 1px solid var(--line); border-radius: 11px; padding: 14px 16px; background: #fbfdff; }
.extract-box.loading { color: var(--steel); font-size: 13px; }
.extract-box.err { border-color: var(--bad-line); background: var(--bad-bg); color: var(--bad); font-size: 13px; }
.extract-box .ex-head { font-size: 13px; color: var(--navy); margin-bottom: 10px; }
.ex-list { list-style: none; margin: 0 0 10px; padding: 0; }
.ex-found { display: grid; grid-template-columns: 150px 110px 1fr; gap: 10px; align-items: baseline; padding: 6px 0; border-bottom: 1px dashed var(--line); font-size: 12.5px; }
.ex-found:last-child { border-bottom: none; }
.ex-found .ex-k { color: var(--muted); font-weight: 600; }
.ex-found .ex-v { font-weight: 700; color: var(--navy); font-variant-numeric: tabular-nums; }
.ex-found .ex-src { color: var(--muted-2); font-style: italic; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ex-missing { font-size: 12px; margin-bottom: 10px; }
.ex-note { font-size: 11.5px; color: var(--muted); border-top: 1px solid var(--line); padding-top: 9px; }
.ex-ai { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; font-size: 11.5px; color: var(--steel); margin: -2px 0 12px; padding-bottom: 10px; border-bottom: 1px dashed var(--line); }
.ex-ai-eng { font-weight: 700; color: var(--navy); background: #eef3fb; border: 1px solid var(--line); border-radius: 999px; padding: 2px 9px; }
.ex-ai-sep { color: var(--muted-2); }
.ex-ok { color: #1d7a4d; font-weight: 600; }
.ex-ready { display: flex; align-items: center; gap: 9px; margin-top: 12px; padding: 11px 13px; background: #e7f6ec; border: 1px solid #b6e0c4; border-radius: 9px; color: #1d7a4d; font-weight: 700; font-size: 13.5px; }
.ex-ready-check { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 50%; background: #1d7a4d; color: #fff; font-size: 13px; }
.ex-warn { color: #9a6b00; font-weight: 600; }
.ai-warn { margin-top: 12px; font-size: 11.5px; color: var(--steel); background: #fff8e9; border: 1px solid #f0e0b6; border-radius: 9px; padding: 9px 11px; }
@media (max-width: 700px){ .ex-found { grid-template-columns: 1fr; gap: 2px; } .ex-found .ex-src { white-space: normal; } }

/* pipeline */
.pipeline { list-style: none; margin: 0; padding: 0; counter-reset: step; }
.pipeline li { display: flex; align-items: center; gap: 11px; padding: 9px 0; border-bottom: 1px dashed var(--line); font-size: 13px; color: var(--muted); }
.pipeline li:last-child { border-bottom: none; }
.pipeline li .dot { width: 22px; height: 22px; border-radius: 50%; border: 2px solid var(--line-strong); display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; color: var(--muted-2); flex: 0 0 auto; }
.pipeline li.active { color: var(--navy); font-weight: 600; }
.pipeline li.active .dot { border-color: var(--steel); color: var(--steel); animation: pulse 1s infinite; }
.pipeline li.done { color: var(--ink); }
.pipeline li.done .dot { background: var(--good); border-color: var(--good); color: #fff; }
@keyframes pulse { 0%,100%{ box-shadow: 0 0 0 0 rgba(47,91,135,.4);} 50%{ box-shadow: 0 0 0 5px rgba(47,91,135,0);} }
.dup-warn { background: var(--warn-bg); border: 1px solid var(--warn-line); color: var(--warn); border-radius: 9px; padding: 10px 13px; font-size: 12.5px; margin-top: 14px; font-weight: 600; }

/* ---------- Deal Analysis (flagship) ---------- */
.analysis-top { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }
.analysis-top .back { background: none; border: 1px solid var(--line-strong); border-radius: 8px; padding: 7px 12px; font-weight: 600; color: var(--muted); }
.analysis-top h2 { margin: 0; font-size: 22px; }
.analysis-grid { display: grid; grid-template-columns: 270px 1fr 240px; gap: 16px; align-items: start; }
@media (max-width: 1200px){ .analysis-grid { grid-template-columns: 1fr; } }
.side-panel { position: sticky; top: 16px; }
@media (max-width: 1200px){ .side-panel { position: static; } }

.kv { display: grid; grid-template-columns: auto 1fr; gap: 7px 12px; font-size: 13px; }
.kv dt { color: var(--muted); }
.kv dd { margin: 0; font-weight: 600; text-align: right; }

.section { margin-bottom: 22px; }
.section-title { font-size: 11px; text-transform: uppercase; letter-spacing: .6px; color: var(--steel); font-weight: 700; margin: 0 0 10px; padding-bottom: 6px; border-bottom: 2px solid var(--line); }
.exec-summary p { margin: 0 0 8px; }
.exec-quick { background: var(--info-bg); border-left: 3px solid var(--steel); padding: 10px 14px; border-radius: 0 8px 8px 0; font-weight: 600; color: var(--navy); }
.exec-edit { width: 100%; border: 1px solid var(--line-strong); border-radius: 8px; padding: 10px 12px; font-size: 13.5px; line-height: 1.55; color: var(--ink); background: #fff; font-family: inherit; resize: vertical; margin-bottom: 6px; }
.exec-edit:focus { outline: none; border-color: var(--steel); box-shadow: 0 0 0 3px rgba(47,91,135,.12); }
.edited-chip { display: inline-block; background: var(--info-bg); color: var(--steel); border-radius: 6px; padding: 0 6px; font-size: 10px; font-weight: 700; margin-left: 8px; text-transform: uppercase; letter-spacing: .3px; }

/* financial table */
.fin-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.fin-table td { padding: 8px 10px; border-bottom: 1px solid var(--line); }
.fin-table td:first-child { color: var(--muted); }
.fin-table td:last-child { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }
/* inline click-to-edit financial cells */
.fin-cell { cursor: text; border-radius: 6px; transition: background .12s, box-shadow .12s; }
.fin-cell:hover { background: var(--info-bg); box-shadow: inset 0 0 0 1px var(--line-strong); }
.fin-cell .missing-chip { cursor: text; }
.cell-input { width: 100%; max-width: 150px; text-align: right; border: 1px solid var(--steel); border-radius: 6px; padding: 4px 7px; font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--ink); background: #fff; }
.cell-input:focus { outline: none; box-shadow: 0 0 0 3px rgba(47,91,135,.15); }
.cell-input-text { max-width: 100%; text-align: left; font-weight: 600; }
/* inline click-to-edit deal-detail cells (exec summary kv) */
.kv-edit { cursor: text; border-radius: 6px; padding: 1px 6px; margin: -1px -6px; transition: background .12s, box-shadow .12s; }
.kv-edit:hover { background: var(--info-bg); box-shadow: inset 0 0 0 1px var(--line-strong); }
.kv-edit .missing-chip { cursor: text; }
.fin-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 26px; }
.fin-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.fin-edit-actions { display: inline-flex; gap: 8px; }
.btn.mini { padding: 5px 10px; font-size: 11.5px; border-radius: 7px; text-transform: none; letter-spacing: 0; }
.fin-edit-btn { font-weight: 600; }
.fin-edit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 18px; margin-top: 6px; }
.fin-edit-group { margin-top: 12px; }
.fin-edit-group-head { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--steel); border-bottom: 1px solid var(--line); padding-bottom: 5px; margin-bottom: 8px; }
.fin-block-head { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--steel); margin: 16px 0 6px; }
@media (max-width: 900px){ .fin-edit-grid { grid-template-columns: 1fr; } }
@media (max-width: 760px){ .fin-grid { grid-template-columns: 1fr; } }

/* projected financial model */
.proj-chart { background: var(--slate-bg); border: 1px solid var(--line); border-radius: 10px; padding: 14px 14px 8px; }
.proj-chart svg { display: block; }
.proj-legend { display: flex; gap: 18px; justify-content: center; margin-top: 4px; font-size: 12px; color: var(--muted); }
.proj-legend span { display: inline-flex; align-items: center; gap: 6px; }
.proj-legend i { width: 11px; height: 11px; border-radius: 3px; display: inline-block; }
/* model tabs */
.model-tabs { display: flex; gap: 4px; margin-bottom: 14px; border-bottom: 1px solid var(--line); }
.model-tab { background: transparent; border: 1px solid transparent; border-bottom: none; padding: 8px 14px; font-size: 13px; font-weight: 600; color: var(--muted); cursor: pointer; border-radius: 8px 8px 0 0; }
.model-tab:hover { color: var(--navy); }
.model-tab.active { color: var(--navy); background: #fff; border-color: var(--line); border-bottom: 2px solid var(--navy); margin-bottom: -1px; }
.model-panel[hidden] { display: none; }

/* Excel-style grid */
.xl-wrap { overflow-x: auto; border: 1px solid var(--line-strong); border-radius: 6px; margin-top: 14px; }
.xl-table { width: 100%; border-collapse: collapse; font-size: 12.5px; font-variant-numeric: tabular-nums; background: #fff; }
.xl-table th, .xl-table td { padding: 6px 12px; border: 1px solid #dfe5ee; text-align: right; white-space: nowrap; }
.xl-table th { background: #1f3a5f; color: #fff; font-weight: 700; }
.xl-table th.corner, .xl-table td.rh { text-align: left; }
.xl-table th.corner { background: #16243a; }
.xl-table td.rh { background: #f2f5fa; color: var(--navy); font-weight: 600; }
.xl-table tbody, .xl-table tr { } /* no-op for clarity */
.xl-table tr:nth-child(even) td:not(.rh) { background: #fafbfd; }
.xl-table tr.sub td { font-weight: 700; color: var(--ink); }
.xl-table tr.sub td.rh { color: var(--navy); }
.xl-table tr.pct td:not(.rh) { color: var(--muted); font-style: italic; }
.xl-table tr.total td { border-top: 2px solid var(--navy); }
.xl-table.xl-2 td:last-child, .xl-table.xl-2 th:last-child { min-width: 120px; }
.xl-two { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 760px){ .xl-two { grid-template-columns: 1fr; } }
.xl-col .xl-cap { font-size: 12px; font-weight: 700; color: var(--navy); margin-bottom: 0; text-transform: uppercase; letter-spacing: .4px; }

/* Excel operating model — frozen header + first column, accounting formatting */
.xl-model { max-height: 460px; overflow: auto; }
.xl-model-tbl th { position: sticky; top: 0; z-index: 3; }
.xl-model-tbl td.rh, .xl-model-tbl th.corner { position: sticky; left: 0; z-index: 2; }
.xl-model-tbl th.corner { z-index: 4; }
.xl-model-tbl td:not(.rh), .xl-model-tbl th:not(.corner) { min-width: 78px; }
.xl-model-tbl td.rh { min-width: 168px; }
.xl-model-tbl td.rh.ind { padding-left: 24px; font-weight: 500; color: var(--muted); }
.xl-model-tbl tr.sec td.rh { color: var(--navy); font-weight: 700; }
.xl-model-tbl tr.sub td { font-weight: 700; }
.xl-model-tbl tr.total td { border-top: 2px solid var(--navy); }
.xl-model-tbl tr.grand td { font-weight: 800; border-top: 2px solid var(--navy); border-bottom: 3px double var(--navy); }
.xl-model-tbl tr.grand td.rh { color: var(--navy); }
.xl-model-tbl td.xin { color: #1d4ed8; font-weight: 700; }   /* hard-coded input */
.xl-model-tbl td.neg { color: var(--bad); }                  /* negative result */
.xl-model-tbl td.paren { color: var(--ink); }                /* contra line in () */
.xl-model-tbl tr.pct td:not(.rh) { color: var(--muted); font-style: italic; }
.xl-units { font-size: 11px; color: var(--muted); margin-top: 6px; }
.xl-units .xin-key { color: #1d4ed8; font-weight: 700; }

/* DCF & Rates of Return — CFI-style LBO output */
.dcf-banner {
  background: #ed7d31; color: #fff; font-weight: 700; font-size: 14px;
  padding: 8px 14px; border-radius: 6px 6px 0 0; letter-spacing: .3px;
  margin-top: 14px; border: 1px solid #d96a1f; border-bottom: none;
}
.dcf-model { margin-top: 0; border-radius: 0 0 6px 6px; }
.dcf-tbl th.dcf-ends { background: #16243a; font-style: italic; }
.dcf-tbl td:not(.rh), .dcf-tbl th:not(.corner) { min-width: 72px; }
.dcf-tbl tr.dcf-sec td.rh {
  background: #1f3a5f; color: #fff; font-weight: 700; text-transform: none;
  letter-spacing: .2px; position: static;
}
.dcf-tbl tr.dcf-sec + tr td.rh,
.dcf-tbl tr.dcf-tot td { font-weight: 700; }
.dcf-tbl tr.dcf-tot td { border-top: 2px solid var(--navy); border-bottom: 1px solid var(--navy); }
.dcf-tbl tr.dcf-tot td.rh { color: var(--navy); }
.dcf-tbl tr.dcf-val td { color: #1d4ed8; font-weight: 600; background: #f4f7fc; }
.dcf-tbl tr.dcf-val td.rh { color: var(--navy); background: #eef2f9; }
.dcf-tbl tr.dcf-val td.neg { color: var(--bad); }
.dcf-boxes { display: grid; grid-template-columns: 1fr 1.25fr 1fr; gap: 14px; margin-top: 16px; }
@media (max-width: 620px){ .dcf-boxes { grid-template-columns: 1fr; } }
.dcf-box { border: 1px solid var(--line-strong); border-radius: 8px; overflow: hidden; }
.dcf-box-cap { background: #f2f5fa; color: var(--navy); font-weight: 700; font-size: 12.5px; padding: 8px 12px; border-bottom: 1px solid var(--line-strong); }
.dcf-box-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.dcf-box-tbl td, .dcf-box-tbl th { padding: 6px 12px; border-bottom: 1px solid #eef1f6; text-align: left; }
.dcf-box-tbl th { color: var(--muted); font-weight: 600; font-size: 11px; text-transform: uppercase; letter-spacing: .3px; }
.dcf-box-tbl td.dcf-box-val, .dcf-box-tbl th.dcf-box-val { text-align: right; font-weight: 700; color: var(--navy); }
.dcf-box-tbl tr.dcf-box-tot td { border-top: 2px solid var(--navy); border-bottom: none; font-weight: 800; }

/* LBO Mini-Model (Wall Street Prep style) */
.mm-grid { display: grid; grid-template-columns: 360px 1fr; gap: 28px; margin-top: 16px; align-items: start; }
@media (max-width: 900px){ .mm-grid { grid-template-columns: 1fr; } }
.mm-cap { background: #dbe4f0; color: var(--navy); font-weight: 700; font-size: 13px; padding: 6px 10px; margin: 18px 0 0; }
.mm-cap:first-child { margin-top: 0; }
.mm-cap .mm-sub { font-weight: 500; color: var(--muted); font-size: 11px; }
.mm-su { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }
.mm-su td { padding: 4px 10px; border-bottom: 1px solid #eef1f6; }
.mm-su td.mm-num { text-align: right; font-weight: 500; }
.mm-su tr.mm-tot td { border-top: 1.5px solid var(--navy); border-bottom: 1.5px solid var(--navy); font-weight: 800; color: var(--navy); }
/* returns sensitivity */
.mm-sens { border-collapse: collapse; font-size: 12.5px; font-variant-numeric: tabular-nums; margin-top: 6px; }
.mm-sens th, .mm-sens td { padding: 5px 12px; text-align: center; border: 1px solid #d7deea; }
.mm-sens th { background: #f2f5fa; color: var(--navy); font-weight: 700; }
.mm-sens .mm-sx { border: none; background: none; }
.mm-sens .mm-sh-span { background: var(--navy); color: #fff; font-weight: 700; border-color: var(--navy); }
.mm-sens td.mm-center { background: #fde9a9; font-weight: 800; color: var(--navy); }
.mm-rotate { font-size: 11px; color: var(--muted); font-weight: 600; margin-top: 4px; }
/* projected financials */
.mm-fin-wrap { overflow-x: auto; }
.mm-fin { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }
.mm-fin th, .mm-fin td { padding: 4px 10px; text-align: right; white-space: nowrap; }
.mm-fin th.mm-rh, .mm-fin td.mm-rh { text-align: left; font-weight: 600; color: var(--navy); }
.mm-fin thead, .mm-fin th { }
.mm-fin tr:first-child th { border-bottom: 1.5px solid var(--navy); color: var(--navy); background: none; }
.mm-fin th.mm-actual { color: var(--ink); }
.mm-fin tr.mm-pct td:not(.mm-rh) { font-style: italic; color: var(--muted); font-size: 12px; }
.mm-fin tr.mm-pct td.mm-rh { font-style: italic; color: var(--muted); font-weight: 500; }
.mm-fin td.mm-ind, .mm-fin td.mm-rh.mm-ind { padding-left: 22px; }
.mm-fin tr.mm-bold td { font-weight: 800; }
.mm-fin tr.mm-ebitda td { background: #f1f3f6; }
.mm-fin tr.mm-subhead td { font-style: italic; font-weight: 700; color: var(--navy); border-bottom: 1px solid #c9d4e3; padding-top: 8px; }
.mm-fin tr.mm-spacer td { padding: 3px 0; border: none; }
.mm-fin td.mm-neg { color: var(--bad); }

/* Valuation & diligence metrics table */
.metrics-table th.corner, .metrics-table td.rh { min-width: 150px; }
.metrics-table td { text-align: left; vertical-align: top; white-space: normal; }
.metrics-table td.m-val { text-align: right; font-weight: 800; color: var(--navy); white-space: nowrap; font-variant-numeric: tabular-nums; }
.metrics-table td.m-formula { color: var(--ink); font-size: 12px; }
.metrics-table .m-sub { color: var(--muted); font-size: 11px; margin-top: 3px; }
.metrics-table .m-miss { color: var(--bad); font-size: 11px; margin-top: 3px; font-weight: 600; }
.metrics-table tr.m-row-miss td.rh, .metrics-table tr.m-row-miss td.m-val { background: var(--bad-bg); }
.m-stat { display: inline-block; border-radius: 6px; padding: 1px 7px; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px; white-space: nowrap; }
.m-stat.ok { background: var(--good-bg); color: var(--good); border: 1px solid var(--good-line); }
.m-stat.der { background: var(--info-bg); color: var(--steel); border: 1px solid #c3d6ec; }
.m-stat.asm { background: #fff6e6; color: #9a6b00; border: 1px solid #f0d9a8; }
.m-stat.miss { background: var(--bad-bg); color: var(--bad); border: 1px solid var(--bad-line); }

/* Data completeness / gaps panel */
.gaps-panel { margin-top: 14px; border: 1px solid var(--warn-line); background: var(--warn-bg); border-radius: 10px; padding: 12px 14px; }
.gaps-panel.ok { border-color: var(--good-line); background: var(--good-bg); }
.gaps-head { font-weight: 700; color: var(--warn); font-size: 13px; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.gaps-head.good { color: var(--good); }
.gaps-list { margin: 8px 0 0; padding-left: 0; list-style: none; }
.gaps-list li { margin-bottom: 5px; font-size: 12.5px; color: var(--ink); display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.gaps-list .gap-text { flex: 1; }
.btn.gap-add, .btn.gap-add-all { flex: none; border: 1px solid var(--warn-line); background: #fff; color: var(--warn); font-weight: 700; white-space: nowrap; }
.btn.gap-add:hover, .btn.gap-add-all:hover { background: var(--warn); color: #fff; border-color: var(--warn); }

/* Key-data completeness meter (deal snapshot panel) */
.comp-meter { margin: 0 0 14px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--slate-bg); }
.comp-meter.actionable { cursor: pointer; transition: border-color .12s, box-shadow .12s; }
.comp-meter.actionable:hover { border-color: var(--navy); box-shadow: 0 0 0 2px rgba(15,36,64,.10); }
.comp-meter-row { display: flex; align-items: baseline; justify-content: space-between; }
.comp-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); }
.comp-count { font-size: 14px; font-weight: 800; color: var(--navy); font-variant-numeric: tabular-nums; }
.comp-bar { margin: 7px 0 6px; height: 7px; border-radius: 999px; background: var(--line-strong); overflow: hidden; }
.comp-fill { height: 100%; border-radius: 999px; transition: width .3s ease; }
.comp-fill.good { background: var(--good); }
.comp-fill.warn { background: var(--warn); }
.comp-fill.bad { background: var(--bad); }
.comp-missing { font-size: 11.5px; color: var(--muted); line-height: 1.4; }
.comp-missing.good { color: var(--good); font-weight: 600; }
.comp-cta { color: var(--navy); font-weight: 700; white-space: nowrap; }

/* Flash highlight when jumping to a section */
@keyframes flashAttn { 0% { box-shadow: 0 0 0 0 rgba(15,36,64,0); } 15% { box-shadow: 0 0 0 3px rgba(15,36,64,.35); } 100% { box-shadow: 0 0 0 0 rgba(15,36,64,0); } }
.section.flash-attn { animation: flashAttn 1.6s ease; border-radius: var(--radius); }

/* valuation cards */
.val-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
@media (max-width: 900px){ .val-grid { grid-template-columns: repeat(2,1fr); } }
.val-card { background: var(--slate-bg); border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; }
.val-card .k { font-size: 11px; color: var(--muted); font-weight: 600; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.val-card .v { font-size: 20px; font-weight: 800; color: var(--navy); margin-top: 3px; font-variant-numeric: tabular-nums; }
/* result box is click-to-override */
.val-box-cell { cursor: pointer; border-radius: 6px; margin: 1px -4px 0; padding: 0 4px; transition: background .12s; }
.val-box-cell:hover { background: rgba(30,39,97,.06); box-shadow: inset 0 0 0 1px var(--line); }
.val-card.overridden { border-color: #f0d9a8; background: #fffdf7; }
.ov-chip { display: inline-flex; align-items: center; gap: 5px; background: #fff6e6; color: #9a6b00; border: 1px solid #f0d9a8; border-radius: 6px; padding: 0 5px; font-size: 9.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .3px; }
.ov-reset { cursor: pointer; font-weight: 800; line-height: 1; padding: 0 1px; border-radius: 3px; }
.ov-reset:hover { background: #f0d9a8; color: #5e4100; }
/* always-visible live LBO assumption inputs */
.val-assum-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px 16px; margin: 0 0 14px; }
.val-assum-grid .field { display: flex; flex-direction: column; gap: 4px; }
.val-assum-grid label { font-size: 11px; color: var(--muted); font-weight: 600; }
.val-assum-grid input { padding: 7px 9px; border: 1px solid var(--line); border-radius: 8px; font: inherit; font-size: 13px; font-variant-numeric: tabular-nums; background: #fff; }
.val-assum-grid input:focus { outline: none; border-color: var(--steel); box-shadow: 0 0 0 2px rgba(30,39,97,.1); }
@media (max-width: 900px){ .val-assum-grid { grid-template-columns: repeat(2,1fr); } }

/* thesis / risks lists */
.bullets { margin: 0; padding-left: 20px; }
.bullets li { margin-bottom: 8px; }
.bullets.thesis li::marker { color: var(--good); }
.bullets.risks li::marker { color: var(--warn); }

/* red flags */
.flag { border: 1px solid var(--line); border-left: 4px solid var(--muted); border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; }
.flag.High { border-left-color: var(--bad); }
.flag.Medium { border-left-color: var(--warn); }
.flag.Low { border-left-color: var(--muted-2); }
.flag-head { display: flex; align-items: center; gap: 10px; margin-bottom: 5px; }
.flag-head .title { font-weight: 700; color: var(--navy); }
.sev { font-size: 10.5px; font-weight: 800; padding: 2px 8px; border-radius: 999px; text-transform: uppercase; letter-spacing: .3px; }
.sev.High { background: var(--bad-bg); color: var(--bad); }
.sev.Medium { background: var(--warn-bg); color: var(--warn); }
.sev.Low { background: var(--slate-bg); color: var(--muted); }
.flag .explain { font-size: 13px; margin: 4px 0; }
.flag .follow { font-size: 12.5px; color: var(--steel); }
.flag .follow b { color: var(--muted); font-weight: 600; }

/* follow-up question groups */
.fu-group { margin-bottom: 14px; }
.fu-group h4 { font-size: 13px; color: var(--navy); margin: 0 0 6px; }
.fu-group ul { margin: 0; padding-left: 20px; }
.fu-group li { margin-bottom: 5px; font-size: 13px; }

/* score breakdown */
.score-hero { display: flex; align-items: center; gap: 18px; margin-bottom: 16px; }
.score-ring { flex: 0 0 auto; }
.score-hero .meta .big { font-size: 34px; font-weight: 800; color: var(--navy); line-height: 1; }
.score-hero .meta .lbl { font-size: 12px; color: var(--muted); }
.score-cat { margin-bottom: 11px; }
.score-cat .row { display: flex; justify-content: space-between; font-size: 12.5px; margin-bottom: 4px; }
.score-cat .row .name { font-weight: 600; }
.score-cat .row .val { font-variant-numeric: tabular-nums; color: var(--muted); }
.bar { height: 8px; background: var(--slate-bg); border-radius: 999px; overflow: hidden; }
.bar > span { display: block; height: 100%; background: var(--navy); border-radius: 999px; }
.bar > span.good { background: var(--good); }
.bar > span.warn { background: var(--warn); }
.bar > span.bad { background: var(--bad); }
.cat-note { font-size: 11.5px; color: var(--muted); margin-top: 3px; }

/* recommendation banner */
.rec-banner { border-radius: 12px; padding: 16px 18px; margin-bottom: 20px; border: 1px solid; }
.rec-banner.good { background: var(--good-bg); border-color: var(--good-line); }
.rec-banner.warn { background: var(--warn-bg); border-color: var(--warn-line); }
.rec-banner.bad { background: var(--bad-bg); border-color: var(--bad-line); }
.rec-banner .label { font-size: 18px; font-weight: 800; }
.rec-banner.good .label { color: var(--good); }
.rec-banner.warn .label { color: var(--warn); }
.rec-banner.bad .label { color: var(--bad); }
.rec-banner .note { font-size: 13px; color: var(--ink); margin-top: 6px; }

/* verdict card — leads the analysis page: answer first, then the drivers */
.verdict-card { border-radius: 14px; padding: 18px 20px; margin-bottom: 22px; border: 1px solid; }
.verdict-card.good { background: var(--good-bg); border-color: var(--good-line); }
.verdict-card.warn { background: var(--warn-bg); border-color: var(--warn-line); }
.verdict-card.bad { background: var(--bad-bg); border-color: var(--bad-line); }
.verdict-card .vc-head { display: flex; align-items: center; gap: 18px; }
.verdict-card .vc-score { flex: 0 0 auto; }
.verdict-card .vc-score svg { width: 84px; height: 84px; }
.verdict-card .vc-headline { flex: 1; min-width: 0; }
.verdict-card .vc-kicker { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); }
.verdict-card .vc-label { font-size: 24px; font-weight: 800; line-height: 1.1; margin-top: 2px; }
.verdict-card.good .vc-label { color: var(--good); }
.verdict-card.warn .vc-label { color: var(--warn); }
.verdict-card.bad .vc-label { color: var(--bad); }
.verdict-card .vc-sub { margin-top: 7px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.verdict-card .vc-band { font-size: 11.5px; color: var(--muted); font-weight: 600; }
.verdict-card .vc-reasons { margin-top: 14px; background: rgba(255,255,255,.55); border-radius: 10px; padding: 12px 14px; }
.verdict-card .vc-reasons-title { font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }
.verdict-card .vc-reasons ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.verdict-card .vc-reason { display: flex; align-items: baseline; gap: 8px; font-size: 13px; color: var(--ink); }
.verdict-card .vc-ico { flex: 0 0 auto; font-size: 11px; line-height: 1.5; }
.verdict-card .vc-reason.up .vc-ico { color: var(--good); }
.verdict-card .vc-reason.down .vc-ico { color: var(--bad); }
.verdict-card .vc-txt { min-width: 0; }
.verdict-card .vc-note { margin-top: 14px; font-size: 13px; color: var(--ink); line-height: 1.5; }

/* "demote the formulas" — value-first metrics + show-math toggle */
.metrics-table td.m-val.big { font-size: 15px; }
.metrics-table td.m-val .m-val-sub { font-weight: 500; font-size: 11.5px; color: var(--muted); margin-top: 3px; text-align: right; white-space: normal; }
.m-info { display: inline-block; margin-left: 5px; color: var(--muted); cursor: help; font-size: 12px; }
.m-info:hover { color: var(--navy); }
.math-toggle { font-weight: 600; }

/* quick actions */
.actions-panel .section-title { margin-top: 0; }
.confidence-tag { display:inline-block; font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 999px; }
.confidence-tag.High { background: var(--good-bg); color: var(--good); }
.confidence-tag.Medium { background: var(--warn-bg); color: var(--warn); }
.confidence-tag.Low { background: var(--bad-bg); color: var(--bad); }

.editable { cursor: text; border-bottom: 1px dashed transparent; }
.editable:hover { border-bottom-color: var(--steel); }

/* ---------- Compare ---------- */
.compare-picker { display: flex; flex-wrap: wrap; gap: 18px 26px; }
.pick-group { display: flex; flex-direction: column; gap: 8px; }
.pick-group-label { font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted); display: flex; align-items: center; gap: 6px; }
.pick-group-count { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--line); color: var(--muted); font-size: 10.5px; font-weight: 700; letter-spacing: 0; }
.pick-group-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.pick-chip { border: 1px solid var(--line-strong); background: #fff; border-radius: 999px; padding: 7px 13px; font-size: 12.5px; font-weight: 600; color: var(--muted); cursor: pointer; }
.pick-chip.on { background: var(--navy); color: #fff; border-color: var(--navy); }
.compare-table th, .compare-table td { text-align: left; }
.compare-table td.metric { color: var(--muted); font-weight: 600; white-space: nowrap; }
.compare-table .num { text-align: right; }

/* enriched compare view: cards + charts + heatmap table */
.cmp-wrap { display: flex; flex-direction: column; gap: 16px; }

.cmp-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; }
.cmp-card { background: var(--panel); border: 1px solid var(--line); border-top: 4px solid var(--navy); border-radius: 12px; padding: 14px; text-align: center; box-shadow: 0 1px 3px rgba(15, 36, 64, .06); }
.cmp-card-name { font-weight: 800; font-size: 15px; line-height: 1.2; }
.cmp-card-ind { font-size: 11.5px; color: var(--muted); margin-top: 3px; }
.cmp-card-ring { display: flex; justify-content: center; }
.cmp-card-ring svg { margin: 2px auto; }
.cmp-card-rec { margin: 2px 0 10px; }
.cmp-card-fin { display: flex; justify-content: space-between; gap: 6px; border-top: 1px solid var(--line); padding-top: 10px; }
.cmp-card-fin > div { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.cmp-card-fin span { font-size: 9.5px; color: var(--muted); text-transform: uppercase; letter-spacing: .3px; }
.cmp-card-fin b { font-size: 13px; color: var(--ink); font-variant-numeric: tabular-nums; }

.cmp-charts { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.cmp-chart { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; box-shadow: 0 1px 3px rgba(15, 36, 64, .06); }
.cmp-chart-title { font-weight: 800; font-size: 14px; margin-bottom: 12px; color: var(--ink); }
.cmp-bar-group { margin-bottom: 14px; }
.cmp-bar-group:last-child { margin-bottom: 0; }
.cmp-bar-glabel { font-size: 11px; font-weight: 700; color: var(--muted); margin-bottom: 5px; text-transform: uppercase; letter-spacing: .3px; }
.cmp-bar-row { display: flex; align-items: center; gap: 8px; margin: 4px 0; }
.cmp-bar-name { flex: 0 0 92px; font-size: 11px; color: #334155; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cmp-bar-track { flex: 1; background: #eef2f7; border-radius: 5px; height: 14px; overflow: hidden; }
.cmp-bar-fill { display: block; height: 100%; border-radius: 5px; min-width: 2px; transition: width .3s ease; }
.cmp-bar-val { flex: 0 0 66px; text-align: right; font-size: 11.5px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--ink); }

.cmp-table-panel .cmp-chart-title { margin-bottom: 10px; }
.cmp-legend-note { font-weight: 500; font-size: 11px; color: var(--muted); margin-left: 6px; }
table.cmp-heat th { font-weight: 800; }
table.cmp-heat th.cmp-th-metric { color: var(--muted); }
table.cmp-heat td.cmp-metric { text-align: left; font-weight: 600; white-space: nowrap; color: var(--ink); }
table.cmp-heat td.cmp-val { text-align: center; font-variant-numeric: tabular-nums; border-radius: 4px; }
table.cmp-heat td.cmp-val.best { font-weight: 800; }
table.cmp-heat td.cmp-val.none { color: var(--muted-2); }
table.cmp-heat tr.cmp-sec td { background: #f1f5fb; font-weight: 800; font-size: 10.5px; text-transform: uppercase; letter-spacing: .4px; color: var(--navy); padding: 8px 10px; }
.cmp-star { color: #15803d; font-size: 10px; }

@media (max-width: 900px) { .cmp-charts { grid-template-columns: 1fr; } }

/* ---------- Settings ---------- */
.settings-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
@media (max-width: 900px){ .settings-grid { grid-template-columns: 1fr; } }
.weight-row { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.weight-row label { flex: 1; font-size: 13px; font-weight: 600; }
.weight-row input { width: 80px; }
.weight-total { font-size: 13px; font-weight: 700; margin-top: 8px; }
.weight-total.bad { color: var(--bad); }
.weight-total.good { color: var(--good); }
.tag-list { display: flex; flex-wrap: wrap; gap: 6px; }
.tag { background: var(--slate-bg); border: 1px solid var(--line); border-radius: 7px; padding: 4px 9px; font-size: 12px; }

/* ---------- Modal ---------- */
.modal-backdrop { position: fixed; inset: 0; background: rgba(10,26,48,.55); display: flex; align-items: flex-start; justify-content: center; padding: 40px 16px; overflow-y: auto; z-index: 50; }
.modal { background: var(--panel); border-radius: 14px; width: 100%; max-width: 560px; box-shadow: var(--shadow-lg); }
.modal-head { display: flex; align-items: center; gap: 12px; padding: 18px 22px; border-bottom: 1px solid var(--line); }
.modal-head h3 { margin: 0; }
.modal-head .x { margin-left: auto; background: none; border: none; font-size: 24px; color: var(--muted); cursor: pointer; line-height: 1; }
.modal-body { padding: 18px 22px; }
.modal-foot { padding: 14px 22px; border-top: 1px solid var(--line); display: flex; gap: 8px; justify-content: flex-end; }

/* integrations modal */
.integ-list { display: flex; flex-direction: column; gap: 8px; }
.integ-row { display: flex; align-items: center; gap: 12px; border: 1px solid var(--line); border-radius: 10px; padding: 11px 13px; }
.integ-ico { font-size: 18px; width: 26px; text-align: center; flex-shrink: 0; }
.integ-meta { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.integ-name { font-size: 13.5px; font-weight: 700; color: var(--ink); }
.integ-cat { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--muted-2); background: var(--slate-bg); border-radius: 5px; padding: 1px 6px; margin-left: 4px; }
.integ-desc { font-size: 12px; color: var(--muted); }
.integ-btn { flex-shrink: 0; border: 1px solid var(--line-strong); background: #fff; color: var(--ink); border-radius: 8px; padding: 6px 13px; font-size: 12px; font-weight: 700; cursor: pointer; }
.integ-btn:hover { border-color: var(--steel); }
.integ-btn.on { background: var(--good-bg); border-color: transparent; color: var(--good); }

/* clickable deal names in Pilot & Outcomes */
.val-deal-link { cursor: pointer; color: var(--steel); font-weight: 700; }
.val-deal-link:hover { text-decoration: underline; }
.req-draft-text { width: 100%; box-sizing: border-box; font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace; font-size: 12.5px; line-height: 1.5; color: var(--ink); border: 1px solid var(--line-strong); border-radius: 8px; padding: 12px 14px; background: #fcfcfd; resize: vertical; }
.req-draft-text:focus { outline: none; border-color: var(--steel); box-shadow: 0 0 0 3px rgba(47,91,135,.12); }
.modal.modal-sm { max-width: 460px; }

/* Push to Pilot & Outcomes — lifecycle bar at the top of a deal */
.outcome-bar { display: flex; align-items: center; gap: 16px; justify-content: space-between; flex-wrap: wrap; padding: 12px 16px; margin-bottom: 14px; border: 1px solid var(--line-strong); border-radius: 12px; background: #fbfcfe; }
.outcome-bar.pushed { background: #f3f6fa; border-color: var(--line); }
.outcome-bar .ob-state { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.outcome-bar .ob-lead { font-weight: 700; font-size: 13.5px; color: var(--ink); }
.outcome-bar .ob-note { font-size: 12px; color: var(--muted); }
.outcome-bar .ob-badge { display: inline-block; font-weight: 700; font-size: 12.5px; color: #166534; }
.outcome-bar .btn { flex: none; }

/* Purchased / pushed rows on the dashboard read as muted (greyed) */
.outcome-chip { display: inline-block; background: #eef2f7; color: var(--muted-2); border: 1px solid var(--line); border-radius: 6px; padding: 1px 7px; font-size: 11px; font-weight: 700; }
tbody tr.row-clickable.pushed-outcome { background: #f4f6f9; color: var(--muted); }
tbody tr.row-clickable.pushed-outcome .company-cell { color: var(--muted-2); }
tbody tr.row-clickable.pushed-outcome:hover { background: #eef2f7; }

/* ---------- Toast ---------- */
.toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); background: var(--navy); color: #fff; padding: 12px 20px; border-radius: 10px; font-size: 13px; box-shadow: var(--shadow-lg); z-index: 100; opacity: 0; transition: opacity .2s, transform .2s; pointer-events: none; }
.toast.show { opacity: 1; transform: translateX(-50%) translateY(-4px); }

/* status history timeline */
.timeline { list-style: none; margin: 0; padding: 0; }
.timeline li { display: flex; gap: 10px; padding: 7px 0; border-bottom: 1px dashed var(--line); font-size: 12.5px; }
.timeline li:last-child { border-bottom: none; }
.timeline .ts { color: var(--muted); white-space: nowrap; font-variant-numeric: tabular-nums; flex: 0 0 auto; }

/* ---- diligence request tracker ---------------------------------------- */
.dil-empty { text-align: center; padding: 22px 12px; border: 1px dashed var(--line-strong); border-radius: var(--radius); background: var(--slate-bg); }
.dil-empty p { margin: 0 0 12px; }

/* summary: progress bar + stat tiles */
.dil-summary { display: flex; gap: 18px; align-items: center; flex-wrap: wrap; margin: 6px 0 14px; }
.dil-prog { flex: 1 1 240px; min-width: 220px; }
.dil-prog-top { display: flex; justify-content: space-between; font-size: 12.5px; color: var(--muted); margin-bottom: 5px; }
.dil-pct { font-weight: 800; color: var(--navy); font-variant-numeric: tabular-nums; }
.dil-bar { height: 9px; background: #e9eef5; border-radius: 6px; overflow: hidden; }
.dil-bar > span { display: block; height: 100%; background: var(--good); border-radius: 6px; transition: width .3s ease; }
.dil-stats { display: flex; gap: 8px; flex-wrap: wrap; }
.dil-stat { min-width: 60px; text-align: center; padding: 7px 11px; border-radius: 9px; border: 1px solid var(--line); background: #fff; }
.dil-stat .n { font-size: 18px; font-weight: 800; line-height: 1; font-variant-numeric: tabular-nums; color: var(--ink); }
.dil-stat .l { font-size: 10.5px; text-transform: uppercase; letter-spacing: .4px; color: var(--muted); margin-top: 3px; }
.dil-stat.received { background: var(--good-bg); border-color: var(--good-line); } .dil-stat.received .n { color: var(--good); }
.dil-stat.pending  { background: var(--warn-bg); border-color: var(--warn-line); } .dil-stat.pending .n { color: var(--warn); }
.dil-stat.flagged  { background: var(--bad-bg);  border-color: var(--bad-line); }  .dil-stat.flagged .n { color: var(--bad); }
.dil-stat.overdue  { background: var(--bad-bg);  border-color: var(--bad-line); }  .dil-stat.overdue .n { color: var(--bad); }

/* filters */
.dil-filters { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 0 0 12px; }
.dil-flabel { font-size: 11px; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); font-weight: 700; }
.dil-fchip { font-size: 12px; padding: 4px 11px; border-radius: 999px; border: 1px solid var(--line-strong); background: #fff; color: var(--muted); cursor: pointer; user-select: none; }
.dil-fchip:hover { border-color: var(--steel); color: var(--steel); }
.dil-fchip.on { background: var(--navy); border-color: var(--navy); color: #fff; }

/* table */
.dil-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.dil-table th { text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: .5px; color: var(--muted); font-weight: 700; padding: 6px 10px; border-bottom: 2px solid var(--line-strong); background: var(--slate-bg); }
.dil-table .dil-h-st { width: 96px; } .dil-table .dil-h-own { width: 150px; } .dil-table .dil-h-due { width: 140px; } .dil-table .dil-h-prio { width: 84px; }
.dil-table td { padding: 8px 10px; border-bottom: 1px solid var(--line); vertical-align: middle; }
.dil-grouphdr td { background: #eef2f7; font-weight: 800; color: var(--navy); font-size: 11.5px; text-transform: uppercase; letter-spacing: .5px; padding: 7px 10px; border-bottom: 1px solid var(--line-strong); }
.dil-gcount { display: inline-block; min-width: 18px; text-align: center; background: var(--navy); color: #fff; border-radius: 999px; font-size: 11px; padding: 0 6px; margin-left: 4px; }
.dil-row:hover { background: #fafcff; }

/* status chips (clickable) */
.dil-chip { display: inline-block; min-width: 70px; text-align: center; padding: 4px 8px; border-radius: 7px; font-size: 11.5px; font-weight: 700; cursor: pointer; user-select: none; border: 1px solid transparent; }
.dil-st-Open     { background: #eef2f7; color: #475569; border-color: #d8e0ea; }
.dil-st-Pending  { background: var(--warn-bg); color: var(--warn); border-color: var(--warn-line); }
.dil-st-Received { background: var(--good-bg); color: var(--good); border-color: var(--good-line); }
.dil-st-Flagged  { background: var(--bad-bg);  color: var(--bad);  border-color: var(--bad-line); }
.dil-chip:hover { filter: brightness(.97); box-shadow: 0 0 0 2px rgba(15,36,64,.08); }

/* request title + note */
.dil-title { font-weight: 600; color: var(--ink); cursor: text; border-radius: 4px; padding: 1px 3px; margin: -1px -3px; }
.dil-title:hover { background: #eef4ff; }
.dil-note { font-size: 11.5px; color: var(--muted); cursor: text; margin-top: 2px; border-radius: 4px; padding: 1px 3px; }
.dil-note:hover { background: #eef4ff; }
.dil-note.add { color: var(--muted-2); font-style: italic; opacity: .85; }

/* owner select + due date */
.dil-sel { width: 100%; border: 1px solid var(--line-strong); border-radius: 7px; padding: 5px 7px; font-size: 12px; background: #fff; color: var(--ink); }
.dil-date { border: 1px solid var(--line-strong); border-radius: 7px; padding: 4px 7px; font-size: 12px; background: #fff; color: var(--ink); font-variant-numeric: tabular-nums; }
.dil-date.overdue { border-color: var(--bad-line); background: var(--bad-bg); color: var(--bad); font-weight: 600; }

/* priority chip (clickable) */
.dil-prio { display: inline-block; min-width: 58px; text-align: center; padding: 3px 8px; border-radius: 999px; font-size: 11px; font-weight: 700; cursor: pointer; user-select: none; border: 1px solid var(--line-strong); background: #fff; color: var(--muted); }
.dil-prio-High   { background: var(--bad-bg);  color: var(--bad);  border-color: var(--bad-line); }
.dil-prio-Normal { background: var(--info-bg); color: var(--steel); border-color: #cfe0f1; }
.dil-prio-Low    { background: #f1f5f9; color: var(--muted); border-color: var(--line-strong); }

/* delete */
.dil-xcell { text-align: center; }
.dil-x { border: none; background: none; color: var(--muted-2); font-size: 18px; line-height: 1; cursor: pointer; padding: 0 4px; border-radius: 6px; }
.dil-x:hover { color: var(--bad); background: var(--bad-bg); }

.dil-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 12px; }
.dil-doc { font-size: 11.5px; color: var(--steel); margin-top: 3px; }

/* ---- virtual data room ------------------------------------------------- */
.dr-summary { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 12px; }
.dr-pill { font-size: 12px; padding: 4px 11px; border-radius: 999px; border: 1px solid var(--line-strong); background: #fff; color: var(--muted); font-weight: 600; }
.dr-pill.linked { background: var(--good-bg); border-color: var(--good-line); color: var(--good); }
.dr-table .dr-h-type { width: 64px; } .dr-table .dr-h-cat { width: 130px; } .dr-table .dr-h-link { width: 220px; }
.dr-row:hover { background: #fafcff; }
.dr-typecell { vertical-align: top; padding-top: 11px; }
.dr-typecell .ft { display: inline-block; font-size: 10px; font-weight: 800; letter-spacing: .4px; color: var(--navy); background: var(--slate-bg); border: 1px solid var(--line-strong); border-radius: 5px; padding: 2px 6px; }
.dr-namecell { vertical-align: top; }
.dr-name { font-weight: 600; color: var(--ink); cursor: text; border-radius: 4px; padding: 1px 3px; margin: -1px -3px; overflow-wrap: anywhere; }
.dr-name:hover { background: #eef4ff; }
.dr-meta { font-size: 11px; color: var(--muted); margin-top: 2px; font-variant-numeric: tabular-nums; }
.dr-linked { font-size: 11.5px; color: var(--good); margin-top: 3px; font-weight: 600; }
.dr-sel { width: 100%; border: 1px solid var(--line-strong); border-radius: 7px; padding: 5px 7px; font-size: 12px; background: #fff; color: var(--ink); }
.dr-catcell, .dr-linkcell { vertical-align: top; }

/* ===== Assessment template (Admin Settings) ===== */
.template-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 6px; }
.template-item { display: flex; gap: 12px; background: var(--bg); border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; }
.template-item .ti-n { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%; background: var(--navy); color: #fff; font-weight: 800; font-size: 13px; display: flex; align-items: center; justify-content: center; }
.template-item .ti-h { font-weight: 700; font-size: 13.5px; color: var(--ink); }
.template-item .ti-d { font-size: 12.5px; color: var(--muted); margin-top: 3px; line-height: 1.45; }

/* ===== Validation tab (pilot / outcomes / velocity) ===== */
.val-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 4px 0 18px; }
.val-stat { background: var(--bg); border: 1px solid var(--line); border-left: 4px solid var(--navy); border-radius: 10px; padding: 13px 15px; }
.val-stat.good { border-left-color: var(--good); }
.val-stat.warn { border-left-color: var(--warn); }
.val-stat .vs-label { font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.val-stat .vs-big { font-size: 28px; font-weight: 800; color: var(--navy); line-height: 1.1; margin-top: 4px; }
.val-stat .vs-sub { font-size: 11.5px; color: var(--muted); margin-top: 2px; }
.val-tabbar { display: flex; gap: 6px; border-bottom: 2px solid var(--line); margin-bottom: 16px; }
.val-tab { background: none; border: none; padding: 8px 14px; font-size: 13px; font-weight: 600; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; }
.val-tab:hover { color: var(--ink); }
.val-tab.active { color: var(--navy); border-bottom-color: var(--navy); }
.val-table td.rh { font-weight: 600; color: var(--ink); }
.val-badge { display: inline-block; font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 999px; }
.val-badge.ok { background: var(--good-bg); color: var(--good); }
.val-badge.diff, .val-badge.bad { background: var(--bad-bg); color: var(--bad); }
.val-badge.open { background: var(--warn-bg); color: var(--warn); }
.val-outcomes { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.val-oc { border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; background: #fff; }
.val-oc.miss { border-color: var(--bad-line); background: var(--bad-bg); }
.val-oc .oc-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.val-oc .oc-name { font-weight: 700; color: var(--ink); }
.val-oc .oc-line { font-size: 12.5px; color: var(--muted); margin-top: 3px; }
.val-oc .oc-line.oc-result { color: var(--ink); }
.val-oc .oc-k { font-weight: 700; color: var(--ink); }
.val-velnote, .val-open { font-size: 13px; color: var(--ink); margin-top: 14px; line-height: 1.5; background: var(--bg); border: 1px solid var(--line); border-radius: 10px; padding: 13px 15px; }

/* ===== Deep Diligence (data-room Q&A + red-flag scan) ===== */
.qa-wrap { margin-top: 6px; }
.qa-cov { display: flex; align-items: center; gap: 10px; font-size: 12.5px; font-weight: 600; color: var(--ink); background: var(--bg); border: 1px solid var(--line); border-left: 4px solid var(--navy); border-radius: 9px; padding: 9px 13px; margin-bottom: 12px; }
.qa-cov.good { border-left-color: var(--good); }
.qa-cov.warn { border-left-color: var(--warn); }
.qa-cov.bad { border-left-color: var(--bad); }
.qa-cov b { font-size: 16px; color: var(--navy); }
.qa-cov .qa-cov-detail { color: var(--muted); font-weight: 500; margin-left: auto; }
.qa-ask { display: flex; gap: 8px; margin-bottom: 10px; }
.qa-ask input { flex: 1; border: 1px solid var(--line-strong, var(--line)); border-radius: 8px; padding: 9px 12px; font-size: 13px; color: var(--ink); }
.qa-presets { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 14px; }
.qa-q { text-align: left; background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 7px 11px; font-size: 12px; color: var(--ink); cursor: pointer; max-width: 100%; }
.qa-q:hover { border-color: var(--navy); }
.qa-q.active { background: var(--navy); color: #fff; border-color: var(--navy); }
.qa-answer { border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px; background: #fff; }
.qa-a-head { display: flex; align-items: center; gap: 9px; margin-bottom: 8px; }
.qa-q-text { font-weight: 700; color: var(--ink); font-size: 13.5px; }
.qa-a-body { font-size: 13px; color: var(--ink); line-height: 1.55; }
.qa-a-src { font-size: 11.5px; color: var(--muted); margin-top: 9px; padding-top: 8px; border-top: 1px dashed var(--line); }
.qa-a-src.none { color: var(--bad); }
.qa-chip { display: inline-block; font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 999px; text-transform: uppercase; letter-spacing: .3px; }
.qa-chip.found { background: var(--good-bg); color: var(--good); }
.qa-chip.partial { background: var(--warn-bg); color: var(--warn); }
.qa-chip.gap { background: var(--bad-bg); color: var(--bad); }
.qa-chip.ai { background: #eaf0fb; color: #2b4f86; }

/* free-form AI answer */
.qa-presets-label { font-size: 11.5px; color: var(--muted); margin: 12px 0 6px; font-weight: 600; }
.qa-answer.ai { border-color: #cdd9ef; background: #f7faff; border-left: 3px solid #2b4f86; }
.qa-a-src.ai { color: #5b6b86; }
.qa-answer.ai.pending .qa-a-body { color: var(--muted); display: flex; align-items: center; gap: 9px; }
.qa-spin {
  width: 14px; height: 14px; flex: 0 0 auto; border-radius: 50%;
  border: 2px solid #c7d4ec; border-top-color: #2b4f86;
  display: inline-block; animation: qa-spin 0.7s linear infinite;
}
@keyframes qa-spin { to { transform: rotate(360deg); } }

/* web-research mode: toggle + external (unverified) answer treatment */
.qa-mode { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; margin: 9px 0 2px; }
.qa-web-toggle { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; color: var(--ink, #1f2937); cursor: pointer; white-space: nowrap; }
.qa-web-toggle input { width: 14px; height: 14px; cursor: pointer; accent-color: #6d28d9; margin: 0; }
.qa-web-hint { font-size: 11.5px; color: var(--muted); flex: 1 1 240px; min-width: 200px; }
.qa-chip.web { background: #f1ebfd; color: #6d28d9; }
.qa-answer.web { border-color: #ddd0f5; background: #faf7ff; border-left: 3px solid #6d28d9; }
.qa-answer.web.pending .qa-a-body { color: var(--muted); display: flex; align-items: center; gap: 9px; }
.qa-a-src.web { color: #6b5a86; }
.qa-cites { margin-top: 10px; }
.qa-cites-label { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px; color: #6d28d9; margin-bottom: 4px; }
.qa-cites ol { margin: 0; padding-left: 20px; }
.qa-cites li { font-size: 12px; margin: 3px 0; line-height: 1.4; }
.qa-cites a { color: #5b3fa0; text-decoration: none; word-break: break-word; }
.qa-cites a:hover { text-decoration: underline; }
.qa-cite-host { color: var(--muted); font-size: 10.5px; }
.qa-cites.none { font-size: 11.5px; color: var(--muted); margin-top: 8px; }

/* ---- web enrichment (research a company online to propose fields) ---- */
.enrich-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin-top: 12px; }
.enrich-row:empty { margin: 0; }
.enrich-btn { border-color: #c9b8f0; color: #5b3fa0; background: #f7f3ff; font-weight: 600; }
.enrich-btn:hover:not(:disabled) { background: #efe7ff; }
.enrich-row-hint { font-size: 11.5px; color: var(--muted); flex: 1; min-width: 220px; line-height: 1.4; }
.enrich-summary:empty { margin: 0; }
.enrich-box { border: 1px solid #ddd0f6; background: #faf8ff; border-radius: 10px; padding: 14px 16px; margin-top: 12px; }
.enrich-box.loading { color: #5b3fa0; font-size: 13px; display: flex; align-items: center; gap: 9px; }
.enrich-box.err { border-color: #f0c8c8; background: #fdf4f4; color: #9a3434; font-size: 12.5px; }
.deal-enrich:empty { display: none; }
.deal-enrich .enrich-box { margin-top: 14px; }
.enrich-head { font-size: 13px; font-weight: 700; color: #5b3fa0; display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.enr-conf { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .3px; padding: 2px 7px; border-radius: 999px; }
.enr-conf.high { background: #def1e4; color: #1c7a42; }
.enr-conf.medium { background: #fdf0d6; color: #a76a08; }
.enr-conf.low { background: #fae0e0; color: #a33; }
.enr-empty-note { font-size: 12px; color: var(--muted); margin: 0 0 10px; line-height: 1.45; padding: 7px 11px; background: #f4f2fa; border: 1px solid #e4def4; border-radius: 7px; }
.enr-note { font-size: 12px; color: var(--ink); margin: 8px 0 0; line-height: 1.45; }
.enr-disclaim { font-size: 11.5px; color: var(--muted); margin: 8px 0 12px; line-height: 1.45; }
.enr-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; }
.enr-item { display: flex; gap: 10px; align-items: flex-start; background: #fff; border: 1px solid var(--line); border-radius: 8px; padding: 9px 11px; }
.enr-check { flex: 0 0 auto; margin-top: 2px; }
.enr-check input { accent-color: #6d28d9; width: 15px; height: 15px; cursor: pointer; }
.enr-body { flex: 1; min-width: 0; }
.enr-k { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.enr-v { font-size: 13.5px; color: var(--ink); font-weight: 600; margin-top: 1px; line-height: 1.35; }
.enr-src { font-size: 11.5px; color: var(--muted); font-style: italic; margin-top: 3px; line-height: 1.4; }
.enrich-box .qa-cites a { display: block; margin: 3px 0; font-size: 11.5px; }
.enr-actions { display: flex; gap: 8px; margin-top: 13px; }
.web-chip { display: inline-block; background: #f1ebfd; color: #6d28d9; border-radius: 6px; padding: 0 6px; font-size: 9.5px; font-weight: 700; margin-left: 6px; text-transform: uppercase; letter-spacing: .3px; vertical-align: middle; }

@media (max-width: 900px) {
  .val-stats { grid-template-columns: 1fr 1fr; }
  .val-outcomes, .template-grid { grid-template-columns: 1fr; }
}

/* source attribution for extracted financials */
.fin-source {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
  margin: 0 0 12px; padding: 10px 12px;
  background: #f3f6fb; border: 1px solid #e2e8f2; border-left: 3px solid #1f3a5f;
  border-radius: 8px; font-size: 12.5px;
}
.fin-source.none {
  background: #fff7ed; border-color: #fed7aa; border-left-color: #c2701c; color: #7c4a16;
}
.fin-source-lbl {
  font-weight: 700; color: #1f3a5f; text-transform: uppercase;
  letter-spacing: .04em; font-size: 11px;
}
.fin-source-doc {
  display: inline-block; padding: 3px 8px; border-radius: 6px;
  background: #fff; border: 1px solid #d7e0ee; color: #25406a;
  font-weight: 600; font-size: 11.5px;
}
.fin-source-note { flex: 1 1 100%; margin-top: 2px; font-size: 12px; }

/* dropzone ingestion hints */
.dz-types { margin: 4px 0 0; font-size: 11.5px; letter-spacing: .03em; color: #8a98ad; font-weight: 600; }
.dz-note { margin: 8px 2px 0; font-size: 12px; line-height: 1.5; }

/* ===== Alternative Investments — Real Estate ===== */
.re-intro h2 { margin: 0 0 4px; }
.re-intro p { margin: 0 0 16px; max-width: 980px; }
.re-cards { margin-bottom: 14px; }
.re-toolbar { display: flex; align-items: center; gap: 10px; margin: 0 0 14px; flex-wrap: wrap; }
.re-toolbar input, .re-toolbar select { border: 1px solid var(--line-strong); border-radius: 8px; padding: 8px 10px; font: inherit; }
.re-toolbar #reSearch, .re-toolbar #passedSearch { flex: 1 1 320px; max-width: 420px; }
.re-toolbar .spacer { flex: 1 1 auto; }

/* Passed Deals view */
.pass-reason-cell { max-width: 280px; white-space: normal; color: var(--ink-soft, #444); font-size: 13px; }
.btn-mini { border: 1px solid var(--line-strong); background: var(--paper, #fff); border-radius: 7px; padding: 5px 10px; font: inherit; font-size: 12px; font-weight: 600; color: var(--ink, #1a2233); cursor: pointer; white-space: nowrap; transition: border-color .12s, background .12s; }
.btn-mini:hover { border-color: var(--steel, #5a6b85); background: var(--wash, #f4f6fa); }
.re-table th, .re-table td { white-space: nowrap; }

/* projected returns stat callouts */
.re-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.re-stat { border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; background: #fbfcfe; }
.re-stat-v { font-size: 26px; font-weight: 800; color: var(--navy); line-height: 1.1; }
.re-stat-k { font-size: 12px; color: var(--muted); margin-top: 4px; font-weight: 600; }
.re-stat-s { font-size: 11px; color: var(--muted-2); margin-top: 2px; }
.re-stat.good { background: var(--good-bg); border-color: var(--good-line); }
.re-stat.good .re-stat-v { color: var(--good); }
.re-stat.warn { background: var(--warn-bg); border-color: var(--warn-line); }
.re-stat.warn .re-stat-v { color: var(--warn); }
.re-stat.bad { background: var(--bad-bg); border-color: var(--bad-line); }
.re-stat.bad .re-stat-v { color: var(--bad); }

/* capital stack bar */
.cs-bar { display: flex; height: 30px; border-radius: 8px; overflow: hidden; margin: 6px 0 16px; border: 1px solid var(--line); }
.cs-seg { height: 100%; }
.cs-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 8px; vertical-align: middle; }
.cs-status { font-size: 11.5px; color: var(--muted); }
tr.cs-total td { font-weight: 700; border-top: 2px solid var(--line-strong); background: var(--slate-bg); }

/* ---- Dashboard "Investments" dropdown ------------------------------------ */
.inv-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; padding-bottom: 14px; border-bottom: 1px solid var(--line); }
.inv-bar-label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .6px; color: var(--muted); }
.inv-bar select { background: #fff; border: 1px solid var(--line-strong); color: var(--navy); border-radius: 9px; padding: 9px 13px; font-size: 14px; font-weight: 700; min-width: 220px; cursor: pointer; }
.inv-bar select:hover { border-color: var(--navy-soft); }
.inv-bar-hint { font-size: 12.5px; color: var(--muted); }

/* ---- Operating & market profile (qualitative attributes) ----------------- */
.profile-kv { max-width: 880px; gap: 11px 18px; margin-top: 2px; }
.profile-kv dt { white-space: nowrap; padding-top: 1px; font-weight: 600; }
.profile-kv dd { font-weight: 500; line-height: 1.5; text-align: left; }

/* "Revert to normal" button after editing financials */
.fin-revert-btn { margin-left: 6px; color: var(--navy); border-color: var(--line-strong); }
.fin-revert-btn:hover { background: var(--warn-bg, #fdf6e3); border-color: var(--warn-line, #e6c34a); }

/* ---- Dashboard nav: investment-type dropdown ----------------------------- */
.tab-with-menu { position: relative; }
.tab-with-menu .tab { width: 100%; padding-right: 38px; }
.tab-caret {
  position: absolute; top: 50%; right: 6px; transform: translateY(-50%);
  background: rgba(255,255,255,.10); border: none; color: rgba(255,255,255,.8);
  width: 24px; height: 24px; border-radius: 7px; cursor: pointer;
  font-size: 11px; line-height: 1; display: flex; align-items: center; justify-content: center;
  transition: background .12s, color .12s;
}
.tab-caret:hover { background: rgba(255,255,255,.22); color: #fff; }
.tab-submenu {
  /* Fill the sidebar column (which clips horizontal overflow) and let item text
     wrap, rather than overflowing nowrap text that gets cut off at the edge. */
  position: absolute; top: calc(100% + 4px); left: 4px; right: 4px; z-index: 40;
  background: #fff; border: 1px solid var(--line-strong); border-radius: 10px;
  box-shadow: 0 12px 32px rgba(10,26,48,.28); padding: 5px; overflow: hidden;
}
.tab-submenu .submenu-item {
  display: flex; align-items: flex-start; gap: 8px; width: 100%; text-align: left;
  background: none; border: none; color: var(--ink); cursor: pointer;
  padding: 9px 10px; border-radius: 7px; font-size: 13px; font-weight: 600;
}
.tab-submenu .submenu-item:hover { background: var(--slate-bg); }
.tab-submenu .submenu-item.active { background: var(--navy); color: #fff; }
.tab-submenu .submenu-check { flex: 0 0 14px; text-align: center; font-size: 11px; opacity: .9; margin-top: 1px; }
.tab-submenu .submenu-item > span:last-child { flex: 1; min-width: 0; }
.tab-submenu .submenu-label { display: block; line-height: 1.25; }
.tab-submenu .submenu-sub { display: block; font-size: 11px; font-weight: 500; color: var(--muted); margin-top: 2px; line-height: 1.3; white-space: normal; }
.tab-submenu .submenu-item.active .submenu-sub { color: rgba(255,255,255,.75); }
