/* 选品库 Sourcing Hub —— 独立样式，避免污染其它页面 */
.src-wrap { padding: 18px 22px 40px; background: #f5f7fb; min-height: 100%; }
.src-head { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; flex-wrap: wrap; }
.src-logo { width: 38px; height: 38px; border-radius: 10px; background: #2563eb; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 19px; font-weight: 700; }
.src-head h2 { margin: 0; font-size: 18px; color: #111827; }
.src-head .sub { font-size: 12px; color: #6b7280; margin-top: 2px; }
.src-head .grow { flex: 1; }

.src-btn { border: 1px solid #d7dceb; background: #fff; color: #111827; border-radius: 9px; padding: 8px 14px; font-size: 13px; cursor: pointer; transition: .15s; }
.src-btn:hover { border-color: #9db2f5; color: #2563eb; }
.src-btn.primary { background: #2563eb; border-color: #2563eb; color: #fff; }
.src-btn.primary:hover { background: #1d4ed8; color: #fff; }
.src-btn.sm { padding: 5px 10px; font-size: 12px; border-radius: 7px; }
.src-btn:disabled { opacity: .55; cursor: not-allowed; }

.src-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 14px; }
.src-stat { background: #fff; border: 1px solid #e8ecf5; border-radius: 12px; padding: 14px 16px; }
.src-stat .l { font-size: 12px; color: #6b7280; }
.src-stat .v { font-size: 22px; font-weight: 700; color: #111827; margin-top: 6px; letter-spacing: -.3px; }
.src-stat .v.red { color: #dc2626; }
.src-stat .v.blue { color: #2563eb; }
.src-stat .v.green { color: #059669; }
.src-stat .s { font-size: 11.5px; color: #9ca3af; margin-top: 4px; }

.src-bar { background: #fff; border: 1px solid #e8ecf5; border-radius: 12px; padding: 10px 12px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 12px; }
.src-tabs { display: flex; gap: 4px; background: #f1f3f9; border-radius: 9px; padding: 3px; }
.src-tabs button { border: 0; background: transparent; color: #5b6478; font-size: 12.5px; padding: 6px 12px; border-radius: 7px; cursor: pointer; }
.src-tabs button.on { background: #fff; color: #2563eb; font-weight: 600; box-shadow: 0 1px 3px rgba(16,24,40,.08); }
.src-inp { border: 1px solid #d7dceb; border-radius: 9px; padding: 8px 12px; font-size: 13px; outline: none; background: #fff; color: #111827; }
.src-inp:focus { border-color: #2563eb; }
.src-bar .grow { flex: 1; }

.src-card { background: #fff; border: 1px solid #e8ecf5; border-radius: 12px; overflow: hidden; }
.src-tbl { width: 100%; border-collapse: collapse; table-layout: fixed; }
.src-tbl thead th { text-align: left; font-size: 12px; font-weight: 600; color: #6b7280; padding: 11px 12px; background: #fafbfe; border-bottom: 1px solid #eef1f7; white-space: nowrap; }
.src-tbl tbody td { padding: 11px 12px; border-bottom: 1px solid #f2f4f9; font-size: 13px; color: #1f2937; vertical-align: middle; }
.src-tbl tbody tr:hover { background: #fbfcff; }
.src-thumb { width: 46px; height: 46px; border-radius: 8px; object-fit: cover; background: #f1f3f9; display: block; }
.src-title { font-weight: 600; color: #111827; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.45; word-break: break-word; }
.src-meta { font-size: 11.5px; color: #9ca3af; margin-top: 4px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.src-tag { font-size: 11px; padding: 1px 6px; border-radius: 4px; background: #eef2ff; color: #4338ca; }
.src-tag.amz { background: #fff7ed; color: #c2410c; }
.src-tag.cn { background: #fef2f2; color: #b91c1c; }
.src-tag.blue { background: #eff6ff; color: #1d4ed8; }
.src-cost { font-weight: 700; color: #111827; }
.src-price { font-weight: 700; color: #111827; }
.src-price small { font-weight: 400; color: #9ca3af; font-size: 11px; }
.src-profit { font-weight: 700; color: #059669; }
.src-profit.neg { color: #dc2626; }
.src-margin { font-size: 11.5px; color: #9ca3af; }
.src-muted { color: #9ca3af; font-size: 12px; }
.src-ops { display: flex; gap: 6px; flex-wrap: wrap; }
.src-linkbtn { border: 1px solid #dbeafe; background: #eff6ff; color: #1d4ed8; border-radius: 7px; font-size: 12px; padding: 4px 9px; cursor: pointer; }
.src-linkbtn:hover { background: #dbeafe; }
.src-linkbtn.gray { border-color: #e5e7eb; background: #f9fafb; color: #6b7280; }
.src-empty { text-align: center; padding: 60px 20px; color: #9ca3af; }
.src-empty b { display: block; color: #374151; font-size: 14px; margin-bottom: 6px; }

.src-pager { display: flex; align-items: center; gap: 10px; padding: 12px 14px; font-size: 12.5px; color: #6b7280; }

.src-mask { position: fixed; inset: 0; background: rgba(17,24,39,.45); z-index: 900; display: flex; align-items: flex-start; justify-content: center; padding: 48px 16px; overflow: auto; }
.src-modal { background: #fff; border-radius: 14px; width: 100%; max-width: 720px; box-shadow: 0 18px 50px rgba(17,24,39,.22); }
.src-modal.wide { max-width: 860px; }
.src-mh { display: flex; align-items: center; padding: 16px 20px; border-bottom: 1px solid #eef1f7; }
.src-mh h3 { margin: 0; font-size: 15px; color: #111827; }
.src-mh .x { margin-left: auto; border: 0; background: transparent; font-size: 20px; color: #9ca3af; cursor: pointer; line-height: 1; }
.src-mb { padding: 16px 20px; max-height: 64vh; overflow: auto; }
.src-mf { padding: 12px 20px; border-top: 1px solid #eef1f7; display: flex; gap: 10px; justify-content: flex-end; }
.src-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.src-grid3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
.src-f { display: block; font-size: 12px; color: #6b7280; margin-bottom: 5px; }
.src-mb .src-inp { width: 100%; box-sizing: border-box; }
.src-hint { font-size: 12px; color: #6b7280; background: #f8fafd; border: 1px solid #e8ecf5; border-radius: 9px; padding: 10px 12px; line-height: 1.7; }
.src-code { width: 100%; box-sizing: border-box; font-family: Consolas, Menlo, monospace; font-size: 11.5px; line-height: 1.6; border: 1px solid #e0e6f0; border-radius: 9px; padding: 10px; background: #f8fafd; color: #334155; resize: vertical; }
.src-score { font-size: 34px; font-weight: 800; color: #2563eb; line-height: 1; }
.src-chip { display: inline-block; font-size: 11.5px; padding: 2px 8px; border-radius: 999px; background: #f1f5f9; color: #475569; margin: 0 6px 6px 0; }
.src-li { font-size: 13px; color: #374151; line-height: 1.9; }
.src-err { color: #dc2626; font-size: 12.5px; }
.src-ok { color: #059669; font-size: 12.5px; }
.src-note { font-size: 12px; color: #92400e; background: #fffbeb; border: 1px solid #fde68a; border-radius: 9px; padding: 10px 12px; line-height: 1.7; }
@media (max-width: 1100px) {
  .src-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ===== 商品采集工作台（卡片流） ===== */
.ss-wrap { padding: 16px 22px 40px; background: #f5f7fb; min-height: 100%; }
.ss-top { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.ss-top h2 { margin: 0; font-size: 17px; color: #111827; }
.ss-top .sub { font-size: 12px; color: #6b7280; }
.ss-top .grow { flex: 1; }
.ss-src { display: flex; gap: 6px; background: #fff; border: 1px solid #e8ecf5; border-radius: 11px; padding: 4px; margin-bottom: 12px; flex-wrap: wrap; }
.ss-src button { border: 0; background: transparent; color: #4b5563; font-size: 12.5px; padding: 7px 13px; border-radius: 8px; cursor: pointer; display: flex; align-items: center; gap: 5px; }
.ss-src button.on { background: #eef2ff; color: #2563eb; font-weight: 600; }
.ss-search { background: #fff; border: 1px solid #e8ecf5; border-radius: 12px; padding: 12px; margin-bottom: 10px; }
.ss-searchline { display: flex; gap: 8px; align-items: center; }
.ss-searchline input { flex: 1; border: 1px solid #d7dceb; border-radius: 9px; padding: 10px 14px; font-size: 14px; outline: none; }
.ss-searchline input:focus { border-color: #2563eb; }
.ss-filters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 10px; font-size: 12.5px; color: #6b7280; }
.ss-filters .lbl { color: #9ca3af; }
.ss-chipbtn { border: 1px solid #e5e7eb; background: #fff; border-radius: 999px; padding: 4px 11px; font-size: 12px; color: #4b5563; cursor: pointer; }
.ss-chipbtn.on { border-color: #2563eb; color: #2563eb; background: #eff6ff; }
.ss-mini { border: 1px solid #d7dceb; border-radius: 8px; padding: 5px 8px; font-size: 12.5px; width: 76px; outline: none; }
.ss-resultbar { display: flex; align-items: center; gap: 10px; margin: 12px 0 10px; font-size: 12.5px; color: #6b7280; flex-wrap: wrap; }
.ss-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(212px, 1fr)); gap: 12px; }
.ss-card { background: #fff; border: 1px solid #e8ecf5; border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; transition: .15s; position: relative; }
.ss-card:hover { border-color: #c7d4f5; box-shadow: 0 6px 18px rgba(37,99,235,.08); }
.ss-card.on { border-color: #2563eb; box-shadow: 0 0 0 2px rgba(37,99,235,.12); }
.ss-card .pick { position: absolute; left: 8px; top: 8px; z-index: 2; width: 18px; height: 18px; accent-color: #2563eb; cursor: pointer; }
.ss-thumb { width: 100%; aspect-ratio: 1 / 1; object-fit: contain; background: #f8fafc; display: block; }
.ss-thumb-ph { width: 100%; aspect-ratio: 1 / 1; background: repeating-linear-gradient(45deg,#f4f6fb,#f4f6fb 10px,#eef1f8 10px,#eef1f8 20px); display: flex; align-items: center; justify-content: center; color: #b6bfd0; font-size: 12px; }
.ss-body { padding: 10px 11px 12px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.ss-name { font-size: 12.5px; line-height: 1.5; color: #1f2937; height: 3em; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.ss-price { font-size: 16px; font-weight: 700; color: #dc2626; display: flex; align-items: baseline; gap: 4px; }
.ss-price small { font-size: 11px; font-weight: 400; color: #9ca3af; }
.ss-sub { font-size: 11.5px; color: #9ca3af; display: flex; gap: 8px; flex-wrap: wrap; }
.ss-badge { position: absolute; right: 8px; top: 8px; font-size: 10.5px; padding: 2px 6px; border-radius: 4px; background: #eef2ff; color: #4338ca; }
.ss-foot { display: flex; gap: 6px; margin-top: auto; }
.ss-empty { background: #fff; border: 1px dashed #dbe2f0; border-radius: 12px; padding: 50px 20px; text-align: center; color: #9ca3af; font-size: 13px; }
.ss-warn { background: #fffbeb; border: 1px solid #fde68a; color: #92400e; border-radius: 10px; padding: 10px 12px; font-size: 12.5px; line-height: 1.7; margin-bottom: 10px; }
.ss-err { background: #fef2f2; border: 1px solid #fecaca; color: #b91c1c; border-radius: 10px; padding: 10px 12px; font-size: 12.5px; margin-bottom: 10px; }
