:root {
  --bg: #f5f6f8;
  --panel: #ffffff;
  --border: #e6e8ec;
  --text: #1f2329;
  --muted: #8a919f;
  --primary: #fe2c55;
  --primary-2: #25f4ee;
  --ok: #1aa179;
  --bad: #e5484d;
  --warn: #f5a623;
  --shop1: #1677ff;
  --shop2: #fa8c16;
  --shop3: #52c41a;
  --radius: 12px;
  --shadow: 0 2px 12px rgba(20, 24, 40, 0.06);
}
* { box-sizing: border-box; }
body {
  margin: 0; font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg); color: var(--text); font-size: 14px;
}
.hidden { display: none !important; }
.muted { color: var(--muted); }
.err { color: var(--bad); margin-top: 8px; }

/* 登录 */
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg,#ff3c68 0%,#ff5f56 100%); }
.login-card { background:#fff; padding:40px 36px; border-radius:16px; width:340px; box-shadow:0 20px 60px rgba(0,0,0,.25); text-align:center; }
.login-logo { font-size:40px; }
.login-card h1 { font-size:20px; margin:12px 0 4px; }
.login-card input { width:100%; padding:12px; margin:14px 0 6px; border:1px solid var(--border); border-radius:8px; font-size:15px; }

/* 顶栏 */
.topbar { position: sticky; top:0; z-index:50; background:#fff; border-bottom:1px solid var(--border); padding:10px 20px; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.brand { font-size:17px; font-weight:700; }
.brand .sub { font-size:12px; color:var(--muted); font-weight:400; margin-left:6px; }
.topbar-right { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.badge { padding:3px 10px; border-radius:20px; font-size:12px; font-weight:600; }
.badge.dry { background:#fff3d6; color:#b8860b; }
.badge.live { background:#e6f7ef; color:var(--ok); }
.shop-tabs { display:flex; gap:4px; }
.shop-tabs button, .nav-btn { border:1px solid var(--border); background:#fff; color:var(--text); padding:6px 12px; border-radius:8px; cursor:pointer; font-size:13px; }
.shop-tabs button.active { background:var(--text); color:#fff; border-color:var(--text); }
.nav { display:flex; gap:4px; }
.nav-btn.active { background:var(--primary); border-color:var(--primary); color:#fff; }

/* P3 样品审核页内部子导航 */
.board-subnav { background:#fff; border-bottom:1px solid var(--border); padding:8px 20px; display:flex; gap:6px; flex-wrap:wrap; }
.board-subnav.hidden { display:none; }
.sub-tab { border:1px solid var(--border); background:#fff; color:var(--text); padding:5px 14px; border-radius:8px; cursor:pointer; font-size:13px; }
.sub-tab.active { background:var(--text); color:#fff; border-color:var(--text); }

.view { padding:16px 20px; max-width:1440px; margin:0 auto; }
/* P3 审核页大屏加宽：中间审核卡片利用两侧多余空间（左右面板宽度保持不变） */
#view-board.view { max-width:1760px; }

/* 统计条 */
.stat-bar { display:flex; gap:12px; flex-wrap:wrap; }
.stat { background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); padding:12px 20px; flex:1; min-width:110px; text-align:center; box-shadow:var(--shadow); }
.stat span { display:block; font-size:26px; font-weight:700; }
.stat label { font-size:12px; color:var(--muted); }
.stat.ok span{color:var(--ok);} .stat.bad span{color:var(--bad);} .stat.warn span{color:var(--warn);}
.stat.stat-filter.multi { flex:0 0 auto; min-width:0; padding:8px 14px; font-size:13px; color:#5f6b7a; cursor:pointer; }
.stat.stat-filter.multi:hover { border-color:#9aa3b0; }
.stat.stat-filter.multi.active { border-color:#5f6b7a; background:#f4f6f9; }

/* 批量多选操作条 */
.multi-bar { margin-top:10px; background:var(--panel); border:1px solid #ffb3a7; border-radius:var(--radius); padding:8px 12px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; box-shadow:var(--shadow); }
.multi-count { font-size:13px; color:var(--muted); margin-right:4px; }
.multi-count b { color:var(--bad); font-size:15px; }
.multi-check { padding:2px 0 0 2px; }
.multi-check label.chk { font-size:12px; color:var(--muted); cursor:pointer; display:inline-flex; align-items:center; gap:5px; }
.multi-check input[type=checkbox] { width:16px; height:16px; cursor:pointer; }
.multiCheckToggleMultiline { display:block; }

/* ====== 底部悬浮多选操作区 ====== */
#fabMultiZone {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 60;
  display: flex; justify-content: center; align-items: flex-end;
  padding: 0 12px 12px; pointer-events: none;
}
#fabMultiZone > * { pointer-events: auto; }

/* 未多选时的悬浮入口按钮 */
.fab-entry {
  pointer-events: auto;
  background: var(--text); color: #fff; border: none; border-radius: 28px;
  padding: 12px 28px; font-size: 15px; font-weight: 600; cursor: pointer;
  box-shadow: 0 6px 24px rgba(0,0,0,.18), 0 2px 8px rgba(0,0,0,.10);
  transition: transform .15s, box-shadow .15s;
  margin-bottom: 4px;
}
.fab-entry:hover { transform: translateY(-2px); box-shadow: 0 8px 28px rgba(0,0,0,.22); }
.fab-entry:active { transform: translateY(0); }

/* 多选时的底部操作条 */
.fab-bar {
  background: var(--panel); border: 1px solid #ffb3a7; border-radius: 16px;
  padding: 10px 18px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  justify-content: center;
  box-shadow: 0 -4px 24px rgba(0,0,0,.10), 0 2px 12px rgba(0,0,0,.06);
  max-width: 600px; width: 100%;
  margin-bottom: 2px;
}
.fab-count { font-size: 13px; color: var(--muted); margin-right: 4px; white-space: nowrap; }
.fab-count b { color: var(--bad); font-size: 15px; }
.fab-reject { font-weight: 600; }

/* 窄屏适配 */
@media (max-width: 640px) {
  .fab-entry { padding: 10px 22px; font-size: 14px; }
  .fab-bar { padding: 8px 12px; gap: 6px; border-radius: 12px; }
  .fab-bar .btn-sm { padding: 5px 8px; font-size: 12px; }
  .fab-count { font-size: 12px; }
}

/* 页面底部留白，防止悬浮栏遮挡内容 */
body { padding-bottom: 70px; }

/* 配额条 */
.quota-row { margin-top:14px; background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); padding:12px 16px; display:flex; align-items:center; gap:20px; flex-wrap:wrap; box-shadow:var(--shadow); }
.quota-title { font-weight:600; white-space:nowrap; }

.sync-box { display:flex; align-items:center; gap:8px; margin-left:auto; }
.sync-status { font-size:13px; color:var(--muted); }
.sync-status.ok{color:var(--ok);} .sync-status.err{color:var(--bad);} .sync-status.running{color:var(--warn);}
/* 自动拒绝总开关三态 */
#btnAutoReject { white-space:nowrap; }
#btnAutoReject.ar-off { color:#6b7280; border:1px solid #d4d7dd; background:#f6f7f9; }
#btnAutoReject.ar-arm { color:#b45309; border:1px solid #f2d189; background:#fff7e6; }
#btnAutoReject.ar-live { color:#b91c1c; border:1px solid #f3b3b3; background:#fdecec; font-weight:600; }
/* 今日已发送 */
.sent-item { display:inline-flex; align-items:baseline; gap:6px; background:#fff; border:1px solid var(--border); border-radius:8px; padding:6px 12px; font-size:13px; }
.sent-item b { color:var(--primary); font-size:16px; }
.sent-item.muted { border-style:dashed; color:var(--muted); }
.sent-item.muted b { display:none; }
/* 今日已发送：按商品分组，商品主图 + 组内 SKU */
.sent-prod { display:flex; align-items:center; gap:10px; }
.sent-prod-img { width:44px; height:44px; border-radius:8px; object-fit:cover; border:1px solid var(--border); background:#f6f7f9; flex:none; }
.sent-prod-img.noimg { background:linear-gradient(135deg,#eceef2,#f6f7f9); }
.sent-prod-img.noimg::before { content:"无图"; font-size:11px; color:#b7bcc6; display:flex; align-items:center; justify-content:center; height:100%; }
.sent-prod-skus { display:flex; gap:6px; flex-wrap:wrap; max-width:560px; }
/* 左侧样品发放统计侧边栏 */
.board-layout { display:flex; gap:16px; align-items:flex-start; }
.sent-sidebar { width:440px; flex:none; display:flex; flex-direction:column; gap:12px; position:sticky; top:70px; max-height:calc(100vh - 90px); overflow:auto; }
.sent-sidebar-block { background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); padding:10px 12px; box-shadow:var(--shadow); }
.sent-sidebar-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.ss-title { font-size:13px; font-weight:600; }
.ss-total { font-size:13px; font-weight:700; color:var(--primary); background:#ffecef; border-radius:10px; padding:1px 8px; }
.sent-prod { display:flex; align-items:flex-start; gap:8px; padding:6px 0; }
.sent-sidebar-block .sent-prod { border-bottom:1px dashed #f0f1f4; }
.sent-sidebar-block .sent-prod:last-child { border-bottom:none; }
.sent-prod-right { display:flex; flex-direction:column; gap:4px; min-width:0; }
.sent-prod-total { font-size:14px; font-weight:700; color:var(--text); }
.sent-sidebar .sent-prod-skus { display:flex; flex-direction:column; align-items:flex-start; max-width:none; gap:4px; }
/* 商品行折叠/展开：默认收起，只显主图+合计；点击展开 SKU */
.sent-prod.collapsed { cursor:pointer; }
.sent-prod.sent-prod { border-radius:8px; padding:6px; margin:0 -6px; transition:background .15s; }
.sent-prod.collapsed:hover { background:#f6f7f9; }
.sent-prod-summary { display:flex; align-items:center; justify-content:space-between; gap:6px; }
.sent-prod-arrow { display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px; border:1px solid var(--border); border-radius:50%; font-size:12px; line-height:1; color:var(--muted); background:#fff; flex:none; }
.sent-prod.collapsed .sent-prod-skus { display:none; }
.sent-sidebar-block .sent-prod.collapsed { border-bottom:1px dashed #f0f1f4; }
.sent-sidebar-block .sent-prod:last-child { border-bottom:none; }
.sent-prod:focus-visible { outline:2px solid var(--primary); outline-offset:1px; }

/* 分区 Tab */
/* 顶部统计卡片筛选 */
button.stat-filter { font:inherit; cursor:pointer; transition:border-color .15s, box-shadow .15s, transform .05s; }
button.stat-filter:hover { border-color:#c2c7d0; }
button.stat-filter:active { transform:translateY(1px); }
button.stat-filter.active { border-color:#22272e; box-shadow:0 0 0 2px rgba(34,39,46,.12), var(--shadow); }
button.stat-filter.ok.active { border-color:var(--ok); box-shadow:0 0 0 2px rgba(26,161,121,.18), var(--shadow); }
button.stat-filter.bad.active { border-color:var(--bad); box-shadow:0 0 0 2px rgba(229,72,77,.18), var(--shadow); }
button.stat-filter.warn.active { border-color:var(--warn); box-shadow:0 0 0 2px rgba(245,166,35,.22), var(--shadow); }

/* 卡片 */
.card-list { margin-top:16px; display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:14px; }
.card { position:relative; background:var(--panel); border:1px solid var(--border); border-left:5px solid var(--muted); border-radius:var(--radius); padding:14px 16px; box-shadow:var(--shadow); }
.card.dec-approve { border-left-color:var(--ok); }
.card.dec-reject { border-left-color:var(--bad); }
.card.dec-manual { border-left-color:var(--warn); }
.card-head { display:flex; justify-content:space-between; align-items:center; gap:8px; }
.card-user { font-weight:700; font-size:15px; }
.card-shop { font-size:11px; padding:2px 8px; border-radius:10px; color:#fff; }
.card-shop.shop1{background:var(--shop1);} .card-shop.shop2{background:var(--shop2);} .card-shop.shop3{background:var(--shop3);}
.card-shop.shop1{background:var(--shop1);} .card-shop.shop2{background:var(--shop2);} .card-shop.shop3{background:var(--shop3);}
.card-shop.shop1{background:var(--shop1);} .card-shop.shop2{background:var(--shop2);} .card-shop.shop3{background:var(--shop3);}
.metrics { display:flex; gap:12px; margin:8px 0 4px; align-items:stretch; }
.metric { display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; min-width:0; padding:6px 4px; background:#fafbfc; border:1px solid #eef0f3; border-radius:8px; overflow:hidden; }
.metric .mv { font-weight:700; font-size:12.5px; line-height:1.3; text-align:center; width:100%; min-width:0; overflow-wrap:anywhere; } .metric .ml { font-size:10px; color:var(--muted); text-align:center; margin-top:2px; }
.metrics-left { flex:1; min-width:0; display:grid; gap:6px; grid-template-columns:repeat(3,1fr); align-items:stretch; }
.metrics-right { width:96px; flex:0 0 96px; display:flex; flex-direction:column; gap:10px; justify-content:center; align-items:center; }
.chart-row { display:flex; align-items:center; justify-content:center; }
.donut { width:68px; height:68px; border-radius:50%; flex:0 0 68px; position:relative; }
.donut-hole { position:absolute; top:17px; left:17px; right:17px; bottom:17px; background:#fff; border-radius:50%; display:flex; align-items:center; justify-content:center; }
.donut-label { font-size:11px; font-weight:600; color:var(--muted); }
.donut-empty { font-size:11px; color:var(--muted); width:100%; text-align:center; }
.cgv-wrap { display:flex; flex-wrap:wrap; gap:2px 4px; justify-content:center; width:100%; }
.cgv { font-size:11px; line-height:1.3; white-space:nowrap; }
.cgv-video { color:#2563eb; }
.cgv-live { color:#ea8a3a; }
/* 右侧信息栏容器（今日已发放面板 + 全局图例，固定于看板右侧，滚动可见） */
.board-right { width:220px; flex:none; display:flex; flex-direction:column; gap:12px; position:sticky; top:70px; max-height:calc(100vh - 90px); overflow-y:auto; }

/* 今日已发放面板（纯文本紧凑列表，右侧信息栏顶部） */
.today-panel { background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); padding:10px 12px; box-shadow:var(--shadow); flex:none; }
.today-panel-title { font-size:13px; font-weight:700; color:var(--text); margin-bottom:8px; }
.today-panel-list { display:flex; flex-direction:column; gap:2px; max-height:360px; overflow:auto; }
.today-panel-row { display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:12px; line-height:1.5; }
.today-panel-code { display:flex; align-items:center; gap:6px; color:var(--text); flex:1; min-width:0; }
.today-panel-name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; min-width:0; }
.today-panel-noquota { flex:none; font-size:11px; color:#8a919f; border:1px solid #e3e6eb; background:#f6f7f9; border-radius:4px; padding:0 5px; line-height:1.4; white-space:nowrap; }
.today-panel-num { flex:none; font-weight:600; color:var(--text); font-variant-numeric:tabular-nums; }
.today-panel-num.sent { color:var(--primary); }
.today-panel-num.over { color:var(--bad); }
.today-panel-over { flex:none; font-weight:700; color:var(--bad); font-size:11px; white-space:nowrap; }
.today-panel-empty { font-size:12px; color:var(--muted); padding:2px 0; }
.today-panel-total { margin-top:8px; padding-top:8px; border-top:1px dashed var(--border); font-size:12px; color:var(--muted); display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.today-panel-total b { font-weight:700; color:var(--text); font-variant-numeric:tabular-nums; }

/* 左侧「今日配额」总表（纯文本列表 + 合计，位于面板标题下、卡片区上） */
.quota-today-summary { background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:8px 10px; box-shadow:var(--shadow); margin-bottom:10px; flex:none; }
.quota-today-title { font-size:12px; font-weight:700; color:var(--muted); margin-bottom:5px; }
.quota-today-note { font-size:11px; color:var(--muted); margin:-2px 0 6px; line-height:1.4; }

/* 右侧「今日已发放」图卡面板 */
.today-cards { display:flex; flex-direction:column; gap:6px; max-height:360px; overflow:auto; }
.today-card { display:flex; align-items:center; gap:8px; background:#fafbfc; border:1px solid #eef0f3; border-radius:10px; padding:6px 8px; }
.today-card-img { width:32px; height:32px; border-radius:6px; object-fit:cover; border:1px solid var(--border); background:#f6f7f9; flex:none; }
.today-card-img.noimg { background:linear-gradient(135deg,#eceef2,#f6f7f9); }
.today-card-meta { display:flex; flex-direction:column; gap:1px; min-width:0; flex:1; }
.today-card-name { font-size:12px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.today-card-num { font-size:12px; font-weight:700; color:var(--primary); }
.today-card-total { margin-top:8px; padding-top:8px; border-top:1px dashed var(--border); font-size:12px; color:var(--muted); font-weight:600; }

/* 全局图例面板（随右侧容器滚动） */
.legend-bar { width:100%; flex:none; background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); padding:10px 12px; box-shadow:var(--shadow); display:none; }
.legend-bar.show { display:block; }
.legend-block { margin-bottom:12px; }
.legend-block:last-child { margin-bottom:0; }
.legend-title { font-size:11px; font-weight:700; color:var(--muted); margin-bottom:6px; }
.legend-item { display:flex; align-items:center; gap:6px; font-size:11px; line-height:1.7; color:var(--text); }
.legend-item .dot { width:9px; height:9px; border-radius:2px; flex:0 0 9px; }
@media (max-width: 560px) {
  .metrics { flex-direction:column; }
  .metrics-right { width:100%; flex-basis:auto; flex-direction:row; flex-wrap:wrap; gap:10px; }
  .chart-row { justify-content:flex-start; }
}
.product { display:flex; align-items:flex-start; gap:10px; font-size:13px; margin:8px 0; padding:8px; background:#fafbfc; border:1px solid #eef0f3; border-radius:8px; }
.product-imgs { display:flex; gap:8px; flex:none; }
.pimg { margin:0; display:flex; flex-direction:column; align-items:center; gap:2px; width:52px; }
.pimg img { width:52px; height:52px; object-fit:cover; border-radius:8px; background:#f0f1f4; }
.pimg figcaption { font-size:9px; line-height:1; color:var(--muted); }
.pm-dual { display:flex; gap:12px; flex-wrap:wrap; padding-top:2px; }
.product-noimg { width:52px; height:52px; display:flex; align-items:center; justify-content:center; background:#f0f1f4; border-radius:8px; font-size:22px; color:var(--muted); flex:none; }
.product-info { flex:1; min-width:0; display:flex; flex-direction:column; gap:4px; }
.product-info .pi-row, .pi-product, .pi-sku { display:flex; align-items:baseline; gap:6px; min-width:0; }
.pi-label { font-size:10px; color:#fff; background:#8a919f; border-radius:4px; padding:1px 5px; flex:none; font-weight:600; }
.pi-sku .pi-label { background:#1677ff; }
.pi-pid { color:#1f2329; font-size:12px; word-break:break-all; }
.pi-seller { color:#1677ff; font-size:13px; word-break:break-all; }
.pi-pending { color:#b8860b; font-size:12px; font-weight:600; background:#fff5e0; border-radius:4px; padding:1px 6px; }
.pi-spec { font-size:11px; color:var(--muted); }
.user-name { cursor:default; }
/* 用户名联盟后台外链：可点击 + 悬浮显示外链小箭头 */
a.user-name.aff-link { color:inherit; text-decoration:none; cursor:pointer; border-bottom:1px dashed transparent; }
a.user-name.aff-link:hover { color:#1677ff; border-bottom-color:#1677ff; }
a.user-name.aff-link::after { content:""; display:inline-block; width:9px; height:9px; margin-left:3px; vertical-align:0; opacity:0; background:no-repeat center/contain url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231677ff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M14 5h5v5'/><path d='M19 5l-9 9'/><path d='M19 13v5a1 1 0 0 1-1 1H6a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h5'/></svg>"); transition:opacity .15s; }
a.user-name.aff-link:hover::after { opacity:1; }
.copy-btn { display:inline-flex; align-items:center; justify-content:center; width:18px; height:16px; margin-left:4px; padding:0; border:1px solid #d6d9de; background:#fff; border-radius:4px; color:#8a919f; cursor:pointer; vertical-align:1px; line-height:1; }
.copy-btn svg { display:block; }
.copy-btn:hover { color:#1677ff; border-color:#1677ff; background:#f0f7ff; }
.tt-link { display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px; margin-left:4px; font-size:12px; font-weight:700; line-height:1; color:#8a919f; text-decoration:none; border:1px solid #d6d9de; border-radius:4px; vertical-align:1px; }
.tt-link:hover { color:#fe2c55; border-color:#fe2c55; }
.profile-link { color:#1677ff; text-decoration:none; }
.profile-link:hover { text-decoration:underline; }
.tags { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0; }
.tag { font-size:11px; padding:2px 8px; border-radius:10px; background:#f0f1f4; }
.tag.fire { background:#fff0f0; color:#e5484d; } .tag.live { background:#eaf2ff; color:#1677ff; }
.tag.quota { background:#fff5e0; color:#b8860b; } .tag.cross { background:#f3e7ff; color:#7c3aed; }
.tag.note { background:#e9f7f0; color:#1aa179; }
/* 达人历史合作档案区（紧凑，位于商品块下方、理由上方） */
.profile { display:flex; align-items:center; flex-wrap:wrap; gap:6px; margin:8px 0; padding:7px 9px; background:#fbf4ff; border:1px solid #f0e6fb; border-radius:8px; font-size:12px; }
.profile-title { font-weight:700; color:#7c3aed; }
.profile-tier { font-size:11px; padding:1px 8px; border-radius:10px; color:#fff; font-weight:700; flex:none; }
.profile-new { font-size:12px; color:#7c3aed; font-weight:600; }
.profile-item { display:inline-flex; align-items:baseline; gap:4px; }
.profile-item i { font-style:normal; font-size:11px; color:var(--muted); }
.profile-item b { font-weight:700; }
.profile-cur { color:#e5484d; font-size:11px; font-weight:600; }
.profile-ls-pending { color:#8a919f; font-style:italic; }
.profile-cross { font-size:11px; color:#7c3aed; background:#f3e7ff; padding:1px 6px; border-radius:10px; cursor:pointer; position:relative; }
.profile-cross .cross-pop { display:none; position:absolute; left:0; top:calc(100% + 6px); z-index:60; min-width:230px; background:#fff; border:1px solid #e3d9f5; border-radius:8px; box-shadow:0 8px 24px rgba(0,0,0,.14); padding:8px 10px; }
.profile-cross.show .cross-pop { display:block; }
.cross-pop .cs-item { padding:4px 0; border-bottom:1px dashed #f0e6fb; font-size:12px; }
.cross-pop .cs-item:last-child { border-bottom:none; }
.cross-pop .cs-item > b { color:#7c3aed; font-size:12px; }
.cross-pop .cs-kv { display:inline-flex; align-items:baseline; gap:4px; margin-right:10px; font-size:12px; }
.cross-pop .cs-kv i, .cross-pop .cs-sku i { font-style:normal; color:var(--muted); font-size:11px; }
.cross-pop .cs-sku { margin-top:2px; font-size:12px; color:#333; }
.profile-rejected { font-size:11px; color:#cf1322; background:#fff1f0; border:1px solid #ffccc7; padding:1px 8px; border-radius:10px; }
.sku-option-img { width:22px; height:22px; border-radius:5px; object-fit:cover; vertical-align:middle; margin-right:6px; background:#f0f1f4; }
.sku-chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.sku-chip { display:inline-flex; align-items:center; gap:5px; padding:3px 7px 3px 3px; border:1px solid #dfe1e6; border-radius:16px; background:#fff; cursor:pointer; font-size:12px; }
.sku-chip:hover { border-color:#1677ff; box-shadow:0 0 0 1px rgba(22,119,255,.2); }
.sku-chip img { width:26px; height:26px; border-radius:6px; object-fit:cover; background:#f0f1f4; }
.sku-chip-noimg { width:26px; height:26px; display:inline-flex; align-items:center; justify-content:center; background:#f0f1f4; border-radius:6px; }
.sku-chip-name { color:#1677ff; }
.tier-rule-card { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:10px; padding:10px 12px; background:linear-gradient(0deg,#fffbe6,#fffbe6); border:1px solid #ffe58f; border-radius:8px; }
.tier-rule-main { display:flex; align-items:center; flex-wrap:wrap; gap:8px; font-size:13px; }
.tier-rule-badge { font-size:11px; font-weight:700; color:#ad6800; background:#fff1b8; border-radius:10px; padding:2px 8px; }
.board-shop-bar { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.board-search { position:relative; display:inline-flex; align-items:center; margin-left:auto; }
.board-search input { padding:5px 26px 5px 10px; font-size:13px; border:1px solid #dfe1e6; border-radius:16px; width:210px; outline:none; background:#fff; }
.board-search input:focus { border-color:var(--primary,#fe2c55); }
.board-search .search-clear { position:absolute; right:6px; border:none; background:none; color:#8a919f; cursor:pointer; font-size:15px; line-height:1; padding:2px; }
.board-search .search-clear:hover { color:#1f2329; }
.reasons { margin-top:8px; padding:8px 10px; background:#fafbfc; border-radius:8px; font-size:12px; line-height:1.7; }
.reasons ul { margin:0; padding-left:16px; }
.review-box { margin-top:10px; }
.review-box label { font-size:12px; color:var(--muted); display:block; margin-bottom:4px; }
.inline { display:flex; gap:6px; flex-wrap:wrap; }
.review-box input, .review-box select { padding:7px 8px; border:1px solid var(--border); border-radius:8px; font-size:13px; }
.btn { padding:8px 14px; border:none; border-radius:8px; cursor:pointer; font-size:13px; background:#f0f1f4; color:var(--text); }
.btn-primary { background:var(--ok); color:#fff; }
.btn-danger { background:var(--bad); color:#fff; }
.btn-warn { background:var(--warn); color:#fff; }
/* 待定：中性浅灰描边风格，与通过绿/拒绝红/修改橙区分 */
.btn-hold { background:#fff; color:#5f6b7a; border:1px solid #c7cdd6; }
.btn-hold:hover { background:#f2f4f7; border-color:#aeb6c2; }
.tag.holdtag { background:#eef1f5; color:#5f6b7a; border:1px solid #d3d9e2; }
.stat.stat-filter.hold { color:#5f6b7a; }
.stat.stat-filter.hold.active { border-color:#9aa3b0; background:#f4f6f9; }
.btn-sm { padding:5px 10px; font-size:12px; }
.btn-block { width:100%; margin-top:8px; }
.card-done { margin-top:8px; padding:8px; background:#f6f8fa; border-radius:8px; font-size:12px; color:var(--muted); }

/* 已建议修改（MODIFY）卡片：橙色提示，区别于通过/拒绝 */
.card-modify { margin-top:8px; padding:10px; background:#fff8ec; border:1px solid #fbe0b3; border-left:4px solid var(--warn); border-radius:8px; display:flex; flex-direction:column; gap:4px; }
.card-modify .modify-badge { font-size:13px; font-weight:700; color:#b8740f; }
.card-modify .modify-sku { font-size:12px; color:#5f4a22; }
.card-modify .modify-time { font-size:11px; color:var(--muted); }

/* 已有决策（真实/空跑模拟）：按钮禁用置灰 */
.review-box.disabled-zone .btn[disabled] { opacity:.45; cursor:not-allowed; pointer-events:none; filter:grayscale(.3); }

/* 提交 loading：转圈 */
#modalConfirm:disabled { opacity:.7; cursor:not-allowed; }
#modalCancel:disabled { opacity:.5; cursor:not-allowed; }
.spinner {
  display:inline-block; width:14px; height:14px; vertical-align:-2px; margin-right:6px;
  border:2px solid rgba(255,255,255,.45); border-top-color:#fff; border-radius:50%;
  animation:spin .7s linear infinite;
}
#modalConfirm .spinner { border-color:rgba(255,255,255,.45); border-top-color:#fff; }
@keyframes spin { to { transform:rotate(360deg); } }

/* 决策蒙版：白色半透明覆盖整张卡 */
.card-mask {
  position:absolute; inset:0; z-index:20; border-radius:var(--radius);
  background:rgba(255,255,255,.82);
  -webkit-backdrop-filter:blur(1px); backdrop-filter:blur(1px);
  display:flex; align-items:center; justify-content:center; padding:12px;
}
.card-mask .mask-inner { text-align:center; display:flex; flex-direction:column; align-items:center; gap:4px; max-width:100%; }
.card-mask .mask-icon {
  width:46px; height:46px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:24px; font-weight:700; color:#fff; line-height:1;
}
.card-mask .mask-title { font-size:16px; font-weight:800; margin-top:2px; }
.card-mask .mask-sub { font-size:12px; font-weight:600; }
.card-mask .mask-time { font-size:11px; color:var(--muted); }
.card-mask.mask-ok .mask-icon { background:var(--ok); }
.card-mask.mask-ok .mask-title { color:var(--ok); }
.card-mask.mask-bad .mask-icon { background:var(--bad); }
.card-mask.mask-bad .mask-title { color:var(--bad); }
.card-mask.mask-warn .mask-icon { background:var(--warn); }
.card-mask.mask-warn .mask-title { color:#b8740f; }
/* 达人自行改为其他 SKU：蓝色蒙版，与按建议(绿)/未变化(橙)区分 */
.card-mask.mask-self { background:rgba(37,99,235,0.08); }
.card-mask.mask-self .mask-icon { background:#2563eb; }
.card-mask.mask-self .mask-title { color:#2563eb; }
/* 卡片整体左侧强调边框，扫一眼可辨（绿=按建议，蓝=自行修改） */
.card.is-adopted { border-left:4px solid var(--ok); }
.card.is-self-changed { border-left:4px solid #2563eb; }
.card-mask .mask-sim-tag {
  display:inline-block; margin-bottom:4px; padding:2px 10px; border-radius:10px;
  font-size:11px; font-weight:700; color:#9a6700; background:#fff3d6; border:1px solid #f3d99a;
}
.card-mask .mask-clear-btn {
  margin-top:8px; padding:4px 12px; font-size:12px; border-radius:8px; cursor:pointer;
  color:var(--muted); background:#fff; border:1px solid var(--border);
}
.card-mask .mask-clear-btn:hover { color:#1f2329; border-color:#c4cad3; background:#f6f8fa; }
.card-mask .modify-clear-link {
  display:inline-block; margin-left:6px; padding:1px 8px; font-size:11px; font-weight:600;
  color:var(--muted); background:#fff; border:1px solid var(--border); border-radius:10px; cursor:pointer;
  text-decoration:none;
}
.card-mask .modify-clear-link:hover { color:#d1242f; border-color:#e5969b; background:#fdecf0; }
.btn-ghost { background:transparent; border:1px solid var(--border); color:var(--muted); }
.btn-ghost:hover { color:#1f2329; border-color:#c4cad3; }

/* 表格 */
.table-wrap { overflow-x:auto; background:#fff; border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); }
.table { width:100%; border-collapse:collapse; font-size:13px; }
.table th, .table td { padding:9px 12px; text-align:left; border-bottom:1px solid #f0f1f4; }
.table th { background:#fafbfc; color:var(--muted); font-weight:600; position:sticky; top:0; }

/* 弹窗 */
.modal-mask { position:fixed; inset:0; background:rgba(0,0,0,.45); display:flex; align-items:center; justify-content:center; z-index:100; padding:16px; }
.modal { background:#fff; border-radius:14px; width:420px; max-width:100%; padding:22px; }
.modal h3 { margin:0 0 6px; }
.modal-body { margin:12px 0; }
.modal-fields .field { margin:10px 0; }
.modal-fields .chk { display:flex; align-items:flex-start; gap:6px; color:var(--text); font-size:13px; flex-direction:row; }
.modal-fields .chk .muted { font-size:11px; color:var(--muted); }
.mt-attach-preview { margin-top:6px; }
.mt-attach-preview img { max-width:120px; max-height:120px; border-radius:8px; border:1px solid var(--border); object-fit:cover; }
.mt-line { font-size:13px; color:var(--text); margin:2px 0; line-height:1.6; }
.mt-line .mtk { display:inline-block; min-width:64px; color:var(--muted); font-size:12px; }
.modal-fields label { display:block; font-size:12px; color:var(--muted); margin-bottom:4px; }
.modal-fields input,.modal-fields select,.modal-fields textarea { width:100%; padding:8px; border:1px solid var(--border); border-radius:8px; font-size:13px; }
.modal-actions { display:flex; justify-content:flex-end; gap:8px; }

/* 审核标准（规则管理） */
.rules-head { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.rules-hint { font-size:12px; margin:6px 0 10px; }
.rules-editor { margin-top:14px; background:#fff; border:1px solid var(--border); border-radius:var(--radius); padding:16px; }
.field-row { display:flex; gap:12px; flex-wrap:wrap; }
.field-row label { display:flex; flex-direction:column; gap:4px; font-size:12px; color:var(--muted); flex:1; min-width:160px; }
.field-row input { padding:8px; border:1px solid var(--border); border-radius:8px; font-size:13px; color:var(--text); }
.field-row .chk { flex-direction:row; align-items:center; gap:6px; }
.rules-editor-actions { margin-top:12px; display:flex; gap:8px; }
.row-actions { white-space:nowrap; }
.rules-editor .btn-primary, .btn-danger { cursor:pointer; }

/* 站内私信模板 */
.msg-tabs { display:flex; gap:8px; margin:8px 0 4px; flex-wrap:wrap; }
.msg-locales { display:flex; gap:8px; margin:0 0 14px; flex-wrap:wrap; }
.msg-loc { padding:5px 12px; border:1px solid var(--border); background:#fff; border-radius:14px; cursor:pointer; font-size:12px; color:var(--muted); }
.msg-loc.active { background:#25f4ee; border-color:#25f4ee; color:#0b0b0b; font-weight:600; }
.loc-badge { display:inline-block; font-size:10px; font-weight:600; color:#fff; background:#57534e; border-radius:8px; padding:1px 7px; vertical-align:1px; }
.loc-empty { display:inline-block; font-size:10px; font-weight:600; color:#b8860b; background:#fff5e0; border-radius:8px; padding:1px 7px; vertical-align:1px; }
.msg-tab { padding:7px 16px; border:1px solid var(--border); background:#fff; border-radius:18px; cursor:pointer; font-size:13px; color:var(--muted); }
.msg-tab.active { background:#1677ff; border-color:#1677ff; color:#fff; font-weight:600; }
.msg-panel { display:flex; flex-direction:column; gap:16px; }
.msg-block { background:#fff; border:1px solid var(--border); border-radius:var(--radius); padding:16px; }
.msg-block-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; flex-wrap:wrap; }
.msg-textarea { width:100%; padding:10px; border:1px solid var(--border); border-radius:8px; font-size:13px; line-height:1.6; resize:vertical; font-family:inherit; box-sizing:border-box; }
.msg-actions { margin-top:8px; display:flex; align-items:center; gap:10px; }
.msg-addrow { display:flex; gap:8px; margin-bottom:12px; }
.msg-addrow input { flex:1; padding:8px 10px; border:1px solid var(--border); border-radius:8px; font-size:13px; }
.msg-prodlist { display:flex; flex-direction:column; gap:12px; }
.msg-empty { padding:10px 0; }
.msg-prod-item { border:1px solid #eef0f3; background:#fafbfc; border-radius:8px; padding:12px; }
.msg-prod-head { display:flex; align-items:center; gap:10px; margin-bottom:8px; flex-wrap:wrap; }
.pid-title { display:flex; align-items:baseline; gap:8px; margin-right:auto; }
.pid-title b { font-size:13px; }
.pid-chips { display:flex; gap:6px; flex-wrap:wrap; margin:2px 0 10px; }
.pid-chip { display:inline-flex; align-items:center; gap:5px; font-size:12px; font-weight:700; color:#1677ff; background:#e8f1ff; border:1px solid #cfe2ff; border-radius:999px; padding:3px 7px 3px 10px; word-break:break-all; }
.pid-x { border:0; background:transparent; color:#1677ff; cursor:pointer; font-size:14px; line-height:1; padding:0 2px; border-radius:50%; }
.pid-x:hover { background:#d6e7ff; color:#0958d9; }
.append-pid-row { margin:8px 0 10px; }
.msg-product-block { margin-top:10px; border-top:1px dashed var(--border); padding-top:12px; }
.switch { font-size:12px; color:var(--muted); display:flex; align-items:center; gap:4px; cursor:pointer; }
.btn-link { background:none; border:none; color:#e5484d; cursor:pointer; font-size:12px; padding:0; }
.msg-block code { background:#f0f1f4; border-radius:4px; padding:1px 5px; font-size:11px; }

/* 私信图片配置 */
.msg-img { margin-top:10px; background:#fafbfc; border:1px dashed #d5dae1; border-radius:8px; padding:10px; }
.msg-img-head { font-size:12px; display:flex; align-items:center; gap:6px; margin-bottom:8px; }
.msg-img-head b { font-size:12px; }
.msg-img-row { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.msg-img-row input[type=text] { flex:1; min-width:180px; padding:8px 10px; border:1px solid var(--border); border-radius:8px; font-size:12px; }
.file-btn { position:relative; cursor:pointer; }
.file-btn input[type=file] { position:absolute; left:0; top:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.msg-img-preview { margin-top:8px; }
.msg-img-preview img { max-width:140px; max-height:140px; border-radius:8px; border:1px solid var(--border); object-fit:cover; }
.msg-img-list { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
.msg-img-thumb { position:relative; width:86px; height:86px; border-radius:8px; overflow:hidden; border:1px solid var(--border); background:#fff; }
.msg-img-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.msg-img-x { position:absolute; top:2px; right:2px; width:18px; height:18px; line-height:16px; text-align:center; background:rgba(0,0,0,.55); color:#fff; border:0; border-radius:50%; font-size:12px; cursor:pointer; }
.msg-img-add { padding:4px 10px; font-size:12px; border:1px dashed var(--border); border-radius:8px; background:#fff; cursor:pointer; color:var(--muted); }
.msg-img-add:hover { color:var(--primary); border-color:var(--primary); }
.msg-img-row + .msg-img-hint { font-size:11px; color:var(--muted); margin-top:6px; }

/* 审核标准固定规则卡片 */
.rule-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:12px; margin-top:10px; }
.rule-card { background:#fff; border:1px solid var(--border); border-left:4px solid #1677ff; border-radius:var(--radius); padding:14px; }
.rule-card.disabled { opacity:.55; border-left-color:#c4c9d1; }
.rule-card-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:6px; flex-wrap:wrap; }
.rule-card-head b { font-size:14px; }
.rule-field { font-size:12px; margin:0 0 10px; line-height:1.5; }
.chip { display:inline-block; font-size:11px; border-radius:10px; padding:2px 8px; margin-left:6px; vertical-align:1px; }
.chip-ok { background:#e6f6f0; color:#1aa179; }
.chip-bad { background:#fdebeb; color:#e5484d; }
.chip-warn { background:#fef3e2; color:#b26a00; }
.rule-ctl { display:flex; flex-direction:column; gap:10px; }
.rule-val label, .rule-range label { display:flex; flex-direction:column; gap:3px; font-size:12px; color:var(--muted); }
.rule-val input, .rule-range input { width:110px; padding:7px 9px; border:1px solid var(--border); border-radius:8px; font-size:13px; color:var(--text); }
.rule-range { display:flex; gap:16px; flex-wrap:wrap; }
.rule-switch { display:flex; align-items:center; gap:6px; }
.rule-switch .muted { font-size:11px; }

@media (max-width: 640px) {
  .card-list { grid-template-columns:1fr; }
  .topbar { flex-direction:column; align-items:flex-start; }
}

/* ---------------- 审核标准：三列规则矩阵 ---------------- */
.matrix-order { background:#fff; border:1px solid #e5e6eb; border-radius:8px; padding:12px 16px; margin-bottom:14px; }
.matrix-order ol { margin:6px 0 0; padding-left:20px; }
.matrix-order li { margin:2px 0; font-size:13px; }
.matrix-columns { display:grid; grid-template-columns:repeat(3, 1fr); gap:14px; }
@media (max-width: 900px){ .matrix-columns{ grid-template-columns:1fr; } }
.matrix-col { background:#fff; border:1px solid #e5e6eb; border-top:5px solid #ccc; border-radius:8px; padding:10px; }
.matrix-col-head { display:flex; flex-direction:column; gap:2px; margin-bottom:8px; }
.matrix-col-head .muted { font-size:12px; }
.matrix-rows { display:flex; flex-direction:column; gap:8px; margin-bottom:10px; }
.matrix-row { display:flex; align-items:center; gap:6px; flex-wrap:wrap; background:#fafafa; border:1px solid #eee; border-radius:6px; padding:6px 8px; }
.mt-inp { font-size:13px; padding:4px 6px; border:1px solid #d7d8dd; border-radius:5px; background:#fff; }
.mt-prio { font-size:12px; color:#8a919f; display:inline-flex; align-items:center; gap:3px; cursor:pointer; }
.mt-enabled { margin-left:2px; }
.btn-danger { background:#fff; color:#e5484d; border:1px solid #e5484d; }
.btn-danger:hover { background:#e5484d; color:#fff; }
.mt-add { width:100%; margin-top:4px; }

/* 拒绝二分类选择弹窗（需求1） */
.rj-grid { display:flex; flex-direction:column; gap:8px; }
.rj-opt { display:flex; align-items:flex-start; gap:8px; cursor:pointer; }
.rj-opt input { margin-top:5px; accent-color:#fe2c55; }
.rj-opt-card { flex:1; display:flex; flex-direction:column; gap:2px; border:1px solid #e3e5ea; border-radius:8px; padding:8px 10px; background:#fafafa; transition:border-color .15s, background .15s; }
.rj-opt input:checked + .rj-opt-card { border-color:#fe2c55; background:#fff4f5; }
.rj-opt-card b { font-size:13px; color:#1f2329; }
.rj-opt-sub { font-size:12px; color:#8a919f; }
.rj-preview { white-space:pre-wrap; background:#f7f8fa; border:1px dashed #d7d8dd; border-radius:8px; padding:8px 10px; font-size:12px; color:#4b515c; min-height:44px; line-height:1.6; margin:4px 0 6px; }
.rj-edit { font-size:12px; color:#1677ff; background:none; border:none; cursor:pointer; padding:2px 0; text-decoration:underline; }
.rt-badge { display:inline-block; background:#fff4f5; color:#e5484d; border:1px solid #f0b4bc; border-radius:20px; padding:1px 10px; font-size:12px; }
.prio-badge { display:inline-block; background:var(--ok); color:#fff; border-radius:20px; padding:1px 10px; font-size:12px; margin-left:4px; }
/* 响应式：中等宽度先隐藏「今日已发放」右侧面板，给达人卡片留足 2 列空间 */
@media (max-width:1440px){
  .today-panel{ display:none; }
}
/* 响应式：窄屏时侧边栏下移，不遮挡卡片 */
@media (max-width:1180px){
  .board-layout{ flex-direction:column; }
  .sent-sidebar{ width:100%; position:static; max-height:none; }
  .sent-sidebar .sent-prod-skus{ flex-direction:row; flex-wrap:wrap; }
  .board-right{ display:none; }
  .legend-bar{ display:none !important; }
}

/* 达人已重新提交申请（老申请被新申请取代）摘要条 */
.superseded-banner{ margin:10px 0 4px; padding:10px 14px; background:#fff7ee; border:1px dashed #f0b27a; border-radius:10px; }
.sup-title{ font-size:12px; color:#b8860b; font-weight:600; margin-bottom:8px; }
.sup-items{ display:flex; flex-wrap:wrap; gap:8px; }
.sup-item{ display:flex; align-items:center; gap:8px; padding:6px 12px; border:1px solid #f0b27a; border-radius:8px; background:#fff; cursor:pointer; font-size:12px; color:var(--text); transition:border-color .15s, background .15s; }
.sup-item:hover{ border-color:#e8943f; background:#fff7ee; }
.sup-user{ font-weight:600; color:#b8860b; }
.sup-sku{ color:var(--text); }
.sup-new .newst{ font-weight:600; padding:1px 6px; border-radius:10px; font-size:11px; }
.sup-new .newst.ok{ background:#e3f5ec; color:var(--ok); }
.sup-new .newst.bad{ background:#fde8e8; color:var(--bad); }
.sup-new .newst.warn{ background:#fff3d6; color:#b8860b; }
.sup-go{ color:#1677ff; font-weight:600; }

/* 定位新申请时的卡片高亮闪烁 */
.card.flash{ animation:cardFlash 2.2s ease; }
@keyframes cardFlash{ 0%,100%{ box-shadow:0 0 0 0 rgba(255,180,40,0); } 25%{ box-shadow:0 0 0 3px rgba(255,180,40,.9); } }

/* ===== 样品跟踪（P4） ===== */
.tracking-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; margin-bottom:14px; }
.tracking-head h2 { margin:0; font-size:20px; }
.as-of { font-size:13px; font-weight:400; }
.tracking-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.tracking-buckets { display:flex; flex-direction:column; gap:12px; padding-bottom:10px; }
.tracking-group { border:1px solid var(--border); border-radius:var(--radius); background:var(--panel); box-shadow:var(--shadow); overflow:hidden; }
.tracking-group.group-warn { border-top:3px solid var(--warn); }
.tracking-group.group-ok { border-top:3px solid var(--ok); }
.tracking-group-head { width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 16px; background:var(--bg); border:none; cursor:pointer; font-size:14px; font-weight:600; color:var(--text); text-align:left; }
.tracking-group-head:hover { background:var(--bg); }
.tracking-group-name { font-weight:600; font-size:14px; }
.tracking-group-count { display:inline-flex; align-items:center; gap:8px; background:var(--panel); color:var(--text); border:1px solid var(--border); border-radius:20px; padding:1px 12px; font-size:13px; font-weight:600; }
.tracking-caret { width:8px; height:8px; border-right:2px solid var(--muted); border-bottom:2px solid var(--muted); transform:rotate(45deg); transition:transform .15s; flex:0 0 auto; }
.tracking-group.open .tracking-caret { transform:rotate(-135deg); }
.tracking-group-body { display:none; padding:12px; flex-direction:column; gap:8px; }
.tracking-group.open .tracking-group-body { display:flex; }
.tracking-empty { padding:16px; text-align:center; }
.tracking-row { border:1px solid var(--border); border-radius:10px; padding:10px; background:var(--panel); display:flex; flex-direction:column; gap:5px; }
.tracking-row-overdue { border-color:var(--bad); background:#fff5f5; }
.tr-user { font-weight:600; font-size:13px; }
.tr-nick { font-weight:400; margin-left:4px; }
.tr-product { font-size:12px; color:var(--muted); line-height:1.35; }
.tr-sku { font-size:12px; color:var(--text); font-family:ui-monospace, SFMono-Regular, Menlo, monospace; }
.tr-meta { display:flex; flex-wrap:wrap; gap:6px 10px; font-size:12px; color:var(--muted); }
.tr-cost { color:var(--text); }
.tr-signed { color:var(--muted); }
.tr-overdue { color:var(--bad); font-weight:600; margin-left:4px; }
.tr-foot { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:2px; }
.tr-gmv { color:var(--ok); font-weight:600; font-size:12px; }
.btn-remind { background:#1677ff; color:#fff; }
.btn-remind:disabled { opacity:.6; cursor:not-allowed; }

/* ===== P3 历史信用 + 观察名单 ===== */
.credit-line { display:flex; align-items:center; flex-wrap:wrap; gap:6px 12px; margin-top:8px; padding:8px 12px; background:var(--bg); border:1px solid var(--border); border-radius:8px; font-size:12px; }
.credit-watchline { background:#fff5f5; border-color:#f2c3c5; }
.credit-title { font-weight:700; color:var(--text); }
.credit-item { color:var(--text); }
.credit-watch { background:var(--bad); color:#fff; border-radius:12px; padding:2px 10px; font-weight:600; }

@media (max-width:720px){
  .tracking-group-head { padding:11px 12px; }
  .tracking-group-body { padding:8px; }
}

/* ===== P1 联盟总览 ===== */
.range-tabs { display:flex; gap:4px; }
.range-tab { border:1px solid var(--border); background:#fff; color:var(--text); padding:5px 12px; border-radius:8px; cursor:pointer; font-size:12px; }
.range-tab.active { background:var(--text); color:#fff; border-color:var(--text); }
.range-tabs.is-loading { opacity:.55; }
.range-tabs.is-loading .range-tab { pointer-events:none; }
.al-error { display:flex; align-items:center; justify-content:space-between; gap:12px; background:#fff3d6; border:1px solid #f0d9a8; color:#8a6d1a; border-radius:10px; padding:10px 14px; margin-bottom:14px; font-size:13px; }
.al-error.hidden { display:none; }
.al-error-msg { flex:1; }
.al-error-retry { border:1px solid #c9a561; background:#fff; color:#8a6d1a; border-radius:8px; padding:4px 12px; cursor:pointer; font-size:12px; }
.al-error-retry:hover { background:#f7e7c4; }
.al-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; margin-bottom:14px; }
.al-head h2 { margin:0; font-size:20px; }
.al-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.al-alerts { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:14px; }
.al-alert { display:flex; align-items:center; gap:6px; border:1px solid var(--border); background:#fff; border-radius:10px; padding:8px 14px; cursor:pointer; font-size:13px; color:var(--text); }
.al-alert:hover { border-color:#c2c7d0; }
.al-alert b { font-size:16px; color:var(--bad); }
.al-metrics { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:12px; margin-bottom:14px; }
.al-metric { background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); padding:14px; }
.al-mv { font-size:20px; font-weight:700; color:var(--text); }
.al-ml { font-size:12px; color:var(--muted); margin-top:4px; }
.al-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:12px; margin-bottom:14px; }
.al-card { background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); padding:16px; margin-bottom:14px; }
.al-card h3 { margin:0 0 12px; font-size:15px; }
.al-card-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; margin-bottom:12px; }
.al-card-head h3 { margin:0; font-size:15px; }
.al-svg { width:100%; height:auto; display:block; }
.al-line-g { stroke:var(--ok); stroke-width:2; stroke-linejoin:round; stroke-linecap:round; }
.al-line-o { stroke:var(--shop1); stroke-width:2; stroke-linejoin:round; stroke-linecap:round; stroke-dasharray:4 4; }
.al-dot-g { fill:var(--ok); }
.al-dot-o { fill:var(--shop1); }
.al-axisline { stroke:var(--border); stroke-width:1; }
.al-axis { fill:var(--muted); font-size:11px; }
.al-legend { display:flex; gap:16px; margin-top:8px; font-size:12px; color:var(--muted); }
.al-legend span { display:flex; align-items:center; gap:6px; }
.al-swatch-g, .al-swatch-o, .al-swatch-video, .al-swatch-live { width:10px; height:10px; border-radius:3px; display:inline-block; flex:0 0 auto; }
.al-swatch-g { background:var(--ok); }
.al-swatch-o { background:var(--shop1); }
.al-swatch-video { background:var(--ok); }
.al-swatch-live { background:var(--warn); }
.al-splitbar { display:flex; height:22px; border-radius:8px; overflow:hidden; background:var(--bg); }
.al-split-video { background:var(--ok); }
.al-split-live { background:var(--warn); }
.al-split-legend { display:flex; flex-wrap:wrap; gap:16px; margin-top:10px; font-size:12px; color:var(--muted); }
.al-split-legend span { display:flex; align-items:center; gap:6px; }
.al-funnel { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.al-fn-step { background:var(--bg); border:1px solid var(--border); border-radius:10px; padding:14px; text-align:center; }
.al-fn-num { font-size:22px; font-weight:700; }
.al-fn-label { font-size:12px; color:var(--muted); margin-top:4px; }
.al-fn-rate { font-size:11px; color:var(--ok); margin-top:4px; }
.al-top { display:flex; flex-direction:column; }
.al-top-row { display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid var(--border); font-size:13px; }
.al-top-row:last-child { border-bottom:none; }
.al-rank { flex:0 0 22px; height:22px; display:inline-flex; align-items:center; justify-content:center; border-radius:6px; background:var(--bg); color:var(--muted); font-weight:600; font-size:12px; }
.al-rank-1 { background:var(--warn); color:#fff; }
.al-rank-2 { background:#9aa3b0; color:#fff; }
.al-rank-3 { background:#d09a6a; color:#fff; }
.al-top-name { flex:1 1 auto; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.al-top-sub { color:var(--muted); font-size:12px; flex:0 0 auto; }
.al-top-gmv { color:var(--ok); font-weight:600; flex:0 0 auto; }
.al-empty { padding:20px; text-align:center; color:var(--muted); }

/* ===== P2 达人管理 ===== */
.cr-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; margin-bottom:14px; }
.cr-head h2 { margin:0; font-size:20px; }
.cr-actions { display:flex; gap:10px; }
.cr-filters { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin-bottom:12px; }
.cr-tier-tabs, .cr-alert-tabs { display:flex; gap:4px; flex-wrap:wrap; }
.cr-sort-wrap { display:flex; align-items:center; gap:6px; }
.cr-sort { border:1px solid var(--border); border-radius:8px; padding:5px 10px; font-size:13px; background:#fff; }
.cr-count { margin-bottom:10px; }
.cr-list { display:flex; flex-direction:column; gap:12px; }
.cr-group { border:1px solid var(--border); border-radius:var(--radius); background:var(--panel); box-shadow:var(--shadow); overflow:hidden; }
.cr-group-head { width:100%; display:flex; align-items:center; justify-content:space-between; padding:12px 16px; background:var(--bg); border:none; cursor:pointer; font-size:14px; font-weight:600; color:var(--text); }
.cr-group-count { display:flex; align-items:center; gap:6px; color:var(--muted); font-weight:400; font-size:13px; }
.cr-caret { width:8px; height:8px; border-right:2px solid var(--muted); border-bottom:2px solid var(--muted); transform:rotate(45deg); transition:transform .15s; }
.cr-group.open .cr-caret { transform:rotate(-135deg); }
.cr-group-body { display:none; padding:12px; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:12px; }
.cr-group.open .cr-group-body { display:grid; }
.cr-card { border:1px solid var(--border); border-radius:10px; padding:12px; background:#fff; display:flex; flex-direction:column; gap:10px; }
.cr-card-top { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.cr-tier { flex:0 0 auto; min-width:28px; height:28px; padding:0 6px; display:inline-flex; align-items:center; justify-content:center; border-radius:8px; font-weight:700; color:#fff; font-size:14px; }
.cr-tier-S { background:#7c4dff; }
.cr-tier-A { background:#1677ff; }
.cr-tier-B { background:#1aa179; }
.cr-tier-C { background:#f5a623; }
.cr-tier-D { background:#8a919f; }
.cr-tier-none { background:#c2c7d0; }
.cr-id { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; }
.cr-nick { font-weight:600; font-size:14px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cr-user { font-size:12px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cr-chiprow { display:flex; gap:4px; flex-wrap:wrap; flex:0 0 auto; }
.cr-alert { font-size:11px; padding:2px 8px; border-radius:12px; font-weight:600; }
.cr-alert-drop_risk { background:#fff1f0; color:var(--bad); }
.cr-alert-silent { background:#f4f6f9; color:var(--muted); }
.cr-alert-rising { background:#e8f7ef; color:var(--ok); }
.cr-alert-watchlist { background:var(--bad); color:#fff; }
.cr-stats { display:grid; grid-template-columns:repeat(auto-fill,minmax(90px,1fr)); gap:8px; }
.cr-stat { display:flex; flex-direction:column; gap:2px; }
.cr-stat i { font-style:normal; font-size:11px; color:var(--muted); }
.cr-stat b { font-size:14px; font-weight:600; }

@media (max-width:720px){
  .al-funnel { grid-template-columns:1fr; }
  .al-grid { grid-template-columns:1fr; }
  .cr-group-body { grid-template-columns:1fr; }
  .cr-stats { grid-template-columns:repeat(2,1fr); }
}

/* ===== P3 发放配额（子页 + 左侧完成度面板） ===== */
.quota-panel-title { font-size:13px; font-weight:700; color:var(--text); margin-bottom:8px; }

/* 每日总表（纯文本紧凑列表） */
.quota-daily-summary { background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:8px 10px; box-shadow:var(--shadow); margin-bottom:10px; flex:none; }
.quota-daily-title { font-size:12px; font-weight:700; color:var(--muted); margin-bottom:5px; }
.quota-daily-list { display:flex; flex-direction:column; gap:2px; max-height:190px; overflow:auto; }
.quota-daily-row { display:flex; align-items:center; justify-content:space-between; gap:10px; font-size:12px; line-height:1.45; }
.quota-daily-code { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--text); }
.quota-daily-num { flex:none; font-weight:600; color:var(--text); font-variant-numeric:tabular-nums; }
.quota-daily-num.over { color:var(--bad); }
.quota-daily-empty { font-size:12px; color:var(--muted); padding:2px 0; }

/* 卡片区 2 列网格 */
.quota-card-grid { display:grid; grid-template-columns:repeat(2, 1fr); gap:10px; align-items:stretch; }

/* SKU 卡片（紧凑化） */
.quota-sku-card { background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:8px 10px; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:7px; min-width:0; }
.quota-sku-head { display:flex; align-items:center; gap:7px; min-width:0; }
.quota-sku-img { width:32px; height:32px; border-radius:7px; object-fit:cover; border:1px solid var(--border); background:#f6f7f9; flex:none; }
.quota-sku-img.noimg { background:linear-gradient(135deg,#eceef2,#f6f7f9); }
.quota-sku-meta { display:flex; flex-direction:column; gap:1px; min-width:0; }
.quota-sku-name { font-size:12px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.quota-sku-shop { font-size:10px; color:var(--muted); }

/* 三行进度条（自适应高度，避免裁切） */
.quota-bar { display:flex; flex-direction:column; gap:3px; min-width:0; height:auto; }
.quota-bar-head { display:flex; align-items:center; justify-content:space-between; gap:6px; font-size:12px; color:var(--muted); }
.quota-bar-head b { font-weight:600; color:var(--text); font-size:12px; display:inline-flex; align-items:center; gap:5px; }
.quota-bar-track { height:7px; border-radius:6px; background:#f0f1f5; overflow:hidden; flex:none; }
.quota-bar-fill { height:100%; border-radius:6px; background:var(--ok); transition:width .25s ease; }
.quota-bar-fill.over { background:linear-gradient(90deg,#ff8a3c,#e5484d); }
.quota-bar-fill.off { background:#d9dce1; }
.quota-bar.off .quota-bar-head b { color:var(--muted); }
.over-tag { font-style:normal; font-weight:700; color:var(--bad); font-size:11px; white-space:nowrap; }

/* 发放配额子页 */
.quota-view-head { margin-bottom:16px; }
.quota-view-head h2 { margin:0 0 8px; font-size:20px; }
.quota-view-head .muted { margin:0 0 12px; font-size:13px; }
.quota-view-toolbar { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }
.quota-view-actions { display:flex; align-items:center; gap:10px; }
.quota-table-wrap { overflow-x:auto; background:var(--panel); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); }
.quota-table { width:100%; border-collapse:collapse; font-size:13px; min-width:820px; }
.quota-table thead th { text-align:left; padding:12px 14px; background:var(--bg); border-bottom:1px solid var(--border); font-weight:600; white-space:nowrap; position:sticky; top:0; }
.quota-table tbody td { padding:10px 14px; border-bottom:1px solid #f0f1f4; vertical-align:middle; }
.quota-table tbody tr:last-child td { border-bottom:none; }
.q-col-img { width:70px; }
.q-col-name { min-width:180px; max-width:280px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.q-col-num { width:110px; }
.q-col-num input { width:82px; padding:6px 8px; border:1px solid var(--border); border-radius:8px; font-size:13px; text-align:center; }
.q-col-num input:focus { outline:none; border-color:var(--primary); box-shadow:0 0 0 2px rgba(254,44,85,.12); }
.q-col-num input.invalid { border-color:var(--bad); box-shadow:0 0 0 2px rgba(229,72,77,.14); }
.q-col-sent { width:90px; text-align:center; font-weight:600; }
.quota-table .quota-sku-img { width:48px; height:48px; }

@media (max-width:720px){
  .quota-view-toolbar { flex-direction:column; align-items:stretch; }
  .quota-view-actions { justify-content:space-between; }
  .quota-card-grid { grid-template-columns:1fr; }
}
