@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap');

/* Verric investment terminal. Loaded after dashboard.html's base stylesheet.
 * This layer changes presentation only; live data, permissions, citations,
 * navigation and device preferences remain owned by the existing application.
 */
:root {
  --on-brand: #FFFDF8;
  color-scheme: light;
  --workforce-violet-soft: #e9e1ee;
  --workforce-violet-ink: #806889;
  --workforce-blue-soft: #E0F2FE;
  --workforce-blue-ink: #0369A1;
  --workforce-sage-soft: #e9eadc;
  --workforce-sage-ink: #727f53;
  --workforce-amber-soft: #f2e7d1;
  --workforce-amber-ink: #a57d3e;
  --workforce-rose-soft: #f0dfe0;
  --workforce-rose-ink: #a4666b;
  --workforce-progress-soft: #e8eef5;
  --workforce-progress-ink: #466d8c;

  --paper: #F6F5F1;
  --card: #FFFFFF;
  --sidebar: #EFEEE9;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --field: #FFFFFF;
  --ink: #25272A;
  --ink-2: #66686B;
  --select-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%2366686B' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  --ink-3: #66686B;
  --ink-4: #66686B;
  --ink-5: #66686B;
  --info: #66686B;
  --rule: #E1E1DC;
  --rule-2: #ABAFAA;
  --rule-soft: #F3F3EF;
  --rule-hover: #8D928F;
  --scroll: #B7BAB6;
  --brand: #323C46;
  --brand-text: #344454;
  --brand-ink: #344454;
  --brand-soft: #ECEEEB;
  --brand-grad-a: #323C46;
  --brand-grad-b: #323C46;
  --brand-grad-ah: #242D35;
  --brand-grad-bh: #242D35;
  --brand-edge: #323C46;
  --nav-active: #E2E4DF;
  --select-bg: #E2E4DF;
  --select-ink: #25272A;
  --ok: #1F5B43;
  --ok-soft: #DCF5E6;
  --ok-line: #9BC9AF;
  --warn: #B45309;
  --warn-soft: #FEF3C7;
  --warn-line: #FCD34D;
  --bad: #851D39;
  --bad-soft: #F7D6DF;
  --bad-line: #E5A6B8;
  --focus: #4B6478;
  --metric-a: #FFFFFF;
  --metric-b: #FFFFFF;
  --hc-ink-2: #383a32;
  --hc-rule: #919487;
  --hc-rule-2: #62655a;
  --terminal-row-pad: 12px;
  --terminal-panel-pad: 20px;
  --terminal-gap: 20px;
  --workspace-header: #F6F5F1;
  /* Flat: the Business Terminal look (2026-09-24) has no gradients. */
  --decision-surface: #FFFFFF;
  /* Business Terminal look (2026-09-24). */
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  /* The rail. A solid burgundy band, as demo2's is a solid cobalt one. Every
     pair is at least 4.5:1 for text and 3:1 for the focus ring. */
  --nav-bg: #EFEEE9;
  --nav-hover: #E6E6E1;
  --nav-sel: #DDE0DB;
  --nav-ink: #25272A;
  --nav-muted: #646963;
  --nav-line: #D8DBD4;
  --nav-focus: #4B6478;
  /* The four KPI edges, in the order the figures appear. */
  --kpi-1: #596D58;
  --kpi-2: #627E68;
  --kpi-3: #9C7B45;
  --kpi-4: #6B7D89;
  /* The Live / Preview / Development tag on the rail (set inline by
     applyEnvironmentTag() as var(--ok) / var(--warn)). */
  /* Firm Brain map (Team & agents): a dark burgundy board in both themes,
     as demo2's map is dark in its light theme. */
  --fb-bg: #210c13;
  --fb-raised: #33141e;
  --fb-line: #5a2c3a;
  --fb-ink: #faf1f3;
  --fb-muted: #d9b7c1;
  --fb-pair: #f2c9d3;
  --fb-msg: #f5d9a3;
  --fb-work: #B9E4CC;
  --nav-live: #3D6A4B;
  /* demo2's primary button sits on a 2px under-edge of its own colour. */
  --brand-edge-soft: #344C3E20;
  --nav-dev: #805C20;
}

html[data-theme="dark"] {
  --on-brand: #25272A;
  color-scheme: dark;
  --nav-live: #A8CFB5;
  --nav-dev: #DEC38D;
  --workforce-violet-soft: var(--card);
  --workforce-violet-ink: #c4add0;
  --workforce-blue-soft: var(--card);
  --workforce-blue-ink: #7DD3FC;
  --workforce-sage-soft: var(--card);
  --workforce-sage-ink: #bbc59c;
  --workforce-amber-soft: var(--card);
  --workforce-amber-ink: #dec18e;
  --workforce-rose-soft: var(--card);
  --workforce-rose-ink: #dfaaaa;
  --workforce-progress-soft: var(--card);
  --workforce-progress-ink: #9cbcdf;

  --workspace-header: #141517;
  --decision-surface: #1C1E21;
  --brand: #E2D8C3;
  --brand-text: #E2D8C3;
  --brand-ink: #E2D8C3;
  --brand-soft: #2D2C29;
  --brand-grad-a: #E2D8C3;
  --brand-grad-b: #E2D8C3;
  --brand-grad-ah: #F1E9D9;
  --brand-grad-bh: #F1E9D9;
  --brand-edge: #E2D8C3;
  --nav-active: #2B2E32;
  --select-bg: #3A3D42;
  --select-ink: #F0EDE6;
  --ok: #B2E6C8;
  --ok-soft: #1F4A30;
  --ok-line: #5E8A6C;
  --warn: #FBBF24;
  --warn-soft: #3A2F12;
  --warn-line: #8A6A2E;
  --bad: #F7CDD9;
  --bad-soft: #5E2726;
  --bad-line: #8F636B;
  --focus: #E2D8C3;
  --paper: #141517;
  --card: #1C1E21;
  --sidebar: #18191B;
  --field: #24262A;
  --ink: #F0EDE6;
  --ink-2: #B3B4B6;
  --select-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%23B3B4B6' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  --ink-3: #B3B4B6;
  --ink-4: #B3B4B6;
  --ink-5: #B3B4B6;
  --info: #B3B4B6;
  --rule: #32353A;
  --rule-2: #676C73;
  --rule-soft: #24262A;
  --rule-hover: #818790;
  --scroll: #51565D;
  --metric-a: #1C1E21;
  --metric-b: #1C1E21;
  --hc-ink-2: #ffffff;
  --hc-rule: #737373;
  --hc-rule-2: #b3b3b3;
  /* Business Terminal look (2026-09-24). */
  --nav-bg: #18191B;
  --nav-hover: #222428;
  --nav-sel: #2B2E32;
  --nav-ink: #F0EDE6;
  --nav-muted: #AEB1B5;
  --nav-line: #303338;
  --nav-focus: #E2D8C3;
  --kpi-1: #DCCBA4;
  --kpi-2: #A7C2A4;
  --kpi-3: #D7B57A;
  --kpi-4: #A8B9BF;
}

@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) {
    --on-brand: #25272A;
    color-scheme: dark;
  --nav-live: #A8CFB5;
  --nav-dev: #DEC38D;
  --workforce-violet-soft: var(--card);
  --workforce-violet-ink: #c4add0;
  --workforce-blue-soft: var(--card);
  --workforce-blue-ink: #7DD3FC;
  --workforce-sage-soft: var(--card);
  --workforce-sage-ink: #bbc59c;
  --workforce-amber-soft: var(--card);
  --workforce-amber-ink: #dec18e;
  --workforce-rose-soft: var(--card);
  --workforce-rose-ink: #dfaaaa;
  --workforce-progress-soft: var(--card);
  --workforce-progress-ink: #9cbcdf;

    --workspace-header: #141517;
    --decision-surface: #1C1E21;
    --brand: #E2D8C3;
    --brand-text: #E2D8C3;
    --brand-ink: #E2D8C3;
    --brand-soft: #2D2C29;
    --brand-grad-a: #E2D8C3;
    --brand-grad-b: #E2D8C3;
    --brand-grad-ah: #F1E9D9;
    --brand-grad-bh: #F1E9D9;
    --brand-edge: #E2D8C3;
    --nav-active: #2B2E32;
    --select-bg: #3A3D42;
    --select-ink: #F0EDE6;
    --ok: #B2E6C8;
    --ok-soft: #1F4A30;
    --ok-line: #5E8A6C;
    --warn: #FBBF24;
    --warn-soft: #3A2F12;
    --warn-line: #8A6A2E;
    --bad: #F7CDD9;
    --bad-soft: #5E2726;
    --bad-line: #8F636B;
    --focus: #E2D8C3;
    --paper: #141517;
    --card: #1C1E21;
    --sidebar: #18191B;
    --field: #24262A;
    --ink: #F0EDE6;
    --ink-2: #B3B4B6;
    --select-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%23B3B4B6' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    --ink-3: #B3B4B6;
    --ink-4: #B3B4B6;
    --ink-5: #B3B4B6;
    --info: #B3B4B6;
    --rule: #32353A;
    --rule-2: #676C73;
    --rule-soft: #24262A;
    --rule-hover: #818790;
    --scroll: #51565D;
    --metric-a: #1C1E21;
    --metric-b: #1C1E21;
    --hc-ink-2: #ffffff;
    --hc-rule: #737373;
    --hc-rule-2: #b3b3b3;
    /* Business Terminal look (2026-09-24). */
    --nav-bg: #18191B;
    --nav-hover: #222428;
    --nav-sel: #2B2E32;
    --nav-ink: #F0EDE6;
    --nav-muted: #AEB1B5;
    --nav-line: #303338;
    --nav-focus: #E2D8C3;
    --kpi-1: #DCCBA4;
    --kpi-2: #A7C2A4;
    --kpi-3: #D7B57A;
    --kpi-4: #A8B9BF;
  }
}

/* Reapply the existing contrast choice after the palette, including Safari's
 * OS preference fallback. A theme change must never reset that choice. */
html[data-contrast="increased"],
html[data-contrast="system"].hc-os {
  --ink-2: var(--hc-ink-2);
  --ink-3: var(--hc-ink-2);
  --ink-4: var(--hc-ink-2);
  --ink-5: var(--hc-ink-2);
  --info: var(--hc-ink-2);
  --rule: var(--hc-rule);
  --rule-soft: var(--hc-rule);
  --rule-2: var(--hc-rule-2);
}
@media (prefers-contrast: more) {
  html[data-contrast="system"] {
    --ink-2: var(--hc-ink-2);
    --ink-3: var(--hc-ink-2);
    --ink-4: var(--hc-ink-2);
    --ink-5: var(--hc-ink-2);
    --info: var(--hc-ink-2);
    --rule: var(--hc-rule);
    --rule-soft: var(--hc-rule);
    --rule-2: var(--hc-rule-2);
  }
}
html[data-density="compact"] {
  --terminal-row-pad: 8px;
  --terminal-panel-pad: 16px;
  --terminal-gap: 16px;
}

body { animation: none; }
h1, .hello { font-size: clamp(1.75rem, 2.5vw, 2.38rem); line-height: 1.2; letter-spacing: -.035em; font-weight: 600; }
h2 { font-size: 15px; line-height: 1.4; }
.sub { line-height: 1.6; }
main { max-width: 1440px; padding: 24px 24px 64px; }
.phead { margin-bottom: var(--terminal-gap); }
.section-label { margin: var(--terminal-gap) 0 10px; }
.phead + .card, .view > .sub + .card { margin-top: 20px; }

@media (min-width: 761px) {
  .sidenav { width: 226px; padding: 20px 12px 16px; gap: 20px; }
  .sidenav nav button, .sidenav nav .nav-more > summary {
    min-height: 40px;
    padding-block: 8px;
    font-size: 13px;
    border-radius: 4px;
  }
  .sidenav nav button[aria-current="true"],
  .sidenav nav .nav-more.holds-current:not([open]) > summary {
    box-shadow: none;
    border-inline-start: 2px solid var(--brand);
    padding-inline-start: 8px;
  }
  .sidenav nav .nav-more > button[aria-current="true"] { padding-inline-start: 32px; }
  html[data-sidebar="collapsed"] .sidenav nav button[aria-current="true"],
  html[data-sidebar="collapsed"] .sidenav nav .nav-more.holds-current:not([open]) > summary {
    padding-inline: 0;
    border-inline-start: 0;
    box-shadow: inset 0 -2px 0 var(--brand);
  }
  .sidefoot .reset { border-radius: 4px; }
}
.vmark { border-radius: 4px; }
.btn { border-radius: 4px; font-size: 13px; padding: 8px 12px; }
.btn:active { transform: none; }
.badge, .score, .attn-pill { border-radius: 4px; }
.badge { font-size: 11px; padding-inline: 6px; }
.score { font-size: 12px; }
.card, .deal, .memo-wrap, .chatbox, .metric, .set-card,
.conn, .mdl, .cal-wrap, .empty { border-radius: 4px; border-color: var(--rule); }
.card { padding: var(--terminal-panel-pad); }
.deal { padding: 16px 16px; }
.deal-name { font-size: 15px; }
.deal-ind { line-height: 1.6; }
.proto-note { border-radius: 4px; font-size: 12px; }
.set-card { border-radius: 8px; }
.set-h { font-size: 19px; }
.set-opt, .appr-row select, .set-reset .btn { border-radius: 4px; }

/* An even KPI band keeps all four values in view on ordinary laptops. */
.metrics { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.metric { padding: 16px 16px; }
.metric .v { font-size: 27px; margin-top: 6px; }
.metric .k { font-size: 12px; }
.metric .d { font-size: 11px; line-height: 1.6; }
.pipe { border-radius: 4px; margin-top: 12px; max-width: 100%; overflow-x: auto; }
.pipe .seg { min-width: 112px; gap: 8px; padding: 8px 12px; }
.pipe .seg .n { font-family: var(--sans); font-size: 19px; }
.pipe .seg .l { font-size: 11px; }

/* The strip in three labelled parts — Screening, Live deals, Portfolio —
   because that is now three screens and the strip is the only place the
   whole ladder is visible at once. The label is a button: the segment under
   it and the screen it names are the same set of companies, so clicking the
   heading should get you there. The divider is the product's one real
   boundary, so it is a rule, not a hairline. */
.pipe-half { display: flex; flex-direction: column; min-width: 0; flex: 0 0 auto; }
.pipe-half + .pipe-half { border-inline-start: 2px solid var(--rule-2); }
.pipe-half-k {
  margin: 0; padding: 8px 12px 2px; border: 0; background: none; cursor: pointer;
  font: 600 11px/1.4 var(--sans); letter-spacing: .07em; text-transform: uppercase;
  color: var(--ink-3); white-space: nowrap; text-align: start;
}
.pipe-half-k:hover { color: var(--brand-text); }
.pipe-half-k:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; border-radius: 4px; }
.pipe-segs { display: flex; flex: 1; }
/* The last segment of each half already has the half's own rule beside it. */
.pipe-segs .seg:last-child { border-inline-end: 0; }

/* Deals, in two bands: the ones you are on, then the ones you are not. The
   heading carries a count and a line saying what the band is, because "Your
   deals" alone leaves a reader guessing whether it means owned or staffed.
   The second band is deliberately quieter — present and readable, but not
   competing with your own work for the top of the screen. */
.deals-band + .deals-band { margin-top: 32px; padding-top: 20px; border-top: 1px solid var(--rule); }
.deals-band-h { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-bottom: 2px; }
.deals-band-h h2 { margin: 0; font-size: 15px; font-weight: 600; color: var(--ink); }
.deals-band-hint { font-size: 12px; color: var(--ink-3); }
.deals-band + .deals-band .deals-band-h h2 { color: var(--ink-2); font-weight: 500; }

/* The rail in bands: home, then where companies are, then what you do, then
   setup. Ten items at one weight is a list to read; four groups of three to
   five is a shape to recognise. Rules rather than headings — at 196px a
   label per band costs more than it explains, and the grouping already
   carries the meaning. */
#primaryNav .nav-rule {
  border: 0; border-top: 1px solid var(--rule);
  margin: 8px 12px 8px; height: 0;
}
/* Collapsed rail: the rules stay — with the labels hidden they are the only
   grouping left — but tighten to the narrower gutter. The collapse is driven
   by html[data-sidebar="collapsed"], not a class on the aside. */
html[data-sidebar="collapsed"] #primaryNav .nav-rule { margin-inline: 6px; }

/* New opportunity: the optional half, folded.
   Two required answers and the documents sit above this; everything else is
   the seller's claims, which the screen reads out of the files anyway. Shown
   flat, those eight boxes read as work to do before anything would happen —
   which is why people were asking whether they had to fill them in. */
.np-optional { margin-top: 16px; border-top: 1px solid var(--rule); padding-top: 12px; }
.np-optional > summary {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
  cursor: pointer; list-style: none; padding: 4px 0; border-radius: 8px;
}
.np-optional > summary::-webkit-details-marker { display: none; }
/* The marker is drawn rather than inherited so it can sit before the label
   and rotate; ::marker is not reliably styleable across the browsers here. */
.np-optional > summary::before {
  content: "▸"; color: var(--ink-3); font-size: 11px; line-height: 1.6;
  transition: transform .12s ease; display: inline-block;
}
.np-optional[open] > summary::before { transform: rotate(90deg); }
.np-optional > summary:hover .np-optional-t { color: var(--brand-text); }
.np-optional > summary:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.np-optional-t { font: 600 13px var(--sans); color: var(--ink); }
.np-optional-s { font-size: 12px; color: var(--ink-3); }
.np-optional-note {
  margin: 8px 0 12px; max-width: 62ch;
  font-size: 12px; line-height: 1.6; color: var(--ink-2);
}
.np-optional-note em { font-style: italic; color: var(--ink); }

/* The stage-focus strip on a live deal's card: one line saying what THIS
   stage is about, above figures that read the same at every stage. At LOI
   that is the exclusivity clock and whether diligence has started; in
   diligence, the items behind the pace bars; at IC, whether the case exists
   and what is still open; at Closing, that diligence is over and conditions
   are not tracked here. */
.dfocus {
  display: flex; flex-wrap: wrap; gap: 6px 20px;
  margin-top: 8px; padding: 8px 12px;
  border: 1px solid var(--rule); border-radius: 8px; background: var(--paper);
  font-size: 12px; line-height: 1.6;
}
.dfocus-i { display: inline-flex; align-items: baseline; gap: 6px; min-width: 0; }
.dfocus-k { color: var(--ink-3); font-size: 11px; white-space: nowrap; }
.dfocus-i.warn .dfocus-k { color: var(--warn); }
/* "not recorded" / "not started" — a gap stated plainly, never dressed up as
   a value. Same reasoning as "Not disclosed" in the figures. */
.dfocus-none { color: var(--ink-3); font-style: italic; }
.dfocus-ok { color: var(--ok); font-weight: 500; }

/* ── "Where this deal stands" — the deal page's spine ────────────────────
   First thing on the page, because it answers the question the page exists
   for. Steps the stage actually asks for, the one thing to do next, and the
   move. It informs and never blocks: the button reads "anyway" when work is
   outstanding rather than going disabled. */
.dpath {
  margin: 12px 0 4px; padding: 16px 16px 12px;
  border: 1px solid var(--rule); border-radius: 8px; background: var(--card);
}
.dpath-h { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.dpath-stage { margin: 0; font: 600 15px var(--sans); color: var(--ink); }
.dpath-age { font-weight: 400; font-size: 12px; color: var(--ink-3); }
.dpath-count { margin: 2px 0 0; font-size: 12px; color: var(--ink-3); }

.dpath-steps { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-direction: column; gap: 1px; }
.dpath-s {
  display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap;
  padding: 6px 0; border-top: 1px solid var(--rule); font-size: 13px;
}
.dpath-s:first-child { border-top: 0; }
/* The tick carries the state, so the label never needs a colour of its own —
   a list where half the text is green reads as decoration. */
.dpath-tick { width: 14px; flex: none; color: var(--ink-3); font-size: 12px; }
.dpath-s.is-done .dpath-tick { color: var(--ok); }
.dpath-l { flex: 1 1 180px; min-width: 0; color: var(--ink); }
.dpath-s.is-done .dpath-l { color: var(--ink-2); }
.dpath-d { flex: 0 1 auto; font-size: 12px; color: var(--ink-3); }
.dpath-go {
  flex: none; border: 1px solid var(--rule-2); background: var(--paper);
  color: var(--ink-2); border-radius: 4px; padding: 2px 8px;
  font: 500 11px var(--sans); cursor: pointer;
}
.dpath-go:hover { color: var(--brand-text); border-color: var(--brand-text); }
.dpath-go:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }

.dpath-next {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--rule);
}
.dpath-nx { margin: 0; font-size: 13px; color: var(--ink); min-width: 0; }
.dpath-k {
  font: 600 11px var(--sans); letter-spacing: .06em; text-transform: uppercase;
  color: var(--ink-3); margin-inline-end: 6px;
}
.dpath-clear .dpath-k { color: var(--ok); }
/* The route does not stop without saying why. When a move is not this
   person's to make, the button's place is taken by who it belongs to —
   quieter than a button, louder than nothing. */
.dpath-gate { margin: 0; font-size: 12px; color: var(--ink-3); font-style: italic; }
.dstrip { border-radius: 4px; }
.attn { gap: 6px; }
.attn-row { padding: 8px 12px; min-height: 44px; border-radius: 4px; font-size: 13px; }
.attn-row .tag { font-size: 11px; }
.attn-empty { border-radius: 4px; min-height: 64px; padding: 16px 12px; }
.controls { gap: 8px; }

/* The overview uses real deal fields from /api/terminal. Retain every column
 * at narrow widths; scrolling the table never widens the document itself. */
/* position: relative so the table's screen-reader text (.sr-only, absolute)
   scrolls with the table: without it the caption and the Actions label
   escaped the wrap and gave every page with a table a sideways scroll on a
   phone. */
.terminal-table-wrap {
  position: relative;
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  border: 1px solid var(--rule);
  border-radius: 4px;
  background: var(--card);
}
table.terminal-table { width: 100%; min-width: 940px; border-collapse: separate; border-spacing: 0; }
.terminal-table th, .terminal-table td {
  padding: var(--terminal-row-pad) 14px;
  border-bottom: 1px solid var(--rule);
  text-align: start;
  vertical-align: middle;
  font-size: 13px;
  line-height: 1.6;
}
.terminal-table thead th { background: var(--paper); color: var(--ink-2); font-size: 11px; font-weight: 600; white-space: nowrap; }
.terminal-table tbody th { font-weight: 400; }
.terminal-table tbody tr:last-child > :is(th, td) { border-bottom: 0; }
.terminal-table tbody tr:hover > :is(th, td) { background: var(--paper); }
.terminal-table th:first-child, .terminal-table td:first-child { min-width: 200px; max-width: 280px; }
.terminal-table td:last-child { min-width: 220px; max-width: 320px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.terminal-table th.num, .terminal-table td.num, table.ab th.num, table.ab td.num {
  text-align: end;
  font-variant-numeric: tabular-nums lining-nums;
  white-space: nowrap;
}
.terminal-table td.num { font-weight: 500; }
.opportunity-link {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  max-width: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-weight: 600;
  text-align: start;
  text-decoration: none;
  overflow-wrap: anywhere;
  cursor: pointer;
}
.opportunity-link:hover { color: var(--brand-text); text-decoration: underline; text-underline-offset: 3px; }
.opportunity-sub { display: block; color: var(--ink-3); font-size: 11px; line-height: 1.6; overflow-wrap: anywhere; }
.terminal-table-note { margin-top: 8px; color: var(--ink-3); font-size: 11px; line-height: 1.6; }

/* Values line up without assigning numeric meaning to prose or source text. */
.metric .v, .snap .v, .dscr .v, .score, .ws-count, .watch-fit,
.table-row .tv, .bench-row .bv, .raterow .rv, .agent-spend, .msg-cost,
input[data-money], input[type="number"] { font-variant-numeric: tabular-nums lining-nums; }
input[data-money], input[type="number"] { text-align: end; }
table.ab th { padding: 8px; background: var(--paper); }
table.ab td { padding: var(--terminal-row-pad) 10px; font-size: 13px; vertical-align: top; }
table.ab td.num { font-size: 13px; }
.snap { gap: 8px; }
.snap .cell, .dscr .cell { border-radius: 4px; background: var(--paper); }
.snap .v { font-size: 19px; margin-block: 4px 0; }
.snap .k { font-size: 11px; }
.dscr .cell.hero { border-width: 1px; border-inline-start-width: 3px; }
.memo-wrap { padding: 24px; }
.src { border-radius: 0 4px 4px 0; }

.an-av, .conn-av { border-radius: 4px; }
.chatbox { margin-top: 16px; }
.chatlog { padding: 16px 20px; gap: 20px; }
.msg { line-height: 1.6; }
.msg.user { border-radius: 4px; }
.chat-file, .field-box, .chatin input { border-radius: 4px; }

/* The investigation card: the supervisor loop, watched live from the chat.
 * Every value below is on the closed scales in scripts/check-design-system.mjs
 * — this is new work and is held to the system, not to the backlog. The step
 * dots reuse the `pulse` keyframe the rest of the app already animates with.
 * No shadow: a card in a chat bubble does not float. */
.investigation-card { margin-top: 8px; padding: 12px; max-width: 560px; border: 1px solid var(--rule); border-radius: 4px; background: var(--paper); }
.investigation-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.investigation-title { font-size: 13px; font-weight: 600; color: var(--ink); }
/* Two classes, because the .btn rule further down this file is later and
 * otherwise wins: a 40px-tall Stop button in a chat card. */
.investigation-card .investigation-stop { font-size: 12px; min-height: 0; padding: 4px 12px; }
.investigation-steps { list-style: none; margin: 12px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.investigation-step { display: flex; align-items: flex-start; gap: 8px; font-size: 13px; line-height: 1.4; color: var(--ink-2); }
.investigation-step-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.investigation-step-why { font-size: 12px; color: var(--ink-3); }
.investigation-dot { flex-shrink: 0; width: 8px; height: 8px; margin-top: 6px; border-radius: 50%; background: var(--rule-2); }
.investigation-step-done .investigation-dot { background: var(--ok); }
.investigation-step-blocked .investigation-dot { background: var(--warn); }
.investigation-step-running .investigation-dot { background: var(--brand); animation: pulse 1.2s ease-in-out infinite; }
/* A step that was still running when the run ended: it did not finish. No
 * pulse — nothing is happening — and not the blocked colour, because nothing
 * refused it either. */
.investigation-step-unfinished .investigation-dot { background: var(--rule-2); }
.investigation-foot { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; font-size: 12px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.investigation-detail { margin-top: 8px; }
.investigation-detail > summary { cursor: pointer; }
.investigation-trace { display: flex; flex-direction: column; gap: 2px; margin-top: 6px; max-height: 220px; overflow-y: auto; }
.investigation-result { margin-top: 12px; }
.investigation-result > * + * { margin-top: 8px; }
.chatin { padding: 12px; }
.chatin input { min-width: 0; }
.suggest { gap: 6px; padding-inline: 20px; }
.suggest button { border-radius: 4px; text-align: start; }
/* Scout, the target agent's chat on the Targets page: Vera's chat box with
 * its own name and its own green, so nobody mistakes one assistant for the
 * other. It opens small and grows with the conversation. */
/* Scout on the Targets page, in Vera's chat box (2026-10-20, Luai: "make it
   more like how Vera looked"): a header with its name and, when the firm has
   parent companies, which search the chat is about; the conversation; the
   starters; the ask bar. One conversation per search. Its own green avatar
   tells it apart from Vera. */
.scout-box { min-height: 0; }
.scout-av { width: 32px; height: 32px; font-size: 13px; background: var(--ok-soft); color: var(--ok); border: 1px solid var(--ok-line); }
.scout-about { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--ink-2); }
.scout-about[hidden] { display: none; }
.scout-about select { min-height: 32px; max-width: 240px; font: inherit; font-size: 13px; padding: 4px 12px; border: 1px solid var(--rule-2); border-radius: 4px; background-color: var(--field); color: var(--ink); }
.scout-log .agent-thinking { margin-top: 0; }
/* Previous chats (0199) in a pop-up, as Vera's: newest first, open one or delete it. */
.scout-chats-title { font-size: 19px; font-weight: 600; margin-top: 2px; }
.scout-chats-modal { max-width: 560px; }
.scout-chats-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.scout-chat-i { display: flex; align-items: center; border-radius: 4px; }
.scout-chat-i:hover, .scout-chat-i.is-open { background: var(--rule-soft); }
.scout-chat-open { flex: 1; min-width: 0; display: grid; gap: 2px; padding: 8px 12px; border: 0; background: transparent; text-align: start; font: inherit; color: var(--ink); cursor: pointer; border-radius: 4px; }
.scout-chat-t { font-size: 13px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.scout-chat-s { font-size: 11px; color: var(--ink-3); }
.scout-chat-del { flex: none; width: 32px; height: 32px; border: 0; background: transparent; color: var(--ink-3); border-radius: 4px; cursor: pointer; font-size: 15px; }
.scout-chat-del:hover { color: var(--bad); background: var(--card); }
.scout-chats-empty { font-size: 13px; color: var(--ink-3); }
.search-rows-empty { font-size: 13px; color: var(--ink-3); margin: 12px 0 0; }
.search-limit-row { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--ink-3); }
.search-limit-row input { width: 72px; flex: none; }
.scout-chats-group { font-size: 11px; font-weight: 600; color: var(--ink-3); margin: 12px 12px 4px; }
.scout-chats-group:first-child { margin-top: 0; }
.scout-chats-modal .scout-chat-move { flex: none; width: auto; max-width: 160px; height: 24px; min-height: 0; font: inherit; font-size: 11px; line-height: 1.2; color: var(--ink-3); background: var(--card); border: 1px solid var(--rule); border-radius: 4px; padding: 0 4px; margin-inline-end: 4px; cursor: pointer; }
.scout-chats-modal .scout-chat-move:hover, .scout-chats-modal .scout-chat-move:focus { color: var(--ink); }
.scout-chat-ren { flex: none; height: 24px; padding: 0 8px; border: 0; background: transparent; color: var(--ink-3); border-radius: 4px; cursor: pointer; font: inherit; font-size: 11px; }
.scout-chat-ren:hover { color: var(--ink); background: var(--card); }
.scout-chats-modal .scout-chat-name { flex: 1; min-width: 0; height: 32px; font: inherit; font-size: 13px; color: var(--ink); background: var(--card); border: 1px solid var(--rule); border-radius: 4px; padding: 0 8px; margin: 4px 8px 4px 4px; }
.scout-toolbar { align-items: center; gap: 12px; padding: 12px 16px 0; }
.scout-toolbar .scout-name { flex: 1; min-width: 0; font-size: 15px; font-weight: 600; color: var(--ink); display: flex; align-items: center; gap: 8px; }
/* Scout's mark beside its name: a compass, in the same brand tile as Vera's orb (Luai, 2026-10-24: "give scout a little picture"). */
.scout-orb { width: 28px; height: 28px; display: grid; place-items: center; flex: none; color: var(--brand-text); background: var(--brand-soft); border-radius: 6px; }
.scout-box .suggest { padding-top: 12px; }
.scout-box .suggest:empty { display: none; }
.scout-cos { list-style: none; margin-top: 8px; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.scout-cos li { display: flex; flex-direction: column; gap: 1px; font-size: 13px; line-height: 1.4; }
.scout-offer { margin-top: 8px; }
.scout-meta { margin-top: 8px; font-size: 11px; color: var(--ink-3); }
.conn-grid { gap: 12px; }
.conn { padding: 16px; }
.conn-why { line-height: 1.6; }
.thread-item { border-radius: 4px; }
.ros-row { padding-block: var(--terminal-row-pad); }
.sw-light i, .sw-system i { background: #f6f5f1; }
.sw-light i + i { background: #ffffff; }
.sw-dark i, .sw-system i + i { background: #000000; }
.sw-dark i + i { background: #000000; }
.foot { max-width: 1384px; padding: 16px 20px 24px; font-size: 11px; line-height: 1.6; }

/* Approved demo shell. The same tokens and page rhythm apply to every live
 * screen; the existing memo print styles and account preferences stay intact. */
body { font-size: 15px; }
h1, .hello, h2, h3 { font-family: 'Manrope', var(--sans); }
h1, .hello { font-size: 27px; font-weight: 600; line-height: 1.2; letter-spacing: -1.4px; }
h2 { font-weight: 700; }
h3 { font-weight: 700; }
.sub { font-size: 15px; color: var(--ink-3); }
main { max-width: 1630px; padding: 32px 32px 50px; }
.phead { margin-bottom: 24px; align-items: center; }
.btn { font-size: 13px; font-weight: 600; min-height: 40px; padding: 8px 16px; border-radius: 8px; }
.badge { font-size: 12px; border-radius: 4px; padding: 2px 8px; }
.card, .deal, .memo-wrap, .chatbox, .set-card, .cal-wrap, .empty, .conn { border-radius: 8px; }
/* flex-wrap is the backstop for the rule above. Now that the firm name will
 * not shrink below its longest word, a narrow window with a long firm name
 * and a long signed-in name can want more than one row — and the honest
 * answer is a second row, not a search button pushed off the screen or a page
 * that scrolls sideways. Reached only at the extremes. */
.workspace-topbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px; row-gap: 8px; min-height: 73px; padding: 12px 32px; border-bottom: 1px solid var(--rule); background: var(--workspace-header); position: sticky; top: 0; z-index: 30; }
.workspace-breadcrumb { display: flex; align-items: center; gap: 12px; min-width: 0; color: var(--ink-3); font-size: 13px; }
.workspace-breadcrumb strong { color: var(--ink); font-weight: 600; }
/* The firm's name in the header is never abbreviated either: it wraps at a
 * space and the header grows. NO min-width:0 here, deliberately — a flex item
 * defaults to min-width:auto, which is what stops it being squeezed narrower
 * than its own longest word. With min-width:0 it was: a long SIGNED-IN name
 * widens .workspace-actions, which does not shrink, and at 820px that left
 * the firm name a 73px column with "Infrastructure" hanging 20px out of it.
 * The screen name beside it is one of a fixed short list, so that one can
 * still stay on a single line. */
.workspace-breadcrumb strong { overflow-wrap: normal; word-break: normal; hyphens: none; }
#workspaceScreen { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.workspace-actions { display: flex; align-items: center; gap: 16px; flex-shrink: 0; margin-inline-start: auto; }
.workspace-actions .btn { background: transparent; border-color: transparent; min-height: 36px; padding: 4px; color: var(--ink-3); }
.workspace-actions .btn:hover { background: var(--paper); }
.workspace-actions svg { width: 19px; height: 19px; }
.workspace-keycap { font-size: 12px; border: 1px solid var(--rule); padding: 2px 4px; border-radius: 4px; }
/* No max-width and no ellipsis: this is the signed-in person's name, and
 * "Alexandra Featherston…" is the same defect as an abbreviated firm name one
 * element to the left. It wraps at a space if it has to, and the header wraps
 * under it if THAT has to. */
.workspace-user-name { font-size: 13px; color: var(--ink-2); overflow-wrap: normal; word-break: normal; hyphens: none; }
.workspace-user { display: inline-grid; place-items: center; width: 32px; height: 32px; flex: none; border-radius: 50%; background: var(--brand-soft); color: var(--brand-text); font-size: 12px; font-weight: 600; }
/* These three are the only clickable avatar/name elements on the page (the
 * "click to update your profile photo" affordance) — targeted by id, not a
 * shared class, since .avatar and .workspace-user/-name are also used for
 * plenty of non-clickable instances elsewhere. */
#meAvatar, #workspaceUserName, #workspaceUser { cursor: pointer; }
.workspace-heading-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.phead > .workspace-heading-actions { flex: 0 1 auto; justify-content: flex-end; margin-inline-start: auto; }
.workspace-heading-actions .btn { min-height: 42px; }
.shelf-toggle { display: flex; flex-wrap: wrap; gap: 6px; }
.workspace-label { font-size: 12px; letter-spacing: .14em; font-weight: 600; color: var(--ink-3); margin: 0 12px 0; }
/* 30px is the designed size, not a fixed one: the wordmark carries the firm's
 * own name now, so fitWordmark() shrinks it to whatever the rail can hold and
 * wraps it to a second line rather than letting "Shaurya Capital Partners LLP"
 * run out of the sidebar. nowrap would defeat both, and is applied only in the
 * .clip last resort (see the base rule) where one unbreakable word is cut. */
.wordmark { font-family: 'Manrope', var(--sans); font-size: var(--wordmark-size, 27px); font-weight: 700; letter-spacing: -.055em; }
.vmark { width: 24px; height: 30px; background: transparent; margin: 0; border-radius: 0; }
/* Sit the symbol on the wordmark's own line, not on the top of its box.
 * .brand top-aligns its children, and the two children are not the same
 * shape: the symbol is 30px of solid ink from its very first pixel, while
 * "verric" is a 30px face inside a 36px line box whose lowercase letters
 * only begin a few pixels down. Aligning the boxes therefore misaligned the
 * lockup -- the mark's apex rose above the "i" dot and the whole symbol read
 * as floating above the word. Half the wordmark's leading puts the two ink
 * centres on one axis, which is the relationship the mark is drawn for. */
.brand > .vmark { margin-block-start: 4px; }
/* The firm's own mark, in place of Verric's symbol: a rounded square holding
 * the firm's initial until a logo is put in, sized and offset to centre on the
 * wordmark's line the way the symbol above does. */
.brand > .vmark-firm { width: 32px; height: 32px; margin-block-start: 2px; border-radius: 8px; background: var(--brand); color: var(--on-brand); font-family: 'Manrope', var(--sans); font-size: 15px; font-weight: 700; letter-spacing: 0; }
/* A firm that has uploaded its own logo. No maroon field and no rounded
 * corners under it: those belong to the initial we draw in the firm's
 * absence, and a customer's own mark sitting on our brand colour inside our
 * corner radius is us restyling their logo. `contain` because a wide lockup
 * and a square badge both arrive through the same 32px box. */
.brand > .vmark-logo { background: transparent; border-radius: 0; }
.brand > .vmark-logo img { width: 100%; height: 100%; object-fit: contain; object-position: left center; }
.verric-symbol { display: block; width: 23px; height: 29px; position: relative; }
.verric-symbol::before { content: ''; position: absolute; top: 1px; border-inline: 11px solid transparent; border-top: 18px solid var(--ink); }
.verric-symbol::after { content: ''; position: absolute; bottom: 0; left: 8px; border-inline: 4px solid transparent; border-top: 7px solid var(--brand); }
.workspace-nav-divider { height: 1px; background: var(--rule); margin: 12px 8px; }
.nav-count { margin-inline-start: auto; font-size: 12px; min-width: 22px; border-radius: 4px; padding: 1px 4px; text-align: center; background: var(--brand-soft); color: var(--brand-text); }
.assistant-mini { display: flex; align-items: center; gap: 8px; width: 100%; text-align: start; padding: 12px; margin-bottom: 12px; border: 1px solid var(--rule); border-radius: 8px; background: var(--paper); color: var(--ink); }
.assistant-mini strong { font-size: 13px; font-weight: 600; }
.assistant-mini small { display: block; font-size: 12px; color: var(--ink-3); margin-top: 2px; line-height: 1.6; }
.assistant-orb { width: 34px; height: 34px; display: grid; place-items: center; flex: none; font-size: 27px; color: var(--brand-text); background: var(--brand-soft); border-radius: 8px; }
.assistant-arrow { margin-inline-start: auto; color: var(--ink-3); font-size: 19px; }
@media (min-width: 761px) {
  .sidenav { width: 240px; padding: 0 12px 16px; gap: 12px; }
  /* padding-block, not just min-height: the 88px band centres a one-line
   * wordmark with 9px of air above it, and a three-line one is TALLER than the
   * band -- so without padding it grew flush against the top edge of the
   * window. This keeps the same air at every name length. */
  .sidenav-top { align-items: center; min-height: 88px; padding-block: 8px; gap: 0; }
  .sidenav-top .brand { gap: 8px; padding-inline-start: 8px; }
  .side-toggle { width: 28px; height: 32px; }
  .sidenav nav { gap: 4px; }
  .sidenav nav button { min-height: 44px; padding: 12px 12px; font-size: 15px; gap: 12px; border-radius: 8px; }
  .sidenav nav button svg { width: 18px; height: 18px; stroke-width: 1.5; }
  .sidenav nav button[aria-current="true"] { border: 0; padding-inline-start: 12px; background: var(--nav-active); box-shadow: none; font-weight: 600; }
  .sidefoot .me { margin-bottom: 2px; }
  .sidefoot .reset { font-size: 13px; }
  html[data-sidebar="collapsed"] .workspace-label, html[data-sidebar="collapsed"] .nav-count, html[data-sidebar="collapsed"] .assistant-arrow { display: none; }
  html[data-sidebar="collapsed"] .sidenav .brand > .vmark { display: flex; }
  html[data-sidebar="collapsed"] .assistant-mini { padding: 6px; justify-content: center; border: 0; background: transparent; }
  html[data-sidebar="collapsed"] .sidenav nav button[aria-current="true"] { padding-inline: 0; }
}
/* Firm logo card (Settings). The preview is the rail's own 32px box shown at
 * 48px, which is a compromise: at 32 nobody can judge the file they just
 * picked, and much larger sells detail the sidebar will never render. */
.logo-row { display: flex; align-items: flex-start; gap: 16px; margin-top: 16px; flex-wrap: wrap; }
.logo-prev { width: 48px; height: 48px; flex: none; display: grid; place-items: center; overflow: hidden; }
.logo-prev img { width: 100%; height: 100%; object-fit: contain; object-position: left center; }
.logo-prev-empty { border-radius: 8px; background: var(--brand); color: var(--on-brand); font-family: 'Manrope', var(--sans); font-size: 19px; font-weight: 700; }
.logo-ctl { flex: 1; min-width: 240px; }
.logo-ctl .deal-actions { margin: 0; }
.logo-ctl .set-note { margin-top: 8px; }

#view-terminal .metrics { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; background: var(--card); border: 1px solid var(--rule); border-radius: 8px; overflow: hidden; margin-bottom: 24px; }
#view-terminal .metric { border: 0; border-inline-end: 1px solid var(--rule); border-radius: 0; background: transparent; padding: 20px 24px; }
#view-terminal .metric:last-child { border-inline-end: 0; }
#view-terminal .metric .k { font-size: 13px; font-weight: 400; }
#view-terminal .metric .v { color: var(--ink); font-family: 'Manrope', var(--sans); font-size: 27px; font-weight: 600; line-height: 1.2; margin-block: 8px 6px; }
#view-terminal .metric .d { font-size: 12px; }
.workspace-review-grid { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(300px, 1fr); gap: 20px; align-items: stretch; margin-bottom: 24px; }
.workspace-panel { min-width: 0; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); overflow: hidden; }
.workspace-panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 20px 24px; border-bottom: 1px solid var(--rule); }
.workspace-panel-heading h2 { font-size: 15px; margin: 0; }
.workspace-panel-bottom { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; border-top: 1px solid var(--rule); padding: 16px 24px; color: var(--ink-3); font-size: 13px; }
.workspace-link { border: 0; padding: 4px 0; background: transparent; color: var(--brand-text); font: inherit; font-size: 13px; font-weight: 600; cursor: pointer; }
.workspace-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.workspace-link:focus-visible, .assistant-mini:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.workspace-decision { padding: 24px 24px; display: flex; flex-direction: column; border-color: var(--bad-line); background: var(--decision-surface); }
.decision-eyebrow { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; font-size: 12px; color: var(--ink-3); letter-spacing: .09em; font-weight: 600; }
.decision-eyebrow span:first-child { color: var(--brand-text); letter-spacing: .01em; }
.workspace-decision h2 { font-size: 27px; font-weight: 600; letter-spacing: -.7px; line-height: 1.4; margin: 20px 0 12px; max-width: 480px; }
.decision-description { font-size: 15px; color: var(--ink-2); line-height: 1.6; margin: 0 0 20px; }
.decision-financials { display: grid; grid-template-columns: 1.2fr 1fr .85fr; gap: 16px; border-block: 1px solid var(--rule); padding: 16px 0; margin-bottom: 20px; }
.decision-financials small { font-size: 13px; color: var(--ink-3); display: block; line-height: 1.4; }
.decision-financials strong { display: block; font: 600 27px/1.6 'Manrope', var(--sans); letter-spacing: -.035em; margin-top: 6px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.decision-actions { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; margin-top: auto; }
.decision-actions > div { display: flex; align-items: center; flex-wrap: wrap; gap: 20px; }
.decision-owner { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--ink-3); }
.workspace-workforce { display: flex; flex-direction: column; }
#workspaceQueue { flex: 1; }
.workspace-work-row { display: flex; align-items: center; gap: 12px; margin: 0 20px; padding: 16px 0; border-bottom: 1px solid var(--rule); font-size: 13px; }
.workspace-work-row:last-child { border-bottom: 0; }
.workspace-work-row > div { flex: 1; min-width: 0; }
.workspace-work-row strong { display: block; font-weight: 600; overflow-wrap: anywhere; line-height: 1.6; }
.workspace-work-row p { margin-top: 2px; font-size: 13px; color: var(--ink-3); overflow-wrap: anywhere; line-height: 1.6; }
.workspace-work-row .badge { flex-shrink: 0; }
.workforce-icon { width: 36px; height: 36px; display: inline-grid; place-items: center; flex: none; background: var(--brand-soft); color: var(--brand-text); font-size: 27px; border-radius: 8px; }
.workforce-empty { padding: 24px 24px; display: flex; flex-direction: column; align-items: start; gap: 8px; }
.workforce-empty strong { font-size: 15px; font-weight: 600; }
.workforce-empty p { font-size: 13px; line-height: 1.6; color: var(--ink-3); }
.workspace-date { color: var(--ink-3); font-size: 13px; text-align: end; }
.workspace-empty { padding: 20px 24px; color: var(--ink-3); font-size: 13px; line-height: 1.6; }
.workspace-calendar-panel { margin-top: 24px; }
.workspace-section-heading { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; margin: 24px 0 12px; }
.workspace-section-heading h2 { font-size: 15px; margin: 0; }
.workspace-count { display: inline-block; margin-inline-start: 4px; font: 500 12px var(--sans); border: 1px solid var(--rule); border-radius: 4px; padding: 2px 6px; color: var(--ink-3); vertical-align: middle; }
#view-terminal .controls { margin-block: 12px; }
#view-terminal .pipe { margin-bottom: 12px; }
.terminal-table-wrap { border-radius: 8px; }
.terminal-table th, .terminal-table td { font-size: 13px; padding: 16px 16px; }
.terminal-table thead th { font-size: 12px; letter-spacing: .035em; text-transform: uppercase; padding-block: 12px; background: var(--card); color: var(--ink-3); }
.opportunity-link { font-size: 15px; }
.opportunity-sub { font-size: 12px; }
.terminal-table-note { font-size: 12px; }
.workspace-panel .attn { margin: 0; padding: 6px 24px; gap: 0; }
.workspace-panel .attn-row { border: 0; border-bottom: 1px solid var(--rule); border-radius: 0; padding: 20px 0; gap: 12px; flex-wrap: wrap; min-width: 0; background: transparent; }
.workspace-panel .attn-row:last-child { border-bottom: 0; }
.workspace-panel .attn-row > div, .workspace-panel .attn-row > span { min-width: 0; overflow-wrap: anywhere; }
.workspace-panel .attn-row .tag { flex-shrink: 0; }
.workspace-panel .attn-row .act { font-size: 13px; color: var(--brand-text); }
.workforce-owners { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.workforce-owner { display: flex; align-items: start; gap: 12px; padding: 24px; }
.workforce-owner h2 { font-size: 15px; overflow-wrap: anywhere; }
.workforce-owner p, .workforce-owner small { display: block; font-size: 13px; color: var(--ink-3); margin-top: 4px; }
.workforce-owner .workspace-user { width: 40px; height: 40px; }
/* Screening and communication stay in the same working surface. */
#view-memo > .card { max-width: none !important; padding: 24px; }
#view-memo .dropzone { padding: 24px; border-radius: 8px; background: var(--paper); }
#view-memo .np-f span, #view-new .np-f span, .np-check-h { font-size: 13px; }
#view-memo .np-f input, #view-memo .np-f select { font-size: 15px; min-height: 44px; }
.msgs-shell { gap: 0; border: 1px solid var(--rule); border-radius: 8px; overflow: hidden; background: var(--card); }
.msgs-sidebar { padding: 20px; width: 280px; align-self: stretch; border-inline-end: 1px solid var(--rule); }
.msgs-main { border: 0; border-radius: 0; margin: 0; min-height: 610px; }
.msgs-thread-head { padding: 16px 24px; }
.thread-item { padding: 12px; border-radius: 8px; }
.msg, .msg.user, .msg-prose { font-size: 15px; }
.chatin input { font-size: 15px; min-height: 44px; border-radius: 8px; }
.suggest button { font-size: 13px; padding: 8px 12px; border-radius: 8px; }
.section-label { font-size: 13px; }
html[data-density="compact"] .workspace-work-row { padding-block: 12px; }
html[data-density="compact"] .terminal-table th, html[data-density="compact"] .terminal-table td { padding-block: 8px; }
html[data-density="compact"] #view-terminal .metric { padding-block: 12px; }
@media (max-width: 1000px) {
  main { padding: 24px 24px 50px; }
  .workspace-topbar { padding-inline: 24px; }
  #view-terminal .metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #view-terminal .metric:nth-child(2) { border-inline-end: 0; }
  #view-terminal .metric:nth-child(-n+2) { border-bottom: 1px solid var(--rule); }
  .workspace-review-grid { grid-template-columns: minmax(0, 1fr); }
  .workforce-owners { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 860px) {
  .msgs-sidebar { width: 100%; border-inline-end: 0; border-bottom: 1px solid var(--rule); }
  .msgs-main { width: 100%; }
}
@media (max-width: 760px) {
  main { padding: 20px 16px 42px; }
  h1, .hello { font-size: 27px; }
  .sidenav { padding: 12px; gap: 8px; height: auto; }
  .sidenav-top .brand { gap: 8px; }
  .sidenav nav { min-width: 0; }
  .sidenav nav button { min-height: 44px; border-radius: 8px; }
  .workspace-label, .workspace-nav-divider, .assistant-mini { display: none; }
  .sidefoot { gap: 8px; }
  .sidefoot .reset { min-height: 40px; }
  .workspace-topbar { position: static; padding: 12px 16px; gap: 8px; min-height: 56px; }
  .workspace-breadcrumb { flex: 1; }
  .workspace-breadcrumb > span, .workspace-user-name, .workspace-refresh, .workspace-keycap { display: none; }
  .workspace-actions { gap: 12px; }
  .phead { align-items: start; gap: 16px; }
  .phead > .workspace-heading-actions { flex-basis: 100%; margin-inline-start: 0; justify-content: flex-start; }
  #view-terminal .metric { padding: 16px; }
  #view-terminal .metric .v { font-size: 27px; }
  .metric .k, .metric .d { overflow-wrap: anywhere; }
  .workspace-decision { padding: 20px; }
  .workspace-decision h2 { font-size: 27px; }
  .decision-financials { gap: 12px; }
  .decision-financials strong { font-size: 19px; }
  .workspace-work-row { flex-wrap: wrap; }
  .workspace-work-row > div { flex-basis: 140px; }
  .workforce-owners { grid-template-columns: 1fr; }
  .card, .memo-wrap, #view-memo > .card { padding: 16px; }
  .chatlog { padding: 16px; }
  .chatin { flex-wrap: wrap; gap: 8px; }
  .chatin input:not([type="file"]) { flex-basis: 150px; }
  .foot { padding: 16px; }
}
@media (max-width: 379px) {
  #view-terminal .metrics { grid-template-columns: 1fr; }
  #view-terminal .metric { border-inline-end: 0; border-bottom: 1px solid var(--rule); }
  #view-terminal .metric:last-child { border-bottom: 0; }
  .decision-financials { grid-template-columns: 1fr; }
}
@media print {
  :root { --paper: #fff; --card: #fff; --ink: #16140f; --ink-2: #444; --ink-3: #555; --rule: #ccc; }
  main { padding: 0; max-width: none; }
  .memo-wrap { border: none; padding: 0; }
  .workspace-topbar { display: none; }
}

/* Workflow layouts from the approved demo. Existing controls and handlers
   move with these wrappers; there is no second client or sample backend. */
.workspace-pipeline-tools { margin-bottom: 12px; }
.workspace-pipeline-tools > summary { cursor: pointer; font-size: 13px; color: var(--ink-3); padding: 4px 0; width: fit-content; }
.workspace-pipeline-tools[open] { padding: 12px 16px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.workspace-screen-intake { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px; margin-top: 20px; }
.workspace-screen-intake .np-grid { grid-template-columns: minmax(0, 1fr); }
.workspace-screen-intake > div, .workspace-screen-intake .np-f { min-width: 0; }
.workspace-screen-intake input, .workspace-screen-intake select { min-width: 0; max-width: 100%; }
.workspace-screen-intake input[type="file"] { width: 100%; }
.workspace-screen-intake .section-label:first-child { margin-top: 0 !important; }
.analyst-layout { display: grid; grid-template-columns: minmax(0, 1fr) 295px; gap: 20px; margin-top: 24px; align-items: start; }
.analyst-conversation { grid-column: 1; grid-row: 1; min-width: 0; }
.analyst-context { grid-column: 2; grid-row: 1; min-width: 0; }
.analyst-context > .card { padding: 20px; }
.analyst-context .an-head { flex-wrap: wrap; gap: 12px; }
.analyst-context .an-head > div { min-width: 0 !important; flex-basis: 140px !important; }
.analyst-context .mdl-grid { grid-template-columns: 1fr; }
.analyst-context .byok { flex-wrap: wrap; }
.analyst-conversation > .chatbox { margin-top: 0; min-height: 560px; }
.analyst-conversation .chatlog { min-height: 340px; max-height: 60vh; }
.analyst-conversation .proto-note { margin-top: 12px; font-size: 13px; }
@media (min-width: 1600px) {
  main { padding: 40px 46px 55px; }
  .workspace-topbar { padding-inline: 46px; }
  .workspace-decision h2 { font-size: 27px; max-width: 590px; }
  #view-terminal .metric { padding: 24px 24px; }
}
@media (min-width: 1001px) and (max-width: 1250px) {
  .workspace-review-grid { grid-template-columns: minmax(0, 1.4fr) minmax(280px, 1fr); gap: 16px; }
  .decision-actions { gap: 8px; }
}
@media (max-width: 1000px) {
  .analyst-layout { grid-template-columns: minmax(0, 1fr); }
  .analyst-conversation, .analyst-context { grid-column: 1; grid-row: auto; }
  .analyst-conversation { order: 0; }
  .analyst-context { order: 1; }
}
@media (max-width: 760px) {
  .workspace-screen-intake { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .decision-financials { grid-template-columns: 1fr 1fr; }
}
@media print {
  .workspace-pipeline-tools, .analyst-context { display: none; }
}

/* The reference uses a header menu and a drawer on narrow screens. */
.workspace-breadcrumb .side-toggle { display: inline-flex; width: 32px; height: 36px; min-width: 32px; margin-inline-end: 8px; border: 0; background: transparent; color: var(--ink-3); align-items: center; justify-content: center; }
.workspace-breadcrumb .side-toggle svg { width: 20px; height: 20px; }
.side-close, .sidebar-backdrop { display: none; }
.workspace-calendar-panel #deadlineStrip { margin: 16px 24px 0; }
@media (max-width: 760px) {
  .shell { display: block; }
  .content { min-width: 0; width: 100%; }
  .sidenav { position: fixed; z-index: 190; inset: 0 auto 0 0; width: min(280px, 86vw); height: 100dvh; padding: 0 12px 20px; display: flex; flex-direction: column; align-items: stretch; gap: 12px; overflow-y: auto; border-inline-end: 1px solid var(--rule); border-bottom: 0; transform: translateX(-100%); visibility: hidden; transition: transform .18s ease, visibility .18s ease; }
  html[dir="rtl"] .sidenav { inset: 0 0 0 auto; transform: translateX(100%); }
  html[data-mobile-nav="open"] .sidenav { transform: translateX(0); visibility: visible; }
  html[data-mobile-nav="open"], html[data-mobile-nav="open"] body { overflow: hidden; }
  .sidenav .sidenav-top { min-height: 78px; align-items: center; flex-direction: row; }
  .sidenav .brand { display: flex; padding: 0 8px; }
  .sidenav .wordmark { display: block; }
  .sidenav .workspace-label { display: block; }
  .sidenav nav { display: flex; flex-direction: column; flex: 1 0 auto; overflow: visible; gap: 4px; }
  .sidenav nav button { padding: 12px 12px; font-size: 15px; white-space: normal; }
  .sidenav .workspace-nav-divider { display: block; }
  .sidenav .sidefoot { display: flex; flex-direction: column; align-items: stretch; }
  .sidenav .assistant-mini { display: flex; }
  .sidenav .me { display: flex; padding: 12px 0; gap: 8px; }
  .sidenav .me > div { display: block; }
  .side-close { display: inline-flex; flex-shrink: 0; width: 44px; height: 44px; align-items: center; justify-content: center; background: transparent; border: 0; color: var(--ink-2); }
  .side-close svg { width: 20px; height: 20px; }
  .sidebar-backdrop:not([hidden]) { display: block; position: fixed; inset: 0; z-index: 180; background: rgba(0, 0, 0, .55); border: 0; padding: 0; width: 100%; height: 100%; }
  .workspace-topbar { position: sticky; top: 0; z-index: 40; }
  .workspace-breadcrumb .side-toggle { display: inline-flex; width: 44px; height: 44px; margin-inline-start: -8px; margin-inline-end: 0; }
  .workspace-breadcrumb strong { font-size: 13px; }
  .workspace-actions { gap: 4px; }
  .workspace-actions > .btn { min-width: 40px; padding-inline: 8px; }
}
@media (prefers-reduced-motion: reduce) { .sidenav { transition: none; } }
@media print { .sidebar-backdrop, .side-close { display: none !important; } }

.msg-history-notice { font-size: 12px; color: var(--ink-3); padding: 8px 24px; border-bottom: 1px solid var(--rule); }
@media print {
  html:root { --paper: #fff; --card: #fff; --field: #fff; --ink: #16140f; --ink-2: #444; --ink-3: #555; --rule: #ccc; --brand-text: #78283b; --brand-ink: #78283b; }
}

/* Luai's layout additions. The tab list groups the four setup screens under
 * "Firm setup" (a <details>, styled by the base sheet), and the Ask Vera card
 * opens the Analyst's own chat box in a side panel over the current screen
 * instead of leaving it. Nothing behind the panel is dimmed or blocked. */
.eyebrow { font-size: 12px; line-height: 1.4; font-weight: 600; color: var(--ink-3); letter-spacing: .01em; }
.assistant-mini[aria-expanded="true"] { border-color: var(--brand); background: var(--brand-soft); }
.vera-drawer { position: fixed; top: 0; bottom: 0; inset-inline-end: 0; width: min(480px, 100vw); z-index: 95; background: var(--card); border-inline-start: 1px solid var(--rule); box-shadow: 0 24px 60px rgba(22, 20, 15, .28); display: flex; flex-direction: column; animation: drawerin .18s ease; }
@keyframes drawerin { from { transform: translateX(24px); opacity: 0; } to { transform: none; opacity: 1; } }
[dir="rtl"] .vera-drawer { animation-name: drawerin-rtl; }
@keyframes drawerin-rtl { from { transform: translateX(-24px); opacity: 0; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .vera-drawer { animation: none; } }
.vera-drawer-h { display: flex; align-items: center; gap: 12px; padding: 16px 16px 12px; border-bottom: 1px solid var(--rule); }
.vera-drawer-h .an-av { width: 36px; height: 36px; font-size: 15px; }
.vera-drawer-hd { flex: 1; min-width: 0; }
.vera-drawer-t { font-size: 19px; font-weight: 600; line-height: 1.2; letter-spacing: -.01em; }
.vera-drawer-note { font-size: 13px; color: var(--ink-3); padding: 8px 16px 0; line-height: 1.6; }
.vera-drawer-b { flex: 1; min-height: 0; display: flex; flex-direction: column; padding: 8px 12px 12px; }
.vera-drawer .chatbox { flex: 1; min-height: 0; margin-top: 0; }
.vera-drawer .chatlog { max-height: none; }
.attn-empty { border: 1px solid var(--rule); border-radius: 8px; background: var(--card); padding: 20px 16px; min-height: 64px; display: flex; align-items: center; font-size: 13px; color: var(--ink-3); }
@media (max-width: 760px) { .vera-drawer { width: 100vw; } }
/* On a phone the attention row's text block takes the whole width and the
 * action buttons wrap beneath it; letting it share the row squeezed the
 * sentence into a 100px column beside three buttons. */
@media (max-width: 760px) { .attn-row > div { flex: 1 1 100% !important; } .attn-row .btn { flex: 0 0 auto; } }
/* The Vera panel's conversation scrolls inside its own box. macOS hides
 * overlay scrollbars until you move, so a long conversation looked cut off
 * with no sign there was more. A drawn track keeps the scrollbar in view. */
.vera-drawer .chatlog { overflow-y: scroll; scrollbar-width: thin; scrollbar-color: var(--rule-2) var(--paper); scrollbar-gutter: stable; }
.vera-drawer .chatlog::-webkit-scrollbar { width: 10px; display: block; }
.vera-drawer .chatlog::-webkit-scrollbar-track { background: var(--paper); border-radius: 4px; }
.vera-drawer .chatlog::-webkit-scrollbar-thumb { background: var(--rule-2); border-radius: 4px; border: 2px solid var(--paper); }
.vera-drawer .chatlog::-webkit-scrollbar-thumb:hover { background: var(--ink-3); }
/* With the panel open the page keeps its full width and gains a sideways
 * scroll instead of reflowing: the content column becomes its own scroll area,
 * as tall as the window, so its horizontal scrollbar sits pinned to the bottom
 * edge where it can be seen, and <main> gets a strip the width of the panel on
 * its right so the part the panel covers can be scrolled into view. The
 * measurements come from the script when the panel opens (the column's width
 * and offset with the panel closed), so the layout under the panel is exactly
 * the layout without it. Below 761px the panel is full width; nothing to do. */
@media (min-width: 761px) {
  body.vera-open .content { height: 100vh; overflow: auto; scrollbar-width: thin; scrollbar-color: var(--rule-2) var(--paper); }
  body.vera-open .content::-webkit-scrollbar { width: 12px; height: 12px; display: block; }
  body.vera-open .content::-webkit-scrollbar-track { background: var(--paper); }
  body.vera-open .content::-webkit-scrollbar-thumb { background: var(--rule-2); border-radius: 4px; border: 2px solid var(--paper); }
  body.vera-open .content::-webkit-scrollbar-thumb:hover { background: var(--ink-3); }
  body.vera-open main { width: calc(var(--vera-main-w) + 480px); max-width: none; margin-inline-start: var(--vera-main-ml); margin-inline-end: 0; padding-inline-end: calc(var(--vera-main-pe) + 480px); }
}

/* ── Portfolio economics + Import history (docs/HISTORICAL-IMPORT.md) ──
   Additive. The Historical pill every deal list wears, the nested add-on
   row on the Portfolio shelf, the investment card on a closed deal's page,
   and the four-step import screen. Colours are the app's own tokens so the
   dark theme and the contrast setting follow for free. */
.pill-hist { background: var(--brand-soft); color: var(--brand-ink); display: inline-flex; align-items: center; gap: 6px; }
.pill-hist-src { border: 0; background: transparent; color: inherit; font: inherit; font-size: 11px; text-decoration: underline; cursor: pointer; padding: 0; }
.pill-hist-src:hover { opacity: .8; }
.pf-metrics { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (max-width: 1439px) { .pf-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 1023px) { .pf-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .pf-metrics { grid-template-columns: minmax(0, 1fr); } }
table.pf-table { min-width: 1180px; }
.pf-table tbody tr.pf-addon > td { background: var(--paper); color: var(--ink-2); font-size: 12px; }
.pf-table tbody tr.pf-addon > td:first-child { padding-inline-start: 24px; }
.pf-addon-mark { color: var(--ink-3); margin-inline-end: 2px; }
.pf-table .badge { margin-inline-start: 6px; vertical-align: middle; }

.inv-card { margin-top: 8px; }
.inv-vehicle { border: 1px solid var(--rule); border-radius: 4px; padding: 12px 16px; margin-top: 8px; background: var(--card); }
.inv-vehicle-h { display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap; align-items: center; }
.inv-vehicle-h .inv-name { font-weight: 600; font-size: 13px; }
.inv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px 12px; margin-top: 12px; }
.inv-grid .k { font-size: 11px; color: var(--ink-3); text-transform: uppercase; letter-spacing: .04em; }
.inv-grid .v { font-size: 15px; font-weight: 500; font-variant-numeric: tabular-nums; margin-top: 2px; }
.inv-grid .d { font-size: 11px; color: var(--ink-3); margin-top: 1px; }
.inv-flows { width: 100%; border-collapse: collapse; margin-top: 8px; font-size: 12px; }
.inv-flows th, .inv-flows td { text-align: start; padding: 6px 8px; border-bottom: 1px solid var(--rule); }
.inv-flows th { font-size: 11px; color: var(--ink-3); text-transform: uppercase; letter-spacing: .04em; font-weight: 600; }
.inv-flows td.num, .inv-flows th.num { text-align: end; font-variant-numeric: tabular-nums; }
.inv-flow-add { display: grid; grid-template-columns: 150px 170px 160px 1fr auto; gap: 8px; align-items: end; margin-top: 8px; }
@media (max-width: 900px) { .inv-flow-add { grid-template-columns: 1fr 1fr; } }
.inv-flow-add input, .inv-flow-add select { font: inherit; font-size: 13px; padding: 6px 8px; border: 1px solid var(--rule-2); border-radius: 4px; background: var(--field); color: var(--ink); width: 100%; }
.inv-flag { color: var(--warn); cursor: help; }
.form-group-h { font-size: 12px; font-weight: 600; color: var(--ink-2); letter-spacing: .04em; text-transform: uppercase; grid-column: 1 / -1; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--rule); }
.form-group-h:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.np-f textarea { font: inherit; font-size: 13px; padding: 8px 8px; border: 1px solid var(--rule-2); border-radius: 8px; background: var(--field); color: var(--ink); }
.np-f .hint { font-size: 11px; color: var(--ink-3); text-transform: none; letter-spacing: 0; }
/* Upload box at the end of the Looking for form (src/lib/sourcing/profileFromFiles.ts). */
.np-f-files { margin-top: 12px; }
.np-f-files-action { margin-top: 6px; }
.np-f-files-action .btn[hidden] { display: none; }

.imp-steps { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 16px; }
.imp-step { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: var(--ink-3); padding: 6px 12px; border: 1px solid var(--rule); border-radius: 4px; background: var(--card); }
.imp-step .n { width: 18px; height: 18px; border-radius: 50%; border: 1px solid var(--rule-2); display: inline-flex; align-items: center; justify-content: center; font-size: 11px; }
.imp-step.on { color: var(--ink); border-color: var(--brand); background: var(--brand-soft); }
.imp-step.on .n { background: var(--brand); color: #fff; border-color: var(--brand); }
.imp-step.done { color: var(--ink-2); }
.imp-step.done .n { background: var(--ok-soft); color: var(--ok); border-color: var(--ok-line); }
.imp-batch { display: flex; align-items: center; gap: 12px; padding: 12px 12px; border: 1px solid var(--rule); border-radius: 4px; background: var(--card); margin-bottom: 8px; cursor: pointer; text-align: start; width: 100%; font: inherit; color: var(--ink); }
.imp-batch:hover { background: var(--paper); }
.imp-batch .t { display: block; font-weight: 600; font-size: 13px; }
.imp-batch .m { display: block; font-size: 12px; color: var(--ink-3); margin-top: 2px; }
.imp-batch .counts { margin-inline-start: auto; font-size: 12px; color: var(--ink-2); font-variant-numeric: tabular-nums; white-space: nowrap; }
.imp-progress { display: flex; align-items: center; gap: 8px; padding: 12px 12px; border: 1px dashed var(--rule-2); border-radius: 4px; font-size: 13px; color: var(--ink-2); margin: 12px 0; }
.imp-progress .spin { width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--rule-2); border-top-color: var(--brand); animation: impspin .9s linear infinite; flex: none; }
@keyframes impspin { to { transform: rotate(360deg); } }
.imp-files { list-style: none; margin: 8px 0 0; padding: 0; }
.imp-files li { display: flex; align-items: center; gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--rule); font-size: 13px; }
.imp-files li .fn { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.imp-drop { border: 1px dashed var(--rule-2); border-radius: 4px; padding: 16px; text-align: center; background: var(--paper); margin-top: 12px; }
.imp-drop input[type=file] { font-size: 13px; }
.imp-sheet { border: 1px solid var(--rule); border-radius: 4px; padding: 12px 16px; margin-top: 12px; background: var(--card); }
.imp-sheet.skipped { opacity: .6; }
.imp-sheet-h { display: flex; justify-content: space-between; gap: 8px; align-items: center; flex-wrap: wrap; }
.imp-sheet-h .t { font-weight: 600; font-size: 13px; }
.imp-map { width: 100%; border-collapse: collapse; margin-top: 8px; font-size: 12px; }
.imp-map th, .imp-map td { text-align: start; padding: 6px 8px; border-bottom: 1px solid var(--rule); vertical-align: top; }
.imp-map th { font-size: 11px; color: var(--ink-3); text-transform: uppercase; letter-spacing: .04em; font-weight: 600; }
.imp-map .hdr { font-weight: 600; }
.imp-map .samples { font-size: 11px; color: var(--ink-3); margin-top: 2px; font-variant-numeric: tabular-nums; }
.imp-map select { font: inherit; font-size: 12px; padding: 4px 8px; border: 1px solid var(--rule-2); border-radius: 4px; background: var(--field); color: var(--ink); max-width: 100%; }
/* Eleven columns, and the two that matter most — the row's status and its
   decision — are the last two. They have to be on screen at 1440px, or the
   review table is a spreadsheet you scroll to act on. Everything else is
   squeezed to make room; the wrap still scrolls on a narrower window. */
.imp-review { min-width: 1020px; width: 100%; table-layout: fixed; }
.imp-review th, .imp-review td { padding-inline: 6px; vertical-align: top; overflow-wrap: anywhere; }
.imp-review th:nth-child(1) { width: 30px; }
.imp-review th:nth-child(2) { width: 13%; }
.imp-review th:nth-child(3) { width: 7%; }
.imp-review th:nth-child(4) { width: 7.5%; }
.imp-review th:nth-child(5), .imp-review th:nth-child(6), .imp-review th:nth-child(7) { width: 7.5%; }
.imp-review th:nth-child(8) { width: 13%; }
.imp-review th:nth-child(9) { width: 12.5%; }
.imp-review th:nth-child(10) { width: 13.5%; }
.imp-review th:nth-child(11) { width: 11%; }
.imp-review td .raw { display: none; font-size: 11px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.imp-review td:hover .raw { display: block; }
.imp-review td .sub { display: block; font-size: 11px; color: var(--ink-3); margin-top: 1px; }
.imp-review tbody tr.decided > td { color: var(--ink-3); }
.imp-review .badge { white-space: normal; text-align: start; }
.imp-review td:nth-child(10) .badge { margin: 1px 0; display: inline-block; max-width: 100%; }
.imp-review .radio-pair { display: flex; flex-direction: column; gap: 2px; font-size: 11px; margin-top: 4px; }
.imp-review .radio-pair label { display: flex; gap: 4px; align-items: flex-start; cursor: pointer; }
.imp-chip { display: inline-block; border-radius: 4px; padding: 1px 6px; font-size: 11px; background: var(--paper); border: 1px solid var(--rule); color: var(--ink-2); margin: 1px 2px 1px 0; max-width: 100%; }
.imp-actions { display: flex; gap: 4px; flex-wrap: wrap; }
.imp-actions .btn { font-size: 11px; padding: 2px 6px; }
.imp-filters { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.imp-footer { display: flex; justify-content: space-between; gap: 12px; align-items: center; flex-wrap: wrap; margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--rule); }
.imp-footer .why { font-size: 12px; color: var(--ink-3); max-width: 60ch; }
.imp-done-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.imp-cand { border: 1px solid var(--rule); border-radius: 4px; padding: 12px 16px; margin-top: 8px; background: var(--card); }
.imp-cand .ev { font-size: 12px; color: var(--ink-3); margin-top: 6px; }

/* ── Firm learning: the profile, the proposals, the precedent card ──
   Additive. Everything below reads a theme token; the tiles, the bench rows
   and the candidate card are the existing classes, this only arranges them. */
.fp-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; margin-top: 32px; }
.fp-head > div { flex: 1; min-width: 260px; }
.fp-tiles { margin-top: 8px; }
/* Six typical figures read as two rows of three, not four-and-two. The
   .metrics grid is a fixed four columns at every width, so this overrides it
   for this row only and steps down with the same breakpoints. */
.metrics.fp-tiles-typical { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 1023px) { .metrics.fp-tiles-typical { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .metrics.fp-tiles-typical { grid-template-columns: minmax(0, 1fr); } }
.metric .v.fp-none { font-family: inherit; font-size: 13px; color: var(--ink-3); padding-top: 6px; }
.fp-table-wrap { position: relative; overflow-x: auto; margin-top: 4px; }
.fp-table-wrap table.ab { margin-top: 0; }
.fp-table-wrap table.ab td { vertical-align: middle; }
.fp-suggest { align-items: flex-start; }
.fp-suggest .bl { width: 200px; }
.fp-suggest .fp-figures { font-family: var(--mono); font-size: 12px; font-variant-numeric: tabular-nums; color: var(--ink); }
.fp-cand-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.fp-cand-count { font-size: 12px; color: var(--ink-3); margin-inline-start: auto; }
.fp-cand-err { color: var(--bad); }
.fp-match { display: inline-block; font-size: 12px; border-radius: 999px; padding: 2px 8px; border: 1px solid var(--rule); background: var(--paper); color: var(--ink-2); white-space: nowrap; cursor: help; }
.fp-match-strong { background: var(--ok-soft); color: var(--ok); border-color: transparent; }
.fp-match-close { background: var(--brand-soft); color: var(--brand-ink); border-color: transparent; }
/* Restored Terminal and Team & agents working surfaces. */
.workforce-hint { color: var(--ink-3); font-size: 13px; line-height: 1.6; }
.workforce-members { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.workforce-member { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; padding: 20px 16px 16px; text-align: start; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); color: var(--ink); font: inherit; cursor: pointer; transition: border-color .15s, background .15s; }
.workforce-member:hover, .workforce-specialist:hover { border-color: var(--ink-3); }
.workforce-member.is-me { border-color: var(--rule-2); }
.workforce-member[aria-pressed="true"], .workforce-specialist[aria-pressed="true"] { border-color: var(--brand-text); box-shadow: 0 0 0 1px var(--brand-text); background: var(--decision-surface); }
.workforce-member > strong { margin-top: 20px; font-size: 15px; font-weight: 600; overflow-wrap: anywhere; }
.workforce-member-role { display: block; color: var(--ink-3); font-size: 13px; margin-top: 4px; line-height: 1.6; min-height: 2.8em; }
.workforce-avatar { display: inline-flex; align-items: center; justify-content: center; width: 42px; height: 42px; flex: none; border-radius: 50%; background: var(--field); color: var(--ink-2); font-size: 13px; font-weight: 600; }
.workforce-pair { display: flex; align-items: center; gap: 6px; width: 100%; border-top: 1px solid var(--rule); padding-top: 12px; margin-top: 20px; color: var(--ink-3); font-size: 13px; line-height: 1.6; }
.workforce-pair svg { width: 15px; height: 15px; flex: none; }
.workforce-pair > span:first-of-type { flex: 1; overflow-wrap: anywhere; }
.workforce-specialists { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.workforce-specialist { display: flex; align-items: center; gap: 12px; min-width: 0; text-align: start; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); color: var(--ink); padding: 20px; font: inherit; cursor: pointer; }
.workforce-specialist > span:nth-child(2) { flex: 1; min-width: 0; }
.workforce-specialist strong, .workforce-task-agent strong { display: block; font-size: 15px; font-weight: 600; }
.workforce-specialist small, .workforce-task-agent small { display: block; color: var(--ink-3); font-size: 13px; line-height: 1.6; margin-top: 4px; }
.workforce-icon svg { width: 22px; height: 22px; }
.tone-violet { background: var(--workforce-violet-soft); color: var(--workforce-violet-ink); }
.tone-blue { background: var(--workforce-blue-soft); color: var(--workforce-blue-ink); }
.tone-sage { background: var(--workforce-sage-soft); color: var(--workforce-sage-ink); }
.tone-amber { background: var(--workforce-amber-soft); color: var(--workforce-amber-ink); }
.tone-rose { background: var(--workforce-rose-soft); color: var(--workforce-rose-ink); }
.tone-neutral { background: var(--field); color: var(--ink-3); }
.workforce-filters { display: flex; gap: 8px; flex-wrap: wrap; }
.workforce-filters .btn { color: var(--ink-3); background: transparent; }
.workforce-filters .btn[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: var(--card); }
.workforce-selection { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding-bottom: 12px; color: var(--ink-2); font-size: 13px; }
.workforce-selection[hidden] { display: none; }
.workforce-table-wrap { border: 0; position: relative; max-width: 100%; overflow-x: auto; }
table.workforce-table { width: 100%; min-width: 760px; }
.workforce-table th:last-child, .workforce-table td:last-child { min-width: 48px; width: 48px; max-width: 48px; }
.workforce-table thead th { background: var(--paper); }
.workforce-table td { padding: 20px; vertical-align: middle; }
.workforce-table td:nth-child(2) { width: 44%; }
.workforce-task-agent { display: flex; gap: 12px; align-items: center; min-width: 150px; }
.workforce-task-agent .workforce-icon { width: 40px; height: 40px; }
.workforce-task-title { border: 0; background: none; color: var(--ink); font: inherit; font-size: 13px; line-height: 1.6; font-weight: 600; padding: 0; cursor: pointer; text-align: start; }
.workforce-task-title:hover { text-decoration: underline; text-underline-offset: 3px; }
.workforce-owner-avatars { display: flex; gap: 4px; }
.workforce-owner-avatars .workforce-avatar { width: 29px; height: 29px; font-size: 12px; }
.badge.wf-progress { background: var(--workforce-progress-soft); color: var(--workforce-progress-ink); }
.workforce-window { margin: 12px 0 0; }
.workforce-details { margin-top: 24px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.workforce-details > summary { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 16px; padding: 16px 20px; color: var(--ink); font-size: 15px; font-weight: 600; cursor: pointer; list-style: none; }
.workforce-details > summary::-webkit-details-marker { display: none; }
.workforce-details > summary::before { content: "▸"; color: var(--ink-3); }
.workforce-details[open] > summary::before { content: "▾"; }
.workforce-details > summary:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; border-radius: 8px; }
.workforce-details > summary .workforce-hint { margin-inline-start: auto; font-weight: 400; }
.workforce-details[open] > summary { border-bottom: 1px solid var(--rule); }
.workforce-details-body { padding: 0 20px 20px; }
@media (max-width: 600px) { .workforce-details > summary .workforce-hint { flex-basis: 100%; margin-inline-start: 20px; } .workforce-details-body { padding-inline: 12px; } }

.workforce-governance { display: flex; align-items: center; gap: 12px; padding: 20px 20px; margin-top: 24px; border: 1px solid var(--rule); border-radius: 8px; background: var(--field); font-size: 13px; color: var(--ink-3); }
.workforce-governance p { flex: 1; margin: 0; line-height: 1.6; }
.workforce-governance strong { color: var(--ink-2); }
.workforce-error { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 16px; border: 1px solid var(--bad-line); border-radius: 8px; background: var(--bad-soft); color: var(--ink); font-size: 13px; }
.workforce-detail-dialog { width: min(520px, calc(100vw - 32px)); background: var(--card); color: var(--ink); border: 1px solid var(--rule); border-radius: 8px; padding: 0; }
.workforce-detail-dialog::backdrop { background: rgb(0 0 0 / .45); }
.workforce-detail-body { padding: 20px; display: grid; gap: 16px; }
.workforce-detail-body p { margin: 0; line-height: 1.6; }
.workforce-detail-actions { display: flex; flex-wrap: wrap; gap: 8px; }
#view-terminal .metric .k { display: flex; align-items: center; gap: 8px; }
#view-terminal .metric .k svg { width: 16px; height: 16px; flex: none; }
#view-terminal .metric .v small { color: var(--ink-3); font-size: 19px; font-weight: 400; }
#view-terminal .workspace-decision { min-height: 340px; }
.decision-financials .decision-before strong { color: var(--ink-3); text-decoration: line-through; }
.decision-financials .decision-multiple strong { font-size: 15px; }
.decision-source-note { margin-top: 8px; color: var(--ink-3); font-size: 13px; line-height: 1.6; }
html[data-theme="dark"] .workforce-member, html[data-theme="dark"] .workforce-specialist,
html[data-theme="dark"] .workforce-table thead th, html[data-theme="dark"] .workforce-governance,
html[data-theme="dark"] .workforce-detail-dialog { background: var(--card); }
html[data-theme="dark"] .tone-violet, html[data-theme="dark"] .tone-blue, html[data-theme="dark"] .tone-sage,
html[data-theme="dark"] .tone-amber, html[data-theme="dark"] .tone-rose { background: var(--card); border: 1px solid var(--rule); }
html[data-theme="dark"] .tone-violet { color: var(--workforce-violet-ink); }
html[data-theme="dark"] .tone-blue { color: var(--workforce-blue-ink); }
html[data-theme="dark"] .tone-sage { color: var(--workforce-sage-ink); }
html[data-theme="dark"] .tone-amber { color: var(--workforce-amber-ink); }
html[data-theme="dark"] .tone-rose { color: var(--workforce-rose-ink); }
html[data-theme="dark"] .badge.wf-progress { background: var(--card); color: var(--workforce-blue-ink); border: 1px solid var(--rule); }
@media (prefers-color-scheme: dark) {
  html:not([data-theme="light"]) .workforce-member, html:not([data-theme="light"]) .workforce-specialist,
  html:not([data-theme="light"]) .workforce-table thead th, html:not([data-theme="light"]) .workforce-governance,
  html:not([data-theme="light"]) .workforce-detail-dialog { background: var(--card); }
  html:not([data-theme="light"]) .tone-violet, html:not([data-theme="light"]) .tone-blue,
  html:not([data-theme="light"]) .tone-sage, html:not([data-theme="light"]) .tone-amber,
  html:not([data-theme="light"]) .tone-rose, html:not([data-theme="light"]) .badge.wf-progress { background: var(--card); border: 1px solid var(--rule); }
  html:not([data-theme="light"]) .tone-violet { color: var(--workforce-violet-ink); }
  html:not([data-theme="light"]) .tone-blue, html:not([data-theme="light"]) .badge.wf-progress { color: var(--workforce-blue-ink); }
  html:not([data-theme="light"]) .tone-sage { color: var(--workforce-sage-ink); }
  html:not([data-theme="light"]) .tone-amber { color: var(--workforce-amber-ink); }
  html:not([data-theme="light"]) .tone-rose { color: var(--workforce-rose-ink); }
}
@media (max-width: 1250px) { .workforce-members { grid-template-columns: repeat(3, minmax(0, 1fr)); } .workforce-specialists { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) { .workforce-members { grid-template-columns: repeat(2, minmax(0, 1fr)); } .workforce-governance { align-items: flex-start; flex-wrap: wrap; } .workforce-table { min-width: 760px; } .workforce-table-wrap { overflow-x: auto; } .workforce-member { padding: 16px 12px; } }
@media (max-width: 440px) { .workforce-members, .workforce-specialists { grid-template-columns: 1fr; } .workforce-member-role { min-height: 0; } .workforce-filters { gap: 6px; } .workforce-filters .btn { font-size: 13px; padding-inline: 8px; } }

/* ── Who is staffed: the firm's roster above the list, and the same faces on
   each card ─────────────────────────────────────────────────────────────
   The roster sat inside the collapsed "Filters & pipeline stages"
   disclosure, so a firm's own team was two clicks from being visible at
   all. It now sits directly above the opportunities it filters, and a
   pressed chip has to look pressed — it filters the whole list below it.
   Colours are this app's own tokens (av-sh / av-ad / av-p5 in
   dashboard.html), not a second palette. */
.team-label {
  font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
  color: var(--ink-3); margin-inline-end: 2px;
}
.team .badge { display: inline-flex; align-items: center; gap: 6px; padding-inline-start: 2px; }
.team .badge .avatar { width: 20px; height: 20px; font-size: 10px; }
.team .badge:hover { border-color: var(--rule-2); }
.team .badge[aria-pressed="true"] {
  background: var(--brand-soft); color: var(--brand-ink);
  box-shadow: inset 0 0 0 1px var(--brand);
}
/* The card header's staffing stack. .avstack already overlaps and rings each
   face in the card colour; this only keeps it from stretching in the header's
   flex row and leaves a little air after the badges. */
.avstack { flex: none; align-self: center; margin-inline-start: 2px; }
/* The roster belongs to the list below it, not to the panels above: give it
   the section gap and let the heading sit close underneath. */
#view-terminal #teamRow { margin-top: 24px; }
#view-terminal #teamRow + .workspace-section-heading { margin-top: 12px; }

/* ── The work, grouped by opportunity ────────────────────────────────────
   The flat table ran to fifty-plus rows on a firm with four live deals —
   a dozen queued diligence tasks each, read one after another. Same rows,
   grouped under the opportunity they belong to, each group collapsible and
   headed by a count and a status tally. One table, one set of column
   widths: the groups are separate <tbody> elements, so the columns still
   line up across all of them. */
.workforce-table tbody.wf-group.is-collapsed .wf-item { display: none; }
.wf-group-head > th { padding: 0; border-bottom: 1px solid var(--rule); background: var(--paper); }
.workforce-table tbody.wf-group + tbody.wf-group .wf-group-head > th { border-top: 1px solid var(--rule); }
/* The table's row hover paints cells; a group heading is a control, and it
   has its own hover on the button. */
.workforce-table tbody tr.wf-group-head:hover > th { background: var(--paper); }
.wf-group-toggle {
  display: flex; align-items: center; gap: 8px; width: 100%;
  padding: 12px 16px; border: 0; background: none; font: inherit; color: var(--ink);
  text-align: start; cursor: pointer;
}
.wf-group-toggle:hover { background: var(--card); }
.wf-group-toggle:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
.wf-chev { color: var(--ink-3); font-size: 13px; line-height: 1; transition: transform .15s ease; }
.wf-group-toggle[aria-expanded="true"] .wf-chev { transform: rotate(90deg); }
.wf-group-name { font-weight: 600; font-size: 15px; }
.wf-group-count {
  border: 1px solid var(--rule); border-radius: 4px; padding: 1px 6px;
  font-size: 12px; color: var(--ink-3); font-variant-numeric: tabular-nums;
}
.wf-group-tally { margin-inline-start: auto; font-size: 12px; color: var(--ink-3); text-align: end; }
/* Live counts on the status filters — the shape of the list before you
   click anything. */
.wf-btn-count {
  margin-inline-start: 6px; padding: 1px 4px; border-radius: 4px;
  background: var(--rule); color: var(--ink-2);
  font-size: 11px; font-weight: 600; font-variant-numeric: tabular-nums;
}
.workforce-filters .btn[aria-pressed="true"] .wf-btn-count { background: var(--card); color: var(--ink); }
#workforceExpandAll { margin-inline-start: 4px; }
@media (max-width: 760px) {
  .wf-group-toggle { flex-wrap: wrap; gap: 6px 8px; padding-inline: 12px; }
  .wf-group-tally { margin-inline-start: 0; flex-basis: 100%; text-align: start; }
}

/* ── Folds on the opportunity page: hierarchy ────────────────────────────
   A fold's summary replaces a section label, so it renders as one — the
   same size, weight and colour .section-label ends up with in this layer.
   Labels INSIDE an open fold step down a size, so the parent outranks its
   children instead of the other way round. */
.deal-fold > summary { font-size: 13px; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--ink-2); }
.deal-fold > summary:hover { color: var(--ink); }
.deal-fold > summary .deal-fold-sub { font-size: 13px; font-weight: 500; }
.deal-fold-body .section-label { font-size: 13px; color: var(--ink-3); margin-top: 12px; }
.deal-fold-body .section-label:first-child { margin-top: 8px; }
.deal-fold-group > summary { font-size: 15px; color: var(--ink); }
.deal-fold-group > summary .deal-fold-sub { font-size: 13px; }
/* The opportunity page's tabs (dealTabsHtml): the connector tabs' look,
   with room above for the summary they sit under. */
.deal-tabs { margin: 24px 0 4px; flex-wrap: wrap; }
.deal-tab-panel > .deal-group:first-child, .deal-tab-panel > .section-label:first-child { margin-top: 16px; }
/* A live deal as one row (dealRowsHtml): the stage strip sits in its cell
   without its box, and the actions cell is only as wide as its buttons. */
.deal-rows { margin-bottom: 12px; }
.elsewhere-line { font-size: 12px; color: var(--ink-3); }
/* On a phone a criterion row (Thesis fit, benchmarks) wraps under its label
   instead of pushing its badges off the page. */
@media (max-width: 600px) {
  .bench-row { flex-wrap: wrap; }
  .bench-row .bl { width: 100%; }
}
.run-screen > summary { cursor: pointer; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; list-style: none; }
.run-screen > summary::-webkit-details-marker { display: none; }
.run-screen > summary::before { content: "+"; color: var(--brand-text); font-weight: 600; }
.run-screen[open] > summary::before { content: "\2212"; }
.run-screen-sub { font-size: 13px; color: var(--ink-2); }
/* On Overview "How it came in" sits under the First look and says the same
   thing, so the card's own line shows only when it is printed alone. */
[data-deal-tab="overview"] .first-look-came { display: none; }
@media print { [data-deal-tab="overview"] .first-look-came { display: block; } }
.elsewhere-line .workspace-link { font-size: 12px; padding: 0; }
.deal-row-stands .dfocus { margin: 0; padding: 0; border: 0; background: none; }
/* Fixed columns, so the tables of a grouped list line up one under another. */
.deal-rows table.terminal-table { table-layout: fixed; }
.deal-rows .dr-deal { width: 24%; } .deal-rows .dr-stage { width: 14%; } .deal-rows .dr-num { width: 9%; }
.deal-rows .dr-stands { width: 28%; } .deal-rows .dr-team { width: 9%; } .deal-rows .dr-act { width: 7%; }
.deal-rows-extra .dr-stands { width: 18%; } .deal-rows-extra .dr-act { width: 17%; }
.deal-rows .terminal-table th:first-child, .deal-rows .terminal-table td:last-child { min-width: 0; max-width: none; }
.terminal-table td.deal-row-actions { min-width: 0; width: 1%; white-space: nowrap; text-align: end; }
.deal-row-actions .btn + .row-menu { margin-inline-start: 6px; }
.row-menu { display: inline-flex; align-items: center; gap: 6px; vertical-align: middle; }
.row-menu-list { display: inline-flex; gap: 6px; }
/* What's behind it: the trace panel (openTrace) and the links that open it. */
.trace-link { background: none; border: 0; padding: 0; font: inherit; color: var(--brand-text); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; text-align: start; }
.trace-link:hover { color: var(--ink); }
/* Targets: a company's site and each reason's source, in the app's link colour. */
.target-link { color: var(--brand-text); text-decoration: none; }
.target-link:hover { text-decoration: underline; text-underline-offset: 2px; }
.trace-link:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; border-radius: 4px; }
.trace-body { flex: 1; overflow-y: auto; padding: 16px; }
.trace-body .section-label { margin-top: 16px; }
.trace-facts { font-size: 13px; color: var(--ink-2); margin: 4px 0 0; }
.trace-text { font-size: 13px; color: var(--ink-2); line-height: 1.6; margin-top: 12px; }
.trace-list { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 13px; }
.trace-quote { margin: 12px 0 0; padding: 8px 12px; border-inline-start: 2px solid var(--rule); color: var(--ink-2); font-size: 13px; line-height: 1.6; }
.trace-actions { margin-top: 16px; flex-wrap: wrap; }
.task-trace { flex: none; background: none; border: 0; border-radius: 4px; color: var(--ink-3); cursor: pointer; padding: 2px 6px; font: inherit; }
.task-trace:hover, .task-trace:focus-visible { color: var(--brand-text); background: var(--paper); }
/* The deal's back button and its "⋯ More" menu, on one row (2026-10). */
.deal-head-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.deal-more { position: relative; }
.deal-more > summary { list-style: none; cursor: pointer; }
.deal-more > summary::-webkit-details-marker { display: none; }
.deal-more-body { position: absolute; inset-inline-end: 0; top: calc(100% + 6px); z-index: 20; display: flex; flex-direction: column; align-items: stretch; gap: 8px; min-width: 260px; padding: 12px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.deal-more-move { display: flex; gap: 6px; align-items: center; }
.deal-more-move select { flex: 1; min-width: 0; }
/* The screens inside a sidebar place, as tabs over the page (#sectionTabs). */
.section-tabs { margin: 0 0 20px; flex-wrap: wrap; }
/* "+ Add …": a form that opens when asked for (addFold in the client). */
.add-fold { margin-top: 10px; }
.add-fold > summary { list-style: none; display: inline-flex; align-items: center; cursor: pointer; user-select: none; }
.add-fold > summary::-webkit-details-marker { display: none; }
.add-fold-body { margin-top: 10px; }
/* A one-line answer under a deal-page heading ("Nothing outstanding"). */
.deal-group-note { margin: 8px 0 0; font-size: 13px; color: var(--ink-3); line-height: 1.4; }
.memo-back { margin-bottom: 12px; }

/* ── First look (firstLookHtml) ──────────────────────────────────────────
   The top card of an opportunity: the case's summary, five figures, fit and
   the biggest risks, read from the saved case. Prints on its own. */
.first-look { margin: 16px 0; padding: 20px 24px; }
.first-look-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.first-look-title { margin: 0; font-size: 15px; font-weight: 600; color: var(--ink); line-height: 1.4; }
.first-look-meta { margin: 2px 0 0; font-size: 12px; color: var(--ink-3); line-height: 1.4; }
.first-look-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.first-look-summary { margin: 12px 0 0; font-size: 13px; color: var(--ink-2); line-height: 1.6; max-width: 88ch; }
.first-look-points { margin: 8px 0 0; padding-inline-start: 20px; font-size: 13px; color: var(--ink-2); line-height: 1.6; }
.first-look-line { margin: 8px 0 0; font-size: 13px; color: var(--ink-2); line-height: 1.6; }
.first-look-label { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); margin: 0 8px 0 0; }
.first-look-cols .first-look-label { display: block; margin: 0 0 4px; }
.first-look-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; margin-top: 16px; }
.first-look-cell { border: 1px solid var(--rule); border-radius: 6px; padding: 12px; background: var(--paper); min-width: 0; }
.first-look-cell .k { margin: 0; font-size: 12px; color: var(--ink-3); line-height: 1.4; }
.first-look-cell .v { margin: 4px 0 0; font-size: 15px; font-weight: 600; color: var(--ink); line-height: 1.4; overflow-wrap: anywhere; }
.first-look-cell-note { margin: 2px 0 0; font-size: 11px; color: var(--ink-3); line-height: 1.4; }
.first-look-cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; margin-top: 16px; }
.first-look-list { list-style: none; margin: 4px 0 0; padding: 0; display: grid; gap: 6px; font-size: 13px; color: var(--ink-2); line-height: 1.4; }
.first-look-list .badge { margin-inline-end: 6px; }
.first-look-note { margin: 12px 0 0; font-size: 12px; color: var(--ink-3); line-height: 1.4; }
/* The case, section by section, and the returns' assumptions. */
.case-sections { display: grid; gap: 12px; margin-top: 8px; }
.case-section-title { margin: 0; font-size: 13px; font-weight: 600; color: var(--ink); line-height: 1.4; }
.case-section-title .badge { margin-inline-start: 6px; vertical-align: middle; }
.case-section-text { margin: 2px 0 0; font-size: 13px; color: var(--ink-2); line-height: 1.6; max-width: 88ch; }
.case-assumptions { margin: 0 0 12px; font-size: 12px; color: var(--ink-2); line-height: 1.6; }
.score-working { flex-basis: 100%; margin: 4px 0 0; font-size: 12px; color: var(--ink-3); line-height: 1.6; }
/* ── Initial review, part 2 (0111) ───────────────────────────────────── */
/* The line under the deal's name: lead, IOI date, watching. */
.deal-strip { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; margin: 8px 0 4px; font-size: 13px; color: var(--ink); line-height: 1.4; }
.deal-strip-item { display: inline-flex; align-items: center; gap: 6px; }
.deal-strip-k { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); }
.deal-strip-note { color: var(--ink-3); }
.deal-strip-edit { padding: 0; border: 0; background: transparent; font: inherit; font-size: 12px; font-weight: 600; color: var(--brand-text); cursor: pointer; }
.deal-strip-edit:hover { text-decoration: underline; text-underline-offset: 3px; }
.deal-strip-link { font-size: 12px; font-weight: 600; color: var(--brand-text); text-decoration: none; }
.deal-strip-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.finding-row { display: flex; align-items: flex-start; gap: 8px; flex-wrap: wrap; }
.finding-text { flex: 1; min-width: 200px; }
.finding-actions { gap: 6px; margin-top: 0; align-items: center; }
.finding-actions .btn { font-size: 11px; padding: 4px 8px; }
.finding-note { font-size: 12px; color: var(--ink-3); }
.finding-editor { flex-basis: 100%; display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; padding: 12px 16px; border: 1px solid var(--rule); border-radius: 8px; background: var(--paper); }
.finding-note-field { flex: 1 1 260px; }
.finding-carried-head { margin-top: 20px; }
/* The request list (step 5). */
.req-counts { margin: 8px 0 0; font-size: 13px; color: var(--ink-2); }
.req-toolbar { margin-top: 12px; }
.req-section { margin-top: 20px; }
.req-section-n { color: var(--ink-3); font-weight: 400; }
.req-list { border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.req-row { display: flex; align-items: flex-start; gap: 12px; flex-wrap: wrap; padding: 12px 16px; border-bottom: 1px solid var(--rule); }
.req-row:last-child { border-bottom: 0; }
.req-no { min-width: 24px; font-size: 12px; font-weight: 600; color: var(--ink-3); line-height: 1.6; }
.req-text { flex: 1; min-width: 200px; }
.req-body { margin: 0; font-size: 13px; color: var(--ink); line-height: 1.4; }
.req-meta { margin: 4px 0 0; font-size: 12px; color: var(--ink-3); }
.req-answer { margin: 4px 0 0; font-size: 12px; color: var(--ink-2); line-height: 1.4; }
.req-actions { margin-top: 0; gap: 6px; }
.req-actions .btn { font-size: 11px; padding: 4px 8px; }
.req-editor { flex-basis: 100%; display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; padding: 12px 16px; border: 1px solid var(--rule); border-radius: 8px; background: var(--paper); }
.req-add { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; margin-top: 16px; }
.req-add-body { flex: 1 1 320px; }
.req-check { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; color: var(--ink-2); }
.req-dropped { margin-top: 16px; }
.req-dropped > summary { cursor: pointer; font-size: 12px; color: var(--ink-3); }
.party-role { margin-inline-start: 6px; font-size: 12px; color: var(--ink-3); }
/* IC review (step 6, 0129): IC's decision, who was there, its conditions. */
.ic-decision { margin: 8px 0 12px; padding: 12px 16px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.ic-conditions { margin: 4px 0 0; padding-inline-start: 20px; font-size: 13px; color: var(--ink-2); }
.ic-conditions li + li { margin-top: 4px; }
.ic-attendees { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 4px 0 12px; }
.ic-condition-row + .ic-condition-row { margin-top: 8px; }
.deal-strip-editor { flex-basis: 100%; display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; padding: 12px 16px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.deal-strip-editor .np-f { min-width: 220px; }
/* Your tasks on the Terminal (0123); an overdue due date reads as one. */
.workspace-tasks { margin-top: 24px; }
.workspace-tasks .views-list { margin: 0 24px 16px; }
.views-when.task-overdue { color: var(--bad); }
/* A task's line wraps on a phone: the title takes the row, its labels go
   under it, and a long "blocked" reason is cut short (0123). */
.task-title .task-blocked { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 640px) {
  .task-title { flex-wrap: wrap; }
  .task-title .task-text { flex-basis: 100%; }
}
.task-detail-v [data-task-blocked-reason] { flex: 1 1 240px; min-width: 0; }

/* The deal team (0121) opens in the same editor: its list takes the row. */
.deal-strip-editor .views-list, .deal-strip-editor > .deal-group-note { flex-basis: 100%; margin: 0; }
/* Team views, and your own. */
.views-list { margin-top: 8px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.views-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 12px 16px; border-bottom: 1px solid var(--rule); font-size: 13px; line-height: 1.4; }
.views-row:last-child { border-bottom: 0; }
.views-who { flex: 0 1 200px; min-width: 0; font-weight: 500; color: var(--ink); }
.views-note { flex: 1 1 200px; min-width: 0; color: var(--ink-2); }
.views-when { font-size: 12px; color: var(--ink-3); }
.views-form { margin-top: 16px; display: grid; gap: 8px; max-width: 560px; }
.views-form-head, .go-no-go-head { margin: 0; font-size: 13px; font-weight: 600; color: var(--ink); }
.views-picks, .go-no-go-picks { display: flex; flex-wrap: wrap; gap: 8px; }
.views-picks .btn[aria-pressed="true"], .go-no-go-picks .btn[aria-pressed="true"] { background: var(--brand-soft); color: var(--brand-ink); border-color: var(--brand); font-weight: 600; }
/* The partner's go / no-go. */
.go-no-go { margin-top: 24px; padding: 16px 20px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); display: grid; gap: 12px; max-width: 640px; }
.go-no-go .np-f textarea { padding: 8px; border: 1px solid var(--rule); border-radius: 8px; font: inherit; }
/* Questions for the banker. */
.bq-list { margin-top: 8px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.bq-row { display: flex; align-items: flex-start; gap: 12px; flex-wrap: wrap; padding: 12px 16px; border-bottom: 1px solid var(--rule); }
.bq-row:last-child { border-bottom: 0; }
.bq-body { flex: 1 1 320px; min-width: 0; }
.bq-text { margin: 0; font-size: 13px; color: var(--ink); line-height: 1.6; overflow-wrap: anywhere; }
.bq-meta { margin: 2px 0 0; font-size: 12px; color: var(--ink-3); line-height: 1.4; }
.bq-answer { margin: 4px 0 0; font-size: 13px; color: var(--ink-2); line-height: 1.6; }
.bq-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.bq-edit-input { width: 100%; min-width: 200px; }
.bq-add { display: flex; gap: 8px; margin-top: 12px; max-width: 640px; }
.bq-add input { flex: 1 1 auto; min-width: 0; }
.bq-send { margin-top: 12px; }
.first-look-overlap { margin: 12px 0 0; font-size: 13px; color: var(--ink-2); line-height: 1.6; }
.first-look-overlap .badge { margin-inline-end: 8px; }
/* The screen-reader words behind a figure's dash ("Not disclosed") are
 * absolutely positioned; anchored to their own cell, or they sit against the
 * page and push a phone screen sideways from inside a scrolling table. */
.terminal-table td.num { position: relative; }
@media (max-width: 760px) {
  .deal-strip { gap: 8px 12px; }
  .go-no-go { padding: 16px; }
}
/* ── The offer: price it (step 3, offerPricingHtml) ──────────────────────
   Returns at other prices and the most the firm can pay, under the First
   look. The table is the one table component; only its accents are here. */
.offer { margin: 16px 0; padding: 20px 24px; }
.offer-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.offer-title { margin: 0; font-size: 15px; font-weight: 600; color: var(--ink); line-height: 1.4; }
.offer-meta { margin: 2px 0 0; font-size: 12px; color: var(--ink-3); line-height: 1.4; max-width: 88ch; }
.offer-ceiling { margin: 16px 0 0; font-size: 15px; color: var(--ink); line-height: 1.4; }
.offer-ceiling strong { font-size: 19px; font-weight: 600; }
.offer-k { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); margin-inline-end: 8px; }
.offer-sub { font-size: 12px; color: var(--ink-3); }
.offer-line { margin: 8px 0 0; font-size: 13px; color: var(--ink-2); line-height: 1.6; max-width: 88ch; }
.offer-line .badge { margin-inline-end: 6px; }
.offer-note { margin: 0; flex-basis: 100%; font-size: 12px; color: var(--ink-3); line-height: 1.4; }
.offer-table-wrap { margin-top: 16px; }
.offer-price { font-weight: 600; color: var(--ink); }
.offer-tag { display: inline-block; margin-inline-start: 8px; font-size: 11px; font-weight: 600; color: var(--brand-text); }
/* Tinted in light; in dark the soft tokens are the page itself, so the edge carries it. */
.offer-table tr.offer-row-ask td, .offer-table tr.offer-row-ceiling td { background: var(--brand-soft); }
.offer-table tr.offer-row-ask td:first-child, .offer-table tr.offer-row-ceiling td:first-child { border-inline-start: 2px solid var(--brand-text); }
.offer-try { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; margin-top: 16px; }
.offer-try .np-f { min-width: 220px; }
.offer-assumptions { margin: 16px 0 0; }
.offer-assume { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; margin-top: 8px; padding: 12px 16px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.offer-assume .np-f { min-width: 160px; }
@media (max-width: 760px) {
  .offer { padding: 16px; }
  .offer-try .np-f, .offer-assume .np-f { min-width: 0; flex: 1 1 100%; }
}
/* ── The offer: draft, sign-off, send, answer (0112, offerStateHtml) ──── */
.offer-steps { display: flex; flex-wrap: wrap; gap: 8px 16px; list-style: none; margin: 16px 0 0; padding: 0; font-size: 12px; color: var(--ink-3); }
.offer-step { display: inline-flex; align-items: center; gap: 6px; }
.offer-step-n { display: inline-grid; place-items: center; width: 20px; height: 20px; border: 1px solid var(--rule-2); border-radius: 50%; font-size: 11px; font-weight: 600; }
.offer-step.done { color: var(--ink-2); }
.offer-step.done .offer-step-n { border-color: var(--ok-line); color: var(--ok); }
.offer-step.now { color: var(--ink); font-weight: 600; }
.offer-step.now .offer-step-n { border-color: var(--brand-text); color: var(--brand-text); }
.offer-summary { margin-top: 16px; padding: 16px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.offer-range { margin: 0; font-size: 15px; color: var(--ink); line-height: 1.4; }
.offer-range strong { font-size: 19px; font-weight: 600; margin-inline-end: 8px; }
.offer-terms { display: grid; grid-template-columns: minmax(96px, max-content) minmax(0, 1fr); gap: 6px 16px; margin: 12px 0 0; font-size: 13px; line-height: 1.4; }
.offer-terms dt { color: var(--ink-3); }
.offer-terms dd { margin: 0; color: var(--ink); min-width: 0; overflow-wrap: anywhere; }
.offer-conditions { margin: 0; padding-inline-start: 16px; }
.offer-internal { margin-top: 12px; }
.offer-form { display: grid; gap: 12px; margin-top: 16px; max-width: 720px; }
.offer-form-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.offer-form-grid .np-wide { grid-column: 1 / -1; }
.offer-form textarea, .offer-decide textarea, .offer-answer-form textarea { padding: 8px; border: 1px solid var(--rule); border-radius: 8px; font: inherit; }
.offer-basis { display: grid; gap: 6px; margin: 0; padding: 0; border: 0; font-size: 13px; color: var(--ink); }
.offer-basis legend { margin-bottom: 4px; padding: 0; font-size: 12px; color: var(--ink-3); }
.offer-checks { display: flex; flex-wrap: wrap; gap: 8px 20px; font-size: 13px; color: var(--ink); }
.offer-checks label, .offer-basis label { display: inline-flex; align-items: center; gap: 8px; }
.offer-actions { margin-top: 4px; gap: 8px; flex-wrap: wrap; }
.offer-decide, .offer-send, .offer-answer, .offer-letter { display: grid; gap: 8px; margin-top: 16px; max-width: 720px; }
.offer-answer-form { display: grid; gap: 12px; }
.offer-reqs { margin-top: 16px; font-size: 13px; color: var(--ink-2); }
.offer-reqs summary { cursor: pointer; font-weight: 600; color: var(--ink); }
.offer-req-list { display: grid; gap: 6px; margin: 8px 0; padding: 0; list-style: none; line-height: 1.4; }
.offer-req .badge { margin-inline-end: 8px; }
.offer-history { margin-top: 16px; font-size: 13px; color: var(--ink-2); }
.offer-history summary { cursor: pointer; color: var(--ink-3); }
.offer-history ul { margin: 8px 0 0; padding-inline-start: 20px; line-height: 1.6; }
.offer-pricing { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--rule); }
.offer-pricing-fold > summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--ink-2); }
@media (max-width: 760px) {
  .offer-form-grid { grid-template-columns: minmax(0, 1fr); }
  .offer-terms { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .offer-terms dd { margin-bottom: 8px; }
}
/* The firm's returns assumptions and IOI wording (Settings, 0112). */
.deal-defaults-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; margin: 12px 0 8px; }
#dealDefaults .np-wide { display: grid; gap: 4px; margin-top: 12px; }
#dealDefaults textarea { padding: 8px; border: 1px solid var(--rule); border-radius: 8px; font: inherit; }
/* What kind of document a row is, changeable by staff (step 2). */
.doc-type-pick { font-size: 12px; padding: 2px 6px; margin-inline-end: 4px; max-width: 200px; }
/* A question Vera stopped to ask, under Open items (step 2). */
.waiting-question { margin-top: 12px; padding: 16px; border: 1px solid var(--warn-line); border-radius: 8px; background: var(--card); font-size: 13px; color: var(--ink); line-height: 1.6; }
.waiting-question-head { margin: 0 0 8px; font-size: 13px; color: var(--ink-2); }
.waiting-question-head .badge { margin-inline-end: 8px; }
.waiting-question-error { margin: 0 0 8px; color: var(--bad); }
/* An answer box in one (the assistants' question for you, 0146): the same 12px as the note and buttons around it. */
.waiting-question .np-f { margin-top: 12px; }
/* This deal's result against each criterion, under Fit (step 2). */
.fit-results { margin-top: 8px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.fit-row { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--rule); font-size: 13px; line-height: 1.4; }
.fit-row:last-child { border-bottom: 0; }
.fit-criterion { flex: 0 1 280px; min-width: 0; color: var(--ink); font-weight: 500; }
.fit-observed { flex: 1 1 auto; min-width: 0; color: var(--ink-2); }
@media (max-width: 760px) { .fit-row { flex-wrap: wrap; } .fit-criterion { flex-basis: 100%; } }
@media (max-width: 1000px) { .first-look-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 760px) {
  .first-look { padding: 16px; }
  .first-look-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .first-look-cols { grid-template-columns: minmax(0, 1fr); gap: 16px; }
}
/* Print from the card: that card and nothing else, on one page. */
@media print {
  body.print-first-look #view-memo { display: none !important; }
  body.print-first-look #view-deal { display: block !important; }
  body.print-first-look #dealPage > :not(#dealFirstLook) { display: none !important; }
  body.print-first-look .first-look-actions { display: none !important; }
  body.print-first-look .first-look { border: 0; padding: 0; margin: 0; }
  body.print-first-look .first-look-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  body.print-first-look .first-look-cols { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}

/* ── Google Workspace connector ───────────────────────────────────────────
 *
 * Written as classes rather than inline styles because the design system is
 * closed (scripts/check-design-system.mjs) and new work is held to it
 * immediately. The surrounding connector screens are full of `style="…"`, and
 * copying that idiom is exactly the accretion the ratchet exists to stop —
 * "the file already does it" is how 428 hardcoded colours happened.
 *
 * Every value here is on the scale: sizes from 10/11/12/13/15/19/27, spacing
 * from the 4-grid, colours from the token block at the top of this file. The
 * two label widths are the only arbitrary numbers, and they are column widths
 * in a definition row rather than spacing.
 */

/* A card that follows a heading or another card. */
.gw-card { margin-top: 16px; }

/* The paragraph under a card's title: the one that explains what connecting does. */
.gw-lede {
  font-size: 13px;
  color: var(--ink-2);
  line-height: 1.6;
  max-width: 640px;
}

/* A quieter aside — "setup steps are in the docs", "a colleague has connected". */
.gw-note { font-size: 12px; color: var(--ink-3); margin-top: 12px; }
.gw-note-wide { margin-top: 20px; }

/* An error already shaped for a person, shown under the card's own copy. */
.gw-error { font-size: 12px; color: var(--bad); margin-top: 8px; }

/* The <summary> that opens the exact-permissions list. */
.gw-disclosure { font-size: 12px; color: var(--ink-3); cursor: pointer; }

/* A capability row: fixed-width label, then what it means, then on/off. */
.gw-cap-label { width: 210px; }
.gw-cap-what { flex: 1; font-size: 12px; color: var(--ink-2); }

/* The same row shape for a raw scope string, which needs a wider first column. */
.gw-scope-label { width: 320px; }

/* A wired folder's name, and the deal/counts line beside it. */
.gw-source-name { width: 260px; }
.gw-source-meta { flex: 1; font-size: 12px; color: var(--ink-3); }

/* Spacing-only helpers, on the grid. */
.gw-mt-6 { margin-top: 6px; }
.gw-mt-8 { margin-top: 8px; }
.gw-mt-12 { margin-top: 12px; }
.gw-mt-16 { margin-top: 16px; }
.gw-mt-24 { margin-top: 24px; }
.gw-mb-6 { margin-bottom: 6px; }

/* A labelled control in the "use this folder" dialog. */
.gw-field { display: block; margin: 12px 0; }
.gw-input { width: 100%; }

/* The Drive browser's own list, inside a card. */
.gw-browser-list { padding: 8px 0; }

/* A file Verric cannot index. Shown, never hidden — see toDriveRows. */
.gw-unsupported { opacity: 0.55; }

/* A folder name that navigates. A button, because it acts; styled as the text
 * it sits beside, because it reads as one. */
.gw-folder-btn {
  text-align: left;
  background: none;
  border: 0;
  cursor: pointer;
  color: var(--ink-1);
}
.gw-file-link { text-align: left; }

/* ==========================================================================
 * Business Terminal look (agreed with Luai 2026-09-24).
 *
 * The PE terminal takes demo2's presentation — a solid navigation rail, one
 * joined KPI strip with a coloured top edge per figure, flat panels with a
 * title row, crisp buttons and badges, the system typeface — in the PE's own
 * palette. Presentation only: no element moves, nothing is added or removed.
 * Everything below is on the closed scale (CLAUDE.md Rule 5); 8px is the one
 * corner size added to it, for panels and cards, so the rail matches demo2.
 * ========================================================================== */
/* Palette for this look lives with the rest, in the token blocks at the top. */

/* Type: one face, the system's own, figures in it too (tabular). */
body { font-family: var(--sans); font-size: 15px; }
h1, .hello, h2, h3, .wordmark, .brand > .vmark-firm, .logo-prev-empty,
#view-terminal .metric .v, .decision-financials strong { font-family: var(--sans); }
.metric .v, .snap .v, .dscr .v, .score, .ddrow b, .ddbar .ddv, .ws-count, .watch-fit,
table.ab td.num, .raterow .rv, .pipe .seg .n, .bench-row .bv, .table-row .tv,
.mkt-stats .st .v, .growth, .np-f .np-money-preview { font-family: var(--sans); font-variant-numeric: tabular-nums; }

/* The rail. */
.sidenav { background: var(--nav-bg); color: var(--nav-ink); border-inline-end-color: var(--nav-line); }
.sidenav .wordmark { color: var(--nav-ink); font-weight: 600; letter-spacing: -.04em; }
.sidenav .tagline { color: var(--nav-muted); }
/* The tag's colour arrives inline as var(--ok)/var(--warn); re-pointing the two
   tokens on the element keeps Live green and Development amber, legibly. */
.sidenav .demo-mini { --ok: var(--nav-live); --warn: var(--nav-dev); font-size: 10px; }
.sidenav .brand > .vmark-firm { background: var(--nav-ink); color: var(--nav-bg); border-radius: 4px; font-weight: 700; }
.sidenav .verric-symbol::before { border-top-color: var(--nav-ink); }
.sidenav .verric-symbol::after { border-top-color: var(--nav-focus); }
.sidenav .side-toggle { color: var(--nav-muted); }
.workspace-label { font-size: 10px; font-weight: 600; letter-spacing: .12em; color: var(--nav-muted); margin: 0 12px; }
.sidenav nav button, .sidenav nav .nav-more > summary {
  color: var(--nav-muted); font-size: 13px; font-weight: 500; line-height: 1.4;
  min-height: 44px; padding: 12px; gap: 12px; border-radius: 4px; border: 0; background: transparent;
}
.sidenav nav button:hover, .sidenav nav .nav-more > summary:hover { color: var(--nav-ink); background: var(--nav-hover); }
/* Selected: colour, weight and a bar on its leading edge, so it reads without colour. */
.sidenav nav button[aria-current="true"],
.sidenav nav .nav-more.holds-current:not([open]) > summary {
  color: var(--nav-ink); background: var(--nav-sel); font-weight: 600;
  border: 0; padding-inline-start: 12px; box-shadow: inset 3px 0 0 var(--nav-focus);
}
html[dir="rtl"] .sidenav nav button[aria-current="true"],
html[dir="rtl"] .sidenav nav .nav-more.holds-current:not([open]) > summary { box-shadow: inset -3px 0 0 var(--nav-focus); }
.sidenav nav .nav-more > button[aria-current="true"] { padding-inline-start: 32px; }
html[data-sidebar="collapsed"] .sidenav nav button[aria-current="true"],
html[data-sidebar="collapsed"] .sidenav nav .nav-more.holds-current:not([open]) > summary { box-shadow: inset 0 -2px 0 var(--nav-focus); }
.sidenav .nav-count { background: var(--nav-hover); color: var(--nav-ink); border-radius: 2px; font-size: 11px; font-weight: 600; }
.sidenav .nav-dot { background: var(--nav-focus); }
#primaryNav .nav-rule { border-top-color: var(--nav-line); }
.sidenav .workspace-nav-divider { background: var(--nav-line); }
.sidenav .assistant-mini { border-color: var(--nav-line); border-radius: 4px; background: transparent; color: var(--nav-ink); }
.sidenav .assistant-mini:hover { background: var(--nav-hover); }
.sidenav .assistant-mini[aria-expanded="true"] { background: var(--nav-sel); border-color: var(--nav-focus); }
.sidenav .assistant-mini strong { font-size: 13px; font-weight: 600; }
.sidenav .assistant-mini small { color: var(--nav-muted); font-size: 11px; }
.sidenav .assistant-orb { background: var(--nav-hover); color: var(--nav-ink); border-radius: 4px; }
.sidenav .assistant-arrow { color: var(--nav-muted); }
.sidenav .me .me-n { color: var(--nav-ink); }
.sidenav .me .me-r { color: var(--nav-muted); font-size: 11px; }
.sidenav .me .avatar { background: var(--nav-hover); color: var(--nav-ink); }
.sidenav .reset { border-color: var(--nav-line); color: var(--nav-muted); background: transparent; border-radius: 4px; font-size: 12px; }
.sidenav .reset:hover { background: var(--nav-hover); color: var(--nav-ink); }
.sidenav :is(a, button, summary, [tabindex]):focus-visible { outline: 2px solid var(--nav-focus); outline-offset: 2px; }

/* Top bar. */
.workspace-topbar { min-height: 72px; padding: 12px 32px; gap: 16px; }
.workspace-breadcrumb { font-size: 13px; gap: 16px; color: var(--ink-2); }
.workspace-breadcrumb strong { font-weight: 500; }
.workspace-user-name { font-size: 13px; }
.workspace-user { font-size: 12px; font-weight: 600; }

/* Page heading. */
main { padding: 32px; }
h1, .hello { font-size: 27px; font-weight: 600; line-height: 1.2; letter-spacing: -.03em; color: var(--brand-text); }
.sub { font-size: 13px; color: var(--ink-2); margin-top: 8px; }
.phead { margin-bottom: 24px; }
h2 { font-weight: 600; }
h3 { font-weight: 600; }

/* Buttons, links, badges. */
.btn { font-size: 13px; font-weight: 500; line-height: 1.4; min-height: 40px; padding: 8px 16px; border-radius: 4px; }
.btn:hover { border-color: var(--brand); color: var(--brand-text); background: var(--card); }
.btn-brand, .btn-brand:hover { color: var(--on-brand); }
.workspace-heading-actions { gap: 8px; }
.workspace-heading-actions .btn { min-height: 40px; }
.workspace-actions .btn:hover { color: var(--ink); border-color: transparent; }
.workspace-link { font-size: 12px; font-weight: 500; }
.badge { font-size: 11px; font-weight: 500; line-height: 1.4; padding: 4px 8px; border-radius: 4px; }
.workspace-count { font-size: 11px; font-weight: 500; line-height: 1.6; padding: 0 6px; border: 0; border-radius: 2px; background: var(--paper); color: var(--ink-2); }

/* Surfaces: 8px corners, 1px rules, flat. */
.card, .deal, .memo-wrap, .chatbox, .metric, .set-card, .cal-wrap, .empty, .conn,
.workspace-panel, .terminal-table-wrap, .attn-empty, .msgs-shell, .workspace-pipeline-tools[open] { border-radius: 8px; }
.snap .cell, .dscr .cell { border-radius: 4px; }
.workspace-panel-heading { padding: 20px 24px; }
.workspace-panel-heading h2, .workspace-section-heading h2 { font-size: 15px; font-weight: 600; line-height: 1.4; }
.workspace-section-heading { margin: 24px 0 12px; }
.workspace-panel-bottom { padding: 16px 24px; font-size: 12px; }
.workspace-empty { padding: 20px 24px; font-size: 13px; }

/* The KPI strip: one box, dividers, a coloured edge along each figure. */
#view-terminal .metrics { border-radius: 8px; margin-bottom: 24px; }
#view-terminal .metric { padding: 20px 24px; border-top: 3px solid var(--kpi-1); }
#view-terminal .metric:nth-child(2) { border-top-color: var(--kpi-2); }
#view-terminal .metric:nth-child(3) { border-top-color: var(--kpi-3); }
#view-terminal .metric:nth-child(4) { border-top-color: var(--kpi-4); }
/* A fifth figure wraps to a row of its own: rule the first row off instead of
   giving it a one-column coloured edge that reads as an underline. */
#view-terminal .metric:nth-child(5) { border-top: 0; border-inline-end: 1px solid var(--rule); }
#view-terminal .metrics:has(.metric:nth-child(5)) .metric:nth-child(-n+4) { border-bottom: 1px solid var(--rule); }
@media (min-width: 1001px) { #view-terminal .metric:nth-child(4) { border-inline-end: 0; } }
/* On a wide screen five figures sit in one row: a fifth on a row of its own
   read as a stray box under the strip. */
@media (min-width: 1001px) {
  #view-terminal .metrics:has(.metric:nth-child(5)) { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  #view-terminal .metrics:has(.metric:nth-child(5)) .metric:nth-child(-n+4) { border-bottom: 0; border-inline-end: 1px solid var(--rule); }
  #view-terminal .metrics:has(.metric:nth-child(5)) .metric:nth-child(5) { border-top: 3px solid var(--kpi-1); border-inline-end: 0; }
}
#view-terminal .metric .k { font-size: 12px; font-weight: 400; color: var(--ink-2); }
#view-terminal .metric .v { font-size: 27px; font-weight: 500; line-height: 1.2; letter-spacing: -.04em; margin-block: 8px 0; }
#view-terminal .metric .d { font-size: 11px; margin-top: 12px; }
.metric .k { font-size: 12px; }
.metric .v { font-size: 27px; font-weight: 500; letter-spacing: -.04em; }
.metric .d { font-size: 11px; line-height: 1.4; }

/* The next decision: a flat panel with a burgundy leading edge. */
.workspace-review-grid { gap: 24px; margin-bottom: 24px; }
.workspace-decision { padding: 24px; border-color: var(--rule); border-inline-start: 3px solid var(--brand); }
.decision-eyebrow { font-size: 10px; font-weight: 600; letter-spacing: .12em; }
.workspace-decision h2 { font-size: 19px; font-weight: 600; line-height: 1.4; letter-spacing: -.02em; margin: 16px 0 8px; }
.decision-description { font-size: 13px; line-height: 1.6; margin: 0 0 20px; }
.decision-financials { padding: 16px 0; gap: 16px; }
.decision-financials small { font-size: 12px; }
.decision-financials strong { font-size: 19px; font-weight: 600; line-height: 1.4; letter-spacing: -.02em; margin-top: 4px; }
.decision-owner { font-size: 12px; }

/* The workforce list. */
.workspace-work-row { margin: 0 24px; padding: 16px 0; font-size: 13px; }
.workspace-work-row p { font-size: 12px; margin-top: 4px; }
.workforce-icon { width: 32px; height: 32px; font-size: 19px; border-radius: 4px; }

/* Deal cards and tables. */
.deal-name { font-size: 15px; font-weight: 600; }
.deal-ind { font-size: 12px; }
.snap .k { font-size: 11px; }
.snap .v { font-size: 19px; font-weight: 500; }
.terminal-table th, .terminal-table td { font-size: 13px; padding: 16px 24px; }
.terminal-table thead th { font-size: 10px; font-weight: 600; letter-spacing: .06em; padding-block: 12px; background: var(--paper); }
.foot { font-size: 11px; }

@media (max-width: 1000px) {
  main { padding: 24px; }
  .workspace-topbar { padding-inline: 24px; }
}
@media (max-width: 760px) {
  main { padding: 24px 16px 40px; }
  h1, .hello { font-size: 27px; }
  .workspace-topbar { padding: 12px 16px; min-height: 56px; }
  #view-terminal .metric { padding: 16px; }
  #view-terminal .metric .v { font-size: 27px; }
  .workspace-decision { padding: 20px; }
  .workspace-decision h2 { font-size: 19px; }
  .decision-financials strong { font-size: 15px; }
}
@media (min-width: 1600px) {
  main { padding: 40px; }
  .workspace-topbar { padding-inline: 40px; }
  .workspace-decision h2 { font-size: 19px; }
  #view-terminal .metric { padding: 20px 24px; }
}

/* Business Terminal look, second pass: the other screens. */
/* Figure tiles outside the Terminal home stay separate cards (they wrap at
   different counts per screen) and take the coloured top edge, as demo2's
   Tech summary cards do. */
.metrics:not(#metrics) .metric { border-top: 3px solid var(--kpi-1); }
.metrics:not(#metrics) .metric:nth-child(4n+2) { border-top-color: var(--kpi-2); }
.metrics:not(#metrics) .metric:nth-child(4n+3) { border-top-color: var(--kpi-3); }
.metrics:not(#metrics) .metric:nth-child(4n+4) { border-top-color: var(--kpi-4); }
.metrics:not(#metrics) .metric { padding: 20px 24px; }
/* Tables: demo2's row rhythm, tight enough for the wide portfolio ledgers. */
.terminal-table th, .terminal-table td { padding: 12px 16px; }
.terminal-table thead th { padding-block: 12px; }
/* A row's own name opens it: a link in the row, not a boxed button. */
.terminal-table td .btn[data-open] {
  min-height: 0; padding: 0; border: 0; background: transparent; border-radius: 0;
  color: var(--ink); font-size: 13px; font-weight: 600; text-align: start;
}
.terminal-table td .btn[data-open]:hover { color: var(--brand-text); text-decoration: underline; text-underline-offset: 2px; background: transparent; }
/* Section labels read as demo2's panel titles. */
.section-label { font-size: 13px; font-weight: 600; color: var(--ink); }
.pf-table td:not(:first-child) { white-space: nowrap; }

/* Business Terminal look, third pass (Luai 2026-09-24: "make everything exactly
   the same ui ... size of stuff, font, where stuff is bolded"). Each value
   below was measured from demo2's rendered page at 1440px and matched. */
body { font-size: 15px; line-height: 1.6; }
main { max-width: 1800px; }
@media (min-width: 761px) {
  html:not([data-sidebar="collapsed"]) .sidenav { width: 224px; }
  .sidenav { padding: 24px 12px 16px; gap: 0; }
  .sidenav-top { min-height: 0; padding: 0 0 20px; align-items: center; }
  .sidenav-top .brand { gap: 12px; padding: 0 12px; align-items: center; }
  .sidenav .brand > .vmark, .sidenav .brand > .vmark-firm { width: 32px; height: 32px; margin: 0; }
  .sidenav .brand > .vmark-firm { border-radius: 8px 2px 8px 2px; font-family: Georgia, serif; font-size: 19px; font-weight: 700; line-height: 1.6; }
  .sidenav .wordmark { letter-spacing: -1px; }
  .sidenav .tagline, .sidenav .demo-mini { font-size: 10px; font-weight: 500; line-height: 1; letter-spacing: .14em; text-transform: uppercase; margin-top: 8px; }
  .sidenav .demo-mini { margin-top: 4px; }
  .workspace-label { margin: 0 12px 8px; letter-spacing: .13em; }
  .sidenav nav { gap: 0; }
  .sidenav nav button, .sidenav nav .nav-more > summary {
    min-height: 36px; padding: 8px 12px; margin: 0 0 2px; gap: 12px;
    font-size: 13px; font-weight: 500; line-height: 1.6; border-radius: 6px;
  }
  .sidenav nav button[aria-current="true"],
  .sidenav nav .nav-more.holds-current:not([open]) > summary { padding-inline-start: 12px; font-weight: 600; }
  .sidenav nav .nav-more > button[aria-current="true"], .sidenav nav .nav-more > button { padding-inline-start: 32px; }
  .sidenav nav button svg, .sidenav nav .nav-more > summary svg:first-child { width: 16px; height: 16px; stroke-width: 1.6; }
  #primaryNav .nav-rule { margin: 12px 12px; }
  .sidenav .workspace-nav-divider { margin: 12px; }
  .sidenav .nav-count { min-width: 20px; padding: 0; line-height: 1.6; font-size: 11px; }
  /* The foot of the rail: demo2's personal shortcut, a rule then a row. */
  .sidefoot { padding: 32px 8px 0; gap: 0; }
  .sidenav .assistant-mini { gap: 8px; padding: 16px 0 0; margin: 0 0 16px; border: 0; border-top: 1px solid var(--nav-line); border-radius: 0; background: transparent; }
  .sidenav .assistant-mini:hover, .sidenav .assistant-mini[aria-expanded="true"] { background: transparent; border-color: var(--nav-line); }
  .sidenav .assistant-mini[aria-expanded="true"] strong { color: var(--nav-focus); }
  .sidenav .assistant-orb { width: 36px; height: 36px; border-radius: 8px; font-size: 19px; }
  .sidenav .assistant-mini strong { font-size: 12px; font-weight: 600; line-height: 1.6; }
  .sidenav .assistant-mini small { font-size: 11px; line-height: 1.6; margin-top: 0; }
  .sidenav .assistant-arrow { font-size: 15px; }
  .sidenav .me { padding: 0 0 8px; margin: 0; border-top: 0; gap: 8px; }
  .sidenav .me .me-n { font-size: 12px; font-weight: 600; line-height: 1.6; }
  .sidenav .me .me-r { font-size: 11px; line-height: 1.6; }
  .sidenav .reset { min-height: 32px; padding: 6px 12px; font-size: 12px; margin-top: 4px; }
}

/* Top bar: 60px, white, 32px sides. */
.workspace-topbar { min-height: 60px; padding: 0 32px; background: var(--card); }
.workspace-breadcrumb { gap: 16px; }
.workspace-breadcrumb .side-toggle { width: 32px; height: 32px; min-width: 32px; margin-inline-end: 0; }
.workspace-actions { gap: 12px; }
.workspace-actions .btn { min-width: 36px; min-height: 36px; padding: 8px; }
.workspace-actions svg { width: 18px; height: 18px; }
.workspace-user { width: 32px; height: 32px; border-radius: 8px; font-size: 12px; font-weight: 600; }

/* Page heading: 30px title, 13px line under it, 24px to the content. */
h1, .hello { font-size: 30px; letter-spacing: -.04em; line-height: 1.2; }
.phead { gap: 24px; margin-bottom: 24px; }
.btn { gap: 8px; }
.btn-brand { box-shadow: 0 2px 0 var(--brand-edge-soft); }

/* KPI strip. */
#view-terminal .metric .k, .metric .k { margin-bottom: 8px; line-height: 1.6; }
#view-terminal .metric .v { margin-block: 0; }
#view-terminal .metric .d, .metric .d { gap: 6px; line-height: 1.6; margin-top: 12px; }

/* Panels. */
.workspace-panel-heading { gap: 16px; }
.workspace-panel-heading h2, .workspace-section-heading h2, .deal-name { letter-spacing: 0; }
.terminal-table th, .terminal-table td { padding: 16px 24px; }
.pf-table th, .pf-table td { padding: 12px 16px; }

/* Footer: full width under the page, as demo2's. */
.foot { max-width: none; margin: 0; padding: 16px 32px; gap: 16px; font-size: 11px; line-height: 1.6; border-top: 1px solid var(--rule); }
@media (max-width: 760px) { .foot { padding: 16px; } h1, .hello { font-size: 27px; } }

/* Firm Brain — every person's assistant at one table (Team & agents). */
.fb-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 16px; margin-bottom: 24px; align-items: stretch; }
.fb-map { min-width: 0; display: flex; flex-direction: column; background: var(--fb-bg); border: 1px solid var(--fb-line); border-radius: 8px; overflow: hidden; color: var(--fb-ink); }
.fb-map-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 20px 24px 0; }
.fb-map-head h3 { margin: 8px 0 0; font-size: 15px; font-weight: 500; line-height: 1.4; color: var(--fb-ink); }
.fb-eyebrow { margin: 0; font-size: 10px; font-weight: 600; letter-spacing: .12em; color: var(--fb-muted); }
.fb-scope { font-size: 11px; color: var(--fb-muted); border: 1px solid var(--fb-line); border-radius: 999px; padding: 6px 12px; white-space: nowrap; }
.fb-viewport { flex: 1; overflow-x: auto; }
.fb-graph { display: block; width: 100%; height: auto; min-width: 640px; }
.fb-pair { fill: none; stroke: var(--fb-pair); stroke-width: 2; opacity: .9; }
.fb-msg { fill: none; stroke: var(--fb-msg); stroke-width: 2; stroke-dasharray: 6 4; }
.fb-arrow { fill: var(--fb-msg); }
.fb-dim { opacity: .2; }
.fb-node, .fb-table { cursor: pointer; outline: none; }
.fb-ring { fill: none; stroke: var(--fb-line); stroke-width: 1; }
.fb-face { fill: var(--fb-raised); stroke: var(--fb-pair); stroke-width: 1.5; }
.fb-me .fb-face { stroke: var(--fb-msg); }
.fb-node:hover .fb-ring, .fb-node:focus-visible .fb-ring, .fb-selected .fb-ring { stroke: var(--fb-pair); stroke-width: 3; }
.fb-initial { font-size: 19px; font-weight: 600; fill: var(--fb-ink); text-anchor: middle; }
.fb-name { font-size: 13px; font-weight: 600; fill: var(--fb-ink); text-anchor: middle; }
.fb-owner { font-size: 11px; fill: var(--fb-muted); text-anchor: middle; }
.fb-status { font-size: 10px; font-weight: 500; letter-spacing: .09em; fill: var(--fb-muted); text-anchor: middle; }
.fb-state { fill: var(--fb-line); stroke: var(--fb-bg); stroke-width: 2; }
.fb-working .fb-state, .fb-queued .fb-state { fill: var(--fb-work); }
.fb-working .fb-status { fill: var(--fb-work); }
.fb-waiting .fb-state { fill: var(--fb-msg); }
.fb-waiting .fb-status { fill: var(--fb-msg); }
.fb-table rect { fill: var(--fb-raised); stroke: var(--fb-line); stroke-width: 1; }
.fb-table:hover rect, .fb-table:focus-visible rect { stroke: var(--fb-pair); }
.fb-table-title { font-size: 19px; font-weight: 600; fill: var(--fb-ink); text-anchor: middle; }
.fb-table-sub { font-size: 12px; fill: var(--fb-muted); text-anchor: middle; }
.fb-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; padding: 12px 24px 16px; border-top: 1px solid var(--fb-line); font-size: 11px; color: var(--fb-muted); }
.fb-legend > span { display: flex; align-items: center; gap: 8px; }
.fb-legend-note { margin-inline-start: auto; }
.fb-key { display: inline-block; width: 20px; border-top: 2px solid var(--fb-pair); }
.fb-key-msg { border-top: 2px dashed var(--fb-msg); }
.fb-inspector { min-width: 0; padding: 24px; background: var(--card); border: 1px solid var(--rule); border-radius: 8px; }
.fb-inspector .fb-eyebrow { color: var(--brand-text); }
.fb-inspector h3 { margin: 8px 0 4px; font-size: 19px; font-weight: 600; line-height: 1.4; letter-spacing: -.02em; }
.fb-text { margin: 0 0 8px; font-size: 12px; line-height: 1.6; color: var(--ink-2); }
.fb-h4 { margin: 20px 0 8px; font-size: 12px; font-weight: 600; color: var(--ink); }
.fb-facts { margin: 16px 0 0; }
.fb-facts > div { display: flex; justify-content: space-between; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--rule); }
.fb-facts dt { font-size: 12px; color: var(--ink-2); }
.fb-facts dd { margin: 0; font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
.fb-foot { margin: 16px 0 0; font-size: 11px; line-height: 1.6; color: var(--ink-3); }
.fb-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.fb-list li { font-size: 12px; line-height: 1.6; color: var(--ink-2); overflow-wrap: anywhere; }
.fb-list strong { color: var(--ink); font-weight: 600; }
.fb-chips { display: flex; flex-wrap: wrap; gap: 4px; }
.fb-chips span { font-size: 11px; padding: 4px 8px; border: 1px solid var(--rule); border-radius: 4px; color: var(--ink-2); }
.fb-deal { border: 0; background: none; padding: 0; font: inherit; font-size: 12px; font-weight: 500; color: var(--brand-text); cursor: pointer; }
.fb-deal:hover { text-decoration: underline; text-underline-offset: 2px; }
.fb-inspector .btn { width: 100%; margin-top: 20px; }
@media (max-width: 1100px) { .fb-layout { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 760px) { .fb-map-head { flex-wrap: wrap; padding: 16px 16px 0; } .fb-legend { padding: 12px 16px; } .fb-legend-note { margin-inline-start: 0; } }

/* Specialist agents on the map: small marks above the assistant that hired
   them, while the job is live. */
.fb-sat circle { fill: var(--fb-raised); stroke: var(--fb-work); stroke-width: 1.5; }
.fb-sat svg { color: var(--fb-work); }
.fb-key-sat { width: 12px; height: 12px; border: 1.5px solid var(--fb-work); border-radius: 50%; }

/* Specialist agents: the five as one strip, as demo2 lays out a process, not
   four cards with the fifth hanging underneath. */
.workforce-specialists { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); overflow: hidden; }
.workforce-specialist { border: 0; border-radius: 0; border-inline-end: 1px solid var(--rule); padding: 16px 20px; background: transparent; }
.workforce-specialist:last-child { border-inline-end: 0; }
.workforce-specialist strong { font-size: 13px; }
.workforce-specialist small { font-size: 12px; margin-top: 0; }
.workforce-specialist:hover { border-color: var(--rule); background: var(--paper); }
.workforce-specialist[aria-pressed="true"] { border-color: var(--rule); box-shadow: inset 0 -3px 0 var(--brand); background: var(--brand-soft); }
@media (max-width: 1250px) { .workforce-specialists { grid-template-columns: repeat(5, minmax(0, 1fr)); } .workforce-specialist { padding: 16px; } .workforce-specialist > span[aria-hidden="true"] { display: none; } }
@media (max-width: 1000px) {
  .workforce-specialists { grid-template-columns: minmax(0, 1fr); }
  .workforce-specialist { border-inline-end: 0; border-bottom: 1px solid var(--rule); }
  .workforce-specialist:last-child { border-bottom: 0; }
  .workforce-specialist > span[aria-hidden="true"] { display: inline; }
}

/* ── How a deal ends: the pass window, the close window, the record ──────
   One window for every Pass and Archive button (openPassWindow), one for
   closing (openCloseWindow), and the deal page's line for each outcome.
   Tokens only, on the closed scale; nothing here is inline in the script. */
.pass-lede { font-size: 13px; color: var(--ink-2); line-height: 1.6; margin: 0 0 12px; }
.pass-vera { border: 1px solid var(--rule); border-inline-start: 2px solid var(--brand); border-radius: 4px; background: var(--brand-soft); padding: 8px 12px; margin-bottom: 12px; }
.pass-vera-k { font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--brand-text); margin: 0; }
.pass-vera-v { font-size: 13px; font-weight: 600; color: var(--ink); margin: 4px 0 0; }
.pass-vera-why { font-size: 12px; color: var(--ink-2); line-height: 1.4; margin: 4px 0 0; }
.pass-reasons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; margin-bottom: 12px; }
@media (max-width: 640px) { .pass-reasons { grid-template-columns: minmax(0, 1fr); } }
.pass-reason { display: flex; gap: 8px; align-items: flex-start; padding: 8px; border: 1px solid var(--rule); border-radius: 4px; background: var(--card); cursor: pointer; }
.pass-reason:hover { border-color: var(--rule-2); }
.pass-reason:has(input:checked) { border-color: var(--brand); background: var(--brand-soft); }
.pass-reason input { margin-top: 2px; accent-color: var(--brand); }
.pass-reason-t { display: block; font-size: 13px; font-weight: 600; color: var(--ink); }
.pass-reason-t .badge { margin-inline-start: 6px; vertical-align: middle; }
.pass-reason-h { display: block; font-size: 12px; color: var(--ink-3); line-height: 1.4; }
.pass-note textarea { width: 100%; resize: vertical; }
.pass-after { font-size: 12px; color: var(--ink-3); line-height: 1.4; margin: 8px 0 0; }
.close-note { grid-column: 1 / -1; font-size: 12px; color: var(--ink-2); line-height: 1.4; margin: 0; }
.outcome-row { align-items: flex-start; gap: 12px; }
.outcome-row .outcome-k { width: 120px; flex-shrink: 0; }
.outcome-t { flex: 1; min-width: 0; font-size: 12px; color: var(--ink-2); line-height: 1.4; }
.outcome-w { font-size: 11px; color: var(--ink-3); white-space: nowrap; }
.inv-missing { font-size: 13px; color: var(--ink-3); line-height: 1.6; margin: 0; }
.inv-missing b { color: var(--warn); font-weight: 600; }

/* ── Firm rules & memory: each section folds away, in Connections' style ── */
.bench-fold > summary .conn-cat-n { font-size: 15px; }
.bench-fold-b { padding: 4px 0 20px; }

/* ── Past deals: Passed / Closed / Imports ──────────────────────────────── */
.past-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0 16px; }
.past-controls { margin: 0 0 8px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.past-controls #pastSearch { flex: 1 1 280px; }
.past-lede { font-size: 13px; color: var(--ink-2); line-height: 1.6; margin: 0 0 12px; }
.np-grid > .pass-vera.np-wide { grid-column: 1 / -1; margin-bottom: 0; }

/* ── The foot of the rail, lined up ──────────────────────────────────────
   Ask Vera's mark, your photo and the sign-out icon share one 36px column,
   every label starts at the same edge, and the three rows sit the same
   distance apart. The expanded desktop rail only; the collapsed rail and
   the phone bar keep their own layouts. */
@media (min-width: 761px) {
  html:not([data-sidebar="collapsed"]) .sidenav .assistant-mini { margin: 0 0 12px; }
  html:not([data-sidebar="collapsed"]) .sidenav .me { align-items: center; gap: 8px; padding: 0; margin: 0 0 12px; }
  html:not([data-sidebar="collapsed"]) .sidenav .me .avatar { width: 36px; height: 36px; flex: none; font-size: 12px; }
  html:not([data-sidebar="collapsed"]) .sidenav .reset { gap: 8px; padding: 6px 0; margin: 0; }
  html:not([data-sidebar="collapsed"]) .sidenav .reset svg { width: 16px; height: 16px; padding: 2px; box-sizing: content-box; flex: none; margin-inline: 8px; }
}
/* ── Slack ────────────────────────────────────────────────────────────────
   Utility classes rather than inline styles, for the reason the design check
   enforces: a value written at the point of use is one the palette can never
   be changed from. Every number here is on the spacing scale and every colour
   is a token, which is what lets `pnpm check:design` keep ratcheting down. */
.sl-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.sl-lede { font-size: 13px; color: var(--ink-2); line-height: 1.6; max-width: 560px; }
.sl-body { font-size: 13px; color: var(--ink-2); line-height: 1.6; max-width: 640px; }
.sl-state { font-size: 13px; color: var(--ink-2); line-height: 1.6; margin-top: 12px; }
.sl-fine { font-size: 12px; color: var(--ink-3); line-height: 1.6; margin-top: 12px; max-width: 640px; }
.sl-quiet { font-size: 13px; color: var(--ink-3); }
.sl-mt-6 { margin-top: 6px; }
.sl-mt-12 { margin-top: 12px; }
.sl-mt-16 { margin-top: 16px; }
.sl-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.sl-ws { display: flex; gap: 8px; align-items: center; margin-top: 12px; }
.sl-ws-label { font-size: 12px; color: var(--ink-3); }
.sl-ws select {
  font: inherit; font-size: 13px; padding: 6px 8px;
  border: 1px solid var(--rule); border-radius: 8px;
  background: var(--card); color: var(--ink);
}
/* Capped and scrollable: a workspace with two hundred channels must not push
   the Save button off the bottom of the pane. */
.sl-list { max-height: 260px; overflow-y: auto; margin-top: 4px; }
.sl-row {
  display: flex; align-items: center; gap: 8px;
  padding: 2px; font-size: 13px; color: var(--ink);
  cursor: pointer; overflow-wrap: anywhere;
}
.sl-row input { flex: none; accent-color: var(--brand); }

/* ── "You've seen this company before" (seenBeforeHtml) ─────────────────
   On the New opportunity form under the name, on the deal page under its
   heading, and in the Create confirmation. Amber: a warning, never a stop. */
.np-seen { margin-top: 12px; }
#dealSeenBefore:not(:empty) { margin: 12px 0 0; }
.seen-before { border: 1px solid var(--warn-line); border-inline-start: 2px solid var(--warn); border-radius: 4px; background: var(--warn-soft); padding: 8px 12px; }
.seen-before-k { font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--warn); margin: 0 0 6px; }
.seen-before-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.seen-before-i { display: flex; gap: 12px; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; }
.seen-before-t { flex: 1; min-width: 0; font-size: 13px; color: var(--ink); line-height: 1.4; }
.seen-before-t b { font-weight: 600; }
.seen-before-co { font-weight: 400; color: var(--ink-2); margin-inline-start: 4px; }
.seen-before-what { display: block; font-size: 12px; color: var(--ink-2); }
.seen-before-note { display: block; font-size: 12px; color: var(--ink-2); font-style: italic; margin-top: 2px; overflow-wrap: anywhere; }
.seen-before-acts { display: flex; gap: 6px; flex: none; }
.seen-before-h { font-size: 12px; color: var(--ink-3); line-height: 1.4; margin: 8px 0 0; }
.seen-badge { margin-inline-start: 6px; vertical-align: middle; }

/* Screening's New group: everything still at Sourcing. */
.new-lede { font-size: 12px; color: var(--ink-3); margin: 0 0 8px; }

/* Where deals come from (renderSourceReport). */
.bench-lede { font-size: 13px; color: var(--ink-2); line-height: 1.6; margin: 0 0 12px; }
.bench-empty { font-size: 13px; color: var(--ink-3); margin: 0; }
.bench-foot { font-size: 12px; color: var(--ink-3); line-height: 1.4; margin: 8px 0 0; }
.src-table tfoot th, .src-table tfoot td { font-weight: 600; border-top: 1px solid var(--rule-2); }
.src-zero { color: var(--ink-3); }
.src-count { font-size: 11px; color: var(--ink-3); margin-inline-start: 4px; white-space: nowrap; }
.seen-before-why { display: block; font-size: 12px; color: var(--ink-3); }

/* ── Which company this is (renderCompanyHistory, dealSourcingHtml) ───── */
#dealCompanyHistory:not(:empty) { margin: 12px 0 0; }
.company-history { border: 1px solid var(--rule); border-inline-start: 2px solid var(--brand); border-radius: 4px; background: var(--card); padding: 8px 12px; }
.company-history-k { font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--brand-text); margin: 0 0 6px; }
.company-unlink { margin-inline-start: 6px; }
.sourcing-grid { max-width: 760px; }
.sourcing-hint { font-size: 12px; color: var(--ink-3); line-height: 1.4; margin: 8px 0 0; }
.sourcing-actions { margin: 8px 0 16px; }
.seen-choices { display: flex; flex-direction: column; gap: 6px; }
.seen-choice .seen-before-note { margin-top: 4px; }

/* ── Bankers (renderBankers) ─────────────────────────────────────────── */
.banker-table th[scope="row"] { min-width: 220px; }
.banker-deals summary { cursor: pointer; }
.banker-deals .seen-before-list { margin: 6px 0 4px; }
.banker-aliases { display: block; font-size: 11px; color: var(--ink-3); margin-top: 2px; font-weight: 400; }
.banker-merge, .banker-undo { margin-top: 4px; }
/* Row headers in these two tables name a thing (a source, a bank), so they
   read as body text, not as the small caps of a column heading. */
.src-table tbody th[scope="row"], .banker-table tbody th[scope="row"] {
  font-size: 13px; font-weight: 400; letter-spacing: 0; text-transform: none;
  color: var(--ink); border-bottom: 1px solid var(--rule); vertical-align: top;
}
.src-table tfoot th[scope="row"] { font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--ink); }
.banker-deals summary b { font-weight: 600; }
.banker-deals .opportunity-link { font-size: 13px; }
.banker-table td { vertical-align: top; }

/* ── The deal inbox (inboxPanelHtml, 0109) ─────────────────────────────
   One panel between Screening's heading and its filters: the firm's
   forwarding address as a copyable field, and underneath it any forwards
   waiting for their sender's OK. */
.inbox-panel { margin-bottom: 24px; }
.inbox-main { display: flex; align-items: center; gap: 16px; padding: 16px 20px; flex-wrap: wrap; }
.inbox-icon { display: inline-grid; place-items: center; width: 40px; height: 40px; flex: none; border-radius: 8px; background: var(--brand-soft); color: var(--brand-text); }
.inbox-icon svg { width: 20px; height: 20px; }
.inbox-copy { flex: 1 1 240px; min-width: 0; }
.inbox-title { margin: 0; font-size: 15px; font-weight: 600; color: var(--ink); line-height: 1.4; }
.inbox-note { margin: 2px 0 0; font-size: 13px; color: var(--ink-3); line-height: 1.4; }
.inbox-address { display: flex; align-items: stretch; flex: 0 1 auto; min-width: 0; max-width: 100%; border: 1px solid var(--rule); border-radius: 6px; background: var(--paper); overflow: hidden; }
.inbox-addr { display: flex; align-items: center; min-width: 0; padding: 8px 12px; font-size: 13px; font-weight: 500; color: var(--ink); overflow-wrap: anywhere; }
.inbox-address .inbox-copy-btn { flex: none; border: 0; border-inline-start: 1px solid var(--rule); border-radius: 0; background: var(--card); color: var(--brand-text); font-weight: 600; }
.inbox-address .inbox-copy-btn:hover { background: var(--brand-soft); }
.inbox-waiting { border-top: 1px solid var(--rule); padding: 16px 20px; }
.inbox-waiting-head { margin: 0 0 12px; font-size: 13px; color: var(--ink-2); line-height: 1.4; }
.inbox-waiting-head .badge { margin-inline-end: 8px; }
.inbox-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.inbox-item { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 12px 16px; border: 1px solid var(--rule); border-radius: 6px; background: var(--paper); }
.inbox-subject { flex: 1 1 240px; min-width: 0; font-size: 13px; font-weight: 600; color: var(--ink); overflow-wrap: anywhere; }
.inbox-date { font-size: 12px; color: var(--ink-3); }
.fwd-decide { display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 760px) {
  .inbox-main, .inbox-waiting { padding: 16px; }
  .inbox-address { flex-basis: 100%; }
  .inbox-addr { flex: 1 1 auto; }
  .phead .shelf-toggle { flex: 1 1 100%; flex-wrap: nowrap; }
  .phead .shelf-toggle .btn { flex: 1 1 0; width: auto; }
}
.intake-badge { margin-inline-start: 6px; vertical-align: middle; }
.sourcing-from { font-size: 13px; color: var(--ink-2); line-height: 1.4; margin: 0 0 8px; }
.np-forward { font-size: 12px; color: var(--ink-3); line-height: 1.4; margin: 8px 0 0; }
.np-forward .fwd-addr { color: var(--ink); font-weight: 600; overflow-wrap: anywhere; }

/* Add-on search on a platform company's page (0150, renderAddonCard). */
.addon-card { margin: 16px 0; }
.addon-lede { font-size: 13px; color: var(--ink-2); margin: 4px 0 12px; }
.addon-empty { font-size: 13px; color: var(--ink-3); }
.addon-note { font-size: 12px; color: var(--ink-3); margin: 8px 0 0; }
.addon-status { font-size: 12px; color: var(--ink-3); margin: 0 0 8px; }
.addon-muted { color: var(--ink-3); }
.addon-fit { display: block; }
.addon-site { margin-top: 8px; max-width: 360px; }
.addon-actions { margin: 12px 0 8px; }

/* Target agent (Targets page): the feedback menu on each company and the
   how-often menu, sized like the other in-table menus (.imp-map select). */
.clue-feedback { font: inherit; font-size: 12px; padding: 4px 8px; border: 1px solid var(--rule-2); border-radius: 4px; background: var(--field); color: var(--ink); max-width: 100%; }

/* The Targets page (its own place since 2026-10-03): what the firm is looking
   for as one card under the header, the lookup row, the two source tabs, the
   web tab's toolbar, and a partner's decision as one row. */
.clue-looking-for { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 12px 16px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); margin: 0 0 16px; }
.clue-looking-for .sub { margin: 4px 0 0; }
.clue-lookup { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 16px 0 12px; }
.clue-lookup input { font: inherit; font-size: 13px; padding: 8px 12px; border: 1px solid var(--rule-2); border-radius: 4px; background: var(--field); color: var(--ink); min-width: 0; }
.clue-lookup input:first-child { flex: 1 1 240px; }
.clue-lookup input + input { width: 72px; }
.targets-tabs { margin: 24px 0 0; }
.targets-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin: 16px 0 12px; }
.targets-toolbar .sub { margin: 0; }
.targets-toolbar .clue-lookup { margin: 0; flex-wrap: nowrap; }
.targets-toolbar .clue-lookup .btn { flex: none; }
/* Target Agent: research review, persistent shortlist and useful empty states. */
.pe-list-controls { display: flex; align-items: flex-end; flex-wrap: wrap; gap: 16px; margin: 0 0 16px; }
.pe-list-search { display: grid; gap: 6px; min-width: 220px; flex: 1 1 280px; max-width: 420px; font-size: 12px; font-weight: 500; color: var(--ink-2); }
.pe-list-search input { width: 100%; min-height: 40px; padding: 8px 12px; border: 1px solid var(--rule-2); border-radius: 4px; font: inherit; font-size: 13px; color: var(--ink); background: var(--field); }
.pe-list-search input:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.pe-list-count { margin: 0 auto 8px 0; font-size: 12px; color: var(--ink-3); }
.pe-list-empty { padding: 32px 24px; border: 1px dashed var(--rule-2); border-radius: 4px; background: var(--card); }
.pe-list-empty h3 { font-size: 19px; font-weight: 600; color: var(--ink); margin: 0 0 8px; }
.pe-list-empty p { font-size: 13px; line-height: 1.6; color: var(--ink-2); max-width: 620px; margin: 0 0 16px; }
.pe-list-empty .workspace-heading-actions { justify-content: flex-start; flex-wrap: wrap; }
.pe-list-notice { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; border: 1px solid var(--rule-2); border-left: 3px solid var(--warn); border-radius: 4px; padding: 16px; margin-bottom: 16px; background: var(--card); font-size: 13px; }
.pe-list-notice p { margin: 4px 0 0; color: var(--ink-2); }
@media (max-width: 760px) {
  .pe-list-search { max-width: none; min-width: 0; flex-basis: 100%; }
  .pe-list-empty { padding: 24px 16px; }
}
.clue-review { padding: 16px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); margin: 16px 0; }
.clue-review .sub { margin: 4px 0 0; }
.clue-review-calls { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 12px; }
.clue-review-calls .btn[aria-pressed="true"] { border-color: var(--brand); color: var(--brand); }
.clue-review textarea, .clue-review input { font: inherit; font-size: 13px; padding: 8px 12px; border: 1px solid var(--rule-2); border-radius: 4px; background: var(--field); color: var(--ink); width: 100%; box-sizing: border-box; margin: 0 0 8px; }
.clue-review-why { font: inherit; font-size: 13px; padding: 8px 12px; border: 1px solid var(--rule-2); border-radius: 4px; background: var(--field); color: var(--ink); width: 100%; box-sizing: border-box; margin: 12px 0 0; }
.clue-review-pair { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
.clue-review-pair .clue-review { margin: 0; display: flex; flex-direction: column; gap: 8px; }
.clue-review-pair .btn { align-self: flex-start; margin-top: auto; }
.clue-proposal { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 12px; }
/* A platform's acquisition strategy on its page (0152): folded until filled. */
.addon-strategy { margin: 12px 0 0; }
.addon-strategy summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--ink); }
.addon-strategy .np-grid { margin-top: 8px; }

/* The pilot version before the page knows (dashboard.html <head>): a pilot
   account, or one not known yet, shows only the pilot's tabs from the first
   paint. applyPilotMode() settles it once /api/terminal answers; the primary
   Settings item is shown once it points at Connections. Same list as
   PILOT_VIEWS in src/lib/auth/access.ts. */
html[data-pilot] [data-nav]:not([data-nav="targets"], [data-nav="history"], [data-nav="call-feedback"], [data-nav="research"], [data-nav="integrations"], [data-nav="connect"], [data-nav="settings"], [data-nav="aikeys"]),
html[data-access-pending] [data-nav]:not([data-nav="targets"], [data-nav="history"], [data-nav="call-feedback"], [data-nav="research"], [data-nav="integrations"], [data-nav="connect"], [data-nav="settings"], [data-nav="aikeys"]),
html[data-pilot] #workspaceSearch,
html[data-access-pending] #workspaceSearch,
html[data-pilot] #askVeraBtn,
html[data-access-pending] #askVeraBtn { display: none !important; }

/* Targets' list heading, where the New / Accepted / Dismissed toggle was (those are History now). */
.targets-new-h { font-size: 15px; font-weight: 600; margin: 0; }

/* Private equity workspace: restrained surfaces and a mandate-to-review hierarchy.
   Existing routing, pilot access, density and high-contrast choices stay intact. */
h1, .hello { color: var(--ink); }
.sidenav .brand > .vmark-firm { border-radius: 8px; font-family: var(--sans); }
.sidenav nav button, .sidenav nav .nav-more > summary { border-radius: 6px; }
.btn { border-radius: 6px; }
.btn-brand { box-shadow: none; }
.pe-eyebrow { margin: 0 0 8px; color: var(--ink-2); font-size: 11px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.pe-theme { display: flex; gap: 2px; padding: 4px; border: 1px solid var(--rule); border-radius: 8px; background: var(--card); }
.pe-theme button { font: inherit; font-size: 12px; font-weight: 500; min-height: 32px; padding: 6px 12px; color: var(--ink-2); background: transparent; border: 1px solid transparent; border-radius: 6px; cursor: pointer; }
.pe-theme button[aria-checked="true"] { background: var(--brand-soft); color: var(--brand-text); border-color: var(--rule-2); }
.pe-theme button:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
/* The mandate card on top and Scout under it, both the page's width (Luai, 2026-10-20). */
.pe-research-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; align-items: start; margin-bottom: 24px; }
.pe-research-grid > * { min-width: 0; }
#view-targets .clue-looking-for { flex-direction: row; gap: 24px; padding: var(--terminal-panel-pad); margin: 0; border-radius: 8px; border-top: 2px solid var(--brand); }
#view-targets .clue-looking-for > div:first-child { min-width: 0; overflow-wrap: anywhere; }
#view-targets .clue-looking-for > div:first-child > b { font-size: 15px; font-weight: 600; }
#view-targets .clue-looking-for .workspace-heading-actions { flex: none; justify-content: flex-end; flex-wrap: nowrap; }
@media (max-width: 760px) {
  #view-targets .clue-looking-for { flex-direction: column; gap: 16px; }
  #view-targets .clue-looking-for .workspace-heading-actions { width: 100%; justify-content: space-between; flex-wrap: wrap; padding-top: 16px; border-top: 1px solid var(--rule); }
}
#view-targets .clue-feedback { min-height: 40px; border-radius: 6px; padding: 8px 12px; }
#view-targets .scout-box { margin: 0; background: var(--card); border-color: var(--rule); }
#view-targets .scout-av { background: var(--brand-soft); color: var(--brand-text); border-color: var(--rule-2); }
#view-targets .scout-log { max-height: 420px; }
#view-targets .chatin { flex-wrap: wrap; }
#view-targets .chatin input { min-width: 0; flex: 1 1 180px; }
.pe-review-section { border-top: 1px solid var(--rule); padding-top: 8px; }
.pe-review-note { margin: 4px 0 0; color: var(--ink-2); font-size: 12px; line-height: 1.6; }
.targets-new-h { font-size: 19px; letter-spacing: -.02em; }
#targetsBody .fp-table-wrap, #historyBody .fp-table-wrap { border: 1px solid var(--rule); border-radius: 8px; background: var(--card); overflow-x: auto; }
:is(#targetsBody, #historyBody) table { min-width: 1080px; width: 100%; border-collapse: collapse; table-layout: fixed; }
:is(#targetsBody, #historyBody) thead th { background: var(--rule-soft); color: var(--ink-2); font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; padding: 12px 16px; }
:is(#targetsBody, #historyBody) tbody :is(td, th) { padding: var(--terminal-row-pad) 16px; vertical-align: top; overflow-wrap: anywhere; line-height: 1.6; border-bottom: 1px solid var(--rule); }
:is(#targetsBody, #historyBody) tbody th[scope="row"] { color: var(--ink); font-size: 13px; text-transform: none; letter-spacing: 0; font-weight: 400; text-align: start; }
:is(#targetsBody, #historyBody) tbody th[scope="row"] > b { font-size: 15px; font-weight: 600; }
:is(#targetsBody, #historyBody) thead th:nth-child(1) { width: 22%; }
:is(#targetsBody, #historyBody) thead th:nth-child(2) { width: 25%; }
:is(#targetsBody, #historyBody) thead th:nth-child(3) { width: 21%; }
:is(#targetsBody, #historyBody) thead th:nth-child(4) { width: 17%; }
:is(#targetsBody, #historyBody) thead th:nth-child(5) { width: 15%; }
:is(#targetsBody, #historyBody) tbody tr:hover { background: var(--paper); }
:is(#targetsBody, #historyBody) .seen-before-what { margin-top: 8px; }
:is(#targetsBody, #historyBody) td:last-child .btn { margin: 0 4px 8px 0; }
:is(#targetsBody, #historyBody) .bench-empty { padding: 32px; background: var(--card); border: 1px dashed var(--rule-2); border-radius: 8px; font-size: 13px; line-height: 1.6; }
#view-targets .targets-toolbar { align-items: flex-start; gap: 16px; }
#cluesTools { flex-wrap: wrap; min-width: 0; }
#view-targets .clue-lookup { flex-wrap: wrap; }
#view-targets .clue-lookup input:first-child { flex-basis: 180px; }
#targetsStatus:not([hidden]) { padding: 12px 16px; border: 1px solid var(--rule); border-radius: 6px; background: var(--brand-soft); color: var(--ink); margin-bottom: 20px; }
@media (max-width: 760px) {
  #view-targets .phead { align-items: flex-start; flex-direction: column; gap: 16px; }
  /* In a column the title's 320px flex basis became a 320px-tall gap: the title takes its own height. */
  #view-targets .phead > div { flex: none; }
  #view-targets .phead > .workspace-heading-actions { flex-wrap: wrap; }
  #cluesTools, #cluesTools .clue-lookup { width: 100%; }
  #view-targets .clue-lookup input:first-child { flex-basis: 120px; width: 100%; }
  .pe-theme button { min-height: 40px; }
}

/* Overview composition: compact decision state, pipeline first, supporting work
   in its own column. Data, decision logic and permission checks are unchanged. */
body { -webkit-font-smoothing: antialiased; }
h1, h2, h3, .wordmark { font-family: var(--sans); }
.sidenav .wordmark { font-size: 19px; letter-spacing: -.04em; line-height: 1.2; }
.sidenav .tagline { font-size: 10px; letter-spacing: .08em; }
.sidenav .demo-mini { font-size: 10px; letter-spacing: .08em; }
.sidenav nav button[aria-current="true"],
.sidenav nav .nav-more.holds-current:not([open]) > summary { box-shadow: none; background: var(--nav-sel); color: var(--nav-ink); }
.sidenav nav button[aria-current="true"]::after { content: ""; width: 4px; height: 4px; border-radius: 50%; margin-inline-start: auto; background: var(--nav-ink); flex: none; }
.sidenav nav button:focus:not(:focus-visible) { outline: none; }
.sidenav .workspace-label { margin-bottom: 12px; letter-spacing: .1em; }
.workspace-topbar { min-height: 60px; padding: 8px 32px; }
.workspace-actions { gap: 12px; }
.workspace-topbar .pe-theme { border: 0; padding: 2px; background: var(--rule-soft); }
.workspace-topbar .pe-theme button { min-height: 28px; padding: 4px 8px; font-size: 11px; }
.workspace-topbar .pe-theme button[aria-checked="true"] { background: var(--card); color: var(--ink); border-color: var(--rule); }
main { padding-top: 20px; }
.section-tabs { margin-bottom: 24px; }
.section-tabs .conn-tab { font-size: 12px; }
.pe-overview-kicker { margin: 0 0 8px; font-size: 12px; font-weight: 400; color: var(--ink-2); }
.pe-overview-heading { align-items: center; gap: 20px; margin-bottom: 24px; }
.pe-overview-heading h1 { font-size: 30px; font-weight: 600; letter-spacing: -.04em; line-height: 1.2; }
.pe-overview-heading .sub { margin-top: 8px; }
.pe-overview-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 24px; align-items: start; }
.pe-overview-main, .pe-overview-aside { min-width: 0; }
.pe-overview-aside { display: flex; flex-direction: column; gap: 20px; }
#view-terminal .workspace-review-grid { display: block; margin: 0 0 24px; }
#view-terminal .workspace-decision { min-height: 0; border: 1px solid var(--rule); padding: 20px; }
#view-terminal .workspace-decision .decision-actions { margin-top: 16px; }
#view-terminal .workspace-decision.pe-decision-clear { display: flex; flex-direction: row; align-items: center; flex-wrap: wrap; gap: 16px; padding: 20px; background: var(--card); }
.pe-clear-icon { width: 32px; height: 32px; display: grid; place-items: center; color: var(--ink-2); flex: none; }
.pe-clear-icon svg { width: 24px; height: 24px; }
.pe-clear-copy { flex: 1 1 240px; min-width: 0; }
#view-terminal .pe-decision-clear h2 { font-size: 15px; margin: 0 0 4px; line-height: 1.4; max-width: none; }
#view-terminal .pe-decision-clear .decision-description { font-size: 12px; margin: 0; }
#view-terminal .pe-decision-clear .workspace-link { font-size: 12px; color: var(--ink); }
#view-terminal .metrics,
#view-terminal .metrics:has(.metric:nth-child(5)) { grid-template-columns: repeat(5, minmax(0, 1fr)); background: var(--card); margin-bottom: 24px; }
#view-terminal .metrics .metric,
#view-terminal .metrics:has(.metric:nth-child(5)) .metric:nth-child(n) { border: 0; border-inline-end: 1px solid var(--rule); border-radius: 0; padding: 16px 20px; }
#view-terminal .metrics .metric:last-child,
#view-terminal .metrics:has(.metric:nth-child(5)) .metric:last-child { border-inline-end: 0; }
#view-terminal .metric .k { font-size: 11px; font-weight: 500; gap: 6px; }
#view-terminal .metric .k svg { width: 12px; height: 12px; }
#view-terminal .metric .v { font-size: 27px; font-weight: 500; margin-top: 12px; line-height: 1.2; }
#view-terminal .metric .d { font-size: 11px; margin-top: 8px; line-height: 1.4; }
.pe-overview-aside .workspace-panel { margin: 0; }
.pe-overview-aside .workspace-panel-heading { padding: 16px; }
.pe-overview-aside .workspace-panel-heading h2 { font-size: 13px; }
.pe-overview-aside .workspace-panel-bottom { padding: 12px 16px; gap: 8px; font-size: 11px; }
.pe-overview-aside .workspace-link { font-size: 11px; }
.pe-overview-aside .workspace-work-row { margin: 0 16px; padding: 12px 0; gap: 8px; align-items: flex-start; }
.pe-overview-aside .workspace-work-row strong,
.pe-overview-aside .workforce-task-title { font-size: 12px; line-height: 1.4; }
.pe-overview-aside .workspace-work-row p,
.pe-overview-aside .workforce-hint { font-size: 11px; line-height: 1.6; }
.pe-overview-aside .workspace-work-row .badge { font-size: 10px; padding: 2px 6px; }
.pe-overview-aside .workforce-icon { width: 24px; height: 24px; background: transparent; border: 0; color: var(--ink-2); flex: none; }
.pe-overview-aside .workforce-icon svg { width: 16px; height: 16px; }
.pe-overview-aside .workspace-empty,
.pe-overview-aside .workforce-empty { padding: 16px; font-size: 12px; }
.pe-overview-aside #workspaceQueue { max-height: 340px; overflow-y: auto; }
.pe-overview-aside #myTasks, .pe-overview-aside #workspaceUpcoming { max-height: 280px; overflow-y: auto; }
.pe-pipeline { min-width: 0; }
.pe-pipeline .workspace-section-heading { margin: 0 0 16px; }
.pe-pipeline .workspace-section-heading h2 { font-size: 19px; letter-spacing: -.02em; }
.pe-pipeline .workspace-pipeline-tools { margin-bottom: 16px; }
.workspace-totals { margin-bottom: 20px; }
.workspace-totals > summary { font-weight: 600; }
#view-terminal .workspace-totals .metrics { margin: 16px 0 0; }
.pe-pipeline .empty { padding: 32px 24px; border: 1px dashed var(--rule-2); background: var(--card); }
.pe-pipeline .terminal-table-wrap { overflow-x: auto; }
.pe-pipeline .terminal-table { min-width: 640px; }
.pe-pipeline .terminal-table :is(th, td) { padding: 12px 16px; }
@media (min-width: 761px) {
  html:not([data-sidebar="collapsed"]) .sidenav { width: 208px; }
  .sidenav { padding: 24px 12px 16px; }
  .sidenav nav button { min-height: 40px; }
  .sidenav .sidenav-top .brand { padding-inline: 8px; gap: 8px; }
  .sidenav .sidefoot { padding-top: 16px; }
}
@media (max-width: 1180px) {
  .pe-overview-layout { grid-template-columns: minmax(0, 1fr); }
  .pe-overview-aside { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
}
@media (max-width: 1000px) {
  #view-terminal .metrics,
  #view-terminal .metrics:has(.metric:nth-child(5)) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #view-terminal .metrics:has(.metric:nth-child(5)) .metric:nth-child(n) { border-bottom: 1px solid var(--rule); }
  #view-terminal .metrics:has(.metric:nth-child(5)) .metric:nth-child(3) { border-inline-end: 0; }
  #view-terminal .metrics:has(.metric:nth-child(5)) .metric:nth-last-child(-n+2) { border-bottom: 0; }
}
@media (max-width: 760px) {
  .workspace-topbar { padding: 8px 16px; }
  .workspace-actions { gap: 8px; }
  .workspace-user-name { display: none; }
  .workspace-topbar .pe-theme button { min-height: 32px; }
  .pe-overview-heading { align-items: flex-start; }
  .pe-overview-heading .workspace-heading-actions { flex-wrap: wrap; }
  .pe-overview-aside { grid-template-columns: minmax(0, 1fr); }
  #view-terminal .metrics,
  #view-terminal .metrics:has(.metric:nth-child(5)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #view-terminal .metrics:has(.metric:nth-child(5)) .metric:nth-child(n) { padding: 12px; border-inline-end: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
  #view-terminal .metrics:has(.metric:nth-child(5)) .metric:nth-child(2n) { border-inline-end: 0; }
  #view-terminal .metrics:has(.metric:nth-child(5)) .metric:last-child { grid-column: 1 / -1; border: 0; }
}


/* A state as words with a dot, never a pill: one accent on the page, the buttons'. */
.tone { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 500; color: var(--ink); white-space: nowrap; }
.tone::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--ink-3); flex: none; }
.tone-ok::before { background: var(--ok); }
.tone-warn::before { background: var(--warn); }
.tone-brand::before { background: var(--brand); }
.tone-bad::before { background: var(--bad); }
/* The chance of a sale as a number. */
.target-odds { font-size: 13px; color: var(--ink); white-space: nowrap; }
.target-odds b { font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
/* A quiet button: words in the accent, no box. */
.btn-quiet { min-height: 0; padding: 0; border: 0; background: transparent; border-radius: 0; color: var(--brand-text); font-size: 12px; font-weight: 500; line-height: 1.6; }
.btn-quiet:hover { background: transparent; text-decoration: underline; text-underline-offset: 2px; }
.target-btns .btn-quiet { font-size: 13px; }
/* Look up a company: one field, the state and the button inside it. */
.clue-lookup-field { display: flex; align-items: center; border: 1px solid var(--rule-2); border-radius: 4px; background: var(--field); padding-inline-end: 8px; }
.clue-lookup-field:focus-within { border-color: var(--brand); }
.clue-lookup-field input { border: 0; background: transparent; font: inherit; font-size: 13px; color: var(--ink); padding: 8px 12px; min-width: 0; border-radius: 0; }
.clue-lookup-field input:focus { outline: none; }
.clue-lookup-field input:first-child { flex: 1 1 220px; }
.clue-lookup-field input + input { width: 72px; border-inline-start: 1px solid var(--rule); }

/* Targets rows (2026-10-19): one short row per company, the evidence under
   Details. Text past a few lines is cut (.target-clamp) until More; the
   Details row sits on paper under its company; small actions are text
   buttons under the main ones, like a row's own name in the deal list. */
.targets-table th, .targets-table td { padding: 12px 16px; vertical-align: top; }
.targets-table th:first-child, .targets-table td:first-child { min-width: 200px; max-width: 240px; }
.targets-table td:nth-child(3) { min-width: 200px; }
.targets-table td:nth-child(4) { min-width: 170px; max-width: 260px; }
.targets-table td:last-child { min-width: 200px; max-width: 240px; }
.target-btns .btn { padding: 8px 12px; }
/* The decision cell lays its own buttons out (gap, not margins); a quiet button keeps no box. */
:is(#targetsBody, #historyBody) td.target-actions .btn { margin: 0; }
.target-btns .btn-quiet { padding: 0; }
.targets-table tbody th b { font-weight: 600; }
.target-badges, .target-chips, .target-btns { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; }
.target-chips { margin-top: 4px; }
.target-btns { gap: 8px 12px; }
.target-links { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 8px; }
.target-clamp { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.target-clamp-1 { -webkit-line-clamp: 1; }
.target-clamp-2 { -webkit-line-clamp: 2; }
.target-clamp-3 { -webkit-line-clamp: 3; }
.target-clamp.is-open { display: block; -webkit-line-clamp: none; }
.target-toggle, .target-more, .target-links .btn, .target-ask {
  min-height: 0; padding: 0; border: 0; background: transparent; border-radius: 0;
  color: var(--brand-text); font-size: 12px; font-weight: 500; line-height: 1.6;
}
.target-toggle:hover, .target-more:hover, .target-links .btn:hover, .target-ask:hover { background: transparent; text-decoration: underline; text-underline-offset: 2px; }
.target-toggle { display: inline-block; margin-top: 4px; }
.target-detail > td { background: var(--paper); padding: 16px 24px 20px; }
.target-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 32px; }
@media (max-width: 1000px) { .target-detail-grid { grid-template-columns: minmax(0, 1fr); } }
.target-detail-block h4 { margin: 0 0 8px; }
.target-detail-block p { margin: 0 0 8px; font-size: 13px; line-height: 1.6; }
.target-detail-block > :last-child { margin-bottom: 0; }
.target-list { margin: 0 0 8px; padding-inline-start: 20px; font-size: 13px; line-height: 1.6; }
.target-list li + li { margin-top: 4px; }
/* The Looking-for card: the firm's words first, the criteria lines folded. */
.clue-looking-for-body { flex: 1; min-width: 0; }
.clue-criteria { margin-top: 8px; border-top: 0; padding-top: 0; }
.clue-criteria .seen-before-what { margin-top: 4px; }
/* Connections for a pilot firm: name, status and Connect; the notes describe the full terminal. */
html[data-pilot] .conn-why { display: none; }
/* A dialog with no tag above its title (the Targets dialogs). */
#formModalEyebrow:empty { display: none; }
/* The header while a search runs: the running label sits in line with Stop. */
.targets-running { margin-top: 0; font-size: 13px; }

/* The search schedule (0198): the card's button says it in words, the pop-up
   sets it like a recurring meeting, with a calendar for the start date. */
.sched-btn { display: inline-flex; align-items: center; gap: 8px; text-align: start; min-height: 40px; }
.sched-btn svg { flex: none; color: var(--ink-2); }
.sched-btn-t { display: flex; flex-direction: column; line-height: 1.2; }
.sched-btn-t b { font-size: 13px; font-weight: 500; color: var(--ink); }
.sched-btn-t span { font-size: 11px; color: var(--ink-3); margin-top: 2px; }
.sched { display: grid; gap: 16px; }
.sched-switch { display: inline-flex; align-items: center; gap: 12px; cursor: pointer; font-size: 13px; font-weight: 600; color: var(--ink); }
.sched-switch input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.sched-switch-ui { position: relative; width: 36px; height: 20px; border-radius: 999px; background: var(--rule-2); flex: none; transition: background-color .15s ease; }
.sched-switch-ui::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--card); transition: transform .15s ease; }
.sched-switch input:checked + .sched-switch-ui { background: var(--brand); }
.sched-switch input:checked + .sched-switch-ui::after { transform: translateX(16px); }
.sched-switch input:focus-visible + .sched-switch-ui { outline: 2px solid var(--focus); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { .sched-switch-ui, .sched-switch-ui::after { transition: none; } }
.sched-grid { display: grid; grid-template-columns: minmax(0, 1fr) 272px; gap: 24px; align-items: start; }
@media (max-width: 760px) { .sched-grid { grid-template-columns: minmax(0, 1fr); } }
.sched.is-off .sched-grid { opacity: .5; }
.sched-form { display: grid; gap: 16px; min-width: 0; }
.sched-f { display: grid; gap: 6px; min-width: 0; }
.sched-f[hidden] { display: none; }
.sched-l { font-size: 12px; font-weight: 500; color: var(--ink-2); }
.sched-v { margin: 0; font-size: 13px; color: var(--ink); }
.sched-f select { font: inherit; font-size: 13px; padding: 8px 12px; border: 1px solid var(--rule-2); border-radius: 4px; background: var(--field); color: var(--ink); min-width: 0; }
.sched-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.sched-seg, .sched-days { display: flex; flex-wrap: wrap; gap: 6px; }
.sched-seg .btn, .sched-days .btn { min-height: 32px; padding: 4px 12px; font-size: 13px; }
.sched-days .btn { min-width: 40px; padding: 4px 8px; }
.sched-seg .btn[aria-pressed="true"], .sched-days .btn[aria-pressed="true"] { background: var(--brand); border-color: var(--brand); color: var(--on-brand); }
.sched-next { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; font-size: 13px; color: var(--ink); font-variant-numeric: tabular-nums; }
.sched-cal { border: 1px solid var(--rule); border-radius: 8px; padding: 12px; background: var(--card); }
.sched-cal-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.sched-cal-h b { font-size: 13px; font-weight: 600; color: var(--ink); }
.sched-cal-nav { min-height: 32px; width: 32px; padding: 0; display: inline-grid; place-items: center; }
.sched-cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.sched-cal-wd { font-size: 11px; font-weight: 600; color: var(--ink-3); text-align: center; padding: 4px 0; }
.sched-cal-d { position: relative; font: inherit; font-size: 13px; color: var(--ink); background: transparent; border: 1px solid transparent; border-radius: 4px; height: 32px; padding: 0; cursor: pointer; font-variant-numeric: tabular-nums; }
.sched-cal-d:hover:not(:disabled) { background: var(--paper); }
.sched-cal-d:focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; }
.sched-cal-d:disabled { color: var(--ink-3); opacity: .5; cursor: default; }
.sched-cal-d.is-today { font-weight: 600; }
.sched-cal-d.is-run::after { content: ""; position: absolute; left: 50%; bottom: 4px; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; background: var(--brand); }
.sched-cal-d.is-start { border-color: var(--brand); background: var(--brand-soft); color: var(--brand-text); font-weight: 600; }
.sched-cal-start { margin: 8px 0 0; font-size: 12px; color: var(--ink-2); }

/* Every single-choice dropdown: the arrow drawn in the theme's ink, 12px in
   from the edge, with 32px kept clear for it (Luai, 2026-10-20: the browser's
   own arrow sat against the border). Important so a rule that sets the
   background or a tight padding on one dropdown cannot crowd it again. */
select:not([multiple]):not([size]) {
  -webkit-appearance: none !important; appearance: none !important;
  background-image: var(--select-chevron) !important; background-repeat: no-repeat !important;
  background-position: right 12px center !important; background-size: 12px 12px !important;
  padding-inline-end: 32px !important;
}
/* A skipped search in the schedule: struck through, with Undo; a hollow dot on the calendar. */
.sched-next li { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.sched-next li.is-skipped > span { color: var(--ink-3); text-decoration: line-through; }
.sched-next .btn-quiet { font-size: 12px; }
.sched-cal-d.is-skipped::after { content: ""; position: absolute; left: 50%; bottom: 4px; width: 4px; height: 4px; margin-left: -2px; border-radius: 50%; border: 1px solid var(--ink-3); box-sizing: border-box; }
/* Form fields (dialogs, call feedback): a label belongs to the box under it,
   so each field keeps 12px from the one above, and the buttons 16px from the
   last field (2026-10-20 sweep: labels sat against the box above, and Save
   touched the date box). A form on its own page keeps a readable width. */
/* Only fields stacked one under another: fields side by side in a grid (.np-grid) keep its own row gap, so their labels line up. */
:is(#formModalBody, #callFeedbackForm) > .np-f + .np-f,
:is(#formModalBody, #callFeedbackForm) > .np-grid + .np-f,
:is(#formModalBody, #callFeedbackForm) > .np-f + .np-grid,
:is(#formModalBody, #callFeedbackForm) > .np-grid + .np-grid,
:is(#formModalBody, #callFeedbackForm) > .pass-reasons + .np-f { margin-top: 12px; }
#callFeedbackForm { max-width: 720px; }
#callFeedbackForm > .workspace-heading-actions { margin-top: 16px; }
.pass-reason { align-items: center; }
.pass-reason input { margin-top: 0; }
/* The Acquisition mandate as a list of searches (0198): the firm's for new platforms, then one per parent company, each with its own schedule, Run and Edit. */
#view-targets .clue-looking-for.search-list { display: block; }
.search-list-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 0 0 12px; }
#view-targets .search-list .workspace-heading-actions { width: auto; padding-top: 0; border-top: 0; flex-wrap: wrap; }
.search-rows { list-style: none; margin: 0; padding: 0; }
.search-row { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-top: 1px solid var(--rule); }
.search-row-name { flex: 1; min-width: 0; padding: 0; border: 0; background: transparent; font: inherit; font-size: 13px; font-weight: 600; color: var(--ink); text-align: start; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.search-row-name:hover { text-decoration: underline; text-underline-offset: 2px; }
.search-row-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
/* The schedule button takes the same room on or off, so the buttons line up row to row; same height as the others. */
.search-row-sched { min-width: 176px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.search-row-sched svg { width: 14px; height: 14px; flex: none; }
.search-add { margin: 8px 0 0; }
/* What Scout learned about a parent company (2026-10-20): a plain checklist, untick what is wrong. */
/* A parent company's research page (#/research/<id>): labelled summary, then one table per kind of fact. */
.research-sec { margin-bottom: 24px; }
.research-sec-h { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.research-n { color: var(--ink-3); font-weight: 400; }
.research-running { color: var(--ink); font-weight: 600; }
.research-dl { display: grid; grid-template-columns: 140px 1fr; gap: 12px 24px; margin: 0; }
.research-dl dt { color: var(--ink-3); font-size: 12px; line-height: 1.6; }
.research-dl dd { margin: 0; font-size: 13px; line-height: 1.6; color: var(--ink); }
.research-summary-edit textarea { width: 100%; margin-bottom: 8px; }
.research-table { min-width: 560px; }
.research-table td.research-src { white-space: nowrap; color: var(--ink-3); }
.research-table td.research-x { width: 1%; text-align: end; }
@media (max-width: 640px) { .research-dl { grid-template-columns: 1fr; gap: 4px; } .research-dl dd { margin-bottom: 8px; } }
.pe-list-for { display: grid; gap: 6px; font-size: 12px; }
.pe-list-for select { min-height: 40px; font: inherit; font-size: 13px; padding: 8px 12px; border: 1px solid var(--rule-2); border-radius: 4px; background-color: var(--field); color: var(--ink); }
.pe-list-for[hidden] { display: none; }
