* {
  box-sizing: border-box;
}

/* 环境自检徽标条：区分本机实例(可达) 与 云沙箱预览(不可达) */
.envbar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 7px 20px;
  background: #f7f8fa;
  border-bottom: 1px solid #e6e8eb;
  font-size: 12.5px;
  flex-wrap: wrap;
}
.env-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 11px;
  border-radius: 999px;
  font-size: 12.5px;
  border: 1px solid transparent;
  white-space: nowrap;
}
.env-badge b { font-weight: 700; }
.env-badge.ok { background: #e8f7ee; color: #1a7f4b; border-color: #b7e3c8; }
.env-badge.bad { background: #fdecec; color: #c0392b; border-color: #f3c4c4; }
.env-badge.pending { background: #fff7e6; color: #ad6800; border-color: #ffe1a8; }
.env-badge .dim { color: #98a0a8; font-weight: 400; }
.env-hint { color: #98a0a8; font-size: 12px; }
body {
  margin: 0;
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  background: #f5f6f8;
  color: #1f2329;
}
.topbar {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 0 20px;
  height: 56px;
  background: #fff;
  border-bottom: 1px solid #e6e8eb;
  position: sticky;
  top: 0;
  z-index: 10;
}
.brand {
  font-weight: 700;
  font-size: 16px;
}
.tabs {
  display: flex;
  gap: 6px;
}
.tab {
  border: none;
  background: transparent;
  padding: 8px 14px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 14px;
  color: #4b5563;
}
.tab.active {
  background: #ffecec;
  color: #f5222d;
  font-weight: 600;
}
.who {
  margin-left: auto;
  font-size: 13px;
  color: #8a9099;
}
.view {
  padding: 20px;
  max-width: 1200px;
  margin: 0 auto;
}
.view.hidden {
  display: none;
}
.kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 14px;
  margin-bottom: 18px;
}
.kpi {
  background: #fff;
  border-radius: 12px;
  padding: 16px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}
.kpi .label {
  font-size: 13px;
  color: #8a9099;
}
.kpi .value {
  font-size: 24px;
  font-weight: 700;
  margin-top: 6px;
}
.kpi .value.red {
  color: #f5222d;
}
.kpi .value.green {
  color: #00a854;
}
.panel {
  background: #fff;
  border-radius: 12px;
  padding: 18px;
  margin-bottom: 18px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}
.panel-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.panel h3 {
  margin: 0 0 12px;
  font-size: 15px;
}
.legend .dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  margin: 0 4px 0 12px;
}
.dot.order {
  background: #1677ff;
}
.dot.amount {
  background: #f5222d;
}
.tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.tbl th,
.tbl td {
  border-bottom: 1px solid #eef0f2;
  padding: 10px 8px;
  text-align: left;
}
.tbl th {
  color: #8a9099;
  font-weight: 600;
}
.shop-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px;
  margin-top: 12px;
}
.shop-card {
  border: 1px solid #eef0f2;
  border-radius: 10px;
  padding: 14px;
}
.shop-card .name {
  font-weight: 600;
}
.shop-card .card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.shop-card .new-flag {
  flex: none;
  font-size: 11px;
  font-weight: 600;
  color: #fff;
  background: linear-gradient(135deg, #ff6034, #f5222d);
  border-radius: 999px;
  padding: 2px 8px;
  animation: flagPop 0.4s ease;
}
@keyframes flagPop {
  0% { transform: scale(0.4); opacity: 0; }
  100% { transform: scale(1); opacity: 1; }
}
/* 登录成功后高亮新店铺卡片 */
.shop-card.highlight {
  border-color: #f5222d;
  animation: shopGlow 1.5s ease-in-out 3;
}
@keyframes shopGlow {
  0%, 100% { box-shadow: 0 0 0 2px rgba(245, 34, 45, 0.18); }
  50% { box-shadow: 0 0 0 7px rgba(245, 34, 45, 0.42); }
}
/* 登录失效（过期/掉线）卡片：红色描边提示 */
.shop-card.warn {
  border-color: #f5222d;
  background: #fffafa;
}
/* ===== 登录失效自动提示：横幅 + 表格行标红 + 重新登录按钮 ===== */
.banner {
  background: linear-gradient(135deg, #ff6034, #f5222d);
  color: #fff;
  border-radius: 10px;
  padding: 12px 16px;
  margin-bottom: 14px;
  font-size: 14px;
  box-shadow: 0 4px 14px rgba(245, 34, 45, 0.25);
}
.banner.hidden {
  display: none;
}
.banner b {
  font-size: 16px;
}
.tbl tr.row-warn td {
  background: #fff1f0;
  color: #cf1322;
}
.tbl tr.row-warn td:first-child {
  border-left: 3px solid #f5222d;
}
.relogin-btn {
  border: 1px solid #f5222d;
  background: #fff;
  color: #f5222d;
  padding: 5px 12px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
}
.relogin-btn:hover {
  background: #f5222d;
  color: #fff;
}
.relogin-btn.urgent {
  background: #fff1f0;
}
.card-relogin {
  margin-top: 10px;
  width: 100%;
}
.muted {
  color: #bfc4cb;
}
.badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 12px;
  margin-top: 8px;
}
.badge.online {
  background: #e6f7ec;
  color: #00a854;
}
.badge.offline {
  background: #f2f3f5;
  color: #8a9099;
}
.badge.expired {
  background: #fff1f0;
  color: #f5222d;
}
.meta {
  font-size: 12px;
  color: #8a9099;
  margin-top: 8px;
  line-height: 1.6;
}
.toolbar,
.copy-bar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.copy-bar {
  background: #fafbfc;
  padding: 10px;
  border-radius: 8px;
}
.btn {
  border: 1px solid #d0d3d6;
  background: #fff;
  padding: 7px 14px;
  border-radius: 8px;
  cursor: pointer;
}
.btn.primary {
  background: #f5222d;
  color: #fff;
  border-color: #f5222d;
}
.sep {
  color: #c9ced4;
}
.copy-msg {
  font-size: 13px;
  color: #00a854;
}
.hint {
  font-size: 12px;
  color: #8a9099;
}
.table-wrap {
  max-height: 520px;
  overflow: auto;
  border: 1px solid #eef0f2;
  border-radius: 8px;
}
.select-col {
  width: 36px;
}
.pill {
  font-size: 11px;
  padding: 1px 6px;
  border-radius: 5px;
  white-space: nowrap;
  display: inline-block;
  line-height: 1.4;
}
.pill.on_shelf {
  background: #e6f7ec;
  color: #00a854;
}
.pill.off_shelf {
  background: #f2f3f5;
  color: #8a9099;
}
.pill.draft {
  background: #fff7e6;
  color: #fa8c16;
}
.pill.cached {
  background: #e8f0fe;
  color: #2563eb;
  margin-left: 4px;
}

/* ===== 登录弹窗 ===== */
.modal-mask {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 50;
}
.modal-mask.hidden {
  display: none;
}
.modal {
  width: 430px;
  max-width: 92vw;
  background: #fff;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 16px 48px rgba(245, 34, 45, 0.18);
}
.modal-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 20px;
  border-bottom: 1px solid #f2f3f5;
}
.modal-title {
  font-weight: 700;
  font-size: 16px;
}
.modal-close {
  border: none;
  background: transparent;
  font-size: 18px;
  cursor: pointer;
  color: #b0b5bd;
  line-height: 1;
}
.modal-close:hover {
  color: #f5222d;
}
.modal-body {
  padding: 20px;
}

/* The task list can be taller than the viewport. Pin its top inside the
   viewport and scroll the body so the title and close button stay reachable. */
#taskModal {
  align-items: flex-start;
  overflow-y: auto;
  padding: 24px 12px;
  box-sizing: border-box;
}
#taskModal .modal {
  max-height: calc(100vh - 48px);
  display: flex;
  flex-direction: column;
}
#taskModal .modal-head {
  flex: 0 0 auto;
}
#taskModal .modal-body {
  min-height: 0;
  overflow-y: auto;
}
@media (max-width: 640px) {
  #taskModal { padding: 8px; }
  #taskModal .modal { max-height: calc(100vh - 16px); }
}
.form-row {
  display: flex;
  gap: 10px;
  margin-bottom: 4px;
  flex-wrap: wrap;
}
.form-row label,
.mtd-pane label {
  flex: 1;
  display: flex;
  flex-direction: column;
  font-size: 13px;
  color: #4b5563;
  gap: 6px;
}
.form-row input,
.mtd-pane input {
  border: 1px solid #d8dbe0;
  border-radius: 9px;
  padding: 9px 11px;
  font-size: 14px;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.form-row input:focus,
.mtd-pane input:focus {
  outline: none;
  border-color: #f5222d;
  box-shadow: 0 0 0 3px rgba(245, 34, 45, 0.12);
}
.req {
  color: #f5222d;
}
.form-err {
  color: #f5222d;
  font-size: 12px;
  min-height: 16px;
  margin: 4px 0 10px;
}

.account-type-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}
.account-type-label {
  font-size: 13px;
  color: #4b5563;
  font-weight: 500;
}
.radio-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
  color: #374151;
  padding: 5px 10px;
  border: 1px solid #d8dbe0;
  border-radius: 20px;
  cursor: pointer;
  transition: all 0.15s;
}
.radio-chip:hover {
  border-color: #f5222d;
}
.radio-chip input {
  accent-color: #f5222d;
  cursor: pointer;
}
.radio-chip:has(input:checked) {
  border-color: #f5222d;
  background: #fff0f1;
  color: #f5222d;
}

.method-tabs {
  display: flex;
  gap: 6px;
  margin-bottom: 16px;
  background: #f5f6f8;
  padding: 4px;
  border-radius: 10px;
}
.mtd {
  flex: 1;
  border: none;
  background: transparent;
  padding: 9px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 13px;
  color: #4b5563;
  transition: all 0.15s;
}
.mtd.active {
  background: #fff;
  color: #f5222d;
  font-weight: 600;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
}
.mtd-pane {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.mtd-pane.hidden {
  display: none;
}
.btn.ghost {
  align-self: center;
  border: 1px solid #e0e2e6;
  background: #fff;
  color: #4b5563;
}
.btn.ghost:hover {
  border-color: #f5222d;
  color: #f5222d;
}
.qr-steps {
  text-align: center;
  font-size: 12px;
  color: #9aa0a8;
}
.qr-box {
  align-self: center;
  width: 220px;
  height: 220px;
  border: 2px dashed #ffd5d5;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: #fff7f7;
  position: relative;
}
.qr-box img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.qr-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  color: #9aa0a8;
  font-size: 13px;
}
.spinner {
  width: 26px;
  height: 26px;
  border: 3px solid #ffd5d5;
  border-top-color: #f5222d;
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
.qr-status {
  align-self: center;
  font-size: 13px;
  color: #6b7280;
  text-align: center;
  min-height: 20px;
}
.qr-status.ok {
  color: #00a854;
  font-weight: 600;
}
.qr-status.err {
  color: #f5222d;
}

.thumb{width:48px;height:48px;object-fit:cover;border-radius:6px;border:1px solid #eee;background:#fafafa;}
.muted{color:#9aa0a6;}
.btn.ghost{background:#fff;border:1px solid #d0d3d6;color:#1f2329;}

/* ===== 商品详情弹窗 ===== */
.modal-lg { width: 760px; max-width: 94vw; }
.btn.sm { padding: 4px 10px; font-size: 12px; border-radius: 7px; }
.pd-loading, .pd-error { padding: 30px; text-align: center; color: #6b7280; }
.pd-error { color: #f5222d; }
.pd-content { display: flex; flex-direction: column; gap: 16px; }
.pd-media-row { display: flex; flex-wrap: wrap; gap: 12px; }
.pd-media { display: flex; flex-direction: column; gap: 4px; }
.pd-media-label { font-size: 12px; color: #6b7280; }
.pd-media img { width: 120px; height: 120px; object-fit: cover; border-radius: 8px; border: 1px solid #eee; background: #fafafa; }
.pd-media video { width: 160px; max-height: 160px; border-radius: 8px; border: 1px solid #eee; background: #000; }
.pd-media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); gap: 4px; max-width: 560px; }
.pd-media-grid img { width: 100%; height: 80px; object-fit: cover; border-radius: 4px; border: 1px solid #eee; background: #fafafa; }
.pd-media-grid-r34 img { height: 107px; }
.pd-base { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 13px; color: #4b5563; padding: 10px 12px; background: #fafbfc; border-radius: 10px; }
.pd-base b { color: #1f2329; }
.pd-section { border-top: 1px dashed #eee; padding-top: 12px; }
.pd-h { font-size: 14px; margin: 0 0 8px; color: #1f2329; }
.pd-attr-img { width: 56px; height: 56px; object-fit: cover; border-radius: 6px; border: 1px solid #eee; vertical-align: middle; }
.pd-cached-hint { font-size: 12px; color: #2563eb; background: #e8f0fe; border: 1px solid #c7d7fb; border-radius: 8px; padding: 8px 10px; }
.tag { display: inline-block; font-size: 11px; padding: 1px 6px; border-radius: 4px; margin-left: 4px; vertical-align: middle; }
.tag-sel { background: #e6f4ff; color: #1677ff; }
.tag-img { background: #fff1e6; color: #fa8c16; }
.ok { color: #00a854; font-weight: 600; }
.tbl-sm { font-size: 12.5px; }
.tbl-sm th, .tbl-sm td { padding: 6px 10px; }

/* ===== 账号 & 分组管理 ===== */
.op-add, .grp-add { display: flex; gap: 8px; margin: 12px 0; }
.op-add input, .grp-add input { flex: 1; max-width: 320px; padding: 8px 10px; border: 1px solid #d9dde3; border-radius: 8px; font-size: 14px; }
.op-card { border: 1px solid #eef0f3; border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; background: #fff; }
.op-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.op-shops { display: flex; flex-wrap: wrap; gap: 6px 14px; }
.op-shop { font-size: 13px; color: #4b5563; cursor: pointer; }
.au-shop-permissions { padding: 7px 9px; margin: 4px 0; border: 1px solid rgba(56, 189, 248, .18); border-radius: 8px; background: rgba(15, 23, 42, .22); }
.au-permission-set { display: flex; flex-wrap: wrap; gap: 5px 10px; margin: 5px 0 0 20px; }
.au-permission-label { font-size: 12px; opacity: .9; }
.au-permission-label:has(input:disabled) { opacity: .42; cursor: not-allowed; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 4px; }
.chip { display: inline-flex; align-items: center; gap: 6px; background: #eef2ff; color: #3b5bdb; border: 1px solid #d6e0ff; border-radius: 16px; padding: 4px 10px; font-size: 13px; }
.chip-count { font-size: 11px; color: #748ffc; }
.chip-x { border: none; background: transparent; color: #3b5bdb; cursor: pointer; font-size: 12px; padding: 0 2px; }
.chip-x:hover { color: #f5222d; }
.card-groups { margin-top: 8px; font-size: 12px; color: #6b7280; }
.card-groups .tag { background: #eef2ff; color: #3b5bdb; }

/* ===== DOM 探测按钮 ===== */
.probe-btn.card-probe { margin-top: 10px; width: 100%; background: #eef2ff; color: #3b5bdb; border: 1px solid #d6e0ff; border-radius: 8px; padding: 8px 0; font-size: 13px; cursor: pointer; }
.probe-btn.card-probe:hover { background: #e0e7ff; }
.probe-btn.card-probe:disabled { opacity: .6; cursor: default; }
.probe-meta { font-size: 13px; color: #4b5563; margin-bottom: 8px; }
.probe-meta code { background: #f1f3f5; padding: 1px 5px; border-radius: 4px; word-break: break-all; }

/* ===== 删除店铺按钮 ===== */
.del-btn.card-del { margin-top: 10px; width: 100%; background: #fff; color: #f5222d; border: 1px solid #ffccc7; border-radius: 8px; padding: 8px 0; font-size: 13px; cursor: pointer; }
.del-btn.card-del:hover { background: #fff1f0; border-color: #f5222d; }

/* ===== 登录成功面板 ===== */
.success-box { text-align: center; padding: 22px 10px 10px; }
.success-icon { font-size: 40px; line-height: 1; }
.success-title { font-size: 17px; font-weight: 600; margin-top: 10px; color: #1f2937; }
.success-sub { font-size: 13px; color: #6b7280; margin-top: 6px; }
.success-actions { display: flex; gap: 10px; justify-content: center; margin-top: 18px; }
.success-actions .btn { min-width: 130px; text-decoration: none; text-align: center; display: inline-flex; align-items: center; justify-content: center; }
#successHint { font-size: 12px; color: #9aa3af; }
/* 通用隐藏（供 warn-box 等动态切换） */
.hidden { display: none !important; }
.warn-box { margin-top: 14px; padding: 10px 12px; border: 1px solid #f4c95d; background: #fff8e6; color: #8a6d1a; border-radius: 8px; font-size: 12.5px; line-height: 1.6; text-align: left; }
.warn-box b { color: #b7791f; }

/* ===== 任务进度内嵌面板 ===== */
.task-inline-panel { margin: 14px 0 6px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--card-bg); box-shadow: var(--shadow); transition: box-shadow .2s; }
.task-inline-panel.active { box-shadow: 0 0 0 3px rgba(22,119,255,.12), var(--shadow-lg); }
.task-inline-panel.hidden { display: none !important; }
.task-inline-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--border); }
.task-inline-title { font-weight: 600; font-size: 15px; color: #1f2329; }
.task-inline-actions { display: flex; align-items: center; gap: 8px; }
.task-inline-controls { display: flex; align-items: center; gap: 8px; flex: 1; justify-content: center; min-width: 0; }
.task-inline-body { padding: 14px 16px; }
.task-inline-panel .task-header { font-size: 13px; }
.task-inline-panel .task-log { max-height: 260px; min-height: 80px; margin-top: 10px; overflow: auto; background: #f7f7f7; padding: 10px; border-radius: 6px; font-size: 12px; line-height: 1.6; white-space: pre-wrap; word-break: break-word; }
.task-inline-panel.minimized .task-inline-body { display: none; }
.task-inline-panel.minimized .task-inline-head { border-bottom: none; }
#taskInlineMinimize::before { content: '收起'; }
.task-inline-panel.minimized #taskInlineMinimize::before { content: '展开'; }

/* ===== UI 增强（v32） ===== */
:root {
  --brand: #1677ff;
  --brand-dark: #0958d9;
  --card-bg: #fff;
  --border: #e6e8eb;
  --shadow: 0 1px 3px rgba(16,24,40,.06), 0 1px 2px rgba(16,24,40,.04);
  --shadow-lg: 0 8px 24px rgba(16,24,40,.10);
  --radius: 12px;
}
.brand { color: var(--brand); letter-spacing: .3px; }
.topbar { box-shadow: var(--shadow); }
.tab { padding: 8px 18px; border-radius: 8px; font-size: 14px; color: #4b5563; cursor: pointer; transition: all .18s; }
.tab:hover { background: #f0f5ff; color: var(--brand); }
.tab.active { background: var(--brand); color: #fff; }
.kpi { background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); padding: 18px 20px; transition: transform .15s, box-shadow .15s; }
.kpi:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); }
.kpi .label { color: #98a0a8; font-size: 13px; }
.kpi .value { font-size: 26px; font-weight: 700; margin-top: 6px; letter-spacing: .5px; }
.kpi .value.red { color: #f5222d; }
.kpi .value.green { color: #1a7f4b; }
.panel { background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); padding: 18px 20px; margin-bottom: 16px; }
.panel h3 { margin: 0 0 12px; font-size: 15px; color: #1f2329; }
.tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.tbl th { background: #fafbfc; color: #4b5563; font-weight: 600; text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--border); white-space: nowrap; }
.tbl td { padding: 10px 12px; border-bottom: 1px solid #f0f1f3; }
.tbl tbody tr:nth-child(even) { background: #fafbfc; }
.tbl tbody tr:hover { background: #f0f5ff; }
.tbl tbody tr.row-warn td { background: #fff7e6; }
.btn { border-radius: 8px; padding: 7px 16px; font-size: 13.5px; border: 1px solid transparent; cursor: pointer; transition: all .15s; }
.btn.primary { background: var(--brand); color: #fff; }
.btn.primary:hover { background: var(--brand-dark); }
.btn.ghost { background: #fff; border-color: #d9dde3; color: #4b5563; }
.btn.ghost:hover { border-color: var(--brand); color: var(--brand); }
.btn.warn { background: #e25454; color: #fff; border-color: #e25454; }
.btn.warn:hover { background: #c33; border-color: #c33; }
/* 时间选择按钮（汇总看板「获取店铺数据」） */
.btn.tr-btn { background: #fff; border: 1px solid #d9dde3; color: #4b5563; }
.btn.tr-btn:hover { border-color: var(--brand); color: var(--brand); }
.btn.tr-btn.active { background: var(--brand); color: #fff; border-color: var(--brand); }
.btn:disabled { opacity: .55; cursor: not-allowed; }
.input, .modal input, .modal select { border: 1px solid #d9dde3; border-radius: 8px; padding: 8px 12px; font-size: 13.5px; outline: none; transition: border-color .15s; }
.input:focus, .modal input:focus, .modal select:focus { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(22,119,255,.12); }
.shop-card { background: var(--card-bg); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); padding: 16px; transition: box-shadow .15s; }
.shop-card:hover { box-shadow: var(--shadow-lg); }
.shop-card.highlight { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(22,119,255,.15); }
.shop-card .name { font-size: 15px; font-weight: 600; color: #1f2329; }
.modal { border-radius: 14px; box-shadow: var(--shadow-lg); }
.modal-head { border-bottom: 1px solid var(--border); }
.modal-title { font-size: 16px; font-weight: 600; }
.toolbar .input { min-height: 34px; }
#statsResult { font-size: 12.5px; }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #d3d8de; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #b8bfc7; }

/* ===== ERP 小工具（v34） ===== */
.erp-block { border: 1px solid var(--border); border-radius: 10px; padding: 14px 16px; margin: 14px 0; background: #fafbfc; }
.erp-block h4 { margin: 0 0 10px; font-size: 14px; color: #1f2329; }
.erp-block code { background: #eef1f5; padding: 1px 6px; border-radius: 4px; font-size: 12px; color: #c0341d; }
.erp-fl { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; color: #5a6573; }
.erp-fl .input { width: 100%; }
#erpResultEmpty { color: #9aa3ad; }
#erpResultTable td .miss { color: #f5222d; }
#erpResultTable td .ok { color: #52c41a; }

/* ============================================================
   全新 UI（v39）：暖橙品牌 + 左侧侧边栏 + 顶栏
   设计 token 覆盖（原 --brand 蓝 → 暖橙）
   ============================================================ */
:root {
  --brand: #F25C1F;
  --brand-dark: #d8440f;
  --brand-strong: #b8430e;
  --brand-soft: #fff1ea;
  --ink-1: #1f2329;
  --ink-2: #4b5563;
  --ink-3: #8a9099;
  --bg: #faf7f2;
  --card-bg: #ffffff;
  --border: #ece7e0;
  --shadow: 0 1px 3px rgba(31, 35, 41, .06), 0 1px 2px rgba(31, 35, 41, .04);
  --shadow-lg: 0 12px 32px rgba(31, 35, 41, .12);
  --radius: 14px;
  --side-w: 236px;
  --font: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", system-ui, sans-serif;
  --font-num: "DIN Alternate", "SF Mono", ui-monospace, Menlo, Consolas, monospace;
}

body { background: var(--bg); }

/* ===== 整体布局 ===== */
.app-shell { display: flex; min-height: 100vh; }

.sidebar {
  position: fixed; top: 0; left: 0; bottom: 0;
  width: var(--side-w);
  background: linear-gradient(180deg, #fff 0%, #fffaf5 100%);
  border-right: 1px solid var(--border);
  display: flex; flex-direction: column;
  padding: 16px 12px;
  z-index: 20;
  box-shadow: 2px 0 12px rgba(31, 35, 41, .04);
}
.side-brand {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 10px 16px;
  font-weight: 800; font-size: 16px; line-height: 1.2;
  color: var(--brand-strong);
}
.side-brand .logo { font-size: 22px; filter: drop-shadow(0 2px 4px rgba(242, 92, 31, .25)); }
.side-name { letter-spacing: .3px; }

.side-nav {
  display: flex; flex-direction: column; gap: 4px;
  flex: 1; overflow-y: auto; padding: 4px 0;
}
.nav-item {
  display: flex; align-items: center; gap: 11px;
  width: 100%; border: none; background: transparent; cursor: pointer;
  padding: 11px 12px; border-radius: 10px;
  font-size: 14px; color: var(--ink-2); text-align: left;
  font-family: var(--font); transition: background .15s, color .15s, box-shadow .15s;
}
.nav-item .ni-ico { font-size: 16px; width: 20px; text-align: center; flex: none; }
.nav-item .ni-txt { white-space: nowrap; }
.nav-item:hover { background: var(--brand-soft); color: var(--brand-strong); }
.nav-item.active {
  background: var(--brand); color: #fff;
  box-shadow: 0 6px 16px rgba(242, 92, 31, .30);
  font-weight: 600;
}
.nav-submenu { display:grid; gap:3px; margin:-1px 0 5px 42px; }
.nav-subitem { appearance:none; border:0; border-radius:7px; background:transparent; color:var(--ink-3); padding:6px 9px; text-align:left; cursor:pointer; font:12px var(--font); transition:background .15s,color .15s; }
.nav-subitem:hover { background:var(--brand-soft); color:var(--brand-strong); }
.nav-subitem.active { background:#fff1ea; color:var(--brand); font-weight:700; }
.side-foot {
  padding: 12px 10px 2px; margin-top: 8px;
  border-top: 1px solid var(--border);
  font-size: 12px; color: var(--ink-3);
}

.main-wrap {
  margin-left: var(--side-w); flex: 1; min-width: 0;
  display: flex; flex-direction: column; min-height: 100vh;
  background: var(--bg);
}
.topbar {
  display: flex; align-items: center; justify-content: space-between;
  height: 60px; padding: 0 26px;
  background: rgba(255, 255, 255, .86);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--border);
  position: sticky; top: 0; z-index: 15;
}
.page-title { font-size: 16px; font-weight: 700; color: var(--ink-1); }
.top-right { display: flex; align-items: center; gap: 14px; }
.icon-btn {
  border: none; background: transparent; font-size: 18px; cursor: pointer;
  width: 36px; height: 36px; border-radius: 9px; transition: background .15s;
}
.icon-btn:hover { background: var(--brand-soft); }
.main {
  flex: 1; padding: 24px 28px 44px;
  max-width: 1280px; width: 100%; margin: 0 auto;
}

/* 视图容器内边距交给 .main，去掉原 .view 自带边距避免叠加 */
.view { padding: 0; max-width: none; margin: 0; }

/* 让 envbar 融入主内容区顶部 */
.envbar { border-radius: 0; border-left: none; border-right: none; }

/* 品牌色微调（覆盖旧蓝） */
.brand { color: var(--brand); }
.dot.order { background: var(--brand); }
.kpi .value.red { color: #f5222d; }
.kpi .value.green { color: #1a7f4b; }
.btn.primary { background: var(--brand); border-color: var(--brand); }
.btn.primary:hover { background: var(--brand-dark); border-color: var(--brand-dark); }
.btn.ghost:hover { border-color: var(--brand); color: var(--brand); }
.btn.tr-btn:hover { border-color: var(--brand); color: var(--brand); }
.btn.tr-btn.active { background: var(--brand); color: #fff; border-color: var(--brand); }
.input:focus, .modal input:focus, .modal select:focus { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(242, 92, 31, .12); }
.radio-chip:hover { border-color: var(--brand); }
.radio-chip input { accent-color: var(--brand); }
.radio-chip:has(input:checked) { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); }
.mtd.active { color: var(--brand); }
.modal-close:hover { color: var(--brand); }
.shop-card.highlight { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(242, 92, 31, .15); }
.tbl tbody tr:hover { background: var(--brand-soft); }
.tbl tbody tr.row-warn td { background: #fff7e6; }

/* 小屏适配 */
@media (max-width: 900px) {
  :root { --side-w: 64px; }
  .side-name, .ni-txt, .side-foot, .nav-submenu { display: none; }
  .nav-item { justify-content: center; padding: 12px 0; }
  .nav-item .ni-ico { font-size: 19px; }
  .main { padding: 18px 14px 36px; }
}

/* 活动管理四步流程 */
.activity-panel { overflow: hidden; }
.activity-heading, .activity-source, .activity-toolbar, .activity-footer, .activity-price-config { display:flex; align-items:center; gap:12px; }
.activity-heading { justify-content:space-between; margin-bottom:16px; }
.activity-heading h3 { margin:0 0 5px; }
.activity-source { padding:14px; border:1px solid var(--border); border-radius:10px; background:#fafbfd; flex-wrap:wrap; }
.activity-source label { display:flex; align-items:center; gap:8px; font-size:13px; font-weight:600; }
.activity-source #activityId { width:320px; }
.activity-steps { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin:22px 0 16px; border-bottom:1px solid var(--border); }
.activity-step { appearance:none; border:0; border-bottom:3px solid transparent; background:transparent; padding:11px 8px 14px; display:flex; gap:9px; align-items:flex-start; text-align:left; cursor:pointer; color:var(--ink-3); font-family:var(--font); }
.activity-step i { display:grid; place-items:center; width:26px; height:26px; border-radius:50%; background:#f1f3f6; color:#8c95a3; font-style:normal; font-size:13px; flex:none; }
.activity-step span { font-size:14px; font-weight:700; line-height:1.45; }.activity-step small { display:block; font-weight:400; font-size:12px; color:#9aa2af; margin-top:2px; }
.activity-step.active { color:var(--brand); border-bottom-color:var(--brand); }.activity-step.active i, .activity-step.done i { background:var(--brand); color:#fff; }.activity-step.done { color:var(--ink-2); }
.activity-stage { min-height:250px; }.activity-toolbar { justify-content:space-between; flex-wrap:wrap; margin-bottom:12px; }.activity-actions, .activity-tabs, .activity-price-modes, .activity-status-filters { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.activity-tabs button, .activity-price-mode, .activity-status-filter { border:1px solid #e3e7ee; background:#fff; border-radius:7px; padding:7px 12px; color:var(--ink-2); font:inherit; font-size:13px; cursor:pointer; }.activity-tabs button.active, .activity-price-mode.active, .activity-status-filter.active { background:var(--brand-soft); color:var(--brand); border-color:#ffd0bd; font-weight:700; }
.activity-tabs b { display:inline-grid; place-items:center; min-width:18px; height:18px; border-radius:9px; background:#eef1f5; font-size:11px; }.activity-tabs button.active b { background:#ffe4d8; }
.activity-actions .input { width:238px; }.activity-summary { padding:9px 12px; margin:8px 0 12px; background:#fff8f5; color:#7c5b4c; border-radius:7px; font-size:12px; }
.activity-table-wrap { overflow:auto; border:1px solid var(--border); border-radius:9px; }.activity-table { width:100%; min-width:800px; border-collapse:collapse; table-layout:auto; font-size:13px; }.activity-table th { text-align:left; background:#f5f7fa; color:#4f5967; padding:12px 10px; font-weight:700; white-space:nowrap; }.activity-table td { padding:12px 10px; border-top:1px solid #eef0f3; vertical-align:middle; color:var(--ink-2); }.activity-table tr:hover td { background:#fffaf8; }.activity-table th:first-child,.activity-table td:first-child { width:34px; text-align:center; }.activity-table b { color:var(--ink-1); font-weight:600; }.activity-row-tags { display:flex; gap:4px; margin-top:5px; flex-wrap:wrap; }.activity-tag { display:inline-block; border-radius:10px; padding:2px 7px; font-size:11px; line-height:16px; background:#f1f3f5; color:#68707d; white-space:nowrap; }.activity-tag.ok { background:#eaf8ef; color:#17834e; }.activity-tag.bad { background:#fff0ef; color:#d9473e; }.activity-tag.wait { background:#fff6df; color:#a66e00; }.activity-tag.muted { font-size:10px; padding:1px 5px; }.activity-empty { padding:34px !important; text-align:center; color:#9ba3ae !important; }.activity-price-config { padding:13px; border:1px solid var(--border); background:#fafbfd; border-radius:9px; flex-wrap:wrap; }.activity-price-config label { display:flex; align-items:center; gap:8px; font-weight:700; font-size:13px; }.activity-price-config .input { width:110px; }.activity-price-preview { color:var(--brand) !important; }.activity-footer { justify-content:center; margin:16px 0 3px; }.activity-footer-top { justify-content:flex-end; margin:12px 0 8px; }.activity-debug { margin-top:16px; color:#6c7480; font-size:12px; }.activity-debug-top { margin:0 0 12px; }.activity-debug summary { cursor:pointer; }.activity-debug #activityLog { white-space:pre-wrap; max-height:220px; overflow:auto; margin-top:8px; padding:10px; border:1px solid var(--border); border-radius:7px; background:#f7f8fa; line-height:1.6; }.copy-msg.error { color:#d9473e; }
@media (max-width:900px) { .activity-steps { grid-template-columns:repeat(2,1fr); }.activity-source #activityId,.activity-actions .input { width:100%; }.activity-source label { width:100%; justify-content:space-between; }.activity-source .input { flex:1; }.activity-toolbar { align-items:flex-start; }.activity-actions { width:100%; }.activity-actions .input { flex:1; } }

/* 优惠券管理：与快手小店“通用转化券”创建页字段对应，仅用于本地预览 */
.coupon-panel { overflow:hidden; }
.coupon-source { display:flex; align-items:center; gap:12px; padding:14px; border:1px solid var(--border); border-radius:10px; background:#fafbfd; flex-wrap:wrap; }
.coupon-source label { display:flex; align-items:center; gap:8px; font-size:13px; font-weight:700; }.coupon-source select { min-width:220px; }
#view-activity.coupon-level3-open { display:grid; grid-template-columns:164px minmax(0,1fr); gap:18px; align-items:stretch; }.activity-content { min-width:0; }
.coupon-level3-rail { position:sticky; top:74px; align-self:start; min-height:calc(100vh - 96px); padding:0 10px; border-right:1px solid var(--border); }.coupon-level3-rail h3 { margin:0 0 12px; padding:2px 4px 12px; color:var(--ink-1); border-bottom:1px solid var(--border); font-size:14px; }.coupon-level3-tab { display:grid; gap:4px; width:100%; margin:4px 0; padding:11px 10px; color:var(--ink-2); text-align:left; border:1px solid transparent; border-radius:8px; background:transparent; cursor:pointer; font:inherit; font-size:13px; font-weight:800; }.coupon-level3-tab small { color:var(--ink-3); font-size:11px; font-weight:500; line-height:1.45; }.coupon-level3-tab.active { color:var(--brand); border-color:var(--border); background:var(--brand-soft); box-shadow:inset 3px 0 0 var(--brand); }.coupon-workbench-actions { display:flex; align-items:center; justify-content:flex-end; gap:9px; flex-wrap:wrap; }
.coupon-source .coupon-batch-size-field { display:grid; grid-template-columns:auto 74px; gap:5px 8px; align-items:center; }.coupon-batch-size-field .input { width:74px; }.coupon-batch-size-field small { grid-column:1 / -1; color:var(--ink-3); font-size:11px; font-weight:500; }
.coupon-layout { display:grid; grid-template-columns:minmax(0,1fr); gap:14px; margin-top:18px; align-items:start; }
.coupon-fold { border:1px solid var(--border); border-radius:10px; background:var(--panel-soft); }.coupon-fold > summary { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; color:var(--ink-1); cursor:pointer; font-size:13px; font-weight:800; list-style:none; }.coupon-fold > summary::-webkit-details-marker { display:none; }.coupon-fold > summary::after { content:'展开'; flex:0 0 auto; color:var(--brand); font-size:12px; font-weight:600; }.coupon-fold[open] > summary { border-bottom:1px solid var(--border); }.coupon-fold[open] > summary::after { content:'收起'; }.coupon-fold > summary small { color:var(--ink-3); font-size:12px; font-weight:500; }.coupon-record-fold { margin-top:16px; }.coupon-record-fold > .coupon-product-workbench { margin-top:10px; }.coupon-preview-fold > .coupon-consumer-preview { position:static; margin:10px; }
.coupon-form { display:grid; gap:12px; }.coupon-section { border:1px solid var(--border); border-radius:10px; padding:14px; background:#fff; }.coupon-section h4 { margin:0 0 13px; font-size:14px; color:var(--ink-1); }
.coupon-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; align-items:end; }.coupon-benefit-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
.coupon-normal-grid { grid-template-columns:repeat(2,minmax(0,1fr)); max-width:560px; margin-top:13px; }.coupon-normal-hint { margin-top:10px; color:var(--ink-3); font-size:12px; }
.coupon-field { display:grid; gap:6px; color:var(--ink-2); font-size:12px; font-weight:600; }.coupon-field .input { width:100%; }.coupon-wide { margin-top:12px; }.coupon-wide textarea { resize:vertical; font:13px var(--font); }
.coupon-toggle { display:flex; align-items:center; gap:7px; color:var(--ink-2); font-size:13px; cursor:pointer; }.coupon-toggle input { accent-color:var(--brand); }.coupon-toggle small { color:var(--ink-3); font-size:12px; font-weight:400; }
.coupon-choice-row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-top:13px; color:var(--ink-2); font-size:13px; }.coupon-choice-row b { color:var(--ink-1); min-width:56px; }.coupon-choice-row label { display:flex; align-items:center; gap:5px; cursor:pointer; }.coupon-choice-row input { accent-color:var(--brand); }
.coupon-inline-panel { display:flex; align-items:end; gap:12px; flex-wrap:wrap; margin:12px 0 0 68px; padding:11px 12px; border:1px dashed var(--border); border-radius:8px; background:var(--panel-soft); }.coupon-inline-panel .coupon-field { min-width:220px; }.coupon-inline-panel small { color:var(--ink-3); font-weight:400; }.coupon-inline-control { display:flex; gap:7px; align-items:center; }.coupon-inline-control .input:first-child { width:210px; }.coupon-inline-control select { width:86px; }.coupon-disabled-option { opacity:.56; cursor:not-allowed !important; }.coupon-excel-panel { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:12px 0 0; }.coupon-excel-dropzone { display:grid; gap:4px; min-width:280px; padding:10px 12px; border:1px dashed var(--border); border-radius:8px; color:var(--ink-2); font-size:12px; cursor:pointer; }.coupon-excel-dropzone input { max-width:100%; font-size:12px; }.coupon-excel-dropzone small { color:var(--ink-3); }.coupon-template-link { text-decoration:none; }.coupon-excel-status { color:var(--ink-3); font-size:12px; }.coupon-excel-status.error { color:var(--danger); }
.coupon-inline-input { display:inline-block !important; width:64px !important; height:28px !important; margin:0 2px; }
.coupon-consumer-preview { position:sticky; top:80px; border:1px solid #ffd6c5; border-radius:13px; padding:18px; background:linear-gradient(145deg,#fff5ef 0%,#fff 55%,#fff8f3 100%); box-shadow:0 10px 24px rgba(196,78,24,.08); }.coupon-preview-badge { display:inline-block; padding:4px 8px; border-radius:12px; background:#ffe2d4; color:var(--brand); font-size:11px; font-weight:700; }.coupon-preview-store { margin-top:14px; color:var(--ink-3); font-size:12px; }.coupon-consumer-preview h4 { margin:7px 0 14px; color:var(--ink-1); font-size:18px; }.coupon-preview-benefit { color:var(--brand); font-size:20px; font-weight:800; }.coupon-preview-threshold { margin-top:5px; color:#8e5a42; font-size:13px; }.coupon-preview-details { margin:18px 0 0; }.coupon-preview-details div { display:flex; justify-content:space-between; gap:10px; padding:8px 0; border-top:1px dashed #f0d4c5; }.coupon-preview-details dt { color:var(--ink-3); font-size:12px; }.coupon-preview-details dd { margin:0; text-align:right; color:var(--ink-2); font-size:12px; max-width:170px; word-break:break-word; }.coupon-preview-note { margin-top:12px; padding:8px; border-radius:7px; background:#fff0e6; color:#a24a20; font-size:12px; line-height:1.5; }.coupon-consumer-preview p { margin:14px 0 0; color:var(--ink-3); font-size:11px; line-height:1.55; }
@media (max-width:900px) { #view-activity.coupon-level3-open { display:block; }.coupon-level3-rail { position:static; min-height:0; display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px; padding:0 0 10px; border-right:0; border-bottom:1px solid var(--border); }.coupon-level3-rail h3 { width:100%; margin-bottom:0; border-bottom:0; }.coupon-level3-tab { flex:1 1 220px; margin:0; }.coupon-layout { grid-template-columns:1fr; }.coupon-consumer-preview { position:static; }.coupon-grid,.coupon-benefit-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }.coupon-source label { width:100%; justify-content:space-between; }.coupon-source select { flex:1; }.coupon-source .coupon-batch-size-field { width:auto; justify-content:start; }.coupon-workbench-heading { display:grid; }.coupon-workbench-actions { justify-content:flex-start; } }
@media (max-width:560px) { .coupon-grid,.coupon-benefit-grid { grid-template-columns:1fr; }.coupon-inline-panel,.coupon-excel-panel { margin-left:0; }.coupon-inline-control .input:first-child,.coupon-inline-panel .coupon-field,.coupon-excel-dropzone { min-width:0; width:100%; } }

/* ============================================================
   UI 统一升级（参考 Tabler Dashboard 的信息层级与组件状态）
   参考项目：github.com/tabler/tabler，MIT License。
   不引入 Bootstrap：保留原有原生 HTML / JS 结构，避免影响离线桌面端。
   ============================================================ */
:root {
  --brand: #206bc4;
  --brand-dark: #1a5aa5;
  --brand-strong: #1d5fac;
  --brand-soft: #eaf2ff;
  --brand-soft-strong: #dceaff;
  --ink-1: #182433;
  --ink-2: #465367;
  --ink-3: #7b8798;
  --bg: #f5f7fb;
  --card-bg: #ffffff;
  --border: #e6eaf0;
  --border-strong: #d9e0ea;
  --shadow: 0 1px 2px rgba(24, 36, 51, .035), 0 2px 8px rgba(24, 36, 51, .035);
  --shadow-lg: 0 12px 28px rgba(24, 36, 51, .10);
  --radius: 12px;
  --side-w: 248px;
}

body {
  min-width: 320px;
  color: var(--ink-1);
  background:
    radial-gradient(circle at 100% -15%, rgba(32,107,196,.055), transparent 28rem),
    var(--bg);
  line-height: 1.5;
}

/* 导航：重点突出当前工作区，降低无关入口的视觉噪音。 */
.sidebar {
  padding: 14px 12px;
  background: #fff;
  border-right-color: var(--border);
  box-shadow: 1px 0 0 rgba(24,36,51,.015);
}
.side-brand {
  min-height: 66px;
  margin: 0 2px 14px;
  padding: 12px 13px;
  gap: 9px;
  color: #fff;
  border-radius: 12px;
  background: linear-gradient(135deg, #206bc4 0%, #3d8bea 100%);
  box-shadow: 0 8px 18px rgba(32,107,196,.20);
}
.side-brand .logo { filter: none; font-size: 22px; }
.side-name { line-height: 1.32; }
.side-nav { gap: 3px; padding: 0 2px; }
.nav-item {
  position: relative;
  padding: 10px 11px;
  border-radius: 8px;
  color: #59677a;
  font-size: 13.5px;
}
.nav-item .ni-ico { opacity: .76; filter: saturate(.8); }
.nav-item:hover { color: var(--brand-strong); background: #f2f6fc; }
.nav-item.active {
  color: var(--brand-strong);
  background: var(--brand-soft);
  box-shadow: none;
  font-weight: 700;
}
.nav-item.active::before {
  position: absolute;
  left: -8px;
  width: 3px;
  height: 18px;
  content: '';
  border-radius: 0 3px 3px 0;
  background: var(--brand);
}
.nav-item.active .ni-ico { opacity: 1; }
.nav-submenu { margin: 1px 0 7px 39px; gap: 2px; }
.nav-subitem { padding: 6px 8px; color: #7a8797; border-radius: 6px; }
.nav-subitem:hover { color: var(--brand-strong); background: #f2f6fc; }
.nav-subitem.active { color: var(--brand-strong); background: var(--brand-soft); }
.side-foot { margin: 10px 2px 0; padding: 12px 10px 2px; color: #98a3b1; }

/* 页面骨架 */
.main-wrap { background: transparent; }
.topbar {
  height: 64px;
  padding: 0 30px;
  background: rgba(255,255,255,.92);
  border-bottom-color: var(--border);
  box-shadow: 0 1px 0 rgba(24,36,51,.025);
}
.page-title { color: var(--ink-1); letter-spacing: -.1px; }
.top-right { gap: 10px; }
.who { color: #68778a; }
.icon-btn { color: #5e6d80; }
.icon-btn:hover { color: var(--brand-strong); background: var(--brand-soft); }
.main { max-width: 1440px; padding: 26px 32px 48px; }
.envbar {
  margin-bottom: 18px;
  padding: 9px 13px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: rgba(255,255,255,.76);
}

/* 数据卡片与容器 */
.kpi-grid { gap: 16px; margin-bottom: 20px; }
.kpi,
.panel,
.shop-card,
.task-inline-panel {
  border-color: var(--border);
  box-shadow: var(--shadow);
}
.kpi {
  position: relative;
  min-height: 108px;
  padding: 18px 19px;
  overflow: hidden;
}
.kpi::after {
  position: absolute;
  right: -24px;
  bottom: -26px;
  width: 84px;
  height: 84px;
  content: '';
  border-radius: 50%;
  background: radial-gradient(circle, rgba(32,107,196,.09), rgba(32,107,196,0) 68%);
}
.kpi:hover { transform: translateY(-1px); }
.kpi .label { color: #7c899a; }
.kpi .value { color: var(--ink-1); font-size: 27px; line-height: 1.2; }
.panel { padding: 20px; margin-bottom: 18px; }
.panel-head { gap: 16px; }
.panel h3 { color: var(--ink-1); font-size: 15px; }
.shop-card { padding: 16px; }
.shop-card:hover { border-color: #d7e4f4; box-shadow: var(--shadow-lg); }
.shop-card .name { color: var(--ink-1); }

/* 按钮、输入和常用操作区保持一致。 */
.btn {
  min-height: 34px;
  padding: 6px 14px;
  border-color: var(--border-strong);
  color: #425166;
  background: #fff;
  box-shadow: 0 1px 1px rgba(24,36,51,.02);
  font-weight: 600;
}
.btn:hover:not(:disabled) { border-color: #bfcce0; color: var(--brand-strong); background: #f9fbfe; }
.btn.primary { color: #fff; background: var(--brand); border-color: var(--brand); }
.btn.primary:hover:not(:disabled) { color: #fff; background: var(--brand-dark); border-color: var(--brand-dark); }
.btn.ghost { border-color: var(--border-strong); }
.btn.warn { background: #d63939; border-color: #d63939; }
.btn.warn:hover:not(:disabled) { background: #bd2f2f; border-color: #bd2f2f; color: #fff; }
.btn:focus-visible,
.nav-item:focus-visible,
.nav-subitem:focus-visible,
.icon-btn:focus-visible,
.input:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 3px solid rgba(32,107,196,.20);
  outline-offset: 1px;
}
.input,
select,
textarea,
.modal input,
.modal select {
  min-height: 34px;
  border-color: var(--border-strong);
  color: var(--ink-1);
  background: #fff;
}
.input:hover,
select:hover,
textarea:hover { border-color: #b8c5d6; }
.input:focus,
select:focus,
textarea:focus,
.modal input:focus,
.modal select:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(32,107,196,.12);
}
.toolbar,
.copy-bar { gap: 10px; }
.copy-bar { padding: 12px; border: 1px solid var(--border); background: #f8faff; }
.hint { color: #7b8798; }

/* 表格：对齐密集运营数据，首行和悬停状态更易扫读。 */
.table-wrap,
.activity-table-wrap { border-color: var(--border); border-radius: 10px; background: #fff; }
.tbl th,
.activity-table th {
  color: #526176;
  background: #f7f9fc;
  border-bottom-color: var(--border);
  font-size: 12.5px;
  letter-spacing: .05px;
}
.tbl td,
.activity-table td { color: #465367; border-bottom-color: #eef1f5; }
.tbl tbody tr:nth-child(even) { background: #fbfcfe; }
.tbl tbody tr:hover,
.tbl tbody tr:hover td,
.activity-table tr:hover td { background: #f3f7fd; }
.badge,
.pill,
.activity-tag { border-radius: 999px; font-weight: 600; }
.badge.online,
.pill.on_shelf,
.activity-tag.ok { background: #eaf7ef; color: #21834e; }
.badge.offline,
.pill.off_shelf { background: #f0f2f5; color: #66758a; }
.badge.expired,
.activity-tag.bad { background: #fff0f0; color: #c23a3a; }

/* 弹窗和多步骤业务页面。 */
.modal { border: 1px solid var(--border); border-radius: 14px; box-shadow: 0 20px 50px rgba(24,36,51,.18); }
.modal-head { padding: 16px 20px; background: #fbfcfe; }
.modal-body { padding: 20px; }
.modal-close:hover { color: var(--brand-strong); }
.activity-source,
.coupon-source,
.activity-price-config { border-color: var(--border); background: #f8faff; }
.activity-steps { margin-top: 24px; }
.activity-step.active { color: var(--brand-strong); border-bottom-color: var(--brand); }
.activity-step.active i,
.activity-step.done i { background: var(--brand); }
.activity-tabs button.active,
.activity-price-mode.active,
.activity-status-filter.active {
  color: var(--brand-strong);
  border-color: #bfd8f6;
  background: var(--brand-soft);
}
.coupon-section { border-color: var(--border); border-radius: 10px; }
.coupon-consumer-preview { border-color: #cfe0f5; background: linear-gradient(145deg,#edf5ff 0%,#fff 58%,#f7fbff 100%); box-shadow: 0 10px 24px rgba(32,107,196,.08); }
.coupon-preview-badge { background: var(--brand-soft); color: var(--brand-strong); }
.coupon-preview-benefit { color: var(--brand); }
.coupon-preview-note { color: #315e95; background: #edf5ff; }

@media (max-width: 900px) {
  .side-brand { justify-content: center; padding: 12px 0; }
  .nav-item.active::before { left: -10px; }
  .topbar { padding: 0 16px; }
  .main { padding: 18px 14px 36px; }
  .envbar { margin-bottom: 14px; }
}

/* ============================================================
   UI v37 · FUTURE COMMERCE OPS
   深空底色 + 青色数据脉冲。业务色仍遵循：青色=可操作，红色=风险。
   ============================================================ */
:root {
  --brand: #4ee8e3;
  --brand-dark: #20c6ce;
  --brand-strong: #8ffff9;
  --brand-soft: rgba(78, 232, 227, .13);
  --brand-soft-strong: rgba(78, 232, 227, .20);
  --ink-1: #ecf7ff;
  --ink-2: #b6c8d8;
  --ink-3: #6e87a1;
  --bg: #07101d;
  --card-bg: rgba(12, 26, 43, .86);
  --border: rgba(118, 170, 205, .20);
  --border-strong: rgba(123, 190, 220, .38);
  --shadow: 0 10px 28px rgba(0, 0, 0, .20), inset 0 1px 0 rgba(209,246,255,.025);
  --shadow-lg: 0 16px 42px rgba(0, 0, 0, .34), 0 0 0 1px rgba(78,232,227,.12);
  --radius: 12px;
}

html { color-scheme: dark; }
body {
  color: var(--ink-1);
  background-color: var(--bg);
  background-image:
    linear-gradient(rgba(75, 162, 208, .045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(75, 162, 208, .045) 1px, transparent 1px),
    radial-gradient(circle at 73% -10%, rgba(40, 119, 184, .23), transparent 31rem),
    radial-gradient(circle at -4% 90%, rgba(73, 36, 157, .16), transparent 32rem);
  background-size: 32px 32px, 32px 32px, auto, auto;
}
body::before {
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  content: '';
  opacity: .28;
  background: linear-gradient(180deg, rgba(13,30,49,.0), rgba(1,5,12,.42));
}
::selection { color: #021117; background: var(--brand); }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: rgba(0,0,0,.18); }
::-webkit-scrollbar-thumb { background: #294861; border: 2px solid #07101d; border-radius: 99px; }
::-webkit-scrollbar-thumb:hover { background: #3f718e; }

/* 主导航：像控制台舱门，当前入口用光条而不是大色块。 */
.sidebar {
  background: linear-gradient(180deg, rgba(8,20,36,.98), rgba(5,13,24,.99));
  border-right-color: rgba(116, 181, 214, .18);
  box-shadow: 12px 0 42px rgba(0,0,0,.18);
}
.sidebar::after {
  position: absolute;
  top: 0;
  right: -1px;
  width: 1px;
  height: 160px;
  content: '';
  background: linear-gradient(180deg, transparent, var(--brand), transparent);
  opacity: .7;
}
.side-brand {
  position: relative;
  overflow: hidden;
  color: #f3feff;
  background: linear-gradient(135deg, #123b63, #145879 62%, #167b89);
  border: 1px solid rgba(128,231,239,.42);
  box-shadow: 0 0 0 1px rgba(78,232,227,.08), 0 12px 28px rgba(0,0,0,.24);
}
.side-brand::after {
  position: absolute;
  inset: 0;
  content: '';
  pointer-events: none;
  background: linear-gradient(120deg, transparent 38%, rgba(170,255,255,.14) 48%, transparent 58%);
}
.side-brand .logo { filter: drop-shadow(0 0 7px rgba(157,255,253,.65)); }
.side-foot { color: #55718a; border-top-color: rgba(118,170,205,.18); }
.nav-item { color: #829bb3; }
.nav-item .ni-ico { filter: grayscale(.35) brightness(1.1); }
.nav-item:hover { color: #d7fbff; background: rgba(77,164,207,.10); }
.nav-item.active {
  color: #dffffc;
  background: linear-gradient(90deg, rgba(78,232,227,.17), rgba(61,127,209,.08));
  box-shadow: inset 0 0 0 1px rgba(78,232,227,.14), 0 0 18px rgba(59,206,217,.07);
}
.nav-item.active::before { background: var(--brand); box-shadow: 0 0 12px var(--brand); }
.nav-subitem { color: #607d97; }
.nav-subitem:hover { color: #c9ffff; background: rgba(78,232,227,.08); }
.nav-subitem.active { color: #aafffb; background: rgba(78,232,227,.12); }

/* 公共控制台容器 */
.main-wrap { background: transparent; }
.topbar {
  background: rgba(7,16,29,.76);
  border-bottom-color: rgba(118,170,205,.18);
  box-shadow: 0 8px 28px rgba(0,0,0,.16);
}
.page-title { color: #e8fbff; letter-spacing: .3px; }
.who { color: #82a3bd; }
.icon-btn { color: #8db0c8; }
.icon-btn:hover { color: var(--brand); background: rgba(78,232,227,.10); }
.envbar {
  color: #9db7cb;
  border-color: rgba(116,182,214,.24);
  background: linear-gradient(90deg, rgba(12,37,54,.72), rgba(12,22,38,.55));
  box-shadow: inset 3px 0 0 var(--brand), var(--shadow);
}
.env-hint { color: #6f8fa8; }
.env-badge.ok { color: #82ffe0; background: rgba(43,180,134,.11); border-color: rgba(83,229,177,.30); }
.env-badge.bad { color: #ff9caa; background: rgba(233,74,93,.12); border-color: rgba(255,113,132,.28); }
.env-badge.pending { color: #ffd788; background: rgba(199,143,31,.12); border-color: rgba(255,205,102,.28); }

.panel,
.kpi,
.shop-card,
.task-inline-panel {
  color: var(--ink-1);
  background: linear-gradient(145deg, rgba(16,34,54,.92), rgba(8,20,35,.92));
  border-color: var(--border);
  box-shadow: var(--shadow);
}
.panel { position: relative; overflow: hidden; }
.panel::before {
  position: absolute;
  top: 0;
  right: 28px;
  width: 72px;
  height: 1px;
  content: '';
  background: linear-gradient(90deg, transparent, var(--brand), transparent);
  opacity: .72;
}
.panel h3,
.panel h4,
.kpi .value,
.shop-card .name { color: var(--ink-1); }
.kpi .label,
.hint,
.muted,
.meta { color: var(--ink-3); }
.kpi { background: linear-gradient(145deg, rgba(19,42,65,.88), rgba(8,22,39,.92)); }
.kpi::after { background: radial-gradient(circle, rgba(78,232,227,.16), rgba(78,232,227,0) 68%); }
.kpi .value.red { color: #ff9baa; }
.kpi .value.green { color: #75f3cb; }

/* 控件：减少白色原生控件，操作按钮像可点击的控制台模块。 */
.btn,
.relogin-btn,
.del-btn,
.probe-btn {
  color: #bfd3e4;
  border-color: rgba(124,181,215,.34);
  background: linear-gradient(180deg, rgba(27,55,80,.88), rgba(15,33,52,.88));
  box-shadow: inset 0 1px 0 rgba(220,249,255,.06), 0 5px 12px rgba(0,0,0,.12);
}
.btn:hover:not(:disabled),
.relogin-btn:hover:not(:disabled),
.probe-btn:hover:not(:disabled) {
  color: #e4ffff;
  border-color: rgba(110,246,241,.70);
  background: linear-gradient(180deg, rgba(29,85,105,.92), rgba(16,47,67,.92));
  box-shadow: 0 0 0 1px rgba(78,232,227,.16), 0 0 18px rgba(78,232,227,.13);
}
.btn.primary {
  color: #03171d;
  background: linear-gradient(135deg, #80fff3, #3ed3e2 56%, #5a9eff);
  border-color: #92fff8;
  box-shadow: 0 0 0 1px rgba(156,255,250,.22), 0 8px 22px rgba(53,218,222,.25);
}
.btn.primary:hover:not(:disabled) { color: #001116; background: linear-gradient(135deg, #c1fffb, #56e9ef 58%, #7bb5ff); }
.btn.ghost { color: #9fc0d6; background: rgba(17,37,57,.72); border-color: rgba(122,176,210,.28); }
.btn.warn,
.del-btn { color: #ffb6be; border-color: rgba(255,94,111,.48); background: rgba(120,29,44,.20); }
.btn.warn:hover:not(:disabled),
.del-btn:hover:not(:disabled) { color: #fff1f2; border-color: #ff7284; background: rgba(163,35,56,.48); }
.input,
input:not([type="checkbox"]):not([type="radio"]),
select,
textarea,
.modal input,
.modal select {
  color: #dceeff;
  border-color: rgba(117,172,206,.32);
  background: rgba(4,15,28,.62);
}
select option { color: #dceeff; background: #0a192a; }
.input:hover,
input:not([type="checkbox"]):not([type="radio"]):hover,
select:hover,
textarea:hover { border-color: rgba(123,223,228,.58); }
.input:focus,
input:not([type="checkbox"]):not([type="radio"]):focus,
select:focus,
textarea:focus,
.modal input:focus,
.modal select:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(78,232,227,.12), 0 0 16px rgba(78,232,227,.08);
}
input[type="checkbox"], input[type="radio"] { accent-color: var(--brand); }

/* 表格与任务日志 */
.table-wrap,
.activity-table-wrap { background: rgba(5,16,29,.42); border-color: var(--border); }
.tbl th,
.activity-table th { color: #91b4cd; background: rgba(28,54,78,.72); border-bottom-color: rgba(117,170,204,.24); }
.tbl td,
.activity-table td { color: #bfd0de; border-bottom-color: rgba(107,153,184,.13); }
.tbl tbody tr:nth-child(even) { background: rgba(21,40,59,.23); }
.tbl tbody tr:hover,
.tbl tbody tr:hover td,
.activity-table tr:hover td { background: rgba(50,113,143,.17); }
.task-inline-panel .task-log,
.task-log { color: #a9e8e8; background: #06121f !important; border: 1px solid rgba(78,232,227,.14); }
.badge.online,
.pill.on_shelf,
.activity-tag.ok { color: #8effd9; background: rgba(43,184,139,.15); border: 1px solid rgba(75,239,175,.18); }

#view-orders { max-width: 1680px; margin: 0 auto; }
#view-orders .order-toolbar { padding: 16px 18px; }
.order-title-icon { display:inline-flex; margin-right:9px; color:#79d8ef; vertical-align:-2px; }
.order-range-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:14px; }
.order-range-btn { border-color:#e2e6eb; background:#fff; color:#596273; }
.order-range-btn.active { border-color:#2f7cf6; background:#edf4ff; color:#1762cf; box-shadow:0 0 0 2px rgba(47,124,246,.08); }
.side-nav .nav-item[data-view="orders"] .ni-ico{color:#76e8f0;text-shadow:0 0 10px rgba(77,231,237,.45)}
.order-cost-settings-modal{width:min(720px,94vw)}.order-cost-settings-form{display:grid;grid-template-columns:1fr 1fr;gap:14px}.order-cost-settings-form label{display:grid;gap:7px}.order-cost-settings-form .wide{grid-column:1/-1}.cost-rule{display:grid;grid-template-columns:1fr 140px 110px 58px;align-items:end;gap:8px;padding:13px;border:1px solid rgba(104,199,221,.2);border-radius:12px;background:rgba(8,27,43,.55)}.cost-rule>span{font-weight:700}.cost-rule small{padding-bottom:10px;color:#8fb2c3}.cost-apply-check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;justify-content:flex-start}.cost-settings-note{padding:10px 12px;border-radius:10px;background:rgba(48,194,190,.08);color:#9fc8d7;font-size:12px}@media(max-width:700px){.order-cost-settings-form{grid-template-columns:1fr}.cost-rule{grid-column:1/-1;grid-template-columns:1fr 1fr}.cost-rule small{padding:0}.order-cost-settings-form .wide{grid-column:1}.order-cost-actions{flex-wrap:wrap}}
#view-orders #orderSearch { min-width: 300px; flex: 1 1 320px; }
#view-orders .kpi-grid { margin: 16px 0; }
#view-orders .tbl th, #view-orders .tbl td { vertical-align: middle; }
#view-orders .tbl tbody tr:hover td { background: rgba(78,232,227,.035); }
#view-orders .ai-report { white-space: pre-wrap; line-height: 1.8; color: var(--ink-2); }
@media (max-width: 900px) { #view-orders #orderSearch { min-width: 100%; } }
.badge.offline,
.pill.off_shelf { color: #9eb5c5; background: rgba(126,147,165,.13); }
.badge.expired,
.activity-tag.bad { color: #ffafbb; background: rgba(233,74,93,.14); }

/* 页面抬头：给“店铺登录 / 跨店复制”明确的任务感。 */
.workspace-hero {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin: -2px 0 19px;
  padding: 2px 0 18px;
  border-bottom: 1px solid rgba(122,181,212,.18);
}
.screen-kicker { display: flex; align-items: center; gap: 7px; color: #6ee7e5; font: 700 10px/1.2 var(--font-num); letter-spacing: 1.05px; }
.screen-kicker span { width: 7px; height: 7px; border-radius: 50%; background: var(--brand); box-shadow: 0 0 10px var(--brand); animation: uiPulse 2.2s ease-in-out infinite; }
.workspace-title { margin-top: 6px; color: #ecfbff; font-size: 23px; font-weight: 800; letter-spacing: .2px; }
.workspace-subtitle { margin-top: 4px; color: #7896ae; font-size: 12.5px; }
.workspace-signal { display: inline-flex; align-items: center; gap: 7px; margin-top: 7px; padding: 6px 9px; color: #9cc6da; border: 1px solid rgba(108,176,211,.24); border-radius: 6px; background: rgba(12,38,57,.56); font: 700 10px/1 var(--font-num); letter-spacing: .65px; white-space: nowrap; }
.workspace-signal i { width: 6px; height: 6px; border-radius: 50%; background: #73ffc8; box-shadow: 0 0 10px #73ffc8; }
@keyframes uiPulse { 0%,100% { opacity:.65; transform:scale(.82); } 50% { opacity:1; transform:scale(1.18); } }

/* 店铺登录：把列表变成状态节点矩阵，诊断操作与日常操作分层。 */
#view-shops .shops-workspace > h3 { display: none; }
#view-shops .shops-workspace > .hint { max-width: 860px; margin: 0 0 10px; color: #7492ab; }
#view-shops #addShopBtn { margin: 1px 0 16px !important; }
#publishCatKw { width: min(440px, 100%) !important; padding: 9px 12px !important; border-radius: 7px !important; }
#view-shops .shop-cards { grid-template-columns: repeat(auto-fill, minmax(296px, 1fr)); gap: 14px; margin-top: 16px; }
#view-shops .shop-card {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(0,1fr);
  gap: 9px;
  padding: 15px;
  overflow: hidden;
  background: linear-gradient(145deg, rgba(17,42,64,.96), rgba(7,20,35,.96));
}
#view-shops .shop-card::before {
  position: absolute;
  top: 0; left: 0; right: 0; height: 2px;
  content: '';
  background: linear-gradient(90deg, transparent, rgba(78,232,227,.85), transparent);
  opacity: .7;
}
#view-shops .shop-card.warn::before { background: linear-gradient(90deg, transparent, #ff6678, transparent); }
#view-shops .shop-card:hover { border-color: rgba(78,232,227,.46); transform: translateY(-2px); }
#view-shops .card-top,
#view-shops .badge,
#view-shops .meta,
#view-shops .card-groups { grid-column: 1 / -1; }
#view-shops .card-top { margin-top: 1px; }
#view-shops .shop-card .name { font-size: 16px; line-height: 1.25; }
#view-shops .shop-card .card-top::before { content: 'SHOP NODE'; color: #63869f; font: 700 9px/1 var(--font-num); letter-spacing: .9px; }
#view-shops .shop-card .badge { width: max-content; margin: 1px 0 2px; padding: 3px 8px; }
#view-shops .shop-card .meta { padding: 10px; border: 1px solid rgba(100,162,199,.17); border-radius: 8px; background: rgba(3,12,23,.36); color: #8ba7bd; font-size: 12px; line-height: 1.8; }
#view-shops .card-groups { margin: 0; color: #6f91aa; }
#view-shops .card-groups .tag { color: #9beeea; background: rgba(78,232,227,.10); border: 1px solid rgba(78,232,227,.18); }
#view-shops .shop-card .relogin-btn,
#view-shops .shop-card .del-btn,
#view-shops .shop-card .probe-btn {
  width: auto;
  min-height: 33px;
  margin: 0;
  padding: 6px 9px;
  border-radius: 7px;
  cursor: pointer;
  font: 600 12px var(--font);
}
#view-shops .shop-card .relogin-btn { color: #05242a; border-color: rgba(120,255,246,.82); background: linear-gradient(135deg, #79fff0, #42d9db); }
#view-shops .shop-card .relogin-btn:hover { color: #01161b; background: #a6fff7; }
#view-shops .shop-card .card-edit { color: #aed1e5; }
#view-shops .shop-card .card-probe { color: #c7b6ff; border-color: rgba(167,130,255,.30); background: rgba(72,46,126,.22); }
#view-shops .shop-card .card-edit-dom,
#view-shops .shop-card .card-publish-dom { color: #9fbed1; }
#view-shops .shop-card .card-del { grid-column: 1 / -1; }

/* 跨店复制：把筛选、派发与数据表分成清晰的三个工作层。 */
#view-products .copy-workspace { background: linear-gradient(145deg, rgba(13,31,52,.96), rgba(7,18,32,.96)); }
#view-products .copy-toolbar {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 9px;
  align-items: end;
  margin: 0 0 13px;
  padding: 13px;
  border: 1px solid rgba(116,180,211,.18);
  border-radius: 10px;
  background: rgba(3,13,25,.38);
}
#view-products .copy-toolbar > label { display: grid; gap: 5px; grid-column: span 2; color: #8facbf; font-size: 12px; font-weight: 600; }
#view-products .copy-toolbar > label:has(#productIdSearch),
#view-products .copy-toolbar > label:has(#productTitleSearch) { grid-column: span 3; }
#view-products .copy-toolbar > label:has(#copyGoodsExportFile) { grid-column: span 5; }
#view-products .copy-toolbar > label select,
#view-products .copy-toolbar > label input { width: 100% !important; min-height: 35px; padding: 7px 9px !important; }
#view-products #refreshProducts { grid-column: span 2; }
#view-products #copyGoodsExportUpload { grid-column: span 2; }
#view-products #copyGoodsExportStatus { grid-column: span 3; min-height: 20px; align-self: center; color: #7de6df; }
#view-products .copy-toolbar > .hint { grid-column: 1 / -1; margin-top: 1px; padding-top: 9px; border-top: 1px dashed rgba(109,166,197,.18); color: #6c8aa2; }
#view-products .copy-control-deck {
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  gap: 10px;
  align-items: center;
  padding: 14px;
  border: 1px solid rgba(78,232,227,.22);
  border-radius: 11px;
  background: linear-gradient(100deg, rgba(25,61,79,.38), rgba(7,21,37,.54));
  box-shadow: inset 0 0 28px rgba(78,232,227,.025);
}
#view-products .copy-control-deck > label { display: flex; align-items: center; gap: 7px; grid-column: span 2; color: #a7c4d4; font-size: 12px; }
#view-products .copy-control-deck > .shop-checklist-field { display: grid; grid-column: span 4; align-items: stretch; }
#view-products .copy-control-deck > label:has(#copyShopConcurrency),
#view-products .copy-control-deck > label:has(#copyShopStartGapSeconds),
#view-products .copy-control-deck > label:has(#copyProductBatchSize),
#view-products .copy-control-deck > label:has(#copyProductSubmitGapSeconds) { grid-column: span 2; }
#view-products .copy-strategy-hint { grid-column: 1 / -1; border: 1px solid #24526b; border-radius: 8px; padding: 9px 12px; color: #cbe7ef; background: rgba(11, 34, 51, .82); line-height: 1.65; font-size: 12px; }
#view-products .copy-strategy-hint.single { border-color: #2a9d8f; background: rgba(19, 74, 76, .36); }
#view-products .copy-strategy-hint.multi { border-color: #4d83b3; background: rgba(24, 61, 95, .4); }
#view-products .copy-strategy-hint.empty { color: #a7c4d4; border-style: dashed; }
#view-products .copy-strategy-hint b { color: #83eee6; }
#view-products .copy-strategy-hint small { display: block; color: #91aebe; }
#view-products .copy-control-deck > label:has(#copyMainImageIndex) { grid-column: span 2; }
#view-products .copy-control-deck > .sep { color: transparent; width: 0; overflow: hidden; }
#view-products .copy-control-deck > .formula-box { grid-column: 1 / -1; }
#view-products #copyBtn { grid-column: span 3; min-height: 38px; }
#view-products #copyMsg { grid-column: span 5; color: #83eee6; }
#view-products #taskListBtn { grid-column: span 2; }
#view-products .formula-box {
  overflow: hidden;
  border: 1px solid rgba(104,163,198,.24);
  border-radius: 8px;
  background: rgba(2,12,23,.30);
}
#view-products .formula-box summary { padding: 10px 12px; cursor: pointer; color: #9dc0d7; font-weight: 700; }
#view-products .formula-box[open] summary { color: #a6fff9; border-bottom: 1px solid rgba(104,163,198,.19); background: rgba(78,232,227,.06); }
#view-products .formula-body { padding: 12px; }
#view-products .formula-row { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; color: #a7becd; font-size: 12px; }
#view-products .formula-row + .formula-row { margin-top: 9px; }
#view-products .copy-table-wrap { margin-top: 14px; box-shadow: inset 0 0 0 1px rgba(78,232,227,.025); }
#view-products .copy-table-wrap::before { display: block; padding: 8px 12px; content: 'PRODUCT DATA STREAM'; color: #6591ad; border-bottom: 1px solid rgba(112,170,202,.16); background: rgba(7,23,39,.74); font: 700 10px/1 var(--font-num); letter-spacing: .95px; }
#view-products .thumb { border-color: rgba(106,197,215,.42); box-shadow: 0 0 12px rgba(78,232,227,.10); }
#view-products .copy-preview-anchor { position: relative; display: flex; align-items: center; gap: 12px; min-width: 330px; padding: 8px 10px; margin: -8px -10px; border: 1px solid transparent; border-radius: 10px; cursor: default; transition: border-color .16s ease, background .16s ease, box-shadow .16s ease; }
#view-products .copy-preview-anchor.has-preview { cursor: zoom-in; }
#view-products .copy-preview-anchor.has-preview:hover { border-color: rgba(78,232,227,.55); background: rgba(78,232,227,.08); box-shadow: 0 0 18px rgba(78,232,227,.12); }
#view-products .copy-preview-thumb { flex: 0 0 auto; line-height: 0; }
#view-products .copy-preview-source-text { min-width: 0; max-width: 360px; line-height: 1.45; }
#view-products .copy-preview-ready { display: inline-flex; margin-top: 6px; padding: 2px 7px; color: #8bfff7; border: 1px solid rgba(78,232,227,.34); border-radius: 999px; background: rgba(78,232,227,.08); font-size: 10px; letter-spacing: .2px; }
.copy-variant-hover-popover { position: fixed; z-index: 10050; box-sizing: border-box; pointer-events: none; padding: 12px; color: #dffaff; border: 1px solid rgba(78,232,227,.58); border-radius: 12px; background: rgba(4,18,32,.98); box-shadow: 0 18px 58px rgba(0,0,0,.48), 0 0 24px rgba(78,232,227,.12); }
.copy-variant-hover-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; padding-bottom: 8px; color: #a9fff8; border-bottom: 1px solid rgba(107,183,210,.22); }
.copy-variant-hover-head span { color: #7899ad; font-size: 11px; }
.copy-variant-hover-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 9px; max-height: min(560px, calc(100vh - 120px)); overflow: hidden; }
.copy-variant-hover-item { display: grid; grid-template-columns: 82px minmax(0,1fr); gap: 10px; min-width: 0; padding: 8px; border: 1px solid rgba(107,183,210,.20); border-radius: 9px; background: rgba(13,38,58,.78); }
.copy-variant-hover-item img,.copy-variant-hover-empty { width: 82px; height: 82px; object-fit: contain; box-sizing: border-box; color: #7899ad; border: 1px solid rgba(130,187,212,.24); border-radius: 7px; background: #fff; }
.copy-variant-hover-empty { display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,.04); font-size: 11px; }
.copy-variant-hover-info { min-width: 0; }
.copy-variant-hover-shop { margin-bottom: 4px; color: #67f4ec; font-weight: 750; font-size: 12px; }
.copy-variant-hover-title { display: -webkit-box; overflow: hidden; color: #e4f4fb; font-size: 12px; line-height: 1.48; -webkit-line-clamp: 3; -webkit-box-orient: vertical; }
.copy-variant-hover-meta { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 7px; }
.copy-variant-hover-meta span { padding: 1px 5px; color: #9eb8c8; border-radius: 999px; background: rgba(106,156,184,.13); font-size: 9px; }
#view-products .sku-summary-box { color: #bbd2e1; border-color: rgba(112,177,210,.25); background: rgba(3,14,26,.72); box-shadow: none; }
#view-products .sku-summary-head { color: #cae5f3; }
#view-products .sku-toggle-btn { color: #a8fffb; background: rgba(78,232,227,.10); }
#view-products .sku-code-edit { color: #d9f8ff; border-color: rgba(127,211,226,.34); background: rgba(1,11,20,.75); }
#view-products .sku-match.ok { color: #7effd8; background: rgba(43,184,139,.14); }
#view-products .sku-match.bad { color: #ffabb7; background: rgba(233,74,93,.14); }

@media (max-width: 1120px) {
  #view-products .copy-toolbar > label,
  #view-products .copy-toolbar > label:has(#productIdSearch),
  #view-products .copy-toolbar > label:has(#productTitleSearch) { grid-column: span 3; }
  #view-products .copy-control-deck > label { grid-column: span 3; }
  #view-products .copy-control-deck > .shop-checklist-field { grid-column: span 6; }
}
@media (max-width: 720px) {
  .copy-variant-hover-grid { grid-template-columns: 1fr; }
  .workspace-hero { align-items: flex-start; flex-direction: column; }
  .workspace-title { font-size: 20px; }
  #view-shops .shop-cards { grid-template-columns: 1fr; }
  #view-products .copy-toolbar { grid-template-columns: 1fr 1fr; }
  #view-products .copy-toolbar > label,
  #view-products .copy-toolbar > label:has(#productIdSearch),
  #view-products .copy-toolbar > label:has(#productTitleSearch),
  #view-products .copy-toolbar > label:has(#copyGoodsExportFile),
  #view-products #refreshProducts,
  #view-products #copyGoodsExportUpload,
  #view-products #copyGoodsExportStatus { grid-column: span 1; }
  #view-products .copy-toolbar > .hint { grid-column: 1 / -1; }
  #view-products .copy-control-deck { grid-template-columns: 1fr 1fr; }
  #view-products .copy-control-deck > label,
  #view-products .copy-control-deck > .shop-checklist-field,
  #view-products #copyBtn,
  #view-products #copyMsg,
  #view-products #taskListBtn { grid-column: span 2; }
}

/* 多店选择统一为明确的复选框列表，保留隐藏 select 作为既有业务逻辑的数据源。 */
.shop-checklist-native { display: none !important; }
.shop-checklist-field { min-width: 220px; color: #a7c4d4; font-size: 12px; }
.shop-checklist-label { flex: 0 0 auto; color: inherit; font-weight: 650; }
.shop-checklist {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 5px 8px;
  width: min(100%, 760px);
  max-height: 168px;
  overflow: auto;
  box-sizing: border-box;
  padding: 8px;
  border: 1px solid rgba(91, 157, 190, .35);
  border-radius: 8px;
  background: rgba(3, 17, 30, .72);
}
.shop-check-option {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  padding: 5px 7px;
  color: #c9e2ef;
  border: 1px solid transparent;
  border-radius: 6px;
  cursor: pointer;
}
.shop-check-option:hover { border-color: rgba(78, 232, 227, .34); background: rgba(78, 232, 227, .07); }
.shop-check-option input { flex: 0 0 auto; margin: 0; accent-color: #2ad4c8; }
.shop-check-option span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.shop-check-option.shop-check-all { grid-column: 1 / -1; color: #83eee6; border-bottom: 1px dashed rgba(91, 157, 190, .30); border-radius: 0; }
.shop-check-option.disabled { opacity: .45; cursor: not-allowed; }
.shop-check-empty { color: #7896a8; padding: 5px 7px; }
#view-manage .toolbar > .shop-checklist-field { flex: 1 1 460px; }
#view-manage .shop-checklist { width: 100%; max-height: 146px; }
#hotShopFilterChecks, #hotCopyShopsChecks { min-width: 300px; max-width: 720px; }

/* ============================================================
   UI v38 · 深色主题可读性补丁
   旧模块保留过浅的块级背景，导致深色主题的浅文字失去对比度。
   以下规则只修正配色与浮层，不改变字段、下拉或按钮行为。
   ============================================================ */

/* 汇总看板：自定义“选择店铺”浮层（原先由内联样式强制白底）。 */
#statsShopToggle {
  color: #e1f8ff !important;
  border-color: rgba(97,233,229,.58) !important;
  background: linear-gradient(180deg, rgba(19,61,78,.96), rgba(8,31,48,.96)) !important;
  box-shadow: 0 0 0 1px rgba(78,232,227,.10), 0 0 16px rgba(78,232,227,.08);
}
#statsShopDropdown {
  color: #d7edf8 !important;
  border: 1px solid rgba(91,224,223,.48) !important;
  background: #091a2c !important;
  box-shadow: 0 16px 32px rgba(0,0,0,.42), 0 0 0 1px rgba(78,232,227,.08) !important;
}
#statsShopOptions { display: grid; gap: 3px; }
#statsShopOptions .stats-shop-option {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 8px;
  color: #c8e2ef;
  border: 1px solid transparent;
  border-radius: 6px;
  cursor: pointer;
  font-size: 13px;
}
#statsShopOptions .stats-shop-option:hover {
  color: #eaffff;
  border-color: rgba(78,232,227,.26);
  background: rgba(78,232,227,.11);
}
#statsShopOptions .stats-shop-option:has(input:checked) {
  color: #adfffa;
  border-color: rgba(78,232,227,.34);
  background: rgba(78,232,227,.13);
}

/* 销售趋势：日期档位 + 店铺多选（复用 tr-btn / stats 下拉视觉，避免 .tr-btn 事件冲突） */
.btn.trend-days-btn { background: #fff; border: 1px solid #d9dde3; color: #4b5563; }
.btn.trend-days-btn:hover { border-color: var(--brand); color: var(--brand); }
.btn.trend-days-btn.active { background: var(--brand); color: #fff; border-color: var(--brand); }
#trendShopToggle {
  color: #e1f8ff !important;
  border-color: rgba(97,233,229,.58) !important;
  background: linear-gradient(180deg, rgba(19,61,78,.96), rgba(8,31,48,.96)) !important;
  box-shadow: 0 0 0 1px rgba(78,232,227,.10), 0 0 16px rgba(78,232,227,.08);
}
#trendShopDropdown {
  color: #d7edf8 !important;
  border: 1px solid rgba(91,224,223,.48) !important;
  background: #091a2c !important;
  box-shadow: 0 16px 32px rgba(0,0,0,.42), 0 0 0 1px rgba(78,232,227,.08) !important;
}
#trendShopOptions { display: grid; gap: 3px; }
#trendShopOptions .stats-shop-option {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 8px;
  color: #c8e2ef;
  border: 1px solid transparent;
  border-radius: 6px;
  cursor: pointer;
  font-size: 13px;
}
#trendShopOptions .stats-shop-option:hover {
  color: #eaffff;
  border-color: rgba(78,232,227,.26);
  background: rgba(78,232,227,.11);
}
#trendShopOptions .stats-shop-option:has(input:checked) {
  color: #adfffa;
  border-color: rgba(78,232,227,.34);
  background: rgba(78,232,227,.13);
}

/* ERP：四个旧 .erp-block 原先固定白底。 */
.erp-block {
  color: #bbd3e1;
  border-color: rgba(113,181,213,.25);
  background: linear-gradient(145deg, rgba(13,34,54,.96), rgba(7,21,37,.96));
  box-shadow: inset 2px 0 0 rgba(78,232,227,.43), 0 10px 24px rgba(0,0,0,.15);
}
.erp-block h4 { color: #e9fbff; }
.erp-block code { color: #ffb1a5; background: rgba(220,83,64,.13); }
.erp-block .erp-fl { color: #91aec2; }
.erp-block .hint { color: #7795ac; }
.erp-block textarea,
.erp-block input,
.erp-block select { color: #d9f5ff; background: rgba(4,17,30,.72); }
#erpResultTable td .miss { color: #ff9eaa; }
#erpResultTable td .ok { color: #8dffd8; }

/* 活动管理：来源条、定价条、四步导航与表格全部维持深色层级。 */
.activity-panel { color: #c8dce8; }
.activity-source,
.activity-price-config {
  color: #bad1df;
  border-color: rgba(111,184,216,.26);
  background: linear-gradient(100deg, rgba(15,44,64,.88), rgba(7,22,38,.88));
}
.activity-source label,
.activity-price-config label { color: #b4cddd; }
.activity-source .input,
.activity-price-config .input { color: #d9f8ff; background: rgba(4,16,29,.72); }
.activity-step { color: #7693aa; }
.activity-step i { color: #b9cedd; background: #1c3851; border: 1px solid rgba(111,181,215,.22); }
.activity-step small { color: #60819b; }
.activity-step.active,
.activity-step.done { color: #cefaff; }
.activity-step.active i,
.activity-step.done i { color: #02171e; background: var(--brand); box-shadow: 0 0 13px rgba(78,232,227,.38); }
.activity-steps { border-bottom-color: rgba(111,181,215,.20); }
.activity-tabs button,
.activity-price-mode,
.activity-status-filter {
  color: #a7c3d4;
  border-color: rgba(107,173,207,.28);
  background: rgba(8,23,39,.76);
}
.activity-tabs button:hover,
.activity-price-mode:hover,
.activity-status-filter:hover { color: #e3ffff; border-color: rgba(78,232,227,.48); }
.activity-tabs button.active,
.activity-price-mode.active,
.activity-status-filter.active {
  color: #a9fffa;
  border-color: rgba(78,232,227,.48);
  background: rgba(78,232,227,.14);
}
.activity-tabs b { color: #91b0c7; background: rgba(93,133,160,.22); }
.activity-tabs button.active b { color: #b9fffb; background: rgba(78,232,227,.20); }
.activity-summary { color: #b4d8e8; background: rgba(24,84,108,.22); }
.activity-table-wrap { background: rgba(4,15,28,.66); }
.activity-table th { color: #a8c8dc; background: #132f47; }
.activity-table td { color: #c6dce9; }
.activity-tag { color: #9db9ca; background: rgba(111,139,160,.16); }
.activity-tag.wait { color: #ffe29a; background: rgba(192,137,28,.16); }
.activity-debug { color: #87a5ba; }
.activity-debug #activityLog { color: #a8e3e8; border-color: rgba(78,232,227,.18); background: #061321; }

/* 优惠券：左侧参数卡片和右侧预览卡片均改为深色，避免白底白字。 */
.coupon-panel { color: #bed2e0; }
.coupon-source {
  color: #b9d0df;
  border-color: rgba(110,181,213,.28);
  background: linear-gradient(100deg, rgba(15,45,65,.90), rgba(7,21,38,.92));
}
.coupon-source label { color: #b9d2e1; }
.coupon-source select { color: #e3fbff; background: rgba(4,16,30,.76); }
.coupon-section {
  color: #bcd2e1;
  border-color: rgba(105,177,211,.25);
  background: linear-gradient(145deg, rgba(14,34,54,.97), rgba(7,20,35,.97));
  box-shadow: inset 2px 0 0 rgba(78,232,227,.30);
}
.coupon-section h4 { color: #eaffff; }
.coupon-field,
.coupon-toggle,
.coupon-choice-row { color: #b9d1df; }
.coupon-field .input,
.coupon-wide textarea,
.coupon-inline-input { color: #e3faff; background: rgba(3,15,28,.74); }
.coupon-toggle small,
.coupon-normal-hint { color: #7897af; }
.coupon-choice-row b { color: #d4ebf6; }
.coupon-consumer-preview {
  color: #bed7e5;
  border-color: rgba(84,214,218,.42);
  background: linear-gradient(145deg, rgba(11,43,61,.98), rgba(7,22,39,.98));
  box-shadow: inset 0 0 36px rgba(78,232,227,.04), 0 14px 30px rgba(0,0,0,.22);
}
.coupon-consumer-preview h4 { color: #effdff; }
.coupon-preview-store,
.coupon-consumer-preview p { color: #7898ae; }
.coupon-preview-threshold { color: #a8cadb; }
.coupon-preview-details div { border-top-color: rgba(102,186,209,.20); }
.coupon-preview-details dt { color: #7596ae; }
.coupon-preview-details dd { color: #d3eff7; }
.coupon-preview-note { color: #a6d8eb; border: 1px solid rgba(90,185,219,.20); background: rgba(37,101,132,.18); }
.coupon-level3-rail { border-right-color:rgba(102,181,210,.25); }.coupon-level3-rail h3 { color:#e2fbff; border-bottom-color:rgba(102,181,210,.25); }
.coupon-level3-tab { color:#93b1c4; }.coupon-level3-tab small { color:#648197; }.coupon-level3-tab.active { color:#79f3e7; border-color:rgba(78,232,227,.32); background:linear-gradient(145deg,rgba(18,66,83,.82),rgba(9,29,47,.9)); box-shadow:inset 3px 0 0 #4ee8e3,0 0 18px rgba(78,232,227,.06); }.coupon-batch-size-field small { color:#7596ae; }
.coupon-fold { border-color:rgba(90,182,212,.28); background:rgba(5,22,37,.6); }.coupon-fold > summary { color:#d8f4fb; }.coupon-fold > summary small { color:#7698ad; }.coupon-fold[open] > summary { border-bottom-color:rgba(90,182,212,.25); }.coupon-fold > summary::after { color:#70f4de; }
.coupon-workbench-actions { color:#b8d7e6; }

/* 商品维度优惠券工作台：数据、筛选与创建配置分离，避免误把全店券当成部分商品券。 */
.coupon-product-workbench {
  margin-top: 16px;
  padding: 16px;
  color: #c5dce8;
  border: 1px solid rgba(89,202,213,.33);
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(12,42,59,.97), rgba(6,20,36,.98));
  box-shadow: inset 0 0 30px rgba(78,232,227,.035);
}
.coupon-workbench-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; }
.coupon-workbench-heading h4 { margin:0; color:#edffff; font-size:16px; }
.coupon-workbench-heading p { margin:7px 0 0; color:#7fa2b7; font-size:12px; line-height:1.55; max-width:760px; }
.coupon-product-summary { flex:0 0 auto; padding:8px 10px; color:#64f3df; border:1px solid rgba(78,232,227,.3); border-radius:8px; background:rgba(29,167,174,.12); font-size:12px; font-weight:700; }
.coupon-product-toolbar, .coupon-product-import { display:flex; align-items:end; gap:10px; flex-wrap:wrap; margin-top:14px; }
.coupon-product-toolbar label, .coupon-product-import label { display:grid; gap:6px; color:#9cb9ca; font-size:12px; font-weight:700; }
.coupon-product-toolbar select { min-width:150px; }
.coupon-product-search { flex:1 1 250px; }.coupon-product-search .input { width:100%; }
.coupon-product-import label { flex:1 1 430px; }.coupon-product-import textarea { min-height:36px; resize:vertical; color:#e7fbff; background:rgba(2,13,26,.72); }
.coupon-product-table-wrap { max-height:480px; overflow:auto; margin-top:14px; border:1px solid rgba(96,174,206,.27); border-radius:9px; }
.coupon-product-table { width:100%; min-width:900px; border-collapse:collapse; font-size:12px; }
.coupon-product-table th { position:sticky; top:0; z-index:1; padding:11px 10px; color:#bce1ee; text-align:left; background:#14354e; border-bottom:1px solid rgba(109,193,218,.28); white-space:nowrap; }
.coupon-product-table td { padding:10px; color:#cbe0e9; vertical-align:top; border-bottom:1px solid rgba(95,159,188,.16); }
.coupon-product-table tbody tr:hover { background:rgba(43,142,166,.13); }
.coupon-product-table input[type="checkbox"] { accent-color:#4ee8e3; }
.coupon-product-title { color:#effdff; font-weight:700; }.coupon-product-sub { margin-top:4px; color:#7398ae; }
.coupon-status { display:inline-block; padding:3px 7px; border-radius:999px; font-size:11px; font-weight:800; }.coupon-status.covered { color:#6ff7dc; border:1px solid rgba(91,244,213,.35); background:rgba(37,174,153,.15); }.coupon-status.uncovered { color:#a9c1d0; border:1px solid rgba(135,166,183,.23); background:rgba(104,131,151,.12); }
.coupon-benefit-list { display:grid; gap:5px; min-width:150px; }.coupon-benefit-item { color:#f6d98b; line-height:1.35; }.coupon-benefit-item small { display:block; color:#759bb0; }
.coupon-kind-list { display:flex; flex-wrap:wrap; gap:5px; min-width:74px; }.coupon-kind { display:inline-flex; align-items:center; min-height:22px; padding:0 7px; border:1px solid rgba(136,169,188,.35); border-radius:999px; color:#b5cad5; background:rgba(109,135,153,.13); white-space:nowrap; font-size:11px; font-weight:800; }.coupon-kind.store { color:#78f1e5; border-color:rgba(74,231,216,.42); background:rgba(35,178,165,.14); }.coupon-kind.product { color:#e7b9ff; border-color:rgba(210,128,255,.43); background:rgba(145,71,192,.16); }.coupon-kind.unknown { color:#f5d58b; border-color:rgba(236,187,79,.4); background:rgba(185,126,23,.14); }.coupon-scope-list { display:grid; gap:4px; color:#a9c9d8; }.coupon-coverage-notice { min-height:18px; margin-top:10px; color:#83a7ba; font-size:12px; }.coupon-coverage-notice.error { color:#ffb5ab; }
.coupon-product-empty { padding:24px !important; color:#7e9daf !important; text-align:center; }
@media (max-width:760px) { .coupon-workbench-heading { display:grid; }.coupon-product-summary { justify-self:start; }.coupon-product-toolbar, .coupon-product-import { align-items:stretch; }.coupon-product-toolbar label, .coupon-product-import label { width:100%; }.coupon-product-toolbar .btn, .coupon-product-import .btn { width:100%; } }

/* 旧式浅色说明、登录弹窗与普通选择框的对比兜底。 */
.modal,
.modal-head,
.modal-body { color: #d8edf7; background: #0b1c2f; }
.modal-head { border-bottom-color: rgba(111,181,215,.20); }
.modal-title,
.success-title { color: #effdff; }
.form-row label,
.mtd-pane label,
.account-type-label { color: #b4cbd9; }
.warn-box { color: #ffdb8b; border-color: rgba(255,203,101,.35); background: rgba(165,113,16,.17); }

@media (max-width: 720px) {
  #statsShopDropdown { min-width: min(260px, calc(100vw - 40px)) !important; }
}

/* 店铺登录：统一改为行式清单，避免多店铺卡片造成操作分散。 */
#view-shops .shop-list-wrap {
  margin-top: 10px;
  overflow: auto;
  border: 1px solid rgba(102,176,210,.27);
  border-radius: 12px;
  background: rgba(3,14,28,.42);
}
#view-shops .shop-list-table { width: 100%; min-width: 1100px; border-collapse: collapse; }
#view-shops .shop-list-table th {
  position: sticky; top: 0; z-index: 1;
  padding: 12px 14px; color: #a9c9dc; text-align: left; white-space: nowrap;
  background: #112d46; border-bottom: 1px solid rgba(116,192,221,.30); font-size: 12px;
}
#view-shops .shop-list-table td {
  padding: 13px 14px; color: #c9dfeb; vertical-align: middle;
  border-bottom: 1px solid rgba(96,163,195,.16); font-size: 12px; line-height: 1.45;
}
#view-shops .shop-list-table tbody tr:hover { background: rgba(47,146,174,.12); }
#view-shops .shop-list-table .shop-row.warn { background: rgba(175,57,69,.10); }
#view-shops .shop-list-table .shop-row.highlight { box-shadow: inset 3px 0 0 #58f3df; background: rgba(60,173,169,.12); }
#view-shops .shop-list-table b { color: #effdff; font-size: 13px; }
#view-shops .shop-id-cell { color: #8fc5df; font-family: var(--font-num); white-space: nowrap; }
#view-shops .shop-row-groups { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 5px; }
#view-shops .shop-row-groups .tag { color: #a0f6e9; border-color: rgba(78,232,227,.23); background: rgba(47,167,165,.13); }
#view-shops .shop-row .new-flag { display: inline-block; margin-left: 6px; color: #73fff0; font-size: 10px; }
#view-shops .shop-row-actions { display: flex; min-width: 282px; gap: 6px; flex-wrap: wrap; }
#view-shops .shop-row-action {
  min-height: 29px; padding: 4px 9px; color: #c4dfec; cursor: pointer; font: 600 12px var(--font);
  border: 1px solid rgba(124,181,215,.34); border-radius: 6px; background: rgba(22,52,76,.78);
}
#view-shops .shop-row-action:hover:not(:disabled) { color: #eeffff; border-color: rgba(109,246,241,.7); background: rgba(26,83,100,.9); }
#view-shops .shop-row-action.card-open-backend { color: #8effef; border-color: rgba(77,224,207,.42); background: rgba(18,112,108,.20); }
#view-shops .shop-row-action.danger { color: #ffb1ba; border-color: rgba(250,114,129,.36); background: rgba(142,44,58,.16); }
#view-shops .shop-row-action.urgent { color: #1a333a; border-color: #9affe8; background: #6ff0dd; }
#view-shops .shop-list-empty { padding: 36px !important; color: #7fa0b4 !important; text-align: center; }
.form-err.success { color: #66e7a8; }
@media (max-width: 720px) { #view-shops .shop-row-actions { min-width: 245px; } }

/* Tabler Icons：以本地 MIT 图标替换导航 emoji，避免字体平台差异并统一科技界面。 */
.side-brand .logo.ti {
  display: inline-grid;
  place-items: center;
  width: 24px;
  height: 24px;
  font-size: 22px;
}
.nav-item .ni-ico.ti {
  display: inline-grid;
  place-items: center;
  width: 20px;
  height: 20px;
  font-size: 18px;
  line-height: 1;
  filter: none;
}
.nav-item:hover .ni-ico.ti,
.nav-item.active .ni-ico.ti {
  text-shadow: 0 0 12px rgba(125, 255, 248, .55);
}
/* ===== Unified account and module-permission center ===== */
.account-center{position:relative;overflow:hidden}
.account-center:before{content:"";position:absolute;inset:0 0 auto;height:2px;background:linear-gradient(90deg,#22d3ee,#8b5cf6,transparent)}
.account-center-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:16px}
.account-center-head h3{margin:3px 0 6px}.eyebrow{font-size:10px;letter-spacing:.18em;color:#67e8f9;font-weight:700}
.account-role-summary{white-space:nowrap;border:1px solid rgba(34,211,238,.38);background:rgba(8,145,178,.1);color:#67e8f9;border-radius:999px;padding:7px 12px;font-size:12px}
.account-create-card,.account-password-card{border:1px solid rgba(96,165,250,.2);border-radius:12px;background:rgba(6,20,37,.46);padding:0 14px;margin:12px 0}
.account-create-card>summary,.account-password-card>summary{cursor:pointer;padding:13px 0;font-weight:700;color:var(--text,#e5edf8)}
.account-create-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;padding:2px 0 12px}
.account-create-grid label,.account-inline-config>label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted,#94a3b8)}
.account-config-block{border-top:1px solid rgba(148,163,184,.12);padding:12px 0}.account-config-block>.hint{margin-left:10px}
.account-check-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:9px}
.account-check{display:flex;align-items:center;gap:8px;border:1px solid rgba(148,163,184,.16);border-radius:8px;padding:8px 10px;background:rgba(15,23,42,.4);cursor:pointer;font-size:12px}
.account-check:has(input:checked){border-color:rgba(34,211,238,.46);background:rgba(8,145,178,.12);color:#a5f3fc}
.account-create-actions{display:flex;justify-content:flex-end;padding:0 0 14px}.account-list-toolbar{display:flex;justify-content:space-between;align-items:center;margin:18px 0 9px}
.account-table td{vertical-align:top}.account-id{display:block;color:var(--muted,#64748b);font-size:10px;margin-top:4px;max-width:190px;overflow:hidden;text-overflow:ellipsis}
.account-module-tags{display:flex;flex-wrap:wrap;gap:4px}.account-module-tags span{font-size:10px;padding:3px 6px;border-radius:999px;background:rgba(99,102,241,.14);color:#c7d2fe;border:1px solid rgba(129,140,248,.2)}
.account-actions{display:flex;gap:5px;flex-wrap:wrap;min-width:230px}.account-actions .danger{color:#fda4af;border-color:rgba(244,63,94,.3)}
.account-config-row td{background:rgba(2,13,26,.58)!important}.account-inline-config{display:grid;gap:14px;padding:12px}.account-inline-config>.account-check-grid{margin-top:7px}
.account-empty{padding:24px;text-align:center;border:1px dashed rgba(148,163,184,.2);border-radius:10px}.ks-api-bind-target{min-width:120px;margin-right:6px}
@media(max-width:900px){.account-create-grid{grid-template-columns:1fr 1fr}.account-center-head{flex-direction:column}.account-actions{min-width:160px}}
@media(max-width:560px){.account-create-grid{grid-template-columns:1fr}.account-check-grid{grid-template-columns:1fr}.account-table{min-width:900px}}

/* 商品管理筛选态：保持深色主题，避免筛选后浅色背景与浅色文字撞色。 */
#view-manage .manage-stale-filter{display:inline-flex;align-items:center;gap:5px;padding:5px 8px;border:1px solid transparent;border-radius:8px;color:#c9dbea;transition:background .18s,border-color .18s,box-shadow .18s}
#view-manage .manage-stale-filter.manage-filter-active{border-color:rgba(103,232,249,.58);background:rgba(8,145,178,.16);color:#e6fbff;box-shadow:0 0 14px rgba(34,211,238,.12)}
#view-manage #manageStaleDays{color:#e6fbff;background:rgba(2,12,23,.86);border:1px solid rgba(103,232,249,.38);border-radius:5px;padding:3px 5px}
#view-manage #manageProductIdSearch{color:#e6fbff;background:rgba(2,12,23,.86);border-color:rgba(103,232,249,.38)}
#view-manage .manage-filter-hint{display:inline-block;padding:5px 9px;border-radius:999px;background:rgba(16,185,129,.13);border:1px solid rgba(52,211,153,.35);color:#99f6e4;font-size:11px;white-space:nowrap}
#view-manage .manage-filter-hint.hidden{display:none}
#view-manage .table-wrap{background:rgba(3,14,27,.78);border-color:rgba(103,232,249,.22)}
#view-manage #manageTable{color:#d8edf8;background:transparent}
#view-manage #manageTable th{color:#a9d4e9;background:rgba(22,53,78,.92);border-color:rgba(125,211,252,.2)}
#view-manage #manageTable td{color:#d3e7f3;background:transparent;border-color:rgba(148,163,184,.14)}
#view-manage #manageTable tbody tr{background:rgba(6,24,42,.58)}
#view-manage #manageTable tbody tr:nth-child(even){background:rgba(12,38,61,.54)}
#view-manage #manageTable tbody tr:hover,#view-manage #manageTable tbody tr:hover td{background:rgba(14,116,144,.34);color:#f2fcff}
#view-manage #manageTable tbody tr.manage-stale-row,#view-manage #manageTable tbody tr.manage-stale-row td{background:rgba(127,40,55,.34);color:#ffe9ec}
#view-manage #manageTable .manage-sku-input{color:#e7f8ff!important;background:rgba(2,12,23,.9)!important}
#view-manage #manageTable td[style*="text-align:center"]{color:#9fb8c9!important}

/* 汇总看板：仪表盘布局，保留原有数据和交互，仅提升层级与可读性。 */
#view-dashboard.dashboard-workspace{position:relative;isolation:isolate}
#view-dashboard.dashboard-workspace::before{position:absolute;inset:0 -24px auto;height:180px;z-index:-1;content:"";pointer-events:none;background:radial-gradient(circle at 76% 0,rgba(52,211,230,.14),transparent 45%),linear-gradient(180deg,rgba(17,53,79,.2),transparent)}
#view-dashboard #kpiGrid{grid-template-columns:repeat(6,minmax(140px,1fr));gap:12px}
#view-dashboard .kpi{min-height:104px;padding:16px 17px;border-radius:12px;background:linear-gradient(145deg,rgba(19,57,81,.92),rgba(7,24,42,.95));border-color:rgba(104,211,232,.25);box-shadow:0 10px 25px rgba(0,0,0,.2),inset 0 1px 0 rgba(194,252,255,.06)}
#view-dashboard .kpi::before{position:absolute;left:0;top:0;width:3px;height:100%;content:"";background:linear-gradient(180deg,#6effee,transparent);opacity:.8}
#view-dashboard .kpi .label{color:#91b6cc;text-transform:uppercase;letter-spacing:.08em;font-size:11px}
#view-dashboard .kpi .value{color:#e4fbff;font-size:28px;text-shadow:0 0 16px rgba(116,243,255,.12)}
#view-dashboard .kpi .value.green{color:#75f3cb}.dashboard-workspace .panel{border-radius:14px;background:linear-gradient(145deg,rgba(13,35,56,.92),rgba(6,18,33,.95));border-color:rgba(102,176,212,.22)}
#view-dashboard .panel-head h3,#view-dashboard .panel>h3{letter-spacing:.04em;color:#e4f9ff}
#view-dashboard .legend{color:#9bc2d7}
#view-dashboard .toolbar{border:1px solid rgba(95,172,207,.13);border-radius:10px;padding:8px 10px;background:rgba(2,14,27,.34)}
#view-dashboard .toolbar .input{color:#dff8ff;background:rgba(3,18,32,.72);border-color:rgba(108,190,220,.3)}
@media(max-width:1100px){#view-dashboard #kpiGrid{grid-template-columns:repeat(3,minmax(140px,1fr))}}
@media(max-width:620px){#view-dashboard #kpiGrid{grid-template-columns:repeat(2,minmax(130px,1fr))}}

/* Agent is part of the software login flow, so employees have one clear entry point. */
.login-agent-setup{margin-top:16px;padding:14px;border:1px solid rgba(34,211,238,.38);border-radius:12px;background:linear-gradient(135deg,rgba(8,47,73,.72),rgba(30,41,59,.56));box-shadow:0 0 22px rgba(34,211,238,.08)}
.login-agent-setup h4{margin:5px 0 4px;color:#e0f2fe}.login-agent-setup p{margin:0;color:#a5b4fc;font-size:12px;line-height:1.55}.login-agent-kicker{color:#67e8f9;font-size:10px;letter-spacing:.18em;font-weight:700}.login-agent-status{margin:11px 0;padding:8px 10px;border-radius:7px;background:rgba(2,6,23,.48);color:#fbbf24;font-size:12px}.login-agent-status.ok{color:#5eead4}.login-agent-status.bad{color:#fda4af}.login-agent-actions{display:flex;gap:8px;flex-wrap:wrap}.login-agent-setup .hint{margin-top:9px;font-size:11px}

/* 跨店复制执行器：三种模式共用一块紧凑面板，避免设备选择散落在价格与图片设置中。 */
#view-products .copy-execution-panel{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(330px,1fr) minmax(260px,1fr);gap:10px;align-items:center;padding:11px 12px;border:1px solid rgba(82,224,218,.24);border-radius:10px;background:linear-gradient(100deg,rgba(10,42,61,.78),rgba(12,29,49,.74))}
#view-products .copy-execution-title{font-weight:700;color:#dffbff;white-space:nowrap}
#view-products .copy-execution-modes{display:flex;gap:7px;flex-wrap:wrap}
#view-products .copy-execution-modes .radio-chip{margin:0;padding:7px 10px;color:#a9c8d9;background:rgba(3,17,30,.58);border-color:rgba(114,184,213,.28)}
#view-products .copy-execution-modes .radio-chip:has(input:checked){color:#9effef;border-color:rgba(91,242,226,.65);background:rgba(20,118,113,.22);box-shadow:0 0 13px rgba(55,232,217,.1)}
#view-products .copy-agent-picker{grid-column:1/-1}
#view-products .copy-agent-picker.hidden{display:none}
#view-products .copy-agent-picker label{display:grid;grid-template-columns:80px 1fr;align-items:center;gap:8px;color:#a9c8d9}
#view-products #copyAgentIds{min-height:72px;color:#dcf8ff;background:rgba(2,13,24,.9);border-color:rgba(100,210,220,.32)}
#view-products #copyAgentIds option{padding:4px 7px}
#view-products .copy-agent-summary{display:flex;justify-content:flex-end;align-items:center;gap:8px;color:#91d9d2;font-size:11px}
@media(max-width:900px){#view-products .copy-execution-panel{grid-template-columns:1fr}.copy-agent-summary{justify-content:flex-start!important}}
.task-child-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px;margin-top:10px;width:100%}
.task-child{display:grid;grid-template-columns:1fr auto;gap:3px 8px;padding:7px 9px;border:1px solid rgba(122,176,205,.2);border-radius:7px;background:rgba(4,20,34,.62);font-size:11px}
.task-child b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#d9eff8}.task-child span{color:#9bc3d3}.task-child small{grid-column:1/-1;color:#f9a8b5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.task-child.running{border-color:rgba(250,204,21,.42)}.task-child.done{border-color:rgba(52,211,153,.35)}.task-child.failed,.task-child.needs_human{border-color:rgba(251,113,133,.45)}
.btn.danger{background:#b4232f;border-color:#b4232f;color:#fff}.btn.danger:hover{background:#951c27;border-color:#951c27}
.order-filter-row{display:flex;align-items:center;justify-content:space-between;gap:18px}.order-filter-fields,.order-primary-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.order-filter-fields{flex:1}.order-filter-fields #orderSearch{min-width:280px;flex:1}.order-more{position:relative}.order-more>summary{list-style:none;cursor:pointer}.order-more>summary::-webkit-details-marker{display:none}.order-more>div{position:absolute;right:0;top:calc(100% + 8px);z-index:30;background:#fff;border:1px solid #e8e9ed;border-radius:12px;box-shadow:0 16px 36px rgba(31,38,55,.13);padding:8px;display:grid;gap:6px;min-width:140px}.order-row{cursor:pointer}.order-row:hover{background:#faf7f3}.order-drawer{position:fixed;inset:0;z-index:1000}.order-drawer-backdrop{position:absolute;inset:0;border:0;background:rgba(22,26,35,.34)}.order-drawer aside{position:absolute;right:0;top:0;bottom:0;width:min(720px,94vw);background:#f8f8fa;padding:24px;overflow:auto;box-shadow:-18px 0 45px rgba(19,25,39,.15)}.order-detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.order-detail-card{background:#fff;border:1px solid #ececf0;border-radius:14px;padding:14px}.order-detail-card small{display:block;color:#858894;margin-bottom:6px}.order-cost-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;background:#fff;border:1px solid #ececf0;border-radius:14px;padding:16px;margin-top:16px}.order-cost-form label{display:grid;gap:6px}.order-cost-form .wide{grid-column:1/-1}.order-cost-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px}.order-line-list{display:grid;gap:10px}.order-line{background:#fff;border:1px solid #ececf0;border-radius:12px;padding:13px;display:grid;grid-template-columns:1fr auto;gap:10px}.order-line .muted{font-size:12px}@media(max-width:760px){.order-filter-row{align-items:stretch;flex-direction:column}.order-filter-fields{display:grid;grid-template-columns:1fr 1fr}.order-filter-fields #orderSearch{grid-column:1/-1;min-width:0}.order-primary-actions{justify-content:flex-end}.order-detail-grid{grid-template-columns:1fr 1fr}.order-cost-form{grid-template-columns:1fr}}
