:root {
  --primary: #2563eb;
  --primary-dark: #1d4ed8;
  --bg: #f4f6fa;
  --card: #ffffff;
  --border: #e3e8ef;
  --text: #1f2937;
  --muted: #6b7280;
  --danger: #dc2626;
  --warn: #d97706;
  --ok: #16a34a;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: -apple-system, "Segoe UI", "Microsoft YaHei", Roboto, sans-serif;
  background: var(--bg);
  color: var(--text);
  font-size: 14px;
  line-height: 1.6;
}

a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }

/* 顶部导航 */
.navbar {
  background: #1e293b;
  color: #fff;
  padding: 0 20px;
  display: flex;
  align-items: center;
  height: 52px;
  gap: 4px;
  flex-wrap: wrap;
}
.navbar .brand { font-weight: 700; font-size: 16px; margin-right: 20px; color: #fff; }
.navbar a { color: #cbd5e1; padding: 6px 12px; border-radius: 6px; }
.navbar a:hover { background: #334155; color: #fff; text-decoration: none; }
.navbar a.active { background: var(--primary); color: #fff; }
.navbar .spacer { flex: 1; }
.navbar .user { color: #94a3b8; font-size: 13px; }

.container { max-width: 1180px; margin: 22px auto; padding: 0 18px; }

/* 页头 */
.page-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.page-head h1 { font-size: 20px; margin: 0; }

/* 卡片 */
.card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 18px;
  margin-bottom: 16px;
}
.card h2 { font-size: 15px; margin: 0 0 12px; color: #334155; }

/* 统计块 */
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; margin-bottom: 18px; }
.stat { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 16px; }
.stat .label { color: var(--muted); font-size: 13px; }
.stat .value { font-size: 24px; font-weight: 700; margin-top: 4px; }
.stat .value.warn { color: var(--warn); }
.stat .value.danger { color: var(--danger); }
.stat .value.ok { color: var(--ok); }

/* 表格 */
table { width: 100%; border-collapse: collapse; background: var(--card); }
.table th, .table td { padding: 10px 12px; border-bottom: 1px solid var(--border); text-align: left; }
.table th { background: #f8fafc; color: #475569; font-weight: 600; font-size: 13px; }
.table tr:hover td { background: #f9fbfd; }
.table .num { text-align: right; font-variant-numeric: tabular-nums; }

/* 按钮 */
.btn {
  display: inline-block;
  padding: 7px 14px;
  border-radius: 7px;
  border: 1px solid var(--primary);
  background: var(--primary);
  color: #fff;
  cursor: pointer;
  font-size: 13px;
  line-height: 1.2;
}
.btn:hover { background: var(--primary-dark); text-decoration: none; color: #fff; }
.btn.ghost { background: #fff; color: var(--primary); }
.btn.ghost:hover { background: #eff4ff; }
.btn.sm { padding: 4px 10px; font-size: 12px; }
.btn.danger { background: var(--danger); border-color: var(--danger); }
.btn.gray { background: #64748b; border-color: #64748b; }

/* 徽标 */
.badge { display: inline-block; padding: 2px 9px; border-radius: 20px; font-size: 12px; font-weight: 600; }
.badge.gray { background: #e2e8f0; color: #475569; }
.badge.blue { background: #dbeafe; color: #1d4ed8; }
.badge.green { background: #dcfce7; color: #15803d; }
.badge.amber { background: #fef3c7; color: #b45309; }
.badge.red { background: #fee2e2; color: #b91c1c; }

/* 表单 */
.form-row { margin-bottom: 14px; }
.form-row label { display: block; font-weight: 600; margin-bottom: 5px; color: #374151; }
.form-control, .form-select {
  width: 100%; padding: 8px 10px; border: 1px solid #cbd5e1;
  border-radius: 7px; font-size: 14px; background: #fff;
}
.form-control:focus, .form-select:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.form-check-input { width: 16px; height: 16px; vertical-align: middle; }
.help, .errorlist { color: var(--danger); font-size: 12px; margin-top: 4px; list-style: none; padding: 0; }

/* 工作台「订单预警」按订单合并卡 */
.alert-section-title { color: #b45309; border-left-color: #f59e0b; font-size: 17px; }
.order-alert { border-left: 5px solid #fcd34d; background: #fffdf5; }
.order-alert.warn { border-left-color: #f59e0b; background: #fffbeb; }
.order-alert.overdue { border-left-color: #dc2626; background: #fef2f2; }
.order-alert .alert-row {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 9px 12px; border-radius: 7px; margin-bottom: 6px;
  background: rgba(255,255,255,0.7); border: 1px solid #f1f5f9;
}
.order-alert .alert-row .muted { flex: 1; font-size: 13px; }
.order-alert .alert-tag {
  display: inline-block; padding: 4px 11px; border-radius: 6px;
  font-size: 13px; font-weight: 700; min-width: 110px; text-align: center;
}
.alert-tag.customer { background: #dbeafe; color: #1d4ed8; }
.alert-tag.supplier { background: #fef3c7; color: #92400e; min-width: 180px; }
.alert-tag.anomaly { background: #fee2e2; color: #b91c1c; }
.alert-tag.deposit { background: #fed7aa; color: #9a3412; }
.alert-tag.unplaced { background: #e0e7ff; color: #4338ca; }
.amount-check { color: var(--muted); }
.amount-check.ok #projected-total { color: var(--ok); }
.amount-check.warn #projected-total { color: var(--warn); }
.amount-check.danger #projected-total { color: var(--danger); background: #fee2e2; padding: 2px 8px; border-radius: 4px; }

/* 订单完结清单 */
.checklist { display: flex; flex-direction: column; gap: 8px; }
.cl-item {
  display: flex; align-items: center; gap: 12px; padding: 11px 14px;
  border: 1px solid var(--border); border-radius: 8px; background: #fafbfc;
  flex-wrap: wrap;
}
.cl-item.done { background: #f0fdf4; border-color: #bbf7d0; }
.cl-item .cl-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; border-radius: 50%;
  background: #e2e8f0; color: #94a3b8; font-weight: 700; font-size: 16px;
  flex-shrink: 0;
}
.cl-item.done .cl-icon { background: #16a34a; color: #fff; }
.cl-item strong { min-width: 200px; color: #334155; font-size: 14px; }
.cl-item.done strong { color: #15803d; }
.cl-item .muted { flex: 1; font-size: 13px; }
.cl-item a.btn { margin-left: auto; }

/* 完结清单内联表单(发票登记、标记发货) */
.cl-action-form {
  display: inline-flex; gap: 6px; align-items: center; flex-wrap: wrap;
  margin-left: auto;
}
.cl-action-form .form-control {
  padding: 5px 8px; font-size: 13px; width: auto;
}
.cl-action-form input[type=text] { width: 130px; }
.cl-action-form input[type=number] { width: 110px; }
.cl-action-form input[type=date] { width: 150px; }
.cl-multi {
  flex: 1 0 100%; display: flex; flex-direction: column; gap: 6px; margin-top: 6px;
}
.cl-multi .cl-action-form {
  margin-left: 0; padding: 6px 10px;
  border: 1px solid #e2e8f0; border-radius: 6px; background: #fff;
}
.cl-sub-label { min-width: 120px; color: #475569; font-weight: 600; font-size: 13px; }
.order-alert .alert-days { font-size: 14px; font-weight: 700; padding: 4px 14px; }

/* 旧分表暖色卡(本版不再用,留作兼容) */
.alert-card-supplier {
  background: #fffbeb; border: 1px solid #fcd34d;
  border-left: 5px solid #f59e0b;
}
.alert-card-supplier h2 { color: #92400e; }
.alert-card-customer {
  background: #fef2f2; border: 1px solid #fca5a5;
  border-left: 5px solid #dc2626;
}
.alert-card-customer h2 { color: #991b1b; }
.alert-card-supplier .badge, .alert-card-customer .badge {
  font-size: 13px; font-weight: 700; padding: 4px 12px;
}

/* 提示信息 */
.alert { padding: 11px 14px; border-radius: 8px; margin-bottom: 12px; font-size: 14px; }
.alert.success { background: #dcfce7; color: #15803d; border: 1px solid #bbf7d0; }
.alert.error { background: #fee2e2; color: #b91c1c; border: 1px solid #fecaca; }
.alert.warn { background: #fef3c7; color: #b45309; border: 1px solid #fde68a; }
.alert.info { background: #dbeafe; color: #1d4ed8; border: 1px solid #bfdbfe; }

.muted { color: var(--muted); }
.right { text-align: right; }
.nowrap { white-space: nowrap; }
.mt { margin-top: 16px; }
.flex { display: flex; gap: 8px; align-items: center; }
.flex-between { display: flex; justify-content: space-between; align-items: center; }

/* 拖拽上传区 */
.dz-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; }
.dropzone {
  border: 2px dashed #c3ccd8; border-radius: 10px; padding: 16px;
  background: #fafbfc; cursor: pointer; transition: all .15s; text-align: center;
}
.dropzone:hover { border-color: var(--primary); background: #f4f8ff; }
.dropzone.dragover { border-color: var(--primary); background: #e8f1ff; box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.dropzone .dz-title { font-weight: 600; color: #334155; margin-bottom: 4px; }
.dropzone .dz-hint { font-size: 12px; color: var(--muted); }
.dropzone input[type=file] { display: none; }
.dz-list { margin-top: 8px; text-align: left; }
.dz-file { font-size: 12px; color: #1d4ed8; padding: 2px 0; }
.dz-existing { margin-top: 8px; text-align: left; border-top: 1px dashed #e2e8f0; padding-top: 8px; }
.dz-existing .row { display: flex; justify-content: space-between; align-items: center; gap: 6px; font-size: 12px; padding: 3px 0; }
.dz-existing a { word-break: break-all; }

/* 状态按钮式单选 */
.status-btns { display: flex; flex-wrap: wrap; gap: 8px; }
.status-btn {
  display: inline-flex; align-items: center; gap: 5px; cursor: pointer;
  padding: 7px 16px; border: 1px solid #cbd5e1; border-radius: 7px;
  background: #fff; color: #334155; font-size: 13px; user-select: none;
}
.status-btn input { position: absolute; opacity: 0; width: 0; height: 0; }
.status-btn:hover { border-color: var(--primary); }
.status-btn:has(input:checked), .status-btn.active {
  background: var(--primary); border-color: var(--primary); color: #fff;
}

/* 表单美化:分区标题 + 双列网格 */
.form-card { max-width: 880px; margin: 0 auto 18px; }
.card-head {
  display: flex; align-items: center; gap: 8px; margin: 0 0 18px;
  font-size: 15px; font-weight: 700; color: #1e293b;
  padding-left: 11px; border-left: 4px solid var(--primary);
}
.card-head .sub { font-weight: 400; font-size: 12px; color: var(--muted); }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2px 20px; }
.form-grid .full { grid-column: 1 / -1; }
@media (max-width: 700px) { .form-grid { grid-template-columns: 1fr; } }
.form-actions { max-width: 880px; margin: 0 auto 30px; }
.btn.lg { padding: 11px 30px; font-size: 15px; }

/* 产品明细表(产品参数 | 数量 | 单价 | 总价) */
.items-head, .item-row {
  display: grid;
  grid-template-columns: 34px 1fr 90px 120px 130px 46px;
  gap: 10px; align-items: start;
}
.items-head {
  padding: 0 14px 6px; margin-top: 8px; font-size: 12px; font-weight: 700;
  color: var(--muted); border-bottom: 1px solid var(--border);
}
.items-head .r { text-align: right; }
#items { counter-reset: item; margin-top: 10px; }
.item-row {
  counter-increment: item; padding: 12px 14px; border: 1px solid var(--border);
  border-radius: 10px; margin-bottom: 10px; background: #fbfcfe;
}
.item-row .col-no { font-weight: 700; color: var(--primary); padding-top: 9px; }
.item-row .col-no::before { content: counter(item); }
.item-row textarea { min-height: 78px; }
.item-row .col-num input { text-align: right; }
.item-row .col-sub { padding-top: 9px; text-align: right; font-weight: 600; color: #334155; }
.item-row .col-act { padding-top: 5px; }
.item-row .col-act .remove-item { padding: 5px 9px; }
@media (max-width: 760px) {
  .items-head { display: none; }
  .item-row { grid-template-columns: 1fr 1fr; }
  .item-row .col-params { grid-column: 1 / -1; }
}
.grand-total {
  margin-top: 8px; background: #eff4ff; border: 1px solid #dbe6ff; border-radius: 8px;
  padding: 13px 18px; text-align: right; font-size: 17px; font-weight: 700;
  color: var(--primary-dark);
}
.grand-total #grand-total { font-size: 22px; }

/* 背靠背采购合同卡:深蓝反差色,与销售合同(白)形成强烈对比 */
.section-header { margin: 18px 0 10px; display: flex; align-items: center; justify-content: space-between; }
.section-title {
  font-size: 16px; font-weight: 700; color: #1e3a8a; margin: 0;
  padding-left: 11px; border-left: 4px solid #1e40af;
}
.purchase-card {
  background: #1e40af; border: 1px solid #2563eb; color: #f1f5f9;
  margin: 0 0 14px;
}
/* 强制覆盖:避免被 .purchase-card .form-row label(浅字)规则覆盖 */
.purchase-card .status-btn {
  color: #0f172a !important;
  font-weight: 700 !important;
  background: #fff !important;
}
.purchase-card .status-btn:hover {
  background: #eff6ff !important; border-color: #3b82f6 !important;
}
.purchase-card .status-btn:has(input:checked),
.purchase-card .status-btn.active {
  color: #fff !important;
  background: var(--primary) !important;
  border-color: var(--primary) !important;
}
.purchase-card .badge {
  font-size: 13px; font-weight: 700; padding: 4px 12px;
}
.purchase-card .card-head { border-left-color: #60a5fa; color: #fff; }
.purchase-card .card-head .sub { color: #bfdbfe; font-weight: 400; }
.purchase-card .muted { color: #cbd5e1 !important; }
.purchase-card .form-row label { color: #f1f5f9; }
.purchase-card.empty { background: #1e293b; border-style: dashed; border-color: #475569; }
.purchase-card.empty p, .purchase-card.empty .muted { color: #cbd5e1 !important; }
/* 内层(产品明细/付款/归档)保持白底,方便阅读和输入 */
.purchase-card .items-head { color: #bfdbfe; border-bottom-color: #3b82f6; }
.purchase-card .item-row { background: #fff; color: var(--text); border-color: #60a5fa; }
.purchase-card .grand-total {
  background: #1e40af; border: 1px solid #60a5fa;
  color: #fff;
}
.purchase-card .grand-total #grand-total { color: #fff; }
.purchase-card .dropzone {
  background: #fff; border-color: #60a5fa; color: var(--text);
}
.purchase-card .dropzone .dz-title { color: #1e3a8a; }
.purchase-card .dropzone .dz-hint { color: #475569; }
.purchase-card .dropzone:hover { background: #eff6ff; border-color: #2563eb; }
.purchase-card .payment-row { background: #fff; color: var(--text); }
.purchase-card .payment-row.paid { background: #f0fdf4; }
.purchase-card .payment-row.acceptance { background: #fff7ed; }

/* 收付款行内可编辑表单 */
.payment-row {
  display: flex; gap: 8px; align-items: center; padding: 8px 12px;
  border: 1px solid var(--border); border-radius: 8px; margin-bottom: 7px;
  background: #fff; flex-wrap: wrap; font-size: 13px;
}
.payment-row.paid { background: #f0fdf4; border-color: #bbf7d0; }
.payment-row.acceptance { background: #fff7ed; border-color: #fed7aa; }
.payment-row input[type=text] { width: 130px; padding: 6px 9px; font-size: 13px;
  border: 1px solid #cbd5e1; border-radius: 6px; }
.payment-row input[type=number] { padding: 6px 9px; font-size: 13px;
  border: 1px solid #cbd5e1; border-radius: 6px; text-align: right; }
.payment-row .pay-label {
  font-weight: 700; color: #1e293b; min-width: 64px;
  padding: 5px 9px; background: #f1f5f9; border-radius: 6px;
}
.payment-row .pay-percent { width: 64px; }
.payment-row .pay-pct-sign { color: var(--muted); margin: 0 8px 0 -3px; font-size: 13px; }
.payment-row .pay-amount { width: 130px; }
.payment-row .chk { display: inline-flex; align-items: center; gap: 4px; color: #475569; cursor: pointer; }
.payment-row .chk input { margin: 0; width: 15px; height: 15px; }
.payment-row .paid-date { font-size: 12px; color: var(--ok); margin-left: 4px; }
.payment-row .save-btn { padding: 5px 12px; margin-left: auto; }
.payment-row .undo-btn { padding: 5px 9px; font-size: 12px; color: #94a3b8; border-color: #cbd5e1; }
.payment-row .undo-btn:hover { color: var(--primary); border-color: var(--primary); }

/* 混合支付:现金/承兑/电汇 三金额拆 */
.payment-row.mix .mix-sep { font-size: 12px; padding: 0 4px; }
.payment-row.mix .mix-field {
  display: inline-flex; align-items: center; gap: 2px;
}
.payment-row.mix .mix-tag {
  display: inline-block; padding: 2px 6px; background: #e2e8f0;
  border-radius: 4px; font-size: 11px; color: #475569;
}
.payment-row.mix .mix-amount {
  width: 95px; padding: 5px 8px; font-size: 12px;
  border: 1px solid #cbd5e1; border-radius: 5px;
}
.payment-row.mix .mix-total { font-size: 12px; padding: 0 6px; font-weight: 600; }
.payment-row.mix .mix-total-val { color: var(--primary); }
.payment-row.mix.paid .mix-total-val { color: var(--ok); }

/* 货期字段灰显(状态=已发货/已完成/已取消时只读) */
.lead-disabled { background: #f1f5f9 !important; color: #94a3b8 !important; cursor: not-allowed; }

/* 签约日期三个下拉(加大,易点) */
.date-selects select {
  display: inline-block; width: auto; min-width: 92px; padding: 10px 12px;
  margin-right: 8px; border: 1px solid #cbd5e1; border-radius: 7px;
  font-size: 15px; background: #fff; cursor: pointer;
}

/* 登录页 */
.login-wrap { max-width: 360px; margin: 8vh auto; }
.login-wrap .card { padding: 28px; }
.login-wrap h1 { text-align: center; font-size: 20px; margin: 0 0 20px; }


/* 月结相关 */
.monthly-toggle { margin-left: 10px; }
.monthly-tag-btn {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 10px; border-radius: 999px;
  font-size: 12px; color: #b91c1c; background: #fef2f2;
  border: 1px solid #fecaca; cursor: pointer; user-select: none;
}
.monthly-tag-btn input[type="checkbox"] { margin: 0; accent-color: #dc2626; }
.monthly-tag-btn:has(input:checked) {
  background: #dc2626; color: #fff; border-color: #b91c1c;
}
.monthly-panel {
  background: #fff7ed; border: 1px dashed #fdba74; border-radius: 10px;
  padding: 12px 14px; margin-top: 6px;
}
.monthly-anchor-grid {
  display: flex; flex-wrap: wrap; align-items: center; gap: 16px;
  margin-bottom: 6px;
}
.monthly-days { display: inline-flex; align-items: center; gap: 6px; }
.monthly-days input { width: 70px; }

/* 月结合同标题徽标 */
.monthly-headline-tag {
  display: inline-block; background: #dc2626; color: #fff;
  padding: 2px 10px; border-radius: 999px; font-size: 12px; margin-left: 10px;
  font-weight: 600;
}

/* 月结到期日提示行 */
.monthly-due-bar {
  margin-top: 8px; padding: 10px 12px; border-radius: 8px;
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  font-size: 13px;
}
.monthly-due-bar.normal { background: #eff6ff; border: 1px solid #bfdbfe; color: #1e3a8a; }
.monthly-due-bar.warn   { background: #fffbeb; border: 1px solid #fcd34d; color: #92400e; }
.monthly-due-bar.overdue{ background: #fef2f2; border: 1px solid #fca5a5; color: #991b1b; font-weight: 600; }
.monthly-due-bar.none   { background: #f8fafc; border: 1px dashed #cbd5e1; color: #475569; }
.monthly-due-bar .anchor-label { font-weight: 600; }

/* 发货日期内联块 */
.shipped-date-block { display: inline-flex; align-items: center; gap: 6px; }
.shipped-date-block input[type="date"] { padding: 6px 10px; border: 1px solid #cbd5e1; border-radius: 6px; }
.btn.tiny { padding: 4px 10px; font-size: 12px; border-radius: 6px; }

/* +新增收款 按钮 */
.btn.add-payment {
  background: #0ea5e9; color: #fff; border: none; padding: 6px 12px;
  border-radius: 6px; font-size: 12px; cursor: pointer;
}
.btn.add-payment:hover { background: #0284c7; }
.btn.del-payment {
  background: transparent; color: #dc2626; border: 1px solid #fca5a5;
  padding: 3px 8px; border-radius: 6px; font-size: 11px; cursor: pointer;
}
.btn.del-payment:hover { background: #fef2f2; }


/* 月结面板对比度强化:在深蓝采购卡(.purchase-card)内不被父级白字覆盖,文字始终深色清晰 */
.monthly-panel { color: #1f2937; }
.monthly-panel > label,
.monthly-panel .monthly-anchor-grid,
.monthly-panel .monthly-anchor-grid .muted,
.monthly-panel .monthly-anchor-grid strong,
.monthly-panel > .muted {
  color: #1f2937 !important;
}
.monthly-panel .monthly-anchor-grid > .muted { color: #92400e !important; font-weight: 600; }
.monthly-panel > .muted.sm { color: #7c2d12 !important; }
.monthly-panel input[type="number"],
.monthly-panel input[type="text"] {
  color: #1f2937 !important; background: #fff !important;
  border-color: #fdba74 !important;
}
/* 在采购卡(深蓝)里月结面板自带的浅橙底+暗字依然对比清晰,无需再继承父级白字 */
.purchase-card .monthly-panel {
  background: #fffaf0; border: 1px solid #f59e0b;
}
.purchase-card .monthly-panel * { color: #1f2937; }
.purchase-card .monthly-panel .muted { color: #92400e !important; }
.purchase-card .monthly-panel label { color: #1f2937 !important; font-weight: 700; }


/* 完结清单内联表单里的三下拉:更紧凑,适配窄空间 */
.cl-action-form .cl-date { display: inline-flex; gap: 4px; }
.cl-action-form .cl-date select {
  padding: 6px 6px; min-width: 64px; font-size: 13px;
  border: 1px solid #cbd5e1; border-radius: 6px; background: #fff; cursor: pointer;
}


/* 顶部 公司视角切换 */
.company-switcher { display: inline-flex; align-items: center; gap: 4px; margin-right: 14px; }
.cs-tab {
  color: #cbd5e1; padding: 4px 10px; border-radius: 6px; font-size: 12px;
  border: 1px solid transparent;
}
.cs-tab:hover { background: #334155; color: #fff; text-decoration: none; }
.cs-tab.active { background: #2563eb; color: #fff; font-weight: 600; border-color: #1d4ed8; }
.company-badge {
  display: inline-block; padding: 3px 10px; border-radius: 999px;
  background: #2563eb; color: #fff; font-size: 12px; font-weight: 600;
  margin-right: 12px;
}
/* 老板只读提示 */
.boss-readonly-bar {
  background: #fef3c7; border: 1px solid #fcd34d; color: #92400e;
  padding: 8px 14px; border-radius: 8px; margin-bottom: 14px; font-size: 13px;
}


/* ============================================================ *
 *  Phase 4-A · 工作台视觉重塑(命名空间 .dashboard-v2,不污染全站)
 * ============================================================ */
.dashboard-v2 {
  /* —— 设计令牌:冷灰 + 深蓝 —— */
  --dv-canvas:    #f8fafc;
  --dv-card:      #ffffff;
  --dv-cardSoft:  #fafbfc;
  --dv-ring:      #e2e8f0;
  --dv-ringSoft:  #f1f5f9;
  --dv-text:      #0f172a;
  --dv-textSoft:  #475569;
  --dv-muted:     #64748b;
  --dv-mutedSoft: #94a3b8;
  --dv-primary:   #3b5bdb;
  --dv-primaryDeep:#2541a3;

  /* —— 交通灯语义色 —— */
  --dv-overdue:    #dc2626;
  --dv-overdueBg:  #fef2f2;
  --dv-overdueRing:#fecaca;
  --dv-warn:       #f59e0b;
  --dv-warnBg:     #fffbeb;
  --dv-warnRing:   #fde68a;
  --dv-hint:       #fbbf24;
  --dv-ok:         #16a34a;
  --dv-doneText:   #94a3b8;

  /* —— 间距系统(4px 网格) —— */
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px;
  --s5: 24px; --s6: 32px; --s7: 40px; --s8: 48px;
  --r-sm: 8px; --r-md: 12px; --r-lg: 16px;
  --sh-1: 0 1px 2px rgba(15,23,42,.04);
  --sh-2: 0 4px 12px rgba(15,23,42,.06);
  --sh-3: 0 12px 32px rgba(15,23,42,.08);

  background: var(--dv-canvas);
  color: var(--dv-text);
  font-feature-settings: "tnum" 1, "ss01" 1;
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", "HarmonyOS Sans SC", Inter, sans-serif;
  margin: calc(-1 * var(--s5)) calc(-1 * var(--s4));
  padding: var(--s5) var(--s4) var(--s8);
}

/* —— 工作台页头 —— */
.dv-pagehead {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: var(--s5);
  flex-wrap: wrap; gap: var(--s3);
}
.dv-pagehead h1 {
  font-size: 22px; font-weight: 700; margin: 0;
  letter-spacing: -0.3px;
}
.dv-pagehead-actions { display: flex; gap: var(--s2); align-items: center; }

/* 密度切换 */
.dv-density {
  display: inline-flex; background: var(--dv-card); border: 1px solid var(--dv-ring);
  border-radius: var(--r-sm); padding: 2px; box-shadow: var(--sh-1);
}
.dv-density button {
  background: transparent; border: 0; color: var(--dv-muted);
  padding: 5px 12px; font-size: 12px; border-radius: 6px; cursor: pointer;
  transition: all .12s ease; font-family: inherit;
}
.dv-density button.active {
  background: var(--dv-primary); color: #fff; font-weight: 600;
}

/* —— Stats 顶部 KPI —— */
.dv-stats {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(168px, 1fr));
  gap: var(--s4); margin-bottom: var(--s6);
}
.dv-stat {
  background: var(--dv-card); border: 1px solid var(--dv-ring);
  border-radius: var(--r-md); padding: var(--s4) var(--s5);
  box-shadow: var(--sh-1); transition: all .15s ease;
}
.dv-stat:hover { box-shadow: var(--sh-2); transform: translateY(-1px); }
.dv-stat .label {
  color: var(--dv-muted); font-size: 12px; font-weight: 500;
  margin-bottom: var(--s2); letter-spacing: 0.2px;
  display: flex; align-items: center; gap: 6px;
}
.dv-stat .value {
  color: var(--dv-text); font-size: 28px; font-weight: 700;
  line-height: 1.1; font-feature-settings: "tnum" 1;
  letter-spacing: -0.5px;
}
.dv-stat .sublabel {
  color: var(--dv-mutedSoft); font-size: 11px;
  margin-top: var(--s1);
}
.dv-stat.alert .value { color: var(--dv-overdue); }
.dv-stat.alert .label { color: var(--dv-overdue); }
.dv-stat.alert .label::before { content: "●"; color: var(--dv-overdue); font-size: 8px; }
.dv-stat.warn  .value { color: var(--dv-warn); }
.dv-stat.warn  .label::before { content: "●"; color: var(--dv-warn); font-size: 8px; }

/* —— 区块标题 —— */
.dv-section-title {
  font-size: 13px; font-weight: 600; color: var(--dv-muted);
  text-transform: uppercase; letter-spacing: 1px;
  margin: var(--s6) 0 var(--s3);
  display: flex; align-items: center; gap: var(--s2);
}
.dv-section-title .count {
  background: var(--dv-overdue); color: #fff;
  padding: 2px 8px; border-radius: 999px; font-size: 11px;
  font-weight: 700; letter-spacing: 0;
}
.dv-section-title.calm .count { background: var(--dv-mutedSoft); }

/* —— 预警卡 · 左侧强调条 · 4 档 —— */
.dv-alert {
  position: relative;
  background: var(--dv-card); border: 1px solid var(--dv-ring);
  border-left: 4px solid transparent;
  border-radius: var(--r-md); padding: var(--s4) var(--s5);
  margin-bottom: var(--s3);
  box-shadow: var(--sh-1);
  transition: all .15s ease;
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--s4);
}
.dv-alert:hover { box-shadow: var(--sh-2); transform: translateY(-1px); }

.dv-alert.overdue {
  background: var(--dv-overdueBg);
  border-color: var(--dv-overdueRing);
  border-left-color: var(--dv-overdue);
  border-left-width: 4px;
}
.dv-alert.overdue::before {
  content: "⚠"; position: absolute; top: 10px; right: 14px;
  color: var(--dv-overdue); font-weight: 700; font-size: 16px;
}
.dv-alert.warn {
  background: var(--dv-warnBg);
  border-color: var(--dv-warnRing);
  border-left-color: var(--dv-warn);
  border-left-width: 4px;
}
.dv-alert.hint {
  border-left: 2px dashed var(--dv-hint);
}
.dv-alert .head {
  flex: 1; min-width: 280px;
}
.dv-alert .head .title {
  font-size: 15px; font-weight: 700; color: var(--dv-text);
  margin: 0 0 var(--s1);
}
.dv-alert .head .meta {
  font-size: 12px; color: var(--dv-muted); display: flex; flex-wrap: wrap; gap: var(--s3);
  font-feature-settings: "tnum" 1;
}
.dv-alert .head .advice {
  margin-top: var(--s2); font-size: 12px; color: var(--dv-textSoft);
  background: rgba(255,255,255,.6); padding: 6px 10px; border-radius: 6px;
  display: inline-block;
}
.dv-alert.overdue .head .advice { color: #7c2d12; background: rgba(255,255,255,.7); font-weight: 500; }
.dv-alert .actions { display: flex; gap: var(--s2); }
.dv-alert-tag {
  display: inline-block; padding: 2px 10px; border-radius: 999px;
  font-size: 11px; font-weight: 700; letter-spacing: 0.3px;
}
.dv-alert.overdue .dv-alert-tag { background: var(--dv-overdue); color: #fff; }
.dv-alert.warn .dv-alert-tag    { background: var(--dv-warn); color: #fff; }

/* 空状态 */
.dv-empty {
  background: var(--dv-card); border: 1px dashed var(--dv-ring);
  border-radius: var(--r-md); padding: var(--s6);
  text-align: center; color: var(--dv-mutedSoft); font-size: 13px;
}
.dv-empty .icon { font-size: 24px; margin-bottom: var(--s2); display: block; opacity: .5; }

/* —— 订单列表卡 —— */
.dv-listcard {
  background: var(--dv-card); border: 1px solid var(--dv-ring);
  border-radius: var(--r-md); box-shadow: var(--sh-1);
  overflow: hidden; margin-bottom: var(--s4);
}
.dv-listcard-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: var(--s4) var(--s5); border-bottom: 1px solid var(--dv-ringSoft);
  flex-wrap: wrap; gap: var(--s3);
}
.dv-listcard-head h2 {
  font-size: 14px; font-weight: 600; color: var(--dv-text); margin: 0;
  letter-spacing: 0.2px;
}
.dv-listcard-head .filters { display: flex; gap: var(--s2); align-items: center; }
.dv-listcard-head .filters select {
  background: var(--dv-cardSoft); border: 1px solid var(--dv-ring);
  border-radius: 6px; padding: 5px 10px; font-size: 12px; color: var(--dv-text);
  cursor: pointer; font-family: inherit;
}

.dv-table { width: 100%; border-collapse: collapse; }
.dv-table th {
  background: var(--dv-cardSoft); color: var(--dv-muted);
  font-weight: 600; font-size: 11px; letter-spacing: 1px;
  text-transform: uppercase; text-align: left;
  padding: var(--s3) var(--s5);
  border-bottom: 1px solid var(--dv-ring);
}
.dv-table th.num, .dv-table td.num {
  text-align: right; font-feature-settings: "tnum" 1;
}
.dv-table td {
  padding: var(--s4) var(--s5);
  border-bottom: 1px solid var(--dv-ringSoft);
  font-size: 14px; color: var(--dv-text);
  height: 56px;
  vertical-align: middle;
}
.dv-table tr:last-child td { border-bottom: 0; }
.dv-table tr { transition: background .12s ease; }
.dv-table tr:hover td { background: var(--dv-cardSoft); }

.dv-table td:first-child {
  border-left: 4px solid transparent;
  padding-left: var(--s4);
}
.dv-table tr.overdue td:first-child { border-left-color: var(--dv-overdue); }
.dv-table tr.overdue td { background: var(--dv-overdueBg) !important; }
.dv-table tr.overdue:hover td { background: #fde9e9 !important; }
.dv-table tr.warn td:first-child { border-left-color: var(--dv-warn); }
.dv-table tr.warn td { background: var(--dv-warnBg) !important; }
.dv-table tr.warn:hover td { background: #fef0c8 !important; }

.dv-table tr.done td { color: var(--dv-doneText); }
.dv-table tr.done .dv-pill { opacity: .6; }

/* Pill / Badge */
.dv-pill {
  display: inline-block; padding: 2px 10px; border-radius: 999px;
  font-size: 11px; font-weight: 600; letter-spacing: 0.2px;
}
.dv-pill.gray    { background: #f1f5f9; color: var(--dv-muted); }
.dv-pill.blue    { background: #eff6ff; color: var(--dv-primary); }
.dv-pill.amber   { background: #fef3c7; color: #92400e; }
.dv-pill.green   { background: #dcfce7; color: #166534; }
.dv-pill.red     { background: #fee2e2; color: var(--dv-overdue); }

/* 按钮 */
.dv-btn {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--dv-card); color: var(--dv-text);
  border: 1px solid var(--dv-ring); padding: 6px 12px;
  border-radius: var(--r-sm); font-size: 12px; cursor: pointer;
  transition: all .12s ease; text-decoration: none;
  font-family: inherit;
}
.dv-btn:hover { border-color: var(--dv-primary); color: var(--dv-primary); text-decoration: none; }
.dv-btn.primary { background: var(--dv-primary); color: #fff; border-color: var(--dv-primary); }
.dv-btn.primary:hover { background: var(--dv-primaryDeep); color: #fff; }
.dv-btn.tiny { padding: 4px 10px; font-size: 11px; }

/* 紧凑密度 */
.dashboard-v2.dv-compact .dv-stat       { padding: var(--s3) var(--s4); }
.dashboard-v2.dv-compact .dv-stat .value{ font-size: 22px; }
.dashboard-v2.dv-compact .dv-table td   { padding: var(--s2) var(--s4); height: 40px; font-size: 13px; }
.dashboard-v2.dv-compact .dv-alert      { padding: var(--s3) var(--s4); }
.dashboard-v2.dv-compact .dv-alert .head .advice { display: none; }


/* ============================================================ *
 *  Phase 4-A · v2  工作台 = 预警中心 (视觉冲击拉满)
 * ============================================================ */

/* —— 顶部 4 个大号 KPI —— */
.dashboard-v2 .dv-bignums {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--s4);
  margin-bottom: var(--s7);
}
.dashboard-v2 .dv-bignum {
  background: var(--dv-card);
  border: 1px solid var(--dv-ring);
  border-radius: var(--r-lg);
  padding: var(--s5) var(--s6);
  box-shadow: var(--sh-1);
  position: relative;
  overflow: hidden;
  transition: all .2s ease;
}
.dashboard-v2 .dv-bignum:hover { box-shadow: var(--sh-2); transform: translateY(-2px); }
.dashboard-v2 .dv-bignum .lbl {
  color: var(--dv-muted); font-size: 12px;
  letter-spacing: 0.5px; text-transform: uppercase;
  font-weight: 600; margin-bottom: var(--s3);
}
.dashboard-v2 .dv-bignum .num {
  font-size: 44px; font-weight: 800; line-height: 1;
  color: var(--dv-text); letter-spacing: -1.5px;
  font-feature-settings: "tnum" 1;
}
.dashboard-v2 .dv-bignum .sub {
  margin-top: var(--s3); font-size: 12px; color: var(--dv-mutedSoft);
  font-feature-settings: "tnum" 1;
}
.dashboard-v2 .dv-bignum.alert .num { color: var(--dv-overdue); }
.dashboard-v2 .dv-bignum.alert::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px;
  background: var(--dv-overdue);
}
.dashboard-v2 .dv-bignum.warn .num { color: var(--dv-warn); }
.dashboard-v2 .dv-bignum.warn::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px;
  background: var(--dv-warn);
}
.dashboard-v2 .dv-bignum.ok .num { color: var(--dv-ok); }
.dashboard-v2 .dv-bignum.primary .num { color: var(--dv-primary); }

/* —— 预警区大标题 —— */
.dashboard-v2 .dv-zone-title {
  display: flex; align-items: baseline; gap: var(--s3);
  margin: var(--s7) 0 var(--s4);
}
.dashboard-v2 .dv-zone-title h2 {
  font-size: 20px; font-weight: 700; margin: 0;
  letter-spacing: -0.3px;
}
.dashboard-v2 .dv-zone-title .badge {
  background: var(--dv-overdue); color: #fff;
  padding: 3px 12px; border-radius: 999px;
  font-size: 13px; font-weight: 700;
  font-feature-settings: "tnum" 1;
}
.dashboard-v2 .dv-zone-title.calm .badge { background: var(--dv-mutedSoft); }
.dashboard-v2 .dv-zone-title .desc {
  color: var(--dv-mutedSoft); font-size: 12px; margin-left: auto;
}

/* —— 「信件式」大预警卡 —— */
.dashboard-v2 .dv-warning {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--s5);
  background: var(--dv-card);
  border: 1px solid var(--dv-ring);
  border-left: 6px solid var(--dv-ring);
  border-radius: var(--r-lg);
  padding: var(--s5) var(--s6);
  margin-bottom: var(--s4);
  box-shadow: var(--sh-1);
  transition: all .2s ease;
  position: relative;
  overflow: hidden;
}
.dashboard-v2 .dv-warning:hover {
  box-shadow: var(--sh-3);
  transform: translateY(-2px);
}

/* 逾期:饱和红 + 大色块 */
.dashboard-v2 .dv-warning.overdue {
  background: linear-gradient(135deg, #fff5f5 0%, #fef2f2 100%);
  border-color: #fecaca;
  border-left-color: var(--dv-overdue);
  border-left-width: 6px;
}
.dashboard-v2 .dv-warning.overdue::after {
  content: "🚨"; position: absolute; top: -8px; right: 14px;
  font-size: 28px; opacity: .9;
}

/* 到期:暖橙 */
.dashboard-v2 .dv-warning.warn {
  background: linear-gradient(135deg, #fffbf0 0%, #fffbeb 100%);
  border-color: #fde68a;
  border-left-color: var(--dv-warn);
  border-left-width: 6px;
}
.dashboard-v2 .dv-warning.warn::after {
  content: "⏰"; position: absolute; top: -2px; right: 14px;
  font-size: 22px; opacity: .9;
}

/* 主信息区 */
.dashboard-v2 .dv-warning .info { min-width: 0; }
.dashboard-v2 .dv-warning .row1 {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--s3);
  margin-bottom: var(--s3);
}
.dashboard-v2 .dv-warning .ctype {
  display: inline-block; padding: 3px 10px; border-radius: 6px;
  font-size: 11px; font-weight: 700; letter-spacing: 1px;
  text-transform: uppercase;
}
.dashboard-v2 .dv-warning.overdue .ctype { background: var(--dv-overdue); color: #fff; }
.dashboard-v2 .dv-warning.warn    .ctype { background: var(--dv-warn);   color: #fff; }
.dashboard-v2 .dv-warning .cno {
  font-size: 20px; font-weight: 800; color: var(--dv-text);
  letter-spacing: -0.3px;
}
.dashboard-v2 .dv-warning .cname {
  color: var(--dv-textSoft); font-size: 15px; font-weight: 500;
}

.dashboard-v2 .dv-warning .row2 {
  display: flex; flex-wrap: wrap; gap: var(--s5);
  color: var(--dv-muted); font-size: 13px;
  margin-bottom: var(--s3);
}
.dashboard-v2 .dv-warning .row2 .item { display: inline-flex; align-items: center; gap: 6px; }
.dashboard-v2 .dv-warning .row2 .lbl { color: var(--dv-mutedSoft); font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; }
.dashboard-v2 .dv-warning .row2 .val {
  font-feature-settings: "tnum" 1; font-weight: 600; color: var(--dv-text);
}
.dashboard-v2 .dv-warning.overdue .row2 .val.money { color: var(--dv-overdue); }
.dashboard-v2 .dv-warning.warn    .row2 .val.money { color: #b45309; }

.dashboard-v2 .dv-warning .advice {
  margin-top: var(--s3); padding: var(--s3) var(--s4);
  background: rgba(255,255,255,.6); border-radius: var(--r-sm);
  font-size: 13px; color: var(--dv-textSoft);
  border-left: 3px solid currentColor; opacity: .85;
}
.dashboard-v2 .dv-warning.overdue .advice { color: #7c2d12; font-weight: 500; }
.dashboard-v2 .dv-warning.warn    .advice { color: #78350f; }

.dashboard-v2 .dv-warning .sub-row {
  display: flex; flex-wrap: wrap; gap: var(--s2);
  margin-top: var(--s2); font-size: 12px;
}
.dashboard-v2 .dv-warning .sub-row .sub-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 10px; border-radius: 6px;
  background: rgba(255,255,255,.7); color: var(--dv-textSoft);
  border: 1px solid rgba(15,23,42,.05);
  font-feature-settings: "tnum" 1;
}
.dashboard-v2 .dv-warning .sub-row .sub-chip.red {
  background: var(--dv-overdue); color: #fff; font-weight: 700; border: 0;
}
.dashboard-v2 .dv-warning .sub-row .sub-chip.amber {
  background: var(--dv-warn); color: #fff; font-weight: 700; border: 0;
}

/* 右侧大倒计时 + 按钮 */
.dashboard-v2 .dv-warning .side {
  display: flex; flex-direction: column;
  align-items: flex-end; justify-content: space-between;
  min-width: 160px; gap: var(--s4);
}
.dashboard-v2 .dv-warning .countdown {
  text-align: right; line-height: 1;
}
.dashboard-v2 .dv-warning .countdown .big {
  font-size: 48px; font-weight: 800; letter-spacing: -2px;
  font-feature-settings: "tnum" 1;
  display: block;
}
.dashboard-v2 .dv-warning .countdown .unit {
  font-size: 13px; color: var(--dv-muted); font-weight: 500;
  margin-top: 4px; text-transform: uppercase; letter-spacing: 1px;
}
.dashboard-v2 .dv-warning.overdue .countdown .big { color: var(--dv-overdue); }
.dashboard-v2 .dv-warning.overdue .countdown .unit { color: var(--dv-overdue); font-weight: 700; }
.dashboard-v2 .dv-warning.warn    .countdown .big { color: var(--dv-warn); }
.dashboard-v2 .dv-warning.warn    .countdown .unit { color: #92400e; font-weight: 600; }

.dashboard-v2 .dv-warning .go-btn {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 10px 18px; border-radius: var(--r-sm);
  font-size: 13px; font-weight: 600;
  background: var(--dv-text); color: #fff; border: 0;
  text-decoration: none;
  transition: all .12s ease;
  white-space: nowrap;
}
.dashboard-v2 .dv-warning .go-btn:hover {
  background: var(--dv-primaryDeep); transform: translateX(2px);
  text-decoration: none;
}
.dashboard-v2 .dv-warning.overdue .go-btn { background: var(--dv-overdue); }
.dashboard-v2 .dv-warning.overdue .go-btn:hover { background: #b91c1c; }
.dashboard-v2 .dv-warning.warn    .go-btn { background: var(--dv-warn); }
.dashboard-v2 .dv-warning.warn    .go-btn:hover { background: #d97706; }

/* —— 「今日无忧」空状态 —— */
.dashboard-v2 .dv-allclear {
  background: var(--dv-card); border: 1px solid var(--dv-ring);
  border-radius: var(--r-lg); padding: var(--s8);
  text-align: center;
  box-shadow: var(--sh-1);
}
.dashboard-v2 .dv-allclear .check {
  width: 64px; height: 64px;
  border-radius: 50%; background: #dcfce7; color: var(--dv-ok);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 32px; font-weight: 800; margin-bottom: var(--s4);
}
.dashboard-v2 .dv-allclear .ttl {
  font-size: 18px; font-weight: 700; color: var(--dv-text);
  margin-bottom: var(--s2);
}
.dashboard-v2 .dv-allclear .desc {
  color: var(--dv-muted); font-size: 13px;
}

/* 紧凑下:倒计时数字小一点、advice 隐藏 */
.dashboard-v2.dv-compact .dv-warning { padding: var(--s4) var(--s5); }
.dashboard-v2.dv-compact .dv-warning .countdown .big { font-size: 36px; }
.dashboard-v2.dv-compact .dv-warning .advice { display: none; }
.dashboard-v2.dv-compact .dv-bignum { padding: var(--s4) var(--s5); }
.dashboard-v2.dv-compact .dv-bignum .num { font-size: 32px; }


/* ============================================================ *
 *  Phase 4-B · 全站新风格(冷灰 + 深蓝)
 *  策略:不删旧 CSS,在末尾追加覆盖层(优先级高,自动接管)
 * ============================================================ */
:root {
  /* —— 全站设计令牌 —— */
  --canvas:     #f8fafc;
  --card:       #ffffff;
  --cardSoft:   #fafbfc;
  --ring:       #e2e8f0;
  --ringSoft:   #f1f5f9;
  --text:       #0f172a;
  --textSoft:   #475569;
  --muted:      #64748b;
  --mutedSoft:  #94a3b8;

  --primary:      #3b5bdb;
  --primary-dark: #2541a3;
  --primary-soft: #eff6ff;

  --overdue:    #dc2626;
  --overdueBg:  #fef2f2;
  --warn:       #f59e0b;
  --warnBg:     #fffbeb;
  --hint:       #fbbf24;
  --ok:         #16a34a;
  --okBg:       #dcfce7;
  --danger:     #dc2626;

  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 16px;

  --sh-1: 0 1px 2px rgba(15,23,42,.04);
  --sh-2: 0 4px 12px rgba(15,23,42,.06);
  --sh-3: 0 12px 32px rgba(15,23,42,.08);
}

/* —— Body 全站底 + 字体 —— */
body {
  background: var(--canvas);
  color: var(--text);
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei",
               "HarmonyOS Sans SC", Inter, sans-serif;
  font-feature-settings: "tnum" 1, "ss01" 1;
  font-size: 14px;
  line-height: 1.5;
}

/* —— Navbar 现代化(白底深蓝点缀) —— */
.navbar {
  background: var(--card) !important;
  border-bottom: 1px solid var(--ring);
  box-shadow: var(--sh-1);
  height: 56px;
  padding: 0 24px !important;
  color: var(--text) !important;
}
.navbar .brand {
  color: var(--text) !important;
  font-weight: 700; font-size: 15px;
  letter-spacing: -0.2px;
}
.navbar a {
  color: var(--textSoft) !important;
  font-size: 13px; font-weight: 500;
  padding: 7px 12px !important;
  border-radius: 6px;
  transition: all .12s ease;
}
.navbar a:hover {
  background: var(--ringSoft) !important;
  color: var(--text) !important;
  text-decoration: none;
}
.navbar a.active {
  background: var(--primary-soft) !important;
  color: var(--primary) !important;
  font-weight: 600;
}
.navbar .user {
  color: var(--muted) !important;
  font-size: 12px;
}

/* navbar 内退出按钮 */
.navbar .btn.sm.gray {
  background: var(--cardSoft);
  border: 1px solid var(--ring);
  color: var(--textSoft);
  border-radius: var(--r-sm);
  padding: 5px 12px;
  font-size: 12px;
  font-weight: 500;
}
.navbar .btn.sm.gray:hover {
  border-color: var(--primary);
  color: var(--primary);
}

/* 公司视角切换重塑 */
.company-switcher {
  display: inline-flex !important; align-items: center; gap: 4px;
  background: var(--cardSoft); border: 1px solid var(--ring);
  padding: 3px; border-radius: var(--r-sm); margin-right: 12px;
}
.company-switcher .muted {
  color: var(--mutedSoft) !important;
  font-size: 11px !important;
  padding: 0 8px;
}
.cs-tab {
  color: var(--muted) !important; padding: 5px 12px !important;
  font-size: 12px; font-weight: 500; border-radius: 6px !important;
  border: 0 !important;
}
.cs-tab:hover {
  background: var(--card) !important; color: var(--text) !important;
}
.cs-tab.active {
  background: var(--primary) !important; color: #fff !important;
  font-weight: 600;
}

.company-badge {
  background: var(--primary) !important;
  color: #fff !important;
  padding: 4px 12px !important;
  border-radius: 999px !important;
  font-size: 11px !important; font-weight: 600;
  margin-right: 12px; letter-spacing: 0.3px;
}

/* —— 容器宽度 —— */
.container {
  max-width: 1280px; margin: 24px auto; padding: 0 24px;
}

/* —— 页头 —— */
.page-head {
  margin-bottom: 24px;
}
.page-head h1 {
  font-size: 22px; font-weight: 700; margin: 0;
  letter-spacing: -0.3px; color: var(--text);
}

/* —— 卡片 —— */
.card {
  background: var(--card);
  border: 1px solid var(--ring);
  border-radius: var(--r-md);
  box-shadow: var(--sh-1);
  padding: 20px 24px;
  margin-bottom: 16px;
}
.card h2 {
  font-size: 15px; font-weight: 600; color: var(--text);
  margin: 0 0 14px; letter-spacing: 0.1px;
}
.card h2.mt { margin-top: 24px; }
.card .card-head, .form-card .card-head {
  font-size: 14px; font-weight: 600; color: var(--text);
  margin-bottom: 14px; padding-bottom: 0; border-bottom: 0;
  display: flex; align-items: center; gap: 8px;
}
.card .card-head .sub {
  color: var(--mutedSoft); font-weight: 400; font-size: 12px;
}

/* —— 按钮 —— */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: 4px;
  background: var(--primary); color: #fff;
  border: 1px solid var(--primary);
  padding: 8px 16px;
  border-radius: var(--r-sm);
  font-size: 13px; font-weight: 500;
  cursor: pointer; text-decoration: none;
  transition: all .12s ease;
  font-family: inherit;
}
.btn:hover {
  background: var(--primary-dark); border-color: var(--primary-dark);
  color: #fff; text-decoration: none;
}
.btn.sm { padding: 5px 12px; font-size: 12px; }
.btn.lg { padding: 11px 22px; font-size: 14px; font-weight: 600; }
.btn.ghost {
  background: var(--card); color: var(--text);
  border: 1px solid var(--ring);
}
.btn.ghost:hover {
  background: var(--cardSoft); border-color: var(--primary); color: var(--primary);
}
.btn.danger {
  background: var(--danger); border-color: var(--danger);
}
.btn.danger:hover {
  background: #b91c1c; border-color: #b91c1c;
}
.btn.gray {
  background: var(--cardSoft); color: var(--textSoft); border-color: var(--ring);
}
.btn.gray:hover { background: var(--ringSoft); color: var(--text); }

/* —— 表格 —— */
.table {
  width: 100%; border-collapse: collapse;
  background: var(--card);
  font-size: 14px;
}
.table thead { background: var(--cardSoft); }
.table th {
  text-align: left; padding: 12px 16px;
  font-size: 11px; font-weight: 600; letter-spacing: 1px;
  text-transform: uppercase; color: var(--muted);
  border-bottom: 1px solid var(--ring);
}
.table th.num, .table td.num {
  text-align: right;
  font-feature-settings: "tnum" 1;
}
.table td {
  padding: 14px 16px; border-bottom: 1px solid var(--ringSoft);
  vertical-align: middle;
}
.table tr:last-child td { border-bottom: 0; }
.table tr:hover td { background: var(--cardSoft); }
.table .right { text-align: right; }
.table .nowrap { white-space: nowrap; }
.table .muted { color: var(--muted); }

/* 表格放在 .card 内的话:去掉双重 border */
.card > .table, .card .table {
  margin: -4px -8px;
}

/* —— Badge / Pill —— */
.badge {
  display: inline-block; padding: 3px 10px;
  border-radius: 999px; font-size: 11px;
  font-weight: 600; letter-spacing: 0.2px;
  background: var(--ringSoft); color: var(--muted);
}
.badge.gray  { background: var(--ringSoft); color: var(--muted); }
.badge.blue  { background: var(--primary-soft); color: var(--primary); }
.badge.green { background: var(--okBg); color: #166534; }
.badge.amber { background: var(--warnBg); color: #92400e; border: 1px solid #fde68a; }
.badge.red   { background: var(--overdueBg); color: var(--overdue); border: 1px solid #fecaca; }

/* —— 表单 —— */
.form-control, .form-select {
  width: 100%;
  background: var(--card);
  border: 1px solid var(--ring);
  border-radius: var(--r-sm);
  padding: 8px 12px;
  font-size: 14px; color: var(--text);
  transition: border-color .12s ease, box-shadow .12s ease;
  font-family: inherit;
}
.form-control:focus, .form-select:focus {
  outline: none;
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(59,91,219,.12);
}
.form-row {
  margin-bottom: 14px;
}
.form-row label {
  display: block; font-size: 12px; font-weight: 600;
  color: var(--textSoft); margin-bottom: 6px;
  letter-spacing: 0.2px;
}
.form-grid { display: grid; gap: 14px 18px; }
@media (min-width: 720px) {
  .form-grid { grid-template-columns: 1fr 1fr; }
  .form-grid .form-row.full { grid-column: 1 / -1; }
}
.form-card { padding: 20px 24px; margin-bottom: 16px; }

/* 日期下拉 select 紧凑 */
.date-selects select {
  display: inline-block; width: auto !important; min-width: 88px;
  padding: 7px 10px; margin-right: 6px; font-size: 13px;
  background: var(--card); border: 1px solid var(--ring); border-radius: 6px;
  color: var(--text); cursor: pointer; font-family: inherit;
}

/* status 选项按钮 */
.status-btns { display: flex; gap: 6px; flex-wrap: wrap; }
.status-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 14px; border-radius: var(--r-sm);
  background: var(--card); border: 1px solid var(--ring);
  color: var(--textSoft); font-size: 13px; cursor: pointer;
  transition: all .12s ease;
}
.status-btn input[type="radio"] { margin: 0; accent-color: var(--primary); }
.status-btn:has(input:checked) {
  background: var(--primary); border-color: var(--primary); color: #fff; font-weight: 600;
}

/* —— Alert(提示横条) —— */
.alert {
  padding: 12px 16px; border-radius: var(--r-sm);
  margin-bottom: 14px; font-size: 13px;
  border: 1px solid transparent;
}
.alert.info, .alert.success { background: var(--primary-soft); color: var(--primary-dark); border-color: #dbeafe; }
.alert.warn, .alert.warning { background: var(--warnBg); color: #92400e; border-color: #fde68a; }
.alert.error, .alert.danger { background: var(--overdueBg); color: var(--overdue); border-color: #fecaca; font-weight: 500; }

/* —— Stats 顶部统计区(全站通用) —— */
.stats {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 14px; margin-bottom: 20px;
}
.stat {
  background: var(--card); border: 1px solid var(--ring);
  border-radius: var(--r-md); padding: 14px 18px;
  box-shadow: var(--sh-1);
}
.stat .label {
  color: var(--muted); font-size: 11px; font-weight: 600;
  letter-spacing: 0.5px; text-transform: uppercase;
  margin-bottom: 6px;
}
.stat .value {
  color: var(--text); font-size: 22px; font-weight: 700;
  line-height: 1.1; font-feature-settings: "tnum" 1;
  letter-spacing: -0.4px;
}
.stat .value.ok      { color: var(--ok); }
.stat .value.warn    { color: var(--warn); }
.stat .value.danger  { color: var(--overdue); }

/* —— Section header(列表上方标题栏) —— */
.section-header {
  display: flex; align-items: center; justify-content: space-between;
  margin: 24px 0 12px;
}
.section-title {
  font-size: 14px; font-weight: 600; color: var(--text); margin: 0;
  letter-spacing: 0.1px;
}

/* —— flex 工具类 —— */
.flex { display: flex; gap: 8px; align-items: center; }
.flex-between {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
}

/* —— 小工具 —— */
.muted { color: var(--muted); }
.nowrap { white-space: nowrap; }
.mt { margin-top: 18px; }

/* —— 老板只读提示条(再次定义,确保覆盖) —— */
.boss-readonly-bar {
  background: var(--warnBg);
  border: 1px solid #fde68a;
  color: #92400e;
  padding: 10px 16px; border-radius: var(--r-md);
  margin-bottom: 16px; font-size: 13px;
  display: flex; align-items: center; gap: 8px;
}

/* —— 完结清单(订单详情用)—— */
.checklist {
  display: flex; flex-direction: column; gap: 8px;
}
.cl-item {
  background: var(--cardSoft); border: 1px solid var(--ring);
  border-radius: var(--r-sm); padding: 12px 16px;
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
}
.cl-item.done { background: var(--okBg); border-color: #bbf7d0; }
.cl-item.done strong { color: #166534; }
.cl-item .cl-icon {
  width: 22px; height: 22px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 12px;
  background: var(--card); border: 1px solid var(--ring); color: var(--mutedSoft);
}
.cl-item.done .cl-icon { background: var(--ok); color: #fff; border-color: var(--ok); }

/* 收付款行(订单详情)—— 不破坏 mix UI 现有 layout */
.payment-row {
  background: var(--cardSoft);
  border: 1px solid var(--ring);
  border-radius: var(--r-sm);
  padding: 10px 14px;
  margin-bottom: 8px;
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
}
.payment-row.paid {
  background: #f0fdf4;
  border-color: #bbf7d0;
}
.payment-row.paid::before {
  content: "✓"; color: var(--ok); font-weight: 700;
}

/* 让所有列表的状态行有左侧粗条 — 配合 .badge.red 的语义 */
tr.row-overdue td:first-child { border-left: 4px solid var(--overdue); }
tr.row-overdue td { background: var(--overdueBg) !important; }
tr.row-warn td:first-child { border-left: 4px solid var(--warn); }
tr.row-warn td { background: var(--warnBg) !important; }
tr.row-done td { color: var(--mutedSoft); }


/* —— Phase 4-B 微调 —— */

/* dashboard-v2 此前用负边距满铺,现在 .container 已统一了内边距,清理 */
.dashboard-v2 {
  background: transparent !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* sales_detail 详情页 stats 卡 — 用全站新版 stats */
.stats .stat .label .muted {
  font-weight: 400; font-size: 11px; color: var(--mutedSoft);
}
.stat .value.danger, .stat .value.ok {
  /* 金额徽章 */
  font-feature-settings: "tnum" 1;
}

/* 详情页订单状态徽章在 sales_detail 内 */
.detail-status-bar {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--cardSoft); border: 1px solid var(--ring);
  padding: 6px 14px; border-radius: 999px;
  color: var(--textSoft); font-size: 13px;
}

/* 月结徽标 — 字体加大点 */
.monthly-headline-tag {
  background: var(--overdue) !important;
  font-size: 11px; padding: 3px 10px;
  letter-spacing: 0.5px; font-weight: 700;
}

/* 月结面板配色衔接全站新令牌 */
.monthly-panel {
  background: #fffaf0 !important;
  border: 1px dashed #fdba74 !important;
}

/* 编辑/删除等小按钮在表格里更紧凑 */
.table .btn.sm, .table .btn.ghost.sm {
  padding: 4px 10px; font-size: 11px;
}

/* 详情页采购卡:保留深蓝主题,但让边线更柔和 */
.purchase-card {
  border-radius: var(--r-md) !important;
  box-shadow: var(--sh-2);
  margin-bottom: 14px;
}

/* dz-grid:归档区 */
.dz-grid {
  display: grid; gap: 10px;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}
.dropzone {
  background: var(--cardSoft); border: 1.5px dashed var(--ring);
  border-radius: var(--r-md); padding: 14px;
  transition: all .12s ease;
}
.dropzone:hover {
  border-color: var(--primary); background: var(--primary-soft);
}
.dropzone .dz-title { font-weight: 600; font-size: 13px; color: var(--text); margin-bottom: 4px; }
.dropzone .dz-hint { color: var(--mutedSoft); font-size: 11px; }

/* 产品明细 items 网格 */
.items-head {
  display: grid;
  grid-template-columns: 30px 1fr 80px 100px 110px 32px;
  gap: 10px; padding: 6px 8px;
  font-size: 11px; color: var(--muted); font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.5px;
}
.items-head .r { text-align: right; }
.item-row {
  display: grid;
  grid-template-columns: 30px 1fr 80px 100px 110px 32px;
  gap: 10px; padding: 8px;
  align-items: start;
  border-bottom: 1px solid var(--ringSoft);
}
.item-row:last-child { border-bottom: 0; }
.col-no { color: var(--muted); padding-top: 8px; }
.col-num input, .col-sub input { text-align: right; }
.col-act .btn { width: 28px; height: 28px; padding: 0; }

.grand-total {
  text-align: right; padding: 10px 8px;
  font-size: 14px; color: var(--text);
  border-top: 2px solid var(--ring); margin-top: 4px;
}
.grand-total span { color: var(--primary); font-weight: 700; font-size: 18px; font-feature-settings: "tnum" 1; }

.form-actions {
  display: flex; gap: 10px; justify-content: flex-end;
  margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--ring);
}

/* 收付款行 mix UI 配色衔接 */
.payment-row.mix {
  font-size: 12px;
}
.mix-tag {
  display: inline-block; padding: 2px 8px; border-radius: 4px;
  background: var(--ringSoft); color: var(--muted);
  font-size: 11px; margin-right: 4px;
}
.mix-amount {
  width: 80px !important; padding: 4px 8px !important;
  font-size: 12px; font-feature-settings: "tnum" 1;
}
.mix-total {
  font-size: 12px; color: var(--muted);
}
.mix-total-val { font-weight: 700; font-feature-settings: "tnum" 1; }
.pay-label {
  font-weight: 600; color: var(--text); font-size: 13px;
  background: var(--ringSoft); padding: 3px 10px; border-radius: 6px;
}
.pay-percent, .pay-amount {
  padding: 4px 8px !important; font-size: 12px;
  font-feature-settings: "tnum" 1;
}
.pay-percent { width: 56px !important; }
.pay-amount { width: 100px !important; }
.pay-pct-sign { color: var(--muted); margin: 0 4px; }
.paid-date { color: var(--ok); font-size: 11px; margin-left: 4px; }
.chk { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: var(--textSoft); }
.chk input { accent-color: var(--ok); }
.save-btn { background: var(--ok) !important; border-color: var(--ok) !important; }
.save-btn:hover { background: #15803d !important; border-color: #15803d !important; }
.undo-btn { color: var(--muted) !important; }

/* errorlist */
.errorlist {
  list-style: none; padding: 0; margin: 4px 0 0;
  font-size: 12px; color: var(--overdue);
}

/* 登录页 */
.login-wrap {
  max-width: 380px; margin: 10vh auto;
}
.login-wrap .card { padding: 32px; box-shadow: var(--sh-3); }
.login-wrap h1 {
  text-align: center; font-size: 22px; font-weight: 700;
  margin: 0 0 24px; letter-spacing: -0.3px;
}


/* ============================================================ *
 *  采购卡 恢复深蓝对比 + 月结按钮不点时也明显
 * ============================================================ */

/* —— 采购合同卡 · 深蓝 高对比 锚点 —— */
.purchase-card {
  background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%) !important;
  border: none !important;
  box-shadow: 0 4px 16px rgba(30, 58, 138, 0.18) !important;
  color: #fff !important;
}
.purchase-card *,
.purchase-card a,
.purchase-card .muted,
.purchase-card .sub,
.purchase-card .card-head,
.purchase-card label {
  color: #fff !important;
}
.purchase-card .sub { color: #cbd5e1 !important; }
.purchase-card .muted { color: #cbd5e1 !important; }
/* 卡头标题加粗 */
.purchase-card .card-head {
  font-size: 15px; font-weight: 700; border-bottom: 1px solid rgba(255,255,255,0.15);
  padding-bottom: 10px; margin-bottom: 12px;
}
.purchase-card .card-head span.sub { font-weight: 400; font-size: 12px; }

/* 卡内 input/select/textarea 改白色高亮 */
.purchase-card input,
.purchase-card select,
.purchase-card textarea,
.purchase-card .form-control,
.purchase-card .form-select {
  background: rgba(255,255,255,0.95) !important;
  color: #0f172a !important;
  border: 1px solid rgba(255,255,255,0.3) !important;
}
.purchase-card input:focus,
.purchase-card select:focus,
.purchase-card textarea:focus {
  background: #fff !important;
  border-color: #fff !important;
  box-shadow: 0 0 0 3px rgba(255,255,255,0.25) !important;
}

/* 卡内表单标签 */
.purchase-card .form-row label { color: #dbeafe !important; font-weight: 600; }

/* 卡内 status 按钮(进行中/已发货/...) */
.purchase-card .status-btn {
  background: rgba(255,255,255,0.1) !important;
  border: 1px solid rgba(255,255,255,0.3) !important;
  color: #fff !important;
}
.purchase-card .status-btn:has(input:checked) {
  background: #fff !important; color: #1e3a8a !important; font-weight: 700;
}

/* 卡内 badge */
.purchase-card .badge,
.purchase-card .badge.amber,
.purchase-card .badge.blue,
.purchase-card .badge.gray,
.purchase-card .badge.green,
.purchase-card .badge.red {
  background: rgba(255,255,255,0.95) !important;
  color: #1e3a8a !important;
  border: 0 !important;
  font-weight: 700;
}
.purchase-card .badge.red { color: var(--overdue) !important; }
.purchase-card .badge.amber { color: #92400e !important; }
.purchase-card .badge.green { color: #166534 !important; }

/* 卡内按钮 */
.purchase-card .btn.ghost {
  background: rgba(255,255,255,0.15) !important;
  border: 1px solid rgba(255,255,255,0.35) !important;
  color: #fff !important;
}
.purchase-card .btn.ghost:hover {
  background: rgba(255,255,255,0.25) !important;
  border-color: #fff !important;
}

/* 采购卡内的 payment-row */
.purchase-card .payment-row {
  background: rgba(255,255,255,0.95) !important;
  border: 0 !important;
  color: #0f172a !important;
}
.purchase-card .payment-row * {
  color: #0f172a !important;
}
.purchase-card .payment-row .pay-label {
  background: var(--ringSoft) !important;
}

/* 月结小提示 在采购卡里 */
.purchase-card .muted[style*="color:#fde68a"] {
  color: #fde68a !important;
}

/* 采购卡内 物流单号 code 标签 */
.purchase-card code {
  background: rgba(255,255,255,0.15) !important;
  color: #fff !important; padding: 2px 8px; border-radius: 4px;
}

/* —— 月结按钮(未勾选时也显眼) —— */
.monthly-tag-btn {
  display: inline-flex !important; align-items: center; gap: 6px;
  padding: 5px 14px !important; border-radius: 999px !important;
  font-size: 13px !important; font-weight: 700 !important;
  color: var(--overdue) !important;
  background: #fff !important;
  border: 2px solid var(--overdue) !important;
  cursor: pointer; user-select: none;
  transition: all 0.15s ease;
  margin-left: 10px !important;
  line-height: 1;
  box-shadow: 0 1px 3px rgba(220, 38, 38, 0.15);
}
.monthly-tag-btn:hover {
  background: #fef2f2 !important;
  box-shadow: 0 2px 8px rgba(220, 38, 38, 0.2);
  transform: translateY(-1px);
}
.monthly-tag-btn:has(input:checked) {
  background: var(--overdue) !important; color: #fff !important;
  border-color: #991b1b !important;
  box-shadow: 0 2px 8px rgba(220, 38, 38, 0.3);
}
.monthly-tag-btn input[type="checkbox"] {
  margin: 0 !important;
  width: 14px; height: 14px;
  accent-color: var(--overdue);
  cursor: pointer;
}
.monthly-tag-btn:has(input:checked) input[type="checkbox"] {
  accent-color: #fff;
}
/* 在 form-row label 里防止文字被压缩 */
.form-row > label .monthly-toggle {
  display: inline-block;
  margin-left: 8px;
  vertical-align: middle;
}

/* 月结按钮在采购卡(深色)里也要看得见 */
.purchase-card .monthly-tag-btn {
  background: #fff !important;
  color: var(--overdue) !important;
  border: 2px solid #fca5a5 !important;
}
.purchase-card .monthly-tag-btn:has(input:checked) {
  background: var(--overdue) !important;
  color: #fff !important;
}

/* —— 客户预付未到账提示条 在采购页头 —— */
.alert.warn.form-card {
  background: var(--warnBg) !important;
  border: 1px solid #fde68a !important;
  color: #92400e !important;
  border-radius: var(--r-md);
  padding: 14px 18px;
}
.alert.warn.form-card strong { color: #92400e !important; }


/* form-label-row:label + 月结按钮 横排,不嵌套 label */
.form-label-row {
  display: flex; align-items: center;
  gap: 8px; margin-bottom: 6px;
}
.form-label-row > label {
  font-size: 12px; font-weight: 600;
  color: var(--textSoft); letter-spacing: 0.2px;
}


/* ============================================================ *
 *  采购卡内 月结按钮 + 归档文件 字体黑色覆盖
 * ============================================================ */

/* 月结按钮 全站统一改黑字(更稳重清晰) */
.monthly-tag-btn {
  color: #0f172a !important;
  border-color: #cbd5e1 !important;
  background: #fff !important;
  font-weight: 600 !important;
}
.monthly-tag-btn:hover {
  border-color: var(--overdue) !important;
  background: #fef2f2 !important;
}
.monthly-tag-btn:has(input:checked) {
  background: var(--overdue) !important;
  color: #fff !important;
  border-color: #991b1b !important;
}
/* 在采购卡(深蓝)内也保持白底黑字 + 红勾选 */
.purchase-card .monthly-tag-btn {
  color: #0f172a !important;
  background: #fff !important;
  border: 2px solid #cbd5e1 !important;
}
.purchase-card .monthly-tag-btn:hover {
  border-color: var(--overdue) !important;
}
.purchase-card .monthly-tag-btn:has(input:checked) {
  background: var(--overdue) !important;
  color: #fff !important;
  border-color: #991b1b !important;
}

/* —— 采购卡内 归档文件 dropzone 字体改黑 —— */
.purchase-card .dz-grid,
.purchase-card .dropzone {
  color: #0f172a !important;
}
.purchase-card .dropzone .dz-title {
  color: #0f172a !important;
  font-weight: 700 !important;
}
.purchase-card .dropzone .dz-hint {
  color: #64748b !important;
}
.purchase-card .dropzone input[type="file"] {
  color: #0f172a !important;
}
.purchase-card .dropzone .dz-list,
.purchase-card .dropzone .dz-list * {
  color: #0f172a !important;
}
.purchase-card .dropzone .dz-existing,
.purchase-card .dropzone .dz-existing * {
  color: #0f172a !important;
}
.purchase-card .dropzone .dz-existing a {
  color: var(--primary) !important;
  font-weight: 600;
}
.purchase-card .dropzone .dz-existing .muted {
  color: #64748b !important;
}

/* —— 采购卡内 备注/产品明细 表头标签也要清晰 —— */
.purchase-card .items-head {
  color: #cbd5e1 !important;
  border-bottom: 1px solid rgba(255,255,255,0.15);
}
.purchase-card .item-row {
  background: rgba(255,255,255,0.97);
  color: #0f172a !important;
  margin-bottom: 8px; border-radius: 8px;
  border: 0 !important;
}
.purchase-card .item-row * {
  color: #0f172a !important;
}
.purchase-card .item-row .col-no {
  color: #64748b !important;
  text-align: center; font-weight: 600;
  background: var(--ringSoft);
  border-radius: 6px;
  padding: 6px 0;
}
.purchase-card .grand-total {
  background: rgba(255,255,255,0.12);
  border-radius: 8px;
  padding: 12px 16px;
  color: #fff !important;
  border-top: 0 !important;
  margin-top: 12px;
}
.purchase-card .grand-total span {
  color: #fff !important;
  font-size: 22px;
}
.purchase-card .amount-check {
  color: #cbd5e1 !important;
  background: rgba(0,0,0,0.12);
  padding: 8px 12px; border-radius: 6px; margin-top: 8px;
}
.purchase-card .amount-check strong {
  color: #fde047 !important;
}

/* 备注 textarea 在采购卡里 也白底黑字 */
.purchase-card textarea,
.purchase-card .form-control[name="note"] {
  background: #fff !important;
  color: #0f172a !important;
}

/* —— 备注卡:让其紧凑 —— */
.note-card {
  padding: 14px 18px !important;
}
.note-card .card-head {
  margin-bottom: 8px !important;
  font-size: 13px !important;
}
.note-card textarea,
.note-card .form-control {
  min-height: 70px !important;
  height: 70px !important;
  resize: vertical;
}

/* —— 归档文件卡:让其更宽松,作为重要交互区 —— */
.archive-card {
  padding: 22px 26px !important;
}
.archive-card .dz-grid {
  gap: 14px !important;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)) !important;
}
.archive-card .dropzone {
  min-height: 100px;
  padding: 18px 16px !important;
  display: flex; flex-direction: column; justify-content: center;
  align-items: center; text-align: center;
}
.archive-card .dropzone .dz-title {
  font-size: 14px !important;
  margin-bottom: 4px;
}
.archive-card .dropzone .dz-hint {
  font-size: 11px;
}


/* —— 合同条款 + 客户信息识别 双栏卡 —— */
.terms-card .card-head { font-size: 14px; font-weight: 700; color: var(--text); }
.terms-grid {
  display: grid; gap: 18px;
  grid-template-columns: 1fr;
}
@media (min-width: 980px) {
  .terms-grid { grid-template-columns: 1fr 1.2fr; gap: 24px; }
}
.terms-left, .terms-right {
  padding: 14px 16px;
  background: var(--cardSoft);
  border-radius: var(--r-md);
  border: 1px solid var(--ring);
}
.terms-left { border-left: 3px solid var(--primary); }
.terms-right { border-left: 3px solid #f59e0b; }
.terms-left textarea, .terms-right textarea {
  font-size: 13px;
}
.terms-right .form-grid {
  margin-top: 6px;
}
.terms-right .form-row .form-control {
  padding: 6px 10px; font-size: 13px;
}
#cust-recognize-btn {
  background: var(--primary); color: #fff;
  border: 0; padding: 6px 14px;
  border-radius: 6px; font-size: 12px; font-weight: 600;
  cursor: pointer;
}
#cust-recognize-btn:hover {
  background: var(--primary-dark);
}
#cust-recognize-hint {
  font-size: 12px; transition: color .2s ease;
}


/* —— 合同条款 + 客户开票汇款资料 紧凑化 —— */
.terms-card {
  padding: 14px 18px !important;
}
.terms-card .card-head {
  margin-bottom: 12px !important;
  font-size: 14px !important;
}
.terms-grid {
  display: grid; gap: 14px;
  grid-template-columns: 1fr;
}
/* 在 760px 以上就分两栏(原 980px 太宽,导致竖排过高) */
@media (min-width: 760px) {
  .terms-grid {
    grid-template-columns: 1fr 1.3fr;
    gap: 16px;
  }
}
.terms-left, .terms-right {
  padding: 12px 14px;
  background: var(--cardSoft);
  border-radius: var(--r-md);
  border: 1px solid var(--ring);
}
.terms-left  { border-left: 3px solid var(--primary); }
.terms-right { border-left: 3px solid #f59e0b; }

.terms-left .form-row,
.terms-right .form-row {
  margin-bottom: 8px;
}
.terms-left .form-row label,
.terms-right .form-row label {
  font-size: 11px;
  margin-bottom: 3px;
  color: var(--muted);
}
/* 合同条款左栏 textarea 紧凑(改成单行高度,可随内容扩展) */
.terms-left .terms-ta {
  min-height: 42px !important;
  height: 42px;
  resize: vertical;
  font-size: 13px;
  padding: 6px 10px;
  line-height: 1.5;
}
.terms-left .terms-ta:focus {
  min-height: 70px !important;
  height: 70px;
}

/* 右栏客户字段 grid 紧凑 */
.cust-fields-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 10px;
}
.cust-fields-grid .form-row.span2 { grid-column: 1 / -1; }
.cust-fields-grid .form-row { margin-bottom: 0; }
.cust-fields-grid .form-control {
  padding: 5px 9px;
  font-size: 12px;
  border-radius: 6px;
}

#cust-paste {
  min-height: 80px !important;
}
#cust-recognize-btn {
  background: var(--primary); color: #fff;
  border: 0; padding: 5px 14px;
  border-radius: 6px; font-size: 12px; font-weight: 600;
  cursor: pointer;
}
#cust-recognize-btn:hover {
  background: var(--primary-dark);
}
#cust-recognize-hint {
  font-size: 12px; transition: color .2s ease;
}


/* —— 整体页面变宽,大屏不再两边大量留白 —— */
.container { max-width: 1600px !important; padding: 0 32px !important; }

/* 极宽屏(2K+)再宽一些 */
@media (min-width: 1800px) {
  .container { max-width: 1760px !important; }
}

/* 合同条款 + 客户开票 卡 自适应更宽,响应断点更小 */
@media (min-width: 760px) {
  .terms-grid {
    grid-template-columns: 1fr 1.5fr !important;  /* 右栏多占空间(7 个字段更宽松) */
  }
}


/* —— 表单卡 移除 880px 死锁,跟随 .container 自适应宽度 —— */
.form-card {
  max-width: none !important;  /* 老规则 .form-card {max-width:880px} 在第 242 行,覆盖掉 */
  margin: 0 0 16px !important;
}

/* 编辑销售合同页(以及所有 sales_form)产品明细表头 / 行 在宽屏下更宽松 */
.items-head {
  grid-template-columns: 36px 1fr 90px 110px 130px 36px !important;
  gap: 12px !important;
}
.item-row {
  grid-template-columns: 36px 1fr 90px 110px 130px 36px !important;
  gap: 12px !important;
}

/* 月结面板 也不要被 880 限住 */
.monthly-panel {
  max-width: none !important;
}


/* —— 业绩看板 栏目卡片 大号化 —— */
.rpt-section {
  font-size: 14px; font-weight: 700; color: var(--muted);
  text-transform: uppercase; letter-spacing: 2px;
  margin: 28px 0 14px;
  padding-left: 14px; border-left: 4px solid var(--primary);
}

.rpt-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 18px;
  margin-bottom: 14px;
}

.rpt-card {
  background: var(--card);
  border: 1px solid var(--ring);
  border-radius: 16px;
  padding: 26px 28px;
  box-shadow: var(--sh-1, 0 1px 2px rgba(15,23,42,.04));
  text-decoration: none;
  color: var(--text);
  display: block;
  position: relative;
  transition: all .2s ease;
  min-height: 200px;
}
.rpt-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px rgba(15,23,42,.08);
  text-decoration: none;
  border-color: var(--primary);
}
.rpt-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 5px;
  border-radius: 16px 16px 0 0;
  background: var(--ring);
  transition: background .2s ease;
}
.rpt-card.blue::before  { background: var(--primary); }
.rpt-card.red::before   { background: var(--overdue); }
.rpt-card.green::before { background: var(--ok); }
.rpt-card.amber::before { background: var(--warn); }

.rpt-icon {
  font-size: 36px;
  line-height: 1;
  margin-bottom: 12px;
  display: block;
}

.rpt-title {
  font-size: 19px;
  font-weight: 700;
  color: var(--text);
  letter-spacing: -0.3px;
  margin-bottom: 8px;
}

.rpt-cta {
  font-size: 17px;
  font-weight: 600;
  margin: 10px 0 14px;
  display: inline-flex; align-items: center; gap: 4px;
  padding: 6px 14px;
  border-radius: 999px;
  background: var(--ringSoft);
  transition: all .15s ease;
}
.rpt-card.blue  .rpt-cta { background: var(--primary-soft); color: var(--primary); }
.rpt-card.red   .rpt-cta { background: #fee2e2; color: var(--overdue); }
.rpt-card.green .rpt-cta { background: #dcfce7; color: #166534; }
.rpt-card.amber .rpt-cta { background: var(--warnBg); color: #92400e; }
.rpt-card:hover .rpt-cta {
  transform: translateX(4px);
}

.rpt-desc {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.6;
  margin-top: 8px;
}


/* ============================================================ *
 *  订单预警卡 客户+供应商 双板块布局
 * ============================================================ */
.dashboard-v2 .two-parts {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  margin: var(--s3) 0;
}
@media (min-width: 720px) {
  .dashboard-v2 .two-parts {
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }
}

.dashboard-v2 .part {
  background: rgba(255,255,255,.7);
  border-radius: var(--r-sm);
  padding: 10px 12px;
  border-left: 3px solid var(--ring);
}

/* 客户板块 — 紫蓝色调 */
.dashboard-v2 .part-customer {
  border-left-color: #6366f1;
}
.dashboard-v2 .part-customer .part-title {
  color: #4338ca;
}

/* 背靠背供应商板块 — 青绿色调 */
.dashboard-v2 .part-suppliers {
  border-left-color: #0891b2;
}
.dashboard-v2 .part-suppliers .part-title {
  color: #0e7490;
}

.dashboard-v2 .part-title {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.5px;
  margin-bottom: 6px;
  display: inline-block;
}

.dashboard-v2 .part-line {
  display: flex; align-items: center; gap: 8px;
  font-size: 12px; margin: 3px 0;
  font-feature-settings: "tnum" 1;
}
.dashboard-v2 .part-lbl {
  color: var(--dv-mutedSoft);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  min-width: 44px;
}
.dashboard-v2 .part-val {
  color: var(--dv-text);
  font-weight: 600;
}
.dashboard-v2 .dv-warning.overdue .part-val.money { color: var(--dv-overdue); }
.dashboard-v2 .dv-warning.warn .part-val.money    { color: #b45309; }

.dashboard-v2 .part-chip {
  display: block; margin: 5px 0;
  padding: 4px 9px; border-radius: 6px;
  font-size: 11.5px; font-weight: 600;
  font-feature-settings: "tnum" 1;
  letter-spacing: 0.2px;
}
.dashboard-v2 .part-chip.red {
  background: var(--dv-overdue); color: #fff;
}
.dashboard-v2 .part-chip.amber {
  background: var(--dv-warn); color: #fff;
}

.dashboard-v2 .part-supplier-row {
  border-top: 1px dashed rgba(15,23,42,.08);
  padding: 5px 0;
  margin: 3px 0;
}
.dashboard-v2 .part-supplier-row:first-of-type {
  border-top: 0;
}
.dashboard-v2 .part-supplier-name {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--dv-text);
}
.dashboard-v2 .part-supplier-meta {
  font-size: 11px;
  color: var(--dv-muted);
  margin-top: 1px;
  font-feature-settings: "tnum" 1;
}

.dashboard-v2 .part-empty {
  font-size: 11.5px;
  color: var(--dv-mutedSoft);
  font-style: italic;
  padding: 8px 0;
}

/* ============================================================ *
 *  修紧凑模式 🚨/⏰ 和倒计时数字重叠
 * ============================================================ */
/* 把 emoji 角标从右上角(::after)移走 — 改成 ctype 徽章前缀的 emoji */
.dashboard-v2 .dv-warning.overdue::after,
.dashboard-v2 .dv-warning.warn::after {
  content: none;  /* 取消原右上角的 emoji */
}

/* 在 ctype 徽章前面加 emoji 作为标记(不会和倒计时打架) */
.dashboard-v2 .dv-warning.overdue .ctype::before {
  content: "🚨 ";
}
.dashboard-v2 .dv-warning.warn .ctype::before {
  content: "⏰ ";
}

/* 紧凑模式下,双板块也跟着紧凑 */
.dashboard-v2.dv-compact .two-parts {
  gap: 6px;
  margin: 6px 0;
}
.dashboard-v2.dv-compact .part {
  padding: 6px 9px;
}
.dashboard-v2.dv-compact .part-title {
  font-size: 11px;
  margin-bottom: 3px;
}
.dashboard-v2.dv-compact .part-line,
.dashboard-v2.dv-compact .part-supplier-name {
  font-size: 11.5px;
}
.dashboard-v2.dv-compact .part-supplier-meta {
  font-size: 10.5px;
}
.dashboard-v2.dv-compact .part-chip {
  font-size: 11px;
  padding: 3px 8px;
}
.dashboard-v2.dv-compact .dv-warning .countdown .big { font-size: 32px; }
.dashboard-v2.dv-compact .dv-warning .countdown .unit { font-size: 11px; }


/* ============================================================ *
 *  客户/供应商 板块 强反差色版(蓝 vs 橙)
 *  覆盖之前的紫青色调,加强对比 + 更紧凑信息排版
 * ============================================================ */

/* 客户板块:冷调蓝(代表"将到的钱") */
.dashboard-v2 .part-customer {
  background: #dbeafe !important;       /* 浅蓝 */
  border: 1px solid #93c5fd !important;
  border-left: 5px solid #2563eb !important;
}
.dashboard-v2 .part-customer .part-title {
  color: #1e3a8a !important;
  font-size: 13px !important;
  font-weight: 800 !important;
}

/* 供应商板块:暖调橙(代表"要付的钱") */
.dashboard-v2 .part-suppliers {
  background: #ffedd5 !important;       /* 浅橙 */
  border: 1px solid #fdba74 !important;
  border-left: 5px solid #ea580c !important;
}
.dashboard-v2 .part-suppliers .part-title {
  color: #7c2d12 !important;
  font-size: 13px !important;
  font-weight: 800 !important;
}

/* 客户板块内文字 */
.dashboard-v2 .part-customer .part-lbl {
  color: #1e40af;
  font-weight: 600;
}
.dashboard-v2 .part-customer .part-val {
  color: #0f172a;
}
.dashboard-v2 .part-customer .part-val.money {
  color: #1d4ed8 !important;
  font-size: 14px;
}

/* 供应商板块内文字 */
.dashboard-v2 .part-suppliers .part-lbl {
  color: #9a3412;
  font-weight: 600;
}
.dashboard-v2 .part-suppliers .part-val {
  color: #0f172a;
}
.dashboard-v2 .part-suppliers .part-val.money {
  color: #c2410c !important;
  font-size: 14px;
}
.dashboard-v2 .part-suppliers .part-supplier-name {
  color: #7c2d12;
  font-weight: 700;
}
.dashboard-v2 .part-suppliers .part-supplier-meta {
  color: #9a3412;
}
.dashboard-v2 .part-suppliers .part-empty {
  color: #c2410c;
}

/* ============================================================ *
 *  KPI 卡 链接化 — 月结到期 数字可点击
 * ============================================================ */
.dashboard-v2 .dv-bignum-link {
  display: block; text-decoration: none; color: inherit;
  cursor: pointer; position: relative;
}
.dashboard-v2 .dv-bignum-link:hover {
  text-decoration: none; color: inherit;
  border-color: var(--dv-primary);
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(15,23,42,.10);
}
.dashboard-v2 .dv-bignum-link .lbl-cta {
  font-size: 10px;
  color: var(--dv-primary);
  background: var(--dv-card);
  padding: 2px 6px;
  border-radius: 4px;
  margin-left: 6px;
  text-transform: none;
  letter-spacing: 0;
  font-weight: 600;
  border: 1px solid var(--dv-ringSoft);
  opacity: 0.7;
  transition: opacity .15s ease;
}
.dashboard-v2 .dv-bignum-link:hover .lbl-cta {
  opacity: 1;
  background: var(--dv-primary);
  color: #fff;
  border-color: var(--dv-primary);
}


/* ============================================================ *
 *  月结预警独立页:客户卡蓝调 + 供应商卡橙调
 * ============================================================ */

/* —— 顶部 KPI 蓝/橙强对比 —— */
.dashboard-v2 .monthly-kpi-customer {
  background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
  border: 1px solid #93c5fd;
}
.dashboard-v2 .monthly-kpi-customer::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 5px;
  background: #2563eb;
}
.dashboard-v2 .monthly-kpi-customer .lbl { color: #1e3a8a !important; }
.dashboard-v2 .monthly-kpi-customer .lbl::before { background: #2563eb !important; }
.dashboard-v2 .monthly-kpi-customer .num { color: #1d4ed8 !important; }

.dashboard-v2 .monthly-kpi-supplier {
  background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%);
  border: 1px solid #fdba74;
}
.dashboard-v2 .monthly-kpi-supplier::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 5px;
  background: #ea580c;
}
.dashboard-v2 .monthly-kpi-supplier .lbl { color: #7c2d12 !important; }
.dashboard-v2 .monthly-kpi-supplier .lbl::before { background: #ea580c !important; }
.dashboard-v2 .monthly-kpi-supplier .num { color: #c2410c !important; }

/* —— 客户应收 卡片(蓝调) —— */
.dashboard-v2 .dv-warning.type-customer {
  border-left: 6px solid #2563eb !important;
  background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%) !important;
  border-color: #93c5fd !important;
}
.dashboard-v2 .dv-warning.type-customer.overdue {
  background: linear-gradient(135deg, #eff6ff 0%, #fef2f2 100%) !important;
  border-color: #fecaca !important;
  border-left-color: #1d4ed8 !important;
}
.dashboard-v2 .dv-warning.type-customer::after { content: none !important; }
.dashboard-v2 .dv-warning.type-customer .ctype {
  background: #2563eb !important; color: #fff !important;
  font-size: 12px !important; padding: 4px 12px !important;
}
.dashboard-v2 .dv-warning.type-customer .countdown .big {
  color: #1d4ed8 !important;
}
.dashboard-v2 .dv-warning.type-customer.overdue .countdown .big {
  color: var(--dv-overdue) !important;
}
.dashboard-v2 .dv-warning.type-customer .countdown .unit {
  color: #1e40af !important;
}
.dashboard-v2 .dv-warning.type-customer .go-btn {
  background: #2563eb !important;
}
.dashboard-v2 .dv-warning.type-customer .go-btn:hover {
  background: #1d4ed8 !important;
}
.dashboard-v2 .dv-warning.type-customer .advice {
  background: rgba(255,255,255,.7);
  color: #1e3a8a !important;
}

/* —— 供应商应付 卡片(橙调) —— */
.dashboard-v2 .dv-warning.type-supplier {
  border-left: 6px solid #ea580c !important;
  background: linear-gradient(135deg, #fff7ed 0%, #ffedd5 100%) !important;
  border-color: #fdba74 !important;
}
.dashboard-v2 .dv-warning.type-supplier.overdue {
  background: linear-gradient(135deg, #fff7ed 0%, #fef2f2 100%) !important;
  border-color: #fecaca !important;
  border-left-color: #c2410c !important;
}
.dashboard-v2 .dv-warning.type-supplier::after { content: none !important; }
.dashboard-v2 .dv-warning.type-supplier .ctype {
  background: #ea580c !important; color: #fff !important;
  font-size: 12px !important; padding: 4px 12px !important;
}
.dashboard-v2 .dv-warning.type-supplier .countdown .big {
  color: #c2410c !important;
}
.dashboard-v2 .dv-warning.type-supplier.overdue .countdown .big {
  color: var(--dv-overdue) !important;
}
.dashboard-v2 .dv-warning.type-supplier .countdown .unit {
  color: #7c2d12 !important;
}
.dashboard-v2 .dv-warning.type-supplier .go-btn {
  background: #ea580c !important;
}
.dashboard-v2 .dv-warning.type-supplier .go-btn:hover {
  background: #c2410c !important;
}
.dashboard-v2 .dv-warning.type-supplier .advice {
  background: rgba(255,255,255,.7);
  color: #7c2d12 !important;
}

/* —— 月结预警 卡片内核心指标 横排紧凑 —— */
.dashboard-v2 .dv-warning .row-key {
  display: flex; flex-wrap: wrap; gap: 18px;
  margin: 10px 0 8px;
}
.dashboard-v2 .dv-warning .row-key .kv {
  display: inline-flex; flex-direction: column; gap: 2px;
  font-feature-settings: "tnum" 1;
}
.dashboard-v2 .dv-warning .row-key .k {
  font-size: 11px; color: var(--dv-mutedSoft);
  text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600;
}
.dashboard-v2 .dv-warning .row-key .v {
  font-size: 14px; font-weight: 700; color: var(--dv-text);
}
.dashboard-v2 .dv-warning.type-customer .row-key .v.money { color: #1d4ed8; font-size: 18px; }
.dashboard-v2 .dv-warning.type-supplier .row-key .v.money { color: #c2410c; font-size: 18px; }
.dashboard-v2 .dv-warning.overdue .row-key .v.money { color: var(--dv-overdue) !important; }

/* 紧凑模式 */
.dashboard-v2.dv-compact .dv-warning .row-key { gap: 12px; }
.dashboard-v2.dv-compact .dv-warning .row-key .v { font-size: 12px; }
.dashboard-v2.dv-compact .dv-warning .row-key .v.money { font-size: 15px !important; }


/* ============================================================ *
 *  销售合同列表 — 现代化筛选面板(灵感:GitHub / Linear / Notion)
 * ============================================================ */
.filter-panel {
  background: var(--card);
  border: 1px solid var(--ring);
  border-radius: var(--r-md);
  padding: 14px 18px;
  box-shadow: var(--sh-1, 0 1px 2px rgba(15,23,42,.04));
  margin-bottom: 16px;
}

.filter-row {
  display: flex; flex-wrap: wrap; gap: 24px;
  align-items: center;
  padding: 6px 0;
}
.filter-row + .filter-row {
  border-top: 1px dashed var(--ringSoft);
}

.filter-group {
  display: flex; align-items: center; gap: 8px;
  flex-wrap: wrap;
  margin: 0;
}

.filter-label {
  font-size: 12px; font-weight: 700;
  color: var(--muted);
  letter-spacing: 0.5px;
  white-space: nowrap;
  min-width: 64px;
  display: inline-flex; align-items: center; gap: 4px;
}

/* —— 时间下拉 —— */
.filter-select {
  appearance: none;
  background: var(--cardSoft) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path fill='%2364748b' d='M2 4l3 3 3-3z'/></svg>") no-repeat right 8px center;
  border: 1px solid var(--ring);
  border-radius: 6px;
  padding: 6px 26px 6px 10px;
  font-size: 13px;
  color: var(--text);
  cursor: pointer;
  font-family: inherit;
  min-width: 100px;
  transition: all .12s ease;
}
.filter-select:hover  { border-color: var(--primary); }
.filter-select:focus  { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(59,91,219,.12); }

/* —— 搜索输入 —— */
.filter-search { flex: 1; min-width: 280px; }
.filter-input {
  flex: 1; min-width: 200px;
  background: var(--cardSoft);
  border: 1px solid var(--ring);
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 13px;
  color: var(--text);
  font-family: inherit;
  transition: all .12s ease;
}
.filter-input:focus {
  outline: none; background: var(--card);
  border-color: var(--primary); box-shadow: 0 0 0 3px rgba(59,91,219,.12);
}
.filter-search-btn {
  background: var(--primary); color: #fff;
  border: 0;
  padding: 6px 14px;
  border-radius: 6px;
  font-size: 13px; font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: background .12s ease;
}
.filter-search-btn:hover { background: var(--primary-dark); }
.filter-clear {
  width: 24px; height: 24px;
  background: var(--ringSoft);
  border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--muted);
  text-decoration: none;
  font-size: 11px;
  transition: all .12s ease;
}
.filter-clear:hover { background: var(--overdue); color: #fff; text-decoration: none; }

/* —— Chip 风格筛选(状态/发票)—— */
.filter-chips { flex: 1; gap: 6px; }
.chip {
  display: inline-flex; align-items: center;
  padding: 5px 12px;
  background: var(--cardSoft);
  border: 1px solid var(--ring);
  color: var(--textSoft);
  font-size: 12px; font-weight: 500;
  border-radius: 999px;
  text-decoration: none;
  transition: all .12s ease;
  white-space: nowrap;
}
.chip:hover {
  background: var(--card);
  border-color: var(--primary);
  color: var(--primary);
  text-decoration: none;
}
.chip.active {
  background: var(--primary);
  border-color: var(--primary);
  color: #fff;
  font-weight: 600;
  box-shadow: 0 1px 3px rgba(59,91,219,.25);
}
.chip.active:hover {
  background: var(--primary-dark);
  border-color: var(--primary-dark);
  color: #fff;
}

/* 不同状态 chip 的悬停语义色(可选,加强视觉提示) */
.chip-status-draft:hover    { color: var(--muted); border-color: var(--mutedSoft); }
.chip-status-ongoing:hover  { color: var(--primary); border-color: var(--primary); }
.chip-status-shipped:hover  { color: var(--warn); border-color: var(--warn); }
.chip-status-completed:hover{ color: var(--ok); border-color: var(--ok); }
.chip-status-cancelled:hover{ color: var(--muted); border-color: var(--ring); }

/* 「双双已齐」是好的状态,绿色 active */
.chip-ok.active {
  background: var(--ok) !important;
  border-color: var(--ok) !important;
}
.chip-ok.active:hover {
  background: #15803d !important;
  border-color: #15803d !important;
}

/* 窄屏适配 */
@media (max-width: 720px) {
  .filter-row { gap: 12px; }
  .filter-group { width: 100%; }
  .filter-label { min-width: 60px; }
}


/* ============================================================
   采购合同表单 → 「背靠背供应商开票资料」卡
   强制走 浅底 + 黑字 风格,避免被 .purchase-card 的深蓝白字规则吃掉
   ============================================================ */
.purchase-card.terms-card {
  background: #f8fafc !important;            /* 浅灰底 */
  border-color: #e2e8f0 !important;
}
.purchase-card.terms-card .card-head {
  color: #0f172a !important;                 /* 标题黑 */
  background: transparent !important;
  border-left-color: #ea580c !important;     /* 橙色左条,跟"背靠背"语义对应 */
}
.purchase-card.terms-card .card-head .sub {
  color: #64748b !important;                 /* 副标题灰 */
}
/* 全部子元素文字回归深色 */
.purchase-card.terms-card,
.purchase-card.terms-card *,
.purchase-card.terms-card label,
.purchase-card.terms-card .form-row label,
.purchase-card.terms-card .muted,
.purchase-card.terms-card .sub {
  color: #0f172a !important;
}
.purchase-card.terms-card .muted,
.purchase-card.terms-card .sub {
  color: #64748b !important;                 /* muted/sub 用次级灰 */
}
.purchase-card.terms-card .form-row label {
  color: #334155 !important;
  font-weight: 600;
}
/* 输入框 + textarea:白底 + 黑字 + 浅边 + 蓝聚焦环 */
.purchase-card.terms-card input,
.purchase-card.terms-card textarea,
.purchase-card.terms-card .form-control {
  background: #fff !important;
  color: #0f172a !important;
  border: 1px solid #cbd5e1 !important;
  caret-color: #2563eb;
}
.purchase-card.terms-card input::placeholder,
.purchase-card.terms-card textarea::placeholder {
  color: #94a3b8 !important;                 /* placeholder 浅灰 */
  opacity: 1;
}
.purchase-card.terms-card input:focus,
.purchase-card.terms-card textarea:focus,
.purchase-card.terms-card .form-control:focus {
  border-color: #2563eb !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,.18) !important;
  outline: none;
}
/* 识别按钮 — 保持蓝色高亮 */
.purchase-card.terms-card #sup-recognize-btn {
  background: #2563eb !important;
  border-color: #2563eb !important;
  color: #fff !important;
}
.purchase-card.terms-card #sup-recognize-btn:hover {
  background: #1d4ed8 !important;
  border-color: #1d4ed8 !important;
}
/* 左右两个面板的小高亮条 */
.purchase-card.terms-card .terms-left {
  border-left: 3px solid #2563eb !important;
}
.purchase-card.terms-card .terms-right {
  border-left: 3px solid #ea580c !important;
}


/* ============================================================
   采购合同表单(深蓝 .purchase-card)内 日期下拉的 option 字体
   浏览器原生 select 在 dark 背景下,展开列表的 option 文字
   会继承父 select 的 white 字色,看不到 → 强制黑字白底
   ============================================================ */
.purchase-card select option,
.purchase-card .date-selects select option {
  background: #fff !important;
  color: #0f172a !important;
}
.purchase-card select,
.purchase-card .date-selects select {
  background: #fff !important;
  color: #0f172a !important;
  border: 1px solid #cbd5e1 !important;
}
/* 同样保护备注 textarea / 状态按钮等已有覆盖,这里不再重复 */


/* ============================================================
   月结到期预警 紧凑版(.monthly-compact 包裹下生效)
   原版每张卡占满首屏只能看 1-2 张 → 这里压到能看 3-5 张
   关键:padding、字号、KPI 高度、倒计时大数字 全部缩小
   ============================================================ */
.monthly-compact .dv-pagehead {
  margin-bottom: 8px !important;
  padding: 10px 14px !important;
}
.monthly-compact .dv-pagehead h1 {
  font-size: 18px !important;
  margin: 0 !important;
}

/* KPI 顶部 2 个大号块 → 缩高 + 缩字 */
.monthly-compact .dv-bignums {
  gap: 10px !important;
  margin-bottom: 10px !important;
}
.monthly-compact .dv-bignum {
  padding: 12px 16px !important;
  min-height: auto !important;
}
.monthly-compact .dv-bignum .lbl {
  font-size: 12px !important;
  margin-bottom: 2px !important;
}
.monthly-compact .dv-bignum .num {
  font-size: 28px !important;
  line-height: 1.1 !important;
  margin: 0 !important;
}
.monthly-compact .dv-bignum .sub {
  font-size: 11px !important;
  margin-top: 2px !important;
}

/* 区块标题(📅 月结待处理) */
.monthly-compact .dv-zone-title {
  margin: 10px 0 8px !important;
  padding: 6px 0 !important;
}
.monthly-compact .dv-zone-title h2 {
  font-size: 14px !important;
  margin: 0 !important;
}
.monthly-compact .dv-zone-title .badge {
  font-size: 11px !important;
  padding: 2px 8px !important;
}
.monthly-compact .dv-zone-title .desc {
  font-size: 11px !important;
}

/* 每张预警卡 */
.monthly-compact .dv-warning {
  padding: 10px 14px !important;
  margin-bottom: 8px !important;
  gap: 12px !important;
  display: flex !important;
  align-items: stretch !important;
}
.monthly-compact .dv-warning .info {
  flex: 1;
  min-width: 0;
}
/* 卡头标题行(逾期/到期 标签 + 合同号 + 客户名) */
.monthly-compact .dv-warning .row1 {
  font-size: 13px !important;
  margin-bottom: 4px !important;
  gap: 8px !important;
}
.monthly-compact .dv-warning .row1 .ctype {
  font-size: 11px !important;
  padding: 2px 6px !important;
}
.monthly-compact .dv-warning .row1 .cno {
  font-size: 13px !important;
  font-weight: 700;
}
.monthly-compact .dv-warning .row1 .cname {
  font-size: 13px !important;
}
/* 次要信息行 */
.monthly-compact .dv-warning .row2 {
  font-size: 11px !important;
  gap: 12px !important;
  margin-bottom: 6px !important;
}
.monthly-compact .dv-warning .row2 .item .lbl {
  font-size: 11px !important;
}
.monthly-compact .dv-warning .row2 .item .val {
  font-size: 12px !important;
}

/* 双板块(客户应收 / 供应商应付) */
.monthly-compact .two-parts {
  gap: 8px !important;
  margin: 6px 0 !important;
}
.monthly-compact .two-parts .part {
  padding: 8px 10px !important;
}
.monthly-compact .two-parts .part-title {
  font-size: 11px !important;
  margin-bottom: 4px !important;
  padding-bottom: 4px !important;
}
.monthly-compact .two-parts .part-line {
  font-size: 11px !important;
  margin-bottom: 2px !important;
  gap: 6px !important;
}
.monthly-compact .two-parts .part-lbl {
  font-size: 10px !important;
  min-width: 32px !important;
}
.monthly-compact .two-parts .part-val {
  font-size: 12px !important;
}
.monthly-compact .two-parts .part-val.money {
  font-size: 13px !important;
}
.monthly-compact .two-parts .part-chip {
  font-size: 10px !important;
  padding: 2px 8px !important;
  margin-top: 4px !important;
}
.monthly-compact .two-parts .part-supplier-row {
  padding: 5px 0 !important;
  border-bottom: 1px dashed rgba(0,0,0,0.08);
}
.monthly-compact .two-parts .part-supplier-row:last-child {
  border-bottom: none;
}
.monthly-compact .two-parts .part-supplier-name {
  font-size: 12px !important;
  font-weight: 600;
}
.monthly-compact .two-parts .part-supplier-meta {
  font-size: 11px !important;
}
.monthly-compact .two-parts .part-empty {
  font-size: 11px !important;
  padding: 6px 0 !important;
}

/* === 月结预警 2 列网格(贴右 chip)— 取代旧的 .part-line 纵向堆 === */
.monthly-compact .two-parts .part-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3px 10px;
  align-items: start;
}
.monthly-compact .two-parts .part-cell {
  display: flex;
  align-items: baseline;
  gap: 4px;
  min-width: 0;
  min-height: 18px;
}
.monthly-compact .two-parts .part-cell.chip-cell {
  justify-content: flex-end;
  align-items: center;
}
.monthly-compact .two-parts .part-cell .part-lbl {
  font-size: 10px !important;
  min-width: 32px !important;
  color: rgba(0,0,0,0.55);
  font-weight: 600;
}
.monthly-compact .two-parts .part-cell .part-val {
  font-size: 11.5px !important;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.monthly-compact .two-parts .part-cell .part-val.money {
  font-size: 13px !important;
  font-weight: 700;
}
/* chip 放右侧,与单元高度居中 */
.monthly-compact .two-parts .part-cell.chip-cell .part-chip {
  margin: 0 !important;
  font-size: 11px !important;
  padding: 3px 9px !important;
  border-radius: 3px !important;
  font-weight: 700;
  white-space: nowrap;
}
/* 整行占位的占位提示 — 居中 + 加点 padding,不再显得「卡片留白」 */
.monthly-compact .two-parts .part-empty-full {
  font-size: 12px;
  color: rgba(0,0,0,0.5);
  font-style: italic;
  text-align: center;
  padding: 18px 8px;
  background: rgba(0,0,0,0.025);
  border-radius: 6px;
  border: 1px dashed rgba(0,0,0,0.12);
}

/* advice 建议行 */
.monthly-compact .advice {
  font-size: 11px !important;
  margin-top: 4px !important;
  padding: 4px 8px !important;
}

/* 右侧:倒计时 + 操作按钮 */
.monthly-compact .dv-warning .side {
  min-width: 90px !important;
  padding: 6px !important;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 6px;
}
.monthly-compact .countdown .big {
  font-size: 28px !important;
  line-height: 1 !important;
}
.monthly-compact .countdown .unit {
  font-size: 10px !important;
  margin-top: 2px !important;
}
.monthly-compact .go-btn {
  font-size: 11px !important;
  padding: 4px 8px !important;
  white-space: nowrap;
}

/* 「今日无忧」空状态也压缩 */
.monthly-compact .dv-allclear {
  padding: 18px 16px !important;
}
.monthly-compact .dv-allclear .check {
  font-size: 36px !important;
}
.monthly-compact .dv-allclear .ttl {
  font-size: 14px !important;
}
.monthly-compact .dv-allclear .desc {
  font-size: 11px !important;
}


/* ============================================================
   工作台 订单预警 · 紧凑版(.alerts-compact 包裹)
   比 .monthly-compact 还小一档:padding/字号/倒计时大数字 全压缩
   原来 1 张卡占首屏 → 现在可看 3-5 张
   ============================================================ */
.alerts-compact .dv-warning {
  padding: 8px 12px !important;
  margin-bottom: 6px !important;
  gap: 10px !important;
  display: flex !important;
  align-items: stretch !important;
  border-radius: 8px !important;
}
.alerts-compact .dv-warning .info {
  flex: 1;
  min-width: 0;
}

/* 主标题行(类型徽章 + 合同号 + 客户名) */
.alerts-compact .dv-warning .row1 {
  font-size: 12px !important;
  margin-bottom: 3px !important;
  gap: 6px !important;
  align-items: center;
  display: flex;
  flex-wrap: wrap;
}
.alerts-compact .dv-warning .row1 .ctype {
  font-size: 10px !important;
  padding: 1px 6px !important;
  border-radius: 3px !important;
  line-height: 1.4;
}
.alerts-compact .dv-warning .row1 .cno {
  font-size: 12px !important;
  font-weight: 700;
}
.alerts-compact .dv-warning .row1 .cname {
  font-size: 12px !important;
}

/* 次要信息行(销售金额/销售员/签约/公司) */
.alerts-compact .dv-warning .row2 {
  font-size: 10px !important;
  gap: 10px !important;
  margin-bottom: 4px !important;
  flex-wrap: wrap;
  display: flex;
}
.alerts-compact .dv-warning .row2 .item {
  display: inline-flex;
  align-items: baseline;
  gap: 3px;
}
.alerts-compact .dv-warning .row2 .item .lbl {
  font-size: 10px !important;
}
.alerts-compact .dv-warning .row2 .item .val {
  font-size: 11px !important;
}
.alerts-compact .dv-warning .row2 .item .val.money {
  font-size: 12px !important;
  font-weight: 700;
}

/* 双板块(👤 客户 / 🏭 背靠背供应商) */
.alerts-compact .two-parts {
  gap: 6px !important;
  margin: 4px 0 !important;
}
.alerts-compact .two-parts .part {
  padding: 6px 8px !important;
  border-radius: 6px !important;
}
.alerts-compact .two-parts .part-title {
  font-size: 10px !important;
  margin-bottom: 3px !important;
  padding-bottom: 3px !important;
  font-weight: 700;
}
.alerts-compact .two-parts .part-line {
  font-size: 10px !important;
  margin-bottom: 1px !important;
  gap: 4px !important;
  display: flex;
  align-items: baseline;
}
.alerts-compact .two-parts .part-lbl {
  font-size: 9px !important;
  min-width: 26px !important;
}
.alerts-compact .two-parts .part-val {
  font-size: 11px !important;
}
.alerts-compact .two-parts .part-val.money {
  font-size: 12px !important;
  font-weight: 700;
}
.alerts-compact .two-parts .part-chip {
  font-size: 10px !important;
  padding: 2px 6px !important;
  margin-top: 3px !important;
  border-radius: 3px !important;
  display: inline-block;
}
.alerts-compact .two-parts .part-supplier-row {
  padding: 3px 0 !important;
  border-bottom: 1px dashed rgba(0,0,0,0.07);
}
.alerts-compact .two-parts .part-supplier-row:last-child {
  border-bottom: none;
}
.alerts-compact .two-parts .part-supplier-name {
  font-size: 11px !important;
  font-weight: 600;
}
.alerts-compact .two-parts .part-supplier-meta {
  font-size: 10px !important;
}
.alerts-compact .two-parts .part-empty {
  font-size: 10px !important;
  padding: 4px 0 !important;
}

/* advice 建议行 */
.alerts-compact .advice {
  font-size: 10px !important;
  margin-top: 3px !important;
  padding: 3px 6px !important;
  border-radius: 4px !important;
  line-height: 1.4;
}

/* 右侧:倒计时大数字 + 操作按钮 */
.alerts-compact .dv-warning .side {
  min-width: 80px !important;
  padding: 4px !important;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 4px;
}
.alerts-compact .countdown .big {
  font-size: 22px !important;
  line-height: 1 !important;
  font-weight: 800;
}
.alerts-compact .countdown .unit {
  font-size: 9px !important;
  margin-top: 1px !important;
  line-height: 1.2;
}
.alerts-compact .go-btn {
  font-size: 10px !important;
  padding: 3px 8px !important;
  white-space: nowrap;
  border-radius: 4px !important;
}


/* ============================================================
   订单预警 · 异常 chip 移右侧 + 卡序号(.alerts-compact 内)
   每板块内布局:左 .part-data(数据) + 右 .part-chips(异常 chip)
   ============================================================ */

/* 卡左侧大号序号 */
.alerts-compact .dv-warning {
  align-items: stretch;
}
.alerts-compact .alert-no {
  flex: 0 0 auto;
  min-width: 38px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.06);
  border-radius: 6px;
  padding: 6px 4px;
  margin-right: 2px;
}
.alerts-compact .dv-warning.overdue .alert-no {
  background: rgba(220,38,38,0.12);  /* 逾期卡用红色调底 */
}
.alerts-compact .dv-warning.warn .alert-no {
  background: rgba(245,158,11,0.14);  /* 到期卡用橙色调底 */
}
.alerts-compact .alert-no-num {
  font-size: 20px;
  font-weight: 900;
  line-height: 1;
  color: #0f172a;
}
.alerts-compact .dv-warning.overdue .alert-no-num { color: #b91c1c; }
.alerts-compact .dv-warning.warn .alert-no-num    { color: #b45309; }
.alerts-compact .alert-no-tot {
  font-size: 9px;
  color: #64748b;
  margin-top: 1px;
  line-height: 1;
}

/* 双板块内的 横向分栏:左数据 + 右 chip */
.alerts-compact .two-parts .part-row {
  display: flex;
  gap: 8px;
  align-items: stretch;
}
.alerts-compact .two-parts .part-data {
  flex: 1 1 auto;
  min-width: 0;
}
.alerts-compact .two-parts .part-chips {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  gap: 4px;
  justify-content: flex-start;
  align-items: flex-end;
  min-width: 0;
}
.alerts-compact .two-parts .part-chips:empty {
  display: none;  /* 没异常时不占空间 */
}

/* chip 适度放大(右侧有空间了),保持视觉清晰 */
.alerts-compact .two-parts .part-chip {
  font-size: 11px !important;
  padding: 4px 8px !important;
  border-radius: 4px !important;
  line-height: 1.3 !important;
  font-weight: 700;
  white-space: nowrap;
  text-align: right;
}
.alerts-compact .two-parts .part-chip small {
  display: block;
  font-size: 9px;
  font-weight: 500;
  opacity: 0.85;
  margin-top: 1px;
  white-space: nowrap;
}


/* ============================================================
   订单预警 · 两板块各自布局 v3
   - 每板块顶部:标题左 + 倒计时徽章右
   - 板块体:2 列网格,左数据右 chip
   - 右侧大倒计时已移除,只剩「进入处理」按钮
   ============================================================ */

/* 板块标题栏(原来的 part-title 升级为 part-head 横向布局) */
.alerts-compact .two-parts .part-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  margin-bottom: 4px !important;
  padding-bottom: 3px !important;
  border-bottom: 1px solid rgba(0,0,0,0.08);
}
.alerts-compact .two-parts .part-head .part-title {
  margin: 0 !important;
  padding: 0 !important;
  border: none !important;
  font-size: 11px !important;
  font-weight: 700;
}

/* 板块内的倒计时徽章 */
.alerts-compact .two-parts .part-clock {
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 10px;
  white-space: nowrap;
  line-height: 1.4;
}
.alerts-compact .two-parts .part-clock.overdue {
  background: #dc2626;
  color: #fff;
}
.alerts-compact .two-parts .part-clock.warn {
  background: #f59e0b;
  color: #1f2937;
}

/* 板块体:2 列网格 */
.alerts-compact .two-parts .part-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px 8px;
  align-items: start;
}
.alerts-compact .two-parts .part-cell {
  display: flex;
  align-items: baseline;
  gap: 4px;
  min-width: 0;
  min-height: 18px;
}
.alerts-compact .two-parts .part-cell.chip-cell {
  justify-content: flex-end;
  align-items: flex-start;
}
.alerts-compact .two-parts .part-cell .part-lbl {
  font-size: 10px !important;
  min-width: 30px !important;
  color: rgba(0,0,0,0.55);
}
.alerts-compact .two-parts .part-cell .part-val {
  font-size: 11px !important;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.alerts-compact .two-parts .part-cell .part-val.money {
  font-size: 12px !important;
  font-weight: 700;
}

/* chip 居右,稍微缩小避免占地太广 */
.alerts-compact .two-parts .part-cell.chip-cell .part-chip {
  margin: 0 !important;
  text-align: right;
  font-size: 10px !important;
  padding: 3px 7px !important;
}
.alerts-compact .two-parts .part-cell.chip-cell .part-chip small {
  font-size: 9px;
}

/* 右侧 side(原来 countdown+button 二合一)现在只有 button */
.alerts-compact .dv-warning .side {
  min-width: 80px !important;
  padding: 4px !important;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: stretch;
}
.alerts-compact .dv-warning .side .go-btn {
  font-size: 11px !important;
  padding: 6px 10px !important;
  text-align: center;
  font-weight: 700;
  border-radius: 5px !important;
}

/* 兼容旧 .countdown / .supplier-row 元素(防止残留) */
.alerts-compact .countdown { display: none; }
.alerts-compact .part-supplier-row { display: none; }


/* ============================================================
   移动端响应:< 900px 时导航折叠为汉堡菜单
   ============================================================ */
.nav-toggle {
  display: none;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.3);
  color: #fff;
  width: 36px;
  height: 36px;
  border-radius: 6px;
  cursor: pointer;
  font-size: 18px;
  align-items: center;
  justify-content: center;
  margin-left: auto;
}

@media (max-width: 900px) {
  .navbar {
    flex-wrap: wrap !important;
    padding: 8px 12px !important;
  }
  .navbar .brand {
    flex: 1 1 auto;
  }
  .nav-toggle {
    display: inline-flex !important;
    order: 2;
  }
  .navbar > a,
  .navbar .company-switcher,
  .navbar .company-badge,
  .navbar .user,
  .navbar form,
  .navbar .spacer {
    display: none !important;
    width: 100%;
    order: 99;
  }
  .navbar.nav-open > a,
  .navbar.nav-open .company-switcher,
  .navbar.nav-open .company-badge,
  .navbar.nav-open .user,
  .navbar.nav-open form {
    display: flex !important;
    flex-basis: 100%;
    padding: 10px 8px;
    border-top: 1px solid rgba(255,255,255,0.1);
    margin: 0;
  }
  .navbar.nav-open > a {
    flex: 1 1 auto;
    text-align: left;
    border-radius: 0;
  }
  .navbar.nav-open .company-switcher {
    flex-wrap: wrap;
    gap: 6px;
  }
  .navbar.nav-open .user {
    color: #cbd5e1;
    padding: 12px 8px 4px;
    font-size: 13px;
  }
  .navbar.nav-open form {
    padding: 4px 8px 12px;
  }
}

/* ============================================================ *
 *  📱 手机端全局优化(≤ 640px)
 *  - 表格小屏可横向滚动 + 字号缩小
 *  - 触摸目标 ≥ 40px(适合拇指点击)
 *  - 输入框字号 ≥ 16px(防 iOS Safari 自动放大)
 *  - page-head / stats / cl-action 等关键组件堆叠
 *  - 登录页留白优化
 * ============================================================ */
@media (max-width: 640px) {
  /* ── 内容容器:留白收紧,给手机让出可用宽度 ── */
  .container {
    padding: 0 10px !important;
    margin: 10px auto !important;
  }

  /* ── 标题区 / 操作区 改为竖排堆叠 ── */
  .page-head {
    flex-direction: column;
    align-items: flex-start !important;
    gap: 8px;
  }
  .page-head h1 {
    font-size: 18px !important;
    line-height: 1.3;
  }
  .page-head > .flex,
  .page-head > div {
    width: 100%;
    flex-wrap: wrap !important;
    gap: 6px !important;
  }

  /* ── 统计卡片:小屏 1-2 列 ── */
  .stats {
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
  }
  .stat {
    padding: 10px !important;
  }
  .stat .label { font-size: 11px !important; }
  .stat .value { font-size: 18px !important; margin-top: 2px !important; }
  .stat .muted { font-size: 10px !important; }
  /* 状态卡 ≤ 360 时彻底单列 */
  @media (max-width: 360px) {
    .stats { grid-template-columns: 1fr !important; }
  }

  /* ── 卡片留白收紧 ── */
  .card {
    padding: 12px !important;
    margin-bottom: 10px !important;
    border-radius: 8px !important;
  }
  .card-head { font-size: 14px !important; }

  /* ── 表格卡片化:每行 = 1 张小卡 ── */
  /* 思路:小屏 9 列横排不可能,转成竖排卡片(每个 tr 自成一个卡),
     第一列(主标识 — 合同号/客户名/产品名等)单独大字号高亮,其余子行 label-value 风格。
     不需要改任何模板。*/
  .card > table.table {
    display: block;
    width: 100%;
    min-width: 0;
  }
  table.table thead { display: none; }
  table.table tbody { display: block; }
  table.table tbody tr {
    display: block;
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    padding: 10px 12px;
    margin: 8px;
    box-shadow: 0 1px 2px rgba(0,0,0,0.04);
  }
  table.table tbody tr:hover td { background: transparent; }
  table.table tbody tr td {
    display: flex !important;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    padding: 5px 0 !important;
    border-bottom: 1px dashed #f1f5f9 !important;
    white-space: normal;
    word-break: break-word;
    overflow-wrap: anywhere;
    font-size: 13px;
    text-align: left;
  }
  table.table tbody tr td:last-child { border-bottom: 0 !important; }
  /* 第一列高亮 = 主标识 */
  table.table tbody tr td:first-child {
    font-weight: 700;
    font-size: 15px;
    color: #1e293b;
    border-bottom: 1px solid #cbd5e1 !important;
    padding-bottom: 7px !important;
    margin-bottom: 4px;
    justify-content: flex-start;
    display: block !important;
  }
  /* num 列右对齐(本来就这样,但 flex justify-content 已经处理) */
  table.table tbody tr td.num {
    font-feature-settings: "tnum" 1;
  }
  table.table tbody tr td.num::before,
  table.table tbody tr td:not(:first-child)::before {
    content: '';  /* 占位,留给将来支持 data-label */
  }
  /* 空表占位行 — 单独 td colspan=9 居中显示 */
  table.table tbody tr td[colspan] {
    display: block !important;
    text-align: center;
    border: 0 !important;
    padding: 16px 0 !important;
    font-size: 13px;
    color: #94a3b8;
  }
  /* 空表行不要边框/背景 */
  table.table tbody tr:has(td[colspan]) {
    background: transparent;
    border: 0;
    box-shadow: none;
    padding: 0;
    margin: 0;
  }

  /* ── 按钮:触摸目标 ≥ 38px,允许内部多行不被压扁 ── */
  .btn {
    padding: 9px 14px !important;
    min-height: 38px;
    font-size: 13.5px !important;
    white-space: normal !important;        /* 覆盖内联 nowrap,允许按钮文字换行 */
    word-break: keep-all;                  /* 中文按词换行 */
    display: inline-flex;
    align-items: center;
    line-height: 1.25;
  }
  .btn.sm {
    padding: 6px 12px !important;
    min-height: 32px;
    font-size: 12.5px !important;
  }
  .btn.lg {
    padding: 12px 20px !important;
    min-height: 44px;
    font-size: 15px !important;
  }
  .btn.tiny {
    padding: 5px 10px !important;
    min-height: 28px;
  }
  /* page-head 的按钮区强制 wrap,不会挤成横排乱叠 */
  .page-head > .flex,
  .page-head > div {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 6px !important;
    align-items: stretch;
  }
  .page-head > .flex > .btn,
  .page-head > div > .btn,
  .page-head > .flex > a.btn,
  .page-head > div > a.btn {
    flex: 0 1 auto;          /* 不强制等宽,按内容大小自然排 */
    text-align: center;
  }

  /* ── 表单输入框:防 iOS 自动放大(font-size ≥ 16px),宽度撑满 ── */
  .form-control, .form-select,
  input[type="text"], input[type="number"], input[type="password"],
  input[type="email"], input[type="date"], textarea, select {
    font-size: 16px !important;
    padding: 9px 10px !important;
    width: 100%;
    box-sizing: border-box;
  }
  textarea { min-height: 60px; }

  /* form-grid 强制单列(虽然 700px 已经做了,这里二次保证) */
  .form-grid { grid-template-columns: 1fr !important; gap: 10px !important; }
  .form-row { margin-bottom: 10px !important; }
  .form-row label { font-size: 13px !important; }

  /* date 三个下拉(年/月/日)在小屏竖排 */
  .date-selects { flex-wrap: wrap !important; gap: 6px !important; }
  .date-selects select { flex: 1 1 30%; min-width: 80px; }

  /* ── 完结清单 cl-action-form 内联控件改成 wrap ── */
  .cl-action-form, .cl-action-row {
    flex-wrap: wrap !important;
    gap: 6px !important;
  }
  .cl-action-form .form-control,
  .cl-action-form input[type="text"],
  .cl-action-form input[type="number"] {
    flex: 1 1 100%;
    min-width: 0 !important;
  }
  .cl-date { width: 100% !important; }

  /* ── 筛选区(销售合同列表):整块更紧凑 ── */
  .filter-panel {
    padding: 10px 12px !important;
    margin-bottom: 10px !important;
  }
  .filter-panel .filter-row { flex-direction: column !important; gap: 10px !important; }
  .filter-panel .filter-search-btn { padding: 9px 14px !important; }
  .filter-panel .chip {
    padding: 6px 10px !important;
    font-size: 12px !important;
    min-height: 32px;
    display: inline-flex;
    align-items: center;
  }

  /* ── alert / 提示区:小屏内边距收紧 ── */
  .alert, .alert.info, .alert.error {
    padding: 8px 10px !important;
    font-size: 12.5px !important;
  }

  /* ── 工作台预警卡片小屏堆叠 ── */
  .dv-bignums { grid-template-columns: 1fr 1fr !important; gap: 8px !important; }
  .dv-bignum { padding: 10px !important; }
  .dv-bignum .num { font-size: 24px !important; }
  .dv-pagehead {
    flex-direction: column;
    align-items: flex-start !important;
    gap: 8px;
  }

  /* ── 登录页:小屏专门 ── */
  .login-wrap {
    max-width: 100% !important;
    margin: 5vh 10px !important;
  }
  .login-wrap .card {
    padding: 20px 18px !important;
  }
  .login-wrap h1 {
    font-size: 18px !important;
    margin: 0 0 16px !important;
  }
  .login-wrap .btn {
    min-height: 46px;
    font-size: 15px !important;
  }

  /* ── 销售合同详情等长页面:section 标题更紧凑 ── */
  .section-header { padding: 8px 0 !important; }
  .section-title { font-size: 14px !important; }

  /* ── flex utility 容器自动 wrap ── */
  .flex { flex-wrap: wrap; gap: 6px; }

  /* ── 销售合同详情 双板块布局 small screen 强制竖排 ── */
  .two-parts { grid-template-columns: 1fr !important; gap: 8px !important; }

  /* ── 安全区适配(iPhone 底部 home indicator 不遮内容) ── */
  body {
    padding-bottom: env(safe-area-inset-bottom);
  }
}

/* ============================================================ *
 *  📱 中等手机 / 平板竖屏(641-820px) — 半适配
 * ============================================================ */
@media (min-width: 641px) and (max-width: 820px) {
  .stats { grid-template-columns: repeat(2, 1fr); }
  .table { font-size: 13px; }
  .container { padding: 0 14px; }
  .form-control, .form-select,
  input[type="text"], input[type="number"], input[type="password"] {
    font-size: 16px;  /* 仍然防 iOS 放大 */
  }
}

/* ============================================================ *
 *  🌍 国际工作台专属调色(青蓝主调,跟国内工作台深蓝形成对比)
 * ============================================================ */
.dashboard-v2 a.dv-bignum-link[href*="/intl/"]:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(8, 145, 178, 0.18);
}
.dashboard-v2 .dv-pagehead h1[style*="0e7490"] {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

/* ════════════════════════════════════════════════════════════════
   v2 视觉护眼层(在所有规则最后,覆盖前面)
   1) 全站底色 → 暖米白:#f5f1e8 系列,卡片保持白形成层次
   2) Navbar 按重要性分级:核心 / 辅助 / 特别入口(各自色身份)
   3) 主体字色微调到 #1f2937 (略柔)
   ════════════════════════════════════════════════════════════════ */

/* ─── 全站底色软化:从冷灰白 → 暖米白 ─── */
:root {
  --bg: #f4f1e9;            /* 暖米白 — 长时间看不刺眼,卡片白色仍突出 */
  --bg-warm: #faf6ec;       /* 更浅一档,用于次级区块底 */
  --text: #1f2937;          /* 比纯黑柔 */
  --textSoft: #475569;
}
body { background: var(--bg); color: var(--text); }

/* ─── 顶栏:轻微暖白底 + 底部细分隔线 ─── */
.navbar {
  background: #fdfcf7 !important;       /* 微微暖于卡片白,与底色拉开 */
  border-bottom: 1px solid #e8e2d2;
  height: 58px;
  padding: 0 24px !important;
  gap: 2px;
}

/* ─── 分类分隔点(竖向小圆点) ─── */
.navbar .nav-sep {
  display: inline-block;
  width: 4px; height: 4px;
  border-radius: 50%;
  background: #d6cfb8;
  margin: 0 6px;
  flex-shrink: 0;
}

/* ─── 第一档:核心日常 ─── */
.navbar a.nav-tier-core {
  color: #1e293b !important;
  font-weight: 600 !important;
  font-size: 13px;
  padding: 8px 12px !important;
  border-radius: 6px;
  border-bottom: 2px solid transparent;
  transition: all .15s ease;
}
.navbar a.nav-tier-core:hover {
  background: #eef4fc !important;
  border-bottom-color: #93c5fd;
  color: #1e3a8a !important;
}
.navbar a.nav-tier-core.active {
  background: #dbeafe !important;
  color: #1d4ed8 !important;
  border-bottom-color: #3b82f6;
}

/* ─── 第二档:辅助 ─── */
.navbar a.nav-tier-aux {
  color: #64748b !important;
  font-weight: 400 !important;
  font-size: 12.5px;
  padding: 7px 10px !important;
  border-radius: 6px;
  border-bottom: 2px solid transparent;
  transition: all .15s ease;
}
.navbar a.nav-tier-aux:hover {
  background: #f1f0ea !important;
  color: #334155 !important;
}
.navbar a.nav-tier-aux.active {
  background: #e8e6dd !important;
  color: #334155 !important;
  border-bottom-color: #94a3b8;
}

/* ─── 第三档:特别入口(pill 风格,带主色边框) ─── */
.navbar a.nav-pill {
  font-weight: 600 !important;
  font-size: 12.5px;
  padding: 6px 12px !important;
  border-radius: 14px !important;
  border: 1px solid transparent;
  transition: all .15s ease;
  margin: 0 1px;
}

.navbar a.nav-pill-orange { color: #c2410c !important; background: #fff7ed !important; border-color: #fed7aa; }
.navbar a.nav-pill-orange:hover  { background: #ffedd5 !important; border-color: #fb923c; box-shadow: 0 1px 4px rgba(251,146,60,0.25); }
.navbar a.nav-pill-orange.active { background: #fed7aa !important; border-color: #ea580c; color: #9a3412 !important; }

.navbar a.nav-pill-purple { color: #6d28d9 !important; background: #faf5ff !important; border-color: #e9d5ff; }
.navbar a.nav-pill-purple:hover  { background: #f3e8ff !important; border-color: #a78bfa; box-shadow: 0 1px 4px rgba(167,139,250,0.25); }
.navbar a.nav-pill-purple.active { background: #ede9fe !important; border-color: #7c3aed; color: #5b21b6 !important; }

.navbar a.nav-pill-emerald { color: #047857 !important; background: #f0fdf4 !important; border-color: #bbf7d0; }
.navbar a.nav-pill-emerald:hover  { background: #dcfce7 !important; border-color: #34d399; box-shadow: 0 1px 4px rgba(52,211,153,0.25); }
.navbar a.nav-pill-emerald.active { background: #d1fae5 !important; border-color: #059669; color: #065f46 !important; }

.navbar a.nav-pill-cyan { color: #0e7490 !important; background: #ecfeff !important; border-color: #a5f3fc; }
.navbar a.nav-pill-cyan:hover  { background: #cffafe !important; border-color: #22d3ee; box-shadow: 0 1px 4px rgba(34,211,238,0.25); }
.navbar a.nav-pill-cyan.active { background: #cffafe !important; border-color: #0891b2; color: #155e75 !important; }

.navbar a.nav-pill-red { color: #b91c1c !important; background: #fef2f2 !important; border-color: #fecaca; }
.navbar a.nav-pill-red:hover  { background: #fee2e2 !important; border-color: #f87171; box-shadow: 0 1px 4px rgba(248,113,113,0.3); }
.navbar a.nav-pill-red.active { background: #fee2e2 !important; border-color: #dc2626; color: #991b1b !important; }

/* ─── 帮助 ❓ 圆形按钮 ─── */
.navbar a.nav-help {
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: #f1f0ea !important;
  color: #64748b !important;
  font-size: 14px;
  padding: 0 !important;
  margin: 0 3px;
  border: 1px solid #e8e2d2;
}
.navbar a.nav-help:hover {
  background: #fef3c7 !important;
  color: #b45309 !important;
  border-color: #fcd34d;
}

/* ─── 移动端:pill 不挤压,改成水平滚动可见 ─── */
@media (max-width: 720px) {
  .navbar { gap: 4px; }
  .navbar a.nav-tier-core,
  .navbar a.nav-tier-aux,
  .navbar a.nav-pill { font-size: 12px; padding: 6px 9px !important; }
  .navbar .nav-sep { display: none; }
}

/* ─── 卡片 / 表格 在新底色下保持白,层次更明显 ─── */
.card, .table { background: #ffffff; }
.stat { background: #ffffff; }

/* ════════════════════════════════════════════════════════════════
   v3 现代化 CRM 层 — 把"毛坯"压下去
   1) 卡片立体化:阴影 + 圆角 + hover 上浮
   2) 表格升级:粘性表头 + 隔行变色 + 行 hover 强反馈
   3) 空值占位 "-" 自动变浅,不抢视线
   4) 首列文字加粗、加色,主标识感更强
   5) 客户/供应商 头像色块(.entity-avatar 通过 JS 自动塞)
   ════════════════════════════════════════════════════════════════ */

/* ─── 卡片立体化 ─── */
.card {
  background: #ffffff !important;
  border: 1px solid #ece6d4 !important;
  border-radius: 12px !important;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 4px 12px rgba(15, 23, 42, 0.03) !important;
  transition: box-shadow .2s ease;
}
.card:hover {
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05), 0 6px 18px rgba(15, 23, 42, 0.06) !important;
}

/* ─── KPI 卡片更精致 ─── */
.stat {
  background: linear-gradient(180deg, #ffffff 0%, #fdfbf5 100%) !important;
  border: 1px solid #ece6d4 !important;
  border-radius: 12px !important;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04) !important;
  position: relative;
  overflow: hidden;
}
.stat::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, #3b82f6, #06b6d4);
  border-radius: 12px 12px 0 0;
}
.stat .label { font-size: 12px; color: #94a3b8; font-weight: 500; letter-spacing: 0.2px; }
.stat .value { font-size: 26px; font-weight: 700; color: #0f172a; letter-spacing: -0.5px; }
.stat .value.ok { color: #15803d; }
.stat .value.danger { color: #dc2626; }
.stat .value.warn { color: #d97706; }

/* ─── 表格升级 ─── */
.table {
  border-collapse: separate;
  border-spacing: 0;
  background: #ffffff;
}
.table thead th {
  background: #fbf9f1 !important;
  color: #6b6045 !important;
  font-weight: 600;
  font-size: 12px;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  border-bottom: 2px solid #ece6d4 !important;
  padding: 11px 16px !important;
  white-space: nowrap;
}
.table tbody tr {
  transition: background .12s ease;
}
.table tbody tr:nth-child(even) td {
  background: #fcfaf3;
}
.table tbody tr:hover td {
  background: #fff8e1 !important;
}
.table tbody td {
  padding: 13px 16px !important;
  border-bottom: 1px solid #f3eedb !important;
  font-size: 13px;
  color: #1f2937;
  vertical-align: middle;
}
.table tbody tr:last-child td {
  border-bottom: 0 !important;
}

/* ─── 首列加粗:主标识感 ─── */
.table tbody td:first-child strong {
  color: #0f172a;
  font-size: 13.5px;
  font-weight: 600;
}

/* ─── 空值占位 "-" 自动变浅 ─── */
/* 模板里大量的 |default:"-",这里把孤立的 "-" / "—" 渲染得很淡 */
.table tbody td.muted {
  color: #cbd5e1 !important;
  font-size: 12.5px;
}

/* ─── 实体首字头像(姓名圆形色块) ─── */
.entity-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px; height: 28px;
  border-radius: 50%;
  font-size: 12px;
  font-weight: 700;
  color: #fff;
  margin-right: 10px;
  vertical-align: middle;
  flex-shrink: 0;
  letter-spacing: 0;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
/* 7 种循环色,按名字首字哈希分配 */
.entity-avatar.c0 { background: linear-gradient(135deg, #6366f1, #4f46e5); }
.entity-avatar.c1 { background: linear-gradient(135deg, #06b6d4, #0891b2); }
.entity-avatar.c2 { background: linear-gradient(135deg, #10b981, #059669); }
.entity-avatar.c3 { background: linear-gradient(135deg, #f59e0b, #d97706); }
.entity-avatar.c4 { background: linear-gradient(135deg, #ef4444, #dc2626); }
.entity-avatar.c5 { background: linear-gradient(135deg, #ec4899, #db2777); }
.entity-avatar.c6 { background: linear-gradient(135deg, #8b5cf6, #7c3aed); }

/* 让首列里的 .entity-avatar + strong 横排居中 */
.table td .entity-cell {
  display: inline-flex;
  align-items: center;
  gap: 0;
}

/* ─── badge 升级:统一胶囊 + 字号微调 ─── */
.badge {
  border-radius: 999px !important;
  padding: 3px 10px !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0.2px;
  display: inline-block;
  line-height: 1.5;
}

/* ─── 操作按钮列 ─── */
.table .btn.sm {
  padding: 5px 11px !important;
  font-size: 12px !important;
  border-radius: 6px !important;
}
.table .btn.ghost.sm {
  background: #fff;
  border: 1px solid #e2e8f0;
  color: #475569;
}
.table .btn.ghost.sm:hover {
  border-color: #3b82f6;
  color: #3b82f6;
  background: #eff6ff;
}
.table .btn.danger.sm {
  background: #fff5f5;
  border: 1px solid #fecaca;
  color: #dc2626;
}
.table .btn.danger.sm:hover {
  background: #dc2626;
  color: #fff;
}

/* ─── 页头优化 ─── */
.page-head h1 {
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.5px;
  color: #0f172a;
}
.page-head .btn {
  font-weight: 600;
  border-radius: 8px;
  padding: 9px 18px;
  box-shadow: 0 2px 6px rgba(59, 130, 246, 0.25);
}

/* ─── 表单卡片(form-card)升级 ─── */
.form-card {
  background: #ffffff !important;
  border: 1px solid #ece6d4 !important;
  border-radius: 12px !important;
  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04), 0 4px 12px rgba(15, 23, 42, 0.03) !important;
  padding: 18px 20px !important;
}
.form-card .card-head {
  font-size: 14px;
  font-weight: 700;
  color: #0f172a;
  margin-bottom: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid #f0eadb;
}
.form-card .card-head .sub {
  font-weight: 400;
  font-size: 12px;
  color: #94a3b8;
  margin-left: 8px;
}

/* ─── 表单控件统一感 ─── */
.form-control, input[type="text"], input[type="number"], input[type="date"], input[type="email"], select, textarea {
  border-radius: 7px !important;
  border-color: #d6cfb8 !important;
  background: #fffef9 !important;
  transition: all .15s ease;
}
.form-control:focus, input:focus, select:focus, textarea:focus {
  border-color: #3b82f6 !important;
  background: #fff !important;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.12) !important;
  outline: none;
}

/* ─── 空 td(纯破折号)淡化 ─── */
.table tbody td:empty::before { content: "—"; color: #d6cfb8; }

/* ─── 列表空状态优化 ─── */
.table tbody tr td[colspan] {
  text-align: center !important;
  padding: 48px 24px !important;
  color: #94a3b8 !important;
  font-size: 13px;
  background: #fdfcf7 !important;
}

/* ─── 移动端补丁:卡片不要 hover 浮起(没有指针) ─── */
@media (hover: none) {
  .card:hover { box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 4px 12px rgba(15, 23, 42, 0.03) !important; }
}
@media (max-width: 720px) {
  .stat .value { font-size: 22px; }
  .table thead th { padding: 9px 10px !important; font-size: 11px; }
  .table tbody td { padding: 10px !important; font-size: 12.5px; }
}

/* ════════════════════════════════════════════════════════════════
   v3 全局头像 JS 钩子说明
   在 table 的「客户名称 / 供应商名称 / 客户」首列加 .entity-cell-auto,
   下方的 base.html 末尾会自动注入色块头像。
   ════════════════════════════════════════════════════════════════ */


/* ════════════════════════════════════════════════════════════════
   v4 设计系统层 — P0 阶段(严肃 SaaS 重构 第 1 波)
   原则:同屏 ≤ 3 种色调(品牌 + 1 语义 + 灰阶)
   覆盖范围:色卡 / 底色 / Navbar / Badge / KPI / 表格表头 / 头像
   不动模板,只用 CSS 覆盖
   ════════════════════════════════════════════════════════════════ */

/* ─── 1. 色卡:统一锁死 ─── */
:root {
  /* 品牌色 — indigo 稳重不刺眼 */
  --primary:        #4f46e5;
  --primary-hover:  #4338ca;
  --primary-soft:   #eef2ff;
  --primary-dark:   #3730a3;

  /* 中性灰阶 — 80% 的 UI 都用这套 */
  --n-50:  #fafafa;
  --n-100: #f5f5f4;
  --n-150: #ededec;
  --n-200: #e7e5e0;
  --n-300: #d6d3cc;
  --n-400: #a8a29e;
  --n-500: #78716c;
  --n-600: #57534e;
  --n-700: #44403c;
  --n-900: #1c1917;

  /* 语义色 — 只用于状态,不当装饰 */
  --success:     #16a34a;  --success-bg: #dcfce7;
  --warn:        #d97706;  --warn-bg:    #fef3c7;
  --danger:      #dc2626;  --danger-bg:  #fee2e2;
  --info:        #0284c7;  --info-bg:    #e0f2fe;

  /* 旧 token 兼容 — 全部接到新色上,旧代码不用动 */
  --bg:          #fafafa;
  --bg-warm:     #fafafa;
  --card:        #ffffff;
  --cardSoft:    #fafafa;
  --border:      #e7e5e0;
  --ring:        #e7e5e0;
  --ringSoft:    #f5f5f4;
  --text:        #1c1917;
  --textSoft:    #57534e;
  --muted:       #78716c;
  --mutedSoft:   #a8a29e;
  --ok:          #16a34a;
  --okBg:        #dcfce7;
}

/* ─── 2. 全站底色 → 纯中性灰白 ─── */
body { background: #fafafa !important; color: #1c1917 !important; }

/* ─── 3. Navbar 重置:统一灰字 + active 下划线,删除所有 pill 色 ─── */
.navbar {
  background: #ffffff !important;
  border-bottom: 1px solid #e7e5e0 !important;
  box-shadow: none !important;
  height: 48px !important;
  padding: 0 20px !important;
}
.navbar .brand {
  color: #1c1917 !important;
  font-weight: 700 !important;
  font-size: 14px !important;
  letter-spacing: -0.2px;
}
/* 所有 navbar 链接 — 一律灰字,无 pill,无渐变 */
.navbar a,
.navbar a.nav-tier-core,
.navbar a.nav-tier-aux,
.navbar a.nav-pill,
.navbar a.nav-pill-orange,
.navbar a.nav-pill-purple,
.navbar a.nav-pill-emerald,
.navbar a.nav-pill-cyan,
.navbar a.nav-pill-red {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  border-bottom: 2px solid transparent !important;
  color: #57534e !important;
  font-weight: 500 !important;
  font-size: 13px !important;
  padding: 14px 12px !important;
  box-shadow: none !important;
  transition: color .12s ease, border-color .12s ease;
  margin: 0 !important;
}
.navbar a:hover {
  background: transparent !important;
  color: #1c1917 !important;
  text-decoration: none !important;
  box-shadow: none !important;
}
.navbar a.active {
  background: transparent !important;
  color: #1c1917 !important;
  font-weight: 600 !important;
  border-bottom-color: #4f46e5 !important;
}
/* 帮助 ❓ 圆形按钮 → 改成普通灰链接 */
.navbar a.nav-help {
  width: auto !important; height: auto !important;
  border-radius: 0 !important;
  background: transparent !important;
  border: 0 !important;
  color: #a8a29e !important;
  padding: 14px 8px !important;
}
.navbar a.nav-help:hover {
  background: transparent !important;
  color: #57534e !important;
}
/* 分隔点 — 改成竖线分隔,更专业 */
.navbar .nav-sep {
  width: 1px !important;
  height: 14px !important;
  background: #e7e5e0 !important;
  border-radius: 0 !important;
  margin: 0 6px !important;
  align-self: center;
}
/* 公司视角切换 — 中性化 */
.company-switcher {
  background: #fafafa !important;
  border: 1px solid #e7e5e0 !important;
}
.cs-tab.active {
  background: #ffffff !important;
  color: #4f46e5 !important;
}

/* ─── 4. Badge 收敛:只 4 种 + 旧色全部映射过来 ─── */
.badge {
  border-radius: 999px !important;
  padding: 2px 10px !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  letter-spacing: 0;
  line-height: 1.6;
  display: inline-block;
  border: 0 !important;
}
/* 4 种正色 */
.badge.neutral, .badge.gray   { background: #f5f5f4 !important; color: #57534e !important; }
.badge.success, .badge.green  { background: #dcfce7 !important; color: #15803d !important; }
.badge.warn, .badge.amber, .badge.yellow { background: #fef3c7 !important; color: #b45309 !important; }
.badge.danger, .badge.red     { background: #fee2e2 !important; color: #b91c1c !important; }
/* 把彩虹色全部映射到中性灰(避免水彩笔效果) */
.badge.blue, .badge.cyan,
.badge.purple, .badge.violet,
.badge.pink, .badge.orange {
  background: #f5f5f4 !important;
  color: #57534e !important;
}
/* 只对"进行中"特殊处理:浅蓝品牌色 */
.badge.blue { background: #eef2ff !important; color: #4338ca !important; }

/* ─── 5. KPI 卡:去掉顶部渐变色条,数字黑色加粗 ─── */
.stat {
  background: #ffffff !important;
  border: 1px solid #e7e5e0 !important;
  border-radius: 8px !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.03) !important;
  padding: 16px !important;
}
.stat::before { display: none !important; }
.stat .label {
  font-size: 11px !important;
  color: #78716c !important;
  font-weight: 500 !important;
  letter-spacing: 0.4px;
  text-transform: uppercase;
}
.stat .value {
  font-size: 24px !important;
  font-weight: 700 !important;
  color: #1c1917 !important;
  letter-spacing: -0.5px;
  font-variant-numeric: tabular-nums;
}
.stat .value.ok, .stat .value.success { color: #15803d !important; }
.stat .value.danger { color: #dc2626 !important; }
.stat .value.warn { color: #d97706 !important; }

/* ─── 6. 卡片统一:8px 圆角,1 层弱阴影,不 hover 上浮 ─── */
.card {
  background: #ffffff !important;
  border: 1px solid #e7e5e0 !important;
  border-radius: 8px !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.03) !important;
  transition: none !important;
}
.card:hover { box-shadow: 0 1px 2px rgba(0,0,0,0.03) !important; }
.form-card {
  background: #ffffff !important;
  border: 1px solid #e7e5e0 !important;
  border-radius: 8px !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.03) !important;
}

/* ─── 7. 表格表头:小写大写 + 灰底灰字 + 弱分隔 ─── */
.table {
  background: #ffffff;
  border-collapse: separate;
  border-spacing: 0;
}
.table thead th {
  background: #fafafa !important;
  color: #78716c !important;
  font-weight: 600 !important;
  font-size: 11px !important;
  letter-spacing: 0.5px !important;
  text-transform: uppercase !important;
  border-bottom: 1px solid #e7e5e0 !important;
  padding: 10px 16px !important;
}
.table tbody tr:nth-child(even) td { background: #ffffff !important; }
.table tbody tr:hover td { background: #fafafa !important; }
.table tbody td {
  padding: 12px 16px !important;
  border-bottom: 1px solid #f5f5f4 !important;
  font-size: 13px !important;
  color: #1c1917 !important;
}
.table tbody tr:last-child td { border-bottom: 0 !important; }
.table tbody td.num,
.table thead th.num {
  font-variant-numeric: tabular-nums;
  text-align: right;
}

/* ─── 8. 实体头像统一灰(取消 7 色彩虹) ─── */
.entity-avatar,
.entity-avatar.c0, .entity-avatar.c1, .entity-avatar.c2,
.entity-avatar.c3, .entity-avatar.c4, .entity-avatar.c5, .entity-avatar.c6 {
  background: #e7e5e0 !important;
  color: #57534e !important;
  box-shadow: none !important;
  font-weight: 600 !important;
  width: 26px !important; height: 26px !important;
  font-size: 11px !important;
}

/* ─── 9. 按钮统一 ─── */
.btn {
  border-radius: 6px !important;
  font-weight: 500 !important;
  transition: all .12s ease;
}
.btn:not(.ghost):not(.danger):not(.gray) {
  background: #4f46e5 !important;
  border-color: #4f46e5 !important;
  color: #ffffff !important;
  box-shadow: none !important;
}
.btn:not(.ghost):not(.danger):not(.gray):hover {
  background: #4338ca !important;
  border-color: #4338ca !important;
}
.btn.ghost {
  background: #ffffff !important;
  border: 1px solid #d6d3cc !important;
  color: #44403c !important;
}
.btn.ghost:hover {
  border-color: #4f46e5 !important;
  color: #4f46e5 !important;
  background: #ffffff !important;
}
.btn.gray {
  background: #f5f5f4 !important;
  border-color: #e7e5e0 !important;
  color: #57534e !important;
}
.btn.danger {
  background: #ffffff !important;
  border: 1px solid #fecaca !important;
  color: #dc2626 !important;
}
.btn.danger:hover {
  background: #dc2626 !important;
  color: #ffffff !important;
}

/* ─── 10. Tab 头(销售合同详情等)— 取消 5 色,改单色下划线 ─── */
.sales-tab,
.sales-tab[data-tab="completion"],
.sales-tab[data-tab="details"],
.sales-tab[data-tab="purchases"],
.sales-tab[data-tab="invoices"],
.sales-tab[data-tab="archive"],
.bulk-tab,
.bulk-tab[data-tab="payments"],
.bulk-tab[data-tab="allocations"],
.bulk-tab[data-tab="archive"] {
  background: transparent !important;
  color: #57534e !important;
  border: 0 !important;
  border-bottom: 2px solid transparent !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 10px 14px !important;
  font-weight: 500 !important;
  font-size: 13.5px !important;
}
.sales-tab:hover, .bulk-tab:hover {
  background: transparent !important;
  color: #1c1917 !important;
}
.sales-tab.active, .bulk-tab.active,
.sales-tab[data-tab].active, .bulk-tab[data-tab].active {
  background: transparent !important;
  color: #1c1917 !important;
  border-bottom-color: #4f46e5 !important;
  font-weight: 600 !important;
  box-shadow: none !important;
}
.bulk-tab-badge {
  background: #f5f5f4 !important;
  color: #57534e !important;
}

/* ─── 11. 标题层级 ─── */
.page-head h1 {
  font-size: 20px !important;
  font-weight: 700 !important;
  color: #1c1917 !important;
  letter-spacing: -0.4px;
}
.card-head, .card h2 {
  font-size: 14px !important;
  font-weight: 600 !important;
  color: #1c1917 !important;
}
.card-head .sub, .muted.sub {
  font-size: 12px !important;
  color: #a8a29e !important;
  font-weight: 400 !important;
}

/* ─── 12. 输入控件:不再用暖白底 ─── */
.form-control, input[type="text"], input[type="number"], input[type="date"],
input[type="email"], input[type="search"], select, textarea {
  background: #ffffff !important;
  border-color: #d6d3cc !important;
  border-radius: 6px !important;
  color: #1c1917 !important;
}
.form-control:focus, input:focus, select:focus, textarea:focus {
  border-color: #4f46e5 !important;
  box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12) !important;
  background: #ffffff !important;
}

/* ─── 13. 关闭 v3 残余的暖底/水彩笔色 ─── */
.card { background: #ffffff !important; }
.table { background: #ffffff !important; }


/* ════════════════════════════════════════════════════════════════
   v4 P1 + P2 + P3 总扫:把所有内联渐变 / 主题色卡 / 装饰色彩
   全部归入 indigo + 灰阶 + 3 语义色
   主文字一律纯黑 #000
   ════════════════════════════════════════════════════════════════ */

/* ─── 主文字改纯黑 ─── */
:root { --text: #000000; --textSoft: #1c1917; }
body, .card, .table, .stat, .form-card,
.cl-item, .alert, .page-head h1, h1, h2, h3, h4 {
  color: #000000 !important;
}
strong, b { color: #000000 !important; }
/* 次要文字保持中等灰 */
.muted, .sub, .navbar a:not(.active),
.card-head .sub, .table thead th {
  color: #57534e !important;
}
.table thead th { color: #78716c !important; }

/* ─── 付款里程碑 payment_milestones 横条:青色 → indigo ─── */
.payment-milestones > div[style*="linear-gradient"]:first-child,
.payment-milestones > div:first-child[style*="background"] {
  background: linear-gradient(135deg, #4338ca, #6366f1) !important;
  color: #ffffff !important;
}
.payment-milestones .ms-grid {
  border-color: #e7e5e0 !important;
}
.payment-milestones .ms-card {
  border-color: #f5f5f4 !important;
}

/* ─── 多合同发货卡 bulk-ship-card 头部:青/绿 → indigo ─── */
.bulk-ship-card,
.bulk-ship-card[style*="border"] {
  border-color: #e7e5e0 !important;
}
.bulk-ship-card > div[style*="linear-gradient"]:first-child {
  background: linear-gradient(135deg, #4338ca, #6366f1) !important;
  color: #ffffff !important;
}

/* ─── 进项票紫卡 / 归档蓝卡:统一中性边框 ─── */
.card[style*="#c026d3"],
.card[style*="#fdf4ff"],
.card[style*="#0284c7"],
.card[style*="#f0f9ff"],
.card[style*="#86198f"],
.card[style*="#075985"] {
  background: #ffffff !important;
  border: 1px solid #e7e5e0 !important;
}
.card[style*="#c026d3"] .card-head,
.card[style*="#0284c7"] .card-head { color: #000000 !important; }

/* ─── 工作台 KPI 卡(dashboard-v2):彩色边框 → 统一灰边 ─── */
.dashboard-v2 .kpi-card,
.dashboard-v2 [class*="kpi-"] {
  border-color: #e7e5e0 !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.03) !important;
}
.dashboard-v2 .kpi-value,
.dashboard-v2 [class*="kpi-value"] {
  color: #000000 !important;
}
.dashboard-v2 .dv-pagehead h1 { color: #000000 !important; }

/* ─── 订单完结清单 cl-item:done 用浅灰底而非鲜绿 ─── */
.cl-item {
  border: 1px solid #e7e5e0 !important;
  background: #ffffff !important;
  border-radius: 8px !important;
}
.cl-item.done {
  background: #fafafa !important;
  border-color: #e7e5e0 !important;
}
.cl-item.done .cl-icon { color: #16a34a !important; }
.cl-item .cl-icon { color: #a8a29e !important; font-weight: 700; }

/* ─── 订单预警卡 .order-alert 收敛到 3 档 ─── */
.order-alert {
  border-left: 4px solid #d6d3cc !important;
  background: #fafafa !important;
}
.order-alert.warn {
  border-left-color: #d97706 !important;
  background: #fffbeb !important;
}
.order-alert.overdue,
.order-alert.danger {
  border-left-color: #dc2626 !important;
  background: #fef2f2 !important;
}

/* ─── 多合同 BulkPurchase 分组色条:全部 indigo 一档 ─── */
[data-bulk-group] {
  background: #fafafa !important;
}
[data-bulk-group] td:first-child {
  border-left-color: #4f46e5 !important;
}

/* ─── filter-panel / chip / filter 区域统一 ─── */
.filter-panel {
  background: #ffffff !important;
  border: 1px solid #e7e5e0 !important;
  border-radius: 8px !important;
  box-shadow: none !important;
}
.chip {
  background: #f5f5f4 !important;
  color: #57534e !important;
  border: 1px solid transparent !important;
  border-radius: 999px !important;
  padding: 4px 12px !important;
  font-size: 12px !important;
}
.chip:hover {
  background: #ededec !important;
  color: #000000 !important;
}
.chip.active {
  background: #eef2ff !important;
  color: #4338ca !important;
  border-color: #c7d2fe !important;
}

/* ─── 月结徽章 / 月结预警等:全部用 warn 黄一档 ─── */
.monthly-banner, .monthly-warn,
.alert.info, .info-strip,
[class*="monthly-due"] {
  background: #fef3c7 !important;
  border-color: #fde68a !important;
  color: #b45309 !important;
}

/* ─── 内联 style 兜底:把常见品牌色硬覆盖到中性/主色 ─── */
/* 各种橙色背景 → 中性灰底 */
[style*="background:#ea580c"],
[style*="background:#fff7ed"],
[style*="background:#fed7aa"],
[style*="border-color:#ea580c"] {
  background: #4f46e5 !important;
  border-color: #4f46e5 !important;
  color: #ffffff !important;
}
/* 紫色按钮 / 紫色 link → indigo */
[style*="background:#7c3aed"],
[style*="background:#a21caf"],
[style*="background:#86198f"],
[style*="background:#c026d3"] {
  background: #4f46e5 !important;
  border-color: #4f46e5 !important;
  color: #ffffff !important;
}
/* 青色按钮 → indigo */
[style*="background:#0891b2"],
[style*="background:#0e7490"],
[style*="background:#0f766e"],
[style*="background:#0d9488"] {
  background: #4f46e5 !important;
  border-color: #4f46e5 !important;
  color: #ffffff !important;
}
/* 绿色 highlight pill / 大红色按钮 — 保留 */

/* ─── 内联文字色:橙紫青等 → 黑 ─── */
[style*="color:#ea580c"],
[style*="color:#7c3aed"],
[style*="color:#0891b2"],
[style*="color:#0e7490"],
[style*="color:#86198f"],
[style*="color:#155e75"],
[style*="color:#9a3412"],
[style*="color:#075985"],
[style*="color:#0f766e"] {
  color: #000000 !important;
}

/* ─── 销售合同列表 行内分组色条全部 indigo ─── */
.bulk-row {
  background: #fafafa !important;
}
.bulk-row td[style*="border-left"] {
  border-left-color: #4f46e5 !important;
}

/* ─── 预警卡片色条(订单 / 月结)─── */
.alert-tag {
  font-weight: 600 !important;
  border-radius: 6px !important;
  font-size: 11.5px !important;
}
.alert-tag.supplier { background: #f5f5f4 !important; color: #57534e !important; }
.alert-tag.anomaly  { background: #fee2e2 !important; color: #b91c1c !important; }
.alert-tag.deposit  { background: #fef3c7 !important; color: #b45309 !important; }

/* ─── 报价 quotation 紫色调 → indigo ─── */
[class*="quote"][style*="purple"],
.quote-card[style*="#7c3aed"] {
  background: #eef2ff !important;
  border-color: #c7d2fe !important;
  color: #4338ca !important;
}

/* ─── 业绩看板:删除装饰大色块,数字唱主角 ─── */
.report-card, .reports-section {
  background: #ffffff !important;
  border-color: #e7e5e0 !important;
}
.report-num, .report-value {
  color: #000000 !important;
  font-weight: 700 !important;
  font-variant-numeric: tabular-nums;
}

/* ─── 公司视角切换器 cs-tab 收敛 ─── */
.cs-tab {
  font-weight: 500 !important;
  color: #78716c !important;
}
.cs-tab.active {
  background: #eef2ff !important;
  color: #4338ca !important;
  font-weight: 600 !important;
}

/* ─── 各种 padding 14px 的 card-head sub:统一灰字 ─── */
.card-head { color: #000000 !important; }
.card-head[style*="color"] { color: #000000 !important; }

/* ─── 链接全站统一 indigo ─── */
a:not(.btn):not(.chip):not(.cs-tab):not(.sales-tab):not(.bulk-tab):not(.nav-help):not(.entity-avatar) {
  color: #4f46e5;
}
a:not(.btn):not(.chip):not(.cs-tab):hover {
  color: #4338ca;
  text-decoration: underline;
}
/* 但表格里点击行内的"详情/编辑"等 btn 类的链接 不变 */

/* ─── 移除卡片 hover 上浮残留 ─── */
.card:hover, .form-card:hover, .stat:hover {
  transform: none !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.03) !important;
}

/* ─── 标签/输入 label 也用纯黑 ─── */
label, .form-row label, .form-grid label {
  color: #000000 !important;
  font-weight: 500;
}

/* ─── 移动端补丁 ─── */
@media (max-width: 720px) {
  .navbar { height: auto !important; padding: 8px 12px !important; }
  .navbar a { padding: 8px 10px !important; font-size: 12.5px !important; }
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix — 用户反馈
   1) 中文 B2B 单字头像无意义("上海 / 北京..."),全部隐藏
   2) "本期合计" 灰底信息条不要黄(语义错误)
   3) 列表交期预警 / 分组色 弱化到几乎不见
   4) 赫兹2023 组首白色横条,不全行染色
   ════════════════════════════════════════════════════════════════ */

/* 1) 头像彻底关闭 — 中文 B2B 取首字无信息量 */
.entity-avatar { display: none !important; }
.entity-cell { display: inline !important; }
.table tbody td .entity-cell > span:last-child {
  margin-left: 0 !important;
}

/* 2) 销售列表汇总条 / 通用 info 条:改成中性浅灰 + 黑字 */
.alert.info,
.info-strip,
.monthly-banner {
  background: #f5f5f4 !important;
  border: 1px solid #e7e5e0 !important;
  color: #1c1917 !important;
}

/* 但月结相关的 banner 保留黄(只针对 monthly-due / monthly-warn) */
.monthly-due, .monthly-warn,
[class*="monthly-due"] {
  background: #fef3c7 !important;
  border-color: #fde68a !important;
  color: #b45309 !important;
}

/* 3) 交期预警行底色:从浓黄改极淡 */
.row-alert,
.row-alert td,
tr.row-alert td {
  background: #fefcf3 !important;
}
tr.row-alert:hover td {
  background: #fef9e7 !important;
}

/* 4) 多合同分组行(.bulk-row) → 几乎透明的浅灰,只左侧 3px indigo 色条 */
.bulk-row td,
tr.bulk-row td {
  background: #fcfcfc !important;
}
tr.bulk-row:hover td {
  background: #f5f5f4 !important;
}
.bulk-row td:first-child {
  border-left: 3px solid #4f46e5 !important;
}

/* 5) 销售列表组首大行(赫兹2023 那种) — 改紧凑细横条 */
.bulk-group-header td,
tr.bulk-group-header td {
  background: #fafafa !important;
  border-top: 1px solid #e7e5e0 !important;
  border-bottom: 1px solid #e7e5e0 !important;
  padding: 8px 16px !important;
}

/* 6) 交期预警 chip 更小一点不抢戏 */
.badge.red, .badge.danger {
  font-size: 11px !important;
  padding: 1px 8px !important;
}

/* 7) 多合同采购单分组徽章(1/3 2/3) — 灰底,不显眼 */
[class*="badge"][style*="背景"],
.badge[style*="background"] {
  /* 模板里有内联色,跟着我们前面的兜底走 */
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #2 — 把色彩"有节制地"加回来
   1) 签约日 / 表格 .muted 列文字 → 黑色,不再发灰
   2) KPI 卡顶部 2px indigo 细线(回归品牌色锚点,但比之前渐变克制)
   3) 关键页面区块:左侧 3px 色条做"身份标识"
      - 销售/工作台/默认 = indigo
      - 多合同采购单 = emerald 绿
      - 报价 = purple 紫
      - 国际业务 = cyan 青
   4) 表格行 hover 时左侧出现细 indigo 标示线
   5) 主按钮加 subtle inset 高光,不再扁平
   ════════════════════════════════════════════════════════════════ */

/* 1) 表格 .muted 列文字提亮 — 签约日这类数据该是黑的 */
.table tbody td.muted {
  color: #1c1917 !important;
  font-size: 13px !important;
}
/* 但纯空 td::before "—" 占位仍然保持淡色 */
.table tbody td:empty::before {
  color: #d6d3cc !important;
  content: "—";
}
/* "-" 显示但本身是字符的情况(不是 :empty),也压一下 */
.table tbody td.muted:empty::before {
  color: #d6d3cc !important;
}

/* 2) KPI 顶部 2px indigo 细线 — 回归品牌锚点 */
.stat {
  position: relative;
  overflow: hidden;
}
.stat::before {
  content: "" !important;
  display: block !important;
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px !important;
  background: #4f46e5 !important;
  border-radius: 8px 8px 0 0;
}
/* 第一张 KPI(销售)indigo,第二张(累计)indigo,第三张(毛利)绿 */
.stats .stat:nth-child(2)::before { background: #6366f1 !important; }
.stats .stat:nth-child(3)::before { background: #16a34a !important; }
.stats .stat:nth-child(4)::before { background: #d97706 !important; }

/* 3) 页头底部 1px indigo,给"我在销售合同页"这种身份感 */
.page-head {
  padding-bottom: 14px;
  border-bottom: 1px solid #e7e5e0;
  margin-bottom: 18px !important;
}
.page-head h1 {
  position: relative;
  padding-left: 12px;
}
.page-head h1::before {
  content: "";
  position: absolute;
  left: 0; top: 6px; bottom: 6px;
  width: 3px;
  background: #4f46e5;
  border-radius: 2px;
}

/* 4) 表格行左边 hover 时 2px indigo 标示 */
.table tbody tr {
  position: relative;
}
.table tbody tr:hover td:first-child {
  box-shadow: inset 3px 0 0 0 #4f46e5;
}

/* 5) 主按钮微高光 — 不再死板扁平 */
.btn:not(.ghost):not(.danger):not(.gray):not(.sm) {
  background: linear-gradient(180deg, #5b54e8 0%, #4f46e5 100%) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.15), 0 1px 2px rgba(79,70,229,0.25) !important;
}
.btn:not(.ghost):not(.danger):not(.gray):not(.sm):hover {
  background: linear-gradient(180deg, #4f46e5 0%, #4338ca 100%) !important;
}

/* 6) form-card 加 3px 左侧 indigo 色条做身份标识 */
.form-card {
  border-left: 3px solid #4f46e5 !important;
}

/* 7) 销售合同详情 / 工作台 等大区块:加左侧色条系统 */
/* 默认 indigo */
.card:not(.bulk-purchase-card):not(.intl-card):not(.quote-card) {
  /* 不动 — 保持纯白卡片,避免每张卡都有色条变密 */
}

/* 8) 数据高亮:金额单元格用黑色加粗 + tabular */
.table tbody td.num {
  color: #000000 !important;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
}
.table tbody td.num strong { color: #000000 !important; }

/* 9) 表格中"-"占位 .muted 单独处理(不影响日期) */
.table tbody td.muted {
  color: #1c1917 !important;  /* 默认深色,日期用 */
}
/* 仅当 td 内容是孤立 "-" 或 "—" 时极淡 */

/* 10) 状态 badge 微调 — 进行中带浅色但不抢眼 */
.badge.blue {
  background: #eef2ff !important;
  color: #4338ca !important;
}

/* 11) Tab active 下划线加粗到 3px 更明显 */
.sales-tab.active, .bulk-tab.active {
  border-bottom-width: 3px !important;
}

/* 12) Navbar active 下划线也加粗到 3px */
.navbar a.active {
  border-bottom-width: 3px !important;
}

/* 13) 二级标题加色条 (h2 in card) */
.card > h2:first-child,
.card-head {
  position: relative;
}

/* 14) 链接默认色再深一点 */
a:not(.btn):not(.chip):not(.cs-tab):not(.sales-tab):not(.bulk-tab):not(.nav-help):not(.entity-avatar) {
  color: #4338ca;
}

/* 15) 公司视角 cs-tab.active — 加色身份 */
.cs-tab.active {
  background: #eef2ff !important;
  color: #4338ca !important;
  border: 1px solid #c7d2fe !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #3 — 字号加大 + Tab 卡片色身份恢复
   1) 表格 / 表单 / 各类文字 全面 +1-2px
   2) 表头取消大写 letter-spacing,字号放大
   3) Tab 改成"实卡片"风格,各自带浅底色身份(蓝/青/橙/紫/绿)
   4) Bulk 详情 3 个 tab 同款卡片色
   ════════════════════════════════════════════════════════════════ */

/* ─── 字号全面加大 ─── */
body { font-size: 14px !important; }

.table thead th {
  font-size: 12.5px !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  font-weight: 600 !important;
  color: #44403c !important;
  padding: 12px 16px !important;
}

.table tbody td {
  font-size: 14px !important;
  padding: 14px 16px !important;
  color: #1c1917 !important;
}
.table tbody td.muted {
  font-size: 14px !important;
  color: #1c1917 !important;
}
.table tbody td strong { font-size: 14px !important; }

/* KPI 数字稍大,标签也大一点 */
.stat .label {
  font-size: 12px !important;
  letter-spacing: 0.3px !important;
  text-transform: none !important;
}
.stat .value { font-size: 26px !important; }

/* 卡片标题 */
.card-head, .card h2 {
  font-size: 15px !important;
  font-weight: 600 !important;
}
.card-head .sub, .sub {
  font-size: 13px !important;
  color: #57534e !important;
}

/* 页头 */
.page-head h1 { font-size: 22px !important; }

/* 表单标签 */
label, .form-row label {
  font-size: 13.5px !important;
  font-weight: 500 !important;
}

/* Badge 微放大 */
.badge {
  font-size: 12.5px !important;
  padding: 3px 10px !important;
}

/* 按钮 */
.btn { font-size: 14px !important; padding: 8px 16px !important; }
.btn.sm { font-size: 12.5px !important; padding: 6px 12px !important; }

/* Navbar 字号 */
.navbar a, .navbar a.active {
  font-size: 13.5px !important;
  padding: 14px 14px !important;
}
.navbar .brand { font-size: 15px !important; }

/* 公司切换器 */
.cs-tab { font-size: 13px !important; padding: 5px 12px !important; }

/* ─── Tab 卡片化:恢复 5 色身份(但用浅底,不抢主舞台)─── */
.sales-tabs, .bulk-tabs {
  display: flex !important;
  gap: 6px !important;
  border-bottom: 1px solid #e7e5e0 !important;
  padding-bottom: 0;
  margin: 16px 0 16px !important;
  flex-wrap: wrap;
}

/* 通用 tab 样式 — 卡片形 */
.sales-tab, .bulk-tab {
  background: #ffffff !important;
  color: #44403c !important;
  border: 1px solid #e7e5e0 !important;
  border-radius: 8px 8px 0 0 !important;
  border-bottom-width: 0 !important;
  padding: 11px 18px !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  position: relative;
  bottom: -1px;
  text-decoration: none !important;
  transition: all .15s;
  box-shadow: none !important;
}
.sales-tab:hover, .bulk-tab:hover {
  background: #fafafa !important;
}

/* 销售合同 5 个 tab 各自浅底色身份 */
.sales-tab[data-tab="completion"]         { background: #eff6ff !important; color: #1e40af !important; border-color: #bfdbfe !important; }
.sales-tab[data-tab="completion"]:hover   { background: #dbeafe !important; }
.sales-tab[data-tab="completion"].active  { background: #ffffff !important; border-color: #bfdbfe #bfdbfe #ffffff !important; border-bottom: 3px solid #3b82f6 !important; color: #1e40af !important; }

.sales-tab[data-tab="details"]            { background: #ecfeff !important; color: #155e75 !important; border-color: #a5f3fc !important; }
.sales-tab[data-tab="details"]:hover      { background: #cffafe !important; }
.sales-tab[data-tab="details"].active     { background: #ffffff !important; border-color: #a5f3fc #a5f3fc #ffffff !important; border-bottom: 3px solid #0891b2 !important; color: #155e75 !important; }

.sales-tab[data-tab="purchases"]          { background: #fff7ed !important; color: #9a3412 !important; border-color: #fed7aa !important; }
.sales-tab[data-tab="purchases"]:hover    { background: #ffedd5 !important; }
.sales-tab[data-tab="purchases"].active   { background: #ffffff !important; border-color: #fed7aa #fed7aa #ffffff !important; border-bottom: 3px solid #ea580c !important; color: #9a3412 !important; }

.sales-tab[data-tab="invoices"]           { background: #f5f3ff !important; color: #5b21b6 !important; border-color: #ddd6fe !important; }
.sales-tab[data-tab="invoices"]:hover     { background: #ede9fe !important; }
.sales-tab[data-tab="invoices"].active    { background: #ffffff !important; border-color: #ddd6fe #ddd6fe #ffffff !important; border-bottom: 3px solid #7c3aed !important; color: #5b21b6 !important; }

.sales-tab[data-tab="archive"]            { background: #f0fdf4 !important; color: #166534 !important; border-color: #bbf7d0 !important; }
.sales-tab[data-tab="archive"]:hover      { background: #dcfce7 !important; }
.sales-tab[data-tab="archive"].active     { background: #ffffff !important; border-color: #bbf7d0 #bbf7d0 #ffffff !important; border-bottom: 3px solid #16a34a !important; color: #166534 !important; }

/* 多合同采购单 3 个 tab */
.bulk-tab[data-tab="payments"]            { background: #ecfeff !important; color: #155e75 !important; border-color: #a5f3fc !important; }
.bulk-tab[data-tab="payments"]:hover      { background: #cffafe !important; }
.bulk-tab[data-tab="payments"].active     { background: #ffffff !important; border-color: #a5f3fc #a5f3fc #ffffff !important; border-bottom: 3px solid #0891b2 !important; color: #155e75 !important; }

.bulk-tab[data-tab="allocations"]         { background: #fff7ed !important; color: #9a3412 !important; border-color: #fed7aa !important; }
.bulk-tab[data-tab="allocations"]:hover   { background: #ffedd5 !important; }
.bulk-tab[data-tab="allocations"].active  { background: #ffffff !important; border-color: #fed7aa #fed7aa #ffffff !important; border-bottom: 3px solid #ea580c !important; color: #9a3412 !important; }

.bulk-tab[data-tab="archive"]             { background: #f0fdf4 !important; color: #166534 !important; border-color: #bbf7d0 !important; }
.bulk-tab[data-tab="archive"]:hover       { background: #dcfce7 !important; }
.bulk-tab[data-tab="archive"].active      { background: #ffffff !important; border-color: #bbf7d0 #bbf7d0 #ffffff !important; border-bottom: 3px solid #16a34a !important; color: #166534 !important; }

.bulk-tab-badge {
  background: rgba(255, 255, 255, 0.7) !important;
  color: inherit !important;
  margin-left: 6px;
  font-weight: 700 !important;
  padding: 1px 8px !important;
  border-radius: 999px;
  font-size: 11px !important;
}

/* ─── 行高微调,让 14px 字号呼吸 ─── */
.table tbody tr td {
  line-height: 1.55;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #4 — Tab active 底线加粗 + 分隔感增强
   ════════════════════════════════════════════════════════════════ */

/* tab 行下方分隔线:1px → 2px */
.sales-tabs, .bulk-tabs {
  border-bottom: 2px solid #e7e5e0 !important;
  gap: 4px !important;
  margin: 16px 0 0 !important;
  padding-bottom: 0 !important;
  position: relative;
  bottom: -2px;
}

/* 通用 tab — 默认稍粗的底色边,active 时换成 5px 主色实线 */
.sales-tab, .bulk-tab {
  border-bottom-width: 0 !important;
  padding: 12px 22px !important;
  font-size: 14.5px !important;
}

/* active 状态:把底线加粗到 5px,并向下盖住 tabs 行的 2px 分隔线 */
.sales-tab.active, .bulk-tab.active {
  border-bottom-width: 0 !important;
  position: relative;
  z-index: 2;
  box-shadow: 0 -2px 0 0 #ffffff inset, 0 1px 2px rgba(0,0,0,0.04) !important;
}

/* 销售 tab 5 色 active — 5px 底色线 */
.sales-tab[data-tab="completion"].active  { border-bottom: 5px solid #3b82f6 !important; color: #1e40af !important; }
.sales-tab[data-tab="details"].active     { border-bottom: 5px solid #0891b2 !important; color: #155e75 !important; }
.sales-tab[data-tab="purchases"].active   { border-bottom: 5px solid #ea580c !important; color: #9a3412 !important; }
.sales-tab[data-tab="invoices"].active    { border-bottom: 5px solid #7c3aed !important; color: #5b21b6 !important; }
.sales-tab[data-tab="archive"].active     { border-bottom: 5px solid #16a34a !important; color: #166534 !important; }

/* bulk tab 3 色 active — 5px */
.bulk-tab[data-tab="payments"].active     { border-bottom: 5px solid #0891b2 !important; color: #155e75 !important; }
.bulk-tab[data-tab="allocations"].active  { border-bottom: 5px solid #ea580c !important; color: #9a3412 !important; }
.bulk-tab[data-tab="archive"].active      { border-bottom: 5px solid #16a34a !important; color: #166534 !important; }

/* 同步 navbar active 也粗一档:2px → 3px(刚才已经 3px,但要确保) */
.navbar a.active {
  border-bottom-width: 3px !important;
}

/* ─── 表格列分隔感增强:首列加细灰右竖线 ─── */
.table tbody td:first-child {
  border-right: 1px solid #f5f5f4;
}
.table thead th:first-child {
  border-right: 1px solid #e7e5e0;
}

/* ─── 表格行底线加粗一档,长列表分得更开 ─── */
.table tbody td {
  border-bottom: 1px solid #ededec !important;
}

/* ─── filter-panel 与表格之间的视觉断层加深 ─── */
.filter-panel {
  margin-bottom: 14px !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #5 — Tab 全实色填充 + 大色块
   active 直接整张染色,白字大字号,像桌签
   ════════════════════════════════════════════════════════════════ */

.sales-tabs, .bulk-tabs {
  border-bottom: 0 !important;
  gap: 6px !important;
  margin: 16px 0 18px !important;
  padding-bottom: 0 !important;
  bottom: 0 !important;
  position: static;
}

/* 基础 tab — 大色块版 */
.sales-tab, .bulk-tab {
  background: #ffffff !important;
  color: #1c1917 !important;
  border: 2px solid #e7e5e0 !important;
  border-radius: 10px !important;
  padding: 14px 26px !important;
  font-size: 15px !important;
  font-weight: 600 !important;
  position: static !important;
  bottom: auto !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.04) !important;
  transition: all .15s ease;
  text-decoration: none !important;
  white-space: nowrap;
}
.sales-tab:hover, .bulk-tab:hover {
  transform: translateY(-1px);
  box-shadow: 0 3px 8px rgba(0,0,0,0.08) !important;
}

/* 销售 tab — inactive 浅彩底 + 深字 */
.sales-tab[data-tab="completion"]         { background: #dbeafe !important; color: #1e3a8a !important; border-color: #93c5fd !important; }
.sales-tab[data-tab="completion"]:hover   { background: #bfdbfe !important; border-color: #60a5fa !important; }

.sales-tab[data-tab="details"]            { background: #cffafe !important; color: #155e75 !important; border-color: #67e8f9 !important; }
.sales-tab[data-tab="details"]:hover      { background: #a5f3fc !important; border-color: #22d3ee !important; }

.sales-tab[data-tab="purchases"]          { background: #ffedd5 !important; color: #9a3412 !important; border-color: #fdba74 !important; }
.sales-tab[data-tab="purchases"]:hover    { background: #fed7aa !important; border-color: #fb923c !important; }

.sales-tab[data-tab="invoices"]           { background: #ede9fe !important; color: #5b21b6 !important; border-color: #c4b5fd !important; }
.sales-tab[data-tab="invoices"]:hover     { background: #ddd6fe !important; border-color: #a78bfa !important; }

.sales-tab[data-tab="archive"]            { background: #dcfce7 !important; color: #166534 !important; border-color: #86efac !important; }
.sales-tab[data-tab="archive"]:hover      { background: #bbf7d0 !important; border-color: #4ade80 !important; }

/* 销售 tab — active 整张实色填充 + 白字 + 阴影上浮 */
.sales-tab[data-tab="completion"].active  {
  background: linear-gradient(135deg, #3b82f6, #2563eb) !important;
  color: #ffffff !important;
  border-color: #2563eb !important;
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-2px);
}
.sales-tab[data-tab="details"].active     {
  background: linear-gradient(135deg, #06b6d4, #0891b2) !important;
  color: #ffffff !important;
  border-color: #0891b2 !important;
  box-shadow: 0 4px 12px rgba(6, 182, 212, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-2px);
}
.sales-tab[data-tab="purchases"].active   {
  background: linear-gradient(135deg, #f97316, #ea580c) !important;
  color: #ffffff !important;
  border-color: #ea580c !important;
  box-shadow: 0 4px 12px rgba(249, 115, 22, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-2px);
}
.sales-tab[data-tab="invoices"].active    {
  background: linear-gradient(135deg, #8b5cf6, #7c3aed) !important;
  color: #ffffff !important;
  border-color: #7c3aed !important;
  box-shadow: 0 4px 12px rgba(139, 92, 246, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-2px);
}
.sales-tab[data-tab="archive"].active     {
  background: linear-gradient(135deg, #22c55e, #16a34a) !important;
  color: #ffffff !important;
  border-color: #16a34a !important;
  box-shadow: 0 4px 12px rgba(34, 197, 94, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-2px);
}

/* bulk tab 同样升级:3 色 */
.bulk-tab[data-tab="payments"]            { background: #cffafe !important; color: #155e75 !important; border-color: #67e8f9 !important; }
.bulk-tab[data-tab="payments"]:hover      { background: #a5f3fc !important; border-color: #22d3ee !important; }
.bulk-tab[data-tab="payments"].active     {
  background: linear-gradient(135deg, #06b6d4, #0891b2) !important;
  color: #ffffff !important;
  border-color: #0891b2 !important;
  box-shadow: 0 4px 12px rgba(6, 182, 212, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-2px);
}

.bulk-tab[data-tab="allocations"]         { background: #ffedd5 !important; color: #9a3412 !important; border-color: #fdba74 !important; }
.bulk-tab[data-tab="allocations"]:hover   { background: #fed7aa !important; border-color: #fb923c !important; }
.bulk-tab[data-tab="allocations"].active  {
  background: linear-gradient(135deg, #f97316, #ea580c) !important;
  color: #ffffff !important;
  border-color: #ea580c !important;
  box-shadow: 0 4px 12px rgba(249, 115, 22, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-2px);
}

.bulk-tab[data-tab="archive"]             { background: #dcfce7 !important; color: #166534 !important; border-color: #86efac !important; }
.bulk-tab[data-tab="archive"]:hover       { background: #bbf7d0 !important; border-color: #4ade80 !important; }
.bulk-tab[data-tab="archive"].active      {
  background: linear-gradient(135deg, #22c55e, #16a34a) !important;
  color: #ffffff !important;
  border-color: #16a34a !important;
  box-shadow: 0 4px 12px rgba(34, 197, 94, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-2px);
}

/* tab badge(数字 0/3 等)在 active 时:半透明白底 + 主色字 */
.bulk-tab.active .bulk-tab-badge,
.sales-tab.active span[class*="badge"] {
  background: rgba(255, 255, 255, 0.95) !important;
  color: inherit !important;
  font-weight: 700 !important;
}

/* 移动端微调 */
@media (max-width: 720px) {
  .sales-tab, .bulk-tab {
    padding: 10px 14px !important;
    font-size: 13px !important;
    border-radius: 8px !important;
  }
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #6 — 全站统一:实色填充 + 大色块
   把同款风格扩展到 Navbar / 筛选 chip / 状态 toggle / 公司切换器
   ════════════════════════════════════════════════════════════════ */

/* ─── Navbar:特别入口恢复带色 pill 大色块 ─── */
.navbar {
  height: auto !important;
  min-height: 56px !important;
  padding: 10px 20px !important;
  gap: 6px !important;
  flex-wrap: wrap;
}

/* 普通菜单仍然走 P0 的克制风格 */
.navbar a.nav-tier-core,
.navbar a.nav-tier-aux {
  padding: 10px 14px !important;
}

/* 特别入口 pill — 实色填充大色块 */
.navbar a.nav-pill,
.navbar a.nav-pill-orange,
.navbar a.nav-pill-purple,
.navbar a.nav-pill-emerald,
.navbar a.nav-pill-cyan,
.navbar a.nav-pill-red {
  font-weight: 600 !important;
  font-size: 13.5px !important;
  padding: 9px 16px !important;
  border-radius: 10px !important;
  border: 2px solid transparent !important;
  border-bottom: 2px solid transparent !important;
  transition: all .15s ease;
  white-space: nowrap;
  box-shadow: 0 1px 2px rgba(0,0,0,0.04) !important;
}

/* 多合同采购单 — 橙 */
.navbar a.nav-pill-orange {
  background: #ffedd5 !important;
  color: #9a3412 !important;
  border-color: #fdba74 !important;
}
.navbar a.nav-pill-orange:hover {
  background: linear-gradient(135deg, #f97316, #ea580c) !important;
  color: #ffffff !important;
  border-color: #ea580c !important;
  box-shadow: 0 4px 10px rgba(249, 115, 22, 0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-1px);
}
.navbar a.nav-pill-orange.active {
  background: linear-gradient(135deg, #f97316, #ea580c) !important;
  color: #ffffff !important;
  border-color: #ea580c !important;
  box-shadow: 0 4px 10px rgba(249, 115, 22, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
}

/* 新客户报价 — 紫 */
.navbar a.nav-pill-purple {
  background: #ede9fe !important;
  color: #5b21b6 !important;
  border-color: #c4b5fd !important;
}
.navbar a.nav-pill-purple:hover {
  background: linear-gradient(135deg, #8b5cf6, #7c3aed) !important;
  color: #ffffff !important;
  border-color: #7c3aed !important;
  box-shadow: 0 4px 10px rgba(139, 92, 246, 0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-1px);
}
.navbar a.nav-pill-purple.active {
  background: linear-gradient(135deg, #8b5cf6, #7c3aed) !important;
  color: #ffffff !important;
  border-color: #7c3aed !important;
  box-shadow: 0 4px 10px rgba(139, 92, 246, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
}

/* 业绩看板 — 绿 */
.navbar a.nav-pill-emerald {
  background: #dcfce7 !important;
  color: #166534 !important;
  border-color: #86efac !important;
}
.navbar a.nav-pill-emerald:hover {
  background: linear-gradient(135deg, #22c55e, #16a34a) !important;
  color: #ffffff !important;
  border-color: #16a34a !important;
  box-shadow: 0 4px 10px rgba(34, 197, 94, 0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-1px);
}
.navbar a.nav-pill-emerald.active {
  background: linear-gradient(135deg, #22c55e, #16a34a) !important;
  color: #ffffff !important;
  border-color: #16a34a !important;
  box-shadow: 0 4px 10px rgba(34, 197, 94, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
}

/* 国际工作台 — 青 */
.navbar a.nav-pill-cyan {
  background: #cffafe !important;
  color: #155e75 !important;
  border-color: #67e8f9 !important;
}
.navbar a.nav-pill-cyan:hover {
  background: linear-gradient(135deg, #06b6d4, #0891b2) !important;
  color: #ffffff !important;
  border-color: #0891b2 !important;
  box-shadow: 0 4px 10px rgba(6, 182, 212, 0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-1px);
}
.navbar a.nav-pill-cyan.active {
  background: linear-gradient(135deg, #06b6d4, #0891b2) !important;
  color: #ffffff !important;
  border-color: #0891b2 !important;
  box-shadow: 0 4px 10px rgba(6, 182, 212, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
}

/* 国际预警 — 红 */
.navbar a.nav-pill-red {
  background: #fee2e2 !important;
  color: #991b1b !important;
  border-color: #fca5a5 !important;
}
.navbar a.nav-pill-red:hover {
  background: linear-gradient(135deg, #ef4444, #dc2626) !important;
  color: #ffffff !important;
  border-color: #dc2626 !important;
  box-shadow: 0 4px 10px rgba(239, 68, 68, 0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-1px);
}
.navbar a.nav-pill-red.active {
  background: linear-gradient(135deg, #ef4444, #dc2626) !important;
  color: #ffffff !important;
  border-color: #dc2626 !important;
  box-shadow: 0 4px 10px rgba(239, 68, 68, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
}

/* 核心 / 辅助菜单 active 仍用下划线(不必全部上色) */
.navbar a.nav-tier-core.active,
.navbar a.nav-tier-aux.active {
  background: #eef2ff !important;
  color: #4338ca !important;
  border-radius: 8px !important;
  border-bottom-color: transparent !important;
  font-weight: 600 !important;
}

/* ─── 筛选 chip — 实色 active ─── */
.chip {
  background: #ffffff !important;
  color: #44403c !important;
  border: 2px solid #e7e5e0 !important;
  border-radius: 999px !important;
  padding: 7px 16px !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  transition: all .15s ease;
  box-shadow: 0 1px 2px rgba(0,0,0,0.03) !important;
}
.chip:hover {
  border-color: #4f46e5 !important;
  color: #4f46e5 !important;
  background: #eef2ff !important;
}
.chip.active {
  background: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  color: #ffffff !important;
  border-color: #4f46e5 !important;
  font-weight: 600 !important;
  box-shadow: 0 3px 8px rgba(79, 70, 229, 0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-1px);
}

/* ─── 公司视角 cs-tab 同款大色块 ─── */
.cs-tab {
  background: #ffffff !important;
  color: #57534e !important;
  border: 2px solid #e7e5e0 !important;
  border-radius: 8px !important;
  padding: 6px 14px !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  transition: all .15s ease;
}
.cs-tab:hover {
  border-color: #4f46e5 !important;
  color: #4f46e5 !important;
  background: #eef2ff !important;
}
.cs-tab.active {
  background: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  color: #ffffff !important;
  border-color: #4f46e5 !important;
  font-weight: 600 !important;
  box-shadow: 0 2px 6px rgba(79, 70, 229, 0.3) !important;
}
.company-switcher {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  gap: 4px !important;
}

/* ─── 「全部客户 / 仅月结客户」类切换按钮 ─── */
/* 客户列表已用 .btn .sm + .ghost,统一升级 */
.btn.sm:not(.ghost):not(.danger):not(.gray) {
  background: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  color: #ffffff !important;
  border: 2px solid #4f46e5 !important;
  box-shadow: 0 2px 6px rgba(79, 70, 229, 0.3) !important;
}
.btn.sm.ghost {
  background: #ffffff !important;
  color: #44403c !important;
  border: 2px solid #e7e5e0 !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.03) !important;
}
.btn.sm.ghost:hover {
  background: #eef2ff !important;
  color: #4338ca !important;
  border-color: #4f46e5 !important;
}

/* ─── filter-panel 内的 filter-group label / chip-group 整体感 ─── */
.filter-panel {
  padding: 14px 18px !important;
}
.filter-label {
  font-weight: 600 !important;
  color: #1c1917 !important;
  font-size: 13px !important;
}
.filter-input {
  font-size: 14px !important;
  padding: 9px 14px !important;
}
.filter-search-btn {
  background: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  color: #ffffff !important;
  border-radius: 8px !important;
  padding: 9px 22px !important;
  font-weight: 600 !important;
  border: 0 !important;
  box-shadow: 0 2px 6px rgba(79, 70, 229, 0.3) !important;
}
.filter-search-btn:hover {
  background: linear-gradient(135deg, #4f46e5, #4338ca) !important;
  box-shadow: 0 4px 10px rgba(79, 70, 229, 0.4) !important;
}

/* ─── 销售合同列表 "+新增销售合同" / "我的业绩" / "仅看月结合同" 主按钮统一 ─── */
.page-head .btn,
.page-head a.btn {
  background: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  color: #ffffff !important;
  border: 0 !important;
  font-weight: 600 !important;
  padding: 10px 18px !important;
  border-radius: 8px !important;
  box-shadow: 0 2px 8px rgba(79, 70, 229, 0.35) !important;
  font-size: 14px !important;
}
.page-head .btn:hover,
.page-head a.btn:hover {
  background: linear-gradient(135deg, #4f46e5, #4338ca) !important;
  box-shadow: 0 4px 12px rgba(79, 70, 229, 0.45) !important;
  transform: translateY(-1px);
}
/* page-head 内的 ghost 按钮(我的业绩 / 仅看月结)保持白底 indigo 边 */
.page-head .btn.ghost,
.page-head a.btn.ghost {
  background: #ffffff !important;
  color: #4f46e5 !important;
  border: 2px solid #c7d2fe !important;
  box-shadow: 0 1px 2px rgba(0,0,0,0.03) !important;
}

/* ─── KPI 卡顶部色条加粗,与 Tab 风格统一 ─── */
.stat::before {
  height: 3px !important;
}
.stats .stat:nth-child(1)::before { background: linear-gradient(90deg, #3b82f6, #2563eb) !important; }
.stats .stat:nth-child(2)::before { background: linear-gradient(90deg, #6366f1, #4f46e5) !important; }
.stats .stat:nth-child(3)::before { background: linear-gradient(90deg, #22c55e, #16a34a) !important; }
.stats .stat:nth-child(4)::before { background: linear-gradient(90deg, #f97316, #ea580c) !important; }

/* ─── 大段「订单完结清单 / 合同详情」h2 标题用色条左边线 ─── */
.card[data-tab] h2,
.card[data-bulk-tab] h2,
.card[data-tab] > h2:first-child {
  position: relative;
  padding-left: 14px;
}
.card[data-tab="completion"] h2:first-child::before { content:""; position:absolute; left:0; top:4px; bottom:4px; width:4px; background:#3b82f6; border-radius:2px; }
.card[data-tab="details"]    h2:first-child::before { content:""; position:absolute; left:0; top:4px; bottom:4px; width:4px; background:#0891b2; border-radius:2px; }
.card[data-tab="purchases"]  h2:first-child::before { content:""; position:absolute; left:0; top:4px; bottom:4px; width:4px; background:#ea580c; border-radius:2px; }
.card[data-tab="invoices"]   h2:first-child::before { content:""; position:absolute; left:0; top:4px; bottom:4px; width:4px; background:#7c3aed; border-radius:2px; }
.card[data-tab="archive"]    h2:first-child::before { content:""; position:absolute; left:0; top:4px; bottom:4px; width:4px; background:#16a34a; border-radius:2px; }


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #7 — 新建/编辑采购合同 .purchase-card 深蓝背景恢复
   销售合同 = 白色卡 / 采购合同 = 深蓝实底 → 业务身份强对比
   ════════════════════════════════════════════════════════════════ */

.card.purchase-card,
.purchase-card.form-card {
  background: linear-gradient(135deg, #1e40af 0%, #1d4ed8 100%) !important;
  border: 2px solid #1e3a8a !important;
  border-left-color: #60a5fa !important;
  border-left-width: 4px !important;
  color: #f1f5f9 !important;
  box-shadow: 0 6px 20px rgba(30, 64, 175, 0.25) !important;
}

/* 标题 + sub 在蓝底下用白/浅蓝字 */
.purchase-card .card-head {
  color: #ffffff !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  border-bottom: 1px solid rgba(255,255,255,0.18) !important;
  padding-bottom: 12px !important;
  margin-bottom: 14px !important;
}
.purchase-card .card-head .sub {
  color: #bfdbfe !important;
  font-weight: 400 !important;
  font-size: 13px !important;
}

/* 标签 / 说明文字一律白 / 浅蓝 */
.purchase-card label,
.purchase-card .form-row label {
  color: #ffffff !important;
  font-weight: 600 !important;
  font-size: 13.5px !important;
}
.purchase-card .muted,
.purchase-card .form-row .muted,
.purchase-card .sub {
  color: #c7d2fe !important;
}
.purchase-card .help-text,
.purchase-card .form-help {
  color: #bfdbfe !important;
}

/* 输入控件仍然白底,方便录入 */
.purchase-card input[type="text"],
.purchase-card input[type="number"],
.purchase-card input[type="date"],
.purchase-card input[type="email"],
.purchase-card select,
.purchase-card textarea,
.purchase-card .form-control {
  background: #ffffff !important;
  color: #0f172a !important;
  border: 1px solid #93c5fd !important;
  border-radius: 6px !important;
}
.purchase-card input:focus,
.purchase-card select:focus,
.purchase-card textarea:focus {
  border-color: #60a5fa !important;
  box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.35) !important;
}

/* 状态按钮组(进行中 / 已发货 / 已完成 / 已取消) */
.purchase-card .status-btn,
.purchase-card label.status-btn {
  background: #ffffff !important;
  color: #1e3a8a !important;
  border: 2px solid #93c5fd !important;
  padding: 8px 18px !important;
  border-radius: 8px !important;
  font-weight: 600 !important;
  cursor: pointer;
  transition: all .15s ease;
}
.purchase-card .status-btn:hover {
  background: #dbeafe !important;
  border-color: #3b82f6 !important;
}
.purchase-card .status-btn.active,
.purchase-card .status-btn:has(input:checked) {
  background: linear-gradient(135deg, #60a5fa, #3b82f6) !important;
  color: #ffffff !important;
  border-color: #ffffff !important;
  box-shadow: 0 3px 8px rgba(96, 165, 250, 0.4), inset 0 1px 0 rgba(255,255,255,0.2) !important;
}

/* 产品行 / 拖拽框 / 总计区 — 浅底,与蓝卡对比 */
.purchase-card .items-head { color: #ffffff !important; border-bottom: 1px solid rgba(255,255,255,0.25) !important; }
.purchase-card .item-row {
  background: #ffffff !important;
  color: #0f172a !important;
  border: 1px solid #93c5fd !important;
  border-radius: 6px !important;
}
.purchase-card .grand-total {
  background: #1e3a8a !important;
  color: #ffffff !important;
  border: 1px solid #60a5fa !important;
  border-radius: 6px !important;
}
.purchase-card .grand-total strong,
.purchase-card .grand-total #grand-total {
  color: #ffffff !important;
}

/* 拖拽上传区(归档)— 白底 */
.purchase-card .dropzone {
  background: #ffffff !important;
  border: 2px dashed #60a5fa !important;
  color: #0f172a !important;
}
.purchase-card .dropzone .dz-title { color: #1e3a8a !important; font-weight: 700 !important; }
.purchase-card .dropzone .dz-hint { color: #57534e !important; }
.purchase-card .dropzone:hover {
  background: #dbeafe !important;
  border-color: #3b82f6 !important;
}

/* 付款行 */
.purchase-card .payment-row {
  background: #ffffff !important;
  border: 1px solid #93c5fd !important;
}
.purchase-card .payment-row.paid { background: #f0fdf4 !important; border-color: #86efac !important; }
.purchase-card .payment-row.acceptance { background: #fff7ed !important; border-color: #fdba74 !important; }

/* 「+ 添加产品」等卡内按钮 — 白底蓝字 */
.purchase-card .btn:not(.danger):not(.gray) {
  background: #ffffff !important;
  color: #1e40af !important;
  border: 2px solid #ffffff !important;
  font-weight: 600 !important;
}
.purchase-card .btn:not(.danger):not(.gray):hover {
  background: #dbeafe !important;
  color: #1e3a8a !important;
  border-color: #93c5fd !important;
}

/* card-head 左侧色条原本是 indigo,蓝卡内改成亮蓝 */
.purchase-card .card-head {
  position: relative;
  padding-left: 12px !important;
}
.purchase-card .card-head::before {
  content: "";
  position: absolute;
  left: 0; top: 2px; bottom: 12px;
  width: 3px;
  background: #60a5fa;
  border-radius: 2px;
}

/* 「背靠背供应商开票资料」等卡 — 也整张蓝 */
.purchase-card .card.subsection,
.purchase-card .info-block {
  background: rgba(255,255,255,0.08) !important;
  border: 1px solid rgba(255,255,255,0.18) !important;
  color: #ffffff !important;
}

/* card_head 内的「采购合同信息」「背靠背:对应销售合同..」全部白色 */
.purchase-card * {
  color: inherit;
}
.purchase-card h2, .purchase-card h3, .purchase-card strong {
  color: #ffffff !important;
}

/* 移除 form-card 默认左侧 indigo 条(蓝卡用自己的) */
.purchase-card.form-card {
  border-left: 4px solid #60a5fa !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #8 — 蓝卡内特殊子组件颜色还原
   1) 月结 toggle .monthly-tag-btn 红白胶囊还原
   2) 月结展开面板 .monthly-panel 暖橙底 + 黑字
   3) alert / warn 等浅底卡也回归黑字
   ════════════════════════════════════════════════════════════════ */

/* 1) 月结 toggle — 蓝卡内仍要保持红白胶囊身份 */
.purchase-card .monthly-tag-btn,
.purchase-card label.monthly-tag-btn {
  background: #fef2f2 !important;
  color: #b91c1c !important;
  border: 1px solid #fecaca !important;
  border-radius: 999px !important;
  padding: 4px 12px !important;
  font-size: 12.5px !important;
  font-weight: 600 !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 5px !important;
  cursor: pointer;
}
.purchase-card .monthly-tag-btn:hover {
  background: #fee2e2 !important;
  border-color: #fca5a5 !important;
}
.purchase-card .monthly-tag-btn:has(input:checked) {
  background: linear-gradient(135deg, #ef4444, #dc2626) !important;
  color: #ffffff !important;
  border-color: #b91c1c !important;
  box-shadow: 0 2px 6px rgba(220, 38, 38, 0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
}
.purchase-card .monthly-tag-btn input[type="checkbox"] {
  accent-color: #dc2626 !important;
  margin: 0 !important;
}

/* 2) 月结展开面板 — 暖橙底 + 黑字 + 黑标签 */
.purchase-card .monthly-panel,
.purchase-card div.monthly-panel {
  background: #fffaf0 !important;
  border: 1px dashed #f59e0b !important;
  border-radius: 10px !important;
  padding: 12px 14px !important;
  color: #1c1917 !important;
}
.purchase-card .monthly-panel,
.purchase-card .monthly-panel *,
.purchase-card .monthly-panel label,
.purchase-card .monthly-panel strong,
.purchase-card .monthly-panel .muted,
.purchase-card .monthly-panel .sub {
  color: #1c1917 !important;
}
/* 月结说明文字提示色:橙强调 */
.purchase-card .monthly-panel > .muted,
.purchase-card .monthly-panel > .muted.sm {
  color: #9a3412 !important;
  font-weight: 500 !important;
  font-size: 12.5px !important;
}
.purchase-card .monthly-panel label {
  color: #1c1917 !important;
  font-weight: 700 !important;
  font-size: 13.5px !important;
}
.purchase-card .monthly-panel input[type="number"],
.purchase-card .monthly-panel input[type="text"],
.purchase-card .monthly-panel select {
  background: #ffffff !important;
  color: #1c1917 !important;
  border: 1px solid #fdba74 !important;
  border-radius: 6px !important;
}
.purchase-card .monthly-panel input:focus,
.purchase-card .monthly-panel select:focus {
  border-color: #ea580c !important;
  box-shadow: 0 0 0 3px rgba(234, 88, 12, 0.18) !important;
}
.purchase-card .monthly-panel .monthly-anchor-grid > .muted {
  color: #9a3412 !important;
  font-weight: 600 !important;
}

/* 3) 蓝卡内的 alert.warn / .alert.error 等子卡 — 维持自己原本的浅底 + 深字 */
.purchase-card .alert,
.purchase-card .alert.warn,
.purchase-card .alert.error,
.purchase-card .alert.info {
  color: #1c1917 !important;
}
.purchase-card .alert.warn {
  background: #fef3c7 !important; border: 1px solid #fde68a !important; color: #b45309 !important;
}
.purchase-card .alert.error {
  background: #fee2e2 !important; border: 1px solid #fecaca !important; color: #b91c1c !important;
}
.purchase-card .alert.info {
  background: #eff6ff !important; border: 1px solid #bfdbfe !important; color: #1e3a8a !important;
}
.purchase-card .alert * { color: inherit !important; }

/* 4) 同理:terms-card 内的浅底子区块也保持黑字 */
.purchase-card .terms-card .form-control,
.purchase-card textarea.form-control {
  color: #1c1917 !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #9 — 销售合同新建表单 → 绿色身份
   销售=进项绿 / 采购=支出蓝
   归档 4 个 dropzone 各填一色身份
   ════════════════════════════════════════════════════════════════ */

/* 销售合同表单页(不是采购/不是详情)— 主 form-card 绿调 */
/* 用 :not(.purchase-card) 排除已经是蓝的采购卡 */
.form-card:not(.purchase-card):not(.terms-card):not(.archive-card):not(.note-card) {
  background: linear-gradient(180deg, #f0fdf4 0%, #ffffff 60%) !important;
  border: 2px solid #bbf7d0 !important;
  border-left: 4px solid #16a34a !important;
  box-shadow: 0 2px 8px rgba(22, 163, 74, 0.08) !important;
}

/* 销售合同 form-card 标题色条 */
.form-card:not(.purchase-card):not(.terms-card):not(.archive-card):not(.note-card) .card-head {
  color: #0f172a !important;
  border-bottom: 1px solid #bbf7d0 !important;
  padding-bottom: 12px !important;
  margin-bottom: 14px !important;
}
.form-card:not(.purchase-card):not(.terms-card):not(.archive-card):not(.note-card) .card-head::before {
  background: #16a34a !important;
}
.form-card:not(.purchase-card):not(.terms-card):not(.archive-card):not(.note-card) label {
  color: #0f172a !important;
  font-weight: 600 !important;
}

/* terms-card(条款 + 开票资料 双栏)— 浅橙黄,标识"合同填写区" */
.form-card.terms-card,
.terms-card {
  background: linear-gradient(180deg, #fffbeb 0%, #ffffff 60%) !important;
  border: 2px solid #fde68a !important;
  border-left: 4px solid #f59e0b !important;
  box-shadow: 0 2px 8px rgba(245, 158, 11, 0.08) !important;
}
.terms-card .card-head { border-bottom: 1px solid #fde68a !important; }
.terms-card .card-head::before { background: #f59e0b !important; }

/* 归档卡 archive-card — 浅蓝身份 */
.form-card.archive-card,
.archive-card {
  background: linear-gradient(180deg, #eff6ff 0%, #ffffff 60%) !important;
  border: 2px solid #bfdbfe !important;
  border-left: 4px solid #3b82f6 !important;
  box-shadow: 0 2px 8px rgba(59, 130, 246, 0.08) !important;
}
.archive-card .card-head { border-bottom: 1px solid #bfdbfe !important; }
.archive-card .card-head::before { background: #3b82f6 !important; }

/* 备注卡 note-card — 浅紫 */
.form-card.note-card,
.note-card {
  background: linear-gradient(180deg, #f5f3ff 0%, #ffffff 60%) !important;
  border: 2px solid #ddd6fe !important;
  border-left: 4px solid #8b5cf6 !important;
  box-shadow: 0 2px 8px rgba(139, 92, 246, 0.08) !important;
}
.note-card .card-head { border-bottom: 1px solid #ddd6fe !important; }
.note-card .card-head::before { background: #8b5cf6 !important; }

/* ─── 归档 4 个 dropzone:各自身份色填充 ─── */
.dz-grid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 12px !important;
}
@media (max-width: 900px) {
  .dz-grid { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 540px) {
  .dz-grid { grid-template-columns: 1fr !important; }
}

.dropzone {
  position: relative;
  border: 2px dashed !important;
  border-radius: 10px !important;
  padding: 18px 16px !important;
  text-align: center !important;
  cursor: pointer;
  transition: all .2s ease;
  min-height: 110px;
}
.dz-title {
  font-size: 15px !important;
  font-weight: 700 !important;
  margin-bottom: 4px;
}
.dz-hint {
  font-size: 12px !important;
  font-weight: 500;
  opacity: 0.8;
}

/* 1) 签约合同 — 蓝 */
.dz-grid .dropzone:nth-child(1) {
  background: linear-gradient(135deg, #dbeafe, #eff6ff) !important;
  border-color: #60a5fa !important;
}
.dz-grid .dropzone:nth-child(1) .dz-title { color: #1e3a8a !important; }
.dz-grid .dropzone:nth-child(1) .dz-hint  { color: #1e40af !important; }
.dz-grid .dropzone:nth-child(1):hover {
  background: linear-gradient(135deg, #bfdbfe, #dbeafe) !important;
  border-color: #2563eb !important;
  border-style: solid !important;
  box-shadow: 0 4px 12px rgba(37, 99, 235, 0.2) !important;
  transform: translateY(-2px);
}

/* 2) 图纸 — 橙 */
.dz-grid .dropzone:nth-child(2) {
  background: linear-gradient(135deg, #ffedd5, #fff7ed) !important;
  border-color: #fb923c !important;
}
.dz-grid .dropzone:nth-child(2) .dz-title { color: #9a3412 !important; }
.dz-grid .dropzone:nth-child(2) .dz-hint  { color: #c2410c !important; }
.dz-grid .dropzone:nth-child(2):hover {
  background: linear-gradient(135deg, #fed7aa, #ffedd5) !important;
  border-color: #ea580c !important;
  border-style: solid !important;
  box-shadow: 0 4px 12px rgba(234, 88, 12, 0.2) !important;
  transform: translateY(-2px);
}

/* 3) 参数表 — 紫 */
.dz-grid .dropzone:nth-child(3) {
  background: linear-gradient(135deg, #ede9fe, #f5f3ff) !important;
  border-color: #a78bfa !important;
}
.dz-grid .dropzone:nth-child(3) .dz-title { color: #5b21b6 !important; }
.dz-grid .dropzone:nth-child(3) .dz-hint  { color: #6d28d9 !important; }
.dz-grid .dropzone:nth-child(3):hover {
  background: linear-gradient(135deg, #ddd6fe, #ede9fe) !important;
  border-color: #7c3aed !important;
  border-style: solid !important;
  box-shadow: 0 4px 12px rgba(124, 58, 237, 0.2) !important;
  transform: translateY(-2px);
}

/* 4) 其他附件 — 绿 */
.dz-grid .dropzone:nth-child(4) {
  background: linear-gradient(135deg, #dcfce7, #f0fdf4) !important;
  border-color: #4ade80 !important;
}
.dz-grid .dropzone:nth-child(4) .dz-title { color: #166534 !important; }
.dz-grid .dropzone:nth-child(4) .dz-hint  { color: #15803d !important; }
.dz-grid .dropzone:nth-child(4):hover {
  background: linear-gradient(135deg, #bbf7d0, #dcfce7) !important;
  border-color: #16a34a !important;
  border-style: solid !important;
  box-shadow: 0 4px 12px rgba(22, 163, 74, 0.2) !important;
  transform: translateY(-2px);
}

/* 已上传文件列表行 — 弱底色不抢戏 */
.dropzone .dz-existing {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid rgba(0,0,0,0.08);
}
.dropzone .dz-existing .row {
  background: rgba(255,255,255,0.6);
  border-radius: 5px;
  padding: 4px 8px;
  margin-bottom: 4px;
}

/* 蓝色采购卡内的 dz-grid:跟随蓝色身份(不分 4 色) */
.purchase-card .dz-grid .dropzone,
.purchase-card .dz-grid .dropzone:nth-child(n) {
  background: rgba(255,255,255,0.95) !important;
  border-color: #60a5fa !important;
}
.purchase-card .dz-grid .dropzone .dz-title { color: #1e3a8a !important; }
.purchase-card .dz-grid .dropzone .dz-hint  { color: #1e40af !important; }
.purchase-card .dz-grid .dropzone:hover {
  background: #ffffff !important;
  border-color: #3b82f6 !important;
  border-style: solid !important;
  box-shadow: 0 4px 12px rgba(96, 165, 250, 0.35) !important;
  transform: translateY(-2px);
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #10 — 表格强化:边框 + 隔行变色 + 列分隔
   ════════════════════════════════════════════════════════════════ */

/* 表格整体外框 + 圆角 */
.card > .table,
.card > table.table {
  border: 1px solid #d6d3cc !important;
  border-radius: 8px;
  overflow: hidden;
}

/* 表头 — 深一档底色 + 下边框加重 + 列分隔 */
.table thead th {
  background: #f5f5f4 !important;
  color: #1c1917 !important;
  font-size: 13px !important;
  font-weight: 700 !important;
  padding: 13px 16px !important;
  border-bottom: 2px solid #d6d3cc !important;
  border-right: 1px solid #e7e5e0 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
}
.table thead th:last-child { border-right: 0 !important; }

/* 隔行变色 — 增强反差 */
.table tbody tr:nth-child(odd) td {
  background: #ffffff !important;
}
.table tbody tr:nth-child(even) td {
  background: #f8f7f3 !important;
}

/* 列分隔细线 */
.table tbody td {
  border-right: 1px solid #f0eee4 !important;
  border-bottom: 1px solid #e7e5e0 !important;
  padding: 13px 16px !important;
  vertical-align: middle;
}
.table tbody td:last-child { border-right: 0 !important; }

/* 行 hover — 浅 indigo,跨越奇偶 */
.table tbody tr:hover td,
.table tbody tr:nth-child(even):hover td,
.table tbody tr:nth-child(odd):hover td {
  background: #eef2ff !important;
}
.table tbody tr:hover td:first-child {
  box-shadow: inset 4px 0 0 0 #4f46e5;
}

/* 交期预警行 — 浅黄底,跨越奇偶 */
.table tbody tr.row-alert td,
.table tbody tr.row-alert:nth-child(odd) td,
.table tbody tr.row-alert:nth-child(even) td {
  background: #fffbeb !important;
}
.table tbody tr.row-alert:hover td {
  background: #fef3c7 !important;
}

/* 多合同分组行 — 浅 indigo 底 + 左侧色条 */
.table tbody tr.bulk-row td,
.table tbody tr.bulk-row:nth-child(odd) td,
.table tbody tr.bulk-row:nth-child(even) td {
  background: #f5f3ff !important;
}
.table tbody tr.bulk-row:hover td {
  background: #ede9fe !important;
}
.table tbody tr.bulk-row td:first-child {
  border-left: 4px solid #7c3aed !important;
  padding-left: 12px !important;
}

/* 分组头大行 — 浅 indigo 底 + 上下加粗分隔 */
tr.bulk-group-header td,
.table tbody tr.bulk-group-header td {
  background: linear-gradient(90deg, #eef2ff, #ffffff) !important;
  border-top: 2px solid #4f46e5 !important;
  border-bottom: 2px solid #c7d2fe !important;
  padding: 12px 16px !important;
  color: #1e3a8a !important;
}

/* "未建" / 状态等 badge 视觉加强 */
.table tbody td .badge {
  font-size: 12.5px !important;
  font-weight: 600 !important;
  padding: 4px 11px !important;
}

/* 首列(合同号)加粗 + 微大 */
.table tbody td:first-child {
  font-weight: 600;
  font-size: 14px !important;
  color: #0f172a !important;
}

/* 数字列(销售金额)右对齐 + 等宽 */
.table tbody td.num,
.table thead th.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-weight: 600;
}

/* 末列操作按钮列居中 */
.table tbody td.nowrap,
.table tbody td:last-child {
  text-align: center;
}

/* 签约日列 — 黑色不再发灰 */
.table tbody td:nth-last-child(2) {
  color: #1c1917 !important;
  font-size: 13.5px !important;
}

/* 「全部」「销项已开/进项未到」等 chip filter 的 active 当前状态 加 ring */
.chip.active {
  ring: 2px solid #4f46e5;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #11 — 销售合同列表 分组头紧凑 + 统一浅蓝
   ════════════════════════════════════════════════════════════════ */

/* 分组头(赫兹2023 / 11111111 / 10000 等)— 统一浅蓝 + 紧凑 */
.table tbody tr.bulk-group-head td,
tr.bulk-group-head td,
tr.bulk-group-head td[style] {
  background: linear-gradient(90deg, #dbeafe, #eff6ff) !important;
  border-top: 1px solid #93c5fd !important;
  border-bottom: 1px solid #93c5fd !important;
  border-left: 3px solid #2563eb !important;
  padding: 6px 14px !important;
  font-size: 13px !important;
  line-height: 1.4 !important;
  color: #1e3a8a !important;
}

/* 分组头里所有内联色彩 — 统一深蓝 */
tr.bulk-group-head td a,
tr.bulk-group-head td a[style],
tr.bulk-group-head td span,
tr.bulk-group-head td span[style],
tr.bulk-group-head td strong {
  color: #1e3a8a !important;
}
/* 分摊总额(原本红强调)保留警示橙 */
tr.bulk-group-head td span:last-child,
tr.bulk-group-head td span:last-child strong {
  color: #b45309 !important;
}

/* 缩小图标 emoji 字号 */
tr.bulk-group-head td > span:first-child {
  font-size: 13px !important;
}

/* 链接 (合同号) — 蓝色加粗,无下划线 */
tr.bulk-group-head td a {
  color: #1d4ed8 !important;
  font-weight: 700 !important;
  text-decoration: none !important;
}
tr.bulk-group-head td a:hover {
  text-decoration: underline !important;
  color: #1e3a8a !important;
}

/* 分组下属行(.bulk-row)— 同步浅蓝色调,跟分组头呼应 */
.table tbody tr.bulk-row td,
.table tbody tr.bulk-row:nth-child(odd) td,
.table tbody tr.bulk-row:nth-child(even) td {
  background: #f0f7ff !important;
}
.table tbody tr.bulk-row:hover td {
  background: #dbeafe !important;
}
.table tbody tr.bulk-row td:first-child,
.table tbody tr.bulk-row td:first-child[style] {
  border-left: 3px solid #2563eb !important;
  padding-left: 13px !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #12 — 销售/Bulk 详情页 各 tab 内容卡 跟随 tab 配色
   ════════════════════════════════════════════════════════════════ */

/* 完结清单 — 蓝 */
.card[data-tab="completion"] {
  background: linear-gradient(180deg, #eff6ff 0%, #f8fbff 100%) !important;
  border: 2px solid #bfdbfe !important;
  border-left: 5px solid #3b82f6 !important;
  box-shadow: 0 2px 10px rgba(59, 130, 246, 0.1) !important;
}
.card[data-tab="completion"] h2 { color: #1e3a8a !important; }
.card[data-tab="completion"] .muted { color: #1e40af !important; }

/* 合同详情 — 青 */
.card[data-tab="details"] {
  background: linear-gradient(180deg, #ecfeff 0%, #f8feff 100%) !important;
  border: 2px solid #a5f3fc !important;
  border-left: 5px solid #0891b2 !important;
  box-shadow: 0 2px 10px rgba(8, 145, 178, 0.1) !important;
}
.card[data-tab="details"] h2 { color: #155e75 !important; }

/* 采购合同 — 橙(列表区,不影响 .purchase-card 蓝卡) */
.card[data-tab="purchases"]:not(.purchase-card) {
  background: linear-gradient(180deg, #fff7ed 0%, #fffdf8 100%) !important;
  border: 2px solid #fed7aa !important;
  border-left: 5px solid #ea580c !important;
  box-shadow: 0 2px 10px rgba(234, 88, 12, 0.1) !important;
}
.card[data-tab="purchases"]:not(.purchase-card) h2 { color: #9a3412 !important; }

/* 发票与物流 — 紫 */
.card[data-tab="invoices"] {
  background: linear-gradient(180deg, #f5f3ff 0%, #fbfaff 100%) !important;
  border: 2px solid #ddd6fe !important;
  border-left: 5px solid #7c3aed !important;
  box-shadow: 0 2px 10px rgba(124, 58, 237, 0.1) !important;
}
.card[data-tab="invoices"] h2 { color: #5b21b6 !important; }

/* 文件档案 — 绿 */
.card[data-tab="archive"] {
  background: linear-gradient(180deg, #f0fdf4 0%, #f9fef9 100%) !important;
  border: 2px solid #bbf7d0 !important;
  border-left: 5px solid #16a34a !important;
  box-shadow: 0 2px 10px rgba(22, 163, 74, 0.1) !important;
}
.card[data-tab="archive"] h2 { color: #166534 !important; }

/* Bulk 详情 3 tab */
.card[data-bulk-tab="payments"] {
  background: linear-gradient(180deg, #ecfeff 0%, #f8feff 100%) !important;
  border: 2px solid #a5f3fc !important;
  border-left: 5px solid #0891b2 !important;
}
.card[data-bulk-tab="allocations"] {
  background: linear-gradient(180deg, #fff7ed 0%, #fffdf8 100%) !important;
  border: 2px solid #fed7aa !important;
  border-left: 5px solid #ea580c !important;
}
.card[data-bulk-tab="archive"] {
  background: linear-gradient(180deg, #f0fdf4 0%, #f9fef9 100%) !important;
  border: 2px solid #bbf7d0 !important;
  border-left: 5px solid #16a34a !important;
}

/* cl-item(完结清单单条)— 半透明白底,在蓝色父卡上"浮起来" */
.card[data-tab="completion"] .cl-item {
  background: rgba(255, 255, 255, 0.85) !important;
  border: 1px solid #bfdbfe !important;
  border-radius: 10px !important;
  padding: 14px 18px !important;
  margin-bottom: 10px !important;
  transition: all .15s ease;
}
.card[data-tab="completion"] .cl-item:hover {
  background: #ffffff !important;
  border-color: #60a5fa !important;
  box-shadow: 0 2px 8px rgba(59, 130, 246, 0.15);
}
.card[data-tab="completion"] .cl-item.done {
  background: rgba(220, 252, 231, 0.65) !important;
  border-color: #86efac !important;
}
.card[data-tab="completion"] .cl-item .cl-icon {
  font-size: 18px !important;
  font-weight: 700;
  color: #2563eb !important;
  margin-right: 6px;
}
.card[data-tab="completion"] .cl-item.done .cl-icon {
  color: #16a34a !important;
}
.card[data-tab="completion"] .cl-item strong {
  font-size: 14.5px !important;
  color: #0f172a !important;
}
.card[data-tab="completion"] .cl-item .muted {
  color: #475569 !important;
  font-size: 13px !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #13 — 蓝卡内 item-row 总价 / 归档卡 / 备注卡 字色修复
   ════════════════════════════════════════════════════════════════ */

/* 1) 采购卡内 .item-row(白底嵌入条)所有文字回黑 */
.purchase-card .item-row,
.purchase-card .item-row * {
  color: #0f172a !important;
}
.purchase-card .item-row .col-sub,
.purchase-card .item-row .col-sub .sub,
.purchase-card .item-row .col-sub span {
  color: #0f172a !important;
  font-weight: 600 !important;
  font-size: 15px !important;
}
.purchase-card .item-row .col-no {
  color: #475569 !important;
}
.purchase-card .item-row .remove-item,
.purchase-card .item-row .btn.danger {
  color: #dc2626 !important;
  background: #ffffff !important;
  border: 1px solid #fecaca !important;
}
.purchase-card .item-row .remove-item:hover,
.purchase-card .item-row .btn.danger:hover {
  background: #dc2626 !important;
  color: #ffffff !important;
}

/* 2) .amount-check 销售/已建/本次加入后 提示 */
.purchase-card .amount-check {
  color: #f1f5f9 !important;
}
.purchase-card .amount-check strong#projected-total {
  background: #fef3c7 !important;
  color: #b45309 !important;
  padding: 2px 8px !important;
  border-radius: 4px !important;
}
.purchase-card .amount-check.danger #projected-total {
  background: #fee2e2 !important;
  color: #b91c1c !important;
}

/* 3) 归档卡 .purchase-card.archive-card — 标题/标签回深色 */
.purchase-card.archive-card,
.purchase-card.archive-card * {
  color: #0f172a !important;
}
.purchase-card.archive-card .card-head {
  color: #0f172a !important;
  font-size: 15px !important;
  font-weight: 700 !important;
}
.purchase-card.archive-card .card-head .sub {
  color: #57534e !important;
  font-weight: 400 !important;
}
.purchase-card.archive-card .card-head::before {
  background: #3b82f6 !important;
}
.purchase-card.archive-card .dz-existing a {
  color: #1e40af !important;
}
.purchase-card.archive-card .dz-existing .muted {
  color: #78716c !important;
}

/* 4) 备注卡 .purchase-card.note-card */
.purchase-card.note-card,
.purchase-card.note-card * {
  color: #0f172a !important;
}
.purchase-card.note-card .card-head {
  color: #0f172a !important;
  font-size: 15px !important;
  font-weight: 700 !important;
}
.purchase-card.note-card .card-head::before {
  background: #8b5cf6 !important;
}
.purchase-card.note-card textarea,
.purchase-card.note-card input {
  background: #ffffff !important;
  color: #0f172a !important;
  border: 1px solid #c4b5fd !important;
}
.purchase-card.note-card textarea:focus,
.purchase-card.note-card input:focus {
  border-color: #7c3aed !important;
  box-shadow: 0 0 0 3px rgba(124, 58, 237, 0.18) !important;
}

/* 5) terms-card(背靠背供应商开票资料)同款修复 */
.purchase-card.terms-card,
.purchase-card.terms-card * {
  color: #0f172a !important;
}
.purchase-card.terms-card .card-head {
  color: #0f172a !important;
  font-size: 15px !important;
  font-weight: 700 !important;
}
.purchase-card.terms-card .card-head .sub {
  color: #57534e !important;
  font-weight: 400 !important;
}
.purchase-card.terms-card .card-head::before {
  background: #f59e0b !important;
}
.purchase-card.terms-card textarea,
.purchase-card.terms-card input,
.purchase-card.terms-card select {
  background: #ffffff !important;
  color: #0f172a !important;
  border: 1px solid #fde68a !important;
}
.purchase-card.terms-card textarea:focus,
.purchase-card.terms-card input:focus,
.purchase-card.terms-card select:focus {
  border-color: #f59e0b !important;
  box-shadow: 0 0 0 3px rgba(245, 158, 11, 0.18) !important;
}
.purchase-card.terms-card label {
  color: #0f172a !important;
  font-weight: 600 !important;
}
.purchase-card.terms-card .btn:not(.danger):not(.gray) {
  background: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  color: #ffffff !important;
  border: 0 !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #14 — 开票申请单按钮 红色实色
   ════════════════════════════════════════════════════════════════ */

.btn.invoice-app-btn {
  background: linear-gradient(135deg, #ef4444, #dc2626) !important;
  color: #ffffff !important;
  border: 2px solid #dc2626 !important;
  border-radius: 10px !important;
  padding: 10px 20px !important;
  font-weight: 700 !important;
  font-size: 14px !important;
  white-space: nowrap !important;
  box-shadow: 0 3px 10px rgba(239, 68, 68, 0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transition: all .15s ease !important;
}
.btn.invoice-app-btn:hover {
  background: linear-gradient(135deg, #dc2626, #b91c1c) !important;
  border-color: #b91c1c !important;
  box-shadow: 0 5px 14px rgba(220, 38, 38, 0.45), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-2px) !important;
  text-decoration: none !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix — 蓝色采购卡内 供应商付款里程碑(白底 ms-grid)文字修复
   根因:.purchase-card * { color:#fff !important } 把白底区文字也染白
   ════════════════════════════════════════════════════════════════ */
.purchase-card .ms-grid,
.purchase-card .ms-grid * {
  color: #0f172a !important;
}
/* 次级文字(百分比/日期标签)中灰 */
.purchase-card .ms-grid .muted,
.purchase-card .ms-grid .ms-pct {
  color: #64748b !important;
}
/* 实色按钮(保存/标记已付/⚡100%)白字 */
.purchase-card .ms-grid button {
  color: #fff !important;
}
/* 白底撤销按钮 → 绿字 */
.purchase-card .ms-grid button[style*="background:#fff"],
.purchase-card .ms-grid button[style*="background: #fff"] {
  color: #065f46 !important;
}
/* 已收/已付绿勾、未付状态点 — 还原 inline 配色意图 */
.purchase-card .ms-grid span[style*="color:#10b981"] { color: #10b981 !important; }
.purchase-card .ms-grid span[style*="color:#f59e0b"] { color: #f59e0b !important; }
.purchase-card .ms-grid span[style*="color:#0891b2"] { color: #0891b2 !important; }
/* 已付绿盒里的日期标签 */
.purchase-card .ms-grid div[style*="color:#047857"] { color: #047857 !important; }
.purchase-card .ms-grid div[style*="color:#065f46"] { color: #065f46 !important; }


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #15 — 工作台「进入处理 →」按钮 白字
   v4 全站链接 indigo 规则误伤了 .go-btn,显示成红底紫字几乎看不见
   ════════════════════════════════════════════════════════════════ */

.dashboard-v2 .dv-warning .go-btn,
.dashboard-v2 .go-btn,
a.go-btn {
  color: #ffffff !important;
  font-weight: 700 !important;
  font-size: 13.5px !important;
  padding: 8px 16px !important;
  border-radius: 8px !important;
  text-decoration: none !important;
  display: inline-flex !important;
  align-items: center !important;
  white-space: nowrap !important;
  box-shadow: 0 2px 6px rgba(0,0,0,0.18), inset 0 1px 0 rgba(255,255,255,0.18) !important;
  transition: all .15s ease !important;
}

/* 3 个状态各自渐变 */
.dashboard-v2 .dv-warning.overdue .go-btn,
.dashboard-v2 .dv-warning.overdue a.go-btn {
  background: linear-gradient(135deg, #ef4444, #dc2626) !important;
  border: 1px solid #b91c1c !important;
  color: #ffffff !important;
}
.dashboard-v2 .dv-warning.overdue .go-btn:hover {
  background: linear-gradient(135deg, #dc2626, #b91c1c) !important;
  color: #ffffff !important;
  transform: translateY(-1px);
  box-shadow: 0 4px 10px rgba(220, 38, 38, 0.4) !important;
}

.dashboard-v2 .dv-warning.warn .go-btn,
.dashboard-v2 .dv-warning.warn a.go-btn {
  background: linear-gradient(135deg, #f59e0b, #d97706) !important;
  border: 1px solid #b45309 !important;
  color: #ffffff !important;
}
.dashboard-v2 .dv-warning.warn .go-btn:hover {
  background: linear-gradient(135deg, #d97706, #b45309) !important;
  color: #ffffff !important;
  transform: translateY(-1px);
  box-shadow: 0 4px 10px rgba(217, 119, 6, 0.4) !important;
}

.dashboard-v2 .dv-warning:not(.overdue):not(.warn) .go-btn {
  background: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  border: 1px solid #4338ca !important;
  color: #ffffff !important;
}
.dashboard-v2 .dv-warning:not(.overdue):not(.warn) .go-btn:hover {
  background: linear-gradient(135deg, #4f46e5, #4338ca) !important;
  color: #ffffff !important;
  transform: translateY(-1px);
}

/* customer 类型 go-btn */
.dashboard-v2 .dv-warning.type-customer .go-btn {
  color: #ffffff !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #16 — Navbar 菜单字纯黑(不要灰黑)
   ════════════════════════════════════════════════════════════════ */

.navbar a,
.navbar a.nav-tier-core,
.navbar a.nav-tier-aux {
  color: #000000 !important;
  font-weight: 600 !important;
}
.navbar a:hover,
.navbar a.nav-tier-core:hover,
.navbar a.nav-tier-aux:hover {
  color: #000000 !important;
  background: #f5f5f4 !important;
}
.navbar a.active,
.navbar a.nav-tier-core.active,
.navbar a.nav-tier-aux.active {
  color: #000000 !important;
  background: #eef2ff !important;
  border-bottom-color: #4f46e5 !important;
}
.navbar .brand {
  color: #000000 !important;
  font-weight: 800 !important;
}

/* 帮助 ❓ 黑字 */
.navbar a.nav-help {
  color: #000000 !important;
}
.navbar a.nav-help:hover {
  color: #000000 !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #17 — 内容区宽度调整
   ════════════════════════════════════════════════════════════════ */

.container,
body .container {
  max-width: 1560px !important;
  margin: 22px auto !important;
  padding: 0 28px !important;
}

@media (min-width: 1920px) {
  .container,
  body .container {
    max-width: 1700px !important;
  }
}

@media (min-width: 2200px) {
  .container,
  body .container {
    max-width: 1820px !important;
  }
}

/* navbar 仍然横通(全宽),只有内容居中 */
.navbar {
  padding: 10px 28px !important;
}


/* ════════════════════════════════════════════════════════════════
   v4 hotfix #18 — 工作台 舒适/紧凑 切换 + 新建销售合同按钮 白字
   ════════════════════════════════════════════════════════════════ */

/* 舒适 / 紧凑 切换 */
.dv-density {
  display: inline-flex;
  background: #ffffff;
  border: 1px solid #d6d3cc;
  border-radius: 8px;
  padding: 3px;
  gap: 2px;
}
.dv-density button {
  background: transparent !important;
  color: #1c1917 !important;
  border: 0 !important;
  padding: 6px 14px !important;
  border-radius: 6px !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  cursor: pointer !important;
  transition: all .15s ease;
}
.dv-density button:hover {
  background: #f5f5f4 !important;
  color: #1c1917 !important;
}
.dv-density button.active {
  background: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  color: #ffffff !important;
  box-shadow: 0 2px 6px rgba(79, 70, 229, 0.3), inset 0 1px 0 rgba(255,255,255,0.2) !important;
}

/* 表单内裸 select 兜底:.form-row 里没拿到 form-select class 的下拉也撑满 */
.form-row > select,
.form-row select:not(.date-selects select):not(.cl-date select) {
  width: 100% !important;
  padding: 9px 12px !important;
  border: 1px solid #d6cfb8 !important;
  border-radius: 7px !important;
  background: #ffffff !important;
  font-size: 14px !important;
  color: #0f172a !important;
}
.form-row > select:focus {
  border-color: #4f46e5 !important;
  outline: none !important;
  box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.12) !important;
}

/* + 新建销售合同 dv-btn.primary */
.dv-btn.primary,
a.dv-btn.primary {
  background: linear-gradient(135deg, #6366f1, #4f46e5) !important;
  color: #ffffff !important;
  border: 0 !important;
  border-radius: 8px !important;
  padding: 9px 18px !important;
  font-weight: 700 !important;
  font-size: 14px !important;
  text-decoration: none !important;
  box-shadow: 0 3px 10px rgba(79, 70, 229, 0.35), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transition: all .15s ease;
}
.dv-btn.primary:hover,
a.dv-btn.primary:hover {
  background: linear-gradient(135deg, #4f46e5, #4338ca) !important;
  color: #ffffff !important;
  box-shadow: 0 4px 14px rgba(79, 70, 229, 0.45), inset 0 1px 0 rgba(255,255,255,0.2) !important;
  transform: translateY(-1px);
  text-decoration: none !important;
}

















