/* CRM2 — Cordys-inspired module list + overview drawer (Desk MUJI light tokens) */

body.onsites-desk.desk-pane-crm2 .cw-crm2 {
  --crm2-ease: var(--cw-home-ease, cubic-bezier(0.4, 0, 0.2, 1));
  --crm2-radius: 0;
  --crm2-radius-sm: 6px;
  --crm2-accent: var(--mj-wood, #8b7355);
  --crm2-accent-soft: var(--mj-wood-soft, rgba(139, 115, 85, 0.12));
  --crm2-text: var(--mj-ink, #33302b);
  --crm2-muted: var(--mj-ink-2, #6b6560);
  --crm2-border: var(--mj-line, rgba(51, 48, 43, 0.12));
  --crm2-surface: var(--mj-surface, #fffcf8);
  --crm2-surface-2: var(--mj-sunken, #f5f1eb);
  --crm2-hover: var(--mj-hover, rgba(51, 48, 43, 0.05));
  --crm2-list-bg: var(--mj-canvas, #f5f3ef);
  --crm2-drawer-w: min(920px, 92vw);

  display: flex;
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  height: 100%;
  width: 100%;
  color: var(--crm2-text);
  background: var(--crm2-list-bg);
  color-scheme: light;
  position: relative;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-sidebar {
  width: 248px;
  min-width: 248px;
  max-width: 248px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  background: var(--mj-sidebar, #edeae4);
  border-right: 1px solid var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-sidebar-head {
  padding: 9px 8px 7px;
  border-bottom: 1px solid var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-sidebar-head .cw-ws-host {
  margin: 0;
  min-height: 40px;
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-sidebar-foot {
  flex-shrink: 0;
  padding: 6px;
  border-top: 1px solid var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-shell {
  display: flex;
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  background: var(--crm2-surface);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-shell[hidden] {
  display: none !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-rail {
  width: 200px;
  min-width: 200px;
  flex-shrink: 0;
  padding: 14px 8px 12px;
  border-right: 1px solid var(--crm2-border);
  background: var(--crm2-surface-2);
  display: flex;
  flex-direction: column;
  gap: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-rail-title {
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--crm2-muted);
  padding: 0 10px 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-rail-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  width: 100%;
  padding: 8px 10px;
  border: none;
  border-radius: var(--crm2-radius-sm);
  background: transparent;
  color: var(--crm2-text);
  font: inherit;
  font-size: 13px;
  text-align: left;
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-rail-btn:hover:not(:disabled) {
  background: var(--crm2-hover);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-rail-btn.is-on {
  background: var(--cw-nav-chip-bg, #ffffff);
  color: var(--crm2-text);
  font-weight: 650;
  box-shadow: var(
    --cw-nav-chip-shadow,
    0 1px 2px rgba(15, 14, 12, 0.06),
    0 3px 10px rgba(15, 14, 12, 0.07)
  );
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-rail-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-soon {
  font-size: 10px;
  color: var(--crm2-muted);
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-main {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  padding: 0;
  display: flex;
  flex-direction: column;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-panel {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-panel-head {
  padding: 28px 32px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-panel-title {
  margin: 0 0 8px;
  font-size: 22px;
  font-weight: 650;
  letter-spacing: -0.02em;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-panel-sub {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--crm2-muted);
  max-width: 42em;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-panel .cw-crm2-structure-workbench {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2.cw-crm2-module-settings .cw-crm2-list-card {
  display: none !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-rail-group {
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--crm2-muted);
  padding: 10px 10px 3px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-settings-rail-btn:disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

/* ——— Document brand settings ——— */
body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-page {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: auto;
  padding: 20px 24px 28px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-head-select {
  min-width: 220px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-head-actions {
  display: flex;
  align-items: flex-end;
  gap: 6px;
  padding-bottom: 2px;
  flex-wrap: wrap;
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-btn--danger:hover {
  background: #fef2f2;
  color: #b91c1c;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-title {
  margin: 0 0 6px;
  font-size: 22px;
  font-weight: 650;
  letter-spacing: -0.02em;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-sub {
  margin: 0;
  font-size: 13px;
  color: var(--crm2-muted);
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-body--stack {
  display: flex;
  flex-direction: column;
  gap: 20px;
  align-items: stretch;
  flex: 0 0 auto;
  min-height: 0;
  overflow: visible;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-form {
  flex: 0 0 auto;
  width: 100%;
  max-width: none;
  display: flex;
  flex-direction: column;
  gap: 16px;
  overflow: visible;
  padding: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-section {
  border: 1px solid var(--crm2-border);
  border-radius: var(--crm2-radius-sm);
  padding: 16px 18px 18px;
  background: var(--crm2-surface);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-section h2 {
  margin: 0 0 14px;
  font-size: 13px;
  font-weight: 650;
  letter-spacing: 0.02em;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-grid {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-grid--3 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-grid--row {
  display: flex;
  flex-direction: row;
  align-items: flex-end;
  gap: 10px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-custom-row {
  display: grid;
  grid-template-columns: 1fr 1.2fr auto;
  gap: 10px;
  align-items: end;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-custom-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

/* Currency settings panel */
body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 0 0 14px;
  padding: 0;
  list-style: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 14px;
  border: 1px solid var(--crm2-border);
  border-radius: 8px;
  background: var(--crm2-surface);
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-row:hover {
  border-color: var(--crm2-accent-soft, rgba(139, 115, 85, 0.4));
  box-shadow: 0 1px 4px rgba(15, 23, 42, 0.05);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-row.cw-crm2-currency-empty {
  border-style: dashed;
  justify-content: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-row.cw-crm2-currency-empty:hover {
  box-shadow: none;
  border-color: var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-badge {
  flex-shrink: 0;
  width: 42px;
  height: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: var(--crm2-accent-soft);
  color: var(--crm2-accent);
  font-weight: 650;
  font-size: 14px;
  letter-spacing: 0.02em;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-code {
  font-weight: 600;
  font-size: 14px;
  font-variant-numeric: tabular-nums;
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-name {
  flex: 1;
  font-size: 13px;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-default {
  font-size: 12px;
  font-weight: 500;
  color: var(--crm2-accent);
  border: 1px solid var(--crm2-accent);
  border-radius: 999px;
  padding: 2px 10px;
  background: var(--crm2-accent-soft);
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-row .cw-crm2-btn {
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-row .cw-crm2-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo {
  position: relative;
  margin-bottom: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 12px;
  border: 1px solid var(--crm2-border);
  border-radius: var(--crm2-radius-sm);
  background: var(--crm2-surface);
  color: var(--crm2-text);
  font-size: 13px;
  cursor: pointer;
  text-align: left;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-trigger:hover {
  border-color: var(--crm2-accent-soft, rgba(139, 115, 85, 0.4));
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-caret {
  color: var(--crm2-muted);
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-panel {
  position: absolute;
  z-index: 30;
  left: 0;
  right: 0;
  top: calc(100% + 4px);
  border: 1px solid var(--crm2-border);
  border-radius: var(--crm2-radius-sm);
  background: var(--crm2-surface);
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
  padding: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-filter {
  width: 100%;
  margin-bottom: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-list {
  list-style: none;
  margin: 0;
  padding: 0;
  max-height: 220px;
  overflow-y: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-list li {
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-opt {
  width: 100%;
  display: flex;
  align-items: baseline;
  gap: 10px;
  padding: 7px 10px;
  border: none;
  background: transparent;
  color: var(--crm2-text);
  font-size: 13px;
  text-align: left;
  cursor: pointer;
  border-radius: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-opt:hover {
  background: var(--crm2-accent-soft, rgba(139, 115, 85, 0.12));
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-code {
  font-weight: 600;
  min-width: 52px;
  font-variant-numeric: tabular-nums;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-name {
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-combo-none {
  padding: 8px 10px;
  color: var(--crm2-muted);
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-more {
  list-style: none;
  display: flex;
  align-items: center;
  margin-top: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-currency-more .cw-crm2-btn {
  width: 100%;
  justify-content: center;
  border-style: dashed;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-field--logo {
  flex-direction: row;
  align-items: center;
  gap: 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-field-label {
  font-size: 12px;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-input {
  width: 100%;
  padding: 7px 10px;
  border: 1px solid var(--crm2-border);
  border-radius: var(--crm2-radius-sm);
  background: var(--crm2-surface);
  color: var(--crm2-text);
  font: inherit;
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-input:focus {
  outline: none;
  border-color: var(--crm2-accent);
}

body.onsites-desk.desk-pane-crm2 textarea.cw-crm2-brand-input {
  resize: vertical;
  line-height: 1.4;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-input--color {
  width: 56px;
  height: 34px;
  padding: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-box {
  margin-top: 12px;
  padding: 16px;
  border: 1px dashed var(--crm2-border);
  border-radius: var(--crm2-radius-sm);
  background: var(--crm2-surface-2, #fafafa);
  display: flex;
  flex-direction: column;
  gap: 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-box.is-ready {
  border-style: solid;
  background: var(--crm2-surface, #fff);
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-select {
  flex: 1;
  min-width: 220px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-upload-inline {
  flex: 0 0 auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--crm2-text);
  word-break: break-all;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-meta,
body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-empty {
  font-size: 12px;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-file {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 10px 12px;
  border: 1px solid var(--crm2-border);
  border-radius: var(--crm2-radius-sm);
  background: var(--crm2-surface-2, #fafafa);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  justify-content: flex-end;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-upload-btn {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-field-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  margin-top: 8px;
  font-size: 13px;
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-token {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: 12px;
  padding: 3px 8px;
  border-radius: 4px;
  background: var(--crm2-surface-2, #f4f4f5);
  border: 1px solid var(--crm2-border);
  color: #1d4ed8;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-docx-field-arrow {
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-logo-box {
  width: 64px;
  height: 64px;
  flex-shrink: 0;
  border: 1px dashed var(--crm2-border);
  border-radius: var(--crm2-radius-sm);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: var(--crm2-surface-2);
  color: var(--crm2-muted);
  font-size: 11px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-logo-box img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-logo-ops {
  display: flex;
  gap: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-logo-row {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: flex-start;
  grid-column: 1 / -1;
}
/* Logo upload UI retired — keep hidden. Do NOT hide --check:
   quote Layout component toggles reuse .cw-crm2-brand-field--check. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-logo-opts,
body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-logo-aspect,
body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-field--logo,
body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-logo-box {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-comps {
  display: flex;
  flex-direction: column;
  gap: 8px;
  grid-column: 1 / -1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-field--check {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-field--check > span {
  order: 1;
  font-size: 13px;
  color: #334155;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-field--check > input[type='checkbox'] {
  order: 0;
  width: 15px;
  height: 15px;
  margin: 0;
  accent-color: #1e3a8a;
  cursor: pointer;
}

/* Formal preview below form — full-width stage + real A4 iframe */
body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-preview {
  flex: 0 0 auto;
  width: 100%;
  max-width: none;
  min-width: 0;
  display: flex;
  flex-direction: column;
  min-height: 560px;
  border-left: 0;
  margin-left: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-preview-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 4px 10px;
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-preview-label {
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-preview-hint {
  font-size: 11px;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-preview-stage {
  flex: 1 1 auto;
  min-height: 520px;
  height: min(62vh, 720px);
  overflow: auto;
  display: block;
  padding: 16px;
  background: #e8e8ea;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: var(--crm2-radius-sm);
  position: relative;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-preview-sheet {
  position: relative;
  inset: auto;
  width: 100%;
  min-height: calc(100% - 4px);
  height: calc(100% - 4px);
  aspect-ratio: auto;
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  overflow: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-brand-preview-frame {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  background: #e8e8ea;
}

/* drop old mini-paper rules / unused bp-* from prior mock preview */

body.onsites-desk.desk-pane-crm2 .cw-crm2-nav-group {
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--crm2-muted);
  padding: 6px 10px 3px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nav-group:not(:first-child) {
  margin-top: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nav-btn {
  display: flex;
  align-items: center;
  gap: 7px;
  width: 100%;
  padding: 7px 10px;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--crm2-text);
  font-size: 12.5px;
  font-weight: 500;
  cursor: pointer;
  text-align: left;
  transition:
    background 0.15s var(--crm2-ease),
    box-shadow 0.15s var(--crm2-ease);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nav-btn:hover {
  background: var(--crm2-hover);
  box-shadow: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nav-btn.is-on {
  background: var(--cw-nav-chip-bg, #ffffff);
  color: var(--crm2-text);
  font-weight: 650;
  box-shadow: var(
    --cw-nav-chip-shadow,
    0 1px 2px rgba(15, 14, 12, 0.06),
    0 3px 10px rgba(15, 14, 12, 0.07)
  );
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nav-btn.is-on .ico {
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nav-btn .ico {
  width: 16px;
  height: 16px;
  opacity: 0.85;
  flex-shrink: 0;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-main {
  flex: 1;
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  padding: 0;
  overflow: hidden;
  background: var(--crm2-surface);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-card {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  background: var(--crm2-surface);
  border: none;
  border-radius: 0;
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-head {
  display: none;
}

/* Unified toolbar: filter tabs + search / refresh / new on one row */
body.onsites-desk.desk-pane-crm2 .cw-crm2-list-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 0 20px;
  min-height: 46px;
  border-bottom: 1px solid var(--crm2-border);
  flex-wrap: nowrap;
  background: var(--crm2-surface);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-toolbar-start {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: stretch;
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-toolbar-end {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-title-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-count-sr {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-title {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-count {
  display: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-title {
  margin: 0;
  font-size: 18px;
  font-weight: 650;
  letter-spacing: -0.02em;
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-count {
  font-size: 14px;
  font-weight: 500;
  color: var(--crm2-muted);
  margin-left: 6px;
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-search {
  width: 200px;
  min-width: 140px;
  max-width: 240px;
  height: 32px;
  min-height: 32px;
  padding: 0 10px;
  border-radius: 6px;
  border: 1px solid var(--crm2-border);
  background: #fff;
  color: var(--crm2-text);
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-search::placeholder {
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-list-body {
  flex: 1;
  min-height: 0;
  overflow: auto;
  background: var(--crm2-surface);
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-table th {
  text-align: left;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--crm2-muted);
  padding: 10px 18px;
  border-bottom: 1px solid var(--crm2-border);
  background: var(--crm2-surface-2);
  position: sticky;
  top: 0;
  z-index: 1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-table td {
  padding: 11px 18px;
  border-bottom: 1px solid var(--crm2-border);
  vertical-align: middle;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row {
  cursor: pointer;
  transition: background 0.12s var(--crm2-ease);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row:hover {
  background: var(--crm2-hover);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row.is-selected {
  background: var(--crm2-accent-soft);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-row-name {
  font-weight: 600;
  color: var(--mj-wood-deep, #6b5740);
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-empty {
  padding: 48px 24px;
  text-align: center;
  color: var(--crm2-muted);
  font-size: 14px;
}

/* Drawer — Cordys CrmOverviewDrawer pattern */
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer {
  position: absolute;
  inset: 0;
  z-index: 40;
  display: flex;
  flex-direction: column;
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(51, 48, 43, 0.28);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: var(--crm2-drawer-w, min(1100px, 94vw));
  display: flex;
  flex-direction: column;
  background: var(--crm2-surface);
  border-left: 1px solid var(--crm2-border);
  box-shadow: -8px 0 28px rgba(51, 48, 43, 0.12);
  animation: crm2DrawerIn 0.22s var(--crm2-ease);
}

/* Left-edge drag handle — resize detail drawer width */
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-resizer {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 10px;
  margin-left: -5px;
  z-index: 30;
  cursor: col-resize;
  touch-action: none;
  background: transparent;
  border: 0;
  padding: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-resizer::before {
  content: '';
  position: absolute;
  left: -6px;
  right: -6px;
  top: 0;
  bottom: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-resizer::after {
  content: none;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 4px;
  height: 52px;
  border-radius: 999px;
  background: var(--crm2-muted, #6b6560);
  opacity: 0.28;
  transition:
    opacity 0.15s var(--crm2-ease, ease),
    background 0.15s var(--crm2-ease, ease),
    height 0.15s var(--crm2-ease, ease);
  pointer-events: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-resizer:hover::after,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-resizer.is-dragging::after,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel:hover > .cw-crm2-drawer-resizer::after {
  opacity: 0;
  background: var(--crm2-accent, #8b7355);
  height: 64px;
}

body.cw-crm2-drawer-resizing {
  cursor: col-resize !important;
  user-select: none !important;
}

body.cw-crm2-drawer-resizing iframe {
  pointer-events: none !important;
}

@keyframes crm2DrawerIn {
  from {
    transform: translateX(24px);
    opacity: 0.6;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--crm2-border);
  background: var(--crm2-surface);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-title {
  margin: 0;
  font-size: 17px;
  font-weight: 650;
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-close {
  border: none;
  background: transparent;
  color: var(--crm2-muted);
  cursor: pointer;
  padding: 6px;
  border-radius: 6px;
  font-size: 22px;
  line-height: 1;
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-body {
  flex: 1;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(200px, 260px) minmax(0, 1fr);
  background: var(--crm2-surface);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-body:has(#crm2DrawerAbout[hidden]) {
  grid-template-columns: 1fr;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-about {
  padding: 16px 14px;
  border-right: 1px solid var(--crm2-border);
  overflow: auto;
  background: var(--crm2-surface-2);
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-about h3:not(.cw-crm2-about-section-title) {
  margin: 0 0 14px;
  font-size: 12px;
  font-weight: 650;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--crm2-muted);
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-field-label {
  margin: 0 0 6px;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.25;
  color: var(--crm2-muted, #71717a);
  letter-spacing: 0;
  text-transform: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-field-value {
  margin: 0;
  font-size: 14px;
  font-weight: 500;
  line-height: 1.45;
  word-break: break-word;
  color: var(--crm2-text, #18181b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-field-value.is-empty {
  color: var(--crm2-muted, #a1a1aa);
  font-weight: 400;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
  background: var(--crm2-surface);
}

/* Nested quote/PI editor: give the tab panel a definite height so the
   absolute-positioned split preview (top/bottom:0) is not 0px tall. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer .cw-crm2-drawer-tabs-wrap {
  flex: 1 1 0;
  height: 100%;
  min-height: 0;
}

/* Quotation 预览/附件: the nested shell keeps the normal drawer height
   (set by `.cw-crm2-nested-drawer .cw-crm2-drawer-tabs-wrap` above and the
   `.is-pdf-tab` chain when the preview tab is active). No extra sizing here. */

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs {
  display: flex;
  flex-wrap: nowrap;
  align-items: stretch;
  gap: 0;
  padding: 0 12px;
  border-bottom: 1px solid var(--crm2-border);
  flex-shrink: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs[hidden] {
  display: none !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-tab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  flex: 0 0 auto;
  padding: 11px 11px 10px;
  border: none;
  background: transparent;
  color: var(--crm2-muted);
  font-size: 13px;
  font-weight: 500;
  line-height: 1.2;
  cursor: pointer;
  border-radius: 0;
  margin-bottom: -1px;
  border-bottom: 2px solid transparent;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-tab:hover {
  color: var(--crm2-text, #18181b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-tab.is-on {
  color: var(--crm2-text, #18181b);
  background: transparent;
  border: none;
  border-bottom: 2px solid var(--crm2-text, #18181b);
  font-weight: 600;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-tab-label {
  display: inline-block;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-tab-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.15em;
  height: 1.15em;
  padding: 0 4px;
  margin: 0;
  box-sizing: border-box;
  text-align: center;
  font-size: 10px;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  line-height: 1;
  letter-spacing: 0;
  border-radius: 3px;
  background: rgba(51, 48, 43, 0.07);
  color: var(--crm2-muted, #6b6560);
  vertical-align: middle;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-tab.is-on .cw-crm2-tab-badge {
  background: rgba(51, 48, 43, 0.1);
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-tab-soon {
  font-size: 10px;
  font-weight: 500;
  color: var(--crm2-muted);
  opacity: 0.75;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-tab-panel {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 16px 18px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-link-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--crm2-border);
  border-radius: var(--crm2-radius-sm);
  margin-bottom: 8px;
  cursor: pointer;
  transition: background 0.12s;
  background: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-link-row:hover {
  background: var(--crm2-hover);
}

@media (max-width: 768px) {
  body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-body {
    grid-template-columns: 1fr;
  }
  body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-about {
    border-right: none;
    border-bottom: 1px solid var(--crm2-border);
    max-height: 40vh;
  }
}

/* Cordys-style nested detail drawer (quotation on top of opportunity) */
body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer {
  position: absolute;
  inset: 0;
  z-index: 55;
  display: flex;
  flex-direction: column;
  /* Must accept hits; children alone are unreliable under some stacking contexts. */
  pointer-events: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer[hidden] {
  display: none !important;
  pointer-events: none !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-backdrop {
  position: absolute;
  inset: 0;
  z-index: 0;
  background: rgba(24, 24, 27, 0.28);
  pointer-events: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer > .cw-crm2-drawer-panel {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  width: var(--crm2-drawer-w, min(1100px, 94vw));
  display: flex;
  flex-direction: column;
  background: var(--crm2-surface, #fff);
  border-left: 1px solid var(--crm2-border, #e4e4e7);
  box-shadow: -8px 0 28px rgba(51, 48, 43, 0.12);
  pointer-events: auto;
  animation: crm2NestedIn 0.22s var(--crm2-ease, ease);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-panel {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 1;
  width: var(--crm2-drawer-w, min(1100px, 94vw));
  display: flex;
  flex-direction: column;
  background: var(--crm2-surface, #fff);
  border-left: 1px solid var(--crm2-border, #e4e4e7);
  box-shadow: -8px 0 28px rgba(51, 48, 43, 0.12);
  pointer-events: auto;
  animation: crm2NestedIn 0.22s var(--crm2-ease, ease);
}

@keyframes crm2NestedIn {
  from {
    transform: translateX(28px);
    opacity: 0.55;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-head {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0;
  border-bottom: 1px solid var(--crm2-border);
  background: var(--crm2-surface, #fff);
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-head-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 16px 20px 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-head-text {
  flex: 1 1 auto;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-kicker {
  margin: 0 0 4px;
  font-size: 11px;
  font-weight: 600;
  color: var(--crm2-muted, #71717a);
}

/* Lead-style kickers (cw-crm2-doc-lead) — color comes from kind class, not muted. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-kicker.cw-crm2-doc-lead {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: inherit;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-kicker[hidden] {
  display: none !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-title {
  margin: 0;
  font-size: 17px;
  font-weight: 650;
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  position: relative;
  z-index: 2;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer .cw-crm2-drawer-head {
  align-items: flex-start;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer .cw-crm2-drawer-body:has(#crm2NestedDrawerAbout[hidden]) {
  grid-template-columns: 1fr;
  grid-template-rows: minmax(0, 1fr);
  min-height: 0;
}

body.onsites-desk.desk-pane-crm2 #crm2NestedDrawerBody .cw-crm2-qtn-form {
  max-width: none;
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-scroll .cw-crm2-qtn-form {
  max-width: none;
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-tabs {
  display: flex;
  gap: 0;
  margin: 0;
  padding: 0 20px;
  border-top: 1px solid var(--crm2-border, #ececee);
  width: 100%;
  box-sizing: border-box;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-tabs[hidden] {
  display: none !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-tab {
  appearance: none;
  border: none;
  background: transparent;
  color: var(--crm2-muted, #71717a);
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.4;
  padding: 10px 14px 11px;
  margin-bottom: -1px;
  border-bottom: 2px solid transparent;
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-tab.is-on {
  color: var(--crm2-text, #18181b);
  border-bottom-color: var(--crm2-text, #18181b);
  font-weight: 600;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-tab.is-disabled,
body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-tab:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer-scroll .cw-crm2-qtn-nested,
body.onsites-desk.desk-pane-crm2 #crm2NestedDrawerBody .cw-crm2-qtn-nested {
  height: 100%;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/* Architecture A: every visible panel is a flex child that fills the single
   height container. Switching is pure [hidden]; no per-tab height overrides. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-nested-panel:not([hidden]) {
  flex: 1 1 auto;
  min-height: 0;
  height: 100%;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-nested-panel[hidden] {
  display: none !important;
  visibility: hidden !important;
  pointer-events: none !important;
  position: static !important;
  inset: auto !important;
}

/* Full-width quotation form. The PDF preview now lives in its own 预览
   subtab (no more side-by-side split with a draggable divider). The form is a
   flex column filling the panel; each subtab panel scrolls on its own. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-nested-panel[data-crm2-qtn-panel="edit"] .cw-crm2-qtn-form {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 10px 12px;
  background: var(--crm2-surface, #fff);
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form .cw-crm2-qtn-subtabs {
  flex-shrink: 0;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form .cw-crm2-qtn-subtab-panel {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 4px 20px 20px;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form .cw-crm2-qtn-subtab-panel[hidden] {
  display: none !important;
}

/* Quotation 预览 uses the same generic `.is-pdf-tab` grid chain as
   contracts/invoices (which render fine). fitPreviewStage already sets
   `--cw-pdf-toolbar-h: 0` because the quote preview has no toolbar, so the
   generic absolute stage gets `top:0` and fills the panel — no per-panel
   flex override needed (that flex override was breaking the grid chain). */

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form--stacked .cw-crm2-qtn-form-section--head {
  margin-bottom: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form--stacked .cw-crm2-qtn-form-section--head .cw-crm2-fd-field + .cw-crm2-fd-field {
  margin-top: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form--stacked .cw-crm2-qtn-form-grid {
  grid-template-columns: 1fr;
  gap: 6px;
}

/* 基本信息 tab: two-column layout for the head / meta / doc-settings blocks. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-basic-grid {
  grid-template-columns: 1fr 1fr;
  gap: 10px 14px;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-basic-grid .cw-crm2-fd-field--full {
  grid-column: 1 / -1;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-meta-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 14px;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-meta-grid .cw-crm2-qtn-meta-row {
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-layout-field .cw-crm2-qtn-check {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  line-height: 1.4;
  color: var(--crm2-text, #18181b);
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-layout-field .cw-crm2-qtn-check input[type="checkbox"] {
  accent-color: var(--crm2-accent, #2563eb);
  width: 15px;
  height: 15px;
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-subtabs {
  display: flex;
  gap: 4px;
  margin: 0 0 14px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--crm2-border, #ececee);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-subtab {
  appearance: none;
  border: none;
  background: transparent;
  color: var(--crm2-muted, #71717a);
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.4;
  padding: 6px 12px;
  border-radius: 6px;
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-subtab.is-on {
  background: var(--crm2-surface-2, #f4f4f5);
  color: var(--crm2-text, #18181b);
  font-weight: 600;
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form--stacked .cw-crm2-fd-hint[data-crm2-qtn-company-hint] {
  margin: 0 0 10px;
  font-size: 11px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form--stacked .cw-crm2-opp-info--shadcn .cw-crm2-fd-label {
  margin-bottom: 2px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form--stacked .cw-crm2-opp-info--shadcn .cw-crm2-fd-input,
body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form--stacked .cw-crm2-opp-info--shadcn textarea.cw-crm2-fd-input {
  padding: 4px 0 5px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-meta-block {
  padding: 8px 10px;
  background: var(--crm2-surface-muted, #fafafa);
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: 6px;
  display: flex;
  flex-direction: column;
  gap: 5px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-meta-row {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 22px;
  font-size: 12px;
  line-height: 1.35;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-meta-row--field {
  align-items: flex-start;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-meta-label {
  flex: 0 0 64px;
  font-size: 11px;
  font-weight: 500;
  color: var(--crm2-muted, #71717a);
  padding-top: 5px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-meta-row:not(.cw-crm2-qtn-meta-row--field) .cw-crm2-qtn-meta-label {
  padding-top: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-meta-value {
  flex: 1;
  min-width: 0;
  font-weight: 600;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.01em;
  color: var(--crm2-text, #18181b);
  word-break: break-all;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-meta-input {
  flex: 1;
  min-width: 0;
  font-size: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form--stacked .cw-crm2-about-section-title {
  font-size: 12px;
  font-weight: 600;
  margin-bottom: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-form--stacked .cw-crm2-embed-head {
  margin-bottom: 6px !important;
}

/* PDF / file preview locked pane (contracts, invoices). The panel is already
   top/bottom:0 — pass that height with Grid 1fr; stage pins to section bottom
   below the toolbar. Quotation 预览 (no toolbar) overrides these below. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer:has(.is-pdf-tab) > .cw-crm2-drawer-panel,
body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer:has(.is-pdf-tab) > .cw-crm2-drawer-panel,
body.onsites-desk.desk-pane-crm2 .cw-crm2-nested-drawer:has(.is-pdf-tab) .cw-crm2-nested-drawer-panel {
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-body.is-pdf-tab {
  flex: 1 1 0;
  grid-template-columns: 1fr;
  grid-template-rows: minmax(0, 1fr);
  min-height: 0;
  max-height: 100%;
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  height: 100%;
  max-height: 100%;
  min-height: 0;
  overflow: hidden;
  align-self: stretch;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab .cw-crm2-tab-panel {
  min-height: 0;
  max-height: 100%;
  overflow: hidden;
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  padding: 8px 12px 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab .cw-crm2-qtn-nested,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab .cw-crm2-qtn-nested-panel:not([hidden]) {
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  min-height: 0;
  height: 100%;
  max-height: 100%;
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab .cw-crm2-qtn-pdf,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab .cw-crm2-qtn-pdf.cw-crm2-opp-info--shadcn {
  padding: 0;
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  min-height: 0;
  height: 100%;
  max-height: 100%;
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab .cw-crm2-qtn-pdf-section {
  position: relative;
  padding: 0 !important;
  border: none !important;
  background: transparent !important;
  box-shadow: none !important;
  display: block;
  min-height: 0;
  height: 100%;
  max-height: 100%;
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0 0 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--crm2-border, #ececee);
  position: relative;
  z-index: 1;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-toolbar-start {
  min-width: 0;
  display: flex;
  align-items: baseline;
  gap: 10px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-toolbar .cw-crm2-about-section-title {
  margin: 0;
  padding: 0;
  border: none;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-meta {
  font-size: 12px;
  color: var(--crm2-muted, #71717a);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-actions {
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-shrink: 0;
}

/* Pin stage to section bottom so it cannot stretch the drawer taller than
   Edit. Contracts/invoices (with toolbar) rely on this. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab .cw-crm2-qtn-pdf-stage {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: var(--cw-pdf-toolbar-h, 52px);
  min-height: 0;
  overflow: hidden;
  border-radius: var(--crm2-radius-sm, 8px);
  background: linear-gradient(180deg, #f4f4f5 0%, #ececee 100%);
  border: 1px solid var(--crm2-border, #e4e4e7);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-stage {
  position: relative;
  min-height: 0;
  overflow: hidden;
  border-radius: var(--crm2-radius-sm, 8px);
  background: linear-gradient(180deg, #f4f4f5 0%, #ececee 100%);
  border: 1px solid var(--crm2-border, #e4e4e7);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-sheet {
  position: absolute;
  inset: 8px;
  max-width: none;
  margin: 0;
  background: #fff;
  border: 1px solid rgba(24, 24, 27, 0.08);
  border-radius: 4px;
  box-shadow:
    0 1px 2px rgba(24, 24, 27, 0.06),
    0 12px 32px rgba(24, 24, 27, 0.08);
  overflow: hidden;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-frame {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  background: #fff;
}

/* Quotation 预览 (inline scaled scheme): render the saved snapshot's A4 page,
   scaled down to fit the stage width and centered; taller content scrolls
   vertically in the stage. Scoped to the quotation panel AND the .is-pdf-tab
   chain (which would otherwise pin overflow:hidden / top:var(--cw-pdf-toolbar-h)). */
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab [data-crm2-qtn-pdf] .cw-crm2-qtn-pdf-stage {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  min-height: 0;
  overflow: auto;
  border-radius: var(--crm2-radius-sm, 8px);
  background: linear-gradient(180deg, #f4f4f5 0%, #ececee 100%);
  border: 1px solid var(--crm2-border, #e4e4e7);
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab [data-crm2-qtn-pdf] .cw-crm2-qtn-pdf-sheet {
  position: static;
  inset: auto;
  width: auto;
  height: auto;
  margin: 0;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
  overflow: visible;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-tabs-wrap.is-pdf-tab [data-crm2-qtn-pdf] .cw-crm2-qtn-pdf-frame {
  position: relative;
  inset: auto;
  display: block;
  margin: 0 auto;
  border: 0;
  background: #fff;
  box-shadow: 0 4px 24px rgba(24, 24, 27, 0.12);
}

/* Fullscreen document preview overlay. */
body.onsites-desk.desk-pane-crm2 .cw-qtn-fullscreen,
body.onsites-desk .cw-qtn-fullscreen {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2147483000;
  display: flex;
  flex-direction: column;
  background: #e8e8ea;
}
body.onsites-desk.desk-pane-crm2 .cw-qtn-fullscreen-bar {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 14px;
  background: #fff;
  border-bottom: 1px solid var(--crm2-border, #e4e4e7);
  box-shadow: 0 1px 2px rgba(24, 24, 27, 0.06);
}
body.onsites-desk.desk-pane-crm2 .cw-qtn-fullscreen-title {
  font-size: 14px;
  font-weight: 650;
  color: var(--crm2-text, #18181b);
}
body.onsites-desk.desk-pane-crm2 .cw-qtn-fullscreen-frame {
  flex: 1 1 auto;
  min-height: 0;
  width: 100%;
  height: 100%;
  border: 0;
  background: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-versions-section {
  padding-bottom: 16px !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-versions-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 28px 16px;
  border: 1px dashed var(--crm2-border, #d4d4d8);
  border-radius: var(--crm2-radius-sm, 8px);
  background: #fafafa;
  text-align: center;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-empty-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 999px;
  background: #fff;
  border: 1px solid var(--crm2-border, #e4e4e7);
  color: var(--crm2-muted, #a1a1aa);
  margin-bottom: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-empty-title {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--crm2-text, #18181b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-empty-hint {
  margin: 0;
  max-width: 280px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-item {
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-open {
  appearance: none;
  width: 100%;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border: 1px solid var(--crm2-border, #e4e4e7);
  border-radius: var(--crm2-radius-sm, 8px);
  background: #fff;
  text-align: left;
  cursor: pointer;
  transition: background 0.12s, border-color 0.12s;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-open:hover {
  background: var(--crm2-hover, #fafafa);
  border-color: #d4d4d8;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 34px;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--crm2-muted, #f4f4f5);
  font-size: 11px;
  font-weight: 700;
  color: var(--crm2-text, #18181b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-main {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-no {
  font-size: 13px;
  font-weight: 600;
  color: var(--crm2-text, #18181b);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-amt {
  font-size: 12px;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-when {
  font-size: 11px;
  color: var(--crm2-muted, #a1a1aa);
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-seq {
  display: inline-block;
  min-width: 1.5em;
  margin-right: 2px;
  font-size: 11px;
  font-weight: 700;
  color: var(--crm2-muted, #71717a);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-empty {
  padding: 24px 0;
  text-align: center;
  font-size: 13px;
}

@media (max-width: 720px) {
  body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-open {
    grid-template-columns: auto 1fr;
  }

  body.onsites-desk.desk-pane-crm2 .cw-crm2-qtn-pdf-version-when {
    grid-column: 2;
  }
}

/* —— Document / entity kind chrome (hard visual distinction) —— */
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-head-text {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

/* Legacy pill kicker (kept for any leftover class); new paint uses cw-crm2-doc-lead. */
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker:not(.cw-crm2-doc-lead) {
  margin: 0;
  display: inline-flex;
  align-self: flex-start;
  align-items: center;
  max-width: 100%;
  padding: 2px 8px;
  border-radius: 3px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  line-height: 1.35;
  text-transform: none;
  border: 1px solid transparent;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker[hidden],
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-lead[hidden] {
  display: none !important;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-head .cw-crm2-doc-lead {
  margin: 0 0 2px;
  padding: 0;
  border: none;
  background: none;
  align-self: flex-start;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero-kind {
  margin: 0 0 6px;
  align-self: flex-start;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel {
  border-left-width: 0;
  border-left-style: solid;
  border-left-color: var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind {
  display: inline-flex;
  align-items: center;
  margin-left: 8px;
  padding: 1px 6px;
  border-radius: 3px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.03em;
  line-height: 1.4;
  border: 1px solid transparent;
  vertical-align: middle;
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-file-cell {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px 0;
  min-width: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-file-cell.is-child {
  padding-left: 14px;
}

/* Kind palettes — each document type gets a distinct feel */
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--company,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--company,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--company {
  --crm2-kind: #8b7355;
  --crm2-kind-soft: rgba(139, 115, 85, 0.14);
  --crm2-kind-ink: #5c4a36;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--contact,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--contact,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--contact {
  --crm2-kind: #5b6b7a;
  --crm2-kind-soft: rgba(91, 107, 122, 0.14);
  --crm2-kind-ink: #3d4954;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--opportunity,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--opportunity,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--opportunity {
  --crm2-kind: #2f6f6a;
  --crm2-kind-soft: rgba(47, 111, 106, 0.14);
  --crm2-kind-ink: #1f4a47;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--quote,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--quote,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--quote {
  --crm2-kind: #b07a2a;
  --crm2-kind-soft: rgba(176, 122, 42, 0.16);
  --crm2-kind-ink: #6e4a12;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--pi,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--pi,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--pi {
  --crm2-kind: #3a5f9a;
  --crm2-kind-soft: rgba(58, 95, 154, 0.15);
  --crm2-kind-ink: #243c66;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--contract,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--contract,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--contract {
  --crm2-kind: #3d6b45;
  --crm2-kind-soft: rgba(61, 107, 69, 0.15);
  --crm2-kind-ink: #26442c;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--order,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--order,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--order {
  --crm2-kind: #a05a3c;
  --crm2-kind-soft: rgba(160, 90, 60, 0.15);
  --crm2-kind-ink: #6a3724;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--invoice,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--invoice,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--invoice {
  --crm2-kind: #8a3d4a;
  --crm2-kind-soft: rgba(138, 61, 74, 0.14);
  --crm2-kind-ink: #5a2530;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--product,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--product,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--product {
  --crm2-kind: #6a7340;
  --crm2-kind-soft: rgba(106, 115, 64, 0.14);
  --crm2-kind-ink: #414828;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--priceList,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--priceList,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--priceList {
  --crm2-kind: #6e6558;
  --crm2-kind-soft: rgba(110, 101, 88, 0.14);
  --crm2-kind-ink: #433e36;
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--file,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--file,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--file,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--attach,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--attach,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--attach {
  --crm2-kind: #4a4743;
  --crm2-kind-soft: rgba(74, 71, 67, 0.12);
  --crm2-kind-ink: #2e2c29;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--company,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--contact,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--opportunity,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--quote,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--pi,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--contract,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--order,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--invoice,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--product,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--priceList,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--file,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--attach {
  border-left-color: var(--crm2-kind);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--quote > .cw-crm2-drawer-head,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--pi > .cw-crm2-drawer-head,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--contract > .cw-crm2-drawer-head,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--order > .cw-crm2-drawer-head,
body.onsites-desk.desk-pane-crm2 .cw-crm2-drawer-panel--invoice > .cw-crm2-drawer-head {
  background: var(--crm2-surface);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--company,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--contact,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--opportunity,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--quote,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--pi,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--contract,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--order,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--invoice,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--product,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--priceList,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--file,
body.onsites-desk.desk-pane-crm2 .cw-crm2-doc-kicker--attach,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--company,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--contact,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--opportunity,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--quote,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--pi,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--contract,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--order,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--invoice,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--product,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--priceList,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--file,
body.onsites-desk.desk-pane-crm2 .cw-crm2-file-kind--attach {
  color: var(--crm2-kind-ink);
  background: var(--crm2-kind-soft);
  border-color: color-mix(in srgb, var(--crm2-kind) 28%, transparent);
}

/* Hero tint by kind */
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero.is-kind-quote .cw-crm2-record-hero-top,
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero.is-kind-pi .cw-crm2-record-hero-top,
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero.is-kind-contract .cw-crm2-record-hero-top,
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero.is-kind-order .cw-crm2-record-hero-top,
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero.is-kind-invoice .cw-crm2-record-hero-top {
  border-bottom: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero.is-kind-quote {
  --crm2-kind: #b07a2a;
  --crm2-kind-soft: rgba(176, 122, 42, 0.16);
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero.is-kind-pi {
  --crm2-kind: #3a5f9a;
  --crm2-kind-soft: rgba(58, 95, 154, 0.15);
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero.is-kind-contract {
  --crm2-kind: #3d6b45;
  --crm2-kind-soft: rgba(61, 107, 69, 0.15);
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero.is-kind-order {
  --crm2-kind: #a05a3c;
  --crm2-kind-soft: rgba(160, 90, 60, 0.15);
}
body.onsites-desk.desk-pane-crm2 .cw-crm2-record-hero.is-kind-invoice {
  --crm2-kind: #8a3d4a;
  --crm2-kind-soft: rgba(138, 61, 74, 0.14);
}

/* —— Structure workbench (对象结构配置) —— */
body.onsites-desk.desk-pane-crm2 .cw-crm2-structure-workbench {
  flex: 1 1 auto;
  min-height: 0;
  min-width: 0;
  display: flex;
  overflow: hidden;
  background: var(--crm2-list-bg, #f5f3ef);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-structure-workbench[hidden] {
  display: none !important;
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-rail {
  width: 152px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 10px 8px;
  border-right: 1px solid var(--crm2-border);
  background: var(--crm2-surface, #fffcf8);
  overflow: auto;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-rail-title {
  margin: 2px 4px 4px;
  font-size: 10px;
  font-weight: 650;
  letter-spacing: 0.04em;
  color: var(--crm2-muted);
  text-transform: uppercase;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-rail-title--next {
  margin-top: 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-rail-empty {
  margin: 2px 4px 4px;
  font-size: 11px;
  line-height: 1.4;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-rail-create {
  margin: 4px 0 6px;
  width: 100%;
  padding: 6px 8px;
  font-size: 11px;
  line-height: 1.3;
  min-height: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-mounts {
  margin-bottom: 16px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-mount-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid var(--crm2-border);
  font-size: 13px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-mount-row:last-child {
  border-bottom: none;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-obj {
  appearance: none;
  border: none;
  background: transparent;
  text-align: left;
  padding: 6px 9px;
  border-radius: 5px;
  font: inherit;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.35;
  color: var(--crm2-text);
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-obj:hover {
  background: var(--crm2-hover);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-obj.is-on {
  background: var(--crm2-accent-soft);
  color: var(--crm2-accent);
  font-weight: 650;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--crm2-surface, #fffcf8);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-head {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px 20px 0;
  border-bottom: 1px solid var(--crm2-border);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-title {
  margin: 0;
  font-size: 18px;
  font-weight: 650;
  color: var(--crm2-text);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-title-sep {
  margin: 0 0.35em;
  opacity: 0.45;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-sub {
  margin: 4px 0 0;
  font-size: 12px;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-caps {
  display: flex;
  gap: 0;
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-cap {
  appearance: none;
  border: none;
  background: transparent;
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  color: var(--crm2-muted);
  padding: 10px 14px 11px;
  margin-bottom: -1px;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-cap.is-on {
  color: var(--crm2-text);
  border-bottom-color: var(--crm2-text);
  font-weight: 650;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-cap.is-disabled,
body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-cap:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-soon {
  font-size: 10px;
  font-weight: 600;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-body {
  flex: 1;
  min-height: 0;
  overflow: auto;
  padding: 16px 20px 28px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-section-title {
  margin: 0 0 10px;
  font-size: 13px;
  font-weight: 650;
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-table th,
body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-table td {
  text-align: left;
  padding: 9px 10px;
  border-bottom: 1px solid var(--crm2-border);
  vertical-align: middle;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-table th {
  font-size: 11px;
  font-weight: 650;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-row-acts {
  text-align: right;
  white-space: nowrap;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-row-acts .cw-crm2-btn-link {
  margin-left: 10px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-row-acts .is-danger {
  color: #a14b4b;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-empty {
  padding: 28px 8px;
  color: var(--crm2-muted);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-empty strong {
  display: block;
  margin-bottom: 6px;
  color: var(--crm2-text);
  font-size: 14px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-empty p {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-blank {
  margin: 0;
  padding: 8px 0 4px;
}

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

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(51, 48, 43, 0.32);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-modal {
  position: relative;
  z-index: 1;
  width: min(420px, 92vw);
  padding: 18px 18px 16px;
  background: var(--crm2-surface, #fffcf8);
  border: 1px solid var(--crm2-border);
  box-shadow: 0 12px 40px rgba(51, 48, 43, 0.18);
  display: flex;
  flex-direction: column;
  gap: 12px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-modal-title {
  margin: 0;
  font-size: 15px;
  font-weight: 650;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
  font-size: 12px;
  font-weight: 650;
  color: var(--crm2-text, #33302b);
}

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

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-field > span:first-child {
  color: var(--crm2-text, #33302b);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-field-hint {
  font-size: 11px;
  font-weight: 500;
  line-height: 1.4;
  color: var(--crm2-muted, #6b6560);
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-field input,
body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-field select {
  font: inherit;
  font-size: 13px;
  font-weight: 500;
  color: var(--crm2-text);
  padding: 8px 10px;
  border: 1px solid var(--crm2-border);
  border-radius: 6px;
  background: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-modal-acts {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 4px;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-modal-acts .cw-crm2-btn {
  min-height: 36px;
  padding: 8px 16px;
  font-size: 13px;
  font-weight: 650;
  border: 1px solid var(--crm2-border, #ddd6cb);
  border-radius: 6px;
  background: #fff;
  color: var(--crm2-text, #33302b);
  cursor: pointer;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-modal-acts .cw-crm2-btn--primary {
  background: #6f5a42;
  border-color: #6f5a42;
  color: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-modal-acts .cw-crm2-btn--primary:hover {
  background: #5c4a36;
  border-color: #5c4a36;
  color: #fff;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-toolbar-acts {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-check {
  flex-direction: row;
  align-items: center;
  gap: 8px;
  font-weight: 500;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-struct-check input {
  width: auto;
  margin: 0;
}

body.onsites-desk.desk-pane-crm2 .cw-crm2-ct-embed-table {
  margin-top: 4px;
}

