/**
 * 工作台通用组件：骨架屏 / 空状态 / 错误 / 加载
 */
.wb-skeleton-wrap {
  padding: var(--wb-space-lg, 24px);
}
.wb-skeleton-line,
.loading-skeleton .skeleton-line {
  height: 14px;
  border-radius: 6px;
  background: linear-gradient(90deg, #eef2ef 25%, #e2e8e4 50%, #eef2ef 75%);
  background-size: 200% 100%;
  animation: wb-shimmer 1.2s ease-in-out infinite;
}
.wb-skeleton-block,
.loading-skeleton .skeleton-block {
  background: linear-gradient(90deg, #eef2ef 25%, #e2e8e4 50%, #eef2ef 75%);
  background-size: 200% 100%;
  animation: wb-shimmer 1.2s ease-in-out infinite;
}
@keyframes wb-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

.wb-tab-loading {
  padding: 28px;
  text-align: center;
  line-height: 1.6;
}
.wb-tab-loading .spinner {
  margin: 0 auto 12px;
}

.empty-state {
  text-align: center;
  padding: 40px 24px;
  color: var(--wb-text-secondary, #5a6b62);
}
.empty-state-icon {
  font-size: 40px;
  margin-bottom: 12px;
  opacity: 0.85;
}
.empty-state-title {
  font-size: var(--wb-font-lg, 18px);
  font-weight: 700;
  color: var(--wb-text, #1a2e22);
  margin-bottom: 8px;
}
.empty-state-desc {
  font-size: var(--wb-font-sm, 13px);
  line-height: 1.6;
  max-width: 360px;
  margin: 0 auto;
}

.wb-error-panel {
  padding: 20px;
  line-height: 1.7;
  border-left: 4px solid var(--wb-danger, #c0392b);
}
.wb-error-panel b {
  display: block;
  margin-bottom: 8px;
  color: var(--wb-text, #1a2e22);
}

/* 触控目标最小尺寸 */
@media (max-width: 640px) {
  .btn,
  .hdr-btn,
  .tab,
  .wb-bottom-nav button {
    min-height: var(--wb-touch-min, 44px);
  }
  .wh-summary-table-wrap,
  .wh-inv-stock-table {
    display: none !important;
  }
  .wh-inv-mobile-cards {
    display: flex !important;
    flex-direction: column;
    gap: 10px;
  }
}
@media (min-width: 641px) {
  .wh-inv-mobile-cards {
    display: none !important;
  }
}

.wb-biz-repair-summary {
  padding: 12px;
  border-radius: var(--wb-radius-md, 12px);
  font-size: 12px;
  line-height: 1.65;
}
.wb-biz-repair-warn {
  background: #fff8e1;
  border-left: 4px solid #e65100;
}
.wb-biz-repair-ok {
  background: #eef8f1;
  border-left: 4px solid var(--wb-green-mid, #2d7a4e);
}
.wb-biz-repair-kpis {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}
@media (max-width: 640px) {
  .wb-biz-repair-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
.wb-biz-repair-kpis b {
  display: block;
  font-size: 18px;
  color: var(--wb-text, #1a2e22);
}
.wb-biz-repair-kpis span {
  color: var(--wb-muted, #6b7c72);
  font-size: 11px;
}

/* 销售 / 合作社 / 应收表格 → 手机卡片（依赖 td data-label） */
@media (max-width: 640px) {
  .wb-recv-table-wrap table thead,
  .wb-coop-biz-table-wrap table thead,
  .wb-sales-table-wrap table thead,
  .customer-table-wrap .tbl-customer-list thead {
    display: none;
  }
  .wb-recv-table-wrap table,
  .wb-coop-biz-table-wrap table,
  .wb-sales-table-wrap table,
  .customer-table-wrap .tbl-customer-list {
    min-width: 0 !important;
    width: 100%;
  }
  .wb-recv-table-wrap table tbody tr,
  .wb-coop-biz-table-wrap table tbody tr,
  .wb-sales-table-wrap table tbody tr,
  .customer-table-wrap .tbl-customer-list tbody tr.customer-data-row {
    display: block;
    margin-bottom: 10px;
    padding: 12px;
    border-radius: var(--wb-radius-md, 12px);
    background: var(--wb-surface, #fff);
    border: 1px solid var(--wb-border, #e4ebe6);
    box-shadow: var(--wb-shadow-sm, 0 1px 4px rgba(0, 0, 0, 0.04));
  }
  .wb-recv-table-wrap table tbody td,
  .wb-coop-biz-table-wrap table tbody td,
  .wb-sales-table-wrap table tbody td,
  .customer-table-wrap .tbl-customer-list tbody td {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 10px;
    padding: 5px 0;
    border: none;
    font-size: 13px;
    text-align: right;
  }
  .wb-recv-table-wrap table tbody td::before,
  .wb-coop-biz-table-wrap table tbody td::before,
  .wb-sales-table-wrap table tbody td::before,
  .customer-table-wrap .tbl-customer-list tbody td[data-label]:not([data-label=''])::before {
    content: attr(data-label);
    font-weight: 600;
    color: var(--wb-muted, #6b7c72);
    text-align: left;
    flex-shrink: 0;
    max-width: 46%;
  }
  .wb-recv-table-wrap table tbody td[data-label='操作'],
  .wb-coop-biz-table-wrap table tbody td[data-label='操作'],
  .wb-sales-table-wrap table tbody td[data-label='操作'],
  .customer-table-wrap .tbl-customer-list tbody td[data-label='操作'] {
    flex-direction: column;
    align-items: stretch;
    padding-top: 8px;
    border-top: 1px dashed var(--wb-border, #e4ebe6);
    margin-top: 4px;
  }
  .customer-table-wrap .tbl-customer-list tbody td[data-label=''] {
    display: none;
  }
  .customer-row-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    justify-content: flex-end;
  }
  .wb-sales-row-ops {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    justify-content: flex-end;
  }
}

/* 首页 / 看板 — 设计令牌工具类 */
.wb-card-accent-gold {
  margin-bottom: 14px;
  border-left: 4px solid var(--wb-gold);
}
.wb-card-accent-success {
  margin-top: 14px;
  border-left: 4px solid var(--wb-green-mid);
}
.wb-card-accent-danger {
  margin-top: 14px;
  border-left: 4px solid var(--wb-danger);
}
.wb-card-accent-warn {
  margin-top: 14px;
  border-left: 4px solid var(--wb-warning);
}
.wb-alert-hint {
  font-size: var(--wb-font-xs, 11px);
  color: var(--wb-muted, #888);
  margin-top: 6px;
}
.wb-meta-sm {
  font-size: var(--wb-font-sm, 12px);
  color: var(--wb-text-secondary, #888);
}
.wb-home-ph-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--wb-space-sm, 8px);
  margin-bottom: 12px;
}
.wb-home-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wb-space-sm, 8px);
  align-items: center;
}
.wb-health-actions {
  display: flex;
  gap: var(--wb-space-sm, 8px);
  flex-wrap: wrap;
  justify-content: flex-end;
}
.wb-dash-today-section {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--wb-border, #eee);
}
.wb-dash-today-list {
  padding-left: 18px;
  margin: 10px 0 0;
}
.wb-tag-remind { color: var(--wb-gold); }
.wb-tag-task { color: #6a1b9a; }
.wb-link-inline { color: var(--green, var(--wb-green-mid)); }
.wb-stat-num-blue { color: #1976d2; }
.wb-stat-num-purple { color: #6a1b9a; }
.wb-stat-num-gold { color: var(--wb-gold); }
.wb-stat-num-green { color: var(--wb-green-mid); }
.wb-stat-sub-hint {
  font-size: var(--wb-font-xs, 11px);
  color: var(--wb-muted, #888);
  margin-top: 4px;
}
.wb-health-empty-mt { margin-top: 8px; }
.wb-health-grid-mt { margin-top: 10px; }
.wb-badge-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 10px;
}
.wb-recent-title { color: #294332; }
.wb-coop-toolbar {
  margin-bottom: 10px;
  display: flex;
  flex-wrap: wrap;
  gap: var(--wb-space-sm, 8px);
}

/* 销售 / 应收 — 设计令牌工具类 */
.wb-stat-tone-green { color: var(--wb-green-mid); }
.wb-stat-tone-success { color: #27ae60; }
.wb-stat-tone-warn { color: #e67e22; }
.wb-stat-tone-blue { color: #2980b9; }
.wb-stat-tone-danger { color: var(--wb-danger); }
.wb-stat-tone-default { color: #333; }
.wb-stat-tone-muted { color: #888; }
.wb-stat-tone-deep { color: #1a5c38; }

.wb-text-success { color: #27ae60; }
.wb-text-warn { color: #e67e22; }
.wb-text-danger { color: var(--wb-danger); }
.wb-text-danger-bold { color: var(--wb-danger); font-weight: 600; }
.wb-text-success-bold { color: #27ae60; font-weight: 600; }
.wb-text-warn-bold { color: #e67e22; font-weight: 700; }

.wb-muted-xs { font-size: var(--wb-font-xs, 11px); }
.wb-muted-xxs { font-size: 10px; margin-top: 2px; }
.wb-note-sm { font-size: var(--wb-font-xs, 12px); line-height: 1.65; margin: 0 0 12px; }
.wb-note-sm-tight { font-size: var(--wb-font-xs, 12px); margin: 0 0 10px; }
.wb-note-sm-block { font-size: var(--wb-font-xs, 12px); display: block; margin-top: 8px; }

.wb-pad-12 { padding: 12px; }
.wb-pad-inline-12 { padding: 0 12px; }
.wb-pad-inline-12-b { padding: 0 12px 12px; }
.wb-min-h200 { min-height: 200px; }
.wb-min-h120 { min-height: 120px; }
.wb-hidden { display: none; }
.wb-nowrap { white-space: nowrap; }

.wb-banner-warn {
  border-left: 4px solid #e67e22;
  margin-bottom: 12px;
  padding: 12px 14px;
  background: #fffbf5;
}
.wb-banner-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  justify-content: space-between;
}
.wb-banner-text {
  margin: 0;
  font-size: var(--wb-font-sm, 13px);
  line-height: 1.65;
  color: #5d4037;
}

.wb-shell-card {
  border-left: 4px solid var(--wb-green-mid);
  margin-bottom: 14px;
  padding: 12px 14px 16px;
}
.wb-filter-bar-wrap {
  flex-wrap: wrap;
  gap: var(--wb-space-sm, 8px);
  margin-bottom: 12px;
}
.wb-recv-cards-grid {
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  margin-bottom: 16px;
}
.wb-recv-cards-grid-sm {
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  margin-bottom: 12px;
}
.wb-chart-h220 { height: 220px; }
.wb-chart-h240 { height: 240px; }
.wb-chart-h260 { height: 260px; margin-bottom: 12px; }
.wb-chart-grid-mb { margin-bottom: 12px; }

.wb-card-section { padding: 12px; }
.wb-card-section-mt { padding: 12px; margin-top: 14px; }
.wb-card-section-mb { padding: 12px; margin-bottom: 12px; }
.wb-card-flat-legacy {
  margin: 0 12px 12px;
  border: none;
  box-shadow: none;
  padding: 0;
}
.wb-legacy-shell {
  border-left: 4px solid var(--wb-gold);
  margin-top: 4px;
}
.wb-legacy-title { font-size: 16px; }
.wb-scope-badge {
  font-size: var(--wb-font-xs, 11px);
  background: var(--wb-green-soft);
  color: var(--wb-green-mid);
  padding: 2px 10px;
  border-radius: 999px;
  font-weight: 600;
}
.wb-legacy-desc {
  font-size: var(--wb-font-xs, 12px);
  line-height: 1.6;
  margin: 0 0 10px;
  padding: 0 12px;
}
.wb-export-actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--wb-space-sm, 8px);
}
.wb-error-msg { color: var(--wb-danger); padding: 12px; }
.wb-alloc-preview { font-size: var(--wb-font-xs, 12px); margin-top: 8px; }
.wb-tbl-compact { font-size: var(--wb-font-xs, 11px); margin-top: 6px; }

.wb-card-accent-blue {
  padding: 12px;
  border-left: 3px solid #2980b9;
}
.wb-card-accent-green-sm {
  padding: 12px;
  border-left: 3px solid var(--wb-green-mid);
}
.wb-gold-accent-card {
  border-left: 4px solid var(--wb-gold);
  margin: 0 0 12px;
  padding: 12px;
}
.wb-ph-compact { padding: 0; margin-bottom: 8px; }
.wb-title-md { font-size: 15px; }
.wb-subtabs-mb { margin-bottom: 12px; }
.wb-hub-mt { margin-top: 12px; }
.wb-chain-body { font-size: var(--wb-font-sm, 13px); min-height: 48px; }
.wb-drawer-scroll {
  padding: 8px 12px;
  max-height: 60vh;
  overflow: auto;
}
.wb-input-amt-narrow { width: 90px; padding: 4px; }
.wb-list-bullet {
  font-size: var(--wb-font-xs, 12px);
  line-height: 1.8;
  margin: 0 0 14px;
  padding-left: 20px;
  color: #444;
}
.wb-empty-vpad { padding: 8px 0; }
.wb-success-note { padding: 12px; color: #27ae60; }
.wb-fr-mt { margin-top: 12px; }
.wb-tab-row { margin-bottom: 10px; display: flex; flex-wrap: wrap; gap: 6px; }

.wbsr-tabs,
.wb-recv-v2-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
}
.wbsr-tab,
.wb-recv-v2-tab {
  border: 1px solid #c8e6d0;
  background: #fff;
  color: var(--wb-green-mid);
  border-radius: 20px;
  padding: 6px 14px;
  font-size: var(--wb-font-xs, 12px);
  cursor: pointer;
  transition: 0.15s;
}
.wbsr-tab-active,
.wb-recv-v2-tab-active {
  background: var(--wb-green-mid);
  color: #fff;
  border-color: var(--wb-green-mid);
  font-weight: 600;
}
.wb-recv-card { min-height: 72px; }
.wb-recv-pay-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.wb-recv-pay-sticky {
  margin-top: 12px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.wb-recv-voucher-input { max-width: 100%; }
.wb-recv-state-flow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px;
  font-size: var(--wb-font-xs, 11px);
}
.wb-recv-state-step {
  padding: 2px 8px;
  border-radius: 12px;
  background: #eef5f0;
  color: #666;
}
.wb-recv-state-step.done {
  background: #d4edda;
  color: #1e6b3a;
  font-weight: 600;
}
.wb-recv-state-step.active {
  background: #fff3cd;
  color: #856404;
  font-weight: 600;
}
.wb-recv-state-arrow { color: #aaa; font-size: 10px; }
.wb-recv-voucher-link { font-size: var(--wb-font-xs, 11px); margin-left: 4px; }

@media (max-width: 768px) {
  .wb-recv-pay-card { padding-bottom: 88px; }
  .wb-recv-pay-grid .fr { flex: 1 1 100%; min-width: 0; }
  .wb-recv-pay-grid .fi,
  .wb-recv-pay-grid select {
    width: 100%;
    min-height: 44px;
    font-size: 16px;
  }
  .wb-recv-pay-sticky {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
    background: #fff;
    border-top: 1px solid #dce8e0;
    box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.08);
    z-index: 120;
    justify-content: stretch;
  }
  .wb-recv-pay-sticky .btn {
    flex: 1;
    min-height: 46px;
    font-size: 15px;
    border-radius: 10px;
  }
  .wbsr-tab,
  .wb-recv-v2-tab {
    padding: 8px 16px;
    min-height: 40px;
  }
}

/* 仓库模块 — 设计令牌工具类 */
.wb-text-right { text-align: right; }
.wb-text-center { text-align: center; }
.wb-wh-hint {
  font-size: var(--wb-font-xs, 12px);
  color: var(--wb-muted, #888);
  margin: 0 0 8px;
}
.wb-wh-hint-lg {
  font-size: var(--wb-font-sm, 13px);
  color: #666;
  line-height: 1.6;
  margin: 0 0 12px;
}
.wb-empty-cell {
  text-align: center;
  color: var(--wb-muted, #888);
}
.wb-sort-th {
  cursor: pointer;
  user-select: none;
}
.wb-th-narrow { width: 42px; }
.wb-th-ops { width: 72px; }
.wb-foot-row {
  background: #f4f8f5;
  font-weight: 700;
}
.wb-text-paid { color: #2e7d32; }
.wb-text-unpaid { color: #c62828; }
.wb-text-unpaid-bold { color: #c62828; font-weight: 700; }
.wb-text-unpaid-semibold { color: #c62828; font-weight: 600; }
.wb-spec-muted {
  color: #888;
  font-size: var(--wb-font-xs, 12px);
}
.wb-cell-meta {
  font-size: var(--wb-font-xs, 12px);
  color: #555;
}
.wb-cell-sub {
  font-size: var(--wb-font-xs, 12px);
  color: #666;
  max-width: 120px;
}
.wb-block-subtitle-mt { margin: 16px 0 8px; }
.wb-title-green { margin: 0; color: var(--green, var(--wb-green-mid)); }
.wb-tr-row {
  margin: 10px 0;
  padding-bottom: 10px;
  border-bottom: 1px solid #eee;
}
.wb-tr-row-mt6 { margin-top: 6px; }
.wb-wh-scroll-mt { margin-top: 10px; }
.wb-wh-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 10px;
  align-items: center;
}
.wb-wh-kind-bar {
  margin: -4px 0 10px;
  padding: 6px 10px;
  background: #f8faf8;
  border-radius: 8px;
  border-left: 3px solid var(--wb-green-mid);
}
.wb-alert-warn-box {
  margin: 0 0 10px;
  padding: 10px 12px;
  background: #fff8e6;
  border: 1px solid #f0d78c;
  border-radius: 8px;
  font-size: var(--wb-font-xs, 12px);
  color: #8d6b00;
}
.wb-alert-info-box {
  margin: 0 0 10px;
  padding: 10px 12px;
  background: #f5f9fc;
  border: 1px solid #d6e4f0;
  border-radius: 8px;
  font-size: var(--wb-font-xs, 12px);
  color: #555;
}
.wb-text-right-bold { text-align: right; font-weight: 700; }
.wb-wh-hint-mb10 {
  font-size: var(--wb-font-xs, 12px);
  color: #666;
  margin: 0 0 10px;
}
.wb-wh-hint-mb12 {
  font-size: var(--wb-font-xs, 12px);
  color: #666;
  margin: 0 0 12px;
}
.wb-muted-xs11 { font-size: 11px; color: #888; }
.wb-muted-foot { margin: 8px 0 0; font-size: var(--wb-font-xs, 12px); }
.wb-meta-line { margin: 4px 0 0; font-size: var(--wb-font-xs, 12px); }
.wb-unpaid-ml { color: #c62828; font-weight: 700; margin-left: 6px; }
.wb-sort-icon-dim { opacity: 0.35; font-size: 10px; }
.wb-sort-icon { font-size: 10px; }
.wb-th-min-260 { min-width: 260px; }
.wb-pad-12-center { padding: 12px; text-align: center; }
.wb-cell-center-xs { text-align: center; font-size: var(--wb-font-xs, 12px); }
.wb-kv-table { width: 100%; border-collapse: collapse; }
.wb-kv-th {
  text-align: left;
  padding: 6px 10px 6px 0;
  color: #666;
  font-weight: 600;
  white-space: nowrap;
  vertical-align: top;
}
.wb-kv-td { padding: 6px 0; font-size: 13px; word-break: break-word; }
.wb-meta-mt8 { margin-top: 8px; }
.wb-kind-stat { font-size: 11px; margin-right: 10px; }
.wb-kind-stat-ml { font-size: 11px; margin-left: auto; }
.wb-txn-filters-mb { margin-bottom: 10px; }
.wb-filter-end { align-self: flex-end; }
.wb-expiry-expired { color: #c62828; }
.wb-expiry-near { color: #e65100; }
.wb-expiry-ok { color: #2e7d32; }
.wb-expiry-ok-dark { color: #1a4d2e; }
.wb-expiry-semibold { font-weight: 600; }
.wb-avail-ton { font-weight: 700; color: #1a4d2e; }
.wb-fifo-card {
  margin: 0 0 14px;
  padding: 12px;
  border: 1px solid #e8efe8;
  border-radius: 10px;
  background: #fafdfb;
}
.wb-fifo-title { font-weight: 700; margin-bottom: 6px; }
.wb-fifo-meta { font-size: 12px; color: #666; margin-bottom: 8px; }
.wb-fifo-picks { font-size: 12px; line-height: 1.65; }
.wb-fifo-actions { margin-top: 8px; }
.wb-fr-mt6 { margin-top: 6px; }
.wb-muted-13 { font-size: 13px; }
.wb-guide-p { font-size: 13px; line-height: 1.65; color: #444; margin: 0 0 12px; }
.wb-guide-ol { font-size: 13px; line-height: 1.75; color: #333; padding-left: 20px; margin: 0 0 14px; }
.wb-empty-pad { padding: 16px; }
.wb-font-xs11-only { font-size: 11px; }
.wb-book-ton { font-size: 12px; }

/* 可见性（替代 inline display:none） */
.wb-hidden { display: none !important; }
.grid2.out-price-row:not(.wb-hidden) { display: grid; }
p.out-price-row:not(.wb-hidden) { display: block; }

/* 入库 / 出库表单 */
.wb-in-row-item { margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px solid #eee; }
.wb-in-pest-blk {
  margin-top: 8px;
  padding: 10px;
  border: 1px dashed #c5d9cc;
  border-radius: 10px;
  background: #f8fbf9;
}
.wb-in-fr-mb8 { margin-bottom: 8px; }
.wb-in-row-mt8 { margin-top: 8px; }
.wb-in-amt-disp { display: inline-block; padding: 8px 0; color: #1a4d2e; font-weight: 700; }
.wb-in-price-hint { font-size: 12px; color: #66806f; margin: 4px 0 0; min-height: 18px; }
.wb-in-bag-hint { font-size: 12px; color: var(--green, var(--wb-green-mid)); margin: 6px 0 0; min-height: 18px; }
.wb-btn-mt8 { margin-top: 8px; }
.wb-out-prod-mt4 { margin-top: 4px; }
.wb-fr-min96 { min-width: 96px; }
.wb-text-green-bold { color: #1a4d2e; font-weight: 700; }
.wb-text-green-strong { color: #1a4d2e; }
.wb-text-muted-dash { color: #999; }
.wb-text-sep { color: #ccc; }
.wb-inv-sub { font-size: 11px; color: #666; margin-top: 4px; }
.wb-inv-lh { line-height: 1.35; }
.wb-lock-hint { font-size: 10px; color: #795548; margin-top: 2px; }
.wb-scan-prod-card { padding: 14px; background: #f5faf6; border: 1px solid #dceee1; border-radius: 10px; margin-bottom: 12px; }
.wb-scan-prod-title { font-size: 17px; font-weight: 700; color: #1a4d2e; line-height: 1.35; }
.wb-scan-prod-spec { font-size: 12px; color: #666; margin-top: 6px; }
.wb-scan-prod-code { font-size: 11px; color: #888; margin-top: 4px; }
.wb-scan-prod-match { font-size: 11px; color: #888; margin-top: 4px; }
.wb-scan-stock-ok { font-size: 12px; margin-top: 10px; padding: 8px 10px; border-radius: 8px; background: #eef6f0; color: #1a4d2e; }
.wb-scan-stock-warn { font-size: 12px; margin-top: 10px; padding: 8px 10px; border-radius: 8px; background: #fff3e0; color: #e65100; }
.wb-scan-msg { font-size: 11px; color: #888; margin-top: 6px; }
.wb-scan-confirm { font-size: 12px; color: #666; margin: 0; }
.wb-scan-cam-btn { margin: 0 0 10px; }
.wb-scan-cam-wrap { margin: 0 0 12px; }
.wb-scan-video { width: 100%; max-height: 240px; border-radius: 10px; background: #111; }
.wb-scan-stop-btn { margin-top: 8px; }
.wb-scan-intro { font-size: 11px; color: #888; margin: 0 0 10px; }
.wb-scan-desc { font-size: 13px; color: #666; line-height: 1.6; margin: 0 0 12px; }
.wb-txn-pay-mt { margin-top: 4px; }
.wb-txn-id-warn { color: #b8860b; font-size: 10px; margin-left: 3px; }
.wb-txn-date-xs { font-size: 12px; }
.wb-txn-date-muted { font-size: 12px; color: #666; }
.wb-txn-doc-xs { font-size: 12px; }
.wb-txn-num-xs { font-size: 12px; }
.wb-txn-narrow-xs { font-size: 11px; }
.wb-txn-notes-xs { font-size: 12px; color: #666; }
.wb-txn-card-meta-mt { margin-top: 6px; }
.wb-stock-err { color: #c0392b; }
.wb-stock-ok { color: #2e7d32; }
.wb-stock-warn { color: #b45309; margin-bottom: 6px; }
.wb-stock-warn-sub { display: block; margin-top: 4px; color: #666; font-size: 12px; }
.wb-stock-muted { color: #888; margin-bottom: 6px; }
.wb-stock-xfer-box { margin-top: 8px; padding: 8px 10px; background: #fff8e6; border: 1px solid #ffe082; border-radius: 8px; color: #8d6b00; font-size: 12px; line-height: 1.55; }
.wb-stock-xfer-title { color: #555; margin: 8px 0 4px; }
.wb-xfer-label { display: flex; align-items: center; gap: 8px; margin: 4px 0; flex-wrap: wrap; }
.wb-xfer-wh { min-width: 88px; }
.wb-xfer-ton { color: #666; }
.wb-xfer-qty { width: 88px; padding: 4px 6px; }

.wb-in-measure-note {
  font-size: 12px;
  color: #50675a;
  margin: 0 0 12px;
  padding: 10px 12px;
  background: #f4f8f5;
  border: 1px solid #dce9df;
  border-radius: 9px;
  line-height: 1.65;
}
.wb-grid-mb10 { margin-bottom: 10px; }
.wb-operator-save-row { margin: -4px 0 8px; }
.wb-fr-mt6 { margin-top: 6px; }
.wb-fr-my6 { margin: 6px 0; }
.wb-hint-mt0 { margin-top: 0; }
.wb-preview-kv { font-size: 13px; margin-bottom: 10px; }
.wb-kv-label { color: #666; }
.wb-kv-label-w { width: 88px; color: #666; }
.wb-preview-total { text-align: right; font-size: 13px; margin: 8px 0 0; }
.wb-out-slip-opts { margin: 0 0 6px; }
.wb-out-slip-label { font-size: 12px; display: block; margin-bottom: 4px; }
.wb-out-slip-copies-label { font-size: 12px; color: #555; }
.wb-out-slip-select { display: inline-block; width: auto; min-width: 160px; padding: 4px 8px; font-size: 12px; margin-left: 4px; }
.wb-out-weigh-block { margin-top: 10px; padding: 10px 12px; background: #fafcfa; border: 1px solid #dceee1; border-radius: 8px; }
.wb-out-weigh-fields { margin-top: 8px; }
.wb-slip-hint-ok { font-size: 12px; color: #1a4d2e; margin: 0 0 10px; padding: 10px 12px; background: #eef6f0; border-radius: 8px; }
.wb-slip-hint-muted { font-size: 12px; color: #666; margin: 0 0 10px; }
.wb-recv-box { margin: 12px 0; padding: 12px 14px; background: #f4faf6; border: 1px solid #c8e6c9; border-radius: 10px; font-size: 13px; line-height: 1.65; }
.wb-recv-box-title { font-weight: 700; color: #1a4d2e; margin-bottom: 6px; }
.wb-slip-share-p { font-size: 13px; line-height: 1.5; }
.wb-slip-link-input { font-size: 16px; }
.wb-qr-center { display: flex; justify-content: center; margin-top: 12px; }
.wb-qr-img { width: 260px; max-width: 86vw; height: auto; border-radius: 14px; border: 1px solid #eef3ef; }
.wb-xls-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.wb-xls-file-label { cursor: pointer; margin: 0; }
.wb-xls-preview { font-size: 12px; color: #555; min-height: 48px; }
.wb-import-loading { color: #888; }
.wb-import-err { color: #c62828; }
.wb-import-ok { color: #2e7d32; }
.wb-import-scroll { max-height: 180px; overflow: auto; border: 1px solid #eee; border-radius: 8px; padding: 8px; margin-top: 8px; }
.wb-import-more { color: #888; }
.wb-row-low-stock { background: #fff8e1; }
.wb-input-alert { max-width: 90px; font-size: 12px; padding: 4px; }
.wb-wh-breakdown { font-size: 11px; color: #555; max-width: 140px; }
.wb-wh-breakdown-sub { font-size: 10px; color: #888; margin-top: 2px; }
.wb-name-subtot-box { margin: 10px 0 0; padding: 10px 12px; background: #f8faf8; border-radius: 8px; border-left: 3px solid var(--green, var(--wb-green-mid)); }
.wb-name-subtot-title { font-size: 11px; color: #888; margin: 0 0 6px; }
.wb-name-subtot-line { font-size: 12px; color: #555; }
.wb-alert-card { border-left: 4px solid #ff9800; }
.wb-alert-title { margin: 0 0 10px; color: #e65100; }
.wb-alert-section { font-size: 12px; margin: 0 0 6px; color: #666; }
.wb-alert-section-mt { font-size: 12px; margin: 12px 0 6px; color: #666; }
.wb-text-warn-semibold { color: #c62828; font-weight: 600; }
.wb-text-expiry { color: #e65100; }
.wb-text-brown { color: #5d4037; }
.wb-txn-load-more { text-align: center; margin: 12px 0 4px; }
.wb-hub-empty-cell { text-align: center; color: #888; padding: 16px; }
.wb-hub-xfer-note { font-size: 10px; color: #b8860b; margin-top: 2px; }
.wb-hub-ton-note { font-size: 10px; color: #888; margin-top: 2px; }
.wb-hub-intro { font-size: 12px; color: #555; margin: 0 0 10px; line-height: 1.6; }
.wb-muted-pad-v { padding: 12px 0; }
.wb-muted-pad-v16 { padding: 16px 0; }
.wb-muted-foot11 { font-size: 11px; margin: 0 0 8px; }
.wb-wh-toolbar-label { font-size: 13px; font-weight: 600; color: var(--green, var(--wb-green-mid)); }
.wb-wh-toolbar-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.wb-card-title-green { margin: 0 0 10px; color: var(--green, var(--wb-green-mid)); }
.wb-card-title-blue { margin: 0 0 10px; color: #1565c0; }
.wb-summary-warn-banner { font-size: 12px; color: #795548; margin: 0 0 10px; padding: 8px 10px; background: #fff8e1; border-radius: 8px; border: 1px solid #ffe082; }
.wb-btn-span-full { grid-column: 1 / -1; max-width: 100%; }
.wb-inv-value { font-size: 12px; color: #1a4d2e; font-weight: 600; }
.wb-cust-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
.wb-slip-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 10px; }
.wb-slip-merge-hint { font-size: 12px; color: #555; margin: 0 0 10px; line-height: 1.55; }
.wb-slip-merge-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 12px; }
.wb-slip-list-hint { font-size: 12px; color: #888; margin: 16px 0 8px; }

.wb-ms-regional-charts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 8px;
}
.wb-ms-chart-box {
  border: 1px solid #e8efe8;
  border-radius: 10px;
  padding: 10px 12px;
  background: #fafdfb;
}
.wb-ms-chart-box strong {
  display: block;
  font-size: 13px;
  color: var(--green, #1a4d2e);
  margin-bottom: 6px;
}
.wb-ms-chart-wide {
  grid-column: 1 / -1;
}
@media (max-width: 900px) {
  .wb-ms-regional-charts {
    grid-template-columns: 1fr;
  }
}

/* 地块影像上传（工作台 → 客户门户只读） */
.wb-plot-media-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  padding: 8px 0;
  border-bottom: 1px solid #f0f0f0;
  font-size: 13px;
}
.wb-plot-media-meta b { display: block; color: var(--green, #1a4d2e); }
.wb-plot-media-meta span { font-size: 12px; color: #888; }
.wb-plot-media-actions { display: flex; gap: 6px; flex-shrink: 0; }

.wb-prod-dim-summary { margin: 0 0 12px; }
.wb-tbl-head-bg { background: #fafdfb; }
.wb-h5-mt { margin: 10px 0 6px; }
.wb-h5-zero { margin: 0 0 6px; }
.wb-pad-v6 { padding: 6px 0; }
.wb-ml-auto { margin-left: auto; }
.wb-recon-kpi-val { font-size: 17px; font-weight: 700; }
.wb-metric-card { padding: 12px 14px; margin: 0 0 12px; }
.wb-metric-val-lg { font-size: 22px; font-weight: 700; color: var(--green, var(--wb-green-mid)); }
.wb-recon-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 8px; }
.wb-recon-range { font-size: 11px; margin: 0; flex: 1 1 200px; }
.wb-cursor-pointer { cursor: pointer; }
.wb-text-success { color: #27ae60; }
.wb-table-mb10 { margin: 0 0 10px; }
.wb-text-right-xs { text-align: right; font-size: 12px; }
.wb-font-xs { font-size: 12px; }
.wb-note-intro { font-size: 13px; color: #555; line-height: 1.55; margin: 0 0 12px; }
.wb-link-input { font-size: 16px; }

/* 提货确认单 · 打印模板 */
.wh-slip-td, .wh-slip-th { padding: 6px; border: 1px solid #333; }
.wh-slip-meta-td { padding: 4px 8px; border: 1px solid #333; }
.wh-slip-th { background: #f0f4ef; }
.wh-slip-th-green { background: #eef6f0; }
.wh-slip-td-c { text-align: center; }
.wh-slip-td-r { text-align: right; }
.wh-slip-td-spec { font-size: 12px; color: #333; }
.wh-slip-td-batch { font-size: 12px; }
.wh-slip-kind-title { margin: 0 0 6px; font-size: 13px; font-weight: 600; color: #1a4d2e; }
.wh-slip-table { width: 100%; border-collapse: collapse; margin-bottom: 14px; font-size: 12px; }
.wh-slip-table-meta { margin-bottom: 12px; }
.wh-slip-table-lines { margin-bottom: 16px; }
.wh-slip-group-row { padding: 6px 8px; border: 1px solid #333; background: #eef6f0; font-weight: 700; }
.wh-slip-empty { text-align: center; padding: 12px; border: 1px solid #333; color: #666; }
.wh-slip-revoked { background: #fff3e0; border: 1px solid #ffb74d; color: #bf360c; padding: 10px 12px; margin: 0 0 14px; border-radius: 8px; text-align: center; font-size: 14px; }
.wh-slip-root { max-width: 210mm; margin: 0 auto; background: #fff; color: #111; font-size: 13px; line-height: 1.5; }
.wh-slip-h2 { text-align: center; margin: 0 0 4px; font-size: 20px; letter-spacing: .12em; }
.wh-slip-subtitle { text-align: center; margin: 0 0 16px; font-size: 12px; color: #666; }
.wh-slip-meta-w50 { width: 50%; }
.wh-slip-foot-qty { text-align: right; }
.wh-slip-foot-empty { border: 1px solid #333; }
.wh-slip-sign-row { display: flex; gap: 24px; margin-top: 28px; font-size: 13px; }
.wh-slip-sign-box { flex: 1; border-top: 1px solid #333; padding-top: 8px; }
.wh-slip-footnote { margin-top: 24px; font-size: 11px; color: #666; text-align: center; }
.wh-slip-print-page { margin-bottom: 24px; }
.wh-slip-print-page-break { page-break-after: always; }
.wh-slip-copy-label { text-align: right; font-size: 11px; color: #666; margin-bottom: 6px; }
.wh-slip-row-deleted { opacity: .78; }
.wh-slip-export-hint { font-size: 11px; color: #888; margin-left: 4px; }
.wh-pu-print-hint { font-size: 12px; color: #666; margin: 0 0 8px; }
.wh-slip-print-label { font-size: 12px; margin-right: auto; display: flex; align-items: center; gap: 6px; }
.wh-slip-print-select { width: auto; padding: 4px 8px; font-size: 12px; }
.wh-slip-recv-block { margin: 12px 0; padding: 12px 14px; background: #f4faf6; border: 1px solid #c8e6c9; border-radius: 8px; }
.wh-slip-recv-title { font-size: 13px; font-weight: 700; color: #1a4d2e; margin-bottom: 8px; }
.wh-slip-recv-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px 10px; }
.wh-slip-recv-grid span { display: block; font-size: 11px; color: #666; }
.wh-slip-recv-grid b { font-size: 14px; color: #222; }
.wh-slip-recv-meta { margin-top: 8px; font-size: 11px; color: #666; }
.wh-slip-bank-block { background: #fafcfa; border-color: #dce9df; }
.wh-slip-bank-card { margin-top: 8px; padding: 10px 12px; background: #fff; border: 1px dashed #b7d8be; border-radius: 6px; }
.wh-slip-bank-owner { font-weight: 700; color: #1a4d2e; margin-bottom: 6px; font-size: 12px; }
.wh-slip-bank-line { display: flex; justify-content: space-between; gap: 10px; font-size: 12px; margin: 3px 0; }
.wh-slip-bank-line span { color: #666; flex-shrink: 0; }
.wh-pay-muted { opacity: .55; }
@media print {
  .wh-slip-root { max-width: none; padding: 0; }
  .wh-slip-table { font-size: 10pt; }
  .wh-slip-recv-block, .wh-slip-bank-card { break-inside: avoid; }
}
.wh-out-payment-blk { margin: 10px 0; padding: 12px; background: #fffbf0; border: 1px solid #f0e0b8; border-radius: 9px; }
.wh-out-payment-title { font-size: 13px; font-weight: 600; color: #8c5a00; margin: 0 0 8px; }
.wh-out-pay-radios { display: flex; flex-wrap: wrap; gap: 10px 16px; font-size: 13px; margin-top: 4px; }
.wb-text-danger-strong { color: #c62828; }
.wb-recv-kpi-val { font-size: 18px; font-weight: 700; }
.wb-note-lh55 { font-size: 12px; color: #666; line-height: 1.55; margin: 0 0 10px; }
.wb-wh-col-sm { font-size: 11px; color: #555; }
.wb-delete-warn { font-size: 13px; color: #c62828; line-height: 1.55; }
.wb-flex-op-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.wb-flex-1-min140 { flex: 1; min-width: 140px; }
.wb-mt12 { margin-top: 12px; }
.wb-cell-notes-trunc { font-size: 11px; color: #666; max-width: 160px; }
.wb-muted-foot12 { font-size: 12px; color: #888; margin: 12px 0 0; }

/* 合作社 / 权属 */
.woh-wh-info-mt { font-size: 12px; margin-top: 8px; }
.woh-wh-info-body { font-size: 12px; margin-top: 8px; line-height: 1.6; color: #555; }
.woh-check-row-flex { display: flex; flex-wrap: wrap; gap: 10px; font-size: 13px; }
.wh-own-fields { margin-top: 8px; padding: 10px; background: #f8faf8; border: 1px solid #dceee1; border-radius: 8px; }
.wh-own-fields-title { font-size: 12px; font-weight: 600; color: #1a4d2e; margin: 0 0 8px; }
.wh-out-settlement-blk { margin: 8px 0; padding: 10px 12px; background: #f4f8f5; border: 1px solid #dceee1; border-radius: 8px; }
.wh-out-hint-mt { margin: 6px 0 0; font-size: 12px; color: #66806f; }
.wh-own-hint-green { color: #2e7d32; }
.wh-own-hint-blue { color: #1565c0; }
.wb-sev-error { font-weight: 700; color: #c62828; }
.wb-sev-warn { font-weight: 700; color: #e65100; }
.wb-sev-info { font-weight: 700; color: #666; }
.wb-text-right-bold { text-align: right; font-weight: 600; }
.wb-grid-mb10 { margin-bottom: 10px; }
.wb-drawer-actions { display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.wb-drawer-actions-row { display: flex; flex-wrap: wrap; gap: 8px; width: 100%; margin-bottom: 8px; }
.wh-table-scroll-short { max-height: 220px; margin-bottom: 14px; }
.wb-detail-intro { font-size: 13px; line-height: 1.6; }
.wb-muted-mr8 { font-size: 12px; margin-right: 8px; }
.wb-btn-row-mb10 { margin: 0 0 10px; }

.wb-card-accent-green { border-left: 4px solid #2d7a4e; margin-bottom: 14px; }
.wb-card-accent-gold { border-left: 4px solid var(--gold, var(--wb-gold)); }
.wb-sales-pt-lg { font-size: 16px; }
.wb-sales-hint-pad { font-size: 12px; line-height: 1.65; margin: 0 0 10px; padding: 0 12px; }
.wb-sales-hint-mb { font-size: 12px; line-height: 1.6; margin: 0 0 10px; }
.wb-sales-hub-pad { padding: 0 12px 14px; }
.wb-sales-chain-body { font-size: 13px; min-height: 48px; }
.wb-sales-list-min { min-height: 160px; }
.wb-text-err { color: #e74c3c; }
.wb-text-gold-bold { color: var(--gold, var(--wb-gold)); font-weight: 700; }
.wb-cell-nowrap { white-space: nowrap; }
.wb-table-scroll-x { overflow-x: auto; }

.wb-loading-center { text-align: center; padding: 30px; color: #aaa; }
.wb-err-pad-center { color: #e74c3c; padding: 30px; text-align: center; }
.wb-empty-center { text-align: center; color: #aaa; padding: 30px; }
.wb-badge-contract { font-size: 10px; background: #fff3e0; color: #e65100; padding: 1px 6px; border-radius: 999px; }
.wb-badge-coop { display: inline-block; margin-top: 3px; font-size: 10px; background: #eaf7ef; color: #1f7a46; padding: 1px 6px; border-radius: 999px; }
.wb-font-xs12 { font-size: 12px; }
.wb-subsec-sm { font-size: 14px; margin-bottom: 8px; }
.wb-subsec-sm-tight { font-size: 14px; margin-bottom: 6px; }
.wb-spacer-12 { height: 12px; }
.wb-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.wb-grid-2-13 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; font-size: 13px; }
.wb-grid-4-stat { display: grid; grid-template-columns: repeat(4, minmax(120px, 1fr)); gap: 8px; margin: 10px 0; }
.wb-flex-between-wrap { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; flex-wrap: wrap; }
.wb-flex-between-center { display: flex; justify-content: space-between; align-items: center; }
.wb-flex-between-center-mb { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.wb-flex-between-center-mt { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-top: 8px; }
.wb-flex-wrap-gap8 { display: flex; flex-wrap: wrap; gap: 8px; }
.wb-flex-wrap-gap8-mb { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 10px; }
.wb-flex-wrap-gap8-mb10 { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.wb-h4-green { color: var(--green, var(--wb-green-mid)); margin: 12px 0 6px; font-size: 13px; }
.wb-h4-green-lg { color: var(--green, var(--wb-green-mid)); margin: 14px 0 8px; font-size: 14px; }
.wb-h4-green-tight { color: var(--green, var(--wb-green-mid)); margin: 8px 0; font-size: 13px; }
.wb-card-mt { margin: 14px 0 0; padding: 12px; }
.wb-card-mb { margin: 0 0 10px 0; padding: 12px; }
.wb-card-mb12 { margin: 0 0 12px 0; padding: 12px 12px 10px; }
.wb-card-flat { margin: 0; }
.wb-scope-flat { margin: 0; }
.wb-link-green-bold { color: var(--green, var(--wb-green-mid)); font-weight: 600; }
.wb-text-gold { color: var(--gold, var(--wb-gold)); }
.wb-text-green-md { font-size: 12px; color: #2d7a4e; font-weight: 700; }
.wb-subsec-zero { margin: 0 0 4px; }
.wb-subsec-zero-mb8 { margin: 0 0 8px 0; }
.wb-muted-mt4 { margin-top: 4px; }
.wb-fr-span-full { grid-column: 1 / -1; }
.wb-tbl-xs { font-size: 12px; }
.wb-tbl-xs-mt { font-size: 12px; margin: 8px 0; }
.wb-tbl-xs-mb { font-size: 12px; margin: 10px 0; }
.wb-pay-hub-details { margin: 0 0 10px; font-size: 12px; line-height: 1.65; color: #555; }
.wb-pay-hub-summary { cursor: pointer; color: var(--green, var(--wb-green-mid)); font-weight: 600; }
.wb-pay-hub-ul { margin: 8px 0 0; padding-left: 18px; }
.wb-pay-hub-tabs-row { display: flex; gap: 6px; margin: 12px 0; flex-wrap: wrap; }
.wb-pay-hub-grid-mb { margin-bottom: 8px; }
.wb-cell-truncate { max-width: 120px; overflow: hidden; text-overflow: ellipsis; }
.wb-input-w6 { width: 6rem; }
.wb-input-w55 { width: 5.5rem; }
.wb-input-file-sm { font-size: 11px; max-width: 7rem; }
.wb-hr-light { border: none; border-top: 1px solid #eee; margin: 12px 0; }
.wb-label-check { font-size: 12px; margin-top: 8px; display: flex; align-items: center; gap: 6px; }
.wb-detail-line { font-size: 13px; line-height: 1.65; margin-bottom: 10px; }
.wb-list-item-xs { font-size: 12px; margin: 4px 0; }
.wb-ul-compact { padding-left: 18px; margin: 0 0 12px; }
.wb-muted-pad12 { padding: 12px; }
.wb-muted-pad8 { padding: 8px; }
.wb-muted-ml8 { margin-left: 8px; }
.wb-subsec-mb8 { margin-bottom: 8px; }
.wb-mt10-gap8 { margin-top: 10px; display: flex; gap: 8px; flex-wrap: wrap; }
.wb-ship-var-extra { margin-top: 4px; font-size: 11px; display: none; }
.wb-ship-select { min-width: 5.5rem; font-size: 11px; }
.wb-muted-mb8 { margin-bottom: 8px; }
.wb-muted-mb10 { margin-bottom: 10px; }

.wb-pad-10 { padding: 10px; }
.wb-textarea-mono { font-family: ui-monospace, monospace; font-size: 12px; }
.wb-note-mt0 { font-size: 12px; margin-top: 0; }
.wb-pd-actions { margin: 6px 0; }
.wb-pd-check-label { font-size: 12px; margin-right: 10px; }
.wb-pd-scroll { overflow: auto; max-height: 52vh; border: 1px solid #eee; border-radius: 8px; }

.wb-fw-bold { font-weight: 700; }
.wb-btn-compact { font-size: 11px; padding: 2px 8px; }
.wb-input-w65 { width: 6.5rem; }
.wb-h4-danger { color: #c0392b; margin: 14px 0 6px; }
.wb-h4-green-sm { color: var(--green, var(--wb-green-mid)); margin: 10px 0 6px; }
.wb-flex-wrap-gap8-mb14 { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.wb-flex-wrap-gap8-mb12 { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.wb-meta-mt10 { margin-top: 10px; }
.wb-btn-my { margin: 10px 0; }
.wb-input-touch { font-size: 16px; }
.wb-warn-note { font-size: 12px; color: #e67e22; margin: 0 0 8px; }
.wb-manual-wrap { margin-top: 8px; padding-top: 8px; border-top: 1px dashed #e0e8e2; }
.wb-flex-gap6 { display: flex; gap: 6px; }
.wb-flex-1 { flex: 1; min-width: 0; }

.wb-kind-stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 8px; margin: 0 0 12px; }
.wb-kind-stat-label { font-size: 11px; color: #666; }
.wb-kind-stat-val-green { font-size: 18px; font-weight: 700; color: #2e7d32; }
.wb-kind-stat-val-blue { font-size: 18px; font-weight: 700; color: #1565c0; }
.wb-h4-fert { margin: 12px 0 6px; color: #2e7d32; }
.wb-h4-pest-mt { margin: 16px 0 6px; color: #1565c0; }
.wb-note-muted-sm { font-size: 12px; color: #666; margin: 0 0 6px; }
.wb-note-sm-mb { font-size: 12px; margin: 0 0 10px; }
.wb-note-sm-lh { font-size: 12px; line-height: 1.65; margin: 0 0 10px; }
.wb-h5-muted { font-size: 13px; margin: 12px 0 6px; color: #555; }
.wb-details-summary { cursor: pointer; font-weight: 700; color: var(--green, var(--wb-green-mid)); margin: 8px 0; }
.wb-woh-empty { padding: 20px; text-align: center; }
.wb-mt16 { margin-top: 16px; }
.wb-mt20 { margin-top: 20px; }
.wb-text-muted888 { color: #888; }
.wb-txn-trunc-banner { font-size: 11px; margin: 0 0 10px; padding: 8px 10px; background: #f0f7ff; border-radius: 8px; border: 1px solid #bbdefb; color: #1565c0; }
.wb-ml8-xs { font-size: 11px; margin-left: 8px; }
.wb-wh-toolbar-label { font-size: 13px; font-weight: 600; color: var(--green, var(--wb-green-mid)); }
.wb-wh-toolbar-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.wb-card-title-green { margin: 0 0 10px; color: var(--green, var(--wb-green-mid)); }
.wb-card-title-blue { margin: 0 0 10px; color: #1565c0; }
.wb-summary-warn-banner { font-size: 12px; color: #795548; margin: 0 0 10px; padding: 8px 10px; background: #fff8e1; border-radius: 8px; border: 1px solid #ffe082; }
.wb-btn-span-full { grid-column: 1 / -1; max-width: 100%; }
.wb-inv-value { font-size: 12px; color: #1a4d2e; font-weight: 600; }
.wb-cust-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px; }
.wb-slip-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 10px; }
.wb-slip-merge-hint { font-size: 12px; color: #555; margin: 0 0 10px; line-height: 1.55; }
.wb-slip-merge-bar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0 0 12px; }
.wb-slip-list-hint { font-size: 12px; color: #888; margin: 16px 0 8px; }

.wb-ms-regional-charts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 8px;
}
.wb-ms-chart-box {
  border: 1px solid #e8efe8;
  border-radius: 10px;
  padding: 10px 12px;
  background: #fafdfb;
}
.wb-ms-chart-box strong {
  display: block;
  font-size: 13px;
  color: var(--green, #1a4d2e);
  margin-bottom: 6px;
}
.wb-ms-chart-wide {
  grid-column: 1 / -1;
}
@media (max-width: 900px) {
  .wb-ms-regional-charts {
    grid-template-columns: 1fr;
  }
}

/* 地块影像上传（工作台 → 客户门户只读） */
.wb-plot-media-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  padding: 8px 0;
  border-bottom: 1px solid #f0f0f0;
  font-size: 13px;
}
.wb-plot-media-meta b { display: block; color: var(--green, #1a4d2e); }
.wb-plot-media-meta span { font-size: 12px; color: #888; }
.wb-plot-media-actions { display: flex; gap: 6px; flex-shrink: 0; }
