/**
 * CRM2 Contacts + shared Data Table chrome
 * Visual system aligned with shadcn/ui Data Table:
 * https://ui.shadcn.com/docs/components/data-table
 * (vanilla CSS; MUJI tokens)
 */

/* —— List toolbar (unified tabs + tools) —— */
body.onsites-desk.desk-pane-crm2 .cw-crm2-list-views {
  padding: 0;
  border-bottom: none;
  background: transparent;
  flex: 1;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-views[hidden] {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt-tabs {
  display: flex;
  align-items: center;
  gap: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt-tab {
  position: relative;
  border: none;
  background: transparent;
  color: var(--crm2-muted);
  font-size: 14px;
  font-weight: 500;
  padding: 12px 12px 13px;
  cursor: pointer;
  border-radius: 0;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt-tab:hover {
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt-tab.is-on {
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt-tab.is-on::after {
  content: '';
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: -1px;
  height: 2px;
  background: var(--crm2-text);
  border-radius: 1px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt-tab-count {
  margin-left: 6px;
  font-size: 12px;
  font-weight: 500;
  color: var(--crm2-muted);
  opacity: 0.85;
}

/* Legacy pill class kept harmless */
body.onsites-desk.desk-pane-crm2 .cw-crm2-view-btn {
  display: none;
}

/* —— Data Table frame: overflow-hidden rounded-md border —— */
body.onsites-desk.desk-pane-crm2 .cw-crm2-list-body {
  padding: 12px 20px 16px;
  display: flex;
  flex-direction: column;
  min-height: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt-frame {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--crm2-border);
  border-radius: 8px;
  background: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt .cw-crm2-table-wrap {
  flex: 1;
  min-height: 0;
  overflow: auto;
}

/* Table ≈ text-sm, caption-bottom — dense rows.
   table-layout: fixed honors declared column widths exactly, so columns never
   stretch unevenly when fixed widths are less than the container width. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  font-size: 13px;
  background: #fff;
}

/* Smart column behaviour: allow wrapped/truncated content in fixed cells, keep
   the flexible primary column from collapsing. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-th,
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-td {
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-td,
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-th {
  box-sizing: border-box;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt thead tr {
  border-bottom: 1px solid var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-th {
  height: 32px;
  padding: 0 10px;
  text-align: left;
  vertical-align: middle;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--crm2-muted);
  background: #fff;
  border-bottom: 1px solid var(--crm2-border);
  white-space: nowrap;
  position: sticky;
  top: 0;
  z-index: 1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-th--center {
  text-align: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-th--right {
  text-align: right;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-td {
  padding: 5px 10px;
  vertical-align: middle;
  border-bottom: 1px solid var(--crm2-border);
  color: var(--crm2-text);
  line-height: 1.35;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-td-actions {
  overflow: visible;
  white-space: nowrap;
  text-overflow: clip;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-person-cell,
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-person-meta {
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-row-name,
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-person-sub,
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-link {
  display: block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt tbody .cw-crm2-row:last-child .cw-crm2-td {
  border-bottom: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-row {
  cursor: pointer;
  transition: background-color 0.12s ease;
  border-bottom: 1px solid var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-row:hover {
  background: rgba(51, 48, 43, 0.04);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-row.is-selected,
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-row[data-state='selected'],
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-row.is-checked {
  background: rgba(51, 48, 43, 0.06);
  box-shadow: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-td-empty {
  height: 96px;
  text-align: center;
  color: var(--crm2-muted);
  font-size: 14px;
}

/* Sort button ≈ ghost header */
body.onsites-desk.desk-pane-crm2 .cw-crm2-sort {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: none;
  background: transparent;
  padding: 0;
  margin: 0;
  font: inherit;
  font-weight: 500;
  color: inherit;
  cursor: pointer;
  border-radius: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-sort:hover {
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-sort svg {
  opacity: 0.55;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-sort.is-on svg,
body.onsites-desk.desk-pane-crm2 .cw-crm2-sort.is-on {
  color: var(--crm2-text);
  opacity: 1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-sort-dir {
  font-size: 11px;
  opacity: 0.7;
}

/* Checkbox */
body.onsites-desk.desk-pane-crm2 .cw-crm2-th-check,
body.onsites-desk.desk-pane-crm2 .cw-crm2-td-check {
  width: 32px;
  padding-left: 10px !important;
  padding-right: 0 !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-check {
  width: 14px;
  height: 14px;
  accent-color: var(--crm2-text);
  cursor: pointer;
}

/* Name cell — no avatar, compact */
body.onsites-desk.desk-pane-crm2 .cw-crm2-person-cell {
  display: flex;
  align-items: center;
  gap: 0;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-person-cell--plain {
  min-height: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-avatar {
  width: 28px;
  height: 28px;
  border-radius: 999px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 600;
  color: var(--crm2-text);
  background: var(--crm2-surface-2);
  border: 1px solid var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-avatar--company {
  border-radius: 8px;
  background: var(--crm2-accent-soft);
  color: var(--mj-wood-deep, #6b5740);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-avatar--opp {
  border-radius: 8px;
  background: rgba(37, 99, 235, 0.1);
  color: #1d4ed8;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-avatar--product {
  border-radius: 8px;
  background: rgba(5, 150, 105, 0.1);
  color: #047857;
}

body.onsites-desk.desk-pane-crm2.cw-crm2-module-opportunities .cw-crm2-dt-tab,
body.onsites-desk.desk-pane-crm2.cw-crm2-module-quotations .cw-crm2-dt-tab {
  font-size: 15px;
  font-weight: 600;
  padding: 12px 14px 13px;
  letter-spacing: -0.02em;
}

body.onsites-desk.desk-pane-crm2.cw-crm2-module-opportunities .cw-crm2-dt-tab-count,
body.onsites-desk.desk-pane-crm2.cw-crm2-module-quotations .cw-crm2-dt-tab-count {
  font-size: 13px;
  font-weight: 500;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-new {
  border-color: rgba(107, 114, 128, 0.3);
  color: #4b5563;
  background: rgba(107, 114, 128, 0.06);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-screening,
body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-meeting {
  border-color: rgba(37, 99, 235, 0.25);
  color: #1d4ed8;
  background: rgba(59, 130, 246, 0.06);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-proposal {
  border-color: rgba(217, 119, 6, 0.3);
  color: #b45309;
  background: rgba(245, 158, 11, 0.08);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-customer {
  border-color: rgba(22, 163, 74, 0.25);
  color: #15803d;
  background: rgba(34, 197, 94, 0.06);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-lost {
  border-color: rgba(220, 38, 38, 0.25);
  color: #b91c1c;
  background: rgba(239, 68, 68, 0.06);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-person-meta {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
  line-height: 1.3;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-person-sub {
  font-size: 11px;
  color: var(--crm2-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 220px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-row-name,
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-link {
  font-size: 13px;
  font-weight: 500;
  color: var(--crm2-text);
  text-decoration: none;
  line-height: 1.3;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-link:hover {
  text-decoration: underline;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-email-link,
body.onsites-desk.desk-pane-crm2 .cw-crm2-phone-link {
  color: inherit;
  text-decoration: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-email-link:hover,
body.onsites-desk.desk-pane-crm2 .cw-crm2-phone-link:hover {
  text-decoration: underline;
}

/* Badge ≈ outline */
body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--outline {
  border: 1px solid var(--crm2-border);
  background: transparent;
  border-radius: 4px;
  padding: 1px 6px;
  font-size: 11px;
  font-weight: 500;
  text-transform: capitalize;
  color: var(--crm2-text);
  line-height: 1.35;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--outline.cw-crm2-badge--lead {
  border-color: rgba(37, 99, 235, 0.25);
  color: #1d4ed8;
  background: rgba(59, 130, 246, 0.06);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--outline.cw-crm2-badge--customer {
  border-color: rgba(22, 163, 74, 0.25);
  color: #15803d;
  background: rgba(34, 197, 94, 0.06);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--outline.cw-crm2-badge--locked {
  border-color: rgba(180, 83, 9, 0.3);
  color: #b45309;
  background: rgba(180, 83, 9, 0.06);
}

/* Row actions — sticky right so edit/void/delete never get clipped by wide columns */
body.onsites-desk.desk-pane-crm2 .cw-crm2-th-actions,
body.onsites-desk.desk-pane-crm2 .cw-crm2-td-actions {
  width: 100px !important;
  min-width: 100px !important;
  max-width: 140px !important;
  text-align: right;
  padding-left: 4px !important;
  padding-right: 10px !important;
  overflow: visible !important;
  white-space: nowrap !important;
  text-overflow: clip !important;
  position: sticky;
  right: 0;
  z-index: 3;
  background: #fff;
  box-shadow: -6px 0 8px -6px rgba(51, 48, 43, 0.18);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-th-actions {
  z-index: 4;
  background: var(--crm2-th-bg, #faf9f7);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row:hover .cw-crm2-td-actions {
  background: #f7f6f4;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row.is-selected .cw-crm2-td-actions,
body.onsites-desk.desk-pane-crm2 .cw-crm2-row.is-checked .cw-crm2-td-actions {
  background: #f3f2ef;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-icos {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
  flex-wrap: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico {
  width: 30px;
  height: 30px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--crm2-muted, #6b6560);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  flex: 0 0 30px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico svg {
  display: block;
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico:hover {
  background: rgba(51, 48, 43, 0.07);
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico--danger {
  color: #a16207;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico--danger:hover {
  background: rgba(185, 28, 28, 0.1);
  color: #b91c1c;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico--void {
  color: #92400e;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico--void:hover {
  background: rgba(146, 64, 14, 0.1);
  color: #78350f;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico:disabled,
body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico.is-disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico:disabled:hover,
body.onsites-desk.desk-pane-crm2 .cw-crm2-row-ico.is-disabled:hover {
  background: transparent;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops {
  position: relative;
  display: inline-flex;
  justify-content: flex-end;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-trigger {
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--crm2-muted);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-trigger:hover,
body.onsites-desk.desk-pane-crm2 .cw-crm2-ops.is-open .cw-crm2-ops-trigger {
  background: rgba(51, 48, 43, 0.06);
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 4px);
  min-width: 160px;
  background: #fff;
  border: 1px solid var(--crm2-border);
  border-radius: 8px;
  box-shadow: 0 4px 16px rgba(51, 48, 43, 0.1);
  z-index: 30;
  padding: 4px;
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops.is-open .cw-crm2-ops-menu {
  display: block;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-label {
  padding: 6px 10px 4px;
  font-size: 12px;
  font-weight: 500;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-sep {
  height: 1px;
  margin: 4px 0;
  background: var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-item {
  display: block;
  width: 100%;
  text-align: left;
  border: none;
  background: transparent;
  padding: 8px 10px;
  font-size: 14px;
  border-radius: 4px;
  cursor: pointer;
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-item:hover {
  background: rgba(51, 48, 43, 0.05);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-item:disabled,
body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-item.is-disabled {
  cursor: not-allowed;
  opacity: 0.45;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-item:disabled:hover,
body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-item.is-disabled:hover {
  background: transparent;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ops-item--danger {
  color: #dc2626;
}

/* Footer ≈ flex justify-between py-4 */
body.onsites-desk.desk-pane-crm2 .cw-crm2-dt-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 2px 0;
  flex-wrap: wrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt-footer-meta {
  font-size: 14px;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-dt-pager {
  display: flex;
  align-items: center;
  gap: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-btn--outline {
  background: #fff;
  border: 1px solid var(--crm2-border);
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-btn--outline:hover:not(:disabled) {
  background: rgba(51, 48, 43, 0.04);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-btn--sm {
  height: 32px;
  padding: 0 12px;
  font-size: 13px;
  font-weight: 500;
  border-radius: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-btn--outline:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

/* Count chip — quieter */
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-count {
  min-width: 22px;
  padding: 1px 6px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 500;
  background: var(--crm2-surface-2);
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--dt .cw-crm2-count.is-on {
  background: var(--crm2-surface-2);
  color: var(--crm2-text);
}

/* —— Drawer hero / account / form (kept) —— */
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--crm2-border);
  background: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero .cw-crm2-avatar {
  width: 48px;
  height: 48px;
  font-size: 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero-body {
  min-width: 0;
  flex: 1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero-name {
  margin: 0 0 4px;
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -0.02em;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero-line {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  font-size: 13px;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero-line a {
  color: var(--crm2-text);
  text-decoration: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero-line a:hover {
  text-decoration: underline;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel.has-record-hero {
  position: absolute;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-hero-sep {
  opacity: 0.45;
  user-select: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel.has-record-hero .cw-crm2-drawer-head {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel.has-record-hero .cw-crm2-drawer-close-float {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 5;
  width: 32px;
  height: 32px;
  border: 1px solid var(--crm2-border);
  border-radius: 6px;
  background: #fff;
  cursor: pointer;
  font-size: 20px;
  line-height: 1;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel.has-record-hero .cw-crm2-drawer-close-float:hover {
  background: rgba(51, 48, 43, 0.04);
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-hero-actions {
  position: absolute;
  top: 16px;
  right: 52px;
  z-index: 5;
  display: flex;
  gap: 8px;
}

/* Opportunity Highlights Panel (Salesforce compact layout style) */
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--highlights {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px 20px 10px;
  align-items: stretch;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--highlights .cw-crm2-record-hero-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--highlights .cw-crm2-record-hero-body {
  min-width: 0;
  flex: 1;
  padding-right: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--highlights .cw-crm2-record-hero-name {
  margin: 0;
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.3;
}

/* Identity lead: 种类 · name (color text, not pill) — all record heroes */
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead .cw-crm2-record-hero-body {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0 0.35em;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.3;
  white-space: nowrap;
  color: var(--crm2-kind-ink, #5c4a36);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead-dot {
  font-weight: 700;
  opacity: 0.85;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead-extra {
  font-weight: 600;
  opacity: 0.9;
  color: inherit;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--company {
  color: #8b7355;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--contact {
  color: #5b6b7a;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--opportunity {
  color: #2f6f6a;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--quote {
  color: #b07a2a;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--pi {
  color: #3a5f9a;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--contract {
  color: #3d6b45;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--order {
  color: #a05a3c;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--invoice {
  color: #8a3d4a;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--product {
  color: #6a7340;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--priceList {
  color: #6e6558;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--file,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead--attach {
  color: #4a4743;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead .cw-crm2-record-hero-name {
  font-size: 16px;
  font-weight: 650;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead.is-kind-company {
  border-left: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead.is-kind-contact {
  border-left: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead.is-kind-opportunity {
  border-left: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead.is-kind-quote {
  border-left: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead.is-kind-pi {
  border-left: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead.is-kind-contract {
  border-left: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead.is-kind-order {
  border-left: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead.is-kind-invoice {
  border-left: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead.is-kind-product {
  border-left: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--kind-lead.is-kind-priceList {
  border-left: 0;
}

/* Nested / form drawer kickers use the same lead look */
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-head .cw-crm2-doc-lead,
body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-kicker.cw-crm2-doc-lead {
  align-self: flex-start;
  margin: 0 0 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--highlights .cw-crm2-record-hero-toolbar {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--highlights .cw-crm2-drawer-hero-actions {
  position: static;
  top: auto;
  right: auto;
  z-index: auto;
  gap: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-close-inline {
  width: 28px;
  height: 28px;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 6px;
  background: #fff;
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
  color: var(--crm2-muted, #71717a);
  padding: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-close-inline:hover {
  background: rgba(51, 48, 43, 0.04);
  color: var(--crm2-text, #18181b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-highlights {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px 16px;
  padding-top: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-highlights--single {
  display: block;
  padding-top: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-hl-item {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-hl-label {
  font-size: 11px;
  font-weight: 500;
  color: var(--crm2-muted, #71717a);
  line-height: 1.2;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-hl-value {
  font-size: 13px;
  font-weight: 500;
  color: var(--crm2-text, #18181b);
  line-height: 1.35;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-hl-item.is-primary .cw-crm2-hl-value {
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.01em;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-hl-item.is-empty .cw-crm2-hl-value {
  color: #a1a1aa;
  font-weight: 400;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-hl-cur {
  font-size: 12px;
  font-weight: 500;
  color: var(--crm2-muted, #71717a);
}

@media (max-width: 720px) {
  body.onsites-desk.desk-pane-crm2 .cw-crm2-highlights {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-account-lines {
  max-width: 420px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-account-lines .cw-crm2-field {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  gap: 10px;
  margin: 0;
  padding: 4px 0;
  border-bottom: 1px solid var(--crm2-border, #f2f2f4);
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-account-lines .cw-crm2-field:last-of-type {
  border-bottom: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-account-lines .cw-crm2-field-label {
  flex: 0 0 88px;
  margin: 0;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--crm2-muted, #71717a);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-account-lines .cw-crm2-field-value {
  flex: 1;
  min-width: 0;
  margin: 0;
  font-size: 13px;
  color: var(--crm2-text, #18181b);
  line-height: 1.4;
  word-break: break-word;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-account-open {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: 10px;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--crm2-accent, #8b7355);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-account-open-arrow {
  transition: transform 0.12s ease;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-account-open:hover {
  text-decoration: underline;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-account-open:hover .cw-crm2-account-open-arrow {
  transform: translateX(2px);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-contact-no-account-title {
  font-size: 14px;
  font-weight: 550;
  color: var(--crm2-text, #18181b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-contact-no-account-hint {
  margin-top: 6px;
  font-size: 13px;
  line-height: 1.45;
  max-width: 28em;
  margin-left: auto;
  margin-right: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-contact-no-account-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin-top: 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-guide-empty-title {
  font-size: 14px;
  font-weight: 550;
  color: var(--crm2-text, #18181b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-guide-empty-hint {
  margin-top: 6px;
  font-size: 13px;
  line-height: 1.45;
  max-width: 28em;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-guide-empty:not(.cw-crm2-guide-empty--inline) .cw-crm2-guide-empty-hint {
  margin-left: auto;
  margin-right: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-guide-empty--inline {
  padding: 4px 0 2px;
  text-align: left;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-guide-empty--inline .cw-crm2-guide-empty-hint {
  max-width: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-guide-empty-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-guide-empty:not(.cw-crm2-guide-empty--inline) .cw-crm2-guide-empty-actions {
  justify-content: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-guide-empty--inline .cw-crm2-guide-empty-actions {
  justify-content: flex-start;
  margin-top: 10px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-panel {
  max-width: 560px;
  margin: 0 auto;
  padding: 8px 4px 24px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-section {
  margin-bottom: 20px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-section-title {
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--crm2-muted);
  margin: 0 0 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 16px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-grid .cw-crm2-fd-field--full {
  grid-column: 1 / -1;
}

@media (max-width: 640px) {
  body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-grid {
    grid-template-columns: 1fr;
  }

  body.onsites-desk.desk-pane-crm2 .cw-crm2-list-body {
    padding: 10px 12px 14px;
  }
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-add {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin: 0 0 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-add .cw-crm2-fd-input {
  min-width: 160px;
  flex: 1 1 180px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ql-qty-add {
  max-width: 96px;
  flex: 0 0 96px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ql-input {
  width: 72px;
  padding: 4px 6px;
  border: 1px solid var(--crm2-border, #e5e7eb);
  border-radius: 6px;
  font-size: 12px;
  background: var(--crm2-surface, #fff);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-td--num,
body.onsites-desk.desk-pane-crm2 .cw-crm2-th--num {
  text-align: right;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-td--actions {
  white-space: nowrap;
  text-align: right;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-embed {
  overflow: visible;
  flex: none;
  min-height: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--quote {
  table-layout: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--quote .cw-crm2-th--actions,
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--quote .cw-crm2-th-actions,
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--quote .cw-crm2-td-actions {
  width: 132px !important;
  min-width: 132px !important;
  max-width: 140px !important;
  padding-right: 8px !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--quote .cw-crm2-ops-menu {
  z-index: 60;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table--quote .cw-crm2-embed-row {
  cursor: default;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-foot {
  display: flex;
  justify-content: flex-end;
  align-items: baseline;
  gap: 10px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--crm2-border, #e5e7eb);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-subtotal-label {
  font-size: 12px;
  color: var(--crm2-muted, #6b7280);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-subtotal {
  font-size: 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-lock {
  margin: 0 0 10px;
  padding: 8px 10px;
  border-radius: 8px;
  background: rgba(245, 158, 11, 0.1);
  color: #92400e;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-snaps {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--crm2-border, #e5e7eb);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-snaps .cw-crm2-embed-head {
  margin-bottom: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-snaps .cw-crm2-embed-head .cw-crm2-btn {
  margin-left: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-snap-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-quote-snap-item {
  display: flex;
  align-items: center;
  gap: 10px;
  justify-content: space-between;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-btn-link {
  background: none;
  border: none;
  padding: 0;
  color: inherit;
  font: inherit;
  cursor: pointer;
  text-align: left;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-btn--sm {
  padding: 4px 8px;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-btn--danger {
  color: #b91c1c;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info-about {
  margin-bottom: 8px;
}

/* Cordys-style compact single-column opportunity info (no card boxes). */
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--compact {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
  gap: 0 28px;
  align-items: start;
  padding: 2px 2px 12px;
}

/* Stage pipe row */
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-stage {
  padding-bottom: 6px;
  border-bottom: 1px solid var(--crm2-border, #ececee);
}

/* Account / Contact relation rows (field-line style, no cards) */
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rels {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel {
  display: flex;
  align-items: center;
  gap: 16px;
  min-height: 24px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-label {
  flex: 0 0 120px;
  font-size: 13px;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-value {
  flex: 1;
  font-size: 14px;
  color: var(--crm2-text, #18181b);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-open {
  flex: 0 0 auto;
  border: none;
  background: transparent;
  color: var(--crm2-accent, #8b7355);
  font-size: 13px;
  cursor: pointer;
  padding: 2px 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-open:hover {
  text-decoration: underline;
}

/* Account / Contact detail panels inside 联系人信息 tab */
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-top: 10px;
  border-top: 1px solid var(--crm2-border, #ececee);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--compact > .cw-crm2-opp-rel-panel + .cw-crm2-opp-rel-panel {
  border-top: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 28px;
  margin-bottom: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
  color: inherit;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel-toggle:hover .cw-crm2-opp-rel-panel-title {
  color: var(--crm2-accent, #8b7355);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel-caret {
  font-size: 14px;
  line-height: 1;
  color: var(--crm2-muted, #71717a);
  transition: transform 0.15s ease;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel-toggle.is-collapsed .cw-crm2-opp-rel-panel-caret {
  transform: rotate(90deg);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel-body[hidden] {
  display: none !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel-title {
  margin: 0;
  font-size: 12px;
  font-weight: 600;
  color: var(--crm2-text, #18181b);
  letter-spacing: 0.02em;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel .cw-crm2-about-body--compact {
  padding: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel .cw-crm2-about-section {
  padding: 0;
}

/* Tighter field rows inside the relation panels (read-only inline About). */
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel .cw-crm2-field {
  padding: 4px 0 5px;
  border-bottom: 1px solid var(--crm2-border, #f2f2f4);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel .cw-crm2-field:last-child {
  border-bottom: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel .cw-crm2-field-label {
  font-size: 11px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel .cw-crm2-field-value {
  font-size: 13px;
  line-height: 1.35;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-panel .cw-crm2-embed-empty {
  padding: 8px 0 4px;
  font-size: 13px;
}

/* About — Cordys crm-description: compact label/value rows, no cards. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact {
  display: flex;
  flex-direction: column;
  gap: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-about-section {
  border: none;
  border-radius: 0;
  background: transparent;
  padding: 10px 0 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-about-section + .cw-crm2-about-section {
  border-top: 1px solid var(--crm2-border, #ececee);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-about-section-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--crm2-text, #18181b);
  margin: 0 0 4px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--crm2-border, #ececee);
}

/* About pane: always one field column (label above / beside value per field row). */
body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-about-section-grid {
  display: grid;
  grid-template-columns: 1fr;
  column-gap: 0;
  row-gap: 0;
  align-items: start;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-field {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  gap: 10px;
  margin: 0;
  padding: 4px 0;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-field--full {
  grid-column: 1 / -1;
}

/* Linear/Notion-style stacked field: small muted label on top, value below. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-field-label {
  flex: 0 0 88px;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--crm2-muted, #71717a);
  margin: 0;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-field-value {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  color: var(--crm2-text, #18181b);
  line-height: 1.4;
  word-break: break-word;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-field--files {
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  padding: 6px 0 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-field--files .cw-crm2-field-label {
  flex: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-field-value--files {
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-cf-files-inner .cw-crm2-cf-files-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-cf-files-inner .cw-crm2-attach-ul {
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-cf-files-inner .cw-crm2-attach-row {
  padding: 6px 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-cf-files-count {
  font-size: 11px;
}

/* About: files field — read-only filename list */
body.onsites-desk.desk-pane-crm2 .cw-crm2-cf-files-view {
  list-style: none;
  margin: 0;
  padding: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-cf-files-view-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 10px;
  padding: 2px 0;
  line-height: 1.35;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-cf-files-view-name {
  font-size: 13px;
  color: var(--crm2-text, #18181b);
  word-break: break-word;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-cf-files-view-meta {
  font-size: 11px;
  color: var(--crm2-muted, #71717a);
}

/* Edit form: files custom field */
body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-field--files .cw-crm2-fd-label {
  margin-bottom: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files {
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 8px;
  background: var(--crm2-surface-2, #fafafa);
  padding: 10px 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-pending {
  margin: 0;
  font-size: 12px;
  color: var(--crm2-muted, #71717a);
  line-height: 1.45;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-upload {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  font-size: 12px;
  font-weight: 600;
  color: var(--crm2-text, #18181b);
  background: #fff;
  border: 1px dashed var(--crm2-border, #d4d4d8);
  border-radius: 6px;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-upload:hover {
  border-color: var(--crm2-accent, #2563eb);
  background: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-upload-icon {
  display: inline-flex;
  width: 18px;
  height: 18px;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  background: var(--crm2-accent-soft, #eff6ff);
  color: var(--crm2-accent, #2563eb);
  font-size: 14px;
  line-height: 1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-count {
  font-size: 11px;
  color: var(--crm2-muted, #71717a);
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-list .cw-crm2-attach-empty {
  padding: 8px 0 2px;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-inner .cw-crm2-attach-ul {
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-inner .cw-crm2-attach-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 10px;
  margin: 0 0 6px;
  background: #fff;
  border: 1px solid var(--crm2-border, #ececee);
  border-radius: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-inner .cw-crm2-attach-row:last-child {
  margin-bottom: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-inner .cw-crm2-attach-name {
  font-size: 13px;
  font-weight: 550;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-inner .cw-crm2-attach-meta {
  font-size: 11px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-fd-files-inner .cw-crm2-attach-ops {
  flex-shrink: 0;
  gap: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--compact .cw-crm2-about-input {
  font-size: 14px;
  padding: 2px 6px;
  border: 1px solid var(--crm2-border, #d4d4d8);
  border-radius: 4px;
  background: #fff;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info-rels {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

@media (max-width: 720px) {
  body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info-rels {
    grid-template-columns: 1fr;
  }
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-prop-card {
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 10px;
  background: var(--crm2-surface, #fff);
  padding: 14px 16px 16px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-prop-card--stage {
  padding-bottom: 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-prop-card-head {
  margin-bottom: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-prop-card-title {
  font-size: 12px;
  font-weight: 500;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-prop-card .cw-crm2-account-lines {
  border: none;
  background: transparent;
  padding: 0;
  box-shadow: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-prop-card .cw-crm2-account-lines .cw-crm2-field-label {
  font-size: 11px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-prop-card .cw-crm2-account-lines .cw-crm2-field-value {
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-prop-card .cw-crm2-embed-empty {
  margin: 0;
  font-size: 13px;
}

/* shadcn / Tailwind description-list style About */
body.onsites-desk.desk-pane-crm2 .cw-crm2-about-body--shadcn {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-section {
  margin: 0;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 10px;
  background: var(--crm2-surface, #fff);
  padding: 16px 18px 18px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-section-title {
  margin: 0 0 14px;
  padding: 0;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--crm2-muted, #71717a);
  border: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-section-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px 0;
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-about-section-grid .cw-crm2-field--full {
  grid-column: 1 / -1;
}

@media (max-width: 720px) {
  body.onsites-desk.desk-pane-crm2 .cw-crm2-about-section-grid {
    grid-template-columns: 1fr;
  }
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero--no-avatar {
  padding-top: 18px;
}

/* Stage strip — compact Path between hero and about/tabs */
body.onsites-desk.desk-pane-crm2 .cw-crm2-stage-strip {
  flex: 0 0 auto;
  padding: 8px 20px;
  border-bottom: 1px solid var(--crm2-border, #ececee);
  background: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel.has-stage-strip .cw-crm2-stage-strip {
  display: block;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-so-stage-row {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

/* O2C order card workspace (opportunity 订单 tab) */
body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-cards {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-card {
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 10px;
  padding: 12px 14px;
  background: #fff;
  box-shadow: 0 1px 2px rgba(24, 24, 27, 0.04);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-card.is-void {
  opacity: 0.55;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
  font-weight: 600;
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-card-head .cw-crm2-o2c-name {
  flex: 1;
  text-align: left;
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-stage .cw-crm2-path {
  justify-content: flex-start;
  gap: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-card-foot {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-card-foot .cw-crm2-o2c-ci {
  font-size: 12px;
  margin-right: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-inline-pay {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 8px;
  padding: 10px 12px;
  background: var(--crm2-bg-soft, #fafafa);
  border-radius: 8px;
  border: 1px solid var(--crm2-border, #e4e4e7);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-inline-pay[hidden] {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-inline-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-inline-field {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: 11px;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-inline-field .cw-crm2-ci-inline-date,
body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-inline-field .cw-crm2-ci-inline-method {
  padding: 4px 8px;
  font-size: 12px;
  line-height: 1.4;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 6px;
  background: var(--crm2-bg, #fff);
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-inline-amt {
  flex: 1;
  min-width: 90px;
  padding: 4px 8px;
  font-size: 12px;
  line-height: 1.4;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-lines-toggle {
  display: inline-block;
  margin-top: 8px;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-lines {
  margin-top: 6px;
  padding: 8px 10px;
  background: var(--crm2-bg-soft, #fafafa);
  border-radius: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-lines-grid {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-line {
  display: flex;
  align-items: center;
  gap: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-line {
  flex-wrap: wrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-line-meta {
  flex-basis: 100%;
  font-size: 11px;
  color: var(--crm2-muted, #71717a);
  margin-top: -2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-line-name {
  flex: 1;
  font-weight: 500;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-line-qty,
body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-line-shipped {
  color: var(--crm2-muted, #71717a);
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-line-shipped .cw-crm2-o2c-ship-input {
  width: 64px;
  padding: 2px 6px;
  font-size: 12px;
  line-height: 1.4;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-o2c-line .cw-crm2-o2c-ship-save {
  flex-shrink: 0;
  font-size: 12px;
  padding: 2px 8px;
}

/* CI O2C card */
body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress {
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px dashed var(--crm2-border, #e4e4e7);
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-stats {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-label {
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-amt {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-div {
  color: var(--crm2-muted, #71717a);
  font-weight: 400;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-pct {
  margin-left: auto;
  font-weight: 700;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-track {
  position: relative;
  height: 6px;
  border-radius: 999px;
  background: var(--crm2-border, #e4e4e7);
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-track.is-void .cw-crm2-ci-progress-bar {
  background: var(--crm2-muted, #a1a1aa);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-track.is-full .cw-crm2-ci-progress-bar {
  background: #16a34a;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-bar {
  position: absolute;
  inset: 0 auto 0 0;
  border-radius: 999px;
  background: #2563eb;
  transition: width 0.3s ease;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 5px;
  color: var(--crm2-muted, #71717a);
  font-size: 11px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-progress-remaining {
  font-weight: 600;
  color: #b45309;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-plans {
  margin-top: 8px;
  padding: 8px 10px;
  background: var(--crm2-bg-soft, #fafafa);
  border-radius: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-card {
  padding: 12px 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-card-head {
  font-weight: 600;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 4px;
  font-size: 12px;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-meta-item {
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-card .cw-crm2-o2c-stage {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px dashed var(--crm2-border, #e4e4e7);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-plans-title {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 600;
  color: var(--crm2-muted, #71717a);
  margin-bottom: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-plans-count {
  display: inline-block;
  min-width: 16px;
  padding: 0 5px;
  font-size: 10px;
  line-height: 1.5;
  text-align: center;
  border-radius: 999px;
  background: var(--crm2-border, #e4e4e7);
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-plans-title .cw-crm2-ci-plan-new {
  margin-left: auto;
  padding: 1px 8px;
  font-size: 11px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-plans-empty {
  font-size: 12px;
  line-height: 1.5;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-pay-grid {
  display: flex;
  flex-direction: column;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-pay-grid-head,
body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-pay-row {
  display: grid;
  grid-template-columns: 1fr 1.2fr 1fr auto;
  gap: 8px;
  align-items: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-pay-method-select {
  max-width: 110px;
  padding: 3px 6px;
  font-size: 12px;
  line-height: 1.4;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 6px;
  background: #fff;
  color: var(--crm2-text, #33302b);
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-pay-row-ops {
  display: flex;
  justify-content: flex-end;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-pay-grid-head {
  font-size: 10px;
  font-weight: 600;
  color: var(--crm2-muted, #71717a);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  padding: 0 2px 4px;
  border-bottom: 1px solid var(--crm2-border, #e4e4e7);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-pay-row {
  padding: 5px 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-pay-row + .cw-crm2-ci-pay-row {
  border-top: 1px dashed var(--crm2-border, #ececee);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-pay-note {
  grid-column: 1 / -1;
  font-size: 11px;
  color: var(--crm2-muted, #71717a);
  margin-top: -2px;
}

/* Refund / Credit note cards + create form */
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-refund-cards {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-card .cw-crm2-refund-no {
  font-weight: 600;
  color: #b01e2e;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-meta {
  font-size: 12px;
  margin-top: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-reason {
  font-size: 12px;
  margin-top: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-card .cw-crm2-refund-status-wrap {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-status {
  font-size: 12px;
  padding: 3px 6px;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 6px;
  background: var(--crm2-bg, #fff);
  color: var(--crm2-muted, #71717a);
  cursor: pointer;
  max-width: 132px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-lines {
  margin-top: 6px;
  padding: 6px 8px;
  background: var(--crm2-bg-soft, #fafafa);
  border-radius: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-lines-list {
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-table {
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 8px;
  overflow: hidden;
  margin-bottom: 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-row {
  display: grid;
  grid-template-columns: 32px 1fr 100px 72px 72px;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  padding: 8px 12px;
  border-top: 1px solid var(--crm2-border, #f0f0f2);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-row:first-child {
  border-top: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-row--head {
  background: var(--crm2-bg-soft, #fafafa);
  font-size: 11px;
  font-weight: 600;
  color: var(--crm2-muted, #71717a);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  padding: 6px 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-cell-check {
  justify-self: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-cell-name {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-row-name {
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-row-sku {
  font-size: 11px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-row-refunded {
  font-size: 11px;
  color: #b45309;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-cell-price {
  display: flex;
  flex-direction: column;
  gap: 1px;
  text-align: right;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-cell-orig {
  display: flex;
  flex-direction: column;
  gap: 1px;
  text-align: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-row-orig {
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-row-unit {
  font-size: 11px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-qty {
  width: 72px;
  justify-self: end;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-empty {
  padding: 16px;
  border: 1px dashed var(--crm2-border, #e4e4e7);
  border-radius: 8px;
  text-align: center;
  margin-bottom: 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 16px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-total-bar {
  display: flex;
  align-items: baseline;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px dashed var(--crm2-border, #e4e4e7);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-total-label {
  font-size: 13px;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-refund-total {
  font-size: 18px;
  font-weight: 700;
  color: #b01e2e;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-plan-cur,
body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-plan-lock {
  display: inline-block;
  margin-left: 4px;
  padding: 0 6px;
  font-size: 10px;
  line-height: 1.5;
  border-radius: 999px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-plan-cur {
  background: #3a5f9a;
  color: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ci-plan-lock {
  background: var(--crm2-border, #e4e4e7);
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-so-ci-action {
  margin-left: auto;
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero-stage {
  display: none;
}

/* Compact Salesforce-style path (single row segments) */
body.onsites-desk.desk-pane-crm2 .cw-crm2-path {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-track {
  display: flex;
  flex: 1;
  min-width: 0;
  height: 28px;
  gap: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-step {
  position: relative;
  flex: 1;
  min-width: 0;
  height: 100%;
  margin: 0;
  padding: 0 10px;
  border: none;
  background: #f4f4f5;
  color: #71717a;
  font: inherit;
  font-size: 12px;
  font-weight: 500;
  line-height: 1;
  cursor: pointer;
  clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, 0 100%, 8px 50%);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-step:first-child {
  clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 50%, calc(100% - 8px) 100%, 0 100%);
  border-radius: 6px 0 0 6px;
  padding-left: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-step:last-child {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 8px 50%);
  border-radius: 0 6px 6px 0;
  padding-right: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-label {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-step:hover {
  background: #e4e4e7;
  color: #3f3f46;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-step.is-done {
  background: #e8e8ea;
  color: #3f3f46;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-step.is-current {
  background: #18181b;
  color: #fafafa;
  z-index: 1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path.is-won .cw-crm2-path-step.is-done,
body.onsites-desk.desk-pane-crm2 .cw-crm2-path-step.is-won,
body.onsites-desk.desk-pane-crm2 .cw-crm2-path.is-won .cw-crm2-path-step.is-current {
  background: #16a34a;
  color: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-lost {
  flex: 0 0 auto;
  height: 28px;
  padding: 0 10px;
  border: 1px solid #fecaca;
  border-radius: 6px;
  background: #fff;
  color: #b91c1c;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  line-height: 1;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-lost:hover {
  background: #fef2f2;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-lost.is-current {
  background: #b91c1c;
  border-color: #b91c1c;
  color: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-stage-pipe,
body.onsites-desk.desk-pane-crm2 .cw-crm2-progress {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-check {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--crm2-text, #18181b);
  margin-top: 6px;
}

/* Price list / quote editor — flat sections, no card frames */
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn {
  display: flex;
  flex-direction: column;
  gap: 0;
  max-width: none;
  padding: 4px 2px 28px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-about-section {
  border: none;
  border-radius: 0;
  background: transparent;
  padding: 18px 0 8px;
  box-shadow: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-about-section + .cw-crm2-about-section {
  border-top: 1px solid var(--crm2-border, #ececee);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-about-section-title {
  margin: 0 0 12px;
  padding: 0 0 8px;
  font-size: 12px;
  font-weight: 600;
  color: var(--crm2-text, #18181b);
  border-bottom: 1px solid var(--crm2-border, #ececee);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-embed-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 12px !important;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--crm2-border, #ececee);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-embed-head .cw-crm2-about-section-title {
  margin: 0;
  padding: 0;
  border: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-fd-grid {
  gap: 14px 20px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-fd-label {
  font-size: 11px;
  font-weight: 500;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-fd-input,
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn textarea.cw-crm2-fd-input {
  border: none;
  border-bottom: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 0;
  background: transparent;
  padding: 6px 0 7px;
  box-shadow: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-fd-input:focus,
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn textarea.cw-crm2-fd-input:focus {
  outline: none;
  border-bottom-color: var(--crm2-text, #18181b);
  background: transparent;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn select.cw-crm2-fd-input {
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-dt-frame,
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-embed-wrap {
  border: none;
  border-radius: 0;
  background: transparent;
  overflow: visible;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--embed,
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--qtn-lines {
  border-collapse: collapse;
  background: transparent;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--embed thead th,
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--qtn-lines thead th {
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--crm2-border, #ececee);
  padding: 6px 8px 8px 0;
  font-size: 11px;
  font-weight: 500;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--embed tbody td,
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--qtn-lines tbody td {
  border: none;
  border-bottom: 1px solid var(--crm2-border, #f2f2f4);
  padding: 10px 8px 10px 0;
  vertical-align: middle;
  background: transparent;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--embed tbody tr:last-child td,
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--qtn-lines tbody tr:last-child td {
  border-bottom: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--qtn-lines .cw-crm2-fd-input {
  border: none;
  border-bottom: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 0;
  background: transparent;
  padding: 4px 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-fd-actions {
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--crm2-border, #ececee);
  justify-content: flex-start;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-fd-static {
  padding: 6px 0 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-form .cw-crm2-embed-head {
  margin-bottom: 10px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-section {
  margin-bottom: 12px;
}

/* Quotation line table (nested drawer form) */
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines .cw-crm2-fd-input {
  min-width: 0;
  width: 100%;
  font-size: 12px;
  padding: 5px 7px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-line-total {
  background: var(--crm2-surface-2, #f8fafc);
  color: var(--crm2-text, #18181b);
  font-weight: 600;
  border-color: transparent;
  cursor: default;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-lines-foot td {
  padding: 10px;
  border-top: 1px solid var(--crm2-border, #e4e4e7);
  background: var(--crm2-surface-2, #f8fafc);
  font-size: 13px;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-lines-foot--grand td {
  background: var(--crm2-surface, #fff);
  font-weight: 650;
  color: var(--crm2-text, #18181b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-grand-input {
  max-width: 140px;
  margin-left: auto;
  text-align: right;
  font-weight: 650;
  color: var(--crm2-text, #18181b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pct {
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pct .cw-crm2-fd-input {
  width: calc(100% - 18px);
  display: inline-block;
  vertical-align: middle;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pct-suffix {
  margin-left: 2px;
  font-size: 11px;
  color: var(--crm2-muted, #71717a);
}

/* Quotation/PI line table: give the columns explicit widths so the product
   selector has room and the numeric columns don't get crushed in the narrow
   split-view editor. table-layout: fixed honors these widths exactly. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines th:nth-child(1),
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines tbody td:nth-child(1) {
  width: 34%;
  min-width: 150px;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines th:nth-child(2),
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines tbody td:nth-child(2) {
  width: 8%;
  min-width: 64px;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines th:nth-child(3),
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines tbody td:nth-child(3) {
  width: 15%;
  min-width: 90px;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines th:nth-child(4),
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines tbody td:nth-child(4),
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines th:nth-child(5),
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines tbody td:nth-child(5) {
  width: 9%;
  min-width: 66px;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines th:nth-child(6),
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines tbody td:nth-child(6) {
  width: 13%;
  min-width: 84px;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines th:nth-child(7),
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines tbody td:nth-child(7) {
  width: 60px;
  min-width: 60px;
  max-width: 60px;
}

/* A little more breathing room between the columns/inputs. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--qtn-lines thead th,
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-info--shadcn .cw-crm2-table--qtn-lines tbody td {
  padding-right: 10px;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines tbody td.cw-crm2-td--actions {
  padding-right: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-table--qtn-lines tbody td.cw-crm2-qtn-pct .cw-crm2-fd-input {
  width: calc(100% - 14px);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-summary {
  display: none;
}

/* —— Price list detail drawer —— */
body.onsites-desk.desk-pane-crm2.cw-crm2-module-price-lists .cw-crm2-drawer-tabs {
  display: none;
}

body.onsites-desk.desk-pane-crm2.cw-crm2-module-price-lists .cw-crm2-drawer-tabs-wrap {
  display: flex;
  flex-direction: column;
  min-height: 0;
}

body.onsites-desk.desk-pane-crm2.cw-crm2-module-price-lists .cw-crm2-tab-panel {
  padding: 8px 28px 28px;
  overflow: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail {
  display: flex;
  flex-direction: column;
  gap: 0;
  max-width: 960px;
  padding: 4px 0 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-section {
  padding: 20px 0 16px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-section + .cw-crm2-pl-section {
  border-top: 1px solid var(--crm2-border, #ececee);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-about-section-title {
  margin: 0;
  padding: 0 0 10px;
  border: none;
  border-bottom: 1px solid transparent;
  font-size: 13px;
  font-weight: 650;
  letter-spacing: 0.01em;
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-section--basic .cw-crm2-about-section-title {
  margin: 0 0 14px;
  padding-bottom: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-basic-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px 28px;
  align-items: end;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-basic-grid .cw-crm2-fd-field--full {
  grid-column: 1 / -1;
}

@media (max-width: 720px) {
  body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-basic-grid {
    grid-template-columns: 1fr;
  }
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 12px !important;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--crm2-border, #ececee);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-section-head .cw-crm2-about-section-title {
  margin: 0;
  padding: 0;
  border: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-table {
  width: 100%;
}

/* Product * | 产品价格 | 税点 | 删除 — same flat rhythm as quotation lines */
body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-table thead th:nth-child(1),
body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-table tbody td:nth-child(1) {
  width: auto;
  min-width: 220px;
  text-align: left;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-table thead th:nth-child(2),
body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-table tbody td:nth-child(2) {
  width: 140px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-table thead th:nth-child(3),
body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-table tbody td:nth-child(3) {
  width: 110px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-table thead th:nth-child(4),
body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-table tbody td:nth-child(4) {
  width: 72px;
  text-align: right;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-detail .cw-crm2-pl-table .cw-crm2-qtn-pct {
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-footer {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 16px;
  padding: 0;
  border: none;
  background: transparent;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-footer .cw-crm2-btn--primary {
  min-width: 96px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-price-sys-info {
  display: none !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-detail-meta {
  font-size: 13px;
  color: var(--crm2-muted, #6b7280);
}

/* Contract payment / association field cards (flat, no wide table frame) */
body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-cards {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 4px 0 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-card.cw-crm2-pl-line {
  display: block;
  border: none;
  border-bottom: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  padding: 10px 2px 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-card-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-qtn-kind-lead {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  margin: 0;
  padding: 0;
  border: none;
  background: none;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.2;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-qtn-kind-lead--quote {
  color: #b07a2a;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-qtn-kind-lead--pi {
  color: #3a5f9a;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-qtn-kind-dot {
  font-weight: 700;
  opacity: 0.85;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-ctr-card.is-kind-quote {
  --crm2-kind: #b07a2a;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-ctr-card.is-kind-pi {
  --crm2-kind: #3a5f9a;
}

/* Primary quotation: green highlight ring + badge. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-ctr-card.is-primary {
  border: 1px solid rgba(34, 197, 94, 0.55);
  border-left: 3px solid #22c55e;
  border-radius: 8px;
  background: rgba(34, 197, 94, 0.06);
  padding: 10px 12px 12px;
  margin: 2px 0 6px;
  box-shadow: 0 0 0 1px rgba(34, 197, 94, 0.12);
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-ctr-card.is-primary .cw-crm2-qtn-primary-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  padding: 1px 8px;
  border-radius: 999px;
  background: #22c55e;
  color: #ffffff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.02em;
  line-height: 1.5;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-pl-line-idx {
  flex-shrink: 0;
  font-size: 11px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-qtn-price-ico {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  color: #16a34a;
  opacity: 0.85;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-qtn-price-ico.is-locked {
  color: #b91c1c;
  opacity: 0.9;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-card-title {
  font-weight: 600;
  font-size: 14px;
  flex: 1;
  text-align: left;
  background: none;
  border: none;
  padding: 0;
  color: inherit;
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 8px 16px;
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-summary {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 8px 16px;
  margin: 2px 0 12px;
  padding: 10px 12px;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.02);
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-summary .cw-crm2-muted {
  display: block;
  font-size: 11px;
  margin-bottom: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pl-note-full {
  grid-column: 1 / -1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pay-method-select {
  max-width: 160px;
  padding: 4px 6px;
  font-size: 12px;
  line-height: 1.4;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 6px;
  background: #fff;
  color: var(--crm2-text, #33302b);
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-card-grid .cw-crm2-muted {
  display: block;
  font-size: 11px;
  margin-bottom: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-flow {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px dashed var(--crm2-border, #e4e4e7);
  flex-wrap: wrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-flow-step {
  font-size: 11px;
  line-height: 1.3;
  padding: 2px 8px;
  border-radius: 999px;
  border: 1px solid var(--crm2-border, #e4e4e7);
  color: var(--crm2-muted, #71717a);
  white-space: nowrap;
  transition: all 0.15s ease;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-flow-step.is-done {
  background: var(--crm2-kind, #b07a2a);
  border-color: var(--crm2-kind, #b07a2a);
  color: #fff;
  opacity: 0.55;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-flow-step.is-active {
  background: var(--crm2-kind, #b07a2a);
  border-color: var(--crm2-kind, #b07a2a);
  color: #fff;
  opacity: 1;
  font-weight: 700;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-flow-sep {
  width: 8px;
  height: 1px;
  background: var(--crm2-border, #e4e4e7);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-flow.is-void .cw-crm2-qtn-flow-step {
  opacity: 0.35;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-l2c-tree {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--crm2-border, #ececee);
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-totals {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-tot {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  margin: 0;
  padding: 7px 8px;
  border: 1px solid var(--crm2-border, #ececee);
  border-radius: 6px;
  background: #fafafa;
  text-align: left;
  cursor: pointer;
  min-width: 0;
  color: inherit;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-tot.is-gap {
  background: rgba(180, 83, 9, 0.08);
  border-color: #f0d3b0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-tot-k {
  font-size: 10px;
  color: var(--crm2-muted, #6b7280);
  line-height: 1.2;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-tot-v {
  font-size: 13px;
  font-weight: 650;
  font-variant-numeric: tabular-nums;
  line-height: 1.25;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-tot.is-gap .cw-crm2-l2c-tot-v {
  color: #b45309;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-pack {
  border: 1px solid var(--crm2-border, #ececee);
  border-radius: 8px;
  padding: 8px 10px 10px;
  background: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-pack.is-draft {
  border-color: #f0d3b0;
  background: #fffdf8;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-kids {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin: 8px 0 0 6px;
  padding: 4px 0 0 10px;
  border-left: 2px solid var(--crm2-border, #ececee);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-preview {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr) minmax(108px, max-content) 72px;
  column-gap: 8px;
  align-items: start;
  min-height: 28px;
  padding-top: 4px;
  padding-bottom: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-kind,
body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-amt,
body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-status {
  padding-top: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-preview.is-sub {
  margin-left: 12px;
  padding-left: 10px;
  border-left: 2px solid #bbf7d0;
  grid-template-columns: 40px minmax(0, 1fr) minmax(108px, max-content) 72px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-preview.is-gap {
  background: rgba(180, 83, 9, 0.06);
  border-radius: 4px;
  padding: 2px 6px;
  margin-left: -6px;
  margin-right: -6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-card-grid--slim {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-kind {
  font-size: 11px;
  font-weight: 600;
  color: var(--crm2-muted, #71717a);
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-kind.is-quote {
  color: #3f3f46;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-kind.is-invoice {
  color: var(--crm2-accent, #0f766e);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-kind.is-loose {
  color: #b45309;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-main {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-meta {
  font-size: 11px;
  color: var(--crm2-muted, #9ca3af);
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-name {
  font-weight: 600;
  text-align: left;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-amt {
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  text-align: right;
  color: var(--crm2-fg, #18181b);
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-amt .cw-crm2-hl-cur {
  font-size: 11px;
  font-weight: 500;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-status {
  text-align: right;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-flag {
  font-size: 12px;
  font-weight: 600;
  border: none;
  background: transparent;
  padding: 0;
  cursor: pointer;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-flag.is-gap {
  color: #b45309;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-flag.is-ok {
  color: var(--crm2-accent, #0f766e);
  font-weight: 500;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-l2c-empty {
  padding: 4px 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-card-ops {
  display: flex;
  gap: 6px;
  margin-top: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-ctr-card-head .cw-crm2-ctr-card-ops {
  margin-top: 0;
  margin-left: auto;
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-cards .cw-crm2-ctr-card-head .cw-crm2-ops-menu {
  z-index: 60;
}

/* Opportunity「联系人信息」— same card rhythm as quotation cards */
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-cards .cw-crm2-ctr-card-head {
  flex-wrap: wrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-cards .cw-crm2-ctr-card-title {
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-cards .cw-crm2-ctr-card-title.cw-crm2-muted {
  font-weight: 500;
  cursor: default;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-rel-cards .cw-crm2-ctr-card-grid {
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-links {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 8px 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-link-row {
  display: grid;
  grid-template-columns: 88px 1fr;
  gap: 8px;
  align-items: center;
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-archive {
  margin-left: 6px;
  align-self: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-path-archive.is-current {
  font-weight: 600;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-pending_signing,
body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-signed,
body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-in_progress {
  color: #1d4ed8;
  border-color: #bfdbfe;
  background: #eff6ff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-completed_performance {
  color: #15803d;
  border-color: #bbf7d0;
  background: #f0fdf4;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-void,
body.onsites-desk.desk-pane-crm2 .cw-crm2-badge--stage-archived {
  color: #71717a;
  border-color: #e4e4e7;
  background: #fafafa;
}

/* ---- Follow records (跟进) timeline ---- */
body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-panel {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-composer-wrap {
  padding: 12px;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 8px;
  background: #fafafa;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-composer-grid {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) minmax(160px, 1.2fr);
  gap: 10px 14px;
  margin-bottom: 10px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-content {
  resize: vertical;
  min-height: 72px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-composer-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 10px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-item {
  display: grid;
  grid-template-columns: 16px minmax(0, 1fr);
  gap: 10px;
  position: relative;
  padding: 0 0 16px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-item:last-child {
  padding-bottom: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-rail {
  position: relative;
  width: 16px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-rail::before {
  content: '';
  position: absolute;
  left: 6px;
  top: 6px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--crm2-text, #33302b);
  z-index: 1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-item:not(:last-child) .cw-crm2-follow-rail::after {
  content: '';
  position: absolute;
  left: 9px;
  top: 16px;
  bottom: -4px;
  width: 1px;
  background: var(--crm2-border, #e4e4e7);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-body {
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-time {
  font-size: 13px;
  font-weight: 500;
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-owner {
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-ops {
  margin-left: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-text {
  font-size: 14px;
  line-height: 1.5;
  color: var(--crm2-text, #33302b);
  word-break: break-word;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-empty {
  padding: 24px 8px;
  text-align: center;
}

@media (max-width: 720px) {
  body.onsites-desk.desk-pane-crm2 .cw-crm2-follow-composer-grid {
    grid-template-columns: 1fr;
  }
}

/* —— Opportunity board (Cordys billboard) —— */
body.onsites-desk.desk-pane-crm2 .cw-crm2-view-toggle {
  display: inline-flex;
  align-items: stretch;
  height: 32px;
  border: 1px solid var(--crm2-border, #e4e0d8);
  border-radius: 6px;
  overflow: hidden;
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-view-toggle[hidden] {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-view-toggle-btn {
  appearance: none;
  border: 0;
  background: var(--crm2-surface, #fff);
  color: var(--crm2-muted, #8a857c);
  font: inherit;
  font-size: 13px;
  padding: 0 10px;
  cursor: pointer;
  line-height: 1;
  display: inline-flex;
  align-items: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-view-toggle-btn + .cw-crm2-view-toggle-btn {
  border-left: 1px solid var(--crm2-border, #e4e0d8);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-view-toggle-btn.is-on {
  background: var(--crm2-accent-soft, #f3efe6);
  color: var(--crm2-text, #33302b);
  font-weight: 600;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-board {
  display: flex;
  gap: 16px;
  align-items: stretch;
  overflow-x: auto;
  overflow-y: hidden;
  height: 100%;
  min-height: 420px;
  padding: 4px 2px 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-col {
  flex: 0 0 272px;
  width: 272px;
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: var(--crm2-surface-2, #f7f5f0);
  border-radius: var(--crm2-radius-sm, 6px);
  transition: box-shadow 0.15s var(--crm2-ease, ease), outline-color 0.15s var(--crm2-ease, ease);
  outline: 2px solid transparent;
  outline-offset: -2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-col.is-lost {
  background: #faf6f4;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-col.is-drop {
  outline-color: var(--crm2-accent, #8b7355);
  box-shadow: inset 0 0 0 1px var(--crm2-accent, #8b7355);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-col-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 14px 16px 10px;
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-col-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-col-stat {
  font-size: 12px;
  font-weight: 600;
  color: var(--crm2-muted, #8a857c);
  font-variant-numeric: tabular-nums;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-col-body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 0 12px 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-col-empty {
  padding: 48px 8px;
  text-align: center;
  font-size: 13px;
}

/* Cordys billboard card: fixed height, label/value rows */
body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-card {
  box-sizing: border-box;
  height: 168px;
  min-height: 168px;
  max-height: 168px;
  background: var(--crm2-surface, #fff);
  border-radius: var(--crm2-radius-sm, 6px);
  padding: 14px 16px;
  cursor: grab;
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex-shrink: 0;
  box-shadow: 0 1px 0 rgba(40, 36, 30, 0.04);
  transition: box-shadow 0.15s var(--crm2-ease, ease), transform 0.15s var(--crm2-ease, ease);
  user-select: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-card:hover {
  box-shadow: 0 2px 8px rgba(40, 36, 30, 0.08);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-card:active {
  cursor: grabbing;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-card.is-dragging {
  opacity: 0.45;
  box-shadow: none;
  outline: 1px dashed var(--crm2-accent, #8b7355);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-card-name {
  flex-shrink: 0;
  height: 40px;
  font-size: 14px;
  font-weight: 600;
  line-height: 20px;
  color: var(--crm2-accent, #6b5a45);
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
  word-break: break-word;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-card-body {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  justify-content: flex-start;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-card-row {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 22px;
  line-height: 22px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-card-label {
  flex: 0 0 56px;
  width: 56px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
  color: var(--crm2-muted, #8a857c);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-opp-card-value {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
  color: var(--crm2-text, #33302b);
  font-variant-numeric: tabular-nums;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-modal {
  position: fixed;
  inset: 0;
  z-index: 12000;
  display: flex;
  align-items: center;
  justify-content: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-modal[hidden] {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(40, 36, 30, 0.35);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-modal-panel {
  position: relative;
  z-index: 1;
  width: min(420px, calc(100vw - 32px));
  background: var(--crm2-surface, #fff);
  border: 1px solid var(--crm2-border, #e4e0d8);
  border-radius: 8px;
  box-shadow: 0 12px 40px rgba(40, 36, 30, 0.12);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-modal-head h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-modal-body {
  padding: 8px 16px 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-modal-foot {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 8px 16px 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-modal-panel--impact {
  width: min(480px, calc(100vw - 32px));
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-summary {
  margin: 0 0 10px;
  font-size: 13px;
  line-height: 1.45;
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-block {
  margin: 0 0 12px;
  padding: 8px 10px;
  border-radius: 6px;
  background: rgba(185, 28, 28, 0.08);
  color: #b91c1c;
  font-size: 13px;
  line-height: 1.4;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-list {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 1px solid var(--crm2-border, #e4e0d8);
  border-radius: 8px;
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-item {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2px 12px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--crm2-border, #e4e0d8);
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-item:last-child {
  border-bottom: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-item--block {
  background: rgba(185, 28, 28, 0.05);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-item--warn {
  background: rgba(180, 83, 9, 0.05);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-label {
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-count {
  font-variant-numeric: tabular-nums;
  font-weight: 600;
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-samples {
  grid-column: 1 / -1;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-di-target {
  margin: 12px 0 0;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-btn--danger {
  background: #b91c1c;
  border-color: #b91c1c;
  color: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-btn--danger:hover {
  background: #991b1b;
  border-color: #991b1b;
  color: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-card-ops .cw-crm2-row-icos {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  margin-right: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-hint {
  margin: 0 0 10px;
  font-size: 13px;
  line-height: 1.4;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-height: min(360px, 50vh);
  overflow: auto;
  padding: 2px 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-empty {
  padding: 22px 16px;
  text-align: center;
  border: 1px dashed var(--crm2-border, #e4e0d8);
  border-radius: 8px;
  background: var(--crm2-surface-2, #f7f5f0);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-empty-title {
  margin: 0 0 6px;
  font-size: 14px;
  font-weight: 600;
  color: var(--crm2-text, #33302b);
  line-height: 1.35;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-empty-desc {
  margin: 0;
  font-size: 13px;
  color: var(--crm2-muted, #6b6560);
  line-height: 1.45;
  max-width: 34em;
  margin-left: auto;
  margin-right: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  width: 100%;
  margin: 0;
  padding: 10px 12px;
  text-align: left;
  border: 1px solid var(--crm2-border, #e4e0d8);
  border-radius: 8px;
  background: var(--crm2-surface, #fff);
  color: var(--crm2-text, #33302b);
  font: inherit;
  cursor: pointer;
  transition: border-color 0.12s, background 0.12s, box-shadow 0.12s;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-row:hover {
  background: var(--crm2-hover, rgba(51, 48, 43, 0.04));
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-row.is-on {
  border-color: var(--crm2-accent, #8b7355);
  background: var(--crm2-accent-soft, rgba(139, 115, 85, 0.1));
  box-shadow: inset 0 0 0 1px var(--crm2-accent, #8b7355);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-radio {
  flex: 0 0 auto;
  width: 14px;
  height: 14px;
  margin-top: 2px;
  border: 1.5px solid var(--crm2-muted, #6b6560);
  border-radius: 50%;
  box-sizing: border-box;
  position: relative;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-row.is-on .cw-crm2-pi-pick-radio {
  border-color: var(--crm2-accent, #8b7355);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-row.is-on .cw-crm2-pi-pick-radio::after {
  content: '';
  position: absolute;
  inset: 2.5px;
  border-radius: 50%;
  background: var(--crm2-accent, #8b7355);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-main {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
  flex: 1 1 auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-name {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.3;
  word-break: break-word;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-meta {
  font-size: 12px;
  color: var(--crm2-muted, #6b6560);
  line-height: 1.35;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-err {
  margin: 8px 0 0;
  color: #a35a3a;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-foot {
  align-items: center;
  justify-content: flex-start;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-foot-spacer {
  flex: 1 1 auto;
}

/* Empty: Cancel + primary「先新建报价」on the right */
body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-foot.is-empty [data-crm2-pi-pick-new-quote] {
  order: 3;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-foot.is-empty [data-crm2-pi-pick-cancel].cw-crm2-btn {
  order: 2;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pi-pick-foot.is-empty .cw-crm2-pi-pick-foot-spacer {
  order: 1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-lost-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 10px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-lost-chip {
  appearance: none;
  border: 1px solid var(--crm2-border, #e4e0d8);
  background: var(--crm2-surface-2, #f7f5f0);
  color: var(--crm2-text, #33302b);
  border-radius: 999px;
  padding: 4px 10px;
  font: inherit;
  font-size: 12px;
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-lost-textarea {
  min-height: 72px;
  resize: vertical;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-lost-hint {
  margin: 6px 0 0;
  color: #a35a3a;
  font-size: 12px;
}

/* ---- Won next-step banner + payment plan due ---- */
body.onsites-desk.desk-pane-crm2 .cw-crm2-won-banner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px 14px;
  margin-top: 10px;
  padding: 10px 12px;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 8px;
  background: #fafafa;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-won-banner-text {
  font-size: 13px;
  color: var(--crm2-text, #33302b);
  font-weight: 500;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-won-banner-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-won-quote-select {
  min-width: 160px;
  max-width: 240px;
  height: 32px;
  padding: 4px 8px;
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-plan--overdue {
  border-color: #fecaca;
  background: #fff7f7;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-plan--due-soon {
  border-color: #fde68a;
  background: #fffbeb;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-plan-due {
  font-size: 12px;
  font-weight: 600;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-plan-due--overdue,
body.onsites-desk.desk-pane-crm2 .cw-crm2-badge.cw-crm2-ctr-plan-due--overdue {
  color: #b91c1c;
  border-color: #fecaca;
  background: #fef2f2;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ctr-plan-due--soon,
body.onsites-desk.desk-pane-crm2 .cw-crm2-badge.cw-crm2-ctr-plan-due--soon {
  color: #a16207;
  border-color: #fde68a;
  background: #fffbeb;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-embed-table-wrap {
  overflow-x: auto;
  margin-top: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-embed-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-embed-table th,
body.onsites-desk.desk-pane-crm2 .cw-crm2-embed-table td {
  padding: 8px 10px;
  border-bottom: 1px solid var(--cw-border, #e5e7eb);
  text-align: left;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-embed-table th {
  color: var(--cw-muted, #6b7280);
  font-weight: 600;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-embed-row {
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-embed-row:hover {
  background: rgba(59, 130, 246, 0.06);
}

/* —— 添加联系人：按钮下方内联下拉（二选一 + 已有联系人勾选） —— */
body.onsites-desk.desk-pane-crm2 .cw-crm2-add-panel {
  position: fixed;
  width: 320px;
  background: var(--crm2-surface, #fff);
  border: 1px solid var(--crm2-border, #e4e0d8);
  border-radius: 10px;
  box-shadow: 0 10px 32px rgba(51, 48, 43, 0.14);
  padding: 8px;
  z-index: 2000;
  display: block;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-add-panel[hidden] {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-add-choices {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-add-choice {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
  width: 100%;
  text-align: left;
  border: none;
  background: transparent;
  border-radius: 6px;
  padding: 10px 12px;
  cursor: pointer;
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-add-choice:hover {
  background: rgba(51, 48, 43, 0.05);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-add-choice-title {
  font-size: 14px;
  font-weight: 600;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-add-choice-desc {
  font-size: 12px;
  line-height: 1.4;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-add-pick {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pick-q {
  width: 100%;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pick-list {
  max-height: 260px;
  overflow-y: auto;
  border: 1px solid var(--crm2-border, #e4e0d8);
  border-radius: 8px;
  padding: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pick-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 6px;
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pick-row:hover {
  background: rgba(51, 48, 43, 0.05);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pick-row input[type="checkbox"] {
  flex: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pick-name {
  flex: none;
  font-size: 14px;
  font-weight: 500;
  color: var(--crm2-text, #33302b);
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pick-meta {
  font-size: 12px;
  margin-left: auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pick-empty {
  padding: 14px;
  text-align: center;
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-add-pick-foot {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-top: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-pick-count {
  margin-left: auto;
  font-size: 12px;
}

