/* ════════════════════════════════════════════════════════════════════════════
   Cockpit (Owner Modal V2 → two-mode drawer) — Phase 2 styles.
   Built incrementally per docs/specs/owner-modal-audit-2026-06-14/COCKPIT-BUILD-PLAN.md.
   Scoped under `.omv2-drawer[data-cockpit]` so rollback via ?cockpit=0 can
   still serve the legacy modal without inheriting cockpit styling.
   Real v2 tokens (variables-v2.css), even-only spacing, money = green, Lucide SVG,
   Newsreader italic ≥18px / Geist body / JetBrains Mono numerals.
   ════════════════════════════════════════════════════════════════════════════ */

.omv2-drawer[data-cockpit] .ck-research { display: flex; flex-direction: column; }
/* Research mode fills the drawer so .ck-scroll can scroll under the fixed dw-top.
   Scoped :not(.ck-call) — call mode (ck-research.ck-call) keeps its own layout. */
.omv2-drawer[data-cockpit] .ck-research:not(.ck-call) { flex: 1; min-height: 0; }
/* v4 mockup .dw-scroll: the body scrolls; the .ck-dwtop top bar stays fixed. */
.omv2-drawer[data-cockpit] .ck-scroll { flex: 1; min-height: 0; overflow-y: auto; }
/* v4 mockup .dw-top — fixed top chrome: record-nav + Start calling + close. */
.omv2-drawer[data-cockpit] .ck-dwtop {
  display: flex; align-items: center; gap: 10px;
  flex: 0 0 auto;
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-glass-border);
  background: var(--color-surface-1);
}
.omv2-drawer[data-cockpit] .ck-dwtop-spacer { flex: 1; }
/* Header status-badge cluster (call-status / lead / industry-pro), moved out of
   the name row. Sits just after the record nav. */
.omv2-drawer[data-cockpit] .ck-dwtop-chips {
  display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.omv2-drawer[data-cockpit] .ck-recnav {
  display: inline-flex; align-items: center; gap: 8px;
  font: 400 11px 'JetBrains Mono', monospace;
  color: var(--color-text-tertiary);
}
.omv2-drawer[data-cockpit] .ck-recnav-pos b { color: var(--color-text-secondary); font-weight: 600; }
.omv2-drawer[data-cockpit] .ck-recnav-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; padding: 0;
  border: 1px solid var(--color-glass-border);
  border-radius: var(--radius-md);
  background: var(--omv2-surface-near-white);
  color: var(--color-text-secondary);
  cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-recnav-btn:hover:not(:disabled) {
  border-color: var(--color-secondary);
  color: var(--color-secondary);
}
.omv2-drawer[data-cockpit] .ck-recnav-btn:disabled { opacity: .4; cursor: not-allowed; }
.omv2-drawer[data-cockpit] .ck-recnav-btn svg { width: 14px; height: 14px; }
.omv2-drawer[data-cockpit] .ck-startcall-btn {
  display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid var(--color-secondary);
  background: var(--omv2-surface-near-white);
  color: var(--color-secondary);
  border-radius: var(--radius-md);
  padding: 6px 12px;
  font: 600 12px var(--font-body);
  cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-startcall-btn:hover {
  background: var(--color-secondary);
  color: var(--omv2-near-white);
}
.omv2-drawer[data-cockpit] .ck-startcall-btn svg { width: 14px; height: 14px; }
/* Edit button (mockup dw-top left) — neutral icbtn. */
.omv2-drawer[data-cockpit] .ck-dwtop-edit {
  display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid var(--color-glass-border); background: var(--color-surface-1);
  border-radius: var(--radius-md, 8px); padding: 6px 12px;
  font: 600 12px var(--font-body); color: var(--color-text-secondary); cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-dwtop-edit:hover { border-color: var(--color-secondary); color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-dwtop-edit svg { width: 14px; height: 14px; }

/* ── Identity band (Phase 2.1 step 1) ─────────────────────────────────────── */
.omv2-drawer[data-cockpit] .ck-identity {
  padding: 18px 24px 14px;
  /* No tint behind the owner name / info — the section reads on the drawer's
     base surface; the wells header now carries the secondary band tone instead. */
  background: transparent;
  border-bottom: 1px solid var(--color-glass-border);
}
.omv2-drawer[data-cockpit] .ck-eyebrow {
  display: flex; flex-wrap: wrap; gap: 10px;   /* project / county split by layout, no dot */
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: .1em; text-transform: uppercase;
  color: var(--color-text-tertiary);
  margin-bottom: 6px;
}
/* County reads as the secondary half of the eyebrow — separated by gap + tone,
   never a middle dot (no-dots rule). */
.omv2-drawer[data-cockpit] .ck-eyebrow-cty { color: var(--color-text-secondary); }
/* Edit-mode "Pro" toggle — to the right of the eyebrow; hidden outside edit mode.
   Brass (the Industry-Pro display token) when on. */
.omv2-drawer[data-cockpit] .ck-eyebrow-pro {
  display: none; margin-left: auto;
  align-items: center; gap: 4px;
  padding: 2px 10px; border: 1px solid var(--color-glass-border); border-radius: 999px;
  background: transparent; cursor: pointer;
  font: 600 10px 'JetBrains Mono', monospace; letter-spacing: .06em; text-transform: uppercase;
  color: var(--color-text-tertiary);
}
.omv2-drawer[data-cockpit].edit-mode .ck-eyebrow-pro { display: inline-flex; }
.omv2-drawer[data-cockpit] .ck-eyebrow-pro:hover { border-color: var(--color-accent); }
.omv2-drawer[data-cockpit] .ck-eyebrow-pro.on { border-color: var(--color-accent); color: var(--color-text-secondary); background: rgba(var(--color-accent-rgb), .1); }
/* Industry-Pro DISPLAY badge — relocated into the eyebrow (right of the project area,
   above the owner name). Brass (the Industry-Pro display token), shown only when pro. */
.omv2-drawer[data-cockpit] .ck-tagchip.ck-eyebrow-propro {
  align-self: center; padding: 1px 8px; border-radius: 999px;
  border: 1px solid rgba(var(--color-accent-rgb), .35);
  background: rgba(var(--color-accent-rgb), .1);
  color: var(--color-accent);
  font: 700 9px 'JetBrains Mono', monospace; letter-spacing: .06em; text-transform: uppercase;
}
/* Mockup .idrow: name + pills INLINE, baseline-aligned, wrapping; More right. */
.omv2-drawer[data-cockpit] .ck-id-row {
  display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
}
.omv2-drawer[data-cockpit] .ck-id-spacer { flex: 1; }
.omv2-drawer[data-cockpit] .ck-name {
  margin: 0;
  font-family: 'Newsreader', serif; font-style: italic; font-weight: 500;
  font-size: 30px; line-height: 1.05; letter-spacing: -.01em;
  color: var(--color-text-primary);
}
/* Header chips (user 2026-06-20): an outlined FRAME when unselected, a filled chip in
   the matching STATUS color when selected/active — the status-color tint + a solid
   status-color border + status-color text (reads as "filled with the status color",
   stays AA-readable where a solid mid-tone fill would fail). Cockpit scope only;
   overrides the borderless / .omv2-chip fills from owner-modal-v2.css. */
.omv2-drawer[data-cockpit] .ck-pill {
  padding: 4px 12px;
  border: 1px solid var(--color-glass-border);
  border-radius: 999px;
  background: transparent;
  color: var(--color-text-secondary);
  font: 600 11px var(--font-body);
  gap: 0;
}
/* Unselected / prompt chips (Lead / DNC / Snooze with no value) — muted grey frame. */
.omv2-drawer[data-cockpit] .ck-pill.ck-pill-empty {
  background: transparent; border-color: var(--color-glass-border); color: var(--color-text-tertiary);
}
.omv2-drawer[data-cockpit] .ck-pill.ck-pill-empty:hover {
  border-color: var(--color-text-tertiary); color: var(--color-text-secondary);
}
/* ── Selected/active: status-color tint fill + matching border + colored text ── */
/* Owner status — Active = green; Deceased / Sold = neutral. */
.omv2-drawer[data-cockpit] .ck-pill.omv2-chip-status {
  background: rgba(var(--color-success-rgb), .14); border-color: var(--color-success); color: var(--color-success-text);
}
.omv2-drawer[data-cockpit] .ck-pill[data-chip="status"].omv2-chip-deceased {
  background: var(--color-surface-2); border-color: var(--color-glass-border-strong); color: var(--color-text-secondary);
}
/* Call status — answered/reached green, callback amber, no-answer / wrong neutral. */
.omv2-drawer[data-cockpit] .ck-pill[data-chip="called"].omv2-chip-called-answered,
.omv2-drawer[data-cockpit] .ck-pill[data-chip="called"].omv2-chip-reached {
  background: rgba(var(--color-success-rgb), .14); border-color: var(--color-success); color: var(--color-success-text);
}
.omv2-drawer[data-cockpit] .ck-pill[data-chip="called"].omv2-chip-called-callback {
  background: rgba(var(--color-warning-rgb), .16); border-color: var(--color-warning); color: var(--color-warning-text);
}
/* No answer = the canonical no-answer color (--color-no-answer, the same burnt-orange
   the owner tables use), so the header pill matches the tables + the activity log. */
.omv2-drawer[data-cockpit] .ck-pill[data-chip="called"].omv2-chip-called-noanswer {
  background: rgba(var(--color-no-answer-rgb, 194, 65, 12), .12); border-color: var(--color-no-answer); color: var(--color-no-answer-text);
}
.omv2-drawer[data-cockpit] .ck-pill[data-chip="called"].omv2-chip-called-wrong {
  background: var(--color-surface-2); border-color: var(--color-glass-border-strong); color: var(--color-text-tertiary);
}
/* Lead — Hot = amber (warning), Cold = teal (secondary). Boldest token (weight 700). */
.omv2-drawer[data-cockpit] .ck-pill.omv2-chip-lead-hot {
  background: rgba(var(--color-warning-rgb), .16); border-color: var(--color-warning); color: var(--color-warning-text); font-weight: 700;
}
.omv2-drawer[data-cockpit] .ck-pill.omv2-chip-lead-cold {
  background: rgba(var(--color-secondary-rgb), .14); border-color: var(--color-secondary); color: var(--color-secondary-text); font-weight: 700;
}
/* DNC active = danger red (its own status color, not the deceased neutral). */
.omv2-drawer[data-cockpit] .ck-pill[data-chip="dnc"]:not(.ck-pill-empty) {
  background: rgba(var(--color-danger-rgb), .12); border-color: var(--color-danger); color: var(--color-danger-text);
}
/* Defer / Snooze active ("Deferred") = amber (paused). */
.omv2-drawer[data-cockpit] .ck-pill[data-chip="defer"]:not(.ck-pill-empty) {
  background: rgba(var(--color-warning-rgb), .16); border-color: var(--color-warning); color: var(--color-warning-text);
}
/* (The "More" overflow menu was removed — DNC + defer are header chips now, so
   the .ck-more-wrap/.ck-more-btn/.ck-more-menu/.ck-more-item styles are gone.) */
.omv2-drawer[data-cockpit] .ck-edit-actions {
  margin-top: 8px;
}

/* ── Identity sub-line (v4 mockup): mailing address + Industry Pro tag ─────── */
.omv2-drawer[data-cockpit] .ck-idsub {
  margin-top: 8px;
  display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
  font-size: 12px; color: var(--color-text-secondary);
}
.omv2-drawer[data-cockpit] .ck-idsub-loc { display: inline-flex; align-items: center; gap: 6px; }
.omv2-drawer[data-cockpit] .ck-idsub-loc svg {
  width: 14px; height: 14px; color: var(--color-text-tertiary); flex-shrink: 0;
}
.omv2-drawer[data-cockpit] .ck-tagchip {
  font: 600 10px/1 'JetBrains Mono', monospace;
  letter-spacing: .03em; text-transform: uppercase;
  color: var(--color-text-tertiary);
  border: 1px solid var(--color-glass-border); border-radius: 6px;
  padding: 2px 8px;
}
/* Industry Pro badge matches the owner-table .ip-badge-sm exactly: dark text on a
   brass-tinted bg + brass-tinted border (AA-safe; brass text alone failed contrast). */
.omv2-drawer[data-cockpit] .ck-dwtop-pro {
  color: var(--color-text-primary);
  background: rgba(var(--color-accent-rgb), .06);
  border-color: rgba(var(--color-accent-rgb), .18);
}
/* (Removed dead .ck-id-primary/.ck-id-phone/.ck-id-email rules — the relayout moved
   primary phone/email into the contacts column as .ck-cc-primary/.ck-cc-line; the old
   classes are no longer rendered. 2026-06-19.) */

/* ── Focus zone: next action + attempts + pinned + Log-call CTA. Lives in the RIGHT
   action column of the identity (2026-06-19) — a clean vertical stack (the column's
   own border-left is the divider; no band chrome). The Log-call button sits last. ── */
.omv2-drawer[data-cockpit] .ck-focus {
  display: flex; flex-direction: column; align-items: stretch; gap: 12px;
  padding: 0; margin: 0;
  background: transparent;
}
.omv2-drawer[data-cockpit] .ck-focus-item { display: flex; flex-direction: column; gap: 2px; }
.omv2-drawer[data-cockpit] .ck-focus-l {
  font: 600 10px/1 'JetBrains Mono', monospace;
  text-transform: uppercase; letter-spacing: .06em;
  color: var(--color-text-tertiary);
}
.omv2-drawer[data-cockpit] .ck-focus-v {
  font-size: 13px; font-weight: 600; color: var(--color-text-primary);
}
.omv2-drawer[data-cockpit] .ck-focus-spacer { display: none; }
/* Pinned note in the focus zone — fills the space between Attempts and the CTA;
   brass pin (display accent), muted italic text, single-line truncate. */
.omv2-drawer[data-cockpit] .ck-focus-pin {
  min-width: 0;
  display: flex; align-items: center; gap: 6px;
}
.omv2-drawer[data-cockpit] .ck-focus-pin > svg { width: 13px; height: 13px; color: var(--color-accent); flex-shrink: 0; }
/* Clickable note text — opens the editor. Borderless button, hover underlines. */
.omv2-drawer[data-cockpit] .ck-focus-pin-t {
  min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  font-size: 12px; font-style: italic; color: var(--color-text-secondary);
  border: 0; background: transparent; padding: 0; cursor: pointer; text-align: left;
}
.omv2-drawer[data-cockpit] .ck-focus-pin-t:hover { color: var(--color-text-primary); text-decoration: underline; }
/* Unpin × — small muted icon button, reddens on hover. */
.omv2-drawer[data-cockpit] .ck-focus-pin-x {
  flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px; border: 0; background: transparent; border-radius: 4px;
  color: var(--color-text-tertiary); cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-focus-pin-x svg { width: 12px; height: 12px; }
.omv2-drawer[data-cockpit] .ck-focus-pin-x:hover { color: var(--color-danger); background: rgba(var(--color-danger-rgb), .08); }
.omv2-drawer[data-cockpit] .ck-focus-call {
  width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: var(--color-accent); color: oklch(0.26 0.04 80);
  border: 0; border-radius: var(--radius-md);
  padding: 10px 18px;
  font: 600 13px var(--font-body); cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-focus-call svg { width: 18px; height: 18px; stroke-width: 2; }
.omv2-drawer[data-cockpit] .ck-focus-num { font-family: 'JetBrains Mono', monospace; font-weight: 600; }

/* ── R-2 — research "Log call" dropdown (mockup .numwrap/.nummenu/.numopt) ──── */
.omv2-drawer[data-cockpit] .ck-lognum-wrap { position: relative; }
/* the trailing caret is smaller than the leading phone icon */
.omv2-drawer[data-cockpit] .ck-logcall-btn svg:last-child { width: 14px; height: 14px; }
.omv2-drawer[data-cockpit] .ck-lognum-menu {
  position: absolute; top: calc(100% + 4px); right: 0; left: auto; z-index: 30;
  background: var(--color-surface-1); border: 1px solid var(--color-glass-border);
  border-radius: 8px; box-shadow: 0 8px 24px -16px oklch(0.20 0.010 200 / .3);
  min-width: 248px; padding: 4px;
}
.omv2-drawer[data-cockpit] .ck-lognum-menu[hidden] { display: none; }
.omv2-drawer[data-cockpit] .ck-numopt {
  display: flex; align-items: center; gap: 8px; width: 100%; text-align: left;
  border: 0; background: transparent; border-radius: 6px; padding: 8px 10px;
  font: 600 13px 'JetBrains Mono', monospace; color: var(--color-text-primary); cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-numopt:hover { background: rgba(var(--color-secondary-rgb), .07); }
.omv2-drawer[data-cockpit] .ck-numopt.sel { background: rgba(var(--color-secondary-rgb), .1); }
.omv2-drawer[data-cockpit] .ck-numopt .ck-numopt-nt { margin-left: auto; font: 600 10px 'JetBrains Mono', monospace; text-transform: uppercase; color: var(--color-text-tertiary); }
.omv2-drawer[data-cockpit] .ck-numopt .ck-numopt-nt:empty { display: none; }
.omv2-drawer[data-cockpit] .ck-numopt-add { color: var(--color-secondary); border-top: 1px solid var(--color-glass-border); margin-top: 2px; font-family: var(--font-body); }
.omv2-drawer[data-cockpit] .ck-numopt-add svg { width: 12px; height: 12px; }
.omv2-drawer[data-cockpit] .ck-numopt-empty { padding: 8px 10px; font-size: 12px; color: var(--color-text-tertiary); font-style: italic; }

/* ── R-2 — log-a-call DROPDOWN (2026-06-19: was a centered modal that covered the
   offer details; now an anchored dropdown off the rail's "Log call" button). Non-
   modal — no backdrop, owner details stay visible behind it; opens downward, right-
   aligned to the rail, with an internal scroll cap. ──────────────────────────────── */
.omv2-drawer[data-cockpit] .ck-loginline-overlay {
  position: absolute; top: calc(100% + 6px); right: 0; left: auto; z-index: 1500;
}
.omv2-drawer[data-cockpit] .ck-loginline-overlay[hidden] { display: none; }
.omv2-drawer[data-cockpit] .ck-inline-log {
  width: 360px; max-width: min(420px, 86vw);
  max-height: min(70vh, 480px); overflow-y: auto;
  margin: 0;
  border: 1px solid var(--color-glass-border-strong); border-radius: var(--radius-lg, 10px);
  background: var(--omv2-surface-near-white); padding: 14px 16px;
  box-shadow: var(--shadow-overlay);
}
.omv2-drawer[data-cockpit] .ck-inline-log[hidden] { display: none; }
.omv2-drawer[data-cockpit] .ck-il-head { display: flex; align-items: center; gap: 8px; font: 600 12px var(--font-body); margin-bottom: 10px; color: var(--color-text-primary); }
.omv2-drawer[data-cockpit] .ck-il-head .num { font-family: 'JetBrains Mono', monospace; color: var(--color-text-primary); }
/* Compact call-menu grid (user 2026-06-20): 3 columns. The 5 outcome chips
   (display:contents radiogroup) fill cells 1-5 (3 over 2) and the Lead box is cell 6,
   so the menu is 4 rows (header + 2 chip rows + note) instead of a long 6-row stack. */
.omv2-drawer[data-cockpit] .ck-il-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.omv2-drawer[data-cockpit] .ck-il-chips { display: contents; }
.omv2-drawer[data-cockpit] .ck-il-chip {
  position: relative; border: 1px solid var(--color-glass-border-strong); background: var(--color-surface-1);
  border-radius: 7px; padding: 7px 8px; font: 600 12px var(--font-body); color: var(--color-text-primary);
  cursor: pointer; display: flex; flex-direction: column; align-items: flex-start; gap: 1px; min-width: 0;
  transition: border-color .12s, background .12s;
}
.omv2-drawer[data-cockpit] .ck-il-chip .lbl { line-height: 1.15; }
.omv2-drawer[data-cockpit] .ck-il-chip:hover { border-color: var(--color-secondary); background: rgba(var(--color-secondary-rgb), .05); }
.omv2-drawer[data-cockpit] .ck-il-chip.sel { border-color: var(--color-secondary); background: rgba(var(--color-secondary-rgb), .1); }
.omv2-drawer[data-cockpit] .ck-il-chip .key { position: absolute; top: 6px; right: 8px; font: 600 9px 'JetBrains Mono', monospace; color: var(--color-text-tertiary); }
.omv2-drawer[data-cockpit] .ck-il-chip .conseq { font-size: 9px; font-weight: 500; color: var(--color-text-tertiary); line-height: 1.1; }
.omv2-drawer[data-cockpit] .ck-il-chip.mut { color: var(--color-text-secondary); }
.omv2-drawer[data-cockpit] .ck-il-chip.mut:hover { border-color: var(--color-danger); color: var(--color-danger-text); background: rgba(var(--color-danger-rgb), .05); }
/* Lead box — the 6th grid cell: a compact "Lead" label over the None/Hot/Cold buttons,
   bordered so it reads as its own box alongside the outcome chips. */
.omv2-drawer[data-cockpit] .ck-il-leadbox {
  display: flex; flex-direction: column; justify-content: center; gap: 4px;
  border: 1px solid var(--color-glass-border-strong); border-radius: 7px;
  background: var(--color-surface-1); padding: 6px 8px;
}
.omv2-drawer[data-cockpit] .ck-il-leadbox .ck-il-sub-l { flex: none; }
.omv2-drawer[data-cockpit] .ck-il-leads { display: flex; gap: 4px; }
.omv2-drawer[data-cockpit] .ck-il-lead {
  flex: 1; padding: 3px 2px; border: 1px solid var(--color-glass-border); border-radius: 6px;
  background: transparent; cursor: pointer; font: 600 10px var(--font-body); color: var(--color-text-secondary);
}
.omv2-drawer[data-cockpit] .ck-il-lead:hover { border-color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-il-lead.sel { border-color: var(--color-secondary); background: rgba(var(--color-secondary-rgb), .1); color: var(--color-text-primary); }
.omv2-drawer[data-cockpit] .ck-il-lead.ck-il-lead-hot.sel { border-color: var(--color-warning); background: rgba(var(--color-warning-rgb), .12); color: var(--color-warning-text); }
.omv2-drawer[data-cockpit] .ck-il-lead.ck-il-lead-cold.sel { border-color: var(--color-secondary); background: rgba(var(--color-secondary-rgb), .12); color: var(--color-secondary-text); }
.omv2-drawer[data-cockpit] .ck-il-chip.mut.sel { color: var(--color-danger-text); border-color: var(--color-danger); background: rgba(var(--color-danger-rgb), .08); }
.omv2-drawer[data-cockpit] .ck-il-callback,
.omv2-drawer[data-cockpit] .ck-il-dnc { display: flex; align-items: center; gap: 10px; margin-top: 10px; }
.omv2-drawer[data-cockpit] .ck-il-callback[hidden],
.omv2-drawer[data-cockpit] .ck-il-dnc[hidden] { display: none; }
.omv2-drawer[data-cockpit] .ck-il-sub-l { font: 600 10px 'JetBrains Mono', monospace; text-transform: uppercase; letter-spacing: .06em; color: var(--color-text-tertiary); flex: 0 0 88px; }
.omv2-drawer[data-cockpit] .ck-il-input { flex: 1; border: 1px solid var(--color-glass-border); border-radius: 6px; padding: 6px 10px; font: 500 12px var(--font-body); color: var(--color-text-primary); background: var(--color-surface-1); outline: none; }
.omv2-drawer[data-cockpit] .ck-il-input:focus { border-color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-il-note { margin-top: 12px; border: 1px solid var(--color-glass-border); border-radius: 8px; padding: 8px 10px; background: var(--color-surface-1); }
.omv2-drawer[data-cockpit] .ck-il-note textarea { width: 100%; box-sizing: border-box; border: 0; resize: vertical; font: 13px var(--font-body); outline: none; min-height: 34px; background: transparent; color: var(--color-text-primary); }
.omv2-drawer[data-cockpit] .ck-il-note textarea::placeholder { color: var(--color-text-tertiary); }
.omv2-drawer[data-cockpit] .ck-il-foot { display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 4px; }
.omv2-drawer[data-cockpit] .ck-il-status { font-size: 11px; color: var(--color-danger); margin-right: auto; }
.omv2-drawer[data-cockpit] .ck-il-save { background: var(--color-secondary); color: #FBFBFB; border: 0; border-radius: 8px; padding: 6px 14px; font: 600 12px var(--font-body); cursor: pointer; }
.omv2-drawer[data-cockpit] .ck-il-save:disabled { opacity: .5; pointer-events: none; }

/* ── Money bar (Phase 2.1 step 2 / C2: Open headline, Closed = recorded history) ── */
.omv2-drawer[data-cockpit] .ck-money {
  /* align-items:center so every value's vertical CENTER lands on one horizon, even
     though the figures are different sizes and the Closed cell carries a foot — the
     bottom-align before this left the values on staggered baselines (user 2026-06-20). */
  display: flex; align-items: center; gap: 0; flex-wrap: wrap; row-gap: 12px;
  padding: 16px 24px;
  background: var(--color-surface-1);
  border-bottom: 1px solid var(--color-glass-border);
}
.omv2-drawer[data-cockpit] .ck-money-cell {
  display: flex; flex-direction: column; gap: 4px;
  padding: 0 20px;
  border-left: 1px solid var(--color-glass-border);
}
.omv2-drawer[data-cockpit] .ck-money-cell:first-child { padding-left: 0; border-left: 0; }
.omv2-drawer[data-cockpit] .ck-money-l {
  font-size: 11px; color: var(--color-text-secondary);
}
.omv2-drawer[data-cockpit] .ck-money-v {
  font-size: 24px; font-weight: 600; line-height: 1; letter-spacing: -.01em;
  font-variant-numeric: tabular-nums;
  /* money = green (D17, mockup "all green") — matches .ck-well-value; the bare
     .money class carries no color in this codebase, so the cockpit must opt in. */
  color: var(--color-money);
}
/* Total NRA is a quantity and Avg $/unit is a RATE — neither is a money total,
   so both read in ink. This leaves "Offer total" as the single green figure on
   the left, instead of a row of same-colored amounts. */
.omv2-drawer[data-cockpit] .ck-money-nra,
.omv2-drawer[data-cockpit] .ck-money-ink { color: var(--color-text-primary); }
/* Offer total + Total NRA read slightly larger than the rest (user 2026-06-20). */
.omv2-drawer[data-cockpit] .ck-money-lg { font-size: 28px; }

/* Right CONTEXT cluster — pipeline + closed history, pushed right behind a strong
   divider. These are deal/sold context (not the live offer), so they render
   muted + smaller to sit back from the green Offer total. */
.omv2-drawer[data-cockpit] .ck-money-context {
  margin-left: auto;
  display: inline-flex; align-items: center;
  padding-left: 24px;
  border-left: 1px solid var(--color-glass-border-strong);
}
.omv2-drawer[data-cockpit] .ck-money-context .ck-money-cell:first-child { padding-left: 0; border-left: 0; }
.omv2-drawer[data-cockpit] .ck-money-ctx .ck-money-v { color: var(--color-text-secondary); font-size: 18px; }
.omv2-drawer[data-cockpit] .ck-money-hist {
  font-family: 'JetBrains Mono', monospace;
  font-size: 9px; letter-spacing: .08em; text-transform: uppercase;
  color: var(--color-text-secondary);
}
/* Foot names the closed-won well(s) the recorded value came from (mockup .m-foot).
   Taken OUT of flow (absolute) so it doesn't push the Closed value off the shared
   value horizon (see .ck-money align-items:center, user 2026-06-20). */
.omv2-drawer[data-cockpit] .ck-money-closed { position: relative; }
.omv2-drawer[data-cockpit] .ck-money-hist-foot {
  position: absolute; top: 100%; left: 0; margin-top: 2px; white-space: nowrap;
  font-size: 11px;
  color: var(--color-text-tertiary);
}

/* ── Contacts band (v4 mockup): single horizontal row — primary contacts +
   related-parties trigger + view-all; related-parties popover anchored here. ── */
.omv2-drawer[data-cockpit] .ck-contact-band {
  position: relative;
  display: flex; align-items: center; flex-wrap: wrap; gap: 14px;
  padding: 12px 24px;
  background: var(--color-surface-1);
  border-bottom: 1px solid var(--color-glass-border);
}
/* Left cluster items — mockup .contact: 12px, primary ink, faint leading icon. */
.omv2-drawer[data-cockpit] .ck-contact {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; color: var(--color-text-primary);
}
.omv2-drawer[data-cockpit] .ck-contact > svg {
  width: 14px; height: 14px; color: var(--color-text-tertiary); flex-shrink: 0;
}
.omv2-drawer[data-cockpit] .ck-contact-phone .num { font-family: 'JetBrains Mono', monospace; }
/* Copy mini-icon — mockup .miniicon (square outline, teal on hover, green flash). */
.omv2-drawer[data-cockpit] .ck-miniicon {
  width: 26px; height: 26px; padding: 0;
  border: 1px solid var(--color-glass-border); border-radius: 6px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--color-text-secondary); background: transparent; cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-miniicon svg { width: 14px; height: 14px; }
.omv2-drawer[data-cockpit] .ck-miniicon:hover { border-color: var(--color-secondary); color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-miniicon.is-copied { border-color: var(--color-success); color: var(--color-success); }
/* Related-parties trigger — inherits .ck-contact; strip native button chrome. */
.omv2-drawer[data-cockpit] .ck-relparties-btn {
  border: 0; background: transparent; cursor: pointer; padding: 0;
}
.omv2-drawer[data-cockpit] .ck-relparties-btn:hover,
.omv2-drawer[data-cockpit] .ck-relparties-btn:hover > svg { color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-relparties-count { font-family: 'JetBrains Mono', monospace; }
/* Right group — mockup .addchips: pushed right, dashed teal add affordances. */
.omv2-drawer[data-cockpit] .ck-contact-actions {
  display: inline-flex; align-items: center; gap: 6px;
  margin-left: auto;
}
.omv2-drawer[data-cockpit] .ck-addchip {
  display: inline-flex; align-items: center; gap: 4px;
  font: 600 11px var(--font-body); color: var(--color-secondary);
  border: 1px dashed var(--color-glass-border-strong); border-radius: 6px;
  padding: 4px 10px; background: transparent; cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-addchip svg { width: 12px; height: 12px; }
.omv2-drawer[data-cockpit] .ck-addchip:hover { border-color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-contacts-expand {
  display: inline-flex; align-items: center; gap: 4px;
  border: 0; background: transparent; cursor: pointer;
  font: 600 11px var(--font-body); color: var(--color-text-secondary);
  padding: 4px 4px;
}
.omv2-drawer[data-cockpit] .ck-contacts-expand svg { width: 14px; height: 14px; }
.omv2-drawer[data-cockpit] .ck-contacts-expand:hover { color: var(--color-secondary); }
/* Expanded "View all contacts" — a clean full-width block rendered as a sibling
   directly below the band (NOT a band flex child, which jammed it beside the
   add-chips). Matches the band surface; its own bottom border closes the band. */
.omv2-drawer[data-cockpit] .omv2-contacts-full {
  margin: 0; padding: 4px 24px 16px;
  background: var(--color-surface-1);
  border-bottom: 1px solid var(--color-glass-border);
}

/* ── Identity two-column ────────────────────────────────────────────────── */
/* Two-column identity (2026-06-19, per user): LEFT = owner info + contacts (phone/
   email inline under the address, then additional-contacts + related-parties inline,
   then the "+" add button); RIGHT = the action rail (next action / attempts / Log
   call). A hairline divider separates them. */
.omv2-drawer[data-cockpit] .ck-identity-2col {
  display: flex; align-items: flex-start; gap: 24px;
}
.omv2-drawer[data-cockpit] .ck-id-main { flex: 1 1 auto; min-width: 0; }
/* Right action column — next action / attempts / Log-call. */
.omv2-drawer[data-cockpit] .ck-id-actions {
  flex: 0 0 34%; max-width: 34%; min-width: 220px;
  align-self: stretch;
  display: flex; flex-direction: column;
  padding-left: 24px;
  border-left: 1px solid var(--color-glass-border);
}
/* Contacts block — sits in the left column under the address. */
.omv2-drawer[data-cockpit] .ck-cc { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
/* Primary phone + email — one inline row under the address (wrap if tight). */
.omv2-drawer[data-cockpit] .ck-cc-primary {
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px 20px;
}
.omv2-drawer[data-cockpit] .ck-cc-primary .ck-cc-line { flex: 0 1 auto; }
/* Links row: additional contacts + related parties INLINE, then the single "+"
   add button right after them. */
.omv2-drawer[data-cockpit] .ck-cc-linksrow {
  display: flex; align-items: center; justify-content: flex-start; gap: 8px 16px; flex-wrap: wrap;
}
.omv2-drawer[data-cockpit] .ck-cc-links {
  display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px 16px; min-width: 0;
}
.omv2-drawer[data-cockpit] .ck-cc-addone {
  flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border: 1px solid var(--color-glass-border);
  border-radius: 6px; background: transparent; color: var(--color-secondary); cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-cc-addone svg { width: 16px; height: 16px; }
.omv2-drawer[data-cockpit] .ck-cc-addone:hover {
  border-color: var(--color-secondary); background: rgba(var(--color-secondary-rgb), .08);
}
/* Primary phone / email lines — leading faint icon, ellipsised value, copy mini. */
.omv2-drawer[data-cockpit] .ck-cc-line {
  display: flex; align-items: center; gap: 8px;
  font-size: 12px; color: var(--color-text-primary); min-width: 0;
}
.omv2-drawer[data-cockpit] .ck-cc-line > svg {
  width: 14px; height: 14px; color: var(--color-text-tertiary); flex-shrink: 0;
}
.omv2-drawer[data-cockpit] .ck-cc-val {
  flex: 1 1 auto; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.omv2-drawer[data-cockpit] .ck-cc-phone .ck-cc-val { font-family: 'JetBrains Mono', monospace; }
.omv2-drawer[data-cockpit] .ck-cc-empty { color: var(--color-text-tertiary); font-style: italic; }
/* "N additional contacts" + related-parties — flat text-link triggers that open a
   floating popover anchored to the trigger (NOT an in-page expansion). The popover
   opens below the trigger, LEFT-aligned to it (extends rightward) so — now that the
   triggers live in the left column — it stays inside the drawer instead of running
   off the left edge, and floats over the content rather than pushing the layout. */
.omv2-drawer[data-cockpit] .ck-cc-pop-wrap { position: relative; }
.omv2-drawer[data-cockpit] .ck-cc-link {
  display: inline-flex; align-items: center; gap: 6px;
  border: 0; background: transparent; cursor: pointer; padding: 2px 0;
  font: 600 12px var(--font-body); color: var(--color-text-secondary); text-align: left;
}
.omv2-drawer[data-cockpit] .ck-cc-link > svg { width: 14px; height: 14px; color: var(--color-text-tertiary); flex-shrink: 0; }
.omv2-drawer[data-cockpit] .ck-cc-link:hover,
.omv2-drawer[data-cockpit] .ck-cc-link:hover > svg { color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-cc-more svg:last-child { width: 12px; height: 12px; margin-left: auto; }
.omv2-drawer[data-cockpit] .ck-cc-pop {
  position: absolute; top: calc(100% + 6px); left: 0; right: auto; z-index: 1300;
  width: 320px; max-width: min(360px, 78vw);
  padding: 10px 12px;
  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-height: 320px; overflow-y: auto;
}
.omv2-drawer[data-cockpit] .ck-cc-pop[hidden] { display: none; }
/* The additional-contacts popover reuses .omv2-contacts-full markup — strip its
   band-width padding/background so it sits cleanly inside the popover. */
.omv2-drawer[data-cockpit] .ck-cc-pop .omv2-contacts-full {
  margin: 0; padding: 0; background: transparent; border-bottom: 0;
}
/* Related-parties popover reuses .omv2-relparties-popover (base style is an
   in-flow margin-top block) — re-anchor it as a floating column popover. */
.omv2-drawer[data-cockpit] .ck-cc-rel-wrap .omv2-relparties-popover {
  position: absolute; top: calc(100% + 6px); left: 0; right: auto; z-index: 1300;
  margin-top: 0; width: 320px; max-width: min(360px, 78vw);
  border-color: var(--color-glass-border-strong);
  box-shadow: var(--shadow-overlay);
}
/* Add-form slot — renders the in-column add form (type select + value) when the
   single "+" button is clicked. (The old per-type chip row was merged into one button.) */
.omv2-drawer[data-cockpit] .ck-cc-add {
  margin-top: 2px; display: flex; flex-direction: column; gap: 8px;
}
.omv2-drawer[data-cockpit] .ck-cc-add:empty { margin-top: 0; }
.omv2-drawer[data-cockpit] .ck-cc-add .omv2-contact-add-form {
  display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: 0;
}
.omv2-drawer[data-cockpit] .ck-cc-add .omv2-contact-add-input { flex: 1 1 140px; min-width: 0; }
/* Narrow drawers (mobile dim <768, or a resized 880 drawer): the right action column
   drops below the owner info as a full-width block; popovers span full width. */
@media (max-width: 880px) {
  .omv2-drawer[data-cockpit] .ck-identity-2col { flex-direction: column; gap: 12px; }
  .omv2-drawer[data-cockpit] .ck-id-actions {
    flex-basis: auto; max-width: none; width: 100%; min-width: 0;
    padding-left: 0; padding-top: 12px;
    border-left: 0; border-top: 1px solid var(--color-glass-border);
  }
  .omv2-drawer[data-cockpit] .ck-cc-pop,
  .omv2-drawer[data-cockpit] .ck-cc-rel-wrap .omv2-relparties-popover {
    width: 100%; max-width: none;
  }
}

/* ── Wells table (Phase 2.1 step 4) ───────────────────────────────────────── */
/* v4 mockup: header Open/Closed total split (C2) + disposition pills recolored
   to the mockup's families while keeping the accurate labels. */
.omv2-drawer[data-cockpit] .ck-wells-total {
  display: inline-flex; align-items: center; gap: 12px;
  font-size: 12px; color: var(--color-text-secondary); margin-right: 8px;
}
.omv2-drawer[data-cockpit] .ck-wt-open b,
.omv2-drawer[data-cockpit] .ck-wt-closed b { font-size: 14px; font-weight: 600; }
.omv2-drawer[data-cockpit] .ck-wt-closed {
  padding-left: 12px; border-left: 1px solid var(--color-glass-border-strong);
}
.omv2-drawer[data-cockpit] .ck-wt-rec {
  font-family: 'JetBrains Mono', monospace; font-size: 9px;
  text-transform: uppercase; letter-spacing: .06em; color: var(--color-text-tertiary);
}
.omv2-drawer[data-cockpit] .ck-wells-table .omv2-disp-pill {
  font: 600 9px/1 'JetBrains Mono', monospace; letter-spacing: .04em;
  text-transform: uppercase; padding: 2px 8px; border-radius: 5px;
}
.omv2-drawer[data-cockpit] .ck-wells-table .omv2-disp-prospect { background: rgba(var(--color-secondary-rgb), .12); color: var(--color-secondary-text); }
.omv2-drawer[data-cockpit] .ck-wells-table .omv2-disp-negotiating,
.omv2-drawer[data-cockpit] .ck-wells-table .omv2-disp-under-psa { background: rgba(var(--color-accent-rgb), .14); color: var(--color-text-secondary); }
.omv2-drawer[data-cockpit] .ck-wells-table .omv2-disp-closed { background: rgba(var(--color-success-rgb), .13); color: var(--color-success-text); }
.omv2-drawer[data-cockpit] .ck-wells-table .omv2-disp-declined { background: var(--color-surface-2); color: var(--color-text-secondary); }
/* v4 mockup action labels: 'Sold' (closed) reads muted; static when no deal to open. */
.omv2-drawer[data-cockpit] .ck-wmove-sold { color: var(--color-text-tertiary); }
.omv2-drawer[data-cockpit] .ck-wmove-static { cursor: default; }
.omv2-drawer[data-cockpit] .ck-body {
  display: flex;
  flex-direction: column;
  /* No top padding so the full-bleed Properties header sits flush against the
     focus zone above. Side padding stays for the inset Activity/Notes (.ck-body2);
     the properties pane negative-margins back out to full width. */
  padding: 0 24px 24px;
  gap: 0;
}
/* Restore breathing room BELOW the full-bleed properties table, before Activity/Notes. */
.omv2-drawer[data-cockpit] .ck-body > .ck-wells-pane { margin-bottom: 20px; }
.omv2-drawer[data-cockpit] .ck-body > .omv2-pane {
  width: 100%;
}
/* Full-width: escape the .ck-body 24px side padding (margin) AND grow the width by
   the same 48px so the pane truly spans the modal edge-to-edge. The selector matches
   `.ck-body > .omv2-pane { width:100% }`'s specificity and comes later, so the
   calc() width wins (a plain .ck-wells-pane rule lost to it — the pane stayed pinned
   to the flex content box and the negative margin only shifted it left). */
.omv2-drawer[data-cockpit] .ck-body > .ck-wells-pane {
  min-width: 0;
  width: calc(100% + 48px);
  margin: 0 -24px;
  padding: 0;
  overflow: visible;
}
/* Locked header + scrolling rows (like the other Scout tables): the wrap caps
   its height and scrolls; the thead sticks to the top. The multi-select bar
   below the wrap is the locked footer. */
/* Scroll threshold: locked to ~5 properties. Sticky thead (~78px: title row + column
   headers) + 5 rows (~70px each) ≈ 430px. The 6th property onward scrolls internally
   while the thead stays pinned on top. */
.omv2-drawer[data-cockpit] .ck-wells-wrap {
  overflow-x: auto;
  overflow-y: auto;
  max-height: 430px;
}
.omv2-drawer[data-cockpit] .ck-wells-table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
  /* Override the global `table { table-layout: fixed }` (components.css). Fixed layout
     derives column widths from the FIRST row — here a single colspan="7" title bar —
     so it split all 7 columns equally (125px each) and ignored every per-column width
     hint (checkbox 98px gap, rate suffix clipped). Auto layout honors the colhead's
     per-column widths + content (select shrinks, rate cell fits its suffix). */
  table-layout: auto;
}
/* Locked (sticky) header. The global components.css `thead th{background:var(--s1)}`
   is too grey — use the wells pane's near-white so the header is opaque enough to
   hide rows scrolling beneath it WITHOUT reading as a grey band. */
.omv2-drawer[data-cockpit] .ck-wells-table thead { position: sticky; top: 0; z-index: 3; }
.omv2-drawer[data-cockpit] .ck-wells-table th {
  padding: 8px 10px 6px;
  font: 600 10px/1.2 'JetBrains Mono', monospace;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--color-text-tertiary);
  /* Reclaim the (departed) contacts-band tone: the wells section title +
     this table header now carry --color-surface-1 so the properties area reads
     as the modal's secondary band. */
  background: var(--color-surface-1);
  border-bottom: 1px solid var(--color-glass-border);
  text-align: left;
  white-space: nowrap;
}
.omv2-drawer[data-cockpit] .ck-wells-table th.num,
.omv2-drawer[data-cockpit] .ck-wells-table td.num {
  text-align: right;
}
/* Clickable sort headers — click to sort, active column shows a direction
   chevron + ink-dark label. */
.omv2-drawer[data-cockpit] .ck-wells-table th.ck-sort-th { user-select: none; }
.omv2-drawer[data-cockpit] .ck-wells-table th.ck-sort-th:hover { color: var(--color-text-secondary); }
.omv2-drawer[data-cockpit] .ck-wells-table th.ck-sort-th.is-sorted { color: var(--color-text-primary); }
/* The native sort button fills the header cell so the whole cell stays clickable,
   while keeping aria-sort on the th (columnheader) and native keyboard activation. */
.omv2-drawer[data-cockpit] .ck-wells-table th.ck-sort-th .ck-sort-btn {
  display: inline-flex; align-items: center; width: 100%;
  background: none; border: none; padding: 0; margin: 0;
  font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit;
  cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-wells-table th.ck-sort-th.num .ck-sort-btn { justify-content: flex-end; }
.omv2-drawer[data-cockpit] .ck-wells-table th.ck-sort-th .ck-sort-btn:focus-visible {
  outline: 2px solid var(--color-secondary); outline-offset: 1px; border-radius: 2px;
}
.omv2-drawer[data-cockpit] .ck-wells-table th .ck-sort-ind {
  display: inline-flex; vertical-align: middle; margin-left: 4px; color: var(--color-secondary);
}
.omv2-drawer[data-cockpit] .ck-wells-table th .ck-sort-ind svg { width: 11px; height: 11px; }
.omv2-drawer[data-cockpit] .ck-wells-table td {
  padding: 10px;
  border-bottom: 1px solid var(--color-glass-border);
  vertical-align: middle;
}
.omv2-drawer[data-cockpit] .ck-wells-table tr:last-child td {
  border-bottom: 0;
}
.omv2-drawer[data-cockpit] .ck-wells-table .ck-well-row {
  padding: 0;
  border-bottom: 0;
  position: static;
}
.omv2-drawer[data-cockpit] .ck-wells-table .ck-well-row:hover {
  background: var(--color-surface-2);
  margin-inline: 0;
  padding-inline: 0;
  border-radius: 0;
}
.omv2-drawer[data-cockpit] .ck-well-check:disabled {
  cursor: not-allowed;
  opacity: .35;
}
/* No selected-row tint — the mockup indicates selection via the checkbox only
   (a colored row wash reads as a banned accent highlight per .impeccable.md). */
/* Shrink the checkbox + actions columns to their content (width:1% in an auto-layout
   table = "take min-content, don't absorb the table's extra width"). Without this the
   table spread the slack evenly and left a ~98px gap between the checkbox and the well
   name; now that slack goes to the flexible well-name column instead. */
.omv2-drawer[data-cockpit] .ck-well-select {
  width: 1%; white-space: nowrap;
}
.omv2-drawer[data-cockpit] .ck-well-check {
  width: 14px;
  height: 14px;
  accent-color: var(--color-secondary);
}
.omv2-drawer[data-cockpit] .ck-well-name-cell {
  min-width: 176px; width: 30%;
}
.omv2-drawer[data-cockpit] .ck-wname { display: inline-flex; align-items: center; }
.omv2-drawer[data-cockpit] .ck-well-name {
  display: inline; vertical-align: middle;
  font-weight: 600; font-size: 13px;       /* mockup .wname */
  white-space: nowrap;                      /* the well name reads on one line */
}
/* Subtle kebab (user 2026-06-20): drop the teal chip chrome from .omv2-prop-info-btn so
   the per-well (i) kebab is a quiet muted glyph that doesn't overshadow the well name
   (the legacy modal's info-popover button keeps the chip). */
.omv2-drawer[data-cockpit] .ck-well-info {
  display: inline-flex; vertical-align: middle; margin-left: 6px;
  width: 18px; height: 18px;
  background: transparent; border: 0; border-radius: 50%;
  color: var(--color-text-tertiary);
}
.omv2-drawer[data-cockpit] .ck-well-info svg { width: 13px; height: 13px; }
.omv2-drawer[data-cockpit] .ck-well-info:hover { background: var(--color-surface-2); color: var(--color-secondary); }
/* Mockup row is just name + (i); the interest amount lives in the (i) detail. */
.omv2-drawer[data-cockpit] .ck-well-name-cell .omv2-prop-interest { display: none; }
.omv2-drawer[data-cockpit] .ck-well-info.is-open {
  color: var(--color-secondary);
  background: var(--color-surface-2);
  border-color: transparent;
}
/* Inline well-detail row (mockup .wdetail). Hidden until the (i) toggle. */
.omv2-drawer[data-cockpit] .ck-wdetail.hidden {
  display: none;
}
.omv2-drawer[data-cockpit] .ck-wdetail td {
  background: rgba(var(--color-secondary-rgb), .04);
  padding: 12px 16px;
}
.omv2-drawer[data-cockpit] .ck-wdetail .ck-wd-spacer {
  background: transparent;
}
/* (i) property-detail DROPDOWN — the floating panel cloned from the hidden .ck-wdetail
   row, position:fixed off the (i) button so it escapes the .ck-wells-wrap overflow clip
   and floats over the table instead of pushing it (user 2026-06-20). */
.omv2-drawer[data-cockpit] .ck-wdetail-pop {
  position: fixed; z-index: 1400;
  width: 400px; max-width: min(440px, 88vw);
  max-height: 60vh; overflow-y: auto;
  padding: 14px 16px;
  background: var(--omv2-surface-near-white);
  border: 1px solid var(--color-glass-border-strong);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-overlay);
}
.omv2-drawer[data-cockpit] .ck-wdetail-pop .ck-wdgrid { grid-template-columns: 1fr 1fr; gap: 10px 18px; }
/* Relocated row actions (Mark declined / Remove) live in the (i) detail. */
.omv2-drawer[data-cockpit] .ck-wd-actions {
  display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap;
}
.omv2-drawer[data-cockpit] .ck-wd-actions .omv2-prop-action-btn { display: inline-flex; align-items: center; gap: 4px; }
.omv2-drawer[data-cockpit] .ck-wd-actions .ck-wd-remove svg { width: 13px; height: 13px; }
.omv2-drawer[data-cockpit] .ck-wdgrid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px 24px;
}
.omv2-drawer[data-cockpit] .ck-wdgrid > div {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.omv2-drawer[data-cockpit] .ck-wdl {
  font: 600 9px/1.2 'JetBrains Mono', monospace;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--color-text-tertiary);
}
.omv2-drawer[data-cockpit] .ck-wdv {
  font-size: 12px;
  color: var(--color-text-primary);
}
.omv2-drawer[data-cockpit] .ck-wdv.money {
  font-variant-numeric: tabular-nums;
  color: var(--color-money);
}
/* "Move to pipeline" action — centered in the Properties header, shown only when
   wells are selected (the below-table multi-select bar was removed). */
.omv2-drawer[data-cockpit] .ck-wsel-mid { display: inline-flex; align-items: center; }
.omv2-drawer[data-cockpit] .ck-wsel-mid[hidden] { display: none; }
.omv2-drawer[data-cockpit] .ck-wsel-btn {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--color-secondary); color: var(--omv2-surface-near-white);
  border: 0; border-radius: 999px;
  padding: 6px 14px;  /* even-spacing (was 5px) */
  /* Override the generic table-th mono/uppercase so the pill reads as a button. */
  font: 600 11px var(--font-body); text-transform: none; letter-spacing: 0;
  cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-wsel-btn:hover { filter: brightness(1.06); }
.omv2-drawer[data-cockpit] .ck-wsel-n { font-variant-numeric: tabular-nums; }
/* Blended Activity + Notes — ONE section directly under the wells table:
   Activity fills the bulk, the note ENTRY is a narrow right rail (~1/5) divided
   off by a single hairline. */
.omv2-drawer[data-cockpit] .ck-body2 {
  display: grid;
  grid-template-columns: 1fr 248px;
  gap: 0;
  align-items: stretch;
  border-top: 1px solid var(--color-glass-border-strong);
  margin-top: 4px;
}
.omv2-drawer[data-cockpit] .ck-body2 > .omv2-pane { padding: 16px 20px; }
/* Headers stand out — 14px bold ink (vs the flat 13/600 elsewhere). */
.omv2-drawer[data-cockpit] .ck-body2 .omv2-pane-label {
  font-size: 14px; font-weight: 700; color: var(--color-text-primary);
  margin-bottom: 14px;
}
.omv2-drawer[data-cockpit] .ck-body2 .omv2-pane-label .ct { font-weight: 400; }
/* Note-entry right rail: subtle tint + left divider so it reads as a distinct
   compose spot within the one section. */
.omv2-drawer[data-cockpit] .ck-notes-entry {
  background: var(--color-surface-1);
  border-left: 1px solid var(--color-glass-border);
}
/* Pin toggle in the note-entry header — brass pin (display accent). */
.omv2-drawer[data-cockpit] .ck-pinchip {
  display: inline-flex; align-items: center; gap: 4px;
  font: 600 11px var(--font-body); color: var(--color-text-secondary);
  border: 1px solid var(--color-glass-border); border-radius: 6px;
  padding: 2px 8px; background: transparent; cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-pinchip svg { width: 12px; height: 12px; }
.omv2-drawer[data-cockpit] .ck-pinchip:hover { border-color: var(--color-accent); }
@media (max-width: 720px) {
  .omv2-drawer[data-cockpit] .ck-body2 { grid-template-columns: 1fr; }
  .omv2-drawer[data-cockpit] .ck-notes-entry { border-left: 0; border-top: 1px solid var(--color-glass-border); }
}
/* Activity event icons (mockup .evt .eic) — colored 24px squares; cockpit only.
   The span is rendered for every event but only shown + colored here. */
.omv2-event-icon { display: none; }
.omv2-drawer[data-cockpit] .omv2-event { display: flex; gap: 8px; }
.omv2-drawer[data-cockpit] .omv2-event-icon {
  display: flex; align-items: center; justify-content: center; flex-shrink: 0;
  width: 24px; height: 24px; border-radius: 6px;
}
.omv2-drawer[data-cockpit] .omv2-event-icon svg { width: 13px; height: 13px; }
.omv2-drawer[data-cockpit] .omv2-event[data-kind="call"] .omv2-event-icon { background: rgba(var(--color-money-rgb), .12); color: var(--color-money); }
.omv2-drawer[data-cockpit] .omv2-event[data-kind="note"] .omv2-event-icon { background: rgba(var(--color-accent-rgb), .14); color: var(--color-accent); }
.omv2-drawer[data-cockpit] .omv2-event[data-kind="outreach"] .omv2-event-icon { background: rgba(var(--color-secondary-rgb), .12); color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .omv2-event-body { flex: 1; min-width: 0; }
/* Pin/unpin a note from the activity log — hover-revealed; brass + always shown
   once pinned. */
.omv2-drawer[data-cockpit] .omv2-event-head { display: flex; align-items: center; gap: 8px; }
.omv2-drawer[data-cockpit] .omv2-event-head .omv2-event-ts { margin-left: auto; }
.omv2-drawer[data-cockpit] .omv2-event-pin {
  flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border: 0; background: transparent; border-radius: 4px;
  color: var(--color-text-tertiary); cursor: pointer; opacity: 0; transition: opacity 120ms, color 120ms;
}
.omv2-drawer[data-cockpit] .omv2-event-pin svg { width: 12px; height: 12px; }
.omv2-drawer[data-cockpit] .omv2-event:hover .omv2-event-pin { opacity: 1; }
/* a11y (P1-5): reveal the pin on keyboard focus too — it was opacity:0 except on
   hover/pinned, so a keyboard user could Tab to an invisible control. */
.omv2-drawer[data-cockpit] .omv2-event:focus-within .omv2-event-pin,
.omv2-drawer[data-cockpit] .omv2-event-pin:focus-visible { opacity: 1; }
.omv2-drawer[data-cockpit] .omv2-event-pin:focus-visible {
  outline: 2px solid var(--color-secondary); outline-offset: 1px;
}
.omv2-drawer[data-cockpit] .omv2-event-pin:hover { color: var(--color-accent); background: rgba(var(--color-accent-rgb), .1); }
.omv2-drawer[data-cockpit] .omv2-event-pin.is-pinned { opacity: 1; color: var(--color-accent); }
/* Call-event top line (mockup .evt .top): the outcome is a BARE green mono-caps
   word — no "Call" kind label, no pill chrome, no per-event lead pill (Hot lives
   in the identity band). Scoped to call rows so Note rows keep their kind label. */
.omv2-drawer[data-cockpit] .omv2-event[data-kind="call"] .omv2-event-kind { display: none; }
.omv2-drawer[data-cockpit] .omv2-event[data-kind="call"] .omv2-event-outcome {
  background: transparent; border: 0; padding: 0; border-radius: 0;
  font: 600 9px 'JetBrains Mono', monospace; letter-spacing: .04em;
  /* Neutral default — semantic color is applied per-outcome below so an
     unreached call never reads as a success (bug: no-answer was green). */
  text-transform: uppercase; color: var(--color-text-secondary);
}
/* Reached = green; scheduled callback = amber; not-reached (no-answer / wrong
   number) = muted grey. The JS assigns .answered / .callback / .no-answer. */
.omv2-drawer[data-cockpit] .omv2-event[data-kind="call"] .omv2-event-outcome.answered { color: var(--color-success); }
.omv2-drawer[data-cockpit] .omv2-event[data-kind="call"] .omv2-event-outcome.callback { color: var(--color-warning); }
.omv2-drawer[data-cockpit] .omv2-event[data-kind="call"] .omv2-event-outcome.no-answer { color: var(--color-no-answer); }
.omv2-drawer[data-cockpit] .omv2-event[data-kind="call"] .omv2-event-outcome.lead-hot,
.omv2-drawer[data-cockpit] .omv2-event[data-kind="call"] .omv2-event-outcome.lead-cold { display: none; }
/* In-content section headings (Wells / Activity / Notes) are flat inline labels
   in the mockup (.wells-h / .pane-h) — NOT the legacy sticky full-bleed band the
   .omv2-pane-label base supplies. Flatten them inside the cockpit only; the
   money/contacts/focus bands above are separate classes and keep their chrome. */
.omv2-drawer[data-cockpit] .omv2-pane-label {
  position: static; min-height: 0; margin: 0 0 12px; padding: 0;
  background: transparent; border-bottom: 0;
}
/* Properties table — the section title is a row INSIDE the locked thead (above the
   column headers), so the title + column headers lock + scroll together as one
   full-width header band. */
.omv2-drawer[data-cockpit] .ck-wells-titlerow th {
  background: transparent;   /* no tint behind Properties / Move-to-pipeline / Owner total — reads on the drawer surface */
  padding: 0;
  border-bottom: 1px solid var(--color-glass-border);
}
/* Column-header row matches the other Scout tables' header tone (.nq-table thead tr =
   #EEF2F7, theme-light) — a cool grey band distinct from the white title bar above it
   and the white rows below. tr.class specificity wins over the .ck-wells-table th fill. */
.omv2-drawer[data-cockpit] .ck-wells-table tr.ck-wells-colhead th {
  background: #EEF2F7;
}
.omv2-drawer[data-cockpit] .ck-wells-titlebar {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 24px;   /* 24px = modal edge rhythm; title + Owner total align with the rest */
}
.omv2-drawer[data-cockpit] .ck-wells-h-title {
  font: 600 11px/1 'JetBrains Mono', monospace; letter-spacing: .06em; text-transform: uppercase;
  color: var(--color-text-secondary);
}
.omv2-drawer[data-cockpit] .ck-wells-h-title .ct { color: var(--color-text-tertiary); margin-left: 4px; }
/* Empty state (no rows → no table) — title row reads on the drawer surface (no tint). */
.omv2-drawer[data-cockpit] .ck-wells-emptyhead {
  background: transparent;
  border-top: 1px solid var(--color-glass-border);
  border-bottom: 1px solid var(--color-glass-border);
}
/* First/last cells get the 24px modal edge inset so leading/trailing content isn't
   jammed against the now full-bleed table edge (the band itself spans edge-to-edge). */
.omv2-drawer[data-cockpit] .ck-wells-table th:first-child,
.omv2-drawer[data-cockpit] .ck-wells-table td:first-child { padding-left: 24px; }
.omv2-drawer[data-cockpit] .ck-wells-table th:last-child,
.omv2-drawer[data-cockpit] .ck-wells-table td:last-child { padding-right: 24px; }
/* Section-heading count (mockup .pane-h .c): faint JetBrains Mono, bare number. */
.omv2-drawer[data-cockpit] .omv2-pane-label .ct {
  font-family: 'JetBrains Mono', monospace; font-size: 11px;
}
/* Closed-well rate marker (mockup `<td>locked</td>`, opacity .6, muted mono). */
.omv2-drawer[data-cockpit] .omv2-rate-locked {
  font: 600 12px 'JetBrains Mono', monospace;
  color: var(--color-text-tertiary); opacity: .6;
}
/* Left activity pane divider (mockup .pane.left border-right). The 20px pane
   padding above supplies the gutter — no extra padding-right needed. The legacy
   .omv2-pane-activity carries a grey background + a left border that the mockup's
   flat-on-card pane doesn't have, so neutralize both in the cockpit. */
.omv2-drawer[data-cockpit] .ck-body2 > .omv2-pane-activity {
  background: transparent; border-left: 0;
  /* divider now lives on the note-entry rail's border-left (single hairline) */
  border-right: 0;
}
/* Notes pane pinned section: neutralize the legacy hero 3-col grid / top border
   so the single pin column sits cleanly under the Notes header. */
.omv2-drawer[data-cockpit] .ck-notes-pinned {
  display: block;
  margin-top: 0;
  padding: 0;
  border-top: 0;
}
.omv2-drawer[data-cockpit] .ck-notes-pinned .omv2-pinned-col {
  padding: 0;
}
/* Activity filter pills — mockup .afp: 600 weight, active = dark ink (charcoal)
   with near-white label. Scoped to the cockpit so the legacy hero modal keeps
   its pale-teal active state. */
.omv2-drawer[data-cockpit] .omv2-act-pill { font-weight: 600; }
.omv2-drawer[data-cockpit] .omv2-act-pill.active {
  background: var(--color-text-primary);
  border-color: var(--color-text-primary);
  color: var(--color-surface-1);
}
/* Notes header (mockup .pane-h): label + spacer push the "+ Pin a note" chip right. */
.omv2-drawer[data-cockpit] .ck-notes-h { display: flex; align-items: center; gap: 8px; }
.omv2-drawer[data-cockpit] .ck-notes-h .ck-pane-spacer { flex: 1; }
/* Compose box (mockup .addnote): one bordered card; textarea borderless inside,
   Save in a right-aligned foot. */
.omv2-drawer[data-cockpit] .ck-addnote {
  margin-top: 12px;
  border: 1px solid var(--color-glass-border); border-radius: 8px;
  padding: 8px 10px; background: var(--color-surface-1);
  transition: border-color 120ms;
}
/* a11y (P1-5): the textarea is borderless with outline:none, so the bordered
   card carries the focus affordance — teal border when the note has focus. */
.omv2-drawer[data-cockpit] .ck-addnote:focus-within { border-color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-addnote .ck-note-input {
  width: 100%; border: 0; resize: none; outline: none;
  min-height: 34px; padding: 0; background: transparent;
  font: 13px var(--font-body); color: var(--color-text-primary);
}
.omv2-drawer[data-cockpit] .ck-addnote-foot {
  display: flex; justify-content: flex-end; margin-top: 4px;
}
.omv2-drawer[data-cockpit] .ck-well-qty {
  justify-content: flex-end;
}
.omv2-drawer[data-cockpit] .ck-rate-cell {
  /* room for the rate input (88px) + "/NRA" suffix (~32px) + L/R padding, so the
     suffix no longer overflows/clips the column right edge. */
  min-width: 160px; white-space: nowrap;
}
.omv2-drawer[data-cockpit] .ck-rate-cell .omv2-eq-cap-stack {
  display: flex;
  flex-direction: column;
  margin-top: 4px;
  align-items: flex-end;
}
.omv2-drawer[data-cockpit] .ck-rate-cell .omv2-eq-cap {
  max-width: none;
  overflow: visible;
  text-overflow: clip;
}
.omv2-drawer[data-cockpit] .ck-rate-wrap {
  justify-content: flex-end;
  max-width: none;
}
.omv2-drawer[data-cockpit] .ck-rate-wrap .omv2-rate-input {
  width: 88px;  /* fits the 2-decimal rate "$8,500.00" (was 64px, clipped the cents) */
}
/* Keep the $/NRA box from being squeezed (it was clipping the /NRA suffix): the
   box never shrinks below its content, and the cell reserves room on the right. */
.omv2-drawer[data-cockpit] .ck-rate-cell { padding-right: 16px; }
.omv2-drawer[data-cockpit] .ck-rate-wrap { flex-shrink: 0; overflow: visible; }
.omv2-drawer[data-cockpit] .ck-well-value {
  font-weight: 700;
  color: var(--color-money);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.omv2-drawer[data-cockpit] .ck-recorded-value {
  margin-top: 4px;
  font: 700 9px/1.1 'JetBrains Mono', monospace;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--color-text-tertiary);
}
.omv2-drawer[data-cockpit] .ck-well-actions {
  min-width: 150px;
  text-align: right;
}
.omv2-drawer[data-cockpit] .ck-well-actions .omv2-prop-action-btn {
  margin-left: 6px;
  margin-top: 0;
}

/* ════════════════════════════════════════════════════════════════════════════
   Phase 2.2 — Call mode (the dial cockpit). The drawer BODY reuses the research
   identity/money/contacts/wells partials; the disposition bar lives in the
   inline dock footer (.qc-dock-inline) appended by mountInline. All chip /
   save / phone / callback classes are reused from the proven dock so the save
   path is unchanged — only the v4 layout + the C6 FLAG group are new.
   ════════════════════════════════════════════════════════════════════════════ */

/* Call body shares the research column flow. */
.omv2-drawer[data-cockpit] .ck-call { display: flex; flex-direction: column; }

/* C7 call guide — superseded by the 10d .ck-call-script block below (the script,
   live note, and quick-add now follow the v4 mockup). Old .ck-script-head/-eyebrow/
   -mode/-body rules removed with the renamed renderer (no remaining markup). */

/* ── Call-mode head + dial (v4 mockup .ck-head / .ck-dial, lines 512-535) ───── */
/* 10b: replaces the research identity band in call mode (renderCockpitCallHeadHTML)
   — eyebrow + owner name + the relocated number selector / brass Call / on-call
   timer / Copy / attempt chip. The selector reuses the dock phone-select markup
   (.omv2-dock-phone-select + the CSS-drawn .omv2-dock-phone-caret) so the popover
   and caret-flip work unchanged; .numselect restyles it to the brass-tinted dial. */
.omv2-drawer[data-cockpit] .ck-call-head {
  padding: 18px 24px 14px;
  background: var(--color-surface-1);
  border-bottom: 1px solid var(--color-glass-border);
}
.omv2-drawer[data-cockpit] .ck-call-head .ck-eyebrow { margin-bottom: 2px; }
/* Call-mode name is tighter than the research hero (24px vs 30px) per mockup. */
.omv2-drawer[data-cockpit] .ck-call-head .ck-name { font-size: 24px; }
.omv2-drawer[data-cockpit] .ck-dial {
  margin-top: 12px;
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.omv2-drawer[data-cockpit] .ck-dial .numwrap { position: relative; }
/* Number selector — .numselect overrides the base .omv2-dock-phone-select. */
.omv2-drawer[data-cockpit] .numselect {
  justify-content: flex-start;
  min-width: 0; max-width: none;
  border: 1px solid rgba(var(--color-accent-rgb), .32);
  background: var(--color-surface-1);
  border-radius: var(--radius-md, 8px);
  padding: 8px 12px;
}
.omv2-drawer[data-cockpit] .numselect:hover { border-color: var(--color-accent); background: var(--color-surface-1); }
.omv2-drawer[data-cockpit] .numselect .numselect-ph { display: inline-flex; color: var(--color-accent); }
.omv2-drawer[data-cockpit] .numselect .numselect-ph svg { width: 15px; height: 15px; }
.omv2-drawer[data-cockpit] .numselect .ck-number {
  flex: 0 1 auto;
  font-family: 'JetBrains Mono', monospace; font-size: 17px; font-weight: 600;
  color: var(--color-text-primary);
}
.omv2-drawer[data-cockpit] .numselect .numtag {
  font: 600 10px 'JetBrains Mono', monospace; text-transform: uppercase; letter-spacing: .04em;
  color: var(--color-text-tertiary);
}
.omv2-drawer[data-cockpit] .numselect .numtag:empty { display: none; }
/* No-saved-phones fallback: custom input styled to match the dial selector. */
.omv2-drawer[data-cockpit] .ck-dial .omv2-dock-phone-custom {
  width: auto; min-width: 180px;
  border: 1px solid rgba(var(--color-accent-rgb), .32);
  background: var(--color-surface-1);
  border-radius: var(--radius-md, 8px);
  padding: 8px 12px;
  font: 600 15px 'JetBrains Mono', monospace; color: var(--color-text-primary);
}
/* Brass Call (mockup .btn-brass.ck-callbtn) */
.omv2-drawer[data-cockpit] .ck-callbtn {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--color-accent); color: oklch(0.26 0.04 80);
  border: 0; border-radius: var(--radius-md, 8px);
  padding: 10px 18px;
  font: 600 13px var(--font-body); cursor: pointer; white-space: nowrap;
}
.omv2-drawer[data-cockpit] .ck-callbtn svg { width: 18px; height: 18px; stroke-width: 2; }
/* On-call timer — hidden until .ck-call-active (startDockCallTimer toggles it on
   the dial); the [data-dock-call-timer] span holds just the running duration. */
.omv2-drawer[data-cockpit] .ck-dial .oncall {
  display: none; align-items: baseline; gap: 6px;
  color: var(--color-text-secondary); font: 600 12px var(--font-body);
}
.omv2-drawer[data-cockpit] .ck-dial .oncall .timer {
  font-family: 'JetBrains Mono', monospace; color: var(--color-text-primary);
}
.omv2-drawer[data-cockpit] .ck-dial .oncall .approx {
  font: 600 9px 'JetBrains Mono', monospace; text-transform: uppercase; letter-spacing: .04em;
  color: var(--color-text-tertiary);
}
.omv2-drawer[data-cockpit] .ck-call-dial.ck-call-active .ck-callbtn { display: none; }
.omv2-drawer[data-cockpit] .ck-call-dial.ck-call-active .oncall { display: inline-flex; }
/* Copy the active number (mockup .btn-out) */
.omv2-drawer[data-cockpit] .ck-copy-btn {
  display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid var(--color-glass-border); background: var(--color-surface-1);
  color: var(--color-text-secondary); border-radius: var(--radius-md, 8px);
  padding: 8px 14px; font: 600 12px var(--font-body); cursor: pointer; white-space: nowrap;
}
.omv2-drawer[data-cockpit] .ck-copy-btn:hover { border-color: var(--color-secondary); color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-copy-btn svg { width: 14px; height: 14px; }
.omv2-drawer[data-cockpit] .ck-dial .ck-meta { margin-left: auto; display: inline-flex; gap: 8px; align-items: center; }

/* ── 10c — "logging to" banner + asset-on-table strip (mockup 536-547) ─────── */
.omv2-drawer[data-cockpit] .ck-loggingto {
  padding: 8px 24px;
  font-size: 11px; color: var(--color-text-tertiary);
  background: var(--color-surface-1);
  border-bottom: 1px solid var(--color-glass-border);
}
.omv2-drawer[data-cockpit] .ck-loggingto b {
  color: var(--color-text-secondary);
  font-family: 'JetBrains Mono', monospace; font-weight: 600;
}
/* Asset on the table — teal-tinted band, single open asset, editable $/NRA. */
.omv2-drawer[data-cockpit] .ck-assetstrip {
  padding: 14px 24px;
  background: rgba(var(--color-secondary-rgb), .05);
  border-bottom: 1px solid var(--color-glass-border);
}
.omv2-drawer[data-cockpit] .ck-assetstrip .as-row {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
}
.omv2-drawer[data-cockpit] .ck-assetstrip .as-name {
  font-weight: 600; font-size: 15px; color: var(--color-text-primary);
}
.omv2-drawer[data-cockpit] .ck-assetstrip .as-nra {
  font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--color-text-secondary);
}
.omv2-drawer[data-cockpit] .ck-assetstrip .as-eq {
  margin-left: auto; display: inline-flex; align-items: center; gap: 8px;
  font-family: 'JetBrains Mono', monospace; font-size: 13px; color: var(--color-text-secondary);
}
.omv2-drawer[data-cockpit] .ck-assetstrip .as-eq-suf { color: var(--color-text-tertiary); }
.omv2-drawer[data-cockpit] .ck-assetstrip .as-total {
  font-size: 18px; font-weight: 600; font-variant-numeric: tabular-nums;
}
.omv2-drawer[data-cockpit] .ck-assetstrip .as-total.money { color: var(--color-money); }
.omv2-drawer[data-cockpit] .ck-assetstrip .as-foot {
  margin-top: 6px; font-size: 11px; color: var(--color-text-tertiary);
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.omv2-drawer[data-cockpit] .ck-assetstrip .as-empty {
  font-size: 13px; color: var(--color-text-tertiary); font-style: italic;
}
/* Disposition pill (mockup .disppill / .dp-*) */
.omv2-drawer[data-cockpit] .disppill {
  font: 600 9px 'JetBrains Mono', monospace; letter-spacing: .04em; text-transform: uppercase;
  padding: 2px 8px; border-radius: 5px;
}
.omv2-drawer[data-cockpit] .disppill.dp-available { background: rgba(var(--color-secondary-rgb), .12); color: var(--color-secondary-text); }
.omv2-drawer[data-cockpit] .disppill.dp-pipeline  { background: rgba(var(--color-accent-rgb), .14); color: var(--color-text-secondary); }
.omv2-drawer[data-cockpit] .disppill.dp-closed    { background: rgba(var(--color-money-rgb), .13); color: var(--color-success-text); }
/* Editable $/NRA (mockup .rateedit) — wraps the canonical .omv2-rate-input so the
   blur/Enter save (handleRateBlur → set_ownership_dnra) is byte-identical. */
.omv2-drawer[data-cockpit] .ck-assetstrip .rateedit {
  display: inline-flex; align-items: center;
  border: 1px solid var(--color-glass-border); border-radius: 6px;
  padding: 2px 6px; background: var(--color-surface-1);
}
.omv2-drawer[data-cockpit] .ck-assetstrip .rateedit:focus-within { border-color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-assetstrip .ck-asset-rate {
  width: 88px; border: 0; outline: none; padding: 0;  /* fits 2-decimal rate */
  font: 600 13px 'JetBrains Mono', monospace; color: var(--color-text-primary);
  text-align: right; background: transparent;
}
.omv2-drawer[data-cockpit] .ck-assetstrip .ck-asset-rate-ro {
  font: 600 13px 'JetBrains Mono', monospace; color: var(--color-text-primary);
}
/* Add well (dashed teal chip) / Change asset (teal text link) */
.omv2-drawer[data-cockpit] .ck-assetstrip .ck-asset-addwell {
  display: inline-flex; align-items: center; gap: 4px;
  font: 600 11px var(--font-body); color: var(--color-secondary);
  border: 1px dashed var(--color-glass-border-strong); border-radius: 6px;
  padding: 2px 10px; background: transparent; cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-assetstrip .ck-asset-addwell svg { width: 12px; height: 12px; }
.omv2-drawer[data-cockpit] .ck-assetstrip .ck-asset-change {
  border: 0; background: transparent; color: var(--color-text-secondary);
  font: 600 11px var(--font-body); cursor: pointer; padding: 2px 4px;
}
.omv2-drawer[data-cockpit] .ck-assetstrip .ck-asset-change:hover { color: var(--color-secondary); }

/* ── 10d — call script + live note + quick-add (mockup 549-559) ───────────── */
.omv2-drawer[data-cockpit] .ck-call-script { padding: 14px 24px; }
.omv2-drawer[data-cockpit] .ck-call-script .sh {
  display: inline-flex; align-items: center; gap: 6px;
  font: 600 12px var(--font-body); color: var(--color-text-secondary);
  margin-bottom: 8px; cursor: pointer; border: 0; background: transparent; padding: 0;
}
.omv2-drawer[data-cockpit] .ck-call-script .sh svg { width: 14px; height: 14px; transition: transform .15s ease; }
.omv2-drawer[data-cockpit] .ck-call-script.collapsed .sh svg { transform: rotate(-90deg); }
.omv2-drawer[data-cockpit] .ck-call-script .sbody {
  font-size: 13px; color: var(--color-text-primary); line-height: 1.6;
  background: var(--color-surface-1); border: 1px solid var(--color-glass-border);
  border-radius: 8px; padding: 12px 14px;
}
.omv2-drawer[data-cockpit] .ck-call-script .sbody .q { color: var(--color-secondary); font-weight: 600; }
.omv2-drawer[data-cockpit] .ck-call-script .sbody b { color: var(--color-text-primary); font-weight: 650; }
.omv2-drawer[data-cockpit] .ck-call-script.collapsed .sbody,
.omv2-drawer[data-cockpit] .ck-call-script.collapsed .ck-livenote,
.omv2-drawer[data-cockpit] .ck-call-script.collapsed .ck-quickadd { display: none; }
.omv2-drawer[data-cockpit] .ck-livenote { margin-top: 10px; }
.omv2-drawer[data-cockpit] .ck-livenote textarea {
  width: 100%; min-height: 56px; box-sizing: border-box;
  border: 1px solid var(--color-glass-border); border-radius: 8px;
  padding: 8px 12px; font: 13px var(--font-body); resize: vertical; outline: none;
  background: var(--color-surface-1); color: var(--color-text-primary);
}
.omv2-drawer[data-cockpit] .ck-livenote textarea::placeholder { color: var(--color-text-tertiary); }
.omv2-drawer[data-cockpit] .ck-livenote textarea:focus { border-color: var(--color-secondary); }
.omv2-drawer[data-cockpit] .ck-quickadd { margin-top: 10px; display: flex; gap: 6px; flex-wrap: wrap; }
.omv2-drawer[data-cockpit] .ck-quickadd .ck-qa-chip {
  display: inline-flex; align-items: center; gap: 4px;
  font: 600 11px var(--font-body); color: var(--color-secondary);
  border: 1px dashed var(--color-glass-border-strong); border-radius: 6px;
  padding: 4px 10px; background: transparent; cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-quickadd .ck-qa-chip svg { width: 12px; height: 12px; }

/* ── 10d — collapsible "more context" (mockup 561-569) ────────────────────── */
.omv2-drawer[data-cockpit] .ck-context { padding: 0 24px 14px; }
.omv2-drawer[data-cockpit] .ck-context .ctitle {
  display: inline-flex; align-items: center; gap: 6px;
  font: 600 11px var(--font-body); color: var(--color-text-secondary);
  cursor: pointer; padding: 8px 0; border: 0; background: transparent;
}
.omv2-drawer[data-cockpit] .ck-context .ctitle svg { width: 14px; height: 14px; transition: transform .15s ease; }
.omv2-drawer[data-cockpit] .ck-context.open .ctitle svg { transform: rotate(180deg); }
.omv2-drawer[data-cockpit] .ck-context .ck-ctxbody { display: none; }
.omv2-drawer[data-cockpit] .ck-context.open .ck-ctxbody { display: block; }
.omv2-drawer[data-cockpit] .ck-ctxrow {
  display: flex; justify-content: space-between; gap: 12px;
  font-size: 12px; color: var(--color-text-secondary);
  padding: 4px 0; border-top: 1px solid var(--color-glass-border);
}
.omv2-drawer[data-cockpit] .ck-ctxrow b { color: var(--color-text-primary); font-family: 'JetBrains Mono', monospace; font-weight: 600; }
.omv2-drawer[data-cockpit] .ck-ctxrow b.money { color: var(--color-money); }
.omv2-drawer[data-cockpit] .ck-context .viewfull {
  margin-top: 10px; width: 100%; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  border: 1px dashed var(--color-glass-border-strong); background: var(--color-surface-1);
  color: var(--color-text-secondary); border-radius: 8px; padding: 8px;
  font: 600 12px var(--font-body); cursor: pointer;
}
.omv2-drawer[data-cockpit] .ck-context .viewfull:hover { border-color: var(--color-secondary); color: var(--color-secondary); }

/* ── Inline dock (call disposition bar) ───────────────────────────────────── */
/* .qc-dock-inline carries the cooler dock surface (quick-call-v3.css). The dial
   relocated to the call-mode head (10b); these rules style the v4 disposition
   group rows that wrap the reused chip/field elements. */
.omv2-drawer[data-cockpit] .ck-dock-body {
  display: flex; flex-direction: column; gap: 10px;
  padding: 4px 24px 16px;
}
.omv2-drawer[data-cockpit] .ck-dock-group {
  display: flex; align-items: center; gap: 12px;
}
.omv2-drawer[data-cockpit] .ck-dock-group-l {
  flex: 0 0 84px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: .08em; text-transform: uppercase;
  /* Functional form labels — text-secondary (not tertiary) so the 10px label
     clears WCAG SC 1.4.3 4.5:1 on the dock surface (tertiary was 3.81:1). */
  color: var(--color-text-secondary);
}
.omv2-drawer[data-cockpit] .ck-dock-chips {
  display: flex; flex-wrap: wrap; gap: 6px; min-width: 0;
}

/* Callback date row — hidden until outcome=callback. The legacy reveal rule
   only targets the floating .omv2-dock, so the inline cockpit dock needs its
   own reveal (the dock element gets .outcome-callback from setDockOutcome). */
.omv2-drawer[data-cockpit] .ck-dock-callback { display: none; }
.omv2-drawer[data-cockpit] .qc-dock-inline.outcome-callback .ck-dock-callback {
  display: flex;
}
.omv2-drawer[data-cockpit] .ck-dock-callback .omv2-dock-cb-input { width: auto; min-width: 170px; }

/* DNC reason row — branded INLINE field (C6/C8: replaces the native prompt).
   Hidden until the DNC flag is on (.flag-dnc-on, toggled by setDockFlag). Save
   is gated on a ≥3-char value (refreshDockSave). */
.omv2-drawer[data-cockpit] .ck-dock-dnc-reason { display: none; }
.omv2-drawer[data-cockpit] .qc-dock-inline.flag-dnc-on .ck-dock-dnc-reason {
  display: flex;
}
.omv2-drawer[data-cockpit] .ck-dock-dnc-input { flex: 1 1 auto; min-width: 0; }

/* FLAG group — DNC toggle (C6). Off = neutral chip; on = error-tint stop state
   (matches --color-stage-dnc). Distinct from the OUTCOME radio chips so it
   never reads as a mutually-exclusive outcome. */
.omv2-drawer[data-cockpit] .ck-dock-flag {
  display: inline-flex; align-items: center; gap: 6px;
}
.omv2-drawer[data-cockpit] .ck-dock-flag svg { width: 13px; height: 13px; }
.omv2-drawer[data-cockpit] .ck-dock-flag.active {
  background: var(--color-error-muted);
  border-color: var(--color-error);
  color: var(--color-error);
  font-weight: 600;
}

/* Note row + actions — Save & next is the primary CTA. */
.omv2-drawer[data-cockpit] .ck-dock-spoke .omv2-dock-spoke-with { flex: 1 1 auto; min-width: 0; }
.omv2-drawer[data-cockpit] .qc-dock-inline .ck-dock-actions {
  display: flex; align-items: center; gap: 10px; margin-top: 8px;
}
.omv2-drawer[data-cockpit] .qc-dock-inline .ck-dock-actions .omv2-dock-status {
  margin-left: auto;
}
.omv2-drawer[data-cockpit] .qc-dock-inline .ck-dock-save { font-weight: 600; }

/* ════════════════════════════════════════════════════════════════════════════
   Phase 2.2 — two-zone queue bar. Zone A = progress context (mode · position ·
   next-owner preview · session stats); Zone B = Prev/Skip/Next/End controls.
   Layers over the base .qc-queue-chrome (quick-call-v3.css) — reuses the mode
   pill, nav buttons, and stat label/val classes; only adds the two-zone split.
   ════════════════════════════════════════════════════════════════════════════ */
.omv2-drawer[data-cockpit] .qc-queue-chrome--cockpit {
  justify-content: space-between;
  gap: 20px;
  /* v4 mockup .queuebar: dark navy chrome bar (design-system sidebar tokens),
     light text — set apart from the light cockpit content below it. */
  background: var(--color-sidebar-bg);
  color: var(--color-sidebar-text-secondary);
  border-bottom: 0;
  box-shadow: none;
}
.omv2-drawer[data-cockpit] .qc-queue-zone { display: flex; align-items: center; }
.omv2-drawer[data-cockpit] .qc-queue-chrome--cockpit .qc-queue-zone-a {
  flex-direction: column; align-items: flex-start; gap: 2px;
  min-width: 240px; flex: 0 1 auto;
}
.omv2-drawer[data-cockpit] .qc-queue-zone-b { gap: 8px; flex: 0 0 auto; }
.omv2-drawer[data-cockpit] .qc-queue-prog {
  font: 13px/1.2 'JetBrains Mono', monospace;
  color: var(--color-sidebar-text-secondary);
  font-variant-numeric: tabular-nums;
}
.omv2-drawer[data-cockpit] .qc-queue-prog b { color: var(--color-sidebar-text-primary); font-weight: 600; }
.omv2-drawer[data-cockpit] .qc-queue-chrome--cockpit .qc-queue-next {
  font-size: 11px;
  color: var(--color-sidebar-text-secondary);
  max-width: 300px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.omv2-drawer[data-cockpit] .qc-queue-next-name { color: var(--color-sidebar-text-primary); font-weight: 600; }
.omv2-drawer[data-cockpit] .qc-queue-next-last { color: var(--color-sidebar-text-tertiary); font-style: italic; }
/* Labeled nav buttons (mockup .qbtn) on the dark bar. */
.omv2-drawer[data-cockpit] .qc-queue-chrome--cockpit .qc-queue-nav-btn {
  display: inline-flex; align-items: center; gap: 6px;
  width: auto; height: auto; padding: 6px 12px;
  border: 1px solid var(--color-sidebar-border);
  background: transparent;
  color: var(--color-sidebar-text-primary);
  border-radius: var(--radius-md);
  font: 600 11px var(--font-body);
}
.omv2-drawer[data-cockpit] .qc-queue-chrome--cockpit .qc-queue-nav-btn:hover:not(:disabled) {
  background: var(--color-sidebar-bg-elevated);
}
.omv2-drawer[data-cockpit] .qc-queue-chrome--cockpit .qc-queue-nav-btn svg { width: 13px; height: 13px; }
.omv2-drawer[data-cockpit] .qc-queue-chrome--cockpit .qc-queue-end {
  border-color: oklch(0.55 0.22 27 / 0.5);
  color: oklch(0.72 0.12 25);
}
