/* DealFlow — new layout (2026-10). Everything here is scoped under
   body.ui-v2 (set by ui2.js). Published as ui2.min.css. */

:root {
  --nb-top: 33px;          /* desktop top line */
  --nb-bar: 46px;          /* desktop bottom bar */
  --nb-head: 42px;         /* phone header */
  --nb-pbar: 74px;         /* phone bottom bar */
  --nb-accent-bg: #ddf4ff;
  --nb-accent: #0550ae;
  --nb-badge-bg: #ffebe9;
  --nb-badge: #cf222e;
}

/* Built by ui2.js; invisible until the layout is on. */
#nbTop, #nbHead, #nbBar, #nbMenu, #nbMore { display: none; }

/* ── Old chrome off ─────────────────────────────────────────────────── */
body.ui-v2 header.topbar { display: none !important; }
body.ui-v2 .shell > .mode-picker,
body.ui-v2:not(.landing-mode):not(.login-mode):not(.reset-mode):not(.section-select-mode) .shell > .mode-picker { display: none !important; }
body.ui-v2 .drawer-backdrop { display: none !important; }
body.ui-v2 #sectionSelect { display: none !important; }
/* Hub sub-tabs are driven by the bottom bar now. */
body.ui-v2 #chatPanel .chat-header { display: none !important; }
/* The Hub/Agent panel keeps a z-index from its old floating-box days; inside
   the page it must not sit above the + New window. */
body.ui-v2 #chatPanel { z-index: auto; }

/* ── Desktop top line ───────────────────────────────────────────────── */
body.ui-v2:not(.login-mode):not(.reset-mode) #nbTop {
  display: flex; align-items: center; justify-content: space-between;
  height: var(--nb-top); padding: 0 16px;
  background: var(--panel); border-bottom: 1px solid var(--border);
  position: relative; z-index: 30;
}
.nb-top-name { font-weight: 600; font-size: 13px; color: var(--text); }
.nb-top-menus { display: flex; gap: 6px; }
.nb-top-btn {
  display: inline-flex; align-items: center; gap: 4px;
  background: transparent; color: var(--text-dim); font-size: 12px;
  padding: 4px 8px; border-radius: 6px;
}
.nb-top-btn:hover, .nb-top-btn[aria-expanded="true"] { background: var(--panel-2); color: var(--text); }

/* ── Shell between the top line and the bar ─────────────────────────── */
body.ui-v2:not(.landing-mode):not(.login-mode):not(.reset-mode):not(.section-select-mode) .shell {
  flex-direction: column; padding: 0; gap: 0;
  height: calc(100vh - var(--nb-top)); height: calc(100dvh - var(--nb-top));
}
body.ui-v2 .shell > #columnsSection,
body.ui-v2 .shell > .columns,
body.ui-v2 .shell > [id$="Persistent"] { order: 1; }

/* ── Desktop bottom bar ─────────────────────────────────────────────── */
body.ui-v2:not(.login-mode):not(.reset-mode) #nbBar {
  display: flex; order: 99; flex: 0 0 var(--nb-bar); height: var(--nb-bar);
  align-items: center; justify-content: center; gap: 4px; padding: 0 10px;
  background: var(--panel); border-top: 1px solid var(--border);
  position: relative; z-index: 30;
}
.nb-tab {
  position: relative; display: inline-flex; align-items: center; gap: 6px;
  background: transparent; color: var(--text-dim);
  font-size: 13px; padding: 6px 12px; border-radius: 8px; white-space: nowrap;
}
.nb-tab:hover { background: var(--panel-2); color: var(--text); }
.nb-tab.on { background: var(--nb-accent-bg); color: var(--nb-accent); }
.nb-tab[hidden] { display: none !important; }
.nb-icon { position: relative; display: inline-flex; }
.nb-badge {
  font-size: 10.5px; line-height: 16px; min-width: 16px; padding: 0 5px; border-radius: 8px;
  background: var(--nb-badge-bg); color: var(--nb-badge); font-weight: 600; text-align: center;
  margin-left: 2px;
}
.nb-badge[hidden] { display: none; }
/* + New: a round accent circle with the plus, "New" beside it. */
.nb-new { padding: 3px 12px 3px 3px; border-radius: 22px; color: var(--text); font-weight: 600; margin: 0 4px; }
.nb-new:hover { background: var(--panel-2); }
.nb-new.on { background: transparent; color: var(--nb-accent); }
.nb-new-circle {
  position: relative; width: 38px; height: 38px; flex: none; border-radius: 50%;
  background: var(--nb-accent-bg); color: var(--nb-accent);
  display: inline-flex; align-items: center; justify-content: center;
}
.nb-dot {
  position: absolute; top: 1px; right: 1px; width: 9px; height: 9px; border-radius: 50%;
  background: #bf8700; border: 1.5px solid var(--panel);
}
.nb-dot[hidden] { display: none; }
/* Propstream (left of Hub): a shortcut that opens its own window, set apart
   from the page tabs by a thin line. */
.nb-tab-propstream { margin-right: 9px; }
.nb-tab-propstream::after {
  content: ''; position: absolute; right: -7px; top: 7px; bottom: 7px; width: 1px; background: var(--border);
}
.nb-ext { display: inline-flex; color: var(--text-dim); margin-left: -2px; }
/* Narrow desktop windows: icon only, so the bar still fits next to the
   voice controls. */
@media (max-width: 1060px) {
  .nb-tab-propstream .nb-label, .nb-tab-propstream .nb-ext { display: none; }
}
/* While a call is ringing, the Accept/Decline toast needs the room
   (Propstream is still in More → Sites). */
body.ui-v2 #nbBar:has(#sidebarIncomingCall:not(.hidden)) .nb-tab-propstream { display: none; }
/* Bigger bar on wider desktop windows ("it's all so skinny"). Narrow windows
   keep the compact size so the bar still fits beside the voice controls and
   a ringing call (1100px overflowed by 2px with the longest username). */
@media (min-width: 1180px) {
  :root { --nb-bar: 58px; }
  body.ui-v2 #nbBar { gap: 6px; }
  .nb-tab { font-size: 14.5px; padding: 9px 15px; gap: 8px; border-radius: 10px; }
  .nb-tab .nb-icon svg { width: 20px; height: 20px; }
  .nb-new { padding: 3px 14px 3px 3px; border-radius: 26px; }
  .nb-new-circle { width: 44px; height: 44px; }
  .nb-new-circle svg { width: 24px; height: 24px; }
  .nb-badge { font-size: 11.5px; line-height: 18px; min-width: 18px; }
  .nb-tab-propstream::after { top: 10px; bottom: 10px; }
}
@media (min-width: 1500px) {
  :root { --nb-bar: 66px; }
  .nb-tab { font-size: 16px; padding: 11px 20px; gap: 9px; }
  .nb-tab .nb-icon svg { width: 22px; height: 22px; }
  .nb-new-circle { width: 50px; height: 50px; }
  .nb-new-circle svg { width: 26px; height: 26px; }
  .nb-badge { font-size: 12px; line-height: 19px; min-width: 19px; padding: 0 6px; }
  .nb-ext svg { width: 14px; height: 14px; }
}

/* Voice controls (moved here from the old sidebar) sit at the right of the bar. */
body.ui-v2 .nb-voice { display: flex; align-items: center; gap: 6px; margin-left: 10px; }
body.ui-v2 .nb-voice .sidebar-voice-controls {
  flex-direction: row; align-items: center; gap: 6px; margin: 0; padding: 4px 8px;
  border-radius: 10px; border-color: #b7dfb9; background: #f0fbf2;
}
body.ui-v2 .nb-voice .sidebar-voice-controls.hidden { display: none; }
body.ui-v2 .nb-voice .svc-disconnect { width: 30px; height: 28px; order: 9; }
body.ui-v2 .nb-voice .svc-grid { display: flex; gap: 4px; width: auto; }
body.ui-v2 .nb-voice .svc-btn { width: 30px; height: 28px; }
body.ui-v2 .nb-voice .svc-vol { width: 90px; }
body.ui-v2 .nb-voice .sidebar-incoming-call { margin: 0; padding: 4px 8px; display: flex; align-items: center; gap: 8px; }
body.ui-v2 .nb-voice .sidebar-incoming-call.hidden { display: none; }
body.ui-v2 .nb-voice .sic-info { display: flex; align-items: center; gap: 6px; }

/* ── Dropdown menu (account) ────────────────────────────────────────── */
body.ui-v2 #nbMenu:not([hidden]) {
  display: block; position: fixed; z-index: 3000; min-width: 190px; padding: 4px 0;
  background: var(--panel); border: 1px solid var(--border-strong); border-radius: 8px; box-shadow: var(--shadow-md);
}
.nb-menu-item {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%;
  background: transparent; text-align: left; font-size: 13px; padding: 7px 12px; color: var(--text);
}
.nb-menu-item:hover:not([disabled]) { background: var(--panel-2); }
.nb-menu-item.muted { color: var(--text-dim); font-size: 12px; cursor: default; }
.nb-menu-item.danger { color: var(--terminate); }

/* ── More (desktop: panel above the bar; phone: full sheet) ─────────── */
body.ui-v2 #nbMore:not([hidden]) {
  display: flex; flex-direction: column; position: fixed; z-index: 3000;
  right: 12px; bottom: calc(var(--nb-bar) + 8px); width: 330px; max-height: calc(100dvh - var(--nb-top) - var(--nb-bar) - 24px);
  background: var(--panel); border: 1px solid var(--border-strong); border-radius: 12px; box-shadow: var(--shadow-md);
  overflow: hidden;
}
.nb-more-head { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px 6px 14px; font-weight: 600; }
.nb-more-close { background: transparent; color: var(--text-dim); padding: 4px; border-radius: 6px; line-height: 0; }
.nb-more-close:hover { background: var(--panel-2); }
.nb-more-body { overflow: auto; padding: 0 10px 12px; }
.nb-more-title { font-size: 11px; color: var(--text-dim); margin: 10px 4px 4px; text-transform: uppercase; letter-spacing: .4px; }
.nb-more-group { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; margin-bottom: 4px; }
.nb-more-title { border: 0; }
.nb-more-row {
  display: flex; align-items: center; justify-content: space-between; width: 100%;
  background: var(--panel); text-align: left; font-size: 13px; padding: 10px 12px; color: var(--text);
  border-top: 1px solid var(--border);
}
.nb-more-group .nb-more-title + .nb-more-row { border-top: 0; }
.nb-more-row:hover:not([disabled]) { background: var(--panel-2); }
.nb-more-row.muted { color: var(--text-dim); cursor: default; }
.nb-more-row.danger { color: var(--terminate); }
.nb-more-row svg { color: var(--text-dim); flex: none; }
.nb-tab.open { background: var(--panel-2); color: var(--text); }

/* ── Phone (≤900px) ─────────────────────────────────────────────────── */
@media (max-width: 900px) {
  body.ui-v2 #nbTop { display: none !important; }
  body.ui-v2:not(.login-mode):not(.reset-mode) #nbHead {
    display: flex; align-items: center; justify-content: space-between;
    height: var(--nb-head); padding: 0 8px 0 14px;
    background: var(--panel); border-bottom: 1px solid var(--border); position: relative; z-index: 30;
  }
  .nb-head-title { font-size: 18px; font-weight: 600; }
  .nb-head-menu { background: transparent; color: var(--text); padding: 8px; border-radius: 8px; line-height: 0; }

  body.ui-v2:not(.landing-mode):not(.login-mode):not(.reset-mode):not(.section-select-mode) .shell {
    height: calc(100vh - var(--nb-head) - var(--nb-pbar) - var(--nb-strip, 0px) - env(safe-area-inset-bottom));
    height: calc(100dvh - var(--nb-head) - var(--nb-pbar) - var(--nb-strip, 0px) - env(safe-area-inset-bottom));
    min-height: 0;
  }
  body.ui-v2 #columnsSection,
  body.ui-v2 #chatPersistent {
    height: 100% !important; max-height: none !important; min-height: 0 !important;
  }

  body.ui-v2:not(.login-mode):not(.reset-mode) #nbBar {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 1100;
    display: grid; grid-template-columns: repeat(5, 1fr); align-items: end;
    height: calc(var(--nb-pbar) + env(safe-area-inset-bottom));
    padding: 6px 4px calc(10px + env(safe-area-inset-bottom));
    background: var(--panel); border-top: 1px solid var(--border);
  }
  body.ui-v2 #nbBar .nb-tab {
    flex-direction: column; gap: 2px; padding: 0; font-size: 10.5px; background: transparent;
    border-radius: 0; justify-content: flex-end;
  }
  body.ui-v2 #nbBar .nb-tab.on { background: transparent; color: var(--nb-accent); }
  /* phone: the count sits on the icon's top-right corner */
  body.ui-v2 #nbBar .nb-badge { position: absolute; top: 0; left: calc(50% + 6px); margin: 0; }
  body.ui-v2 #nbBar .nb-tab-hub { order: 1; }
  body.ui-v2 #nbBar .nb-tab-texting { order: 2; }
  body.ui-v2 #nbBar .nb-new { order: 3; margin: 0; padding: 0; color: var(--text-dim); font-weight: 400; }
  body.ui-v2 #nbBar .nb-new.on { color: var(--nb-accent); }
  body.ui-v2 #nbBar .nb-tab-agent { order: 4; }
  body.ui-v2 #nbBar .nb-tab-map { order: 5; }
  body.ui-v2 #nbBar .nb-tab-more { display: none; }
  /* Propstream stays in More → Sites on the phone. */
  body.ui-v2 #nbBar .nb-tab-propstream { display: none; }
  /* With Agent hidden the bar has four tabs and the circle stays centred. */
  body.ui-v2 #nbBar:has(.nb-tab-agent[hidden]) { grid-template-columns: repeat(4, 1fr); }
  body.ui-v2 #nbBar .nb-new-circle { width: 44px; height: 44px; }
  body.ui-v2 #nbBar .nb-new-circle svg { width: 24px; height: 24px; }
  /* Taps: no square blue flash or outline box (the desktop .on box-shadow
     drew a box around the whole tab cell). The active tab gets a soft pill
     behind its icon instead, and a pressed tab dims its pill. */
  body.ui-v2 #nbBar .nb-tab {
    -webkit-tap-highlight-color: transparent; touch-action: manipulation;
    -webkit-touch-callout: none; user-select: none; -webkit-user-select: none;
  }
  body.ui-v2 #nbBar .nb-tab.on { box-shadow: none; }
  body.ui-v2 #nbBar .nb-icon { padding: 3px 16px; border-radius: 14px; transition: background-color .15s; }
  body.ui-v2 #nbBar .nb-tab.on .nb-icon { background: var(--nb-accent-bg); }
  body.ui-v2 #nbBar .nb-tab:active .nb-icon { background: var(--panel-2); }
  body.ui-v2 #nbBar .nb-new:active .nb-new-circle { transform: scale(.94); }
  body.ui-v2 #nbBar .nb-tab:focus:not(:focus-visible) { outline: none; }

  /* Voice controls: a strip just above the bar, on every tab. */
  body.ui-v2 .nb-voice {
    position: fixed; left: 0; right: 0; bottom: calc(var(--nb-pbar) + env(safe-area-inset-bottom));
    margin: 0; justify-content: center; z-index: 1099; pointer-events: none;
  }
  body.ui-v2 .nb-voice > * { pointer-events: auto; }
  body.ui-v2 .nb-voice .sidebar-voice-controls {
    position: static !important; top: auto; left: auto; max-width: none; width: 100% !important;
    border-radius: 0 !important; border-width: 1px 0 0 !important; justify-content: center;
    background: #f0fbf2 !important; box-shadow: none !important;
  }
  body.ui-v2 .nb-voice .sidebar-incoming-call { width: 100%; border-radius: 0; justify-content: space-between; }

  /* More = full sheet above the bar. */
  body.ui-v2 #nbMore:not([hidden]) {
    left: 0; right: 0; top: var(--nb-head); bottom: calc(var(--nb-pbar) + var(--nb-strip, 0px) + env(safe-area-inset-bottom));
    width: auto; max-height: none; border-radius: 0; border-width: 0; box-shadow: none;
  }
  body.ui-v2 .nb-more-row { padding: 13px 14px; font-size: 15px; }
  body.ui-v2 #nbMenu { display: none !important; }
}

/* Phone Texting: Sendivo opens in its own tab; the address bar → Map stays
   here. */
body.ui-v2 .sendivo-persistent.nb-phone-crm .sendivo-frame-wrap,
body.ui-v2 .sendivo-persistent.nb-phone-crm .sendivo-refresh-btn { display: none !important; }
body.ui-v2 .sendivo-persistent:not(.nb-phone-crm) .nb-open-sendivo { display: none; }
body.ui-v2 .nb-open-sendivo { padding: 16px 14px; text-align: center; color: var(--text-dim); font-size: 13px; }
body.ui-v2 .nb-open-sendivo-btn {
  display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 18px; border-radius: 10px;
  background: var(--nb-accent-bg); color: var(--nb-accent); font-size: 15px; font-weight: 600; margin-bottom: 10px;
}
body.ui-v2 .sendivo-persistent.nb-phone-crm .crm-addr-input { font-size: 16px; height: 44px; }

/* ── Hub (new layout) ───────────────────────────────────────────────── */
/* Full width: the shell is a flex column, so an auto-margined .hv2 would
   shrink to its content (~800px) — width:100% makes it fill the screen. */
body.ui-v2 .hv2 { padding: 14px 16px 18px; width: 100%; box-sizing: border-box; }
.hv2-monthbar { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 8px; }
.hv2-month { font-size: 15px; font-weight: 600; }
.hv2-monthsub { font-size: 12px; color: var(--text-dim); }
.hv2-link { background: transparent; color: var(--accent); font-size: 12px; padding: 0; }
.hv2-link:hover { text-decoration: underline; }
body.ui-v2 .hv2-kpis.hub-kpi-strip {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 0 0 12px;
}
body.ui-v2 .hv2-kpis .hv2-kpi {
  display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start;
  background: var(--panel-2); background-image: none; color: var(--text); border: 1px solid var(--border);
  border-radius: 10px; padding: 10px 12px; text-align: left; box-shadow: none; min-height: 0; cursor: pointer;
}
body.ui-v2 .hv2-kpis .hv2-kpi:hover:not([disabled]) { border-color: var(--border-strong); }
body.ui-v2 .hv2-kpis .hv2-kpi[disabled] { cursor: default; opacity: 1; }
body.ui-v2 .hv2-kpis .hv2-kpi.is-open { border-color: var(--accent); }
.hv2-kpi-label { font-size: 11.5px; color: var(--text-dim); }
.hv2-kpi-stat { font-size: 21px; font-weight: 600; line-height: 1.25; margin: 2px 0; }
.hv2-kpi-stat.hv2-good { color: var(--send); }
.hv2-kpi-sub { font-size: 11.5px; color: var(--text-dim); }
body.ui-v2 .hv2 .hub-kpi-expand:not([hidden]) { margin: 0 0 12px; }

.hv2-grid {
  display: grid; gap: 12px; align-items: start;
  grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
  grid-template-rows: auto auto 1fr;
  grid-template-areas: "g1 g4" "g2 g4" "g3 g4";
}
.hv2-g1 { grid-area: g1; }
.hv2-g2 { grid-area: g2; }
.hv2-g3 { grid-area: g3; }
.hv2-g4 { grid-area: g4; }
.hv2-col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.hv2-card { background: var(--panel); border: 1px solid var(--border); border-radius: 10px; padding: 12px; }
.hv2-card[hidden] { display: none; }
.hv2-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 14px; font-weight: 600; margin-bottom: 6px; }
.hv2-count { font-size: 11px; font-weight: 600; line-height: 16px; padding: 0 6px; border-radius: 8px; background: var(--nb-badge-bg); color: var(--nb-badge); margin-right: auto; }
.hv2-count[hidden] { display: none; }
.hv2-empty { font-size: 12.5px; color: var(--text-dim); padding: 6px 0; }
.hv2-row { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-top: 1px solid var(--border); }
.hv2-row:first-child { border-top: 0; }
.hv2-row-icon { color: var(--text-dim); display: inline-flex; flex: none; }
.hv2-row-main { flex: 1; min-width: 0; }
.hv2-row-title { font-size: 13px; }
.hv2-sub { font-size: 11.5px; color: var(--text-dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hv2-btn {
  flex: none; font-size: 12px; padding: 5px 12px; border-radius: 8px;
  background: var(--panel); border: 1px solid var(--border-strong); color: var(--text);
}
.hv2-btn:hover:not([disabled]) { background: var(--panel-2); }
.hv2-btn[disabled] { opacity: .5; cursor: default; }
.hv2-seeall { margin-top: 4px; }
.hv2-voice { display: flex; align-items: center; gap: 8px; }
.hv2-avatars { display: inline-flex; }
.hv2-av {
  width: 26px; height: 26px; border-radius: 50%; background: var(--nb-accent-bg); color: var(--nb-accent);
  font-size: 10.5px; font-weight: 600; display: inline-flex; align-items: center; justify-content: center;
  border: 2px solid var(--panel); margin-left: -6px;
}
.hv2-av:first-child { margin-left: 0; }
.hv2-voice-line { flex: 1; min-width: 0; }
.hv2-voice-msgs {
  display: flex; align-items: center; gap: 6px; width: 100%; margin-top: 10px; padding: 8px 0 0;
  border-top: 1px solid var(--border); background: transparent; font-size: 12.5px; color: var(--text); text-align: left;
}
.hv2-voice-msgs > span:first-child { flex: 1; }
body.ui-v2 .hv2 .hub-comingup,
body.ui-v2 .hv2 .hub-stranded:not(:empty),
body.ui-v2 .hv2 .hub-skiptrace:not(:empty) { border-radius: 10px; }
body.ui-v2 .hv2 .hub-stranded:empty,
body.ui-v2 .hv2 .hub-skiptrace:empty { display: none; }
/* The column gap spaces these; their own old margins doubled it. */
body.ui-v2 .hv2 .hub-comingup,
body.ui-v2 .hv2 .hub-numhealth,
body.ui-v2 .hv2 .hub-stranded,
body.ui-v2 .hv2 .hub-skiptrace { margin: 0; }
body.ui-v2 .hv2-pipeline .hub-pipeline-section { border: 0; padding: 0; background: transparent; box-shadow: none; }

@media (max-width: 900px) {
  body.ui-v2 .hv2 { padding: 10px 12px 16px; }
  body.ui-v2 .hv2-kpis.hub-kpi-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  body.ui-v2 .hv2-kpis .hv2-kpi-net { grid-column: 1 / -1; }
  body.ui-v2 .hv2-kpis .hv2-kpi { padding: 9px 10px; }
  body.ui-v2 .hv2-kpis .hv2-kpi-net .hv2-kpi-stat { font-size: 24px; }
  body.ui-v2 .hv2-kpis .hv2-kpi:not(.hv2-kpi-net) .hv2-kpi-stat { font-size: 15px; }
  body.ui-v2 .hv2-kpis .hv2-kpi:not(.hv2-kpi-net) .hv2-kpi-sub { display: none; }
  .hv2-grid { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; grid-template-areas: "g1" "g2" "g3" "g4"; }
  .hv2-btn { height: 40px; padding: 0 14px; font-size: 13px; }
  .hv2-row-title { font-size: 14px; }
}

/* Wide screens: three columns (calendar + buyer | needs | voice + coming up
   + numbers + AI) and everything a bit larger so it uses the monitor. zoom
   scales the Hub's own text, cards and the older Hub blocks inside it alike. */
@media (min-width: 1400px) {
  body.ui-v2 .hv2 { padding: 16px 20px 22px; zoom: 1.1; }
  .hv2-grid {
    gap: 14px;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 0.9fr);
    grid-template-rows: auto 1fr;
    grid-template-areas: "g1 g2 g4" "g3 g2 g4";
  }
  .hv2-col { gap: 14px; }
  body.ui-v2 .hv2-kpis.hub-kpi-strip { gap: 14px; margin-bottom: 14px; }
}
@media (min-width: 1800px) { body.ui-v2 .hv2 { zoom: 1.2; } }
@media (min-width: 2300px) { body.ui-v2 .hv2 { zoom: 1.4; } }

/* ── Agent tab (new layout) ─────────────────────────────────────────── */
body.ui-v2 #chatViewAgent .agent-tab-root {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(320px, 0.85fr);
  grid-template-rows: auto minmax(0, 1fr); column-gap: 14px; padding: 12px 16px 14px;
}
body.ui-v2 #chatViewAgent .agent-tab-root > .agent-header { grid-column: 1 / -1; }
body.ui-v2 #chatViewAgent .agent-menu { display: none !important; }      /* panels are tabs now; Contract is in + New */
body.ui-v2 #chatViewAgent .agent-tab-root > .agent-tab-body {
  grid-column: 1; grid-row: 2; flex-direction: column; gap: 12px; min-height: 0;
}
body.ui-v2 #chatViewAgent .agent-tab-left { flex: 0 1 auto; max-height: 48%; overflow-y: auto; }
body.ui-v2 #chatViewAgent .agent-tab-right { flex: 1 1 auto; min-height: 0; }
body.ui-v2 #chatViewAgent #agentPanelsOverlay {
  position: static; display: block; grid-column: 2; grid-row: 2; width: auto; max-width: none; max-height: none;
  min-height: 0; overflow-y: auto; box-shadow: none; border: 1px solid var(--border); border-radius: 12px; padding: 0;
}
body.ui-v2 #chatViewAgent #agentPanelsOverlay:not(.open) .agent-section { display: none; }
.agent-v2-tabs {
  display: flex; gap: 2px; padding: 6px 8px 0; position: sticky; top: 0; z-index: 1;
  background: var(--panel); border-bottom: 1px solid var(--border);
}
.agent-v2-tab {
  display: inline-flex; align-items: center; gap: 5px; padding: 7px 10px; font-size: 12.5px;
  background: transparent; color: var(--text-dim); border-radius: 8px 8px 0 0;
}
.agent-v2-tab:hover { color: var(--text); }
.agent-v2-tab.on { color: var(--nb-accent); box-shadow: inset 0 -2px 0 var(--nb-accent); font-weight: 600; }
.agent-v2-count {
  font-size: 10.5px; line-height: 16px; min-width: 16px; padding: 0 5px; border-radius: 8px;
  background: var(--nb-badge-bg); color: var(--nb-badge); font-weight: 600; text-align: center;
}
.agent-v2-count[hidden] { display: none; }
.agent-v2-pills { display: none; }
/* Expanded take-over inbox fills the whole tab, as today. */
body.ui-v2 #chatViewAgent .agent-tab-root.inbox-expanded > .agent-tab-body { grid-column: 1 / -1; }
body.ui-v2 #chatViewAgent .agent-tab-root.inbox-expanded #agentPanelsOverlay { display: none; }
body.ui-v2 #chatViewAgent .agent-tab-root.inbox-expanded .agent-tab-left { max-height: none; }

@media (max-width: 900px) {
  body.ui-v2 #chatViewAgent .agent-tab-root { display: flex; flex-direction: column; padding: 8px 10px 10px; }
  body.ui-v2 #chatViewAgent .agent-header { display: none; }
  .agent-v2-pills { display: flex; gap: 6px; overflow-x: auto; padding: 2px 0 8px; flex: none; }
  .agent-v2-pill {
    display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; padding: 7px 12px; border-radius: 16px;
    border: 1px solid var(--border-strong); background: var(--panel); color: var(--text); white-space: nowrap;
  }
  .agent-v2-pill.on { background: var(--nb-accent-bg); color: var(--nb-accent); border-color: #9cd0ff; }
  body.ui-v2 #chatViewAgent #agentV2Tabs { display: none; }
  body.ui-v2 #chatViewAgent .agent-tab-root.agent-v2-view-chat #agentPanelsOverlay { display: none !important; }
  body.ui-v2 #chatViewAgent .agent-tab-root.agent-v2-view-panel > .agent-tab-body { display: none; }
  body.ui-v2 #chatViewAgent .agent-tab-root.agent-v2-view-panel #agentPanelsOverlay { flex: 1 1 auto; border-radius: 12px; }
  body.ui-v2 #chatViewAgent .agent-tab-left { max-height: 40%; }
}

/* ── + New window (new layout) ──────────────────────────────────────── */
body.ui-v2 #newWin:not([hidden]) {
  display: flex; flex-direction: column; position: fixed; z-index: 1060;
  background: var(--panel); border: 1px solid var(--border-strong); border-radius: 12px;
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.22); overflow: hidden;
  container-type: inline-size; container-name: nw;
}
body:not(.ui-v2) #newWin, body:not(.ui-v2) #nwStrip { display: none !important; }
#newWin[hidden], #nwStrip[hidden] { display: none !important; }
body.ui-v2 #newWin.nw-max { border-radius: 0; box-shadow: none; border-width: 0 0 1px; }
.nw-grab { display: none; }
.nw-bar {
  display: flex; align-items: center; gap: 4px; padding: 5px 6px 5px 6px; flex: none;
  background: var(--panel-2); border-bottom: 1px solid var(--border); cursor: move; user-select: none;
}
.nw-grip { color: var(--text-dim); display: inline-flex; padding: 0 2px; }
.nw-title { flex: 1; min-width: 0; font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-left: 2px; }
.nw-ib {
  display: inline-flex; align-items: center; justify-content: center; min-width: 28px; min-height: 28px;
  background: transparent; color: var(--text-dim); border-radius: 6px; padding: 0; cursor: pointer;
}
.nw-ib:hover { background: var(--border); color: var(--text); }
.nw-ib[hidden] { display: none; }
.nw-only-phone { display: none; }
body.ui-v2 #newWin .nw-body { flex: 1 1 auto; min-height: 0; overflow: auto; padding: 12px 14px; }
body.ui-v2 #newWin .nw-actions:not([hidden]) {
  display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; flex: none;
  padding: 10px 12px; border-top: 1px solid var(--border); background: var(--panel); margin: 0;
}
body.ui-v2 #newWin .warning-strip:not([hidden]) { flex: none; }
/* The draft PDF grows with the window (it is 600px inline today). */
body.ui-v2 #newWin .pdf-preview-frame { height: max(380px, 62vh) !important; }
body.ui-v2 #newWin.nw-max .pdf-preview-frame { height: max(480px, calc(100vh - 260px)) !important; }
/* Narrow window: forms stack. */
@container nw (max-width: 620px) {
  .create-form { grid-template-columns: minmax(0, 1fr) !important; }
  .contract-type-grid { grid-template-columns: minmax(0, 1fr) !important; }
}
.nw-rz { position: absolute; z-index: 3; }
.nw-rz-e { top: 40px; bottom: 18px; right: 0; width: 8px; cursor: ew-resize; }
.nw-rz-w { top: 40px; bottom: 18px; left: 0; width: 8px; cursor: ew-resize; }
.nw-rz-s { left: 18px; right: 18px; bottom: 0; height: 8px; cursor: ns-resize; }
.nw-rz-se { right: 0; bottom: 0; width: 18px; height: 18px; cursor: nwse-resize; }
.nw-rz-sw { left: 0; bottom: 0; width: 18px; height: 18px; cursor: nesw-resize; }
.nw-rz-se::after { content: ''; position: absolute; right: 4px; bottom: 4px; width: 7px; height: 7px; border-right: 1.5px solid var(--text-dim); border-bottom: 1.5px solid var(--text-dim); }
body.ui-v2 #newWin.nw-max .nw-rz { display: none; }
body.nw-dragging, body.nw-dragging * { user-select: none !important; }
body.nw-dragging iframe { pointer-events: none !important; }
.nw-pulse { animation: nwpulse .5s ease 2; }
@keyframes nwpulse { 50% { box-shadow: 0 0 0 3px var(--accent), 0 12px 32px rgba(0, 0, 0, 0.22); } }

/* The 5-row menu. */
.nw-menu { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
.nw-menu-row {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 11px 12px;
  background: var(--panel); border-top: 1px solid var(--border); color: var(--text);
}
.nw-menu-row:first-child { border-top: 0; }
.nw-menu-row:hover { background: var(--panel-2); }
.nw-menu-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.nw-menu-title { font-size: 13.5px; }
.nw-menu-sub { font-size: 11.5px; color: var(--text-dim); }
.nw-menu-row svg { color: var(--text-dim); flex: none; }

/* Minimized pill (desktop) / tucked strip (phone). */
body.ui-v2 #nwStrip:not([hidden]) {
  display: flex; align-items: center; gap: 6px; position: fixed; z-index: 1001; cursor: pointer;
  right: 12px; bottom: calc(var(--nb-bar) + 10px); max-width: 360px; padding: 6px 6px 6px 12px;
  background: var(--panel); border: 1px solid var(--border-strong); border-radius: 10px; box-shadow: var(--shadow-md);
}
.nw-strip-icon { color: var(--text-dim); display: inline-flex; }
.nw-strip-text { flex: 1; min-width: 0; display: flex; flex-direction: column; font-size: 12.5px; }
.nw-strip-text b { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nw-strip-text span { font-size: 11.5px; color: var(--text-dim); }
.nw-strip-text span:empty { display: none; }

@media (max-width: 900px) {
  .nw-only-desk { display: none !important; }
  .nw-only-phone { display: inline-flex; }
  body.ui-v2 #newWin.nw-sheet:not([hidden]) {
    left: 0; right: 0; top: 8px; bottom: calc(var(--nb-pbar) + var(--nb-strip, 0px) + env(safe-area-inset-bottom));
    width: auto; height: auto; border-radius: 18px 18px 0 0; border-bottom: 0; z-index: 1050;
    box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.18);
  }
  body.ui-v2 #newWin.nw-sheet .nw-grab { display: block; width: 36px; height: 4px; border-radius: 2px; background: var(--border-strong); margin: 8px auto 0; flex: none; }
  body.ui-v2 #newWin.nw-sheet .nw-bar { background: var(--panel); border-bottom: 0; cursor: default; padding: 6px 6px 4px 8px; }
  body.ui-v2 #newWin.nw-sheet .nw-grip, body.ui-v2 #newWin.nw-sheet .nw-rz { display: none; }
  body.ui-v2 #newWin.nw-sheet .nw-title { font-size: 17px; }
  body.ui-v2 #newWin.nw-sheet .nw-ib { min-width: 40px; min-height: 40px; }
  body.ui-v2 #newWin.nw-sheet .nw-actions .btn { flex: 1; height: 44px; }
  body.ui-v2 #newWin .pdf-preview-frame { height: 55vh !important; }
  body.ui-v2 #nwStrip:not([hidden]) {
    left: 8px; right: 8px; max-width: none; bottom: calc(var(--nb-pbar) + var(--nb-strip, 0px) + env(safe-area-inset-bottom) + 8px);
    padding: 8px 6px 8px 12px; border-radius: 12px;
  }
  body.ui-v2.nw-tucked:not(.landing-mode):not(.login-mode):not(.reset-mode):not(.section-select-mode) .shell { padding-bottom: 64px; }
}

/* Toasts and the 1:1 call bar sit above the bottom tab bar, not on it. */
body.ui-v2 .toast { bottom: calc(var(--nb-bar) + 12px); }
body.ui-v2 #callBar { bottom: calc(var(--nb-bar) + 12px); }
@media (max-width: 900px) {
  body.ui-v2 .toast { bottom: calc(var(--nb-pbar) + var(--nb-strip, 0px) + env(safe-area-inset-bottom) + 12px); max-width: calc(100vw - 24px); }
}

/* Hub: closed-deals calendar + marketing costs + number health, always shown. */
body.ui-v2 .hv2-grid-money { margin-top: 12px; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); }
body.ui-v2 #hv2Calendar .hub-closed-calendar { border: 0; box-shadow: none; padding: 0; margin: 0; background: transparent; }
body.ui-v2 .hv2 .hub-numhealth { border-radius: 10px; }
@media (max-width: 900px) {
  body.ui-v2 .hv2-grid-money { grid-template-columns: minmax(0, 1fr); }
}

/* Hub Voice Chat card — stands out, one button. */
body.ui-v2 #hv2Voice { background: #f0fbf2; border-color: #9fd3a6; border-left: 4px solid #2da44e; }
body.ui-v2 #hv2Voice.hv2-voice-live { box-shadow: 0 0 0 3px rgba(45, 164, 78, 0.12); }
.hv2-voice-title { display: inline-flex; align-items: center; gap: 6px; color: #1a7f37; margin-right: auto; }
.hv2-live-dot { width: 8px; height: 8px; border-radius: 50%; background: #2da44e; animation: hv2live 1.6s ease-in-out infinite; }
@keyframes hv2live { 50% { opacity: .35; } }
body.ui-v2 #hv2Voice .hv2-voice {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 10px 12px;
  background: #ffffff; border: 1px solid #b7dfb9; border-radius: 10px; color: var(--text); font-size: 13px; cursor: pointer;
}
body.ui-v2 #hv2Voice .hv2-voice:hover { border-color: #2da44e; }
.hv2-voice .hv2-voice-line { flex: 1; min-width: 0; }
.hv2-voice-cta {
  flex: none; font-size: 12.5px; font-weight: 600; padding: 5px 14px; border-radius: 8px;
  background: #2da44e; color: #fff;
}
@media (max-width: 900px) {
  body.ui-v2 #hv2Voice .hv2-voice { min-height: 48px; font-size: 14px; }
  .hv2-voice-cta { padding: 8px 16px; font-size: 13px; }
}

/* Marketing costs: opens under the money row when the Marketing tile is clicked. */
body.ui-v2 .hv2 #hubKpiExpand .hub-marketing-grid { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); }
body.ui-v2 .hv2 #hubKpiExpand .hub-marketing-header { flex-wrap: wrap; row-gap: 4px; }

/* ── Contrast: tinted page, white cards with real edges, dark top line ── */
:root {
  --nb-page: #e8ecf1;
  --nb-card-border: #cfd6de;
  --nb-card-shadow: 0 1px 2px rgba(27, 31, 36, 0.06), 0 3px 10px rgba(27, 31, 36, 0.06);
}
body.ui-v2 { background: var(--nb-page); }
body.ui-v2 #chatPanel,
body.ui-v2 #chatPersistent,
body.ui-v2 .chat-view,
body.ui-v2 #chatViewAgent .agent-tab-root { background: var(--nb-page); }
/* Top line: dark band. */
body.ui-v2:not(.login-mode):not(.reset-mode) #nbTop { background: #1f2937; border-bottom-color: #111827; }
body.ui-v2 .nb-top-name { color: #ffffff; letter-spacing: .2px; }
body.ui-v2 .nb-top-btn { color: #d1d5db; }
body.ui-v2 .nb-top-btn:hover, body.ui-v2 .nb-top-btn[aria-expanded="true"] { background: #374151; color: #ffffff; }
/* Bottom bar + phone header: white with a clear edge. */
body.ui-v2:not(.login-mode):not(.reset-mode) #nbBar { border-top: 1px solid var(--nb-card-border); box-shadow: 0 -2px 8px rgba(27, 31, 36, 0.06); }
body.ui-v2 .nb-head { border-bottom: 1px solid var(--nb-card-border) !important; box-shadow: 0 2px 6px rgba(27, 31, 36, 0.05); }
body.ui-v2 .nb-tab { color: #4b5563; }
body.ui-v2 .nb-tab.on { background: var(--nb-accent-bg); color: var(--nb-accent); box-shadow: inset 0 0 0 1px #9cd0ff; }
/* Hub cards and tiles. */
body.ui-v2 .hv2-card,
body.ui-v2 .hv2 .hub-comingup,
body.ui-v2 .hv2 .hub-numhealth,
body.ui-v2 .hv2 #hubKpiExpand:not([hidden]) {
  background: #ffffff; border: 1px solid var(--nb-card-border); box-shadow: var(--nb-card-shadow);
}
body.ui-v2 .hv2-kpis .hv2-kpi {
  background: #ffffff; border: 1px solid var(--nb-card-border); box-shadow: var(--nb-card-shadow);
}
body.ui-v2 .hv2-kpis .hv2-kpi .hv2-kpi-stat { font-weight: 700; color: #111827; }
body.ui-v2 .hv2-kpis .hv2-kpi .hv2-kpi-stat.hv2-good { color: #15803d; }
body.ui-v2 .hv2-month, body.ui-v2 .hv2-h { color: #111827; }
body.ui-v2 .hv2 #hubKpiExpand:not([hidden]) { border-radius: 10px; padding: 12px; margin: 0 0 12px; }
/* Agent panels. */
body.ui-v2 #chatViewAgent .agent-section,
body.ui-v2 #chatViewAgent .agent-chat-col,
body.ui-v2 #chatViewAgent #agentPanelsOverlay { border: 1px solid var(--nb-card-border); box-shadow: var(--nb-card-shadow); background: #ffffff; }
/* A fired blast the post-fire check found not sending: red edge, like Failed. */
.agent-blast-item.agent-blast-send_problem { border-left-color: #dc2626; }
/* Badges stay on one line (phones wrapped "Not / sending"); the list name gives way. */
.agent-blast-badge { white-space: nowrap; flex-shrink: 0; }
/* "Agent handles replies" + price limit, on queued and sent blasts. */
.agent-blast-manage { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-top: 6px; padding: 6px 8px; border: 1px dashed #cbd5e1; border-radius: 8px; background: #f8fafc; font-size: 12px; color: #334155; }
.agent-blast-manage.on { border-style: solid; border-color: #93c5fd; background: #eff6ff; }
.agent-blast-manage-on { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; cursor: pointer; }
.agent-blast-manage-on input { width: 16px; height: 16px; margin: 0; }
.agent-blast-manage-cap { display: inline-flex; align-items: center; gap: 4px; font-weight: 500; }
.agent-blast-manage-alike { display: inline-flex; align-items: center; gap: 6px; font-weight: 500; cursor: pointer; }
.agent-blast-manage-alike input { width: 15px; height: 15px; margin: 0; }
.agent-blast-manage-dollar { color: #64748b; margin-left: 2px; }
.agent-blast-manage-price { width: 96px; height: 28px; padding: 2px 8px; border: 1px solid #cbd5e1; border-radius: 6px; font: inherit; font-size: 13px; background: #fff; }
.agent-blast-manage-price:focus { outline: 2px solid #93c5fd; outline-offset: 0; border-color: #60a5fa; }
.agent-blast-manage-save { appearance: none; border: 1px solid #2563eb; background: #2563eb; color: #fff; font: inherit; font-size: 12px; font-weight: 600; padding: 4px 12px; border-radius: 6px; cursor: pointer; }
.agent-blast-manage-save:hover { background: #1d4ed8; }
.agent-blast-manage-save:disabled { opacity: 0.6; cursor: wait; }
.agent-blast-manage-state { flex: 1 1 auto; min-width: 0; color: #1d4ed8; font-size: 11px; }
.agent-blast-manage-num { width: 84px !important; }
.agent-blast-manage-extra { flex: 1 1 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.agent-blast-manage-extra[hidden] { display: none; }
.agent-blast-manage-notes-lbl { flex: 1 1 100%; display: flex; flex-direction: column; gap: 3px; font-weight: 600; font-size: 12px; color: #334155; }
.agent-blast-manage-notes { width: 100%; min-height: 44px; resize: vertical; box-sizing: border-box; padding: 5px 8px; border: 1px solid #cbd5e1; border-radius: 6px; font: inherit; font-size: 13px; font-weight: 400; background: #fff; }
.agent-blast-manage-notes:focus { outline: 2px solid #93c5fd; outline-offset: 0; border-color: #60a5fa; }
.agent-blast-manage.ended { border-style: dashed; background: #f8fafc; }
.agent-blast-manage.ended .agent-blast-manage-state { color: #64748b; }
.agent-pkg select { height: 28px; padding: 2px 6px; border: 1px solid #cbd5e1; border-radius: 6px; font: inherit; font-size: 13px; background: #fff; min-width: 0; max-width: 100%; }
/* Sent — last 30 days (DealFlow-fired + made by hand in Sendivo). */
.agent-blast-sent { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; }
.agent-blast-sent-head { font-size: 13px; font-weight: 700; color: #111827; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
.agent-blast-sent-sub { font-size: 11px; font-weight: 500; color: #64748b; }
.agent-blast-sent-note { font-size: 11px; color: #64748b; }
.agent-blast-sent-item { border: 1px solid #e2e8f0; border-left: 3px solid #94a3b8; border-radius: 8px; padding: 8px 10px; background: #fff; }
.agent-blast-sent-item.on { border-left-color: #2563eb; }
.agent-blast-sent-top { display: flex; align-items: baseline; gap: 6px 8px; flex-wrap: wrap; }
.agent-blast-sent-name { font-weight: 600; color: #1e293b; font-size: 13px; min-width: 0; overflow-wrap: anywhere; }
.agent-blast-sent-tag { font-size: 10px; font-weight: 700; padding: 1px 7px; border-radius: 999px; background: #f1f5f9; color: #475569; white-space: nowrap; }
.agent-blast-sent-when { margin-left: auto; font-size: 11px; color: #94a3b8; white-space: nowrap; }
.agent-blast-sent-stats { font-size: 11px; color: #64748b; margin-top: 2px; }
.agent-blast-sent-agent { font-size: 11px; color: #1e40af; margin-top: 3px; }
.agent-blast-sent-agent.attn { color: #b45309; font-weight: 600; }
.agent-blast-manage-pause { appearance: none; border: 1px solid #cbd5e1; background: #fff; color: #334155; font: inherit; font-size: 12px; font-weight: 600; padding: 4px 12px; border-radius: 6px; cursor: pointer; }
/* Replies that need you (managed blasts). */
.agent-mny { margin: 10px 0 12px; display: flex; flex-direction: column; gap: 8px; }
.agent-mny-count { display: inline-block; min-width: 18px; padding: 0 6px; border-radius: 999px; background: #fef3c7; color: #92400e; font-size: 11px; text-align: center; }
.agent-mny-item { border: 1px solid #fde68a; border-left: 3px solid #f59e0b; border-radius: 8px; padding: 8px 10px; background: #fffbeb; }
.agent-mny-item.draft { border-color: #bfdbfe; border-left-color: #3b82f6; background: #eff6ff; }
.agent-mny-top { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; }
.agent-mny-who { font-weight: 700; color: #111827; font-size: 13px; }
.agent-mny-blast { font-size: 11px; color: #64748b; }
.agent-mny-reason { margin-left: auto; font-size: 11px; font-weight: 600; color: #92400e; }
.agent-mny-reason.agreed { color: #15803d; }
.agent-mny-item.draft .agent-mny-reason { color: #1d4ed8; }
.agent-mny-last, .agent-mny-draft { font-size: 12px; color: #334155; margin-top: 4px; overflow-wrap: anywhere; }
.agent-mny-last span, .agent-mny-draft span { font-weight: 600; color: #64748b; }
.agent-mny-draft { background: #fff; border: 1px solid #e2e8f0; border-radius: 6px; padding: 4px 8px; }
.agent-mny-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.agent-mny-btn { appearance: none; border: 1px solid #cbd5e1; background: #fff; color: #1e293b; font: inherit; font-size: 12px; font-weight: 600; padding: 4px 10px; border-radius: 6px; cursor: pointer; }
.agent-mny-btn:hover { background: #f1f5f9; }
.agent-mny-btn.subtle { color: #64748b; }
.agent-mny-btn.agent-mny-btn-go { border-color: #16a34a; color: #15803d; }
.agent-mny-btn.agent-mny-btn-go:hover { background: #f0fdf4; }
.agent-mny-item.contract { border-color: #bbf7d0; border-left-color: #16a34a; background: #f0fdf4; }
.agent-mny-approve { appearance: none; border: 1px solid #15803d; background: #16a34a; color: #fff; font: inherit; font-size: 12px; font-weight: 700; padding: 5px 12px; border-radius: 6px; cursor: pointer; }
.agent-mny-approve:hover { background: #15803d; }
.agent-mny-approve:disabled { opacity: 0.6; cursor: wait; }
/* Contract package (seller agreed). */
.agent-pkg { margin-top: 8px; padding: 8px; background: #fff; border: 1px solid #d1fae5; border-radius: 8px; display: flex; flex-direction: column; gap: 6px; font-size: 12px; color: #334155; }
.agent-pkg-head { font-weight: 700; color: #14532d; }
.agent-pkg-lbl { display: flex; flex-direction: column; gap: 2px; font-weight: 600; color: #475569; flex: none; min-width: 0; }
.agent-pkg-row { display: flex; flex-wrap: wrap; gap: 8px; }
.agent-pkg-row .agent-pkg-lbl { flex: 1 1 140px; }
.agent-pkg input { height: 28px; padding: 2px 8px; border: 1px solid #cbd5e1; border-radius: 6px; font: inherit; font-size: 13px; background: #fff; min-width: 0; box-sizing: border-box; }
.agent-pkg-owner { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.9fr) minmax(0, 1.4fr); gap: 6px; align-items: center; padding-top: 6px; border-top: 1px dashed #e2e8f0; }
.agent-pkg-role { grid-column: 1 / -1; font-weight: 600; color: #64748b; font-size: 11px; }
.agent-pkg-email-wrap { display: flex; align-items: center; gap: 4px; min-width: 0; }
.agent-pkg-email-wrap input { flex: 1 1 auto; width: 100%; }
.agent-pkg-ok { color: #15803d; font-weight: 700; font-size: 11px; white-space: nowrap; }
.agent-pkg-src { color: #94a3b8; font-weight: 500; font-size: 11px; white-space: nowrap; }
.agent-pkg-warn { color: #92400e; background: #fffbeb; border: 1px solid #fde68a; border-radius: 6px; padding: 3px 8px; }
.agent-pkg-miss { color: #b91c1c; font-weight: 600; }
.agent-pkg-texted { font-size: 12px; color: #334155; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 6px; padding: 4px 8px; overflow-wrap: anywhere; }
/* A contract going out by DocuSign on its own (Contracts: Send automatically) —
   when, with Cancel; and the switch under the blast mode bar. */
.agent-pkg-auto { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; color: #3730a3; background: #eef2ff; border: 1px solid #c7d2fe; border-radius: 6px; padding: 4px 8px; margin-top: 6px; font-size: 12px; font-weight: 600; }
.agent-pkg-auto > span { flex: 1 1 200px; min-width: 0; }
.agent-pkg-auto.off { color: #475569; background: #f8fafc; border-color: #e2e8f0; font-weight: 500; }
.agent-inbox-mauto > .agent-pkg-warn { margin-top: 6px; }
.agent-contract-modebar { flex-wrap: wrap; padding-top: 0; }
.agent-contract-modenote { margin-left: auto; font-size: 10px; color: #64748b; }
.agent-contract-modenote.warn { color: #b45309; font-weight: 600; }
/* ── Agent Inbox: blast conversations that need a person (app.js
   renderManagedInbox). Cards reuse the .agent-mny-item look; the thread
   reuses the take-over bubbles (.agent-inbox-msg*). ─────────────────── */
.agent-mny-count[hidden] { display: none; }
#agentInboxCount { margin-left: 4px; vertical-align: middle; }
.agent-inbox-mcard { display: flex; flex-direction: column; gap: 6px; }
.agent-inbox-mcard.yours { border-color: #e2e8f0; border-left-color: #94a3b8; background: #f8fafc; }
.agent-inbox-mcard.resolved { opacity: 0.8; border-style: dashed; }
.agent-inbox-mstate { margin-left: auto; font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 999px; background: #fef3c7; color: #92400e; white-space: nowrap; }
.agent-inbox-mstate.st-contract { background: #dcfce7; color: #15803d; }
.agent-inbox-mstate.st-draft { background: #dbeafe; color: #1d4ed8; }
.agent-inbox-mstate.st-warn { background: #fee2e2; color: #b91c1c; }
.agent-inbox-mstate.st-yours { background: #e2e8f0; color: #334155; }
/* Pause / Resume (operator 2026-11-02): "Paused by Mason, 3:12 PM" — the card's own chip
   (a card the agent has) or a second one next to its state chip. */
.agent-inbox-mstate.st-paused, .agent-inbox-mpaused { background: #ede9fe; color: #5b21b6; }
.agent-inbox-mpaused { font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 999px; white-space: nowrap; }
.agent-inbox-mpaused[hidden] { display: none; }
.agent-inbox-mcard.paused { border-left-color: #7c3aed; }
.agent-inbox-mreason { font-size: 12px; color: #92400e; overflow-wrap: anywhere; }
.agent-inbox-mwarn { display: flex; flex-direction: column; gap: 2px; font-size: 12px; color: #92400e; background: #fffbeb; border: 1px solid #fde68a; border-radius: 6px; padding: 4px 8px; }
.agent-inbox-mearlier { align-self: center; appearance: none; border: 0; background: none; color: #2563eb; font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; padding: 2px 6px; }
.agent-inbox-thread.agent-inbox-mthread { max-height: 220px; gap: 6px; padding: 6px 8px; background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; }
.agent-inbox-mthread .agent-inbox-msg { max-width: 86%; }
.agent-inbox-mthread .agent-inbox-msg-bubble { padding: 6px 10px; font-size: 12.5px; border-radius: 12px; }
.agent-inbox-mthread .agent-inbox-msg-text { overflow-wrap: anywhere; }
.agent-inbox-mthread .who-you .agent-inbox-msg-bubble { background: #7c3aed; color: #fff; }
.agent-inbox-mthread :is(.who-blast, .who-teammate) .agent-inbox-msg-bubble { background: #e2e8f0; color: #0f172a; }
.agent-inbox-mthread .agent-inbox-mpending .agent-inbox-msg-bubble { background: #fff; color: #1e293b; border: 1px dashed #93c5fd; }
/* The whole history (operator 2026-11-02): the line above the thread — "We've texted 7 times ·
   3 offers: $4,000 → $4,500 → $5,000" (an earlier blast's offer in grey) — and the divider before
   an earlier blast's texts (faded by .agent-inbox-msg-history). */
.agent-inbox-msummary { font-size: 12px; line-height: 1.45; color: #334155; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 6px; padding: 4px 8px; overflow-wrap: anywhere; }
.agent-inbox-msummary[hidden] { display: none; }
.agent-inbox-msum-offer { font-weight: 700; color: #0f172a; }
.agent-inbox-msum-offer.before { font-weight: 600; color: #64748b; }
.agent-inbox-mdivider { align-self: stretch; display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 600; color: #64748b; text-align: center; }
.agent-inbox-mdivider::before, .agent-inbox-mdivider::after { content: ''; flex: 1 1 12px; height: 1px; background: #cbd5e1; }
/* A seller's picture / recording (operator 2026-11-02, app.js _mMediaSlot): a thumbnail that
   opens full-screen (.agent-media-lightbox — a tap or Esc closes it), a video player, a voice
   message's Play button; never wider than the bubble. */
.agent-inbox-media { display: block; margin-top: 4px; max-width: 100%; white-space: normal; }
.agent-inbox-msg-text > .agent-inbox-media:first-child { margin-top: 0; }
.agent-inbox-media-pic { appearance: none; border: 0; padding: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: zoom-in; border-radius: 10px; }
.agent-inbox-media-pic img { display: block; max-width: min(220px, 100%); max-height: 180px; width: auto; height: auto; border-radius: 10px; object-fit: cover; background: #e2e8f0; }
.agent-inbox-media-vid { display: block; max-width: min(260px, 100%); max-height: 160px; border-radius: 10px; background: #0f172a; }
.agent-inbox-media-aud { display: block; max-width: 100%; }
.agent-inbox-media-wait { font-size: 12px; font-style: italic; opacity: 0.85; }
.agent-inbox-media-dl { color: inherit; font-weight: 700; text-decoration: underline; }
.agent-inbox-media-play { appearance: none; border: 1px solid #93c5fd; background: #fff; color: #1d4ed8; font: inherit; font-size: 12.5px; font-weight: 700; padding: 6px 12px; border-radius: 999px; cursor: pointer; max-width: 100%; text-align: left; overflow-wrap: anywhere; }
.agent-inbox-media-play:disabled { opacity: 0.6; cursor: progress; }
.agent-media-lightbox { position: fixed; inset: 0; z-index: 10200; display: flex; align-items: center; justify-content: center; padding: 12px; box-sizing: border-box; background: rgba(15, 23, 42, 0.92); cursor: zoom-out; }
.agent-media-lightbox[hidden] { display: none; }
.agent-media-lightbox-img { display: block; max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 6px; }
.agent-media-lightbox-close { position: absolute; top: 10px; right: 10px; width: 44px; height: 44px; border: 0; border-radius: 999px; background: rgba(255, 255, 255, 0.18); color: #fff; font-size: 20px; line-height: 1; cursor: pointer; }
.agent-inbox-mcomposer { display: flex; flex-direction: column; gap: 4px; }
.agent-inbox-mrow { display: flex; gap: 6px; align-items: flex-end; }
.agent-inbox-minput { flex: 1 1 auto; min-width: 0; min-height: 40px; max-height: 160px; resize: vertical; padding: 6px 8px; border: 1px solid #cbd5e1; border-radius: 8px; font: inherit; font-size: 13px; color: #0f172a; background: #fff; box-sizing: border-box; }
.agent-inbox-msend { flex: none; appearance: none; border: 1px solid #1d4ed8; background: #2563eb; color: #fff; font: inherit; font-size: 13px; font-weight: 700; padding: 8px 14px; border-radius: 8px; cursor: pointer; }
.agent-inbox-msend:disabled { opacity: 0.5; cursor: not-allowed; }
.agent-inbox-mhint { font-size: 11px; color: #64748b; }
.agent-inbox-mhint.blocked { color: #b91c1c; font-weight: 600; }
.agent-inbox-mdraftnote { font-size: 11px; font-weight: 600; color: #1d4ed8; }
.agent-inbox-mresolved { font-size: 12px; color: #475569; }
.agent-inbox-mcall { display: inline-flex; align-items: center; text-decoration: none; }
:is(.agent-inbox-mwarn, .agent-inbox-mreason, .agent-inbox-mearlier, .agent-inbox-mcomposer, .agent-inbox-mdraftnote, .agent-inbox-mresolved, .agent-inbox-mgroup-body)[hidden] { display: none; }
.agent-inbox-mgroup { display: flex; flex-direction: column; gap: 8px; }
.agent-inbox-mgroup-head { appearance: none; text-align: left; border: 1px dashed #cbd5e1; background: #f8fafc; color: #334155; font: inherit; font-size: 12px; font-weight: 600; padding: 6px 10px; border-radius: 8px; cursor: pointer; }
.agent-inbox-mgroup-body { display: flex; flex-direction: column; gap: 8px; }
.agent-tab-root.inbox-expanded .agent-inbox-mgroup { grid-column: 1 / -1; }
/* A browser take-over still running: one line, × stops it. */
.agent-takeover-strip { display: flex; flex-direction: column; gap: 4px; margin: 0 0 8px; }
.agent-takeover-strip.hidden { display: none; }
.agent-takeover-line { display: flex; align-items: center; gap: 8px; font-size: 12px; color: #475569; background: #f1f5f9; border: 1px solid #e2e8f0; border-radius: 8px; padding: 2px 2px 2px 10px; }
.agent-takeover-text { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.agent-takeover-stop { flex: none; appearance: none; border: 0; background: transparent; color: #64748b; font-size: 16px; line-height: 1; width: 28px; height: 28px; border-radius: 6px; cursor: pointer; }
.agent-takeover-stop:hover { background: #e2e8f0; color: #b91c1c; }
/* Blasts: one line pointing at the Inbox. */
.agent-mny-pointer { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.agent-blast-sent-more { align-self: flex-start; appearance: none; border: 1px solid #e2e8f0; background: #fff; color: #334155; font: inherit; font-size: 12px; font-weight: 600; padding: 4px 12px; border-radius: 6px; cursor: pointer; }
/* Agent Inbox texts: did it reach their phone (the carrier's word). */
.agent-inbox-dlv[data-dlv=delivered] { color: #15803d; }
.agent-inbox-dlv[data-dlv=failed] { color: #b91c1c; font-weight: 600; }
/* Blasts / Lists / DocuSigns / Follow-ups sit flush in that box — the box is
   the card, no second border inside it. */
body.ui-v2 #chatViewAgent #agentPanelsOverlay .agent-section {
  border: 0; border-radius: 0; box-shadow: none; margin: 0; background: transparent;
}
/* + New window. */
body.ui-v2 #newWin:not([hidden]) { border-color: #9aa5b1; box-shadow: 0 16px 40px rgba(17, 24, 39, 0.28); }
body.ui-v2 #newWin .nw-bar { background: #eef1f5; border-bottom-color: var(--nb-card-border); }
body.ui-v2 .nw-menu, body.ui-v2 .nb-more-group { border-color: var(--nb-card-border); box-shadow: var(--nb-card-shadow); }

/* + New: the content column; with a fixed height (bottom edge dragged) or
   Fill the screen, the draft PDF stretches to use the room. */
body.ui-v2 #newWin .nw-body { display: flex; flex-direction: column; }
body.ui-v2 #newWin .nw-body > * { flex: none; }
body.ui-v2 #newWin.nw-fixedh .pdf-preview-wrap,
body.ui-v2 #newWin.nw-max .pdf-preview-wrap { flex: 1 0 300px; display: flex; flex-direction: column; }
body.ui-v2 #newWin.nw-fixedh .pdf-preview-frame,
body.ui-v2 #newWin.nw-max .pdf-preview-frame { flex: 1 1 auto; height: auto !important; min-height: 300px; }
@media (max-width: 900px) {
  /* Phone sheet: as tall as its content, never taller than the screen. */
  body.ui-v2 #newWin.nw-sheet:not([hidden]) {
    top: auto; height: auto;
    max-height: calc(100dvh - 8px - var(--nb-pbar) - var(--nb-strip, 0px) - env(safe-area-inset-bottom));
  }
}

/* Purchase agreement: the address-only lookup note. */
.psa-lookup-hint {
  font-size: 12.5px; line-height: 1.45; color: #0a3069; background: #ddf4ff; border: 1px solid #9cd0ff;
  border-radius: 8px; padding: 8px 10px; margin: -2px 0 2px;
}
.psa-optional { text-transform: none; font-weight: 400; color: var(--text-dim); }

/* The Hub wrapper paints white; let the tinted page show behind the cards. */
body.ui-v2 #hubTasksShell { background: var(--nb-page); border: 0; box-shadow: none; }

/* + New: Send to title / Terminate / Title companies inside the window. */
.nw-mail-intro { margin: 0 0 10px; font-size: 12.5px; color: var(--text-dim); line-height: 1.45; }
.nw-mail-filter { width: 100%; margin-bottom: 10px; }
.nw-mail-group + .nw-mail-group { margin-top: 12px; }
.nw-mail-group-h { display: flex; align-items: center; gap: 6px; margin: 0 2px 6px; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--text-dim); }
.nw-mail-group-h span { font-weight: 600; background: var(--panel-2); border-radius: 999px; padding: 0 7px; letter-spacing: 0; }
.nw-mail-row .nw-menu-sub { overflow-wrap: anywhere; }
.nw-add-row .nw-menu-title { color: #2e7d32; }
#nwBody .preview-grid { margin-top: 0; }
#nwBody .preview-grid dd { min-width: 0; }
#nwBody .preview-grid { grid-template-columns: 96px minmax(0, 1fr); }
#nwBody .cc-add-controls { flex-wrap: wrap; }
#nwBody .cc-dropdown, #nwBody .cc-manual-row { flex: 1 1 200px; min-width: 0; }
#nwBody .cc-manual-input { min-width: 0; width: 100%; }
#nwBody .cc-add-btn { flex: none; }
#nwBody .file-chip { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 900px) {
  /* Phone: each label sits above its value so chips and inputs get the full width. */
  #nwBody .preview-grid { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  #nwBody .preview-grid dt { padding-top: 10px; }
}
#nwBody .create-form { max-width: none !important; }
.nw .btn-send.nw-danger { background: #c62828; border-color: #c62828; color: #fff; }
.nw .btn-send.nw-danger:hover:not(:disabled) { background: #a61f1f; border-color: #a61f1f; }

/* Phone PDF viewer (app.js renderPdfPages): every page of a draft, drawn at
   the box's width, instead of an <iframe> phones can't show. */
.pdf-pages-host { background: #e9edf2 !important; padding: 8px; }
.pdf-pages-bar {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 0 2px 8px; font-size: 12.5px; color: var(--text-dim);
}
.pdf-pages-open { font-weight: 600; color: var(--accent); text-decoration: none; white-space: nowrap; }
.pdf-pages { display: flex; flex-direction: column; gap: 8px; }
.pdf-pages canvas.pdf-page {
  display: block; width: 100%; height: auto; background: #fff;
  border-radius: 2px; box-shadow: 0 1px 3px rgba(15, 23, 42, 0.18);
}
.pdf-modal .pdf-modal-pages { flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; }
@media (max-width: 900px) {
  .pdf-modal { width: 100vw; height: 100dvh; max-width: none; border-radius: 0; }
}


/* ════════════════════════════════════════════════════════════════════════
   PHONE COMPACT (2026-10-28) — one size scale for the phone layout.
   Everything that styles existing screens sits inside @media (max-width:
   900px) and is scoped to body.ui-v2 (and mostly #newWin.nw-sheet, a class
   ui2.js only sets when isPhone()). Desktop (>900px) never matches.
   Inputs keep 16px text (iOS zooms below that); nothing tappable < 34px.
   ════════════════════════════════════════════════════════════════════════ */
@media (max-width: 900px) {
  /* ── 0. The scale ─────────────────────────────────────────────────── */
  body.ui-v2 {
    --p-btn-h: 34px;     /* in-content buttons, chips, row actions (= tap floor; was 40-44) */
    --p-btn-fs: 12.5px;
    --p-cta-h: 38px;     /* + New footer actions (was 44) */
    --p-cta-fs: 13px;
    --p-input-h: 36px;   /* 16px text: 22px line + 2x6px padding + 2px border (was 44) */
    --p-input-px: 10px;
    --p-ib: 36px;        /* sheet title-bar / strip icon buttons (was 40) */
    --p-pad: 10px;       /* card / fieldset / section padding (was 12-18) */
    --p-gap: 8px;        /* form + card gaps (was 9-14) */
    --p-foot-pad: 8px;
    --p-foot-h: calc(var(--p-cta-h) + 2 * var(--p-foot-pad) + 1px);   /* 55px (was 65) */
  }

  /* ── 1. Inputs: 16px everywhere in the phone layout (styles.css only
        floors it up to 700px; landscape phones are 701-900px) ─────────── */
  body.ui-v2 input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),
  body.ui-v2 select,
  body.ui-v2 textarea { font-size: 16px !important; }

  /* ── 2. + New sheet chrome: title bar 50→40px, footer 65→55px ──────── */
  body.ui-v2 #newWin.nw-sheet .nw-grab { margin-top: 6px; }
  body.ui-v2 #newWin.nw-sheet .nw-bar { padding: 2px 4px 2px 6px; }
  body.ui-v2 #newWin.nw-sheet .nw-ib { min-width: var(--p-ib); min-height: var(--p-ib); }
  body.ui-v2 #newWin.nw-sheet .nw-title {
    font-size: 15px; line-height: 1.25; white-space: normal;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  }
  body.ui-v2 #newWin.nw-sheet .nw-body { padding: var(--p-pad) 12px; }
  body.ui-v2 #newWin.nw-sheet .nw-actions:not([hidden]) { padding: var(--p-foot-pad) 10px; gap: var(--p-gap); flex-wrap: nowrap; }
  body.ui-v2 #newWin.nw-sheet .nw-actions .btn {
    flex: 1 1 0; min-width: 0; height: var(--p-cta-h); min-height: 0; padding: 0 10px; border-radius: 9px;
    font-size: var(--p-cta-fs); letter-spacing: .3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  body.ui-v2 #newWin.nw-sheet .nw-actions #nwSendBtn { flex-grow: 2; }
  /* Footer BACK = the title bar's ← (same createOnBack): hidden on phones
     (app.js setCreateActionBar tags it .nw-dup-back). A footer with nothing
     else left in it goes away. */
  body.ui-v2 #newWin.nw-sheet #nwCancelBtn.nw-dup-back { display: none; }
  body.ui-v2 #newWin.nw-sheet .nw-actions:not(:has(> .btn:not([hidden]):not(.nw-dup-back):not([style*="display: none"]))) { display: none !important; }

  /* ── 3. Toast: full width (left:50% capped it at half the screen), never
        catches a tap, sits above the sheet footer / tucked strip ───────── */
  body.ui-v2 .toast {
    left: 12px; right: 12px; transform: none; width: -webkit-fit-content; width: fit-content; max-width: none;
    margin: 0 auto; padding: 9px 14px; text-align: center; line-height: 1.35; pointer-events: none;
  }
  body.ui-v2.nw-open .toast { bottom: calc(var(--nb-pbar) + var(--nb-strip, 0px) + env(safe-area-inset-bottom) + var(--p-foot-h) + 8px); }
  body.ui-v2.nw-tucked .toast { bottom: calc(var(--nb-pbar) + var(--nb-strip, 0px) + env(safe-area-inset-bottom) + 64px); }

  /* ── 4. Draft screen: two compact cards, then the pages edge to edge ─ */
  body.ui-v2 #newWin.nw-sheet #nwBody .create-result { padding: 8px var(--p-pad); gap: 6px; border-radius: 8px; font-size: 13px; }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-result + .create-result { margin-top: var(--p-gap) !important; gap: 2px; }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-result .result-path {
    font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; word-break: normal;
    direction: rtl; text-align: left;            /* keeps the file name, cuts the folders */
  }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-result .result-actions { flex-direction: row !important; flex-wrap: nowrap; gap: 6px; }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-result .result-actions .btn {
    flex: 1 1 0; width: auto !important; min-width: 0; height: var(--p-btn-h); min-height: var(--p-btn-h) !important; padding: 0 4px;
    font-size: 11.5px; letter-spacing: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  body.ui-v2 #newWin.nw-sheet #nwBody #docusignStatus { margin-top: 2px !important; }
  body.ui-v2 #newWin.nw-sheet #nwBody .ds-queue-status { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
  body.ui-v2 #newWin.nw-sheet #nwBody #dsCancelBtn { height: var(--p-btn-h); min-height: var(--p-btn-h); padding: 0 12px; }
  body.ui-v2 #newWin.nw-sheet #nwBody .pdf-preview-wrap.pdf-pages-host {
    margin: var(--p-gap) -12px 0 !important; border-radius: 0 !important; border-width: 1px 0 !important; padding: 6px 4px;
  }
  body.ui-v2 #newWin.nw-sheet #nwBody .pdf-pages-bar { padding: 0 4px 6px; }
  body.ui-v2 .pdf-pages-open {
    display: inline-flex; align-items: center; min-height: var(--p-btn-h); padding: 0 12px; border-radius: 8px;
    background: #fff; border: 1px solid var(--border-strong);
  }

  /* ── 5. Pickers (PSA type, Assignment preset): 54→42px rows ─────────── */
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form > .mode-btn:is([data-psa-type], [data-preset]) {
    height: auto !important; min-height: 42px !important; padding: 8px 14px !important;
  }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form > .mode-btn:is([data-psa-type], [data-preset]) .mode-title { font-size: 15px !important; }

  /* ── 6. Forms (PSA, Assignment, buyer + title-company editors) ───────── */
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form { gap: var(--p-gap) !important; }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form label:not(.inline) { display: block; font-size: 11px; line-height: 1.3; }
  /* "(no $)" / "($)" stays on its label's line; the field goes under it. */
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form label:not(.inline) > :is(input:not([type="checkbox"]):not([type="radio"]), select, textarea) { display: block; margin-top: 3px; }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form :is(input:not([type]), input[type="text"], input[type="tel"], input[type="email"], input[type="date"], input[type="number"], input[type="search"], select) {
    height: var(--p-input-h); min-height: var(--p-input-h) !important; padding: 6px var(--p-input-px) !important; line-height: 22px;
  }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form textarea { min-height: 60px !important; padding: 6px var(--p-input-px) !important; line-height: 22px; }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form fieldset { padding: 4px var(--p-pad) var(--p-pad) !important; margin: 2px 0 0; }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form legend { font-size: 11px; padding: 0 4px; }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form .inner-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; gap: 6px var(--p-gap) !important; margin-top: 0; align-items: end;
  }
  /* The desktop grid spacer (<label>&nbsp;</label>) is an empty row on a phone. */
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form > label:not(.inline):not(:has(input, select, textarea)) { display: none; }
  body.ui-v2 #newWin.nw-sheet #nwBody .field-input { height: var(--p-input-h); min-height: var(--p-input-h); padding: 6px var(--p-input-px); }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form > .result-actions .btn { height: var(--p-cta-h); min-height: 0; padding: 0 16px; white-space: nowrap; }

  /* Preset (Max/Mason) + PSA Type chips: 40→34px, one row. */
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form .preset-row { gap: 5px; row-gap: 5px; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form .preset-row::-webkit-scrollbar { display: none; }
  body.ui-v2 #newWin.nw-sheet #nwBody .create-form .preset-row > span:first-child { font-size: 11px !important; margin-right: 2px; }
  body.ui-v2 #newWin.nw-sheet #nwBody .preset-chip {
    flex: none; height: var(--p-btn-h); min-height: var(--p-btn-h); padding: 0 8px; font-size: var(--p-btn-fs);
    border-width: 1.5px; letter-spacing: 0; white-space: nowrap;
  }

  /* PSA: Parcel ID | Closing days and Price | Earnest money share a row. */
  body.ui-v2 #newWin.nw-sheet #nwBody #psaForm.create-form { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; column-gap: var(--p-gap) !important; }
  body.ui-v2 #newWin.nw-sheet #nwBody #psaForm > * { grid-column: 1 / -1; }
  body.ui-v2 #newWin.nw-sheet #nwBody #psaForm:has(> label > input[name="closing_days"]) > label:has(> input[name="parcel_id"]) { grid-column: span 4; }
  body.ui-v2 #newWin.nw-sheet #nwBody #psaForm > label:has(> input[name="closing_days"]) { grid-column: span 2; }
  body.ui-v2 #newWin.nw-sheet #nwBody #psaForm > label:has(> input[name="purchase_price"]),
  body.ui-v2 #newWin.nw-sheet #nwBody #psaForm > label:has(> input[name="earnest_money"]) { grid-column: span 3; }
  /* PSA: Propstream hint, short phone copy (app.js adds both spans). */
  body.ui-v2 #newWin.nw-sheet #nwBody .psa-lookup-hint { font-size: 12px; line-height: 1.35; padding: 6px 9px; margin: 0; }
  body.ui-v2 #newWin.nw-sheet #nwBody .psa-hint-long { display: none; }
  body.ui-v2 #newWin.nw-sheet #nwBody .psa-hint-short { display: inline; }
  /* PSA: Sellers 2-4 behind "+ Add seller N" (app.js _phoneCollapseOptionalSellers). */
  body.ui-v2 #newWin.nw-sheet #nwBody fieldset.nw-seller-closed { display: none; }
  body.ui-v2 #newWin.nw-sheet #nwBody .nw-seller-add {
    display: block; grid-column: 1 / -1; height: var(--p-input-h); padding: 0 12px; text-align: left; font-size: 13px; font-weight: 600;
    color: var(--accent); background: transparent; border: 1px dashed var(--border-strong); border-radius: 8px;
  }
  body.ui-v2 #newWin.nw-sheet #nwBody .nw-seller-add ~ .nw-seller-add { display: none; }

  /* Assignment: short fields pair up, one-line textareas, 2x2 type chips. */
  body.ui-v2 #newWin.nw-sheet #nwBody #assignmentForm { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important; }
  body.ui-v2 #newWin.nw-sheet #nwBody #assignmentForm .asg-help { display: none; }
  body.ui-v2 #newWin.nw-sheet #nwBody #assignmentForm textarea {
    height: var(--p-input-h); min-height: var(--p-input-h) !important; padding: 6px var(--p-input-px) !important; resize: none; overflow: hidden;
  }
  body.ui-v2 #newWin.nw-sheet #nwBody #assignmentForm .inner-grid { grid-auto-flow: row dense; }
  body.ui-v2 #newWin.nw-sheet #nwBody #assignmentForm .inner-grid > label:is(.full, :has(> [name$="_COMPANY"], > [name$="_EMAIL"])) { grid-column: 1 / -1; }
  body.ui-v2 #newWin.nw-sheet #nwBody #assignmentForm .buyer-preset-picker { margin-bottom: 6px !important; }
  body.ui-v2 #newWin.nw-sheet #nwBody #assignmentForm .preset-row:has(.type-chip) {
    display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 6px; overflow: visible;
  }
  body.ui-v2 #newWin.nw-sheet #nwBody #assignmentForm .preset-row:has(.type-chip) > span:first-child { display: none; }
  body.ui-v2 #newWin.nw-sheet #nwBody #assignmentForm .type-chip { overflow: hidden; text-overflow: ellipsis; }

  /* Edit buyers: list on top, editor below (was 280px list + 40px-wide inputs). */
  body.ui-v2 #newWin.nw-sheet #nwBody > div:has(> #buyerMgmtEditor) { flex-direction: column; height: auto !important; min-height: 0 !important; }
  body.ui-v2 #newWin.nw-sheet #nwBody > div:has(> #buyerMgmtEditor) > div:first-child { width: auto !important; border-right: 0 !important; overflow: visible !important; }
  body.ui-v2 #newWin.nw-sheet #buyerMgmtEditor { padding: 12px 0 4px !important; overflow: visible !important; border-top: 1px solid var(--border); margin-top: 8px; }

  /* Email chips (title company form): the remove x was hover-only. */
  body.ui-v2 #newWin.nw-sheet .email-bubble { padding: 2px 2px 2px 10px; }
  body.ui-v2 #newWin.nw-sheet .email-bubble-x {
    color: #d1242f; display: inline-flex; align-items: center; justify-content: center;
    min-width: 34px; min-height: 34px; margin: -6px 0 -6px -4px; font-size: 17px;
  }
  body.ui-v2 #newWin.nw-sheet #addEmailBtn { height: var(--p-input-h); min-height: 0; }

  /* Saved drafts: one-line rows, 36px city headers. */
  body.ui-v2 #newWin.nw-sheet .saved-draft-row { padding: 7px 10px !important; margin-bottom: 4px !important; }
  body.ui-v2 #newWin.nw-sheet .saved-draft-row > div:first-child { flex-wrap: nowrap !important; }
  body.ui-v2 #newWin.nw-sheet .saved-draft-row > div:first-child > div:first-child { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  body.ui-v2 #newWin.nw-sheet .saved-draft-row > div:first-child > div:last-child { flex: none; }
  body.ui-v2 #newWin.nw-sheet .saved-drafts-city > summary { min-height: 36px; box-sizing: border-box; }

  /* ── 7. + New menu rows, Send to title / Terminate ──────────────────── */
  body.ui-v2 #nwBody .nw-menu-row { padding: 9px 12px; }
  body.ui-v2 #nwBody .nw-mail-intro { font-size: 12px; margin-bottom: 8px; }
  body.ui-v2 #nwBody .nw-mail-filter { padding: 0 10px; border: 1px solid var(--border-strong); border-radius: 8px; margin-bottom: 8px; }
  body.ui-v2 #nwBody .nw-mail-row .nw-menu-sub { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; overflow-wrap: normal; }
  body.ui-v2 #nwBody .route-line { padding: 6px 10px; margin-bottom: 4px; font-size: 12.5px; border-radius: 8px; }
  body.ui-v2 #nwBody .preview-grid { grid-template-columns: auto minmax(0, 1fr); column-gap: 10px; row-gap: 2px; }
  body.ui-v2 #nwBody .preview-grid > dt,
  body.ui-v2 #nwBody .preview-grid > dd { grid-column: 1 / -1; }
  body.ui-v2 #nwBody .preview-grid > dt { padding-top: 8px; font-size: 11px; }
  /* From and Subject: label left, value right, one line each. */
  body.ui-v2 #nwBody .preview-grid > dt:nth-of-type(1),
  body.ui-v2 #nwBody .preview-grid > dt:nth-of-type(4) { grid-column: 1; align-self: center; }
  body.ui-v2 #nwBody .preview-grid > dd:nth-of-type(1),
  body.ui-v2 #nwBody .preview-grid > dd:nth-of-type(4) { grid-column: 2; padding-top: 8px; }
  body.ui-v2 #nwBody .addr-chip { padding: 2px 2px 2px 9px; }
  body.ui-v2 #nwBody .addr-chip.from,
  body.ui-v2 #nwBody .addr-chip.cc:not(.cc-removable) { padding-right: 9px; }
  body.ui-v2 #nwBody .to-remove-btn,
  body.ui-v2 #nwBody .cc-remove-btn {
    min-width: 34px; min-height: 34px; margin: -8px 0 -8px -6px; padding: 0;
    font-size: 17px; line-height: 1; opacity: .75; background: transparent; border: 0;
  }
  /* Picker + typed address share one row. */
  body.ui-v2 #nwBody .cc-dropdown { flex: 1 1 0; min-width: 0; }
  body.ui-v2 #nwBody .cc-manual-row { flex: 1.3 1 0; min-width: 0; }
  body.ui-v2 #nwBody .cc-dropdown,
  body.ui-v2 #nwBody .cc-manual-input,
  body.ui-v2 #nwBody .cc-add-btn { height: var(--p-input-h); }
  body.ui-v2 #nwBody .body-editable { min-height: 92px; padding: 8px 10px; line-height: 1.35; }
  body.ui-v2 #nwBody .file-chip {
    display: flex; align-items: center; min-height: var(--p-btn-h); padding: 4px 10px; font-size: 12px;
    white-space: normal; overflow-wrap: anywhere; text-overflow: clip;
  }
  body.ui-v2 #newWin.nw-sheet .warning-strip:not([hidden]) { padding: 7px 12px; font-size: 12.5px; }
  body.ui-v2 #newWin.nw-sheet .warning-strip ul { margin: 2px 0 0 16px; }

  /* ── 8. Hub ─────────────────────────────────────────────────────────── */
  body.ui-v2 #hubTasksShell { padding: 0; }
  body.ui-v2 .hv2 { padding: 8px 8px 12px; }
  body.ui-v2 .hv2-monthbar { margin-bottom: 6px; padding: 0 2px; }
  body.ui-v2 .hv2-grid, body.ui-v2 .hv2-col { gap: var(--p-gap); }
  body.ui-v2 .hv2-card { padding: var(--p-pad); }
  body.ui-v2 .hv2-h { margin-bottom: 2px; }
  body.ui-v2 .hv2-row { padding: 7px 0; gap: 8px; }
  body.ui-v2 .hv2-btn { height: var(--p-btn-h); padding: 0 12px; font-size: var(--p-btn-fs); }
  body.ui-v2 .hv2-link { min-height: var(--p-btn-h); padding: 0 4px; }
  body.ui-v2 #hv2Voice .hv2-voice { min-height: 40px; padding: 6px 10px; }
  body.ui-v2 .hv2-voice-cta { padding: 6px 14px; }
  /* Money tiles: Net profit on one line (109→61px). */
  body.ui-v2 .hv2-kpis.hub-kpi-strip { gap: 6px; margin-bottom: 8px; }
  body.ui-v2 .hv2-kpis .hv2-kpi { padding: 7px 9px; }
  body.ui-v2 .hv2-kpis .hv2-kpi-net {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "l s" "u s";
    align-items: center; column-gap: 10px;
  }
  body.ui-v2 .hv2-kpis .hv2-kpi-net .hv2-kpi-label { grid-area: l; }
  body.ui-v2 .hv2-kpis .hv2-kpi-net .hv2-kpi-stat { grid-area: s; margin: 0; font-size: 22px; }
  body.ui-v2 .hv2-kpis .hv2-kpi-net .hv2-kpi-sub { grid-area: u; }
  body.ui-v2 .hv2-kpis .hv2-kpi:not(.hv2-kpi-net) .hv2-kpi-stat { margin: 0; }
  /* Calendar: 7 equal columns, 34px cells. */
  body.ui-v2 #hv2Calendar .hub-closed-cal-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
  body.ui-v2 #hv2Calendar .hub-closed-cal-cell { min-height: 34px; padding: 2px 3px; }
  body.ui-v2 #hv2Calendar .hub-closed-cal-weekday { padding: 2px 0; }
  body.ui-v2 #hv2Calendar .hub-closed-cal-amount { font-size: 9.5px; letter-spacing: -.2px; max-width: 100%; overflow: hidden; text-overflow: clip; white-space: nowrap; }
  body.ui-v2 #hv2Calendar .hub-closed-cal-money { row-gap: 2px; margin-bottom: 6px; }
  body.ui-v2 #hv2Calendar .hub-closed-cal-nav,
  body.ui-v2 #hv2Calendar .hub-closed-cal-chip-mkt,
  body.ui-v2 #hv2Calendar .hub-closed-drill-close { min-height: var(--p-btn-h); min-width: var(--p-btn-h); }
  /* Older Hub blocks + Pipeline: up to 34px, not bigger. */
  body.ui-v2 .hv2 .hub-skiptrace-stop,
  body.ui-v2 .hv2 .hub-stranded-btn,
  body.ui-v2 .hv2 .hub-comingup-add-btn,
  body.ui-v2 .hub-pipeline-row-action,
  body.ui-v2 .hub-pipeline-chip,
  body.ui-v2 .hv2 .hub-escrow-drill-close-btn,
  body.ui-v2 .hv2 .hub-marketing-sync-btn { min-height: var(--p-btn-h); font-size: 12px; }
  body.ui-v2 .hub-pipeline-row-action { padding: 6px 12px; }
  body.ui-v2 .hv2 .hub-stranded-x,
  body.ui-v2 .hv2 .hub-comingup-done { min-width: var(--p-btn-h); min-height: var(--p-btn-h); }
  body.ui-v2 .hv2 .hub-comingup-form { flex-wrap: wrap; gap: 6px; }
  body.ui-v2 .hv2 #hubRemText { flex: 1 1 100%; }
  body.ui-v2 .hv2 #hubRemDate { flex: 1 1 auto; min-width: 0; }
  body.ui-v2 .hv2 #hubRemText, body.ui-v2 .hv2 #hubRemDate, body.ui-v2 .hv2 #hubRemSave { min-height: var(--p-btn-h); }
  body.ui-v2 .hv2 #hubNumHealthRefresh { display: inline-flex; align-items: center; justify-content: center; min-width: var(--p-btn-h); min-height: var(--p-btn-h); margin: -6px 0; }
  /* In escrow: the Close button sat 30-48px off the right edge. */
  body.ui-v2 .hv2 .hub-escrow-drill-main { flex-wrap: wrap; gap: 6px 8px; }
  body.ui-v2 .hv2 .hub-escrow-drill-main .hub-closed-drill-street { flex: 1 1 100%; }
  body.ui-v2 .hv2 .hub-escrow-drill-files { flex: 1 1 auto; min-width: 0; }
  body.ui-v2 .hv2 .hub-escrow-drill .hub-closed-drill-fee-input { width: 104px; height: var(--p-btn-h); margin-left: 0; }
  body.ui-v2 .hv2-pipeline .hub-pipeline-header { display: none; }
  body.ui-v2 .hv2-pipeline .hub-pipeline-row { gap: 6px; }

  /* ── 9. Agent ───────────────────────────────────────────────────────── */
  body.ui-v2 #chatViewAgent .agent-tab-root { padding: 6px; }
  body.ui-v2 .agent-v2-pills { gap: 4px; padding: 0 0 6px; scrollbar-width: none; }
  body.ui-v2 .agent-v2-pills::-webkit-scrollbar { display: none; }
  body.ui-v2 .agent-v2-pill { min-height: var(--p-btn-h); padding: 0 7px; font-size: 12px; gap: 3px; flex: 0 0 auto; }
  body.ui-v2 .agent-v2-pill .agent-v2-count { font-size: 10px; line-height: 15px; min-width: 15px; padding: 0 4px; }
  body.ui-v2 #chatViewAgent .agent-tab-body { gap: 6px; }
  /* No take-over running: no empty Inbox card, no blank status line. */
  body.ui-v2 #chatViewAgent .agent-tab-left:has(.agent-inbox-empty):not(:has(#agentProposalsWidget:not(.hidden))):has(#agentStatusLine:empty) { display: none; }
  body.ui-v2 #chatViewAgent #agentStatusLine:empty { display: none; }
  /* A running take-over: one scroller, not a box in a box. */
  body.ui-v2 #chatViewAgent .agent-tab-left { max-height: 45%; }
  body.ui-v2 #chatViewAgent .agent-inbox { padding: 8px 10px; }
  body.ui-v2 #chatViewAgent .agent-inbox-cards { max-height: none; overflow: visible; padding-right: 0; }
  body.ui-v2 #chatViewAgent .agent-tab-root.inbox-expanded .agent-inbox-cards { grid-template-columns: minmax(0, 1fr); }
  body.ui-v2 #chatViewAgent .agent-inbox-expand,
  body.ui-v2 #chatViewAgent .agent-inbox-mode-toggle,
  body.ui-v2 #chatViewAgent .agent-inbox-stop-btn { min-height: var(--p-btn-h); }
  body.ui-v2 #chatViewAgent .agent-inbox-stop-btn { min-width: var(--p-btn-h); }
  body.ui-v2 #chatViewAgent .agent-chat-col { padding: 6px 8px 8px; }
  body.ui-v2 #chatViewAgent .agent-tab-right > .agent-section-title { display: none; }
  body.ui-v2 #chatViewAgent .agent-directive-thread { margin-bottom: 6px; }
  body.ui-v2 #chatViewAgent .agent-card-action { min-height: var(--p-btn-h); display: inline-flex; align-items: center; }
  body.ui-v2 #chatViewAgent .agent-directive-msg-bubble:has(> .chat-copy-btn) { position: relative; padding-right: 30px; }
  body.ui-v2 #chatViewAgent .agent-directive-msg-bubble > .chat-copy-btn { position: absolute; top: 0; right: 0; width: var(--p-btn-h); height: var(--p-btn-h); margin: 0; }
  body.ui-v2 #chatViewAgent #agentPanelsOverlay .agent-section { padding: 8px var(--p-pad); }
  body.ui-v2 #chatViewAgent #agentPanelsOverlay .agent-section-title { display: none; }
  body.ui-v2 #chatViewAgent .agent-completion-path { display: none; }
  body.ui-v2 #chatViewAgent .agent-blast-row { flex-wrap: wrap; row-gap: 6px; }
  body.ui-v2 #chatViewAgent .agent-blast-name { flex: 1 1 100%; }
  body.ui-v2 #chatViewAgent .agent-blast-actions { flex-wrap: wrap; }
  body.ui-v2 #chatViewAgent :is(.agent-blast-modebtn, .agent-blast-edit-btn, .agent-blast-approve, .agent-blast-cancel, .agent-blast-retry,
    .agent-blast-regen, .agent-blast-num-refresh, .agent-blast-edit-save, .agent-blast-edit-cancel, .agent-split-btn, .agent-split-dl,
    .agent-split-send, .agent-split-sendact, .agent-docusign-btn-text, .agent-docusign-btn-signed, .agent-drip-cancel) {
    min-height: var(--p-btn-h); font-size: 12px; padding-top: 0; padding-bottom: 0;
  }
  body.ui-v2 #chatViewAgent .agent-blast-regen { white-space: nowrap; }
  /* Blast edit: one column (Rate + Blast name were off the right edge). */
  body.ui-v2 #chatViewAgent .agent-blast-edit-grid { grid-template-columns: minmax(0, 1fr); }
  body.ui-v2 #chatViewAgent .agent-blast-edit-grid input,
  body.ui-v2 #chatViewAgent .agent-blast-edit-number { width: 100%; min-width: 0; height: var(--p-input-h); }
  body.ui-v2 #chatViewAgent .agent-blast-edit-msg { min-height: 132px; }
  /* Agent handles replies: checkbox on its own line, price + Save under it. */
  body.ui-v2 #chatViewAgent .agent-blast-manage-on { flex: 1 1 100%; min-height: var(--p-btn-h); }
  body.ui-v2 #chatViewAgent .agent-blast-manage-on input { width: 20px; height: 20px; }
  body.ui-v2 #chatViewAgent .agent-blast-manage-price { width: 120px; height: var(--p-input-h); font-size: 16px; }
  body.ui-v2 #chatViewAgent .agent-blast-manage-num { width: 110px !important; height: var(--p-input-h); font-size: 16px; }
  body.ui-v2 #chatViewAgent .agent-blast-manage-notes { font-size: 16px; min-height: 64px; }
  body.ui-v2 #chatViewAgent .agent-pkg select { height: var(--p-input-h); font-size: 16px; width: 100%; }
  body.ui-v2 #chatViewAgent :is(.agent-blast-manage-save, .agent-blast-manage-pause, .agent-blast-sent-more, .agent-mny-btn) { min-height: var(--p-btn-h); }
  body.ui-v2 #chatViewAgent .agent-mny-reason { margin-left: 0; flex-basis: 100%; }
  body.ui-v2 #chatViewAgent .agent-pkg-owner { grid-template-columns: minmax(0, 1fr); }
  body.ui-v2 #chatViewAgent .agent-pkg input { height: var(--p-input-h); font-size: 16px; width: 100%; }
  body.ui-v2 #chatViewAgent .agent-mny-approve { min-height: var(--p-btn-h); flex: 1 1 100%; }
  /* Inbox cards: 16px text box (no iOS zoom), finger-sized buttons. */
  body.ui-v2 #chatViewAgent .agent-inbox-minput { font-size: 16px; min-height: 64px; }
  body.ui-v2 #chatViewAgent :is(.agent-inbox-msend, .agent-inbox-mcall, .agent-inbox-mgroup-head, .agent-inbox-mearlier) { min-height: var(--p-btn-h); }
  body.ui-v2 #chatViewAgent .agent-inbox-mstate { margin-left: 0; white-space: normal; }
  body.ui-v2 #chatViewAgent .agent-inbox-mpaused { white-space: normal; }
  body.ui-v2 #chatViewAgent .agent-inbox-mthread .agent-inbox-msg { max-width: 92%; }
  body.ui-v2 #chatViewAgent .agent-inbox-media-play { min-height: var(--p-btn-h); }
  body.ui-v2 #chatViewAgent .agent-takeover-stop { width: var(--p-btn-h); height: var(--p-btn-h); }
  body.ui-v2 #chatViewAgent .agent-blast-manage-state { flex-basis: 100%; }
  body.ui-v2 #chatViewAgent .agent-blast-sent-when { margin-left: 0; }

  /* ── 10. Voice room (all phones): one 46px row per person ───────────── */
  body.ui-v2 #chatViewPublic .vc-blocks {
    flex-direction: column; flex-wrap: nowrap; align-content: stretch; justify-content: flex-start; gap: 6px; padding: 8px; overflow-y: auto;
  }
  body.ui-v2 #chatViewPublic .vc-user-block {
    width: 100%; height: 46px; flex: none; flex-direction: row; justify-content: flex-start; gap: 10px; padding: 0 8px 0 10px; border-radius: 10px;
  }
  body.ui-v2 #chatViewPublic .vc-user-block:hover { transform: none; }
  body.ui-v2 #chatViewPublic .vc-user-block-avatar { width: 30px; height: 30px; font-size: 12px; flex: none; }
  body.ui-v2 #chatViewPublic .vc-user-block-name {
    position: static; transform: none; background: none; -webkit-backdrop-filter: none; backdrop-filter: none;
    padding: 0; border: 0; border-radius: 0; max-width: none; flex: 1 1 auto; min-width: 0; font-size: 14px; display: block; text-align: left;
  }
  body.ui-v2 #chatViewPublic .vc-user-block-name .vc-status-icon { vertical-align: -2px; margin-left: 4px; }
  body.ui-v2 #chatViewPublic .vc-user-block-volume { position: static; flex: 0 0 128px; padding: 2px 6px; }
  body.ui-v2 #chatViewPublic .vc-user-block-volume-pct { display: none; }
  body.ui-v2 #chatViewPublic .vc-user-block-volume-reset { width: 26px; height: 26px; }
  body.ui-v2 #chatViewPublic .vc-user-block-kick { position: static; opacity: 1; flex: none; width: var(--p-btn-h); height: var(--p-btn-h); }
  body.ui-v2 #chatViewPublic .vc-channel-row { min-height: 36px; }
  body.ui-v2 #chatViewPublic .vc-chat-send { width: 36px; height: 36px; }
  body.ui-v2 #chatViewPublic #vcToolbar { display: none !important; }   /* the strip above the bar has the same controls */

  /* ── 11. Texting ────────────────────────────────────────────────────── */
  body.ui-v2 .sendivo-persistent.nb-phone-crm .crm-toolbar { padding: 6px 8px; gap: 6px; }
  body.ui-v2 .sendivo-persistent.nb-phone-crm .crm-toolbar-pin { display: none; }
  body.ui-v2 .sendivo-persistent.nb-phone-crm .crm-addr-input { order: 1; flex: 1 1 auto; min-width: 0; height: var(--p-input-h); }
  body.ui-v2 .sendivo-persistent.nb-phone-crm .crm-map-btn { order: 2; height: var(--p-input-h); padding: 0 12px; display: inline-flex; align-items: center; gap: 5px; }
  body.ui-v2 .sendivo-persistent.nb-phone-crm .crm-map-btn span { font-size: 0; }
  body.ui-v2 .sendivo-persistent.nb-phone-crm .crm-map-btn span::after { content: 'Map'; font-size: 14px; }
  body.ui-v2 .nb-open-sendivo { padding: 12px 14px; }
  body.ui-v2 .nb-open-sendivo-btn { height: var(--p-cta-h); padding: 0 16px; font-size: 14px; margin-bottom: 4px; }

  /* ── 12. Map: edge to edge; Street View note below the buttons ─────── */
  body.ui-v2 #columnsSection:has(.gmaps-wrap) .preview-body { padding: 0 !important; }
  body.ui-v2 .gmaps-main > .sv-unavailable-popup { bottom: auto; top: 98px; left: 8px; }

  /* ── 13. Company email ──────────────────────────────────────────────── */
  body.ui-v2 #chatViewInbox .inbox-wrap { flex-direction: column; }
  body.ui-v2 #chatViewInbox .inbox-sidebar {
    flex: none; flex-direction: row; align-items: center; gap: 4px; padding: 6px 8px; overflow-x: auto;
    border-right: 0; border-bottom: 1px solid #e8edf3;
  }
  body.ui-v2 #chatViewInbox .inbox-compose-fab { margin: 0; height: 36px; padding: 0 14px; font-size: 13px; gap: 6px; flex: none; }
  body.ui-v2 #chatViewInbox .inbox-side-act { width: auto; height: 36px; padding: 0 10px; gap: 5px; white-space: nowrap; flex: none; }
  body.ui-v2 #chatViewInbox .inbox-list-col { flex: 1 1 auto; min-height: 0; }
  body.ui-v2 #chatViewInbox .inbox-filter-tab { min-height: var(--p-btn-h); }
  body.ui-v2 #chatViewInbox .inbox-refresh-btn { width: var(--p-btn-h); height: var(--p-btn-h); }
  body.ui-v2.inbox-reading-fs #chatViewInbox { height: 100dvh !important; }
  body.ui-v2.inbox-reading-fs .inbox-conv-view { height: 100dvh !important; max-height: 100dvh !important; }
  body.ui-v2.inbox-reading-fs .inbox-read-body,
  body.ui-v2.inbox-reading-fs .inbox-msg-frame { min-height: 0 !important; }
  body.ui-v2.inbox-reading-fs .inbox-conv-actions .inbox-act { min-height: var(--p-btn-h); display: inline-flex; align-items: center; }

  /* ── 14. Frame: bottom bar 74→60px, voice strip 49→43px, More sheet,
         tucked strip, incoming call, + New lit while open ───────────── */
  :root { --nb-pbar: 60px; }
  body.ui-v2:not(.login-mode):not(.reset-mode) #nbBar { padding: 4px 4px calc(6px + env(safe-area-inset-bottom)); }
  body.ui-v2 #nbBar .nb-new-circle { width: 38px; height: 38px; }
  body.ui-v2 #nbBar .nb-new-circle svg { width: 21px; height: 21px; }
  body.ui-v2 #nbBar .nb-icon { padding: 2px 14px; }
  body.ui-v2 .nb-voice .sidebar-voice-controls { padding: 4px !important; }
  body.ui-v2 .nb-voice .sidebar-voice-controls .svc-btn,
  body.ui-v2 .nb-voice .sidebar-voice-controls .svc-disconnect { width: var(--p-btn-h) !important; height: var(--p-btn-h) !important; }
  body.ui-v2 .nb-voice .sidebar-voice-controls .svc-vol { height: var(--p-btn-h); }
  body.ui-v2 .nb-voice .sic-btn { flex: none; width: 44px; height: 36px; border-radius: 8px; }
  body.ui-v2 .nb-voice .sic-actions { gap: 8px; }
  /* More: the header says "More" and its button is the close X (ui2.js). */
  body.ui-v2 .nb-more-head { display: none; }
  body.ui-v2 .nb-more-body { padding-top: 8px; }
  body.ui-v2 .nb-more-row { padding: 10px 14px; }
  body.ui-v2 .nb-more-title { margin: 8px 4px 2px; }
  /* Tucked + New strip: one line, 44px. */
  body.ui-v2 #nwStrip:not([hidden]) { padding: 3px 4px 3px 12px; }
  body.ui-v2 #nwStrip .nw-strip-text span { display: none; }
  body.ui-v2 #nwStrip .nw-ib { min-width: var(--p-ib); min-height: var(--p-ib); }
  body.ui-v2.nw-tucked:not(.landing-mode):not(.login-mode):not(.reset-mode):not(.section-select-mode) .shell { padding-bottom: 56px; }
  body.ui-v2.nw-open #nbBar .nb-tab.on:not(.nb-new) { color: #4b5563; }
  body.ui-v2.nw-open #nbBar .nb-tab.on:not(.nb-new) .nb-icon { background: transparent; }
  body.ui-v2.nw-open #nbBar .nb-new { color: var(--nb-accent); }
  body.ui-v2.nw-open #nbBar .nb-new .nb-new-circle { background: var(--nb-accent); color: #fff; }

  /* ── 15. Login (body.login-mode has no ui-v2 yet) ───────────────────── */
  body.login-mode .login-form { gap: 12px; }
  body.login-mode .login-btn { padding: 10px; }
  body.login-mode .login-access-btn { padding: 8px; }
}

/* Voice room, portrait (<=600px): #vcVoiceMain stayed a ROW, so the chat
   (width:100%) squeezed the people column to 0px. Stack them. */
@media (max-width: 600px) {
  body.ui-v2 #chatViewPublic .vc-voice-main { flex-direction: column; }
  body.ui-v2 #chatViewPublic .vc-center { flex: 0 1 auto; min-height: 0; max-height: 45%; }
  body.ui-v2 #chatViewPublic .vc-center-header { display: none; }
  body.ui-v2 #chatViewPublic .vc-chat-panel { flex: 1 1 auto; max-height: none; min-height: 150px; }
  body.ui-v2 #chatViewPublic .vc-left { max-height: 128px; }
}

/* Phone held sideways (~390px tall): keep the Agent composer on screen. */
@media (max-width: 900px) and (max-height: 500px) {
  body.ui-v2 #chatViewAgent .agent-tab-left { max-height: 30%; }
}

/* Phone PDF pages (app.js renderPdfPages): a placeholder reserves each
   page's height; tap a page to zoom 2x. Only phones create these. */
.pdf-page-slot { position: relative; background: #fff; border-radius: 2px; box-shadow: 0 1px 3px rgba(15, 23, 42, 0.18); overflow: hidden; }
.pdf-page-slot > canvas.pdf-page { display: block; width: 100%; height: auto; box-shadow: none; border-radius: 0; }
.pdf-page-slot.zoomed { aspect-ratio: auto !important; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.pdf-page-slot.zoomed > canvas.pdf-page { width: 200%; max-width: none; }
.pdf-pages-hint { flex: 1; font-size: 11.5px; color: var(--text-dim); text-align: center; }
/* Phone-only copy / controls added by app.js; hidden unless the phone rules show them. */
.psa-hint-short { display: none; }
#nwBody .nw-seller-add { display: none; }

/* ── Blast report card (2026-11-01): the Report button on a sent blast
   (app.js _blastReportBody) and the Hub's "This week's blasts" card. ── */
.agent-blast-report-btn { appearance: none; border: 1px solid #cbd5e1; background: #fff; color: #334155; font: inherit; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 6px; cursor: pointer; white-space: nowrap; }
.agent-blast-report-btn:hover { background: #f1f5f9; }
.agent-blast-report-btn[aria-expanded="true"] { border-color: #93c5fd; background: #eff6ff; color: #1d4ed8; }
.agent-blast-report { margin-top: 6px; padding: 8px; border: 1px solid #e2e8f0; border-radius: 8px; background: #f8fafc; display: flex; flex-direction: column; gap: 6px; }
.agent-blast-report-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 6px; }
.agent-blast-report-tile { background: #fff; border: 1px solid #e2e8f0; border-radius: 6px; padding: 6px 8px; min-width: 0; }
.agent-blast-report-label { font-size: 10.5px; color: #64748b; }
.agent-blast-report-value { font-size: 15px; font-weight: 700; color: #111827; line-height: 1.3; }
.agent-blast-report-sub { font-size: 10.5px; color: #64748b; overflow-wrap: anywhere; }
.agent-blast-report-note { font-size: 11px; color: #64748b; }
.agent-blast-report-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 10.5px; color: #94a3b8; }
.agent-blast-report-foot > span { flex: 1 1 auto; min-width: 0; }
.agent-blast-report-refresh { appearance: none; border: 0; background: transparent; color: #2563eb; font: inherit; font-size: 11px; font-weight: 600; padding: 0; cursor: pointer; }
/* Hub: one row per blast; its numbers wrap under the name on a phone. */
.hv2-bw-row { align-items: flex-start; }
.hv2-bw-name { overflow-wrap: anywhere; }
.hv2-bw-stats { display: flex; flex-wrap: wrap; gap: 2px 10px; margin-top: 3px; font-size: 11.5px; color: var(--text-dim); }
.hv2-bw-stat b { color: var(--text); font-weight: 600; }
.hv2-bw-total { margin-top: 4px; padding-top: 6px; border-top: 1px solid var(--border); white-space: normal; }
.hv2-bw-note { margin-bottom: 4px; white-space: normal; }
@media (max-width: 900px) {
  body.ui-v2 #chatViewAgent :is(.agent-blast-report-btn, .agent-blast-report-refresh) { min-height: var(--p-btn-h); }
  body.ui-v2 #chatViewAgent .agent-blast-report-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ── Agent Inbox (2026-11-01): Send Contract + its line, Parcel ID and
   Contract type on the contract card, sellers who AGREED in green ("Agreed
   $X", Write contract), and the Done list under the cards (app.js
   _mInboxRenderDone). ── */
.agent-mny-approve-wrap { flex: 1 1 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 3px 8px; }
.agent-mny-approve-note { flex: 1 1 100%; font-size: 11px; color: #475569; }
.agent-pkg-row-lot .agent-pkg-lbl { flex: 1 1 160px; }
.agent-pkg-row-lot input.agent-pkg-parcel { width: 100%; letter-spacing: 0.02em; }
/* A seller who agreed: the whole card outlined in green (also when it's yours). */
.agent-inbox-mcard.agreed { border-color: #22c55e; border-left-color: #16a34a; background: #f0fdf4; box-shadow: 0 0 0 1px #22c55e; }
.agent-inbox-magreed { font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 999px; background: #16a34a; color: #fff; white-space: nowrap; }
.agent-inbox-magreed[hidden] { display: none; }
.agent-mny-btn.agent-mny-write { border-color: #15803d; background: #16a34a; color: #fff; font-weight: 700; }
.agent-mny-btn.agent-mny-write:hover { background: #15803d; }
.agent-mny-btn.agent-mny-write:disabled { opacity: 0.6; cursor: wait; }
/* Done — last 7 days. */
.agent-inbox-done { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.agent-inbox-done[hidden], .agent-inbox-done-body[hidden] { display: none; }
.agent-inbox-done-head { appearance: none; text-align: left; border: 1px dashed #cbd5e1; background: #f8fafc; color: #334155; font: inherit; font-size: 12px; font-weight: 600; padding: 6px 10px; border-radius: 8px; cursor: pointer; }
.agent-inbox-done-head.has-agreed { border-color: #86efac; color: #166534; }
.agent-inbox-done-body { display: flex; flex-direction: column; gap: 6px; }
.agent-inbox-done-row { border: 1px solid #e2e8f0; border-left: 3px solid #94a3b8; border-radius: 8px; padding: 6px 10px; background: #fff; display: flex; flex-direction: column; gap: 2px; }
.agent-inbox-done-row.agreed { border-color: #22c55e; border-left-color: #16a34a; background: #f0fdf4; box-shadow: 0 0 0 1px #22c55e; }
.agent-inbox-done-row .agent-mny-last { margin-top: 0; }
.agent-inbox-done-row .agent-mny-actions { margin-top: 4px; }
.agent-inbox-done-when { margin-left: auto; font-size: 11px; color: #64748b; white-space: nowrap; }
.agent-inbox-done-more { align-self: flex-start; appearance: none; border: 0; background: none; color: #2563eb; font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; padding: 2px 6px; }
@media (max-width: 900px) {
  body.ui-v2 #chatViewAgent :is(.agent-inbox-done-head, .agent-inbox-done-more) { min-height: var(--p-btn-h); }
  body.ui-v2 #chatViewAgent .agent-inbox-done-when { margin-left: 0; flex-basis: 100%; white-space: normal; }
  body.ui-v2 #chatViewAgent .agent-mny-btn.agent-mny-write { flex: 1 1 100%; }
  body.ui-v2 #chatViewAgent .agent-pkg-row-lot .agent-pkg-lbl { flex: 1 1 100%; }
}
/* Review fixes (2026-11-01): why an agreed seller has no Write contract (the
   Done row's note — the Inbox card shows it as a warning), and on desktop the
   contract card's owner email takes the rest of the row (it was squeezed to
   "lena.exampl" in a 3-column Inbox); phones keep one field per row. */
.agent-inbox-nowrite { font-size: 11px; color: #92400e; background: #fffbeb; border: 1px solid #fde68a; border-radius: 6px; padding: 2px 8px; overflow-wrap: anywhere; }
@media (min-width: 901px) {
  .agent-pkg-owner { display: flex; flex-wrap: wrap; }
  .agent-pkg-owner > .agent-pkg-role { flex: 1 1 100%; }
  .agent-pkg-owner > input.agent-pkg-name { flex: 1 1 130px; }
  .agent-pkg-owner > input.agent-pkg-phone { flex: 0 1 120px; }
  .agent-pkg-owner > .agent-pkg-email-wrap { flex: 999 1 240px; }
}
/* ── Every active conversation (operator 2026-11-02): under the cards, folded
   ("N conversations — the agent has them"); one line per seller, a tap opens
   its thread (app.js _mInboxRenderAll). .agent-inbox-arow, never
   .agent-inbox-mcard — the phone's Chat count and the expanded grid are the
   cards'. Phones: rows at least a finger tall, nothing past the right edge. ── */
.agent-inbox-all { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.agent-inbox-all[hidden], .agent-inbox-all-body[hidden], .agent-inbox-all-more[hidden], .agent-inbox-arow-body[hidden], .agent-inbox-arow-hint[hidden] { display: none; }
.agent-inbox-all-head { appearance: none; text-align: left; border: 1px dashed #93c5fd; background: #f8fafc; color: #1e3a8a; font: inherit; font-size: 12px; font-weight: 600; padding: 6px 10px; border-radius: 8px; cursor: pointer; }
.agent-inbox-all-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.agent-inbox-arow { border: 1px solid #e2e8f0; border-left: 3px solid #60a5fa; border-radius: 8px; background: #fff; display: flex; flex-direction: column; min-width: 0; }
.agent-inbox-arow.paused { border-left-color: #7c3aed; }
.agent-inbox-arow.contract { border-left-color: #16a34a; }
.agent-inbox-arow.yours { border-left-color: #94a3b8; }
.agent-inbox-arow.open { border-color: #bfdbfe; box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08); }
.agent-inbox-arow-head { appearance: none; border: 0; background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; padding: 5px 10px; display: flex; flex-direction: column; gap: 2px; width: 100%; min-width: 0; border-radius: 8px; }
.agent-inbox-arow-head:hover { background: #f8fafc; }
.agent-inbox-arow-top { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; min-width: 0; }
.agent-inbox-arow-top .agent-mny-who { overflow-wrap: anywhere; }
.agent-inbox-arow .agent-inbox-mstate { margin-left: 0; }
.agent-inbox-mstate.st-agent { background: #e0f2fe; color: #075985; }
.agent-inbox-arow-when { margin-left: auto; font-size: 11px; color: #64748b; white-space: nowrap; }
.agent-inbox-arow-last { display: block; font-size: 12px; color: #334155; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.agent-inbox-arow-last b { font-weight: 600; color: #64748b; }
.agent-inbox-arow-body { display: flex; flex-direction: column; gap: 6px; padding: 0 10px 8px; min-width: 0; }
.agent-inbox-arow-hint { font-size: 12px; color: #475569; }
.agent-inbox-arow .agent-mny-actions { margin-top: 0; }
.agent-inbox-all-more { align-self: flex-start; appearance: none; border: 0; background: none; color: #2563eb; font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; padding: 2px 6px; }
@media (max-width: 900px) {
  body.ui-v2 #chatViewAgent :is(.agent-inbox-all-head, .agent-inbox-all-more) { min-height: var(--p-btn-h); }
  body.ui-v2 #chatViewAgent .agent-inbox-arow-head { min-height: var(--p-btn-h); padding: 6px 10px; }
  body.ui-v2 #chatViewAgent .agent-inbox-arow .agent-inbox-mstate { white-space: normal; }
}
/* ── The lot line (operator 2026-11-02 #5): under the seller's name on every
   Inbox card, active-conversation row and Done row (app.js _mLotLineHtml) —
   the address as a marker-yellow, underlined chip that opens Zillow in a new
   tab; the list's acres; the flood zone (red = in one, green = not, grey =
   not checked). Wraps inside the card; the link is a finger target on phones. ── */
.agent-inbox-lot { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-width: 0; max-width: 100%; font-size: 12px; line-height: 1.35; color: #334155; }
.agent-inbox-lot[hidden] { display: none; }
.agent-inbox-arow-lot { padding: 0 10px 6px; }
.agent-inbox-lot-addr { display: inline-flex; align-items: center; min-height: 26px; max-width: 100%; min-width: 0; box-sizing: border-box; padding: 2px 8px; border-radius: 6px;
  background: #fef08a; box-shadow: inset 0 0 0 1px #facc15; color: #111827; font-weight: 600; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; overflow-wrap: anywhere; word-break: break-word; }
a.agent-inbox-lot-addr { cursor: pointer; }
a.agent-inbox-lot-addr:hover { background: #fde047; color: #000; }
a.agent-inbox-lot-addr:focus-visible { outline: 2px solid #2563eb; outline-offset: 1px; }
.agent-inbox-lot-addr.nolink { cursor: default; }
.agent-inbox-lot-meta { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; min-width: 0; }
.agent-inbox-lot-size { color: #475569; white-space: nowrap; }
.agent-inbox-lot-flood { display: inline-flex; align-items: center; padding: 1px 8px; border-radius: 999px; border: 1px solid transparent; font-size: 11px; font-weight: 600; white-space: nowrap; }
.agent-inbox-lot-flood.fl-yes { background: #fee2e2; border-color: #fca5a5; color: #b91c1c; }
.agent-inbox-lot-flood.fl-no { background: #dcfce7; border-color: #86efac; color: #15803d; }
.agent-inbox-lot-flood.fl-unknown { background: #f1f5f9; border-color: #cbd5e1; color: #64748b; }
.agent-inbox-lot-none { color: #64748b; font-style: italic; }
@media (max-width: 900px) {
  body.ui-v2 #chatViewAgent .agent-inbox-lot-addr { min-height: var(--p-btn-h); }
}
