/* ============================================================================
 * Owner Modal v2 — Phase R3 (drawer shell + hero block)
 * ============================================================================
 * Spec: docs/specs/SCOUT-OWNER-MODAL-V2-BUILD-PLAN-2026-05-16.md §7 R3
 *
 * Scope: drawer chrome (header chips, action buttons, close) + hero (name,
 *        contacts, pinned section, stat columns). Body grid + pane content
 *        + call dock arrive in R4–R6.
 *
 * Tokens sourced from variables-v2.css (canonical). Local helper tokens
 * declared on .omv2 root only where no canonical match exists.
 * ============================================================================ */

.omv2-root {
  /* Local helpers (no canonical match in variables-v2.css) */
  --omv2-near-white:    oklch(0.992 0.003 200);   /* text-on-dark backgrounds */
  --omv2-surface-near-white: oklch(0.995 0.003 200);  /* drawer surface — banned to use pure #fff */
  --omv2-divider:       oklch(0.20 0.010 200 / 0.08);  /* hairline a touch lighter than --border */
  --omv2-shadow-drawer: -16px 0 48px oklch(0.20 0.010 200 / 0.18);
}

/* ── Drawer ──────────────────────────────────────────────────────────────── */
.omv2-drawer {
  position: fixed;
  top: 0; right: 0; bottom: 0;
  width: 880px;
  max-width: 100vw;
  background: var(--omv2-surface-near-white);
  border-left: 1px solid var(--color-glass-border);
  box-shadow: var(--omv2-shadow-drawer);
  display: flex;
  flex-direction: column;
  z-index: 1200;
  overflow: hidden;
  font-family: 'Geist', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
  color: var(--color-text-primary);
}

.omv2-backdrop {
  position: fixed; inset: 0;
  background: oklch(0.20 0.010 200 / 0.12);
  z-index: 1199;
}

/* ── Header (chips + actions) ────────────────────────────────────────────── */
.omv2-header {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 16px;
  border-bottom: 1px solid var(--omv2-divider);
  flex-shrink: 0;
}
.omv2-header-chips,
.omv2-header-actions {
  display: flex; align-items: center; gap: 6px;
}
.omv2-header-actions { margin-left: auto; }

.omv2-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px;
  border-radius: var(--radius-pill);
  font-size: 12px; line-height: 1;
  border: 1px solid var(--color-glass-border);
  background: var(--omv2-surface-near-white);
  color: var(--color-text-primary);
  cursor: pointer;
  white-space: nowrap;
  font-family: inherit;
}
.omv2-chip:hover { background: var(--color-surface-1); }
.omv2-chip svg { width: 12px; height: 12px; }
.omv2-chip-status   { background: var(--color-success); color: var(--omv2-near-white); border-color: transparent; }
.omv2-chip-reached  { background: var(--color-secondary); color: var(--omv2-near-white); border-color: transparent; }
.omv2-chip-lead-hot { background: var(--color-warning-muted); color: var(--color-warning); border-color: oklch(0.55 0.18 55 / 0.30); font-weight: 500; }
.omv2-chip-lead-cold{ background: oklch(0.55 0.10 230 / 0.10); color: oklch(0.55 0.10 230); border-color: oklch(0.55 0.10 230 / 0.30); font-weight: 500; }
.omv2-chip-project  { background: var(--color-secondary-muted); color: var(--color-secondary); border-color: oklch(0.55 0.08 200 / 0.25); }
.omv2-chip-deceased { background: var(--color-surface-2); color: var(--color-text-tertiary); border-color: transparent; }
.omv2-chip-sold     { background: var(--color-surface-2); color: var(--color-text-tertiary); border-color: transparent; }
/* Industry Pro — brass accent (display-only token; sparse and load-bearing) */
.omv2-chip-industrypro {
  background: oklch(0.72 0.12 80 / 0.12);
  color: oklch(0.45 0.12 80);
  border-color: oklch(0.72 0.12 80 / 0.32);
  font-weight: 500;
}

.omv2-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px;
  border-radius: var(--radius-md);
  font-size: 12px; font-weight: 500; line-height: 1.2;
  cursor: pointer;
  border: 1px solid transparent;
  font-family: inherit;
}
.omv2-btn-primary { background: var(--color-secondary); color: var(--omv2-near-white); border-color: var(--color-secondary); }
.omv2-btn-primary:hover { background: var(--color-secondary-hover); }
.omv2-btn-ghost { background: var(--omv2-surface-near-white); color: var(--color-text-primary); border-color: var(--color-glass-border-strong); }
.omv2-btn-ghost:hover { background: var(--color-surface-1); }
.omv2-btn svg { width: 13px; height: 13px; }

.omv2-icon-btn {
  width: 28px; height: 28px;
  border: 1px solid transparent;
  background: transparent;
  border-radius: var(--radius-md);
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--color-text-secondary);
  cursor: pointer;
  font-family: inherit;
}
.omv2-icon-btn:hover { background: var(--color-surface-1); color: var(--color-text-primary); }
.omv2-icon-btn svg { width: 16px; height: 16px; }

/* ── Chip dropdown popover ───────────────────────────────────────────────── */
.omv2-popover {
  position: absolute;
  background: var(--omv2-surface-near-white);
  border: 1px solid var(--color-glass-border-strong);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-overlay);
  z-index: 1300;
  min-width: 160px;
  padding: 4px;
  font-family: inherit;
}
.omv2-popover-item {
  display: flex; align-items: center; gap: 8px;
  padding: 7px 10px;
  border-radius: var(--radius-sm);
  font-size: 13px;
  color: var(--color-text-primary);
  cursor: pointer;
  background: transparent;
  border: none;
  width: 100%; text-align: left;
  font-family: inherit;
}
.omv2-popover-item:hover { background: var(--color-surface-1); }
.omv2-popover-item.on { background: var(--color-secondary-muted); color: var(--color-secondary); font-weight: 500; }
.omv2-popover-item .swatch {
  width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
}
.omv2-popover-divider {
  height: 1px;
  background: var(--omv2-divider);
  margin: 4px 0;
}

/* ── Hero ────────────────────────────────────────────────────────────────── */
.omv2-hero {
  padding: 18px 28px 18px;
  border-bottom: 1px solid var(--omv2-divider);
  flex-shrink: 0;
}
.omv2-hero-name {
  margin: 0;
  font-family: 'Newsreader', Georgia, serif;
  font-style: normal;
  font-weight: 600;
  font-size: 30px;
  line-height: 1.15;
  letter-spacing: -0.015em;
  color: var(--color-text-primary);
}
.omv2-hero-contacts {
  margin-top: 8px;
  display: flex; flex-wrap: wrap;
  column-gap: 22px; row-gap: 4px;
  font-size: 13px;
}
.omv2-hc { display: inline-flex; align-items: center; gap: 8px; color: var(--color-text-primary); }
.omv2-hc svg { width: 13px; height: 13px; color: var(--color-text-secondary); flex-shrink: 0; }
.omv2-hc .v { font-family: 'JetBrains Mono', monospace; font-variant-numeric: tabular-nums; }
.omv2-hc .v.phone { font-weight: 500; }
.omv2-hc .m { font-size: 11px; color: var(--color-text-secondary); font-family: 'JetBrains Mono', monospace; }
.omv2-hc.muted .v { color: var(--color-text-tertiary); font-style: italic; }

/* Pinned-note section — hidden when no note */
.omv2-hero-pinned {
  margin-top: 14px;
  padding: 12px 0;
  border-top: 1px solid var(--omv2-divider);
  display: grid;
  grid-template-columns: auto 1fr auto;
  column-gap: 16px;
  align-items: start;
}
.omv2-hero-pinned[hidden] { display: none; }
.omv2-pinned-label {
  display: inline-flex; align-items: center; gap: 5px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-accent);
  font-weight: 500;
  padding-top: 3px;
}
.omv2-pinned-label svg { width: 11px; height: 11px; fill: var(--color-accent); }
.omv2-pinned-content { display: flex; flex-direction: column; min-width: 0; }
.omv2-pinned-body {
  font-family: 'Newsreader', Georgia, serif;
  font-style: italic;
  font-size: 14px;
  color: var(--color-text-primary);
  line-height: 1.5;
}
.omv2-pinned-meta {
  display: flex; align-items: center;
  gap: 22px;
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid var(--omv2-divider);
  font-family: 'JetBrains Mono', monospace;
  flex-wrap: wrap;
}
.omv2-pinned-meta:empty { display: none; }
.omv2-pinned-meta-item { display: inline-flex; align-items: center; gap: 6px; }
.omv2-pinned-meta-l {
  font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--color-text-tertiary);
}
.omv2-pinned-meta-v {
  font-size: 12px; font-variant-numeric: tabular-nums;
  color: var(--color-text-primary);
}
.omv2-pinned-meta-rel { font-size: 11px; color: var(--color-text-secondary); }
.omv2-pinned-meta-outcome {
  display: inline-block;
  padding: 1px 6px;
  border-radius: var(--radius-pill);
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.04em;
}
.omv2-pinned-meta-outcome.answered { background: var(--color-success-muted); color: var(--color-success); }
.omv2-pinned-meta-outcome.no-answer { background: var(--color-error-muted); color: var(--color-error); }
.omv2-pinned-actions { display: flex; gap: 2px; }
.omv2-pinned-actions .omv2-icon-btn { width: 24px; height: 24px; }
.omv2-pinned-actions .omv2-icon-btn svg { width: 13px; height: 13px; }

/* Stat columns — bigger, with strong top hairline + vertical dividers */
.omv2-hero-stats {
  margin-top: 16px;
  padding-top: 16px;
  border-top: 1px solid var(--color-glass-border-strong);
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 0;
  container-type: inline-size;
  container-name: omv2-stats;
}
.omv2-hero-stat { padding: 0 20px; border-right: 1px solid var(--omv2-divider); }
.omv2-hero-stat:first-child { padding-left: 0; }
.omv2-hero-stat:last-child { padding-right: 0; border-right: none; }
.omv2-hero-stat-l {
  display: block;
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-text-tertiary);
  font-family: 'JetBrains Mono', monospace;
  margin-bottom: 6px;
}
.omv2-hero-stat-v {
  display: block;
  font-family: 'JetBrains Mono', monospace;
  font-variant-numeric: tabular-nums;
  font-size: 30px;
  font-weight: 600;
  color: var(--color-text-primary);
  letter-spacing: -0.02em;
  line-height: 1.0;
}
.omv2-hero-stat-v.money { color: var(--color-money); }
.omv2-hero-stat-v .compact { display: none; }
@container omv2-stats (max-width: 540px) {
  .omv2-hero-stat-v .full { display: none; }
  .omv2-hero-stat-v .compact { display: inline; }
}

/* ── Body grid placeholder (R4/R5 populate) ──────────────────────────────── */
.omv2-body-grid {
  flex: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  border-bottom: 1px solid var(--omv2-divider);
  overflow: hidden;
  min-height: 0;
}
.omv2-pane {
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 0 24px 18px;
  min-height: 0;
}
.omv2-pane-properties { background: var(--omv2-surface-near-white); }
.omv2-pane-activity {
  background: var(--color-base);
  border-left: 1px solid var(--omv2-divider);
}
.omv2-pane-label {
  position: sticky; top: 0;
  z-index: 5;
  margin: 0 -24px 12px;
  padding: 10px 24px;
  min-height: 42px;
  background: inherit;
  border-bottom: 1px solid var(--color-glass-border);
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
  font-size: 10px; font-family: 'JetBrains Mono', monospace;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--color-text-tertiary);
  font-weight: 500;
}
.omv2-pane-properties .omv2-pane-label { background: var(--omv2-surface-near-white); }
.omv2-pane-activity .omv2-pane-label { background: var(--color-base); }
.omv2-pane-label .ct { color: var(--color-text-tertiary); font-variant-numeric: tabular-nums; }
.omv2-pane-empty {
  padding: 32px 0; text-align: center;
  color: var(--color-text-secondary);
  font-size: 13px;
}
.omv2-pane-empty .label {
  display: block;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--color-text-tertiary);
  margin-bottom: 6px;
}

/* ── R4: Pane label controls (sort toggle + add button) ──────────────────── */
.omv2-pane-label .actions {
  display: flex; align-items: center; gap: 6px;
}
.omv2-sort-toggle, .omv2-add-prop {
  background: transparent;
  border: 1px solid var(--color-glass-border);
  color: var(--color-text-secondary);
  width: 22px; height: 22px;
  border-radius: var(--radius-md);
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  font-family: inherit;
}
.omv2-sort-toggle:hover { background: var(--color-surface-1); color: var(--color-text-primary); }
.omv2-add-prop:hover { background: var(--color-secondary); color: var(--omv2-near-white); border-color: var(--color-secondary); }
.omv2-sort-toggle svg, .omv2-add-prop svg { width: 12px; height: 12px; }

/* ── R4: Property cards ──────────────────────────────────────────────────── */
.omv2-prop-list { display: flex; flex-direction: column; }
.omv2-prop {
  padding: 12px 0;
  border-bottom: 1px solid var(--omv2-divider);
  position: relative;
}
.omv2-prop:last-child { border-bottom: none; }
.omv2-prop:hover { background: oklch(0.99 0.003 200); margin-inline: -12px; padding-inline: 12px; border-radius: 6px; }
.omv2-prop-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 12px;
}
.omv2-prop-title { min-width: 0; flex: 1; }
.omv2-prop-name {
  font-size: 14px; font-weight: 600;
  color: var(--color-text-primary);
  line-height: 1.3;
  word-break: break-word;
  display: inline;
}
.omv2-prop-info-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px;
  margin-left: 8px;
  vertical-align: middle;
  background: var(--color-secondary-muted);
  border: 1px solid oklch(0.55 0.08 200 / 0.25);
  color: var(--color-secondary);
  cursor: pointer;
  border-radius: 50%;
  transition: background 120ms, color 120ms;
}
.omv2-prop-info-btn:hover { background: var(--color-secondary); color: var(--omv2-near-white); border-color: var(--color-secondary); }
.omv2-prop-info-btn svg { width: 14px; height: 14px; }
.omv2-prop-trash {
  display: none;
  width: 26px; height: 26px;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-glass-border);
  background: var(--omv2-surface-near-white);
  color: var(--color-text-secondary);
  align-items: center; justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
  transition: color 120ms, border-color 120ms, background 120ms;
}
.omv2-drawer.edit-mode .omv2-prop-trash { display: inline-flex; }
.omv2-prop-trash:hover { color: var(--color-error); border-color: var(--color-error); background: var(--color-error-muted); }
.omv2-prop-trash svg { width: 14px; height: 14px; }

/* Equation: NRA × $/NRA cap = total (inline) */
.omv2-prop-eq {
  display: flex; align-items: baseline; gap: 10px;
  margin-top: 10px;
  font-family: 'JetBrains Mono', monospace;
  font-variant-numeric: tabular-nums;
  flex-wrap: wrap;
}
.omv2-eq-term { display: inline-flex; align-items: baseline; gap: 4px; }
.omv2-eq-term .v { font-size: 14px; font-weight: 500; color: var(--color-text-primary); }
.omv2-eq-term .u { font-size: 10px; letter-spacing: 0.05em; text-transform: uppercase; color: var(--color-text-tertiary); }
.omv2-eq-op { color: var(--color-text-tertiary); font-size: 14px; user-select: none; }
.omv2-eq-cap {
  color: var(--color-text-tertiary);
  font-size: 11px;
  letter-spacing: 0.02em;
  display: inline-block;
}
.omv2-eq-cap.over { color: var(--color-error); font-weight: 500; }
.omv2-eq-cap-stack {
  display: inline-flex; flex-direction: column;
  gap: 2px;
  align-self: baseline;
}
.omv2-eq-cap-empty {
  color: var(--color-text-tertiary);
  font-size: 11px;
  cursor: pointer;
  border-bottom: 1px dashed var(--color-text-tertiary);
  background: none; border-top: none; border-left: none; border-right: none;
  padding: 0; font-family: inherit;
}
.omv2-eq-cap-empty:hover { color: var(--color-text-secondary); border-bottom-color: var(--color-text-secondary); }
.omv2-eq-rhs { margin-left: auto; }
.omv2-eq-total {
  color: var(--color-money);
  font-weight: 600;
  font-size: 17px;
  letter-spacing: -0.01em;
}

.omv2-rate-wrap {
  display: inline-flex; align-items: center;
  border: 1px solid var(--color-glass-border-strong);
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--omv2-surface-near-white);
  transition: border-color 120ms;
}
.omv2-rate-wrap:focus-within { border-color: var(--color-secondary); }
.omv2-rate-wrap.saving { border-color: var(--color-warning); opacity: 0.7; }
.omv2-rate-wrap.error { border-color: var(--color-error); }
.omv2-rate-input {
  width: 80px;
  border: none; background: transparent;
  padding: 3px 4px 3px 8px;
  font-family: 'JetBrains Mono', monospace;
  font-variant-numeric: tabular-nums;
  font-size: 13px; font-weight: 500;
  color: var(--color-money);
  text-align: right;
}
.omv2-rate-input:focus { outline: none; }
.omv2-rate-suf {
  padding: 3px 8px 3px 0;
  font-size: 10px;
  color: var(--color-text-secondary);
  font-family: 'JetBrains Mono', monospace;
}

/* Note: removed `omv2-prop-cols / -col / -col--offer / -col--cap / -foot*`
   CSS that supported the deviant column rebuild. The card renders the
   v14 inline equation again via the pre-existing `.omv2-prop-eq` rules
   higher up in this file. */

/* Edit-mode NRA + interest_pct editable inputs.
   - NRA input replaces the static `.omv2-eq-term .v` display via JS swap
     in handleEditToggle. Rendered only while drawer.classList contains
     `edit-mode`.
   - Interest row is hidden by default and revealed in edit-mode so the
     non-edit view stays compact (interest is also viewable via the (i)
     info popover when not editing).
   Cap chip remains read-only — agents cannot edit caps. */
.omv2-nra-input {
  width: 72px;
  border: 1px solid var(--color-glass-border);
  border-radius: var(--radius-sm);
  background: var(--omv2-surface-near-white);
  padding: 3px 6px;
  font-family: 'JetBrains Mono', monospace;
  font-variant-numeric: tabular-nums;
  font-size: 13px; font-weight: 500;
  color: var(--color-text);
  text-align: right;
  transition: border-color 120ms;
}
.omv2-nra-input:focus { outline: none; border-color: var(--color-secondary); }
.omv2-nra-input.omv2-input-err { border-color: var(--color-error); }

.omv2-prop-interest {
  display: none;
  align-items: center;
  gap: 8px;
  margin-top: 6px;
  padding: 4px 0 0;
  font-size: 11px;
  font-family: 'JetBrains Mono', monospace;
  color: var(--color-text-secondary);
}
.omv2-drawer.edit-mode .omv2-prop-interest { display: flex; }
.omv2-prop-interest-label {
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-tertiary);
  flex-shrink: 0;
}
.omv2-prop-interest-val {
  font-variant-numeric: tabular-nums;
  color: var(--color-text);
  font-weight: 500;
}
.omv2-prop-interest-unit { color: var(--color-text-tertiary); }
.omv2-interest-input {
  width: 110px;
  border: 1px solid var(--color-glass-border);
  border-radius: var(--radius-sm);
  background: var(--omv2-surface-near-white);
  padding: 3px 6px;
  font-family: 'JetBrains Mono', monospace;
  font-variant-numeric: tabular-nums;
  font-size: 12px;
  color: var(--color-text);
  text-align: right;
  transition: border-color 120ms;
}
.omv2-interest-input:focus { outline: none; border-color: var(--color-secondary); }
.omv2-interest-input.omv2-input-err { border-color: var(--color-error); }

/* Info popover (R4) — same chrome as chip popover but wider */
.omv2-info-popover {
  position: absolute;
  background: var(--omv2-surface-near-white);
  border: 1px solid var(--color-glass-border-strong);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-overlay);
  z-index: 1300;
  min-width: 240px;
  padding: 10px 12px;
  font-family: inherit;
  font-size: 12px;
}
.omv2-info-popover-title {
  font-size: 10px; font-family: 'JetBrains Mono', monospace;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--color-text-tertiary);
  margin-bottom: 8px;
}
.omv2-info-popover-row {
  display: flex; justify-content: space-between; align-items: baseline;
  padding: 4px 0;
  font-size: 12px;
  border-bottom: 1px solid var(--omv2-divider);
}
.omv2-info-popover-row:last-child { border-bottom: none; }
.omv2-info-popover-row .l { color: var(--color-text-secondary); }
.omv2-info-popover-row .v {
  font-family: 'JetBrains Mono', monospace;
  font-variant-numeric: tabular-nums;
  color: var(--color-text-primary);
  font-weight: 500;
}
.omv2-info-popover-row .v.muted { color: var(--color-text-tertiary); font-style: italic; font-weight: 400; }

/* ── Footer ──────────────────────────────────────────────────────────────── */
.omv2-footer {
  border-top: 1px solid var(--omv2-divider);
  padding: 10px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  background: var(--omv2-surface-near-white);
  flex-shrink: 0;
}
.omv2-footer-btn {
  padding: 6px 12px;
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  font-size: 12px;
  color: var(--color-text-primary);
  cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  font-family: inherit;
}
.omv2-footer-btn svg { width: 12px; height: 12px; }
.omv2-footer-btn:hover { background: var(--color-surface-1); }
.omv2-footer-counter {
  display: flex; flex-direction: column; align-items: center;
  font-family: 'JetBrains Mono', monospace;
}
.omv2-footer-counter .queue {
  font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--color-text-tertiary);
}
.omv2-footer-counter .pos {
  font-size: 11px; color: var(--color-text-primary);
  font-variant-numeric: tabular-nums; margin-top: 1px;
}

/* ============================================================================
 * R5 — Activity pane (filter pills + timeline)
 * ============================================================================ */

/* Pane label hosts filter pills on the right when activity pane */
.omv2-pane-activity .omv2-pane-label {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px;
}
.omv2-pane-activity .omv2-pane-label > span:first-child {
  display: inline-flex; align-items: center; gap: 6px;
}
.omv2-pane-activity .omv2-pane-label .ct {
  font-weight: 400; color: var(--color-text-tertiary);
  font-size: 11px;
}

.omv2-act-pills {
  display: inline-flex; gap: 4px; align-items: center;
}
.omv2-act-pill {
  appearance: none;
  border: 1px solid var(--color-glass-border);
  background: transparent;
  color: var(--color-text-secondary);
  font: 500 11px/1 'Geist', system-ui, sans-serif;
  letter-spacing: 0.02em;
  padding: 5px 9px;
  border-radius: var(--radius-pill);
  cursor: pointer;
  transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
  white-space: nowrap;
}
.omv2-act-pill:hover { background: var(--color-surface-1); }
.omv2-act-pill.active {
  background: oklch(0.55 0.08 200 / 0.10);
  border-color: oklch(0.55 0.08 200 / 0.35);
  color: var(--color-secondary);
}
.omv2-act-pill .ct {
  margin-left: 4px; font-variant-numeric: tabular-nums;
  color: var(--color-text-tertiary);
  font-weight: 400;
}
.omv2-act-pill.active .ct { color: var(--color-secondary); opacity: 0.75; }

/* Event timeline list */
.omv2-events {
  display: flex; flex-direction: column;
  padding: 6px 12px 16px 12px;
}
.omv2-event {
  display: flex; gap: 12px;
  padding: 10px 4px;
  border-bottom: 1px solid var(--omv2-divider);
}
.omv2-event:last-child { border-bottom: 0; }

.omv2-event-icon {
  flex-shrink: 0;
  width: 28px; height: 28px;
  border-radius: var(--radius-md);
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--color-surface-1);
  color: var(--color-text-secondary);
}
.omv2-event-icon svg { width: 14px; height: 14px; }
/* Tint by kind — subtle, not loud */
.omv2-event-icon.call {
  background: oklch(0.55 0.08 200 / 0.10);
  color: var(--color-secondary);
}
.omv2-event-icon.note {
  background: oklch(0.72 0.12 80 / 0.10);
  color: var(--color-accent);
}
.omv2-event-icon.outreach {
  background: oklch(0.55 0.18 55 / 0.10);
  color: var(--color-warning);
}

.omv2-event-body {
  flex: 1 1 auto; min-width: 0;
}
.omv2-event-head {
  display: flex; align-items: center; gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 2px;
}
.omv2-event-kind {
  font-size: 12px; font-weight: 600;
  color: var(--color-text-primary);
}
.omv2-event-outcome {
  display: inline-flex; align-items: center;
  font-size: 10px; font-weight: 600;
  letter-spacing: 0.04em; text-transform: uppercase;
  padding: 2px 8px;
  border-radius: var(--radius-pill);
  background: var(--color-surface-1);
  color: var(--color-text-secondary);
  border: 1px solid var(--color-glass-border);
}
.omv2-event-outcome.answered {
  background: oklch(0.65 0.13 145 / 0.12);
  color: oklch(0.42 0.13 145);
  border-color: oklch(0.65 0.13 145 / 0.30);
}
.omv2-event-outcome.no-answer {
  background: oklch(0.55 0.18 55 / 0.12);
  color: oklch(0.45 0.18 55);
  border-color: oklch(0.55 0.18 55 / 0.30);
}
.omv2-event-outcome.callback {
  background: oklch(0.55 0.08 200 / 0.12);
  color: var(--color-secondary);
  border-color: oklch(0.55 0.08 200 / 0.30);
}
.omv2-event-outcome.lead-hot {
  background: oklch(0.55 0.18 55 / 0.14);
  color: oklch(0.45 0.18 55);
  border-color: oklch(0.55 0.18 55 / 0.32);
}
.omv2-event-outcome.lead-cold {
  background: var(--color-surface-1);
  color: var(--color-text-secondary);
  border-color: var(--color-glass-border);
}

.omv2-event-ts {
  margin-left: auto;
  font: 400 11px/1 'JetBrains Mono', monospace;
  color: var(--color-text-tertiary);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.omv2-event-note {
  font-size: 13px; line-height: 1.45;
  color: var(--color-text-primary);
  margin-top: 2px;
  word-wrap: break-word;
  overflow-wrap: anywhere;
}
.omv2-event-note.empty {
  color: var(--color-text-tertiary); font-style: italic;
}

.omv2-event-meta {
  display: flex; gap: 12px; align-items: center;
  margin-top: 4px;
  font-size: 11px;
  color: var(--color-text-tertiary);
  flex-wrap: wrap;
}
.omv2-event-phone {
  display: inline-flex; align-items: center; gap: 4px;
  font: 500 11px/1 'JetBrains Mono', monospace;
  color: var(--color-text-secondary);
  font-variant-numeric: tabular-nums;
}
.omv2-event-phone svg { width: 11px; height: 11px; }
.omv2-event-user {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px;
  color: var(--color-text-tertiary);
}
.omv2-event-user .dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--color-text-tertiary);
}

/* Activity pane: empty state when filtered to zero */
.omv2-pane-activity .omv2-pane-empty {
  margin: 4px 12px 16px 12px;
}

/* ============================================================================
 * R6 — Floating call dock
 * ============================================================================ */
.omv2-dock {
  position: fixed;
  z-index: 1300;  /* above drawer (1200) */
  background: var(--omv2-surface-near-white);
  border: 1px solid var(--color-glass-border-strong);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-overlay);
  font-family: 'Geist', -apple-system, system-ui, sans-serif;
  color: var(--color-text-primary);
  user-select: none;
}
.omv2-dock.dragging {
  transition: none;
  cursor: grabbing;
}

/* ── Collapsed state — round phone button with breathing pulse ─────────── */
.omv2-dock.collapsed {
  width: 56px; height: 56px;
  border-radius: 50%;
  padding: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--color-secondary);
  border: none;
  color: var(--omv2-near-white);
  cursor: grab;
  animation: omv2DockPulse 3.4s ease-in-out infinite;
}
.omv2-dock.collapsed:active { cursor: grabbing; animation-play-state: paused; }
.omv2-dock.collapsed svg { width: 22px; height: 22px; }
@keyframes omv2DockPulse {
  0%, 100% { transform: scale(1.00); box-shadow: var(--shadow-overlay); }
  50%      { transform: scale(1.04); box-shadow: 0 18px 56px oklch(0.20 0.010 200 / 0.22); }
}

/* ── Expanded state — form panel ───────────────────────────────────────── */
/* 510px wide per v14 mockup so all 5 outcome pills fit on one row (was
   360px before; pills wrapped to a second line). */
.omv2-dock.expanded {
  width: 510px;
  display: flex; flex-direction: column;
}
/* Dock header per v14: grip · live-dot · "Logging call to" · phone select · collapse */
.omv2-dock-head {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--omv2-divider);
  cursor: grab;
}
.omv2-dock-head.dragging,
.omv2-dock-head:active { cursor: grabbing; }
.omv2-dock-handle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 14px; height: 14px;
  color: var(--color-text-tertiary);
  flex-shrink: 0;
}
.omv2-dock-handle svg { width: 14px; height: 14px; }
.omv2-dock-livedot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--color-error, oklch(0.55 0.20 25));
  animation: omv2DockLivePulse 1.6s ease-in-out infinite;
  flex-shrink: 0;
}
@keyframes omv2DockLivePulse { 0%,100%{opacity:1;} 50%{opacity:.45;} }
.omv2-dock-title {
  font-size: 11px; font-weight: 500; letter-spacing: 0.10em;
  text-transform: uppercase;
  font-family: 'JetBrains Mono', monospace;
  color: var(--color-text-secondary);
  flex-shrink: 0;
}
.omv2-dock-collapse {
  margin-left: auto;
  border: none; background: transparent;
  width: 24px; height: 24px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--radius-sm);
  color: var(--color-text-secondary);
  cursor: pointer;
  flex-shrink: 0;
}
.omv2-dock-collapse:hover { background: var(--color-surface-1); }
.omv2-dock-collapse svg { width: 13px; height: 13px; }

.omv2-dock-body {
  padding: 12px;
  display: flex; flex-direction: column; gap: 8px;
}

/* v14 dock-row: inline label + pills, 60px label column */
.omv2-dock-row {
  display: flex; align-items: center; gap: 8px;
}
.omv2-dock-row-l {
  font-size: 10px; font-weight: 500; letter-spacing: 0.08em;
  text-transform: uppercase;
  font-family: 'JetBrains Mono', monospace;
  color: var(--color-text-tertiary);
  width: 60px; flex-shrink: 0;
}

/* Phone selector (now lives in dock-head, not body) */
.omv2-dock-phone-wrap {
  display: flex; gap: 6px; align-items: center;
}
/* Phone-select: rendered as a button (not native <select>) so the open
   dropdown is a body-appended .omv2-popover under our control rather than
   the macOS-Chrome native option list. v14 places this inline in the dock
   header, sized ~200px. */
.omv2-dock-phone-select {
  appearance: none;
  display: inline-flex; align-items: center; justify-content: space-between; gap: 8px;
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  padding: 4px 8px;
  font: 500 13px/1.2 'JetBrains Mono', monospace;
  color: var(--color-text-primary);
  cursor: pointer;
  text-align: left;
  font-family: 'JetBrains Mono', monospace;
  font-variant-numeric: tabular-nums;
  min-width: 200px;
  max-width: 220px;
}
.omv2-dock-phone-select:hover { background: var(--color-surface-1); }
.omv2-dock-phone-label {
  flex: 1 1 auto;
  font: 500 12px/1.2 'JetBrains Mono', monospace;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.omv2-dock-phone-caret {
  flex-shrink: 0;
  width: 8px; height: 8px;
  border-right: 1.5px solid var(--color-text-tertiary);
  border-bottom: 1.5px solid var(--color-text-tertiary);
  transform: translateY(-2px) rotate(45deg);
}
.omv2-dock-phone-select[aria-expanded="true"] .omv2-dock-phone-caret {
  transform: translateY(1px) rotate(-135deg);
}
.omv2-dock-phone-popover .omv2-popover-item {
  font: 500 12px/1.2 'JetBrains Mono', monospace;
  white-space: nowrap;
}
.omv2-dock-phone-popover .omv2-dock-phone-primary {
  margin-left: 6px;
  padding: 1px 6px;
  font-family: 'Geist', system-ui, sans-serif;
  font-size: 9px; font-weight: 600;
  letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--color-secondary);
  background: var(--color-secondary-muted);
  border-radius: var(--radius-pill);
}
.omv2-dock-phone-custom {
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  padding: 6px 10px;
  font: 500 12px/1.2 'JetBrains Mono', monospace;
  width: 100%;
  color: var(--color-text-primary);
}
.omv2-dock-phone-custom::placeholder { color: var(--color-text-tertiary); }

/* Outcome + Lead chip groups */
.omv2-dock-chips {
  display: flex; flex-wrap: wrap; gap: 4px;
}
.omv2-dock-chip {
  appearance: none;
  border: 1px solid var(--color-glass-border);
  background: transparent;
  color: var(--color-text-secondary);
  font: 500 11px/1 'Geist', system-ui, sans-serif;
  padding: 6px 10px;
  border-radius: var(--radius-pill);
  cursor: pointer;
  white-space: nowrap;
  transition: background 120ms ease, color 120ms ease, border-color 120ms ease;
}
.omv2-dock-chip:hover { background: var(--color-surface-1); }
/* v14 active-pill style: solid filled background + near-white text,
   matching `.opt.on` in the canonical mockup. Active state is a strong
   visual cue, not a subtle tint. */
.omv2-dock-chip.active {
  background: var(--color-secondary);
  border-color: var(--color-secondary);
  color: var(--omv2-near-white);
  font-weight: 500;
}
/* Answered → success green */
.omv2-dock-chip.active[data-value="answered"] {
  background: oklch(0.55 0.13 145);
  border-color: oklch(0.55 0.13 145);
  color: var(--omv2-near-white);
}
/* No answer + DNC → solid red (matches v14 .opt.no-answer.on / .opt.dnc.on) */
.omv2-dock-chip.active[data-value="no-answer"],
.omv2-dock-chip.active[data-value="dnc"] {
  background: oklch(0.55 0.20 25);
  border-color: oklch(0.55 0.20 25);
  color: var(--omv2-near-white);
}
/* Callback → solid teal (current secondary) */
.omv2-dock-chip.active[data-value="callback"] {
  background: var(--color-secondary);
  border-color: var(--color-secondary);
  color: var(--omv2-near-white);
}
/* Wrong # → muted grey */
.omv2-dock-chip.active[data-value="wrong-number"] {
  background: var(--color-text-tertiary);
  border-color: var(--color-text-tertiary);
  color: var(--omv2-near-white);
}
/* Lead Hot → solid amber */
.omv2-dock-chip.active[data-dock-action="lead"][data-value="hot"] {
  background: oklch(0.62 0.18 55);
  border-color: oklch(0.62 0.18 55);
  color: var(--omv2-near-white);
}
/* Lead Cold → solid cool blue */
.omv2-dock-chip.active[data-dock-action="lead"][data-value="cold"] {
  background: oklch(0.55 0.10 230);
  border-color: oklch(0.55 0.10 230);
  color: var(--omv2-near-white);
}
/* Lead None → solid muted grey */
.omv2-dock-chip.active[data-dock-action="lead"][data-value=""] {
  background: var(--color-text-tertiary);
  border-color: var(--color-text-tertiary);
  color: var(--omv2-near-white);
}

/* Callback date — inline appearance when outcome=callback */
.omv2-dock-callback {
  display: none;
}
.omv2-dock.outcome-callback .omv2-dock-callback {
  display: flex;
}
.omv2-dock-cb-input {
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  padding: 6px 10px;
  font: 500 12px/1.2 'JetBrains Mono', monospace;
  color: var(--color-text-primary);
  width: 100%;
}

/* v14 note row: textarea + inline Cancel + Save buttons */
.omv2-dock-note-row {
  display: flex; align-items: center; gap: 8px;
  margin-top: 8px;
  padding: 8px 12px 12px;
  border-top: 1px solid var(--omv2-divider);
}
.omv2-dock-note {
  flex: 1;
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  padding: 7px 10px;
  font: 400 12px/1.4 'Geist', system-ui, sans-serif;
  color: var(--color-text-primary);
  resize: none;
  min-height: 32px;
  max-height: 90px;
  font-family: inherit;
}
.omv2-dock-note::placeholder { color: var(--color-text-tertiary); }
.omv2-dock-note:focus,
.omv2-dock-phone-select:focus,
.omv2-dock-phone-custom:focus,
.omv2-dock-cb-input:focus {
  outline: 2px solid oklch(0.55 0.08 200 / 0.35);
  outline-offset: 1px;
  border-color: var(--color-secondary);
}
.omv2-dock-actions {
  display: flex; gap: 6px; align-items: center;
  flex-shrink: 0;
}

/* Footer kept as fallback for any legacy code path that still emits it */
.omv2-dock-foot {
  display: flex; gap: 6px; align-items: center;
  padding: 10px 12px;
  border-top: 1px solid var(--omv2-divider);
}
.omv2-dock-cancel {
  appearance: none; border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  padding: 6px 12px;
  font: 500 12px/1 'Geist', system-ui, sans-serif;
  color: var(--color-text-secondary);
  cursor: pointer;
}
.omv2-dock-cancel:hover { background: var(--color-surface-1); }
.omv2-dock-save {
  margin-left: auto;
  appearance: none; border: 1px solid transparent;
  background: var(--color-secondary);
  color: var(--omv2-near-white);
  border-radius: var(--radius-md);
  padding: 7px 14px;
  font: 600 12px/1 'Geist', system-ui, sans-serif;
  cursor: pointer;
}
.omv2-dock-save:hover { filter: brightness(0.95); }
.omv2-dock-save:disabled {
  background: var(--color-surface-1);
  color: var(--color-text-tertiary);
  cursor: not-allowed;
}

.omv2-dock-status {
  font-size: 11px;
  color: var(--color-text-tertiary);
  margin-right: 8px;
}
.omv2-dock-status.error { color: var(--color-error, oklch(0.50 0.16 25)); }

/* Tiny confirm modal for cancel-with-dirty-form */
.omv2-dock-confirm-backdrop {
  position: fixed; inset: 0;
  background: oklch(0.20 0.010 200 / 0.18);
  z-index: 1400;
  display: flex; align-items: center; justify-content: center;
}
.omv2-dock-confirm {
  background: var(--omv2-surface-near-white);
  border: 1px solid var(--color-glass-border-strong);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-overlay);
  max-width: 360px;
  padding: 20px;
  display: flex; flex-direction: column; gap: 12px;
}
.omv2-dock-confirm-title {
  font-size: 14px; font-weight: 600;
  color: var(--color-text-primary);
}
.omv2-dock-confirm-body {
  font-size: 13px; color: var(--color-text-secondary);
}
.omv2-dock-confirm-acts {
  display: flex; gap: 8px; justify-content: flex-end;
}

/* ============================================================================
 * R7 — Contacts collapsible section
 * ============================================================================ */
.omv2-hero-contacts-expand {
  appearance: none;
  background: transparent; border: none;
  margin-top: 6px;
  padding: 4px 6px 4px 2px;
  display: inline-flex; align-items: center; gap: 4px;
  font: 500 11px/1 'Geist', system-ui, sans-serif;
  color: var(--color-secondary);
  cursor: pointer;
  border-radius: var(--radius-sm);
}
.omv2-hero-contacts-expand:hover { background: var(--color-surface-1); }
.omv2-hero-contacts-expand svg { width: 12px; height: 12px; transition: transform 160ms ease; }
.omv2-hero-contacts-expand[aria-expanded="true"] svg { transform: rotate(180deg); }

/* Note: removed `omv2-hero-actions` + variants. The v14 mockup has no
   hero action row — Call/Outreach/Add note buttons were a deviation. */

.omv2-contacts-full {
  margin-top: 8px;
  border-top: 1px solid var(--omv2-divider);
  padding-top: 8px;
  display: flex; flex-direction: column;
}
.omv2-contacts-section {
  margin-bottom: 6px;
}
.omv2-contacts-section-l {
  font: 600 10px/1 'Geist', system-ui, sans-serif;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-tertiary);
  margin-bottom: 4px;
  display: block;
}
.omv2-contact-row {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 4px;
  border-radius: var(--radius-sm);
  position: relative;
}
.omv2-contact-row:hover { background: var(--color-surface-1); }
.omv2-contact-icon {
  width: 18px; height: 18px;
  color: var(--color-text-tertiary);
  flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
}
.omv2-contact-icon svg { width: 14px; height: 14px; }
.omv2-contact-val {
  flex: 1 1 auto; min-width: 0;
  font: 500 13px/1.3 'JetBrains Mono', monospace;
  color: var(--color-text-primary);
  word-break: break-word;
}
.omv2-contact-row.email .omv2-contact-val,
.omv2-contact-row.address .omv2-contact-val {
  font-family: 'Geist', system-ui, sans-serif;
}
.omv2-contact-row.bad .omv2-contact-val {
  text-decoration: line-through;
  text-decoration-thickness: 1px;
  color: var(--color-text-tertiary);
}
.omv2-contact-flag {
  display: inline-flex; align-items: center;
  font: 600 9px/1 'Geist', system-ui, sans-serif;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 2px 6px;
  border-radius: var(--radius-pill);
  background: oklch(0.55 0.18 55 / 0.12);
  color: oklch(0.45 0.18 55);
  border: 1px solid oklch(0.55 0.18 55 / 0.28);
}
.omv2-contact-flag.primary {
  background: oklch(0.55 0.08 200 / 0.10);
  color: var(--color-secondary);
  border-color: oklch(0.55 0.08 200 / 0.28);
}
.omv2-contact-actions {
  display: inline-flex; gap: 2px;
  opacity: 0;
  transition: opacity 120ms ease;
}
.omv2-contact-row:hover .omv2-contact-actions,
.omv2-contact-row:focus-within .omv2-contact-actions {
  opacity: 1;
}
.omv2-contact-act {
  appearance: none; background: transparent; border: none;
  width: 24px; height: 24px;
  border-radius: var(--radius-sm);
  color: var(--color-text-tertiary);
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
}
.omv2-contact-act:hover { background: var(--color-surface-1); color: var(--color-text-primary); }
.omv2-contact-act svg { width: 13px; height: 13px; }
.omv2-contact-act.priority.is-on { color: var(--color-accent); }
.omv2-contact-act.bad.is-on     { color: oklch(0.45 0.18 55); }

.omv2-contact-add {
  appearance: none; background: transparent;
  border: 1px dashed var(--color-glass-border-strong);
  border-radius: var(--radius-md);
  padding: 6px 10px;
  margin-top: 6px;
  font: 500 12px/1 'Geist', system-ui, sans-serif;
  color: var(--color-text-secondary);
  cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
  align-self: flex-start;
}
.omv2-contact-add:hover {
  border-color: var(--color-secondary);
  color: var(--color-secondary);
}
.omv2-contact-add svg { width: 12px; height: 12px; }

/* Inline add form */
.omv2-contact-add-form {
  display: flex; gap: 4px; align-items: center;
  padding: 6px 4px;
  margin-top: 4px;
}
.omv2-contact-add-type {
  appearance: none;
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  padding: 6px 8px;
  font: 500 12px/1.2 'Geist', system-ui, sans-serif;
  color: var(--color-text-primary);
  cursor: pointer;
}
.omv2-contact-add-input {
  flex: 1 1 auto;
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  padding: 6px 10px;
  font: 500 12px/1.2 'JetBrains Mono', monospace;
  color: var(--color-text-primary);
  min-width: 0;
}
.omv2-contact-add-save {
  appearance: none; border: 1px solid transparent;
  background: var(--color-secondary);
  color: var(--omv2-near-white);
  border-radius: var(--radius-md);
  padding: 6px 12px;
  font: 600 11px/1 'Geist', system-ui, sans-serif;
  cursor: pointer;
}
.omv2-contact-add-cancel {
  appearance: none; border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  padding: 6px 10px;
  font: 500 11px/1 'Geist', system-ui, sans-serif;
  color: var(--color-text-secondary);
  cursor: pointer;
}

/* ============================================================================
 * R8 — Edit-mode + Pinned note compose
 * ============================================================================ */

/* Edit-mode: highlight the EDIT button so it's clear we're editing */
.omv2-drawer.edit-mode [data-action="edit"] {
  background: oklch(0.55 0.08 200 / 0.10);
  color: var(--color-secondary);
  border-color: oklch(0.55 0.08 200 / 0.35);
}

/* Name editor — replaces the static h1 in edit mode */
.omv2-name-input {
  appearance: none;
  border: 1px dashed var(--color-glass-border-strong);
  background: transparent;
  font: 600 30px/1.1 'Newsreader', 'Geist', serif;
  font-style: normal;
  color: var(--color-text-primary);
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  width: 100%;
  max-width: 720px;
}
.omv2-name-input:focus {
  outline: 2px solid oklch(0.55 0.08 200 / 0.30);
  outline-offset: 1px;
  border-color: var(--color-secondary);
}

/* Hero edit-actions: save / cancel pair */
.omv2-hero-edit-actions {
  display: none;
}
.omv2-drawer.edit-mode .omv2-hero-edit-actions {
  display: flex; gap: 6px; margin-top: 6px;
}
.omv2-hero-save {
  appearance: none; border: 1px solid transparent;
  background: var(--color-secondary);
  color: var(--omv2-near-white);
  border-radius: var(--radius-md);
  padding: 6px 14px;
  font: 600 12px/1 'Geist', system-ui, sans-serif;
  cursor: pointer;
}
.omv2-hero-save:disabled { background: var(--color-surface-1); color: var(--color-text-tertiary); cursor: not-allowed; }
.omv2-hero-cancel {
  appearance: none; border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  padding: 6px 12px;
  font: 500 12px/1 'Geist', system-ui, sans-serif;
  color: var(--color-text-secondary);
  cursor: pointer;
}

/* Empty pinned-note affordance (when no pinned note exists) */
.omv2-pin-empty {
  display: inline-flex; align-items: center; gap: 4px;
  appearance: none;
  border: 1px dashed var(--color-glass-border-strong);
  background: transparent;
  color: var(--color-text-secondary);
  font: 500 12px/1 'Geist', system-ui, sans-serif;
  padding: 6px 10px;
  border-radius: var(--radius-md);
  cursor: pointer;
  margin-top: 8px;
}
.omv2-pin-empty:hover {
  border-color: var(--color-secondary);
  color: var(--color-secondary);
}
.omv2-pin-empty svg { width: 12px; height: 12px; }

/* Pinned compose: inline textarea + save/cancel */
.omv2-pin-compose {
  display: flex; flex-direction: column; gap: 6px;
  width: 100%;
}
.omv2-pin-textarea {
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-md);
  padding: 8px 10px;
  font: 400 14px/1.45 'Newsreader', 'Geist', serif;
  font-style: italic;
  color: var(--color-text-primary);
  resize: vertical;
  min-height: 64px;
  font-family: inherit;
}
.omv2-pin-textarea:focus {
  outline: 2px solid oklch(0.55 0.08 200 / 0.30);
  outline-offset: 1px;
  border-color: var(--color-secondary);
}
.omv2-pin-compose-acts {
  display: flex; gap: 4px;
}

/* ============================================================================
 * OS-5 — Interest Transfer
 * ============================================================================ */

/* Pending-transfer banner in hero */
.omv2-pending-transfer {
  display: flex; align-items: center; gap: 12px;
  margin-top: 12px;
  padding: 10px 14px;
  border: 1px solid oklch(0.55 0.18 55 / 0.32);
  background: oklch(0.55 0.18 55 / 0.08);
  border-radius: var(--radius-md);
  font: 500 12px/1.3 'Geist', system-ui, sans-serif;
}
.omv2-pending-transfer-label {
  flex: 1 1 auto;
  color: oklch(0.45 0.18 55);
}
.omv2-pending-transfer-cta {
  appearance: none;
  border: 1px solid var(--color-secondary);
  background: var(--color-secondary);
  color: var(--omv2-near-white);
  border-radius: var(--radius-md);
  padding: 6px 14px;
  font: 600 12px/1 'Geist', system-ui, sans-serif;
  cursor: pointer;
}
.omv2-pending-transfer-cta:hover { filter: brightness(0.95); }

/* ── State banners (DNC / opted-out / unreachable) ──────────────────────── */
.omv2-state-banner {
  display: flex; align-items: center; gap: 12px;
  margin-top: 10px;
  padding: 10px 14px;
  border: 1px solid var(--color-glass-border-strong);
  background: var(--color-surface-1);
  border-radius: var(--radius-md);
}
.omv2-state-banner-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px;
  flex-shrink: 0;
}
.omv2-state-banner-icon svg { width: 16px; height: 16px; }
.omv2-state-banner-body { display: flex; flex-direction: column; gap: 2px; flex: 1 1 auto; min-width: 0; }
.omv2-state-banner-label {
  font: 600 12px/1.2 'Geist', system-ui, sans-serif;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.omv2-state-banner-hint {
  font: 400 12px/1.4 'Geist', system-ui, sans-serif;
  color: var(--color-text-secondary);
}
.omv2-state-banner-cta {
  appearance: none;
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  color: var(--color-text-primary);
  border-radius: var(--radius-md);
  padding: 6px 12px;
  font: 600 12px/1 'Geist', system-ui, sans-serif;
  cursor: pointer;
  flex-shrink: 0;
}
.omv2-state-banner-cta:hover { background: var(--color-surface-2); }

/* DNC — red */
.omv2-state-banner--dnc {
  background: oklch(0.55 0.20 25 / 0.06);
  border-color: oklch(0.55 0.20 25 / 0.32);
}
.omv2-state-banner--dnc .omv2-state-banner-icon,
.omv2-state-banner--dnc .omv2-state-banner-label { color: oklch(0.50 0.20 25); }

/* Opted-out — amber/orange */
.omv2-state-banner--opted-out {
  background: oklch(0.62 0.18 55 / 0.08);
  border-color: oklch(0.55 0.18 55 / 0.32);
}
.omv2-state-banner--opted-out .omv2-state-banner-icon,
.omv2-state-banner--opted-out .omv2-state-banner-label { color: oklch(0.45 0.18 55); }

/* Unreachable — muted brass (informational, not a hard block) */
.omv2-state-banner--unreachable {
  background: oklch(0.72 0.12 80 / 0.08);
  border-color: oklch(0.72 0.12 80 / 0.32);
}
.omv2-state-banner--unreachable .omv2-state-banner-icon,
.omv2-state-banner--unreachable .omv2-state-banner-label { color: oklch(0.50 0.12 80); }

/* Transfer flow overlay (modal sitting above the drawer) */
.omv2-transfer-overlay {
  position: fixed; inset: 0;
  background: oklch(0.20 0.010 200 / 0.18);
  z-index: 1500;  /* above the drawer (1200) and dock (1300) */
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
}
.omv2-transfer-panel {
  background: var(--omv2-surface-near-white);
  border: 1px solid var(--color-glass-border-strong);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-overlay);
  width: 100%; max-width: 720px;
  max-height: 90vh; overflow-y: auto;
  display: flex; flex-direction: column;
  font-family: 'Geist', system-ui, sans-serif;
  color: var(--color-text-primary);
}
.omv2-transfer-head {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 18px 22px;
  border-bottom: 1px solid var(--omv2-divider);
}
.omv2-transfer-head > div:first-child { flex: 1 1 auto; }
.omv2-transfer-title {
  font: 600 18px/1.2 'Newsreader', 'Geist', serif;
  font-style: italic;
  color: var(--color-text-primary);
  margin: 0;
}
.omv2-transfer-sub {
  margin: 4px 0 0 0;
  font: 400 12px/1.4 'Geist', system-ui, sans-serif;
  color: var(--color-text-secondary);
}

.omv2-transfer-body {
  padding: 16px 22px;
  display: flex; flex-direction: column; gap: 14px;
}

.omv2-transfer-row {
  border: 1px solid var(--color-glass-border);
  border-radius: var(--radius-md);
  padding: 12px;
  background: var(--color-surface-1);
}
.omv2-transfer-row-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 8px;
}
.omv2-transfer-prop {
  font: 600 13px/1.2 'Geist', system-ui, sans-serif;
  color: var(--color-text-primary);
}
.omv2-transfer-source-pct {
  font: 500 11px/1 'JetBrains Mono', monospace;
  color: var(--color-text-tertiary);
}
.omv2-transfer-slices {
  display: flex; flex-direction: column; gap: 8px;
}
.omv2-transfer-slice {
  display: flex; align-items: center; gap: 6px;
  padding: 6px 8px;
  background: var(--omv2-surface-near-white);
  border: 1px solid var(--color-glass-border);
  border-radius: var(--radius-sm);
}
.omv2-transfer-pct-input {
  width: 80px;
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-sm);
  padding: 5px 8px;
  font: 600 13px/1 'JetBrains Mono', monospace;
  color: var(--color-text-primary);
  text-align: right;
}
.omv2-transfer-unit {
  font: 500 12px/1 'JetBrains Mono', monospace;
  color: var(--color-text-tertiary);
}
.omv2-transfer-arrow {
  margin: 0 4px;
  color: var(--color-text-tertiary);
}
.omv2-transfer-dest {
  flex: 1 1 auto;
  display: flex; align-items: center; gap: 6px;
  min-width: 0;
}
.omv2-transfer-dest-search {
  flex: 1 1 auto; min-width: 0;
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-sm);
  padding: 5px 8px;
  font: 500 12px/1 'Geist', system-ui, sans-serif;
  color: var(--color-text-primary);
}
.omv2-transfer-new-toggle,
.omv2-transfer-switch-mode,
.omv2-transfer-clear-dest {
  appearance: none;
  border: 1px solid var(--color-glass-border);
  background: transparent;
  color: var(--color-text-secondary);
  font: 500 10px/1 'Geist', system-ui, sans-serif;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 5px 8px;
  border-radius: var(--radius-pill);
  cursor: pointer;
  white-space: nowrap;
}
.omv2-transfer-new-toggle:hover,
.omv2-transfer-switch-mode:hover,
.omv2-transfer-clear-dest:hover { background: var(--color-surface-1); }

.omv2-transfer-dest-pill {
  flex: 1 1 auto;
  font: 600 12px/1 'Geist', system-ui, sans-serif;
  background: oklch(0.55 0.08 200 / 0.10);
  border: 1px solid oklch(0.55 0.08 200 / 0.30);
  color: var(--color-secondary);
  border-radius: var(--radius-pill);
  padding: 5px 10px;
}

.omv2-transfer-dest-results {
  position: absolute;
  z-index: 1600;
  background: var(--omv2-surface-near-white);
  border: 1px solid var(--color-glass-border-strong);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-overlay);
  max-width: 320px;
  margin-top: 4px;
}
.omv2-transfer-dest-result {
  appearance: none;
  display: block;
  width: 100%;
  text-align: left;
  border: none;
  background: transparent;
  font: 500 12px/1.3 'Geist', system-ui, sans-serif;
  color: var(--color-text-primary);
  padding: 8px 10px;
  cursor: pointer;
  border-bottom: 1px solid var(--omv2-divider);
}
.omv2-transfer-dest-result:last-child { border-bottom: 0; }
.omv2-transfer-dest-result:hover { background: var(--color-surface-1); }
.omv2-transfer-empty {
  padding: 8px 10px;
  font: 500 12px 'Geist', system-ui, sans-serif;
  color: var(--color-text-tertiary);
}

.omv2-transfer-new-owner {
  flex: 1 1 auto;
  display: grid; grid-template-columns: 2fr 1fr 1.5fr auto; gap: 4px;
}
.omv2-transfer-no-name,
.omv2-transfer-no-phone,
.omv2-transfer-no-email {
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  border-radius: var(--radius-sm);
  padding: 5px 8px;
  font: 500 11px/1 'Geist', system-ui, sans-serif;
  color: var(--color-text-primary);
  min-width: 0;
}

.omv2-transfer-slice-remove {
  appearance: none;
  border: none; background: transparent;
  color: var(--color-text-tertiary);
  width: 22px; height: 22px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: var(--radius-sm);
  cursor: pointer;
}
.omv2-transfer-slice-remove:hover { background: var(--color-surface-1); color: oklch(0.45 0.18 25); }
.omv2-transfer-slice-remove svg { width: 13px; height: 13px; }

.omv2-transfer-add-slice {
  margin-top: 8px;
  appearance: none;
  border: 1px dashed var(--color-glass-border-strong);
  background: transparent;
  color: var(--color-text-secondary);
  font: 500 11px/1 'Geist', system-ui, sans-serif;
  padding: 6px 10px;
  border-radius: var(--radius-md);
  cursor: pointer;
}
.omv2-transfer-add-slice:hover { border-color: var(--color-secondary); color: var(--color-secondary); }

.omv2-transfer-foot {
  display: flex; gap: 6px; align-items: center; justify-content: flex-end;
  padding: 14px 22px;
  border-top: 1px solid var(--omv2-divider);
}
.omv2-transfer-btn {
  appearance: none;
  border: 1px solid var(--color-glass-border-strong);
  background: var(--omv2-surface-near-white);
  color: var(--color-text-primary);
  border-radius: var(--radius-md);
  padding: 7px 14px;
  font: 500 12px/1 'Geist', system-ui, sans-serif;
  cursor: pointer;
}
.omv2-transfer-btn-ghost  { color: var(--color-text-secondary); }
.omv2-transfer-btn-defer  { background: var(--color-surface-1); }
.omv2-transfer-btn-submit {
  background: var(--color-secondary);
  border-color: transparent;
  color: var(--omv2-near-white);
  font-weight: 600;
}
.omv2-transfer-btn-submit:hover { filter: brightness(0.95); }
.omv2-transfer-btn-submit:disabled {
  background: var(--color-surface-1);
  color: var(--color-text-tertiary);
  cursor: not-allowed;
}

/* Transfer history pane */
.omv2-pane-transfers {
  border-top: 1px solid var(--omv2-divider);
  padding: 12px 14px 16px;
}
.omv2-transfer-history {
  display: flex; flex-direction: column; gap: 6px;
  margin-top: 4px;
}
.omv2-transfer-history-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 10px;
  border: 1px solid var(--color-glass-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface-1);
}
.omv2-transfer-history-row.is-reversed {
  opacity: 0.55;
  background: transparent;
}
.omv2-transfer-history-main {
  display: flex; align-items: center; gap: 10px;
  flex: 1 1 auto;
  font: 500 12px/1 'Geist', system-ui, sans-serif;
  color: var(--color-text-primary);
}
.omv2-transfer-history-pct {
  font-family: 'JetBrains Mono', monospace;
  font-weight: 600;
  color: var(--color-money);
}
.omv2-transfer-history-dir {
  color: var(--color-text-secondary);
}
.omv2-transfer-history-via {
  font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--color-text-tertiary);
  padding: 2px 7px;
  border-radius: var(--radius-pill);
  background: var(--omv2-surface-near-white);
  border: 1px solid var(--color-glass-border);
}
.omv2-transfer-history-when {
  font-family: 'JetBrains Mono', monospace;
  color: var(--color-text-tertiary);
  font-size: 11px;
  margin-left: auto;
}
.omv2-transfer-history-reverse {
  appearance: none;
  border: 1px solid var(--color-glass-border);
  background: transparent;
  color: var(--color-text-secondary);
  font: 500 10px/1 'Geist', system-ui, sans-serif;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding: 5px 10px;
  border-radius: var(--radius-pill);
  cursor: pointer;
}
.omv2-transfer-history-reverse:hover {
  border-color: oklch(0.55 0.18 55 / 0.40);
  color: oklch(0.45 0.18 55);
}
.omv2-transfer-history-reversed {
  width: 100%;
  margin-top: 4px;
  font: 500 10px/1.3 'Geist', system-ui, sans-serif;
  font-style: italic;
  color: var(--color-text-tertiary);
}
