/* ============================================================
   电商数据中枢 · 2026 Calm Admin
   参考：Linear / Stripe / Vercel 的克制后台语言
   原则：信息优先 · 边框代替重阴影 · 排版承担层级 · 装饰归零
   结构：左侧导航 + 右侧内容（需求文档第 5 节）
   ============================================================ */

:root {
  --bg: #fafafa;
  --surface: #ffffff;
  --sidebar: #f4f4f5;
  --sidebar-hover: #e9edf2;
  --sidebar-active: #edf5fb;

  --text: #18181b;
  --text-2: #52525b;
  --text-3: #71717a;

  --border: #e4e4e7;
  --border-strong: #d4d4d8;

  /* NAUTICA Brand Guidelines 2019: PMS 289 C / PMS 2935 C / Kids PMS 284 C. */
  --brand-navy: #0c2340;
  --brand-blue: #0057b8;
  --brand-kids-blue: #6cace4;
  --brand-sail: #d8d2cd;

  --accent: var(--brand-navy);
  --accent-hover: #163b65;
  --accent-fg: #ffffff;
  --focus: var(--brand-blue);
  --focus-ring: 0 0 0 2px #fff, 0 0 0 4px rgba(0, 87, 184, 0.45);

  --success: #2f7258;
  --success-bg: #eef6f2;
  --success-border: #bfdbce;
  --warning: #9a6a1f;
  --warning-bg: #fbf6ea;
  --warning-border: #e6d4aa;
  --danger: #b34747;
  --danger-bg: #fbf1f1;
  --danger-border: #e8c5c5;
  --info: var(--brand-blue);
  --info-bg: #eef6fc;

  --radius: 8px;
  --radius-sm: 6px;
  --radius-lg: 12px;

  --font: "Inter", "SF Pro Text", -apple-system, BlinkMacSystemFont,
    "PingFang SC", "HarmonyOS Sans SC", "Segoe UI", "Microsoft YaHei", sans-serif;
  --mono: "SF Mono", "Menlo", "Consolas", "PingFang SC", monospace;

  --sidebar-w: 220px;
  --header-h: 52px;
  --ease: cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { -webkit-text-size-adjust: 100%; }

body {
  font-family: var(--font);
  font-size: var(--fs-2);
  line-height: 1.5;
  color: var(--text);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: "cv11", "ss01", "tnum";
}

/* ---------- 商品主档：款 → 款色 → 款色码 SKU ---------- */
.catalog-level-switch { display: flex; gap: 8px; }
.catalog-grain-note {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
  padding: 10px 14px;
  color: var(--text-2);
  background: #f4f7fb;
  border: 1px solid #dce5f0;
  border-radius: var(--radius);
}
.catalog-grain-note strong { color: var(--accent); white-space: nowrap; }
.catalog-source-note {
  display: inline-block;
  margin-left: 7px;
  padding: 1px 5px;
  color: var(--warning);
  font-size: var(--fs-1);
  font-weight: 600;
  background: var(--warning-bg);
  border-radius: 3px;
}
.catalog-product-group {
  display: inline-flex;
  align-items: flex-start;
  flex-direction: column;
  gap: 3px;
  max-width: 240px;
  vertical-align: middle;
}
.catalog-product-group .tag { font-weight: 700; letter-spacing: 0.01em; }
.tag.group-mgm, .catalog-product-group .group-mgm { color: #17345f; background: #eef4fb; border-color: #c9d8eb; }
.tag.group-naqu, .catalog-product-group .group-naqu { color: #5b2485; background: #f8f0ff; border-color: #e8d2f7; }
.tag.group-jianchi, .catalog-product-group .group-jianchi { color: #8a4b08; background: #fff8e8; border-color: #f3dfad; }
.tag.group-conflict, .catalog-product-group .group-conflict { color: #991b1b; background: #fef2f2; border-color: #fecaca; }
.catalog-product-group small {
  overflow: hidden;
  max-width: 100%;
  color: var(--text-3);
  font-size: var(--fs-1);
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.catalog-source-strip {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.catalog-source-strip > strong { color: var(--text-2); font-size: var(--fs-1); }
.catalog-source-strip .catalog-product-group { align-items: center; flex-direction: row; max-width: none; }
.catalog-source-strip .catalog-product-group small { max-width: none; }
.catalog-decision-toolbar { flex-wrap: wrap; }
.catalog-decision-toolbar .catalog-supplier { display: flex; align-items: center; gap: 10px; }
.catalog-decision-toolbar .catalog-supplier > strong { color: var(--text-2); font-size: var(--fs-1); }
.catalog-decision-toolbar > small { flex: 1 1 340px; display: grid; gap: 2px; color: var(--text-3); font-size: var(--fs-1); text-align: right; }
.catalog-decision-toolbar > small b { color: var(--text-2); }
.catalog-scope-switch { display: inline-flex; gap: 3px; margin-left: auto; padding: 2px; background: #f4f4f5; border-radius: var(--radius-sm); }
.catalog-scope-switch .btn { color: var(--text-2); background: transparent; border-color: transparent; }
.catalog-scope-switch .btn.active { color: var(--accent-fg); background: var(--accent); border-color: var(--accent); }
.catalog-recommendation {
  display: grid;
  grid-template-columns: minmax(280px, 1.2fr) minmax(250px, 1fr) minmax(190px, .7fr);
  gap: 14px;
  align-items: center;
  padding: 14px 16px;
  background: #f3f7fb;
  border: 1px solid #d6e2ef;
  border-radius: var(--radius);
}
.catalog-recommendation > div:first-child > span { color: var(--accent); font-size: var(--fs-1); font-weight: 700; letter-spacing: .05em; }
.catalog-recommendation h2 { margin-top: 2px; font-size: var(--fs-4); }
.catalog-recommendation p { margin-top: 2px; color: var(--text-2); font-size: var(--fs-1); }
.catalog-recommendation-proof { display: flex; flex-wrap: wrap; gap: 5px; }
.catalog-recommendation-proof span { padding: 3px 7px; color: #24456f; font-size: var(--fs-1); background: rgba(255,255,255,.78); border: 1px solid #d6e2ef; border-radius: 999px; }
.catalog-reconcile { display: flex; flex-direction: column; gap: 2px; padding-left: 14px; border-left: 1px solid #c8d6e6; }
.catalog-reconcile strong { color: var(--accent); font-size: var(--fs-1); }
.catalog-reconcile span { color: var(--text-3); font-size: var(--fs-1); }
.catalog-reconcile.reconcile_required strong { color: var(--danger); }
.catalog-decision-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.catalog-decision-card { display: flex; min-width: 0; min-height: 226px; flex-direction: column; padding: 13px 14px 11px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); }
.catalog-decision-card > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; padding-bottom: 10px; border-bottom: 1px solid var(--border); }
.catalog-decision-card > header span { color: var(--text-3); font-size: var(--fs-1); }
.catalog-decision-card > header h2 { margin-top: 2px; font-size: var(--fs-3); }
.catalog-decision-card > header h2 small { color: var(--text-3); font-size: var(--fs-1); font-weight: 500; }
.catalog-decision-card > header > small { flex: 0 0 auto; color: var(--text-3); font-size: var(--fs-1); }
.catalog-decision-card > footer { display: flex; flex-wrap: wrap; gap: 5px 10px; margin-top: auto; padding-top: 9px; color: var(--text-3); font-size: var(--fs-1); border-top: 1px solid var(--border); }
.catalog-decision-card > footer strong { color: var(--text-2); }
.catalog-window-metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1px; overflow: hidden; margin: 14px 0; background: var(--border); border: 1px solid var(--border); border-radius: 5px; }
.catalog-window-metrics > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding: 8px 3px; text-align: center; background: #fafafa; }
.catalog-window-metrics span { color: var(--text-3); font-size: var(--fs-1); }
.catalog-window-metrics strong { overflow: hidden; font-size: var(--fs-2); text-overflow: ellipsis; }
.catalog-decision-pairs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 8px; margin: 14px 0; }
.catalog-decision-pairs > span { display: flex; min-width: 0; flex-direction: column; color: var(--text-3); font-size: var(--fs-1); }
.catalog-decision-pairs strong { overflow: hidden; margin-top: 2px; color: var(--text); font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.catalog-sell-through { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin: 13px 0; }
.catalog-sell-through > div { display: flex; min-width: 0; flex-direction: column; padding: 9px; background: #f6f8fb; border-radius: var(--radius-sm); }
.catalog-sell-through span { color: var(--text-2); font-size: var(--fs-1); }
.catalog-sell-through strong { margin: 4px 0; color: var(--accent); font-size: var(--fs-3); }
.catalog-sell-through small { color: var(--text-3); font-size: var(--fs-1); line-height: 1.35; }
.catalog-decision-constraints { display: flex; align-items: flex-start; gap: 12px; padding: 9px 12px; color: #713f12; background: var(--warning-bg); border: 1px solid var(--warning-border); border-radius: var(--radius); }
.catalog-decision-constraints > strong { flex: 0 0 auto; font-size: var(--fs-1); }
.catalog-decision-constraints > div { display: flex; flex-wrap: wrap; gap: 4px 13px; }
.catalog-decision-constraints span { font-size: var(--fs-1); }
.launch-window-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 12px 14px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); }
.launch-window-item { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.launch-window-item span { color: var(--text-3); font-size: var(--fs-1); }
.launch-window-item strong { font-size: var(--fs-1); }
.launch-window-warn strong { color: #b45309; }
.pl-close-cell { min-width: 120px; vertical-align: top; }
.pl-chip { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: var(--fs-1); font-weight: 600; }
.pl-chip.pl-draft { color: #52525b; background: rgba(113, 113, 122, 0.14); }
.pl-chip.pl-submitted { color: #1d4ed8; background: rgba(59, 130, 246, 0.12); }
.pl-chip.pl-confirmed { color: #15803d; background: rgba(22, 163, 74, 0.12); }
.pl-meta { margin-top: 4px; font-size: var(--fs-1); line-height: 1.5; }
.pl-actions { margin-top: 5px; display: flex; gap: 4px; flex-wrap: wrap; }
/* 角色视角切换器（杭州负责人默认；老板专属视图隐藏） */
/* 左下角账号卡片（RBAC）：头像+角色+邮箱，浅色主题；点击弹账号信息浮层，admin 有管理入口。 */
.account-pop-wrap { position: relative; }
.account-chip { display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; font: inherit; text-align: left; border: 1px solid var(--border); border-radius: 8px; background: #fff; cursor: pointer; transition: border-color .15s ease; }
.account-chip:hover { border-color: var(--border-strong); }
.account-chip[aria-expanded="true"] { border-color: var(--accent); }
.account-avatar { display: flex; flex-shrink: 0; width: 34px; height: 34px; align-items: center; justify-content: center; }
.account-copy { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.account-copy b { font-size: var(--fs-1); color: var(--text); font-weight: 600; line-height: 1.3; }
.account-copy small { font-size: var(--fs-1); color: var(--text-3); word-break: break-all; line-height: 1.35; }
.account-pop { position: absolute; left: 0; bottom: calc(100% + 8px); width: 252px; padding: 12px 14px; border: 1px solid var(--border); border-radius: 10px; background: #fff; box-shadow: 0 8px 24px rgba(24, 24, 27, .14); z-index: 70; font-size: var(--fs-1); }
.account-pop dt { font-size: var(--fs-1); color: var(--text-3); letter-spacing: .03em; margin-top: 8px; }
.account-pop dt:first-child { margin-top: 0; }
.account-pop dd { margin: 2px 0 0; color: var(--text); word-break: break-all; line-height: 1.45; }
.account-pop .account-pop-admin { display: block; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); color: var(--accent); font-weight: 550; text-decoration: none; }
.account-pop .account-pop-admin:hover { text-decoration: underline; }
.account-pop-avatar { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 8px; margin-top: 10px; padding: 9px 0 0; border: 0; border-top: 1px solid var(--border); background: none; color: var(--accent); font: inherit; font-weight: 600; text-align: left; cursor: pointer; }
.account-pop-avatar small { color: var(--text-3); font-size: var(--fs-1); font-weight: 500; }
.account-pop-avatar:hover span { text-decoration: underline; }
.account-pop-identity { display: flex; align-items: center; gap: 11px; margin: -12px -14px 12px; padding: 14px; border-bottom: 1px solid var(--border); background: linear-gradient(135deg, #f3f0e8, #e4e9eb); }
.account-pop-identity > span { display: grid; min-width: 0; gap: 1px; }
.account-pop-identity small { color: #617084; font: 8px var(--mono); letter-spacing: .11em; }
.account-pop-identity b { color: #142b52; font-size: var(--fs-2); }
.account-pop-identity em { color: #727b85; font-size: var(--fs-1); font-style: normal; }
body[data-view="boss"] .account-pop-wrap { display: none; }

/* ---------- 航海成员头像 ---------- */
.member-avatar {
  position: relative;
  display: inline-block;
  flex: none;
  width: 42px;
  height: 42px;
  overflow: hidden;
  border: 1px solid rgba(20, 43, 82, .14);
  border-radius: 50%;
  background: #dce9ee;
  box-shadow: 0 3px 9px rgba(20,43,82,.14);
}
.member-avatar-sm { width: 34px; height: 34px; }
.member-avatar-lg { width: 52px; height: 52px; }
.member-avatar > img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .22s ease; }
.member-avatar-role { position: absolute; z-index: 4; right: 5%; bottom: 5%; display: grid; width: 23%; aspect-ratio: 1; place-items: center; border: 1px solid rgba(255,255,255,.7); border-radius: 50%; background: var(--member-accent); color: #fff; font: 650 var(--fs-1) var(--font); box-shadow: 0 1px 4px rgba(20,43,82,.18); }
.member-avatar-sm .member-avatar-role { font-size: var(--fs-1); }
.member-avatar:hover > img,
.account-chip:hover .member-avatar > img,
.account-crew-member:hover .member-avatar > img { transform: scale(1.035); }

body.has-modal { overflow: hidden; }
.member-avatar-picker { position: fixed; z-index: 120; inset: 0; display: grid; place-items: center; padding: 24px; background: rgba(8,25,48,.58); backdrop-filter: blur(6px); }
.member-avatar-picker-panel { display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; width: min(760px, 100%); max-height: min(780px, calc(100vh - 48px)); overflow: hidden; border: 1px solid rgba(255,255,255,.55); border-radius: 18px; background: #f8f7f2; box-shadow: 0 28px 80px rgba(6,22,45,.3); }
.member-avatar-picker-panel > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; padding: 24px 26px 18px; border-bottom: 1px solid rgba(20,43,82,.1); background: linear-gradient(135deg, #eef5f7, #f8f3e7); }
.member-avatar-picker-panel > header small { color: #da4e3d; font: 700 9px var(--mono); letter-spacing: .18em; }
.member-avatar-picker-panel h2 { margin: 6px 0 4px; color: #142b52; font-size: var(--fs-5); letter-spacing: -.02em; }
.member-avatar-picker-panel header p { margin: 0; color: #687381; font-size: var(--fs-1); line-height: 1.55; }
.member-avatar-picker-close { width: 34px; height: 34px; flex: none; border: 1px solid rgba(20,43,82,.12); border-radius: 50%; background: rgba(255,255,255,.7); color: #142b52; font: 300 24px/1 var(--font); cursor: pointer; }
.member-avatar-picker-current { display: flex; align-items: center; gap: 12px; padding: 13px 26px; border-bottom: 1px solid rgba(20,43,82,.08); background: rgba(255,255,255,.5); }
.member-avatar-picker-current > span { display: grid; gap: 2px; }
.member-avatar-picker-current small { color: #818a95; font-size: var(--fs-1); }
.member-avatar-picker-current b { color: #142b52; font-size: var(--fs-2); }
.member-avatar-picker-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 9px; overflow-y: auto; padding: 18px 26px 22px; }
.member-avatar-option { position: relative; display: grid; min-width: 0; justify-items: center; gap: 8px; padding: 9px 7px 10px; border: 1px solid rgba(20,43,82,.11); border-radius: 12px; background: rgba(255,255,255,.72); color: #142b52; cursor: pointer; transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
.member-avatar-option:hover { border-color: rgba(20,43,82,.34); transform: translateY(-1px); }
.member-avatar-option:focus-visible { outline: 2px solid #285b8d; outline-offset: 2px; }
.member-avatar-option.is-selected { border-color: #d9493b; box-shadow: 0 0 0 2px rgba(217,73,59,.13); }
.member-avatar-option > img { width: min(82px, 100%); aspect-ratio: 1; object-fit: cover; border-radius: 50%; box-shadow: 0 4px 12px rgba(20,43,82,.12); }
.member-avatar-option > span { display: grid; min-width: 0; gap: 2px; text-align: center; }
.member-avatar-option b { overflow: hidden; font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.member-avatar-option small { color: #7b8490; font-size: var(--fs-1); }
.member-avatar-option > i { position: absolute; top: 7px; right: 7px; display: none; width: 19px; height: 19px; place-items: center; border: 2px solid #fff; border-radius: 50%; background: #d9493b; color: #fff; font: 700 10px var(--font); box-shadow: 0 2px 5px rgba(20,43,82,.2); }
.member-avatar-option.is-selected > i { display: grid; }
.member-avatar-picker-panel > footer { display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 14px 26px; border-top: 1px solid rgba(20,43,82,.1); background: #fff; }
.member-avatar-picker-panel > footer > span { margin-right: auto; color: #818a95; font-size: var(--fs-1); }
@media (max-width: 620px) {
  .member-avatar-picker { padding: 10px; }
  .member-avatar-picker-panel { max-height: calc(100vh - 20px); border-radius: 14px; }
  .member-avatar-picker-panel > header { padding: 18px; }
  .member-avatar-picker-current { padding: 11px 18px; }
  .member-avatar-picker-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; padding: 14px 16px 18px; }
  .member-avatar-option { padding: 7px 5px 9px; }
  .member-avatar-picker-panel > footer { padding: 12px 16px; }
  .member-avatar-picker-panel > footer > span { display: none; }
}
@media (max-width: 420px) { .member-avatar-picker-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (prefers-reduced-motion: reduce) {
  .member-avatar > img,
  .member-avatar-option { transition: none; }
  .member-avatar:hover > img,
  .account-chip:hover .member-avatar > img,
  .account-crew-member:hover .member-avatar > img,
  .member-avatar-option:hover { transform: none; }
}
.today-row-active td { background: rgba(37, 99, 235, .06); }
.today-shop-columns { display: grid; grid-template-columns: minmax(180px, 0.9fr) 1fr 1.2fr; gap: 14px; margin-top: 12px; }
.source-tags { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.source-tag {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  height: auto;
  min-height: 28px;
  padding: 4px 10px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #fff;
  color: var(--text-2);
  font: inherit;
  font-size: var(--fs-1);
  font-weight: 650;
  line-height: 1.2;
  cursor: default;
}
button.source-tag { cursor: pointer; }
.source-tag small { font-weight: 500; color: var(--text-3); }
.source-tag.group-mgm { color: #17345f; background: #eef4fb; border-color: #c9d8eb; }
.source-tag.group-naqu { color: #5b2485; background: #f8f0ff; border-color: #e8d2f7; }
.source-tag.group-jianchi { color: #8a4b08; background: #fff8e8; border-color: #f3dfad; }
.source-tag.group-conflict { color: #991b1b; background: #fef2f2; border-color: #fecaca; }
.source-tag.is-on { color: var(--accent-fg); background: var(--accent); border-color: var(--accent); }
.source-tag.is-on small { color: rgba(250, 250, 250, .78); }
.source-tag.group-mgm.is-on { color: #17345f; background: #d7e4f4; border-color: #8aa6c9; }
.source-tag.group-naqu.is-on { color: #5b2485; background: #eed9fb; border-color: #c9a3e6; }
.source-tag.group-jianchi.is-on { color: #8a4b08; background: #f6e4b3; border-color: #d7b56a; }
.source-tag.group-conflict.is-on { color: #991b1b; background: #fecaca; border-color: #f08080; }
.source-mix { display: flex; flex-wrap: wrap; gap: 8px; }
.today-source-mix { margin-top: 14px; }
.finance-pnl-source-tabs { margin: 0 0 10px; }
.catalog-source-tags { margin: 0 0 10px; }
.merch-source-mix { margin: 10px 0 14px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--card); }
.merch-source-mix strong { display: block; font-size: var(--fs-2); }
.merch-source-mix > span { display: block; margin: 2px 0 8px; font-size: var(--fs-1); color: var(--text-3); }
@media (max-width: 900px) { .today-shop-columns { grid-template-columns: 1fr; } }
.today-sub-title { margin: 0 0 8px; font-size: var(--fs-2); }
.today-shares { display: flex; flex-wrap: wrap; gap: 4px; }
.today-share-chip { padding: 1px 7px; border-radius: 999px; background: rgba(20, 43, 82, .07); font-size: var(--fs-1); white-space: nowrap; }
.today-season-tags { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
.today-work-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.today-work-stats .stat-value.bad { color: #b42318; }
.today-work-layout { display: grid; grid-template-columns: minmax(0, 1fr) 240px; gap: 14px; align-items: start; margin-top: 14px; }
.today-work-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.today-work-list > .empty { grid-column: 1 / -1; }
.today-work-item {
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
  min-height: 126px;
  padding: 13px 14px;
  color: inherit;
  text-decoration: none;
  background: var(--surface);
  border: 1px solid var(--border);
  border-left: 3px solid #8da1b6;
  border-radius: var(--radius);
}
.today-work-item:hover { border-color: #8da1b6; box-shadow: 0 3px 12px rgba(20, 43, 82, .07); }
.today-work-item.is-overdue,
.today-work-item.is-blocked { background: #fffafa; border-left-color: #c4513f; }
.today-work-item.is-doing { background: #f8fafd; border-left-color: var(--accent); }
.today-work-item > div,
.today-work-item footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.today-work-item > div { color: var(--text-3); font-size: var(--fs-1); font-weight: 650; }
.today-work-item time { white-space: nowrap; }
.today-work-item > strong { overflow: hidden; font-size: var(--fs-2); line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; }
.today-work-item > small { display: -webkit-box; overflow: hidden; color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.today-work-item footer { margin-top: auto; color: var(--text-3); font-size: var(--fs-1); }
.today-work-item footer b { color: var(--text-2); font-weight: 650; }
.today-department-list { padding: 13px 14px; background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); }
.today-department-list h3 { margin: 0 0 7px; font-size: var(--fs-2); }
.today-department-list > div { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; padding: 9px 0; border-top: 1px solid var(--border); }
.today-department-list > div:first-of-type { border-top: 0; }
.today-department-list strong { font-size: var(--fs-1); }
.today-department-list span { color: var(--text-3); font-size: var(--fs-1); text-align: right; }
.today-sales-empty { border-style: dashed; }
.today-decision-section { border-color: #cbdaf5; background: linear-gradient(135deg, #f8fbff 0%, var(--surface) 58%); }
.today-decision-section .section-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.today-decision-overview { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 10px; }
.today-decision-brief { min-width: 0; padding: 15px 16px; border: 1px solid #cbdaf5; border-left: 4px solid #31558e; border-radius: var(--radius-lg); background: rgb(255 255 255 / 78%); }
.today-decision-brief > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: #31558e; font-size: var(--fs-1); font-weight: 700; }
.today-decision-brief > div small { color: var(--text-3); font-weight: 500; }
.today-decision-brief h3 { margin: 10px 0 5px; font-size: var(--fs-4); line-height: 1.35; }
.today-decision-brief p { margin: 0 0 9px; color: var(--text-2); font-size: var(--fs-1); line-height: 1.6; }
.today-decision-brief > small { color: var(--text-3); font-size: var(--fs-1); line-height: 1.5; }
.today-decision-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); min-width: 0; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.today-decision-stats > div { display: grid; align-content: center; justify-items: center; min-width: 0; gap: 7px; padding: 12px 8px; border-left: 1px solid var(--border); text-align: center; }
.today-decision-stats > div:first-child { border-left: 0; }
.today-decision-stats span { color: var(--text-3); font-size: var(--fs-1); }
.today-decision-stats strong { font-size: var(--fs-5); font-variant-numeric: tabular-nums; }
.today-decision-stats strong.warn { color: var(--warning); }
.today-decision-stats strong.bad { color: var(--danger); }
.today-decision-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
.today-decision-list > .empty { grid-column: 1 / -1; }
.today-decision-card { display: grid; min-width: 0; min-height: 142px; align-content: start; gap: 7px; padding: 12px 13px; border: 1px solid var(--border); border-left: 3px solid #8da1b6; border-radius: var(--radius); background: var(--surface); }
.today-decision-card.warn { border-left-color: var(--warning); }
.today-decision-card.bad { border-left-color: var(--danger); background: var(--danger-bg); }
.today-decision-card.ok { border-left-color: var(--success); }
.today-decision-card header,
.today-decision-card footer { display: flex; align-items: center; justify-content: space-between; min-width: 0; gap: 8px; }
.today-decision-card header small { color: var(--text-3); font-size: var(--fs-1); text-align: right; }
.today-decision-card > strong { margin-top: 2px; font-size: var(--fs-2); line-height: 1.4; overflow-wrap: anywhere; }
.today-decision-card > p { margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.5; overflow-wrap: anywhere; }
.today-decision-card footer { align-self: end; margin-top: auto; padding-top: 8px; border-top: 1px solid var(--border); color: var(--text-3); font-size: var(--fs-1); }
.today-decision-card footer b { color: var(--text-2); font-weight: 650; text-align: right; }
.today-decision-review { display: flex; align-items: center; gap: 12px; margin-top: 10px; padding: 9px 11px; border: 1px solid var(--border); border-radius: var(--radius); background: rgb(255 255 255 / 72%); color: var(--text-2); font-size: var(--fs-1); }
.today-decision-review > span { color: var(--text-3); }
.today-decision-review > b { font-weight: 650; }
.today-decision-review > a { margin-left: auto; color: var(--accent); font-weight: 650; text-decoration: none; }
.today-decision-review > a:hover { text-decoration: underline; }
.today-decision-unavailable { padding: 13px 14px; border: 1px dashed var(--warning-border); border-radius: var(--radius); background: var(--warning-bg); color: var(--warning); font-size: var(--fs-1); line-height: 1.55; }
@media (max-width: 900px) {
  .today-work-layout { grid-template-columns: 1fr; }
  .today-decision-overview { grid-template-columns: 1fr; }
  .today-decision-list { grid-template-columns: 1fr; }
  .today-department-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
  .today-department-list h3,
  .today-department-list > .muted { grid-column: 1 / -1; }
}
@media (max-width: 620px) {
  .today-season-tags { justify-content: flex-start; }
  .today-work-stats,
  .today-work-list,
  .today-department-list { grid-template-columns: 1fr; }
  .today-work-item { min-height: 112px; }
  .today-decision-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .today-decision-review { align-items: flex-start; flex-wrap: wrap; }
  .today-decision-review > a { width: 100%; margin-left: 0; }
}

.pl-redline-badge { display: inline-block; margin-top: 3px; padding: 1px 6px; border-radius: 4px; font-size: var(--fs-1); font-weight: 600; color: #b91c1c; background: rgba(220, 38, 38, 0.10); border: 1px solid rgba(220, 38, 38, 0.35); }
.launch-window-delay-note { margin-top: 7px; padding: 6px 10px; color: #713f12; font-size: var(--fs-1); background: var(--warning-bg); border: 1px solid var(--warning-border); border-radius: var(--radius-sm); }
@media (max-width: 900px) { .launch-window-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.catalog-procurement-body { display: flex; flex-direction: column; gap: 9px; padding: 13px 14px; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); }
.catalog-procurement-head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.catalog-procurement-tier { color: var(--text-3); font-size: var(--fs-1); }
.procurement-badge { padding: 4px 12px; border-radius: 999px; font-size: var(--fs-1); font-weight: 600; }
.procurement-badge.reorder { color: #15803d; background: rgba(22, 163, 74, 0.12); }
.procurement-badge.hold { color: #1d4ed8; background: rgba(59, 130, 246, 0.12); }
.procurement-badge.warn { color: #c2410c; background: rgba(234, 88, 12, 0.12); }
.procurement-badge.muted { color: #52525b; background: rgba(113, 113, 122, 0.14); }
.catalog-procurement-reason { color: var(--text-2); font-size: var(--fs-1); }
.catalog-procurement-metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.catalog-procurement-metrics .procurement-metric { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding: 8px 10px; background: #f6f8fb; border-radius: var(--radius-sm); }
.catalog-procurement-metrics span { color: var(--text-3); font-size: var(--fs-1); }
.catalog-procurement-metrics strong { font-size: var(--fs-2); }
.catalog-procurement-metrics small { color: var(--text-3); font-size: var(--fs-1); }
.catalog-procurement-sizes { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; color: var(--text-3); font-size: var(--fs-1); }
.catalog-procurement-sizes b { padding: 2px 8px; color: var(--text-2); font-weight: 500; background: #f6f8fb; border-radius: 4px; }
.catalog-procurement-notes { display: flex; flex-direction: column; gap: 3px; margin: 0; padding-left: 16px; }
.catalog-procurement-notes li { color: #b45309; font-size: var(--fs-1); }
.catalog-procurement-assumptions { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.catalog-procurement-assumptions span { color: var(--text-3); font-size: var(--fs-1); }
@media (max-width: 900px) { .catalog-procurement-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.catalog-followups .section-title { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.catalog-followup-list { display: grid; gap: 7px; }
.catalog-followup { display: grid; grid-template-columns: minmax(240px, 1.2fr) minmax(360px, 1.6fr) auto; gap: 14px; align-items: center; padding: 10px 12px; background: #fafafa; border: 1px solid var(--border); border-radius: var(--radius-sm); }
.catalog-followup.overdue { border-color: var(--warning-border); background: var(--warning-bg); }
.catalog-followup-main > div { display: flex; align-items: center; gap: 7px; }
.catalog-followup-main h3 { margin-top: 4px; font-size: var(--fs-1); }
.catalog-followup-main p { margin-top: 2px; color: var(--text-3); font-size: var(--fs-1); }
.catalog-followup-type { color: var(--text-2); font-size: var(--fs-1); }
.catalog-overdue { color: var(--danger); font-size: var(--fs-1); font-weight: 700; }
.tag.followup-done { color: #166534; background: #ecfdf3; border-color: #bbf7d0; }
.tag.followup-blocked { color: #991b1b; background: #fef2f2; border-color: #fecaca; }
.catalog-followup-facts { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.catalog-followup-facts span { display: flex; min-width: 0; flex-direction: column; color: var(--text-3); font-size: var(--fs-1); }
.catalog-followup-facts strong { overflow: hidden; margin-top: 2px; color: var(--text-2); font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.catalog-followup-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
.catalog-style-table tbody tr { cursor: pointer; }
.catalog-style-table tbody tr:hover { background: #f6f8fb; }
.catalog-coverage { display: inline-flex; padding: 2px 7px; color: var(--text-3); font-size: var(--fs-1); background: #f4f4f5; border-radius: 999px; white-space: nowrap; }
.catalog-coverage.has-channel { color: #1d4ed8; background: #eff6ff; }
.tag.catalog-safe { color: #166534; background: #ecfdf3; border-color: #bbf7d0; }
.tag.catalog-review { color: #92400e; background: #fffbeb; border-color: #fde68a; }
.catalog-detail { display: grid; gap: 14px; }
.catalog-back-links { display: flex; align-items: center; gap: 12px; }
.catalog-back-links .secondary { color: var(--text-3); }
.product-center-nav { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 9px; margin-bottom: 14px; }
.product-center-nav a { display: grid; gap: 3px; min-width: 0; padding: 12px 14px; color: #40536a; background: #fff; border: 1px solid var(--border); border-radius: 11px; text-decoration: none; transition: border-color .15s ease,box-shadow .15s ease,background .15s ease; }
.product-center-nav a:hover { border-color: #93b9dc; box-shadow: 0 5px 14px rgba(20,63,106,.07); }
.product-center-nav a.active { color: #154f86; background: #edf6ff; border-color: #75a9d6; box-shadow: inset 0 0 0 1px rgba(48,116,178,.08); }
.product-center-nav a.is-gated { border-style: dashed; background: #faf8f3; }
.product-center-nav strong { font-size: var(--fs-2); }
.product-center-nav strong em { margin-left: 6px; padding: 2px 5px; border-radius: 999px; color: #9a5c13; background: #fff1d8; font-size: var(--fs-1); font-style: normal; font-weight: 650; }
.product-center-nav small { overflow: hidden; color: #7a8797; font-size: var(--fs-1); line-height: 1.4; text-overflow: ellipsis; white-space: nowrap; }
.catalog-quality-gate { display: grid; grid-template-columns: minmax(220px,1fr) minmax(360px,2fr) auto; align-items: center; gap: 12px; margin-bottom: 12px; padding: 12px 14px; border: 1px solid #cbded2; border-radius: 10px; background: #f4fbf6; }
.catalog-quality-gate.is-blocked { border-color: #ead0ad; background: #fff9ef; }
.catalog-quality-gate > div:first-child { display: grid; gap: 3px; }
.catalog-quality-gate > div:first-child strong { font-size: var(--fs-1); }
.catalog-quality-gate > div:first-child span { color: var(--text-3); font-size: var(--fs-1); line-height: 1.4; }
.catalog-quality-metrics { display: grid; grid-template-columns: repeat(4,minmax(76px,1fr)); gap: 6px; }
.catalog-quality-metrics span { display: flex; align-items: center; justify-content: space-between; gap: 5px; padding: 6px 8px; border: 1px solid #e5e7eb; border-radius: 7px; background: #fff; }
.catalog-quality-metrics b { color: var(--text-2); font-size: var(--fs-1); font-weight: 550; }
.catalog-quality-metrics em { color: #227447; font-size: var(--fs-1); font-style: normal; font-weight: 700; }
.catalog-quality-metrics .is-missing em { color: #b35d0d; }
.catalog-quality-metrics .is-unknown em { color: var(--text-3); }
.product-boundary-note { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 12px; padding: 12px 15px; color: #52657b; background: #f6f9fc; border: 1px solid #dce5ef; border-radius: 10px; font-size: var(--fs-1); line-height: 1.55; }
.product-boundary-note strong { flex: 0 0 auto; color: #223a55; }
.section-title-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; }
@media (max-width: 760px) {
  .product-center-nav { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .product-center-nav small { white-space: normal; }
  .catalog-quality-gate { grid-template-columns: 1fr; }
  .catalog-quality-metrics { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .product-boundary-note { flex-direction: column; gap: 4px; }
}
.catalog-product-snapshot {
  display: grid;
  grid-template-columns: minmax(240px, .85fr) minmax(360px, 1.45fr) minmax(240px, .9fr);
  gap: 10px;
}
.catalog-snapshot-card {
  display: flex;
  min-width: 0;
  min-height: 170px;
  flex-direction: column;
  padding: 15px 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.catalog-snapshot-card > header { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--text-3); font-size: var(--fs-1); }
.catalog-snapshot-card > header > span { color: var(--text-2); font-weight: 700; }
.catalog-snapshot-card h2 { margin: 11px 0 10px; font-size: var(--fs-5); line-height: 1; }
.catalog-snapshot-card h2 small { color: var(--text-3); font-size: var(--fs-1); font-weight: 500; }
.catalog-snapshot-card > p { display: flex; flex-wrap: wrap; gap: 8px 14px; margin-top: auto; color: var(--text-3); font-size: var(--fs-1); line-height: 1.45; }
.catalog-snapshot-card > p a { font-weight: 700; }
.catalog-snapshot-card.inventory.is-ready { border-color: #b7d7c3; box-shadow: inset 3px 0 #3f8f62; }
.catalog-snapshot-card.inventory.is-missing { border-color: #f2d39c; box-shadow: inset 3px 0 #d99a2b; }
.catalog-snapshot-pairs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.catalog-snapshot-pairs span { display: flex; flex-direction: column; color: var(--text-3); font-size: var(--fs-1); }
.catalog-snapshot-pairs strong { margin-top: 2px; color: var(--text); font-size: var(--fs-2); }
.catalog-store-pills { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 9px; }
.catalog-store-pills span { display: inline-flex; align-items: center; gap: 5px; min-width: 0; padding: 4px 7px; color: #52525b; font-size: var(--fs-1); background: #f4f4f5; border-radius: 4px; }
.catalog-store-pills span b { overflow: hidden; max-width: 80px; text-overflow: ellipsis; white-space: nowrap; }
.catalog-store-pills .is-selling { color: #166534; background: #ecfdf3; }
.catalog-store-pills .is-warehouse { color: #875600; background: #fff1d7; }
.catalog-store-pills .is-mixed { color: #1d4ed8; background: #eff6ff; }
.catalog-store-pills .is-unknown { color: #805300; background: #fffbeb; }
.catalog-lineage-block { overflow: hidden; padding: 0; }
.catalog-lineage-details > summary { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 11px 14px; cursor: pointer; list-style: none; }
.catalog-lineage-details > summary::-webkit-details-marker { display: none; }
.catalog-lineage-details > summary > span { display: flex; align-items: baseline; flex-wrap: wrap; gap: 5px 10px; }
.catalog-lineage-details > summary strong { font-size: var(--fs-1); }
.catalog-lineage-details > summary small { color: var(--text-3); font-size: var(--fs-1); }
.catalog-lineage-details > summary > b { color: var(--accent); font-size: var(--fs-1); white-space: nowrap; }
.catalog-lineage-details > summary::after { content: '⌄'; color: var(--text-3); font-size: var(--fs-2); }
.catalog-lineage-details[open] > summary::after { transform: rotate(180deg); }
.catalog-lineage-content { padding: 0 14px 14px; border-top: 1px solid var(--border); }
.catalog-lineage-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 0; }
.catalog-lineage-head p { color: var(--text-3); font-size: var(--fs-1); }
.catalog-style-summary {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
  background: var(--border);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.catalog-style-summary > div {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 13px 16px;
  background: var(--surface);
}
.catalog-style-summary span { color: var(--text-3); font-size: var(--fs-1); }
.catalog-style-summary strong { color: var(--text); font-size: var(--fs-4); line-height: 1.2; }
.catalog-style-summary small { color: var(--text-3); font-size: var(--fs-1); line-height: 1.35; }
.catalog-style-summary .text-warning { color: #b45309; }
.catalog-section { padding: 16px; }
.catalog-section .section-title { margin-bottom: 14px; }
.catalog-section .section-title h2 { font-size: var(--fs-3); }
.catalog-section .section-title p { margin-top: 3px; color: var(--text-3); font-size: var(--fs-1); }
.catalog-channel-grid { display: grid; grid-template-columns: repeat(5, minmax(150px, 1fr)); gap: 8px; margin-bottom: 14px; }
.catalog-channel-card { display: flex; min-width: 0; min-height: 150px; flex-direction: column; padding: 11px 12px; background: #fafafa; border: 1px solid var(--border); border-radius: var(--radius-sm); }
.catalog-channel-card > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 6px; }
.catalog-channel-card > header span { color: var(--text-3); font-size: var(--fs-1); }
.catalog-channel-card > header h3 { margin-top: 2px; font-size: var(--fs-1); }
.catalog-channel-card > header em { flex: 0 0 auto; padding: 2px 5px; color: #52525b; font-size: var(--fs-1); font-style: normal; background: #f4f4f5; border-radius: 999px; }
.catalog-channel-card.is-selling > header em { color: #166534; background: #ecfdf3; }
.catalog-channel-card.is-warehouse > header em { color: #875600; background: #fff1d7; }
.catalog-channel-card.is-mixed > header em { color: #1d4ed8; background: #eff6ff; }
.catalog-channel-card.is-unknown > header em { color: #805300; background: #fffbeb; }
.catalog-channel-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; margin: 13px 0; }
.catalog-channel-metrics span { display: flex; flex-direction: column; color: var(--text-3); font-size: var(--fs-1); }
.catalog-channel-metrics strong { margin-top: 2px; color: var(--text); font-size: var(--fs-2); }
.catalog-channel-card footer { display: grid; grid-template-columns: 1fr auto; gap: 3px 8px; margin-top: auto; color: var(--text-3); font-size: var(--fs-1); }
.catalog-channel-card footer > span { color: var(--text-2); font-weight: 700; }
.catalog-channel-card footer p { grid-column: 1 / -1; overflow: hidden; margin-top: 2px; text-overflow: ellipsis; white-space: nowrap; }
.catalog-channel-table { margin-top: 4px; }
.catalog-listing-status { display: inline-flex; padding: 2px 6px; color: #52525b; font-size: var(--fs-1); background: #f4f4f5; border-radius: 999px; white-space: nowrap; }
.catalog-listing-status.is-selling { color: #166534; background: #ecfdf3; }
.catalog-listing-status.is-warehouse { color: #875600; background: #fff1d7; }
.catalog-channel-empty { margin-top: 4px; }
.catalog-style-image-card {
  display: grid;
  grid-template-columns: 210px minmax(0, 1fr);
  gap: 18px;
  align-items: center;
}
.catalog-style-image {
  display: grid;
  place-items: center;
  height: 210px;
  overflow: hidden;
  color: var(--text-3);
  background: #f6f6f6;
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.catalog-style-image img { width: 100%; height: 100%; object-fit: contain; }
.catalog-style-image-copy { display: flex; align-items: flex-start; flex-direction: column; gap: 7px; }
.catalog-style-image-copy h2 { font-size: var(--fs-4); }
.catalog-style-image-copy p { color: var(--text-2); font-size: var(--fs-2); }
.catalog-style-image-copy small { max-width: 680px; color: var(--text-3); }
.catalog-style-image-copy .btn { margin-top: 5px; }
.catalog-color-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 12px;
}
.catalog-operating-note {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px 14px;
  margin-bottom: 14px;
  padding: 10px 12px;
  color: var(--text-2);
  background: #f4f7fb;
  border: 1px solid #dce5f0;
  border-radius: var(--radius);
}
.catalog-operating-note div { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.catalog-operating-note strong { flex: 0 0 auto; color: var(--accent); font-size: var(--fs-1); }
.catalog-operating-note span { overflow: hidden; font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.catalog-operating-note p { grid-column: 1 / -1; color: var(--text-3); font-size: var(--fs-1); }
.catalog-color-card {
  overflow: hidden;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.catalog-color-card.needs-review { border-color: #f3cf83; }
.catalog-color-image {
  color: var(--text-3);
  background: #f6f6f6;
  border-bottom: 1px solid var(--border);
}
.catalog-color-image-frame {
  position: relative;
  display: grid;
  place-items: center;
  /* 网站只需要方图：款色图底座固定 1:1（原来宽 100% × 高 210px 是竖底座） */
  width: 100%;
  max-width: 240px;
  aspect-ratio: 1 / 1;
  overflow: hidden;
}
.catalog-color-image-frame img { width: 100%; height: 100%; object-fit: contain; }
.catalog-color-image em {
  position: absolute;
  top: 8px;
  right: 8px;
  padding: 3px 7px;
  color: #166534;
  font-size: var(--fs-1);
  font-style: normal;
  font-weight: 700;
  background: rgba(240, 253, 244, 0.94);
  border: 1px solid #bbf7d0;
  border-radius: 999px;
}
.needs-review .catalog-color-image em { color: #92400e; background: rgba(255, 251, 235, 0.95); border-color: #fde68a; }
.catalog-color-image-caption {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 8px;
  padding: 9px 12px;
  color: var(--text);
  background: #fff;
  border-top: 1px solid var(--border);
}
.catalog-color-image-caption strong { overflow: hidden; font-size: var(--fs-2); text-overflow: ellipsis; white-space: nowrap; }
.catalog-color-image-caption span { flex: 0 0 auto; color: var(--text-3); font-family: var(--mono); font-size: var(--fs-1); }
.catalog-color-body { padding: 10px 12px 12px; }
.catalog-color-body h3 { font-size: var(--fs-2); }
.catalog-color-body h3 small { color: var(--text-3); font-family: var(--mono); font-size: var(--fs-1); font-weight: 500; }
.catalog-color-body p { margin-top: 3px; color: var(--text-3); font-size: var(--fs-1); }
.catalog-color-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  overflow: hidden;
  margin-top: 10px;
  background: var(--border);
  border: 1px solid var(--border);
  border-radius: 5px;
}
.catalog-color-metrics > div {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  padding: 7px 8px;
  background: #fafafa;
}
.catalog-color-metrics > div.inventory { background: #f0f7f4; }
.catalog-color-metrics span { color: var(--text-3); font-size: var(--fs-1); }
.catalog-color-metrics strong { overflow: hidden; color: var(--text); font-size: var(--fs-1); line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; }
.catalog-color-metrics small { color: var(--text-3); font-size: var(--fs-1); line-height: 1.25; }
.catalog-color-metrics .text-warning { color: #b45309; }
.catalog-color-shops { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.catalog-color-shops > span { padding: 3px 6px; color: var(--text-2); font-size: var(--fs-1); background: #f4f4f5; border-radius: 999px; }
.catalog-color-shops b { margin-right: 4px; color: var(--text); }
.catalog-color-body .catalog-image-reason { min-height: 30px; margin-top: 7px; color: var(--text-2); }
.catalog-item-links { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.catalog-item-links a { padding: 2px 5px; font-family: var(--mono); font-size: var(--fs-1); background: #f4f4f5; border-radius: 3px; }
.catalog-color-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.catalog-image-policy {
  display: flex;
  flex-direction: column;
  gap: 3px;
  margin-bottom: 12px;
  padding: 10px 12px;
  color: #1e3a5f;
  background: #f3f7fb;
  border: 1px solid #d6e2ef;
  border-radius: var(--radius);
}
.catalog-image-policy span { color: var(--text-2); font-size: var(--fs-1); }
.catalog-candidate-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(112px, 1fr));
  gap: 8px;
  max-height: 330px;
  margin-bottom: 14px;
  overflow-y: auto;
}
.catalog-candidate {
  display: grid;
  gap: 5px;
  padding: 6px;
  color: var(--text-2);
  text-align: left;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
}
.catalog-candidate:hover,
.catalog-candidate.selected { border-color: var(--accent); box-shadow: 0 0 0 2px rgba(31, 70, 111, 0.12); }
.catalog-candidate img { width: 100%; height: 108px; object-fit: contain; background: #f7f7f7; }
.catalog-candidate span { overflow: hidden; font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.catalog-image-form { margin-top: 2px; }
.catalog-confirm { display: flex; align-items: center; gap: 7px; color: var(--text-2); font-size: var(--fs-1); }
.catalog-confirm input { width: auto; }
.catalog-sku-details { padding: 0; }
.catalog-sku-details summary {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  font-size: var(--fs-2);
  font-weight: 600;
  cursor: pointer;
}
.catalog-sku-details summary span { color: var(--text-3); font-size: var(--fs-1); font-weight: 400; }
.catalog-sku-details[open] summary { border-bottom: 1px solid var(--border); }
.catalog-size-facts { min-width: 1320px; }
.catalog-review-page { display: grid; gap: 12px; }
.catalog-review-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.catalog-review-summary button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 11px 13px;
  color: var(--text-2);
  text-align: left;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
}
.catalog-review-summary button:hover,
.catalog-review-summary button.active { color: var(--accent); border-color: #9eb1cd; background: #f4f7fb; }
.catalog-review-summary button span { font-size: var(--fs-1); }
.catalog-review-summary button strong { font-size: var(--fs-4); }
.catalog-data-warning {
  display: flex;
  gap: 10px;
  padding: 9px 13px;
  color: #7c4a03;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: var(--radius);
}
.catalog-data-warning strong { white-space: nowrap; }
.catalog-review-table tbody tr { cursor: pointer; }
.catalog-review-table tbody tr:hover { background: #f7f8fa; }
.catalog-review-table td:nth-child(2) small { display: block; max-width: 250px; margin-top: 3px; color: var(--text-3); }
.catalog-priority { display: inline-grid; place-items: center; width: 30px; height: 22px; font-size: var(--fs-1); font-weight: 800; border-radius: 4px; }
.catalog-priority.p0 { color: #991b1b; background: #fef2f2; }
.catalog-priority.p1 { color: #92400e; background: #fffbeb; }
.catalog-priority.p2 { color: #3f3f46; background: #f4f4f5; }
.catalog-issue { display: inline-block; margin: 2px 3px 2px 0; padding: 2px 5px; color: #7c2d12; font-size: var(--fs-1); background: #fff7ed; border-radius: 3px; }
.btn.btn-sm { min-height: 28px; padding: 4px 8px; font-size: var(--fs-1); }

@media (max-width: 900px) {
  .catalog-product-snapshot { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog-snapshot-card.channels { grid-column: 1 / -1; }
  .catalog-channel-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog-style-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog-grain-note { align-items: flex-start; flex-direction: column; gap: 2px; }
  .catalog-color-grid { grid-template-columns: minmax(0, 1fr); }
  .catalog-operating-note { grid-template-columns: 1fr; }
  .catalog-operating-note p { grid-column: 1; }
  .catalog-operating-note div { align-items: flex-start; flex-direction: column; gap: 2px; }
  .catalog-operating-note span { white-space: normal; }
  .catalog-review-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog-style-image-card { grid-template-columns: 150px minmax(0, 1fr); }
  .catalog-style-image { height: 150px; }
  .catalog-decision-toolbar > small { text-align: left; }
  .catalog-decision-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .catalog-recommendation { grid-template-columns: 1fr; }
  .catalog-reconcile { padding-top: 8px; padding-left: 0; border-top: 1px solid #c8d6e6; border-left: 0; }
  .catalog-followup { grid-template-columns: 1fr; }
  .catalog-followup-actions { justify-content: flex-start; }
}

@media (max-width: 600px) {
  .catalog-product-snapshot { grid-template-columns: 1fr; }
  .catalog-snapshot-card.channels { grid-column: auto; }
  .catalog-channel-grid { grid-template-columns: 1fr; }
  .catalog-decision-grid { grid-template-columns: 1fr; }
  .catalog-scope-switch { margin-left: 0; }
  .catalog-followup-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

::selection { background: #dcecf8; color: var(--text); }

a { color: var(--info); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 2px; }

:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 2px;
  box-shadow: var(--focus-ring);
}

.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.mobile-only { display: none !important; }

/* ---------- Shell ---------- */
.layout {
  display: flex;
  min-height: 100vh;
  background: var(--bg);
}

/* ---------- Sidebar · light, calm (Linear-like) ---------- */
.sidebar {
  width: var(--sidebar-w);
  flex-shrink: 0;
  background: var(--sidebar);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  position: sticky;
  top: 0;
  height: 100vh;
  z-index: 30;
  padding: 0 10px 12px;
}

.sidebar .logo {
  height: var(--header-h);
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 0 8px;
  font-size: var(--fs-2);
  font-weight: 600;
  letter-spacing: 0;
  color: var(--text);
  border-bottom: 1px solid var(--border);
  margin: 0 -10px 12px;
  padding-left: 18px;
  padding-right: 18px;
}

.logo-mark-shell {
  width: 32px;
  height: 32px;
  padding: 5px 7px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: 8px;
  background: var(--brand-navy);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.14);
  flex-shrink: 0;
}

.logo-mark {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}

.brand-copy {
  display: flex;
  min-width: 0;
  flex-direction: column;
  line-height: 1.1;
}

.brand-wordmark {
  width: 132px;
  height: auto;
  display: block;
}

.brand-copy small {
  margin-top: 3px;
  color: var(--text-3);
  font-size: var(--fs-1);
  font-weight: 500;
  letter-spacing: 0.03em;
}

/* ---------- 五店经营简报 ---------- */
.boss-layout {
  min-height: 100vh;
  background: var(--bg);
}

.boss-brandbar {
  min-height: 64px;
  padding: 10px 30px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  color: #0a1f3f;
  background: #f5f6f7;
  border-bottom: 1px solid #dfe3e8;
}

.boss-brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
  min-width: 0;
}

.boss-brand-wordmark {
  width: 190px;
  height: auto;
  display: block;
}

.boss-brand small {
  color: #687386;
  font-size: var(--fs-1);
  font-weight: 500;
  letter-spacing: 0.16em;
}

.boss-brand-flag {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 3px;
}

.boss-brand-flag .boss-signal-flags {
  width: 214px;
  height: auto;
  display: block;
}

.boss-signal-flags text {
  fill: #a8b4c0;
  font: 10px Arial, sans-serif;
  letter-spacing: 1px;
}

.boss-view .content {
  width: 100%;
  min-height: calc(100vh - 64px);
}

.boss-view .page-header {
  top: 0;
}

.boss-view .page-body {
  max-width: 1680px;
  width: 100%;
  margin: 0 auto;
}

.boss-wechat-share {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin: 4px 0 18px;
  padding: 14px 16px;
  border: 1px solid #cbd7e8;
  border-radius: 12px;
  background: #f4f7fb;
}

.boss-wechat-share > div {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 4px;
}

.boss-wechat-share strong {
  color: var(--accent);
  font-size: var(--fs-2);
}

.boss-wechat-share span {
  color: var(--text-3);
  font-size: var(--fs-1);
  line-height: 1.5;
}

.boss-copy-wechat {
  flex: 0 0 auto;
  min-width: 148px;
  color: #fff;
  background: var(--accent);
  border-color: var(--accent);
}

.boss-wechat-fallback {
  margin: -8px 0 18px;
  padding: 14px 16px;
  border: 1px solid #e4bd6b;
  border-radius: 12px;
  background: #fffaf0;
}

.boss-wechat-fallback label {
  display: block;
  margin-bottom: 8px;
  color: #8a5b00;
  font-size: var(--fs-1);
  font-weight: 600;
}

.boss-wechat-fallback textarea {
  width: 100%;
  min-height: 220px;
  resize: vertical;
  white-space: pre-wrap;
  line-height: 1.65;
  font-size: var(--fs-2);
}

.sidebar .nav-label {
  padding: 8px 10px 6px;
  font-size: var(--fs-1);
  font-weight: 500;
  color: var(--text-3);
  letter-spacing: 0.02em;
}

.sidebar nav {
  display: flex;
  flex-direction: column;
  gap: 12px;
  overflow-y: auto;
  padding: 0 2px 8px;
}

.nav-group {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.nav-group-label {
  padding: 5px 8px 4px;
  color: var(--text-3);
  font-size: var(--fs-1);
  font-weight: 650;
  letter-spacing: 0.06em;
}

.nav-group-automation {
  gap: 2px;
  padding: 7px 6px;
  background: #f1f6fc;
  border: 1px solid #d6e3f2;
  border-radius: 10px;
}

.nav-group-automation .nav-group-label {
  padding-top: 1px;
  color: var(--accent);
  font-weight: 750;
  letter-spacing: 0.08em;
}

.nav-group-automation a {
  background: rgba(255, 255, 255, 0.56);
}

.nav-group-automation a:hover {
  background: #fff;
}

.nav-toggle {
  display: none;
}

.sidebar nav a {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 10px;
  color: var(--text-2);
  text-decoration: none;
  border-radius: var(--radius-sm);
  font-weight: 500;
  font-size: var(--fs-2);
  transition: background 0.12s var(--ease), color 0.12s var(--ease);
}

.sidebar nav a svg {
  width: 16px;
  height: 16px;
  opacity: 0.7;
  flex-shrink: 0;
}

.sidebar nav a:hover {
  background: var(--sidebar-hover);
  color: var(--text);
  text-decoration: none;
}

.sidebar nav a:hover svg { opacity: 1; }

.sidebar nav a.active {
  background: var(--sidebar-active);
  color: var(--accent);
  font-weight: 600;
  box-shadow: none;
}

.sidebar nav a.active svg { opacity: 1; }

.sidebar nav a[aria-current="page"] {
  box-shadow: inset 3px 0 0 var(--accent);
}

.sidebar .side-foot {
  margin-top: auto;
  padding: 12px 6px 4px;
  border-top: 1px solid var(--border);
  font-size: var(--fs-1);
  color: var(--text-3);
  line-height: 1.45;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.sidebar .side-foot-meta strong {
  display: block;
  color: var(--text-2);
  font-weight: 550;
  margin-bottom: 2px;
}

/* A/B 主题切换（仅 UI，无业务逻辑） */
.ab-panel { display: flex; flex-direction: column; gap: 6px; }

.ab-label {
  font-size: var(--fs-1);
  font-weight: 500;
  color: var(--text-3);
  padding: 0 4px;
  letter-spacing: 0.02em;
}

.ab-switch {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4px;
  padding: 3px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
}

.ab-switch button {
  height: 28px;
  border: none;
  background: transparent;
  border-radius: 4px;
  font-size: var(--fs-1);
  font-weight: 550;
  color: var(--text-3);
  cursor: pointer;
  font-family: inherit;
  transition: background 0.12s var(--ease), color 0.12s var(--ease);
}

.ab-switch button:hover { color: var(--text-2); }

.ab-switch button.active {
  background: var(--text);
  color: #fff;
}

/* ---------- Main content ---------- */
.content {
  flex: 1;
  min-width: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

/* ---------- 内容制作 · 同站嵌入 ---------- */
.integrated-studio-shell {
  display: flex;
  flex: 1;
  min-height: 0;
  flex-direction: column;
  background: #f7f7f5;
}
.integrated-studio-head {
  display: flex;
  min-height: 48px;
  flex: none;
  align-items: center;
  gap: 16px;
  padding: 0 18px;
  border-bottom: 1px solid var(--border);
  background: #fff;
}
.integrated-studio-title { display: flex; min-width: 0; align-items: baseline; gap: 9px; }
.integrated-studio-title strong { color: var(--text); font-size: var(--fs-2); }
.integrated-studio-title span {
  max-width: 300px;
  overflow: hidden;
  color: var(--text-3);
  font-size: var(--fs-1);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.integrated-studio-tabs {
  display: flex;
  min-width: 0;
  flex: 1 1 auto;
  align-self: stretch;
  align-items: center;
  gap: 2px;
  overflow-x: auto;
  scrollbar-width: none;
}
.integrated-studio-tabs::-webkit-scrollbar { display: none; }
.integrated-studio-tab {
  display: inline-flex;
  flex: none;
  height: 32px;
  align-items: center;
  padding: 0 11px;
  border-radius: 6px;
  color: var(--text-2);
  font-size: var(--fs-1);
  font-weight: 550;
}
.integrated-studio-tab:hover { background: #f4f4f5; color: var(--text); text-decoration: none; }
.integrated-studio-tab.active { background: #eef2f7; color: var(--accent); }
.integrated-studio-access { margin-left: auto; font-size: var(--fs-1); font-weight: 600; }
.integrated-studio-access.can-edit { color: #17894a; }
.integrated-studio-access.read-only { color: #a16207; }
.integrated-studio-access.inspiration-count { color: var(--accent); }
.integrated-studio-full { margin-left: 0; }
.integrated-studio-frame-wrap { position: relative; display: flex; flex: 1; min-height: 0; }
.integrated-studio-loading { position: absolute; inset: 0; display: grid; place-items: center; background: #f7f7f5; z-index: 1; }
.integrated-studio-frame { width: 100%; height: 100%; border: 0; background: #fbfaf6; opacity: 0; }
.integrated-studio-frame.is-ready { opacity: 1; transition: opacity .12s var(--ease); }
.integrated-studio-inspiration-root { flex: 1; min-height: 0; overflow: auto; background: #f2f0ea; }

/* ---------- 内容制作 · 旗舰店首页策划 ---------- */
.homepage-planner {
  display: flex;
  width: 100%;
  height: 100%;
  min-width: 1180px;
  min-height: 650px;
  flex-direction: column;
  padding: 16px 20px 20px;
  color: #15284a;
}
.homepage-planner-intro {
  display: flex;
  flex: none;
  align-items: flex-end;
  justify-content: space-between;
  gap: 30px;
  padding: 2px 0 14px;
  border-bottom: 1px solid rgba(20, 43, 82, .24);
}
.homepage-planner-intro > div > span { font: 9px var(--mono); letter-spacing: .13em; }
.homepage-planner-intro h1 { margin: 5px 0 0; font-size: var(--fs-5); font-weight: 590; letter-spacing: -.025em; }
.homepage-planner-intro p { margin: 4px 0 0; color: #68707a; font-size: var(--fs-1); }
.homepage-planner-intro dl { display: flex; flex: none; margin: 0; border-top: 1px solid #15284a; border-bottom: 1px solid #15284a; }
.homepage-planner-intro dl div { min-width: 84px; padding: 6px 10px 7px; border-right: 1px solid rgba(20, 43, 82, .2); }
.homepage-planner-intro dl div:last-child { min-width: 100px; border-right: 0; }
.homepage-planner-intro dt { color: #737a83; font-size: var(--fs-1); }
.homepage-planner-intro dd { margin: 1px 0 0; color: #15284a; font-size: var(--fs-1); font-weight: 620; }
.homepage-planner-toolbar { display: flex; min-height: 46px; flex: none; align-items: center; gap: 7px; }
.homepage-planner-toolbar > span { margin-left: 5px; color: #777e86; font-size: var(--fs-1); }
.homepage-planner-toolbar > .btn:first-of-type { margin-left: auto; }
.homepage-view-switch { display: flex; gap: 2px; padding: 2px; border: 1px solid rgba(20, 43, 82, .16); background: #f4f3ef; }
.homepage-view-switch button { height: 25px; padding: 0 9px; border: 0; background: transparent; color: #69717d; font: 550 9.5px var(--font); cursor: pointer; }
.homepage-view-switch button.active { background: #15284a; color: #fff; }
.homepage-planner-grid {
  display: grid;
  min-height: 0;
  flex: 1;
  grid-template-columns: 238px minmax(420px, 1fr) 354px;
  border: 1px solid rgba(20, 43, 82, .17);
  background: rgba(255,255,255,.74);
}
.homepage-module-outline,
.homepage-mobile-workbench,
.homepage-copy-editor { min-width: 0; min-height: 0; overflow: hidden; }
.homepage-module-outline { display: flex; flex-direction: column; border-right: 1px solid rgba(20, 43, 82, .14); background: #f6f5f1; }
.homepage-module-outline > header,
.homepage-copy-editor > header {
  display: flex;
  min-height: 48px;
  flex: none;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 11px;
  border-bottom: 1px solid rgba(20, 43, 82, .13);
  background: rgba(255,255,255,.72);
}
.homepage-module-outline > header { display: grid; justify-content: start; gap: 1px; }
.homepage-module-outline > header span,
.homepage-copy-editor > header span { color: #7c8490; font: 8px var(--mono); letter-spacing: .1em; }
.homepage-module-outline > header strong,
.homepage-copy-editor > header strong { color: #15284a; font-size: var(--fs-1); font-weight: 650; }
.homepage-module-outline > div { min-height: 0; overflow: auto; padding: 4px; }
.homepage-outline-item {
  position: relative;
  display: grid;
  width: 100%;
  grid-template-columns: 24px minmax(0, 1fr) 7px;
  gap: 7px;
  align-items: center;
  padding: 8px 7px;
  border: 1px solid transparent;
  background: transparent;
  color: #15284a;
  text-align: left;
  cursor: pointer;
}
.homepage-outline-item:hover { border-color: rgba(20, 43, 82, .14); background: #fff; }
.homepage-outline-item.active { border-color: rgba(20, 43, 82, .25); background: #fff; box-shadow: inset 2px 0 0 #15284a; }
.homepage-outline-index { color: #87909b; font: 9px var(--mono); }
.homepage-outline-item > span:nth-child(2) { display: grid; min-width: 0; gap: 1px; }
.homepage-outline-item small { color: #8b9198; font-size: var(--fs-1); }
.homepage-outline-item strong { font-size: var(--fs-1); font-weight: 650; }
.homepage-outline-item em { overflow: hidden; color: #767e87; font-size: var(--fs-1); font-style: normal; text-overflow: ellipsis; white-space: nowrap; }
.homepage-outline-item i,
.homepage-editor-status > span { width: 6px; height: 6px; border-radius: 50%; background: #788493; }
.homepage-outline-item i.is-ready,
.homepage-editor-status > span.is-ready { background: #20845a; }
.homepage-outline-item i.is-evidence,
.homepage-editor-status > span.is-evidence { background: #b47a23; }
.homepage-outline-item i.is-asset,
.homepage-editor-status > span.is-asset { background: #577aa4; }
.homepage-mobile-workbench { display: flex; flex-direction: column; background: #dedcd6; }
.homepage-mobile-workbench > header { display: flex; min-height: 48px; flex: none; align-items: center; justify-content: space-between; padding: 7px 12px; border-bottom: 1px solid rgba(20, 43, 82, .13); background: #f3f2ee; }
.homepage-mobile-workbench > header > div { display: grid; gap: 1px; }
.homepage-mobile-workbench > header strong { color: #15284a; font-size: var(--fs-1); }
.homepage-mobile-workbench > header span,
.homepage-mobile-workbench > header small { color: #7c838b; font-size: var(--fs-1); }
.homepage-mobile-canvas { width: 390px; min-height: 100%; margin: 0 auto; overflow: visible; background: #f7f5f0; box-shadow: 0 0 0 1px rgba(20,43,82,.12); }
.homepage-mobile-workbench { overflow-y: auto; }
.homepage-shop-strip { position: sticky; top: 0; z-index: 6; display: flex; height: 34px; align-items: center; justify-content: space-between; gap: 12px; padding: 0 12px; background: rgba(255,255,255,.94); color: #15284a; backdrop-filter: blur(8px); }
.homepage-shop-strip strong { font-size: var(--fs-1); letter-spacing: .08em; }
.homepage-shop-strip span { color: #657080; font-size: var(--fs-1); }
.homepage-preview-module { position: relative; min-height: 235px; overflow: hidden; border-top: 1px solid rgba(20,43,82,.12); background: #f4f1e9; color: #15284a; cursor: pointer; }
.homepage-preview-module:first-of-type { min-height: 390px; }
.homepage-preview-module:nth-of-type(3),
.homepage-preview-module:nth-last-of-type(1) { min-height: 285px; }
.homepage-preview-module > img { position: relative; display: block; width: 100%; height: 175px; object-fit: cover; }
.homepage-preview-module::after { position: absolute; inset: 0; content: ''; pointer-events: none; }
.homepage-preview-module.has-media { min-height: 0; }
.homepage-preview-module.has-media::after { height: 175px; bottom: auto; }
.homepage-preview-module:first-of-type > img { height: 230px; }
.homepage-preview-module:first-of-type.has-media::after { height: 230px; }
.homepage-preview-module.theme-image-dark::after { background: rgba(10, 27, 50, .22); }
.homepage-preview-module.theme-image-light::after { background: rgba(245, 242, 234, .16); }
.homepage-preview-module.theme-navy { background: #142b52; color: #fff; }
.homepage-preview-module.theme-canvas { background: #efe9dc; }
.homepage-preview-module.active { outline: 3px solid #2c5c92; outline-offset: -3px; }
.homepage-preview-copy { position: relative; z-index: 2; display: flex; min-height: inherit; flex-direction: column; justify-content: center; padding: 30px 26px; }
.homepage-preview-module.theme-image-dark { color: #fff; }
.homepage-preview-module.has-media .homepage-preview-copy { min-height: 165px; justify-content: center; padding: 22px 26px; }
.homepage-preview-module:first-of-type.has-media .homepage-preview-copy { min-height: 190px; }
.homepage-preview-module.theme-image-dark .homepage-preview-copy { background: #142b52; }
.homepage-preview-module.theme-image-light .homepage-preview-copy { background: #f3efe5; }
.homepage-preview-copy > span { font: 7.5px var(--mono); letter-spacing: .09em; opacity: .76; }
.homepage-preview-copy h2 { margin: 8px 0 0; font-size: var(--fs-5); font-weight: 630; line-height: 1.12; letter-spacing: -.04em; }
.homepage-preview-copy p { display: -webkit-box; max-width: 310px; margin: 12px 0 0; overflow: hidden; font-size: var(--fs-1); line-height: 1.72; opacity: .86; -webkit-box-orient: vertical; -webkit-line-clamp: 8; }
.homepage-preview-copy b { margin-top: 15px; font: 7.5px var(--mono); letter-spacing: .11em; }
.homepage-preview-copy em { align-self: flex-start; margin-top: 16px; padding-bottom: 2px; border-bottom: 1px solid currentColor; font-size: var(--fs-1); font-style: normal; font-weight: 650; }
.homepage-mobile-canvas[data-mode="copy"] { background: #fff; }
.homepage-mobile-canvas[data-mode="copy"] .homepage-preview-module { min-height: 0; background: #fff !important; color: #15284a !important; }
.homepage-mobile-canvas[data-mode="copy"] .homepage-preview-module > img,
.homepage-mobile-canvas[data-mode="copy"] .homepage-preview-module::after { display: none; }
.homepage-mobile-canvas[data-mode="copy"] .homepage-preview-copy { min-height: 0; padding: 22px 24px; }
.homepage-mobile-canvas[data-mode="copy"] .homepage-preview-copy h2 { font-size: var(--fs-4); }
.homepage-mobile-canvas[data-mode="copy"] .homepage-preview-copy p { display: block; max-width: none; }
.homepage-copy-editor { display: flex; flex-direction: column; border-left: 1px solid rgba(20, 43, 82, .14); background: #f7f6f2; }
.homepage-copy-editor > header > div:first-child { display: grid; min-width: 0; gap: 1px; }
.homepage-copy-editor > header > div:last-child { display: flex; gap: 3px; }
.homepage-copy-editor > header button { width: 27px; height: 27px; border: 1px solid rgba(20,43,82,.17); background: #fff; color: #526075; cursor: pointer; }
.homepage-copy-editor > div { min-height: 0; overflow-y: auto; padding: 11px 12px 20px; }
.homepage-copy-editor label { display: grid; gap: 4px; margin-bottom: 10px; }
.homepage-copy-editor label > span { color: #66707c; font-size: var(--fs-1); font-weight: 620; }
.homepage-copy-editor input,
.homepage-copy-editor textarea,
.homepage-copy-editor select { width: 100%; border: 1px solid rgba(20, 43, 82, .17); border-radius: 2px; background: #fff; color: #202838; font: 10px var(--font); }
.homepage-copy-editor input,
.homepage-copy-editor select { height: 31px; padding: 0 8px; }
.homepage-copy-editor textarea { padding: 8px; line-height: 1.55; resize: vertical; }
.homepage-copy-editor :disabled { background: #efefec; color: #737982; cursor: not-allowed; }
.homepage-editor-status { display: grid; grid-template-columns: 7px 1fr; gap: 7px; align-items: center; margin-bottom: 9px; padding: 7px 8px; border: 1px solid rgba(20,43,82,.14); background: #fff; }
.homepage-editor-status label { display: flex; margin: 0; align-items: center; justify-content: space-between; }
.homepage-editor-status label > span { font-size: var(--fs-1); }
.homepage-editor-status select { width: 126px; height: 26px; }
.homepage-evidence-note { display: grid; gap: 2px; margin-bottom: 10px; padding: 8px 9px; border-left: 2px solid #b47a23; background: #fbf3e5; }
.homepage-evidence-note strong { color: #885a17; font-size: var(--fs-1); }
.homepage-evidence-note span { color: #866f4e; font-size: var(--fs-1); line-height: 1.45; }
.homepage-editor-actions { display: flex; gap: 6px; padding-top: 2px; }
.homepage-editor-actions .btn { flex: 1; }
.homepage-readonly { margin: 10px 0 0; color: #8a6b31; font-size: var(--fs-1); text-align: center; }
@media (max-width: 1320px) {
  .homepage-planner-grid { grid-template-columns: 220px minmax(390px, 1fr) 330px; }
  .homepage-mobile-canvas { width: 360px; }
  .homepage-planner-intro dl div { min-width: 74px; }
}
.inspiration-page { min-width: 820px; min-height: 100%; padding: 24px 26px 44px; color: #15284a; }
.inspiration-intro {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 30px;
  max-width: 1480px;
  margin: 0 auto 22px;
  padding: 22px 0 20px;
  border-bottom: 1px solid rgba(20, 43, 82, .22);
}
.inspiration-kicker { display: block; margin-bottom: 8px; font-family: var(--mono); font-size: var(--fs-1); letter-spacing: .12em; }
.inspiration-intro h1 { margin: 0; font-size: var(--fs-5); font-weight: 580; letter-spacing: -.03em; }
.inspiration-intro p { max-width: 650px; margin: 7px 0 0; color: #5b6470; font-size: var(--fs-1); }
.inspiration-summary { display: flex; flex: none; margin: 0; border-top: 1px solid #15284a; border-bottom: 1px solid #15284a; }
.inspiration-summary div { min-width: 86px; padding: 8px 12px 9px; border-right: 1px solid rgba(20, 43, 82, .22); }
.inspiration-summary div:last-child { min-width: 120px; border-right: 0; }
.inspiration-summary dt { color: #6a7179; font-size: var(--fs-1); }
.inspiration-summary dd { margin: 2px 0 0; color: #15284a; font-size: var(--fs-2); font-weight: 620; }
.inspiration-toolbar {
  position: sticky;
  top: 0;
  z-index: 8;
  display: flex;
  max-width: 1480px;
  min-height: 46px;
  align-items: center;
  gap: 10px;
  margin: 0 auto 16px;
  padding: 7px 0;
  background: rgba(242, 240, 234, .94);
  backdrop-filter: blur(10px);
}
.inspiration-filters { display: flex; gap: 4px; }
.inspiration-filters button {
  height: 30px;
  padding: 0 10px;
  border: 1px solid rgba(20, 43, 82, .18);
  border-radius: 4px;
  background: transparent;
  color: #4d596b;
  font: 550 10.5px var(--font);
  cursor: pointer;
}
.inspiration-filters button:hover { border-color: #6e7d91; color: #15284a; }
.inspiration-filters button.active { border-color: #15284a; background: #15284a; color: #fff; }
.inspiration-search { position: relative; display: flex; width: 190px; height: 30px; margin-left: auto; align-items: center; }
.inspiration-search span { position: absolute; left: 9px; color: #7a8087; font-size: var(--fs-1); }
.inspiration-search input { width: 100%; height: 30px; padding: 4px 8px 4px 40px; border-color: rgba(20, 43, 82, .18); border-radius: 4px; background: rgba(255,255,255,.64); font-size: var(--fs-1); }
.inspiration-result-count { min-width: 58px; color: #69717c; font: 9.5px var(--mono); text-align: right; }
.inspiration-grid { display: grid; max-width: 1480px; margin: 0 auto; grid-template-columns: repeat(auto-fill, minmax(225px, 1fr)); gap: 22px 12px; }
.inspiration-card { min-width: 0; }
.inspiration-card > button { position: relative; display: block; width: 100%; padding: 0; overflow: hidden; border: 1px solid rgba(20, 43, 82, .14); border-radius: 3px; background: #dedbd2; cursor: zoom-in; }
.inspiration-card > button:focus-visible { outline: 2px solid #fff; box-shadow: 0 0 0 4px #1f3f72; }
.inspiration-card img { display: block; width: 100%; aspect-ratio: 3 / 4; background: #d8d5cd; object-fit: contain; transition: transform .35s var(--ease); }
.inspiration-card:hover img { transform: scale(1.012); }
.inspiration-card-number { position: absolute; right: 8px; bottom: 7px; min-width: 25px; padding: 3px 5px; background: rgba(10, 26, 50, .88); color: #fff; font: 9px var(--mono); }
.inspiration-card-copy { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 10px; align-items: baseline; padding: 8px 1px 0; }
.inspiration-card-copy strong { overflow: hidden; color: #15284a; font-size: var(--fs-1); font-weight: 620; text-overflow: ellipsis; white-space: nowrap; }
.inspiration-card-copy span { color: #747b83; font-size: var(--fs-1); }
.inspiration-empty { grid-column: 1 / -1; padding: 80px 20px; border-top: 1px solid rgba(20, 43, 82, .18); color: #737981; text-align: center; }
.inspiration-dialog { width: min(92vw, 1160px); max-width: none; height: min(92vh, 940px); max-height: none; padding: 0; overflow: hidden; border: 0; border-radius: 4px; background: #eeeae1; box-shadow: 0 24px 80px rgba(8, 19, 36, .34); }
.inspiration-dialog::backdrop { background: rgba(8, 19, 36, .72); backdrop-filter: blur(4px); }
.inspiration-dialog form { position: absolute; top: 12px; right: 12px; z-index: 2; }
.inspiration-dialog-close { height: 30px; padding: 0 11px; border: 1px solid rgba(255,255,255,.42); border-radius: 3px; background: rgba(12, 28, 53, .9); color: #fff; font: 550 10.5px var(--font); cursor: pointer; }
.inspiration-dialog-media { display: grid; height: calc(100% - 58px); padding: 18px; place-items: center; background: #d8d5cd; }
.inspiration-dialog-media img { display: block; max-width: 100%; max-height: 100%; object-fit: contain; box-shadow: 0 10px 30px rgba(17, 24, 39, .15); }
.inspiration-dialog footer { display: flex; height: 58px; align-items: center; justify-content: space-between; gap: 16px; padding: 0 18px; border-top: 1px solid rgba(20,43,82,.15); background: #f7f5f0; }
.inspiration-dialog footer div { display: flex; min-width: 0; align-items: baseline; gap: 10px; }
.inspiration-dialog footer strong { color: #15284a; font-size: var(--fs-1); }
.inspiration-dialog footer span { color: #727881; font-size: var(--fs-1); }
.inspiration-dialog footer .inspiration-dialog-copy { overflow: hidden; }
.inspiration-dialog footer .inspiration-dialog-copy strong,
.inspiration-dialog footer .inspiration-dialog-copy span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inspiration-dialog footer .inspiration-dialog-actions { flex: none; align-items: center; gap: 6px; }

/* ---------- 内容制作 · 视觉生成台 ---------- */
.integrated-studio-generation-root { flex: 1; min-height: 0; overflow: auto; background: #ecebe7; }
.visual-gen-page { min-width: 1040px; min-height: 100%; padding: 24px 26px 48px; color: #142b52; }
.visual-gen-intro {
  display: flex;
  max-width: 1500px;
  align-items: flex-end;
  justify-content: space-between;
  gap: 32px;
  margin: 0 auto 18px;
  padding: 18px 0 20px;
  border-bottom: 1px solid rgba(20, 43, 82, .25);
}
.visual-gen-kicker { display: block; margin-bottom: 7px; font: 10px var(--mono); letter-spacing: .14em; }
.visual-gen-intro h1 { margin: 0; font-size: var(--fs-5); font-weight: 580; letter-spacing: -.035em; }
.visual-gen-intro p { max-width: 680px; margin: 7px 0 0; color: #626a73; font-size: var(--fs-1); }
.visual-gen-provider-status {
  display: grid;
  min-width: 275px;
  grid-template-columns: 9px 1fr;
  gap: 2px 9px;
  align-items: center;
  padding: 10px 12px;
  border-top: 1px solid #142b52;
  border-bottom: 1px solid #142b52;
}
.visual-gen-provider-status > span { width: 7px; height: 7px; grid-row: 1 / 3; border-radius: 50%; background: #b5802b; }
.visual-gen-provider-status.is-ready > span { background: #188451; }
.visual-gen-provider-status strong { font-size: var(--fs-1); font-weight: 650; }
.visual-gen-provider-status small { color: #6d737a; font-size: var(--fs-1); }
.visual-gen-layout { display: grid; max-width: 1500px; margin: 0 auto; grid-template-columns: minmax(650px, 1.55fr) minmax(330px, .75fr); gap: 14px; align-items: start; }
.visual-gen-composer { display: grid; gap: 10px; }
.visual-gen-block { border: 1px solid rgba(20, 43, 82, .16); background: rgba(255, 255, 255, .76); }
.visual-gen-block-head { display: flex; min-height: 42px; align-items: center; justify-content: space-between; gap: 18px; padding: 0 14px; border-bottom: 1px solid rgba(20, 43, 82, .13); }
.visual-gen-block-head > div { display: flex; align-items: center; gap: 9px; }
.visual-gen-block-head > div > span { color: #8791a0; font: 9px var(--mono); }
.visual-gen-block-head strong { color: #142b52; font-size: var(--fs-1); font-weight: 650; }
.visual-gen-block-head > small { color: #737b85; font-size: var(--fs-1); }
.visual-gen-prompt-block { padding-bottom: 2px; }
.visual-gen-field { position: relative; display: grid; gap: 6px; margin: 12px 14px; }
.visual-gen-field > span,
.visual-gen-settings label > span { color: #5f6873; font-size: var(--fs-1); font-weight: 600; }
.visual-gen-field input,
.visual-gen-field textarea,
.visual-gen-style-search input,
.visual-gen-settings select { border: 1px solid rgba(20, 43, 82, .17); border-radius: 3px; background: #fff; color: #172033; font: 11px var(--font); }
.visual-gen-field input { height: 34px; padding: 0 10px; }
.visual-gen-field textarea { min-height: 138px; padding: 10px 11px 24px; line-height: 1.65; resize: vertical; }
.visual-gen-field > small { position: absolute; right: 8px; bottom: 7px; color: #8a9097; font: 8.5px var(--mono); }
.visual-gen-presets { display: flex; flex-wrap: wrap; gap: 5px; margin: 10px 14px 0; }
.visual-gen-presets button {
  height: 27px;
  padding: 0 9px;
  border: 1px solid rgba(20, 43, 82, .18);
  border-radius: 3px;
  background: #f5f4f0;
  color: #536073;
  font: 550 9.5px var(--font);
  cursor: pointer;
}
.visual-gen-presets button:hover,
.visual-gen-presets button.active { border-color: #142b52; background: #142b52; color: #fff; }
.visual-gen-check { display: grid; grid-template-columns: 15px 1fr; gap: 8px; margin: 13px 14px 14px; align-items: start; cursor: pointer; }
.visual-gen-check input { margin: 2px 0 0; accent-color: #142b52; }
.visual-gen-check span { display: grid; gap: 2px; }
.visual-gen-check strong { font-size: var(--fs-1); font-weight: 620; }
.visual-gen-check small { color: #757c85; font-size: var(--fs-1); line-height: 1.45; }
.visual-gen-style-search { display: flex; gap: 6px; padding: 12px 14px 8px; }
.visual-gen-style-search input { width: 260px; height: 32px; padding: 0 9px; text-transform: uppercase; }
.visual-gen-assets { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 6px; padding: 4px 14px 14px; }
.visual-gen-assets-empty { grid-column: 1 / -1; padding: 22px 16px; border: 1px dashed rgba(20, 43, 82, .2); color: #7a8189; font-size: var(--fs-1); line-height: 1.55; text-align: center; }
.visual-gen-asset { position: relative; padding: 0; overflow: hidden; border: 1px solid rgba(20, 43, 82, .14); border-radius: 2px; background: #dddcd8; cursor: pointer; }
.visual-gen-asset img { display: block; width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.visual-gen-asset > span { position: absolute; right: 4px; bottom: 4px; padding: 3px 5px; background: rgba(14, 30, 55, .86); color: #fff; font-size: var(--fs-1); }
.visual-gen-asset.is-selected { outline: 2px solid #142b52; outline-offset: -2px; }
.visual-gen-asset.is-selected::after { position: absolute; inset: 0; border: 2px solid #fff; content: ''; pointer-events: none; }
.visual-gen-settings { display: grid; grid-template-columns: 1.65fr repeat(4, 1fr); gap: 7px; padding: 12px 14px; }
.visual-gen-settings label { display: grid; gap: 5px; }
.visual-gen-settings select { width: 100%; height: 32px; padding: 0 8px; }
.visual-gen-submit-row { display: flex; min-height: 64px; align-items: center; justify-content: space-between; gap: 24px; margin: 0 14px; padding: 10px 0; border-top: 1px solid rgba(20, 43, 82, .13); }
.visual-gen-submit-row > div { display: grid; grid-template-columns: auto auto; gap: 1px 9px; align-items: baseline; }
.visual-gen-submit-row span { color: #69717b; font-size: var(--fs-1); }
.visual-gen-submit-row strong { color: #142b52; font: 650 17px var(--mono); }
.visual-gen-submit-row small { grid-column: 1 / -1; color: #858b92; font-size: var(--fs-1); }
.visual-gen-submit-row button { min-width: 132px; height: 36px; }
.visual-gen-message { min-height: 34px; margin: 0; padding: 9px 14px; border-top: 1px solid rgba(20, 43, 82, .1); background: #f5f4f0; color: #69717a; font-size: var(--fs-1); }
.visual-gen-message[data-kind="success"] { color: #187345; }
.visual-gen-message[data-kind="warning"] { color: #9a6819; }
.visual-gen-message[data-kind="error"] { color: #b43c35; }
.visual-gen-history { position: sticky; top: 10px; max-height: calc(100vh - 96px); overflow: auto; border: 1px solid rgba(20, 43, 82, .16); background: #f6f5f1; }
.visual-gen-history > header { position: sticky; top: 0; z-index: 2; display: flex; min-height: 65px; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 12px; border-bottom: 1px solid rgba(20, 43, 82, .14); background: rgba(246, 245, 241, .96); backdrop-filter: blur(8px); }
.visual-gen-history > header span { color: #7b828b; font: 8.5px var(--mono); letter-spacing: .11em; }
.visual-gen-history h2 { margin: 2px 0 0; font-size: var(--fs-3); font-weight: 600; }
.visual-gen-jobs { display: grid; }
.visual-gen-job { padding: 12px; border-bottom: 1px solid rgba(20, 43, 82, .13); }
.visual-gen-job > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.visual-gen-job > header > div { display: flex; min-width: 0; align-items: center; gap: 7px; }
.visual-gen-job-id { color: #89909a; font: 8.5px var(--mono); }
.visual-gen-job > header strong { overflow: hidden; color: #142b52; font-size: var(--fs-1); font-weight: 640; text-overflow: ellipsis; white-space: nowrap; }
.visual-gen-job-status { flex: none; padding: 3px 5px; border: 1px solid #c5c8c8; color: #6f757d; font-size: var(--fs-1); }
.visual-gen-job-status.is-done { border-color: #96bba5; color: #187345; }
.visual-gen-job-status.is-failed { border-color: #d7a6a1; color: #b43c35; }
.visual-gen-job-status.is-running { border-color: #d3b788; color: #97671d; }
.visual-gen-job-images { display: grid; margin-top: 9px; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3px; }
.visual-gen-job-images button { padding: 0; overflow: hidden; border: 0; background: #d9d8d4; cursor: zoom-in; }
.visual-gen-job-images img { display: block; width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.visual-gen-job > p { display: -webkit-box; margin: 8px 0 0; overflow: hidden; color: #626a74; font-size: var(--fs-1); line-height: 1.5; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.visual-gen-job > footer { display: flex; flex-wrap: wrap; gap: 4px 10px; margin-top: 7px; color: #8a9097; font: 8px var(--mono); }
.visual-gen-job-error { margin-top: 7px; padding: 6px; background: #f8eae8; color: #a43a34; font-size: var(--fs-1); }
.visual-gen-history-empty { display: grid; min-height: 190px; place-content: center; gap: 5px; padding: 25px; color: #777f88; text-align: center; }
.visual-gen-history-empty strong { color: #4c5664; font-size: var(--fs-1); }
.visual-gen-history-empty span { max-width: 260px; font-size: var(--fs-1); line-height: 1.5; }
.visual-gen-dialog { width: min(92vw, 1100px); max-width: none; height: min(92vh, 930px); max-height: none; padding: 0; overflow: hidden; border: 0; border-radius: 3px; background: #e3e1da; box-shadow: 0 24px 80px rgba(8, 19, 36, .34); }
.visual-gen-dialog::backdrop { background: rgba(8, 19, 36, .74); backdrop-filter: blur(4px); }
.visual-gen-dialog form { position: absolute; top: 12px; right: 12px; z-index: 2; }
.visual-gen-dialog form button { height: 29px; padding: 0 10px; border: 1px solid rgba(255,255,255,.42); border-radius: 3px; background: rgba(12, 28, 53, .9); color: #fff; font-size: var(--fs-1); cursor: pointer; }
.visual-gen-dialog > div { display: grid; height: calc(100% - 56px); padding: 18px; place-items: center; }
.visual-gen-dialog img { display: block; max-width: 100%; max-height: 100%; object-fit: contain; box-shadow: 0 10px 30px rgba(17, 24, 39, .15); }
.visual-gen-dialog footer { display: flex; height: 56px; align-items: center; justify-content: space-between; gap: 16px; padding: 0 17px; border-top: 1px solid rgba(20,43,82,.15); background: #f7f5f0; }
.visual-gen-dialog footer strong { font-size: var(--fs-1); }
.visual-gen-recipes {
  max-width: 1500px;
  margin: 0 auto 14px;
  border: 1px solid rgba(20, 43, 82, .17);
  background: rgba(255, 255, 255, .72);
}
.visual-gen-recipes > header {
  display: flex;
  min-height: 52px;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 9px 14px;
  border-bottom: 1px solid rgba(20, 43, 82, .13);
}
.visual-gen-recipes > header > div { display: grid; gap: 3px; }
.visual-gen-recipes > header span { color: #758090; font: 8.5px var(--mono); letter-spacing: .1em; }
.visual-gen-recipes > header strong { color: #142b52; font-size: var(--fs-1); font-weight: 620; }
.visual-gen-recipes > header a { color: #142b52; font-size: var(--fs-1); font-weight: 620; }
.visual-gen-recipes > div { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.visual-gen-recipes > div > button {
  position: relative;
  display: grid;
  min-height: 126px;
  gap: 5px;
  align-content: start;
  padding: 14px;
  border: 0;
  border-right: 1px solid rgba(20, 43, 82, .12);
  background: transparent;
  color: #142b52;
  cursor: pointer;
  text-align: left;
}
.visual-gen-recipes > div > button:last-child { border-right: 0; }
.visual-gen-recipes > div > button::after { position: absolute; right: 14px; bottom: 13px; color: #8c95a1; font-size: var(--fs-2); content: '↗'; }
.visual-gen-recipes > div > button:hover { background: rgba(20, 43, 82, .035); }
.visual-gen-recipes > div > button.active { background: #142b52; color: #fff; }
.visual-gen-recipes > div > button > span { opacity: .6; font: 8px var(--mono); letter-spacing: .1em; }
.visual-gen-recipes > div > button > strong { margin-top: 3px; font-size: var(--fs-3); font-weight: 640; }
.visual-gen-recipes > div > button > p { max-width: 250px; margin: 0; opacity: .73; font-size: var(--fs-1); line-height: 1.55; }
.visual-gen-recipes > div > button > small { margin-top: 5px; opacity: .58; font-size: var(--fs-1); }
.visual-gen-series { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 12px 14px 0; gap: 6px; }
.visual-gen-series button {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 9px;
  min-height: 48px;
  padding: 7px 9px;
  border: 1px solid rgba(20,43,82,.14);
  background: #f8f7f3;
  color: #526071;
  cursor: pointer;
  text-align: left;
}
.visual-gen-series button > i { width: 5px; height: 30px; flex: none; background: var(--series-color); }
.visual-gen-series button > span { display: grid; min-width: 0; gap: 2px; }
.visual-gen-series button strong { color: #142b52; font-size: var(--fs-1); font-weight: 650; }
.visual-gen-series button small { overflow: hidden; opacity: .72; font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.visual-gen-series button.active { border-color: #142b52; background: #eef1f4; box-shadow: inset 0 -2px #142b52; }
.visual-gen-variable-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; padding: 12px 14px 0; }
.visual-gen-variable-grid label { display: grid; gap: 5px; }
.visual-gen-variable-grid label > span { color: #5f6873; font-size: var(--fs-1); font-weight: 600; }
.visual-gen-variable-grid select {
  width: 100%;
  height: 34px;
  padding: 0 8px;
  border: 1px solid rgba(20,43,82,.17);
  border-radius: 3px;
  background: #fff;
  color: #172033;
  font: 10px var(--font);
}
.visual-gen-notes { margin-top: 11px; }
.visual-gen-reference-rule { margin: 0; padding: 9px 14px; border-bottom: 1px solid rgba(20,43,82,.09); background: #f4f4f1; color: #627064; font-size: var(--fs-1); }
.visual-gen-reference-rule[data-kind="warning"] { background: #fbf5e8; color: #93651f; }
.visual-gen-reference-tray { display: flex; min-height: 50px; flex-wrap: wrap; gap: 6px; align-items: center; padding: 9px 14px 2px; }
.visual-gen-reference-tray > span { color: #7c838b; font-size: var(--fs-1); line-height: 1.5; }
.visual-gen-reference-chip { display: grid; min-width: 190px; max-width: 255px; grid-template-columns: 34px minmax(0,1fr) 20px; align-items: center; gap: 7px; padding: 4px; border: 1px solid rgba(20,43,82,.14); background: #fff; }
.visual-gen-reference-chip img, .visual-gen-reference-chip > i { display: block; width: 34px; height: 38px; background: #d9d9d4; object-fit: cover; }
.visual-gen-reference-chip > span { display: grid; min-width: 0; gap: 2px; }
.visual-gen-reference-chip strong { overflow: hidden; color: #27384f; font-size: var(--fs-1); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.visual-gen-reference-chip small { color: #878d94; font-size: var(--fs-1); }
.visual-gen-reference-chip button { width: 20px; height: 24px; padding: 0; border: 0; background: transparent; color: #8b9198; cursor: pointer; }
.visual-gen-contract { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); border: 1px solid #142b52; background: #142b52; gap: 1px; }
.visual-gen-contract > div { display: grid; min-height: 77px; align-content: start; gap: 6px; padding: 12px; background: #f4f4f1; }
.visual-gen-contract span { color: #78818c; font: 8px var(--mono); letter-spacing: .09em; }
.visual-gen-contract strong { color: #24364e; font-size: var(--fs-1); font-weight: 570; line-height: 1.55; }
.visual-gen-advanced details > summary { display: flex; min-height: 52px; align-items: center; justify-content: space-between; gap: 16px; padding: 9px 14px; cursor: pointer; list-style: none; }
.visual-gen-advanced details > summary::-webkit-details-marker { display: none; }
.visual-gen-advanced summary > span { display: grid; gap: 2px; }
.visual-gen-advanced summary strong { color: #253750; font-size: var(--fs-1); }
.visual-gen-advanced summary small { color: #81878e; font-size: var(--fs-1); }
.visual-gen-advanced summary b { color: #687482; font-size: var(--fs-1); font-weight: 550; }
.visual-gen-advanced details[open] > summary { border-bottom: 1px solid rgba(20,43,82,.12); }
.visual-gen-reuse-note { margin: 0 14px 13px; padding: 8px 9px; background: #e9f2eb; color: #27734a; font-size: var(--fs-1); }
.visual-gen-settings { grid-template-columns: 1.45fr repeat(3, 1fr); }
.visual-gen-history > header p { max-width: 225px; margin: 3px 0 0; color: #7d848c; font-size: var(--fs-1); line-height: 1.4; }
.visual-gen-job.is-reused { box-shadow: inset 3px 0 #142b52; background: #eef1f4; }
.visual-gen-job-images > div { position: relative; min-width: 0; }
.visual-gen-job-images > div > button:first-child { width: 100%; }
.visual-gen-job-images .visual-gen-output-ref {
  position: absolute;
  right: 4px;
  bottom: 4px;
  width: auto;
  padding: 3px 5px;
  border: 1px solid rgba(255,255,255,.35);
  border-radius: 2px;
  background: rgba(12,28,53,.86);
  color: #fff;
  font: 7.5px var(--font);
  cursor: pointer;
}
.visual-gen-job-images .visual-gen-output-ref.is-selected { background: #187345; }
.visual-gen-job-actions { display: flex; gap: 6px; margin-top: 9px; }
.visual-gen-job-actions button, .visual-gen-job-actions a { height: 25px; padding: 0 7px; border: 1px solid rgba(20,43,82,.15); background: transparent; color: #43546b; font: 8px var(--font); line-height: 23px; cursor: pointer; text-decoration: none; }
.visual-gen-job-actions button:hover, .visual-gen-job-actions a:hover { border-color: #142b52; color: #142b52; }
@media (max-width: 1180px) {
  .visual-gen-layout { grid-template-columns: minmax(620px, 1fr) 320px; }
  .visual-gen-assets { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .visual-gen-recipes > div > button { min-height: 140px; }
}
.studio-entry-page { flex: 1; min-height: 0; overflow: auto; padding: 28px; }
.studio-entry-page tr.is-focus { background: #f4f8ff; box-shadow: inset 3px 0 0 var(--accent); }
.studio-entry-intro {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
  max-width: 980px;
  margin: 0 auto 18px;
  padding: 26px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fff;
}
.studio-entry-intro span { color: var(--accent); font-size: var(--fs-1); font-weight: 700; letter-spacing: .08em; }
.studio-entry-intro h1 { margin: 7px 0 5px; color: var(--text); font-size: var(--fs-5); font-weight: 650; }
.studio-entry-intro p { max-width: 640px; margin: 0; color: var(--text-3); font-size: var(--fs-1); line-height: 1.7; }
.studio-entry-grid { display: grid; max-width: 980px; margin: 0 auto; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.studio-entry-card { display: flex; min-height: 178px; flex-direction: column; padding: 20px; border: 1px solid var(--border); border-radius: 9px; background: #fff; color: var(--text); text-decoration: none; }
.studio-entry-card:hover { border-color: var(--border-strong); box-shadow: var(--shadow-sm); text-decoration: none; }
.studio-entry-card > span { color: var(--text-3); font: 10px var(--mono); }
.studio-entry-card > strong { margin-top: 24px; font-size: var(--fs-3); }
.studio-entry-card > p { margin: 6px 0 16px; color: var(--text-3); font-size: var(--fs-1); line-height: 1.6; }
.studio-entry-card > b { margin-top: auto; color: var(--accent); font-size: var(--fs-1); }
@media (max-width: 860px) {
  .integrated-studio-head { gap: 8px; padding: 0 10px; }
  .integrated-studio-title span,
  .integrated-studio-full { display: none; }
  .integrated-studio-tabs { margin-left: auto; }
  .studio-entry-page { padding: 14px; }
  .studio-entry-intro { align-items: flex-start; flex-direction: column; padding: 20px; }
  .studio-entry-grid { grid-template-columns: 1fr; }
  .studio-entry-card { min-height: 148px; }
}

/* Page header bar — title / meta / primary action */
.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: var(--header-h);
  padding: 0 28px;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  position: sticky;
  top: 0;
  z-index: 20;
}

.page-header-left {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.page-header h1 {
  font-size: var(--fs-2);
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--text);
  white-space: nowrap;
}

.page-meta {
  min-width: 0;
  font-size: var(--fs-1);
  color: var(--text-3);
  font-variant-numeric: tabular-nums;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.page-header-right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

/* Body under sticky header */
.page-body {
  padding: 20px 28px 48px;
  flex: 1;
}

/* Legacy page-title (detail etc.) */
.page-title {
  font-size: var(--fs-2);
  font-weight: 600;
  letter-spacing: -0.01em;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  gap: 8px;
  color: var(--text);
}

/* ---------- Surfaces ---------- */
.card {
  min-width: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 16px 18px;
  margin-bottom: 16px;
}

.card.card-flush {
  padding: 0;
  overflow: hidden;
}

.card.card-flush .toolbar {
  padding: 12px 16px;
  margin: 0;
  border-bottom: 1px solid var(--border);
  background: #fcfcfc;
}

.card.card-flush .table-wrap { margin: 0; }

.card-hint {
  background: #fafafa;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 12px 14px;
  margin-bottom: 16px;
  font-size: var(--fs-1);
  color: var(--text-2);
  line-height: 1.55;
}

.section {
  margin-top: 28px;
}

.section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
  margin-bottom: 10px;
}
.section-head > * { min-width: 0; }

.section-title {
  font-size: var(--fs-2);
  font-weight: 600;
  color: var(--text);
  letter-spacing: -0.01em;
}

.section-sub {
  font-size: var(--fs-1);
  color: var(--text-3);
  line-height: 1.5;
  overflow-wrap: anywhere;
}

/* ---------- Empty / loading ---------- */
.loading,
.empty {
  text-align: center;
  padding: 56px 20px;
  color: var(--text-3);
  font-size: var(--fs-2);
}

.loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
}

.loading::before {
  content: "";
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: 2px solid var(--border-strong);
  border-top-color: var(--text);
  animation: spin 0.65s linear infinite;
}

@keyframes spin { to { transform: rotate(360deg); } }

.empty {
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-lg);
  background: #fcfcfc;
  margin: 8px 0;
}

/* ---------- Toolbar / filters ---------- */
.toolbar {
  display: flex;
  gap: 8px;
  align-items: center;
  margin-bottom: 0;
  flex-wrap: wrap;
}

.toolbar label {
  color: var(--text-2);
  font-weight: 500;
  font-size: var(--fs-1);
}

.toolbar > span { color: var(--text-3); font-size: var(--fs-1); }

.toolbar-spacer { flex: 1; min-width: 8px; }

/* ---------- Controls ---------- */
input:not([type]),
input[type="text"],
input[type="email"],
input[type="date"],
input[type="week"],
input[type="month"],
input[type="datetime-local"],
input[type="number"],
input[type="file"],
select,
textarea {
  height: 32px;
  padding: 0 10px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  font-size: var(--fs-2);
  outline: none;
  background: var(--surface);
  color: var(--text);
  transition: border-color 0.12s var(--ease), box-shadow 0.12s var(--ease);
  font-family: inherit;
  line-height: 1.4;
}

textarea {
  height: auto;
  min-height: 84px;
  padding: 8px 10px;
  line-height: 1.55;
  resize: vertical;
}

input:hover,
select:hover,
textarea:hover {
  border-color: #a1a1aa;
}

input:focus,
select:focus,
textarea:focus {
  border-color: var(--focus);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.15);
}

input::placeholder { color: var(--text-3); }

select {
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23a1a1aa' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 8px center;
  padding-right: 28px;
}

.search-box { position: relative; }

.search-box svg {
  position: absolute;
  left: 9px;
  top: 50%;
  transform: translateY(-50%);
  width: 14px;
  height: 14px;
  color: var(--text-3);
  pointer-events: none;
}

.search-box input {
  padding-left: 30px;
  width: 260px;
  background: var(--surface);
}

/* ---------- Buttons · flat, decisive ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 32px;
  padding: 0 12px;
  border: 1px solid var(--border-strong);
  border-radius: var(--radius-sm);
  background: var(--surface);
  cursor: pointer;
  font-size: var(--fs-2);
  font-weight: 500;
  color: var(--text);
  transition: background 0.12s var(--ease), border-color 0.12s var(--ease), color 0.12s var(--ease);
  font-family: inherit;
  white-space: nowrap;
  user-select: none;
}

.btn:hover {
  background: #f4f4f5;
  border-color: #a1a1aa;
}

.btn:active { background: #e4e4e7; }

.btn-primary {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--accent-fg);
}

.btn-primary:hover {
  background: var(--accent-hover);
  border-color: var(--accent-hover);
  color: var(--accent-fg);
}

.btn-danger {
  color: var(--danger);
  border-color: var(--danger-border);
  background: var(--surface);
}

.btn-danger:hover {
  background: var(--danger-bg);
  border-color: #fca5a5;
  color: var(--danger);
}

.btn-sm {
  height: 26px;
  padding: 0 9px;
  font-size: var(--fs-1);
  border-radius: 5px;
}

.btn-ghost {
  border-color: transparent;
  background: transparent;
  color: var(--text-2);
}

.btn-ghost:hover {
  background: #f4f4f5;
  border-color: transparent;
  color: var(--text);
}

/* ---------- Data table · dense, scannable ---------- */
.table-wrap {
  min-width: 0;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-inline: contain;
  scrollbar-gutter: stable;
}

table.grid {
  /* 不拉伸：窄表紧凑左对齐（消除大空白），宽表超出时由 .table-wrap 横向滚动 */
  width: max-content;
  border-collapse: collapse;
  background: var(--surface);
  font-size: var(--fs-2);
}

table.grid th,
table.grid td {
  padding: 9px 14px;
  border-bottom: 1px solid var(--border);
  text-align: left;
  white-space: nowrap;
  vertical-align: middle;
}

table.grid th {
  background: #fafafa;
  font-weight: 500;
  color: var(--text-3);
  font-size: var(--fs-1);
  letter-spacing: 0.01em;
  position: sticky;
  top: 0;
  z-index: 1;
}

table.grid tbody tr {
  transition: background 0.08s var(--ease);
}

table.grid small { font-size: var(--fs-1); }

table.grid tbody tr[data-sku] { cursor: pointer; }

table.grid tbody tr:hover { background: #fafafa; }

table.grid tbody tr:last-child td { border-bottom: none; }

table.grid td.num,
table.grid th.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum";
}

table.grid td.num { font-weight: 500; }

table.grid .sku-code {
  font-family: var(--mono);
  font-size: var(--fs-1);
  color: var(--text-2);
}

table.grid .name-cell {
  font-weight: 500;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;      /* 长品名单行省略，不再撑宽列；悬停由 JS 补 title 显全名 */
  max-width: 240px;
}

/* Thumbnails — compact */
.thumb {
  width: 36px;
  height: 36px;
  /* 款图是混比例的（天猫方图 + 共享盘竖版）；cover 会把竖版图裁成方块、切掉头脚，
     与款色图/款头图保持同一口径用 contain。 */
  object-fit: contain;
  border-radius: 6px;
  background: #f4f4f5;
  display: inline-block;
  vertical-align: middle;
  border: 1px solid var(--border);
}

.thumb-placeholder {
  width: 36px;
  height: 36px;
  border-radius: 6px;
  background: #f4f4f5;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-3);
  font-size: var(--fs-1);
  font-weight: 500;
  vertical-align: middle;
  border: 1px solid var(--border);
}
.thumb-placeholder.thumb-error {
  color: var(--danger);
  background: var(--danger-bg);
  border-color: var(--danger-border);
  font-size: var(--fs-1);
  text-align: center;
  line-height: 1.15;
}
.tag.catalog-missing { color: var(--danger); border-color: var(--danger-border); background: var(--danger-bg); }

/* ---------- Tags — quiet status chips ---------- */
.tag {
  display: inline-flex;
  align-items: center;
  height: 20px;
  padding: 0 7px;
  border-radius: 4px;
  font-size: var(--fs-1);
  font-weight: 500;
  background: #f4f4f5;
  color: var(--text-2);
  border: 1px solid var(--border);
  line-height: 1;
}

/* no decorative dots */
.tag::before { display: none; }

.tag.status-新品 {
  background: var(--info-bg);
  color: var(--info);
  border-color: #bfdbfe;
}

.tag.status-主推 {
  background: var(--success-bg);
  color: var(--success);
  border-color: var(--success-border);
}

.tag.status-清仓 {
  background: var(--warning-bg);
  color: var(--warning);
  border-color: var(--warning-border);
}

.tag.status-下架 {
  background: #f4f4f5;
  color: var(--text-3);
  border-color: var(--border);
}

/* ---------- Modal ---------- */
.modal-mask {
  position: fixed;
  inset: 0;
  background: rgba(24, 24, 27, 0.4);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 100;
  padding: 20px;
  animation: fadeIn 0.12s var(--ease);
}

@keyframes fadeIn { from { opacity: 0; } }

.modal {
  background: var(--surface);
  border-radius: var(--radius-lg);
  width: 640px;
  max-width: 100%;
  max-height: 88vh;
  overflow: auto;
  padding: 20px 22px;
  border: 1px solid var(--border);
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.12);
  animation: rise 0.16s var(--ease);
}

@keyframes rise {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}

.modal h3 {
  margin-bottom: 16px;
  font-size: var(--fs-2);
  font-weight: 600;
  letter-spacing: -0.01em;
}

.modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid var(--border);
}

/* 商品速览：列表点击先给简略介绍，想细看再进完整资料页 */
.quickview {
  display: flex;
  gap: 16px;
  align-items: flex-start;
}

.quickview-image {
  width: 180px;
  height: 180px;
  flex-shrink: 0;
  object-fit: contain;
  background: #f4f4f5;
  border: 1px solid var(--border);
  border-radius: var(--radius);
}

.quickview-image-empty {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-3);
  font-size: var(--fs-1);
}

.quickview-body { min-width: 0; flex: 1; }

.quickview-facts {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 10px 16px;
  margin: 0 0 10px;
}

.quickview-facts dt { color: var(--text-3); font-size: var(--fs-1); }

.quickview-facts dd { margin: 3px 0 0; font-size: var(--fs-2); font-weight: 600; }

.quickview-note { margin: 0 0 6px; color: var(--text-3); font-size: var(--fs-1); line-height: 1.5; }

.quickview-actions { display: flex; justify-content: flex-end; margin-top: 4px; }

tr[data-style] { cursor: pointer; }

tr[data-style]:focus-visible {
  outline: 2px solid #6CACE4;
  outline-offset: -2px;
}

.modal-mask > img {
  max-width: 88vw;
  max-height: 88vh;
  border-radius: var(--radius);
  object-fit: contain;
  background: #09090b;
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.35);
}

/* ---------- Forms ---------- */
.form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px 14px;
}

.form-grid .full { grid-column: 1 / -1; }

.form-item label {
  display: block;
  font-size: var(--fs-1);
  color: var(--text-2);
  margin-bottom: 5px;
  font-weight: 500;
}

.form-item input,
.form-item select,
.form-item textarea { width: 100%; }

.form-item input:disabled {
  background: #fafafa;
  color: var(--text-3);
  cursor: not-allowed;
}

.form-actions {
  margin-top: 16px;
  display: flex;
  gap: 8px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
}

/* ---------- Toast ---------- */
.toast {
  position: fixed;
  top: 16px;
  left: 50%;
  transform: translateX(-50%);
  padding: 8px 14px;
  border-radius: var(--radius-sm);
  color: #fff;
  z-index: 200;
  background: #18181b;
  border: 1px solid #27272a;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
  font-weight: 500;
  font-size: var(--fs-2);
  animation: toastIn 0.18s var(--ease);
  max-width: min(90vw, 400px);
  text-align: center;
}

@keyframes toastIn {
  from { opacity: 0; transform: translate(-50%, -8px); }
  to { opacity: 1; transform: translate(-50%, 0); }
}

.toast.error {
  background: var(--danger);
  border-color: #b91c1c;
}

/* ---------- Product detail ---------- */
.back-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--text-2);
  text-decoration: none;
  font-size: var(--fs-1);
  font-weight: 500;
  padding: 4px 8px;
  margin-left: -8px;
  border-radius: var(--radius-sm);
  transition: background 0.12s var(--ease), color 0.12s var(--ease);
}

.back-link:hover {
  background: #f4f4f5;
  color: var(--text);
  text-decoration: none;
}

.detail-header {
  display: flex;
  gap: 20px;
  align-items: center;
  padding: 18px 20px !important;
}

.detail-img,
.detail-img-placeholder {
  width: 88px;
  height: 88px;
  border-radius: var(--radius);
  /* 同 .thumb：混比例图不裁切，保留整件 */
  object-fit: contain;
  flex-shrink: 0;
  border: 1px solid var(--border);
  background: #f4f4f5;
}

.detail-img-placeholder {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-3);
  font-size: var(--fs-1);
}

.detail-meta { min-width: 0; flex: 1; }

.detail-meta h2 {
  font-size: var(--fs-3);
  font-weight: 600;
  margin-bottom: 6px;
  letter-spacing: -0.02em;
  line-height: 1.3;
}

.detail-sub {
  color: var(--text-2);
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-size: var(--fs-1);
}

.detail-sub .sku-code {
  font-family: var(--mono);
  font-size: var(--fs-1);
  color: var(--text-3);
}

.detail-nums {
  display: flex;
  gap: 24px;
  flex-wrap: wrap;
}

.detail-nums > span {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: var(--fs-1);
  color: var(--text-3);
  font-weight: 500;
}

.detail-nums b {
  color: var(--text);
  font-size: var(--fs-4);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

/* Tabs — underline style (calm, not pill chrome) */
.tabs {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--border);
  margin: -4px 0 18px;
  overflow-x: auto;
}

.tab {
  display: inline-flex;
  align-items: center;
  padding: 10px 14px;
  cursor: pointer;
  color: var(--text-3);
  font-weight: 500;
  font-size: var(--fs-2);
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color 0.12s var(--ease), border-color 0.12s var(--ease);
  user-select: none;
  white-space: nowrap;
}

.tab:hover { color: var(--text-2); }

.tab.active {
  color: var(--accent);
  border-bottom-color: var(--accent);
  font-weight: 600;
}

.tab[role="tab"]:focus-visible {
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
}

/* Channel pricing */
.cell-input {
  width: 96px;
  height: 28px;
  padding: 0 8px;
  border: 1px solid var(--border-strong);
  border-radius: 5px;
  text-align: right;
  font-variant-numeric: tabular-nums;
  font-size: var(--fs-1);
}

.cell-input:focus {
  border-color: var(--focus);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.12);
}

tr.price-warn td {
  background: var(--danger-bg);
}

tr.price-warn:hover td {
  background: #fee2e2;
}

.warn-text {
  color: var(--danger);
  font-weight: 600;
  font-size: var(--fs-1);
}

/* Sales / charts */
.chart-title {
  font-weight: 600;
  margin-bottom: 10px;
  font-size: var(--fs-2);
  letter-spacing: -0.01em;
  color: var(--text);
}

.trend-chart {
  width: 100%;
  max-width: 820px;
  background: var(--surface);
  border-radius: var(--radius);
  border: 1px solid var(--border);
  display: block;
  color: var(--accent);
}

/* 缺数 ≠ 0：无数据时的占位符 */
.no-data { color: var(--text-3); }

/* 表单字段提示 */
.field-hint { font-size: var(--fs-1); color: var(--text-3); margin-top: 4px; }

tr.subtotal td {
  background: #fafafa;
  font-weight: 600;
  color: var(--text-2);
  font-size: var(--fs-1);
}

tr.subtotal.grand td {
  background: #f4f4f5;
  color: var(--text);
  font-weight: 650;
}

/* Assets */
.asset-wall {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 12px;
}

.asset-item {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--surface);
  transition: border-color 0.12s var(--ease);
}

.asset-item:hover { border-color: var(--border-strong); }

.asset-item img {
  width: 100%;
  height: 130px;
  object-fit: cover;
  cursor: zoom-in;
  display: block;
  background: #f4f4f5;
}

.asset-video {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 130px;
  background: #f4f4f5;
  color: var(--text-2);
  text-decoration: none;
  font-weight: 550;
  font-size: var(--fs-2);
}

.asset-video:hover { color: var(--text); text-decoration: none; }

.asset-broken {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 130px;
  color: var(--text-3);
  background: #f4f4f5;
  font-size: var(--fs-1);
}

.asset-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 10px;
  border-top: 1px solid var(--border);
  background: #fafafa;
}

/* Calculator */
.calc-result {
  margin-top: 16px;
  padding: 14px 16px;
  background: var(--success-bg);
  border: 1px solid var(--success-border);
  border-radius: var(--radius);
}

.calc-result:empty { display: none; }

.calc-row {
  margin: 4px 0;
  color: var(--text-2);
  font-size: var(--fs-2);
  line-height: 1.55;
}

.calc-row b {
  font-size: var(--fs-3);
  font-variant-numeric: tabular-nums;
  font-weight: 650;
  color: var(--text);
}

.calc-form-grid { max-width: 960px; }
.calc-row.calc-note { margin-top: 8px; color: var(--text-3); font-size: var(--fs-1); }

.calc-row .pos { color: var(--success); }
.calc-row .neg { color: var(--danger); }

/* ---------- Report KPI · Stripe-like number first ---------- */
.stat-cards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--surface);
  margin-bottom: 8px;
}

.stat-card {
  min-width: 0;
  padding: 18px 20px;
  position: relative;
  background: var(--surface);
  border-right: 1px solid var(--border);
}

.stat-card:last-child { border-right: none; }

/* kill decorative accents from previous design */
.stat-card::before,
.stat-card::after { display: none !important; }
.stat-card:hover { transform: none; box-shadow: none; }

.stat-label {
  color: var(--text-3);
  font-size: var(--fs-1);
  margin-bottom: 8px;
  font-weight: 500;
}

.stat-value {
  font-size: var(--fs-5);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.03em;
  color: var(--text);
  line-height: 1.15;
}

/* ---------- 经营看板 ---------- */
.stat-cards.five { grid-template-columns: repeat(5, 1fr); }
.stat-cards.five .stat-card { border-right: 1px solid var(--border); }
.stat-cards.five .stat-card:last-child { border-right: none; }
/* D8：店铺经营一排五卡按主指标规格（同销售库存第一排）；#dash-kpi 限定只影响 dashboard */
#dash-kpi .stat-card { padding: 16px; background: var(--surface); }
#dash-kpi .stat-label { font-size: var(--fs-1); color: var(--text-3); }
#dash-kpi .stat-value { font-size: var(--fs-5); }

.stat-cards.ad-compare-cards {
  grid-template-columns: repeat(2, minmax(0, 260px));
  margin-bottom: 0;
}

.stat-note {
  margin-top: 8px;
  font-size: var(--fs-1);
  color: var(--text-3);
  overflow-wrap: anywhere;
}

.stat-compare {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
}

.stat-compare > span {
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: var(--fs-1);
  color: var(--text-3);
  font-weight: 500;
}

.stat-compare b {
  color: var(--text);
  font-size: var(--fs-4);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.dash-legend {
  display: flex;
  gap: 18px;
  font-size: var(--fs-1);
  color: var(--text-2);
  margin-bottom: 10px;
}

.dash-legend span { display: inline-flex; align-items: center; gap: 6px; }

.dash-legend i {
  display: inline-block;
  width: 14px;
  height: 3px;
  border-radius: 2px;
}

.hbar-track {
  width: 100%;
  height: 6px;
  background: #f4f4f5;
  border-radius: 3px;
  overflow: hidden;
}

.hbar {
  height: 100%;
  background: var(--accent);
  border-radius: 3px;
  min-width: 2px;
}

/* ---------- Import ---------- */
.import-hint {
  color: var(--text-2);
  font-size: var(--fs-1);
  line-height: 1.55;
}

.import-desc {
  color: var(--text-2);
  font-size: var(--fs-1);
  margin-bottom: 8px;
  line-height: 1.5;
}

.import-cols {
  color: var(--text-3);
  font-size: var(--fs-1);
  margin-bottom: 12px;
  line-height: 1.55;
  padding: 10px 12px;
  background: #fafafa;
  border-radius: var(--radius-sm);
  border: 1px solid var(--border);
}

.import-cols b {
  color: var(--text-2);
  font-weight: 600;
}

.import-status {
  color: var(--text-3);
  font-size: var(--fs-1);
}

.import-result { margin-top: 10px; }

.import-freshness-note {
  color: var(--text-2);
  font-size: var(--fs-1);
  margin-bottom: 8px;
}
.import-controls {
  align-items: flex-end;
  gap: 10px;
  padding: 8px 0 2px;
  flex-wrap: wrap;
}
.import-control {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--text-2);
  font-size: var(--fs-1);
}
.import-control select,
.import-control input {
  height: 30px;
  min-width: 120px;
  font-size: var(--fs-1);
}
.import-control select.import-need-attention {
  border: 1.5px solid var(--danger);
  background: var(--danger-bg);
}

.import-cat-tabs .tab,
.import-fin-shops .tab {
  appearance: none;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  font: inherit;
}
.import-cat-tabs {
  margin: 0 0 16px;
}
.import-cat-tabs .tab {
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 10px 16px 12px;
}
.import-cat-tabs .tab small {
  font-size: var(--fs-1);
  font-weight: 400;
  color: var(--text-3);
}
.import-cat-tabs .tab.active small {
  color: var(--accent);
}
.import-fin-workstrip {
  margin: 0 0 14px;
  padding: 12px 14px;
  border: 1px solid #f3d2b3;
  border-radius: var(--radius-lg);
  background: #fff8f1;
}
.import-fin-workstrip-head {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  align-items: baseline;
  margin-bottom: 10px;
}
.import-fin-workstrip-head strong { font-size: var(--fs-2); }
.import-fin-workstrip-head span { font-size: var(--fs-1); color: var(--text-3); }
.import-fin-workstrip-cols {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.import-fin-workstrip-cols b { display: block; margin-bottom: 6px; font-size: var(--fs-1); }
.import-fin-workstrip-cols ul {
  margin: 0; padding: 0; list-style: none; display: grid; gap: 6px;
}
.import-fin-workstrip-cols li,
.import-fin-workstrip-cols p {
  font-size: var(--fs-1);
  line-height: 1.5;
  color: var(--text-2);
}
.finance-workboard {
  margin: 0 0 14px;
  padding: 12px 14px;
  border: 1px solid #e4d4b8;
  border-radius: var(--radius-lg);
  background: #fffdf8;
}
.finance-workboard-head {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  align-items: baseline;
  margin-bottom: 12px;
}
.finance-workboard-head strong { font-size: var(--fs-3); }
.finance-workboard-head span { font-size: var(--fs-1); color: var(--text-3); }
.finance-workboard-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  align-items: start;
}
.finance-work-col {
  padding: 10px 12px;
  border-radius: 10px;
  background: #fff;
  border: 1px solid var(--border);
  min-width: 0;
}
.finance-work-col h3 {
  margin: 0 0 10px;
  font-size: var(--fs-2);
}
.finance-work-col.is-ask { border-color: #f3d2b3; background: #fff8f1; }
.finance-work-col.is-miss { border-color: #e4d4b8; }
.finance-work-col.is-ok { border-color: #cce3d4; background: #f6fbf7; }
.finance-work-col article,
.finance-work-col li {
  margin: 0 0 10px;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(0,0,0,.06);
}
.finance-work-col article:last-child,
.finance-work-col li:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: 0; }
.finance-work-col ul { margin: 0; padding: 0; list-style: none; }
.finance-work-col li {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 10px;
}
.finance-work-col b { display: block; font-size: var(--fs-2); line-height: 1.4; }
.finance-work-col p,
.finance-work-col small { display: block; margin: 4px 0 0; font-size: var(--fs-1); line-height: 1.5; color: var(--text-2); }
.finance-work-col small { color: var(--text-3); }
.finance-work-empty,
.finance-work-ok { margin: 0; font-size: var(--fs-1); line-height: 1.5; color: var(--text-3); }
.finance-work-ok { margin-top: 8px; }
.finance-work-missing-more { margin-top: 8px; border-top: 1px dashed var(--border); padding-top: 8px; }
.finance-work-missing-more summary { cursor: pointer; color: var(--link, #245b8a); font-size: var(--fs-1); }
.finance-work-missing-more ul { margin-top: 8px; }
@media (max-width: 800px) {
  .finance-workboard-grid,
  .import-fin-workstrip-cols { grid-template-columns: 1fr; }
  .finance-work-col li { flex-direction: column; align-items: flex-start; }
}
.import-fin-checklist {
  margin-bottom: 16px;
  padding: 16px 18px;
  border: 1px solid #d7e3f4;
  border-radius: var(--radius-lg);
  background: #f7f9fc;
}
.import-fin-checklist-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 12px;
}
.import-fin-checklist-head strong {
  display: block;
  font-size: var(--fs-3);
}
.import-fin-checklist-head p {
  margin: 4px 0 0;
  color: var(--text-2);
  font-size: var(--fs-1);
}
.import-fin-steps {
  margin: 0;
  padding-left: 18px;
  display: grid;
  gap: 6px;
  color: var(--text-2);
  font-size: var(--fs-1);
  line-height: 1.55;
}
.import-fin-steps code {
  font-size: var(--fs-1);
  padding: 1px 5px;
  border-radius: 4px;
  background: #eef3f9;
}
.import-fin-note {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid #d7e3f4;
  color: #9a3412;
  font-size: var(--fs-1);
  line-height: 1.55;
}
.finance-history-coverage {
  margin: 0 0 16px;
  padding: 18px;
  border: 1px solid #c7d7ef;
  border-radius: var(--radius-lg);
  background: #f8fbff;
}
.finance-history-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 20px;
  margin-bottom: 14px;
}
.finance-history-eyebrow {
  display: block;
  margin-bottom: 3px;
  color: var(--accent);
  font-size: var(--fs-1);
  font-weight: 700;
  letter-spacing: .08em;
}
.finance-history-head h2 { margin: 0; font-size: var(--fs-4); }
.finance-history-head p { margin: 5px 0 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.55; }
.finance-history-total {
  min-width: 126px;
  padding: 10px 12px;
  border: 1px solid #fecaca;
  border-radius: 10px;
  background: #fff7f7;
  text-align: right;
}
.finance-history-total.is-complete { border-color: var(--success-border); background: var(--success-bg); }
.finance-history-total strong { display: block; color: #b91c1c; font-size: var(--fs-5); line-height: 1; }
.finance-history-total.is-complete strong { color: #166534; }
.finance-history-total span { display: block; margin-top: 5px; color: var(--text-2); font-size: var(--fs-1); }
.finance-history-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}
.finance-history-shop {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 12px;
  border: 1px solid #e4e4e7;
  border-radius: 10px;
  background: #fff;
}
.finance-history-shop.is-complete { border-color: var(--success-border); }
.finance-history-shop header { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.finance-history-shop header b { display: block; font-size: var(--fs-2); }
.finance-history-shop header small { display: block; margin-top: 2px; color: var(--text-3); font-size: var(--fs-1); }
.finance-history-months,
.finance-history-uploaded { margin: 12px 0 0; }
.finance-history-months > span,
.finance-history-uploaded > span { display: block; margin-bottom: 5px; color: var(--text-3); font-size: var(--fs-1); }
.finance-history-months > div,
.finance-history-uploaded > div { display: flex; flex-wrap: wrap; gap: 4px; max-height: 112px; overflow: auto; }
.finance-month-chip {
  padding: 3px 6px;
  border-radius: 999px;
  font-size: var(--fs-1);
  font-variant-numeric: tabular-nums;
}
.finance-month-chip.is-missing { color: #991b1b; background: #fef2f2; border: 1px solid #fecaca; }
.finance-month-chip.is-uploaded { color: #166534; background: #f0fdf4; border: 1px solid #bbf7d0; }
.finance-month-empty { color: var(--text-3); font-size: var(--fs-1); }
.finance-history-shop > .btn { margin-top: auto; align-self: flex-start; }
.finance-history-months + .btn,
.finance-history-uploaded + .btn { margin-top: 12px; }
.finance-history-other {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1.2fr);
  align-items: center;
  gap: 12px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid #dbe5f2;
}
.finance-history-other b,
.finance-history-other span,
.finance-history-other small { display: block; }
.finance-history-other b { font-size: var(--fs-1); }
.finance-history-other span { margin-top: 3px; color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; }
.finance-history-other small { margin-top: 3px; color: var(--text-3); font-size: var(--fs-1); }
.import-fin-shops {
  margin: 4px 0 14px;
}
.import-fin-group {
  margin-bottom: 16px;
}
.import-fin-group-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}
.import-fin-group-head b {
  font-size: var(--fs-2);
}
.import-fin-group-head span {
  font-size: var(--fs-1);
  color: var(--text-3);
}
.import-shot-compare {
  margin: 0 0 16px;
  padding: 12px 14px;
  border: 1px solid #e4d4b8;
  border-radius: var(--radius-lg);
  background: #fffaf0;
}
.import-shot-compare summary {
  cursor: pointer;
  font-weight: 600;
  font-size: var(--fs-2);
}
.import-shot-compare > p {
  margin: 8px 0 10px;
  font-size: var(--fs-1);
  color: var(--text-2);
  line-height: 1.55;
}
.import-shot-compare-cols {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.import-shot-compare-cols b {
  display: block;
  margin-bottom: 6px;
  font-size: var(--fs-1);
}
.import-shot-compare-cols ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 8px;
}
.import-shot-compare-cols li {
  display: grid;
  gap: 2px;
}
.import-shot-compare-cols small {
  color: var(--text-3);
  font-size: var(--fs-1);
  line-height: 1.45;
}
button.linkish {
  display: inline;
  padding: 0;
  border: 0;
  background: none;
  color: #1d4ed8;
  font: inherit;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
}
button.linkish:hover { text-decoration: underline; }
.import-shot-strip {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin: 0 0 10px;
}
.import-shot-thumbs {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 2px;
}
.import-shot-thumb {
  position: relative;
  flex: 0 0 auto;
  width: 92px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
  background: #fff;
  cursor: pointer;
}
.import-shot-thumb img {
  display: block;
  width: 92px;
  height: 64px;
  object-fit: cover;
  object-position: top left;
}
.import-shot-badge {
  display: inline-flex;
  align-items: center;
  padding: 1px 6px;
  border-radius: 999px;
  font-size: var(--fs-1);
  font-weight: 700;
  line-height: 1.4;
  white-space: nowrap;
}
.import-shot-thumb .import-shot-badge {
  position: absolute;
  left: 4px;
  bottom: 4px;
  background: rgba(255, 255, 255, 0.92);
}
.import-shot-badge-ok { color: #166534; background: #dcfce7; }
.import-shot-badge-watch { color: #9a3412; background: #ffedd5; }
.import-shot-badge-gap { color: #52525b; background: #e4e4e7; }
.import-shot-gap {
  font-size: var(--fs-1);
  color: var(--text-3);
  line-height: 1.45;
}
.import-shot-mask { background: rgba(24, 24, 27, 0.62); }
.import-shot-modal {
  width: min(1080px, 96vw);
  max-height: 92vh;
}
.import-shot-modal-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}
.import-shot-modal h3 { margin-bottom: 4px; }
.import-shot-modal p { margin: 0; font-size: var(--fs-1); color: var(--text-2); line-height: 1.5; }
.import-shot-modal-note { color: #9a3412 !important; margin-top: 6px !important; }
.import-shot-modal-slot { margin-top: 6px !important; }
.import-shot-modal img {
  display: block;
  width: 100%;
  max-height: 62vh;
  object-fit: contain;
  background: #18181b;
  border-radius: 8px;
}

/* 按店铺分区的导入布局 */
.import-section {
  padding: 14px 16px 16px;
}
.import-sec-head {
  font-size: var(--fs-3);
  font-weight: 700;
  margin-bottom: 12px;
  display: flex;
  align-items: baseline;
  gap: 10px;
}
.import-sec-tag {
  font-size: var(--fs-1);
  font-weight: 400;
  color: var(--text-3);
}
.import-sec-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 10px;
}
.import-slot {
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  padding: 10px 12px;
  background: var(--card);
}
.import-slot-head {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.import-slot-title {
  font-size: var(--fs-2);
  font-weight: 600;
}
.import-slot-desc {
  font-size: var(--fs-1);
  color: var(--text-3);
}
.import-file-rules {
  display: grid;
  gap: 2px;
  margin: 8px 0 6px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #f4f7fb;
  color: var(--text-2);
  font-size: var(--fs-1);
  line-height: 1.5;
}
.import-file-rules b { color: var(--text); font-size: var(--fs-1); }
.import-source-guide {
  display: grid;
  gap: 4px;
  margin: 7px 0 9px;
  padding: 9px 10px;
  border: 1px solid #bfdbfe;
  border-radius: var(--radius-sm);
  background: #eff6ff;
  color: #1e3a5f;
  font-size: var(--fs-1);
  line-height: 1.55;
  overflow-wrap: anywhere;
}
.import-source-warning {
  color: #9a3412;
}
.import-source-note {
  color: var(--text-3);
}
.import-slot .toolbar {
  margin-top: 4px;
}
.import-slot .import-controls {
  padding: 0;
  margin: 0 0 2px;
}
.import-detect {
  margin-top: 8px;
}
.import-detect-box {
  font-size: var(--fs-1);
  line-height: 1.7;
  padding: 10px 12px;
  background: var(--success-bg);
  border: 1px solid var(--success-border);
  border-radius: var(--radius-sm);
  color: var(--text-2);
}
.import-detect-box.is-blocked {
  color: #991b1b;
  background: #fef2f2;
  border-color: #fecaca;
}
.import-fin-receipt {
  margin-top: 8px;
  padding: 11px 12px;
  border: 1px solid var(--success-border);
  border-radius: 9px;
  background: var(--success-bg);
}
.import-fin-receipt > div { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.import-fin-receipt dl {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 5px 8px;
  margin: 9px 0 0;
  font-size: var(--fs-1);
  line-height: 1.45;
}
.import-fin-receipt dt { color: var(--text-3); }
.import-fin-receipt dd { min-width: 0; margin: 0; color: var(--text-2); overflow-wrap: anywhere; }
.import-fin-receipt code { font-size: var(--fs-1); }

.muted {
  color: var(--text-3);
  font-size: var(--fs-1);
}

/* Report date inline in header */
.header-date {
  height: 32px;
}

/* 日期 / 周 / 月 / 日期时间统一沿用同一套浏览器原生选择器外壳。 */
input[type="date"],
input[type="week"],
input[type="month"],
input[type="datetime-local"] {
  font-variant-numeric: tabular-nums;
  color-scheme: light;
}
input[type="date"]::-webkit-calendar-picker-indicator,
input[type="week"]::-webkit-calendar-picker-indicator,
input[type="month"]::-webkit-calendar-picker-indicator,
input[type="datetime-local"]::-webkit-calendar-picker-indicator {
  margin-left: 6px;
  opacity: 0.72;
  cursor: pointer;
}
input[type="date"]:hover::-webkit-calendar-picker-indicator,
input[type="week"]:hover::-webkit-calendar-picker-indicator,
input[type="month"]:hover::-webkit-calendar-picker-indicator,
input[type="datetime-local"]:hover::-webkit-calendar-picker-indicator {
  opacity: 1;
}
input.time-control-compact {
  height: 28px;
  font-size: var(--fs-1);
}

/* 月度财务关账：结果优先、证据下钻；所有宽表只在自身容器内横滑。 */
.finance-pnl-section { margin: 0 0 16px; }
.finance-waterfall-section, .finance-pnl-trend-section { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; }
.finance-waterfall-chart { min-height: 300px; }
.finance-computed-grid { min-width: 860px; width: 100%; }
.finance-computed-grid th:first-child,
.finance-computed-grid td:first-child { position: sticky; left: 0; z-index: 2; background: var(--surface); box-shadow: 1px 0 0 var(--border); min-width: 128px; text-align: left; font-weight: 600; }
.finance-pnl-head { margin-bottom: 8px; }
.finance-pnl-tabs { margin: 0 0 8px; flex-wrap: wrap; }
.finance-pnl-wrap { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.finance-pnl-grid { min-width: 980px; width: max-content; }
.finance-pnl-grid th,
.finance-pnl-grid td { font-variant-numeric: tabular-nums; }
.finance-pnl-grid th:first-child,
.finance-pnl-grid td:first-child,
.finance-pnl-grid tbody th {
  position: sticky;
  left: 0;
  z-index: 2;
  background: var(--surface);
  box-shadow: 1px 0 0 var(--border);
  min-width: 148px;
  text-align: left;
  font-weight: 600;
}
.finance-pnl-grid thead th:first-child { z-index: 3; background: #fafafa; }
/* 单月聚焦视图：5 列窄表，不横滑；分组行 + 关键行强调 + 下钻抽屉。 */
.finance-pnl-viewtabs { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 0 0 10px; }
.finance-pnl-coverage {
  display: flex; gap: 10px; align-items: center; flex-wrap: wrap;
  margin: 0 0 10px; padding: 8px 12px;
  border: 1px solid var(--border); border-radius: 10px;
  background: #fafafa; font-size: var(--fs-1); color: var(--text-2);
}
.finance-pnl-coverage b { font-size: var(--fs-2); }
.finance-pnl-coverage.has-missing b { color: var(--danger); }
.finance-pnl-monthnav { display: flex; gap: 8px; align-items: center; margin: 0 0 8px; flex-wrap: wrap; }
.finance-pnl-monthnav b { min-width: 110px; text-align: center; font-size: var(--fs-3); }
.finance-pnl-monthnav .btn { min-width: 34px; padding: 4px 10px; }
.finance-pnl-monthnav .btn[disabled] { opacity: 0.4; cursor: default; }
.finance-pnl-focus { min-width: 0; width: 100%; }
.finance-pnl-focus tbody th { min-width: 128px; }
.finance-pnl-grid tr.pnl-group th {
  background: #f4f5f7; color: var(--text-3);
  font-size: var(--fs-1); font-weight: 600; letter-spacing: 0.12em;
}
.finance-pnl-grid tr.pnl-key th,
.finance-pnl-grid tr.pnl-key td { font-weight: 700; }
.finance-pnl-grid tr.pnl-key th { box-shadow: inset 3px 0 0 var(--accent), 1px 0 0 var(--border); }
.finance-pnl-drawer-btn { font-size: var(--fs-1); margin-left: 4px; white-space: nowrap; }
.finance-pnl-drawer > td { background: #fbfcfe; padding: 10px 12px; }
.finance-pnl-drawer-block { margin: 0 0 10px; }
.finance-pnl-drawer-block > b { display: block; font-size: var(--fs-1); color: var(--text-2); margin-bottom: 4px; }
.finance-pnl-drawer-grid { min-width: 0; width: 100%; font-size: var(--fs-1); }
.finance-pnl-drawer-grid td:first-child { color: var(--text-2); }
/* 行副标签（CM 分层/计提）、库存与售罄卡、月度评语。 */
.pnl-tag {
  display: inline-block; margin-left: 4px; padding: 0 4px; border-radius: 6px;
  background: #eef1f5; color: var(--text-3); font-size: var(--fs-1); font-weight: 600; vertical-align: 1px;
}
.finance-pnl-inventory {
  display: flex; gap: 8px 16px; align-items: baseline; flex-wrap: wrap;
  margin: 10px 0 0; padding: 10px 12px;
  border: 1px solid var(--border); border-radius: 10px; background: #fafafa;
  font-size: var(--fs-1); color: var(--text-2);
}
.finance-pnl-inventory > b { font-size: var(--fs-2); color: var(--text-1, #18181b); }
.finance-pnl-inventory small { width: 100%; color: var(--text-3); }
.finance-pnl-notes { margin: 10px 0 0; border: 1px solid var(--border); border-radius: 10px; background: #fffdf5; }
.finance-pnl-notes summary { cursor: pointer; padding: 8px 12px; font-size: var(--fs-2); font-weight: 600; }
.finance-pnl-notes summary::marker { color: var(--text-3); }
.finance-pnl-notes ul { margin: 0; padding: 0 12px 8px; list-style: none; display: grid; gap: 6px; font-size: var(--fs-1); }
.finance-pnl-notes li { line-height: 1.55; }
.pnl-note-src {
  display: inline-block; margin-right: 6px; padding: 0 4px; border-radius: 4px;
  background: #f1f2f4; color: var(--text-3); font-size: var(--fs-1);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
}
.finance-pnl-notes footer { padding: 0 12px 10px; color: var(--text-3); font-size: var(--fs-1); }
/* 周度快报（flash）：店铺卡网格 + 行样式 + 6 周趋势。 */
.finance-flash-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; margin: 0 0 12px; }
.finance-flash-shop { padding: 10px 12px; }
.finance-flash-shop-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.finance-flash-shop-head b { font-size: var(--fs-2); }
.finance-flash-row {
  display: flex; align-items: baseline; gap: 6px;
  padding: 4px 0; border-bottom: 1px dashed var(--border); font-size: var(--fs-1);
}
.finance-flash-row:last-of-type { border-bottom: 0; }
.finance-flash-row span { color: var(--text-2); }
.finance-flash-row b { margin-left: auto; font-variant-numeric: tabular-nums; }
.finance-flash-row small { color: var(--text-3); font-size: var(--fs-1); }
.finance-flash-gaps { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.finance-flash-gaps span { padding: 1px 6px; border-radius: 6px; background: #fdf3e7; color: #92600a; font-size: var(--fs-1); }
.finance-flash-trend { margin: 0 0 12px; border: 1px solid var(--border); border-radius: 10px; }
.finance-flash-trend summary { cursor: pointer; padding: 8px 12px; font-size: var(--fs-2); font-weight: 600; }
.finance-flash-trend-grid { min-width: 0; width: 100%; }
.finance-flash-trend-grid tr.is-current td { background: #f0f4ff; font-weight: 600; }
.finance-flash-trend footer { padding: 0 12px 10px; color: var(--text-3); font-size: var(--fs-1); }
@media (max-width: 640px) {
  .finance-pnl-focus tbody th { min-width: 104px; font-size: var(--fs-1); }
  .finance-pnl-focus td.num, .finance-pnl-focus th.num { font-size: var(--fs-1); }
  .finance-pnl-monthnav b { min-width: 92px; font-size: var(--fs-2); }
}
.finance-close-section { margin-top: 0; }
.finance-close-head { align-items: flex-end; }
.finance-close-head > div:first-child { max-width: 760px; }
.finance-close-toolbar { margin: 0; flex-shrink: 0; }
.finance-close-toolbar label { font-size: var(--fs-1); color: var(--text-3); }
.finance-close-toolbar input[type="month"] { width: 150px; }
.finance-close-guide {
  margin: 0 0 14px;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fafafa;
}
.finance-close-guide-head {
  display: flex; flex-wrap: wrap; gap: 6px 12px; align-items: baseline; margin-bottom: 10px;
}
.finance-close-guide-head strong { font-size: var(--fs-2); }
.finance-close-guide-head span { font-size: var(--fs-1); color: var(--text-3); }
.finance-close-guide-steps {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px;
  list-style: none; margin: 0; padding: 0;
}
.finance-close-guide-steps li {
  display: flex; gap: 8px; align-items: flex-start;
  padding: 8px 10px; border-radius: 8px; background: #fff; border: 1px solid var(--border);
}
.finance-close-guide-steps li.is-done { opacity: 0.72; }
.finance-close-guide-steps li.is-current { border-color: #1d4ed8; box-shadow: 0 0 0 1px #1d4ed8; }
.finance-close-guide-n {
  flex: 0 0 20px; height: 20px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: var(--fs-1); font-weight: 700; background: #e4e4e7; color: #3f3f46;
}
.finance-close-guide-steps li.is-done .finance-close-guide-n { background: #dcfce7; color: #166534; }
.finance-close-guide-steps li.is-current .finance-close-guide-n { background: #1d4ed8; color: #fff; }
.finance-close-guide-steps small { display: block; margin-top: 2px; color: var(--text-3); font-size: var(--fs-1); line-height: 1.4; }
.finance-close-guide-note { margin-top: 8px; font-size: var(--fs-1); color: var(--text-3); }
@media (max-width: 800px) {
  .finance-close-guide-steps { grid-template-columns: 1fr; }
  .import-fin-checklist-head { flex-direction: column; align-items: stretch; }
  .finance-history-head { flex-direction: column; }
  .finance-history-total { min-width: 0; text-align: left; }
  .finance-history-grid,
  .finance-history-other { grid-template-columns: 1fr; }
  .import-cat-tabs .tab small { display: none; }
  .import-shot-compare-cols { grid-template-columns: 1fr; }
}
.finance-close-cards {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--surface);
  margin-bottom: 12px;
}
.finance-close-shop {
  min-width: 0;
  padding: 14px 16px;
  border-right: 1px solid var(--border);
}
.finance-close-shop:last-child { border-right: 0; }
.finance-close-shop-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  font-size: var(--fs-1);
  font-weight: 600;
  white-space: nowrap;
}
.finance-close-shop-value {
  margin: 8px 0 3px;
  font-size: var(--fs-5);
  font-weight: 650;
  font-variant-numeric: tabular-nums;
}
.finance-close-shop-value span { font-size: var(--fs-1); color: var(--text-3); font-weight: 400; }
.finance-close-shop .muted { font-size: var(--fs-1); line-height: 1.5; overflow-wrap: anywhere; }
.finance-close-note,
.finance-evidence-note {
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: #fafafa;
  color: var(--text-2);
  font-size: var(--fs-1);
  line-height: 1.55;
  overflow-wrap: anywhere;
}
.finance-close-note { margin-bottom: 12px; }
.finance-close-detail,
.finance-checks,
.finance-evidence {
  max-width: 100%;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
  margin-bottom: 10px;
}
.finance-close-detail > summary,
.finance-checks > summary,
.finance-evidence > summary {
  padding: 11px 14px;
  cursor: pointer;
  font-size: var(--fs-1);
  font-weight: 600;
  background: #fafafa;
  border-bottom: 1px solid var(--border);
}
.finance-close-detail:not([open]) > summary,
.finance-checks:not([open]) > summary,
.finance-evidence:not([open]) > summary { border-bottom: 0; }
.finance-source-governance { margin: 14px 0 0; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); overflow: hidden; }
.finance-source-governance > summary { display: flex; justify-content: space-between; gap: 12px; padding: 12px 14px; cursor: pointer; font-size: var(--fs-1); }
.finance-source-governance > summary b { color: var(--text-2); }
.finance-source-governance-grid { min-width: 920px; }
.finance-source-governance-grid td small,
.finance-waiver-reason small { display: block; margin-top: 2px; color: var(--text-3); font-size: var(--fs-1); }
.finance-source-governance-grid tr.is-missing td { background: color-mix(in srgb, var(--danger) 5%, var(--surface)); }
.finance-source-governance-grid tr.is-waived td { background: color-mix(in srgb, var(--warning) 5%, var(--surface)); }
.finance-source-governance-grid td:last-child { display: flex; align-items: center; gap: 10px; }
.finance-source-governance button.linkish { border: 0; padding: 0; background: transparent; cursor: pointer; }
.finance-source-governance footer { padding: 9px 14px; border-top: 1px solid var(--border); color: var(--text-2); font-size: var(--fs-1); }
.finance-close-grid { min-width: 760px; width: 100%; }
.finance-close-grid th:first-child,
.finance-close-grid td:first-child {
  position: sticky;
  left: 0;
  z-index: 2;
  background: var(--surface);
  box-shadow: 1px 0 0 var(--border);
}
.finance-close-grid thead th:first-child { z-index: 3; background: #fafafa; }
.finance-evidence-note { margin: 10px 12px; }
.finance-check-grid { min-width: 1120px; width: 100%; }
.finance-check-grid th:first-child,
.finance-check-grid td:first-child {
  position: sticky;
  left: 0;
  z-index: 2;
  background: var(--surface);
  box-shadow: 1px 0 0 var(--border);
}
.finance-check-grid thead th:first-child { z-index: 3; background: #fafafa; }
.finance-check-note { min-width: 320px; max-width: 520px; white-space: normal; line-height: 1.5; }
.finance-evidence-grid { min-width: 980px; width: 100%; }
.finance-source-file { max-width: 300px; overflow: hidden; text-overflow: ellipsis; }
.finance-operating-section { margin-top: 32px; }

@media (max-width: 1200px) {
  .finance-close-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .finance-close-shop { border-bottom: 1px solid var(--border); }
  .finance-close-shop:nth-child(2n) { border-right: 0; }
  .finance-close-shop:last-child { grid-column: 1 / -1; border-bottom: 0; }
}

@media (max-width: 720px) {
  .finance-close-head { align-items: flex-start; }
  .finance-close-toolbar { width: 100%; }
  .finance-close-toolbar input[type="month"] { flex: 1; min-width: 135px; }
  .finance-close-cards { grid-template-columns: 1fr; }
  .finance-close-shop,
  .finance-close-shop:nth-child(2n),
  .finance-close-shop:last-child { grid-column: auto; border-right: 0; border-bottom: 1px solid var(--border); }
  .finance-close-shop:last-child { border-bottom: 0; }
}

/* ---------- 统一周期选择器（多模式=紧凑下拉浮层，单模式=内联 picker） ---------- */
.period-bar {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.period-dd {
  position: relative;
  display: inline-block;
}
.period-btn {
  white-space: nowrap;
}
.period-panel {
  position: absolute;
  right: 0;
  top: calc(100% + 6px);
  z-index: 300;
  width: 272px;
  padding: 8px;
  gap: 8px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.14);
  display: flex;
}
.period-modes {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-right: 8px;
  border-right: 1px solid var(--border);
  flex-shrink: 0;
}
.period-mode {
  padding: 5px 10px;
  border: 0;
  background: transparent;
  border-radius: 6px;
  font-size: var(--fs-1);
  color: var(--text-2);
  cursor: pointer;
  white-space: nowrap;
  font-family: inherit;
  text-align: left;
}
.period-mode:hover {
  background: var(--sidebar-hover);
}
.period-mode.active {
  background: var(--accent);
  color: #fff;
}
.period-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
  flex: 1;
}
.period-picker {
  width: 100%;
}
.period-custom {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.period-custom .header-date {
  width: 100%;
}
.period-custom-sep {
  font-size: var(--fs-1);
}
.period-apply {
  align-self: flex-end;
}
.period-label {
  font-size: var(--fs-1);
  white-space: nowrap;
}

/* ---------- 业务日期区间选择器 ---------- */
.period-range-dd { vertical-align: middle; }
.period-range-trigger {
  display: flex;
  min-width: 286px;
  min-height: 42px;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 6px 8px 6px 12px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color .16s ease, box-shadow .16s ease, background .16s ease;
}
.period-range-trigger:hover { border-color: var(--border-strong); background: #fbfcfe; }
.period-range-trigger:focus-visible,
.period-range-trigger[aria-expanded="true"] { outline: 0; border-color: #7890b3; box-shadow: 0 0 0 3px rgba(31, 78, 140, .1); }
.period-range-trigger-copy { display: grid; min-width: 0; gap: 2px; }
.period-range-trigger-copy small { color: var(--text-3); font-size: var(--fs-1); font-weight: 650; letter-spacing: .08em; }
.period-range-trigger-copy strong { overflow: hidden; font-size: var(--fs-1); font-weight: 620; text-overflow: ellipsis; white-space: nowrap; }
.period-range-trigger-days {
  flex: none;
  padding: 5px 8px;
  border-radius: 999px;
  background: #eaf0f8;
  color: #214b80;
  font-size: var(--fs-1);
  font-weight: 650;
  white-space: nowrap;
}
.period-range-panel {
  right: 0;
  top: calc(100% + 8px);
  z-index: 320;
  display: flex;
  width: 390px;
  padding: 10px;
  gap: 0;
  flex-direction: column;
  border-radius: 16px;
  background: #f3f4f6;
  box-shadow: 0 18px 48px rgba(20, 43, 82, .2), 0 2px 8px rgba(20, 43, 82, .08);
}
.period-range-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 4px 5px 10px;
}
.period-range-head > div { display: grid; gap: 2px; }
.period-range-head small { color: #64748b; font-size: var(--fs-1); font-weight: 650; letter-spacing: .1em; }
.period-range-head strong { color: #17243a; font-size: var(--fs-2); }
.period-range-head > span {
  padding: 5px 9px;
  border-radius: 999px;
  background: #e2eaf5;
  color: #214b80;
  font-size: var(--fs-1);
  font-weight: 650;
}
.period-range-current {
  display: grid;
  grid-template-columns: 1fr 24px 1fr;
  align-items: center;
  padding: 12px 10px 10px;
  border: 1px solid #e7e9ed;
  border-bottom: 0;
  border-radius: 12px 12px 0 0;
  background: #fff;
}
.period-range-field {
  display: grid;
  gap: 4px;
  padding: 4px 7px 7px;
  border: 0;
  border-bottom: 2px solid transparent;
  background: transparent;
  color: #17243a;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.period-range-field small { color: #7b8490; font-size: var(--fs-1); font-weight: 650; letter-spacing: .08em; }
.period-range-field strong { font-size: var(--fs-2); font-weight: 650; }
.period-range-field.is-active { border-bottom-color: #214b80; }
.period-range-field:focus-visible { outline: 2px solid rgba(33, 75, 128, .22); outline-offset: 2px; }
.period-range-divider { height: 25px; border-left: 1px solid #e6e8eb; justify-self: center; }
.period-calendar-shell {
  padding: 11px 10px 12px;
  border: 1px solid #e7e9ed;
  border-top: 0;
  border-radius: 0 0 12px 12px;
  background: #fff;
}
.period-calendar-head {
  display: grid;
  grid-template-columns: 58px 1fr 58px;
  align-items: center;
  margin-bottom: 10px;
  text-align: center;
}
.period-calendar-head strong { color: #17243a; font-size: var(--fs-1); font-weight: 650; }
.period-month-nav {
  padding: 5px 7px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #64748b;
  font: inherit;
  font-size: var(--fs-1);
  cursor: pointer;
}
.period-month-nav:hover:not(:disabled) { background: #f0f3f7; color: #214b80; }
.period-month-nav:disabled { opacity: .32; cursor: default; }
.period-calendar-week,
.period-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.period-calendar-week { margin-bottom: 4px; color: #8a929c; font-size: var(--fs-1); text-align: center; }
.period-calendar-week span { padding: 3px 0; }
.period-calendar-empty,
.period-calendar-day { min-width: 0; height: 34px; }
.period-calendar-day {
  position: relative;
  display: grid;
  place-items: center;
  padding: 0;
  border: 0;
  background: transparent;
  color: #263445;
  font: inherit;
  font-size: var(--fs-1);
  cursor: pointer;
}
.period-calendar-day::before {
  position: absolute;
  inset: 3px 0;
  z-index: 0;
  background: transparent;
  content: '';
}
.period-calendar-day > span {
  position: relative;
  z-index: 1;
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  border-radius: 50%;
}
.period-calendar-day:hover:not(:disabled) > span { background: #eef2f7; }
.period-calendar-day.is-in-range::before { background: #e0e9f5; }
.period-calendar-day:nth-child(7n + 1).is-in-range::before { border-radius: 14px 0 0 14px; }
.period-calendar-day:nth-child(7n).is-in-range::before { border-radius: 0 14px 14px 0; }
.period-calendar-day.is-start::before { left: 50%; border-radius: 14px 0 0 14px; }
.period-calendar-day.is-end::before { right: 50%; border-radius: 0 14px 14px 0; }
.period-calendar-day.is-start.is-end::before { right: 50%; left: 50%; }
.period-calendar-day.is-start > span,
.period-calendar-day.is-end > span { background: #214b80; color: #fff; box-shadow: 0 2px 8px rgba(33, 75, 128, .28); }
.period-calendar-day:focus-visible > span { outline: 2px solid #214b80; outline-offset: 2px; }
.period-calendar-day:disabled { color: #c6cbd2; cursor: default; }
.period-quick-list { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 3px 8px; }
.period-quick-list button {
  padding: 5px 9px;
  border: 1px solid #dfe3e8;
  border-radius: 999px;
  background: #fff;
  color: #576170;
  font: inherit;
  font-size: var(--fs-1);
  cursor: pointer;
}
.period-quick-list button:hover { border-color: #9cafc7; color: #214b80; }
.period-quick-list button.active { border-color: #c5d3e5; background: #e4ebf5; color: #214b80; font-weight: 650; }
.period-range-actions { display: flex; justify-content: flex-end; gap: 7px; padding-top: 2px; }
.period-range-actions .btn { min-height: 30px; font-size: var(--fs-1); }
.period-range-actions .btn-primary:disabled { opacity: .42; cursor: default; }

@media (max-width: 720px) {
  .period-range-dd { position: static; }
  .period-range-trigger { width: min(100%, 296px); min-width: 0; }
  .period-range-panel {
    position: fixed;
    right: 8px;
    bottom: 8px;
    left: 8px;
    top: auto;
    width: auto;
    max-height: calc(100dvh - 16px);
    overflow-y: auto;
    border-radius: 18px;
    animation: periodRangeSheetIn .18s ease-out;
  }
  .period-calendar-empty,
  .period-calendar-day { height: 38px; }
  .period-calendar-day > span { width: 31px; height: 31px; }
}
@keyframes periodRangeSheetIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .period-range-panel { animation: none; } }

/* ---------- 本月目标进度（看板顶部，实际 vs 应达竖线 vs 目标终点） ---------- */
.tgt-cell {
  min-width: 110px;
}
.tgt-bar {
  position: relative;
  height: 12px;
  background: var(--sidebar);
  border-radius: 4px;
}
.tgt-fill {
  height: 100%;
  border-radius: 4px;
  background: var(--text-3);
}
.tgt-fill.ok { background: var(--success); }
.tgt-fill.warn { background: var(--warning); }
.tgt-fill.bad { background: var(--danger); }
.tgt-due {
  position: absolute;
  top: -3px;
  bottom: -3px;
  width: 2px;
  background: var(--text);
  border-radius: 1px;
}
.tgt-bar-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--fs-1);
  color: var(--text-3);
}
.tgt-edit {
  height: 26px;
  padding: 2px 10px;
  font-size: var(--fs-1);
}

/* ---------- 目标达成 · 链路条 + 杠杆卡 ---------- */
.chain-bar {
  display: flex;
  align-items: center;
  gap: 0;
  padding: 14px 8px;
  overflow-x: auto;
}
.chain-node {
  flex: 1;
  min-width: 100px;
  text-align: center;
  padding: 8px 4px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--card);
}
.chain-label {
  font-size: var(--fs-1);
  color: var(--text-3);
  font-weight: 600;
  margin-bottom: 4px;
}
.chain-val {
  font-size: var(--fs-1);
  line-height: 1.5;
}
.chain-rate {
  margin-top: 4px;
}
.chain-arrow {
  text-align: center;
  color: var(--text-3);
  font-size: var(--fs-3);
  line-height: 1.2;
  padding: 0 6px;
  flex-shrink: 0;
}
.chain-lever {
  font-size: var(--fs-1);
  color: var(--text-3);
}
.lever-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px;
  margin-top: 10px;
}
.lever-card {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 14px;
  background: var(--card);
}
.lever-card.lever-ok { border-color: var(--success-border); background: var(--success-bg); }
.lever-card.lever-bad { border-color: var(--danger-border); background: var(--danger-bg); }
.lever-title {
  font-size: var(--fs-1);
  font-weight: 600;
  margin-bottom: 4px;
}
.lever-vals {
  display: flex;
  gap: 16px;
  font-size: var(--fs-1);
}
.lever-tgt { color: var(--text-3); }
.lever-act { font-weight: 600; }
.fin-neg { color: var(--danger); font-weight: 600; }
.dash-mobile-summary {
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
  overflow: hidden;
}
.dash-mobile-summary-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 13px;
  border-bottom: 1px solid var(--border);
}
.dash-mobile-summary-head strong { font-size: var(--fs-2); }
.dash-mobile-summary-head span { color: var(--text-3); font-size: var(--fs-1); }
.dash-mobile-kpis {
  display: grid;
  grid-template-columns: 1fr 1fr;
}
.dash-mobile-kpi {
  min-width: 0;
  padding: 12px 13px;
  border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
}
.dash-mobile-kpi:nth-child(2n) { border-right: none; }
.dash-mobile-kpi-label { color: var(--text-3); font-size: var(--fs-1); margin-bottom: 3px; }
.dash-mobile-kpi-value { font-size: var(--fs-4); font-weight: 650; letter-spacing: -0.02em; }
.dash-mobile-kpi-note { margin-top: 3px; color: var(--text-2); font-size: var(--fs-1); }
.dash-mobile-alerts { padding: 11px 13px 4px; }
.dash-mobile-alerts-title { font-size: var(--fs-1); font-weight: 650; color: var(--text-2); margin-bottom: 7px; }
.dash-mobile-alert {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 7px 0;
  border-top: 1px solid var(--border);
  color: var(--text-2);
  font-size: var(--fs-1);
}
.dash-mobile-alert:first-of-type { border-top: 0; }
.dash-mobile-stores { padding: 4px 13px 11px; }
.dash-mobile-store {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border: 0;
  border-top: 1px solid var(--border);
  background: transparent;
  color: var(--text);
  text-align: left;
  font: inherit;
}
.dash-mobile-store-name { display: block; font-weight: 600; font-size: var(--fs-1); }
.dash-mobile-store-meta { display: block; color: var(--text-3); font-size: var(--fs-1); margin-top: 2px; }
.dash-mobile-store-action { color: var(--accent); font-size: var(--fs-1); font-weight: 650; }
.mobile-desktop-hint {
  padding: 10px 12px;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius);
  color: var(--text-2);
  background: #fcfcfc;
  font-size: var(--fs-1);
}
.chain-link { text-align: center; color: var(--text-3); font-size: var(--fs-3); line-height: 1.2; }
.layer-fix { margin-top: 8px; font-size: var(--fs-1); color: var(--text-3); }
.period-preset {
  margin-right: 8px;
  padding: 5px 10px;
  border: 1px solid var(--border-strong);
  border-radius: 999px;
  background: #fff;
  color: var(--text-2);
  font-size: var(--fs-1);
  line-height: 1.2;
  cursor: pointer;
}
.period-preset.active,
.period-preset[aria-pressed="true"] {
  border-color: var(--accent, #142b52);
  background: #eef3fb;
  color: var(--text);
  font-weight: 600;
}
.info-tip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  margin: 0 0 0 4px;
  padding: 0;
  border: 0;
  background: transparent;
  vertical-align: -2px;
  cursor: help;
  color: #8b93a1;
}
.info-tip:hover,
.info-tip:focus-visible {
  color: #3f4a5c;
}
.info-tip:focus-visible { outline: 2px solid var(--accent, #315f9e); outline-offset: 3px; border-radius: 4px; }
.info-tip.info-term { width: auto; height: auto; min-height: 22px; margin: 0; gap: 4px; color: inherit; font: inherit; font-weight: inherit; text-align: left; vertical-align: baseline; }
.info-term > span { border-bottom: 1px dotted #a0a8b5; }
.info-term .info-tip-mark { flex: 0 0 13px; width: 13px; height: 13px; color: #858f9e; }
.info-term:hover > span, .info-term[aria-expanded="true"] > span { border-bottom-color: currentColor; }
.info-tip-mark {
  display: block;
  width: 14px;
  height: 14px;
}
.info-tip-pop {
  position: fixed;
  z-index: 400;
  max-width: min(360px, calc(100vw - 20px));
  max-height: min(320px, calc(100dvh - 20px));
  box-sizing: border-box;
  overflow-y: auto;
  overscroll-behavior: contain;
  white-space: pre-line;
  overflow-wrap: anywhere;
  padding: 12px 14px;
  border: 1px solid var(--border-strong);
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
  color: var(--text-2);
  font-size: var(--fs-1);
  line-height: 1.7;
  pointer-events: auto;
}
.info-tip-pop[hidden] { display: none; }
@media (pointer: coarse) { .info-tip, .info-tip.info-term { min-width: 28px; min-height: 28px; } }
.stat-label .info-tip,
.section-title .info-tip,
.layer-fix .info-tip,
th .info-tip { margin-top: -1px; }
.funnel-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.funnel-rates { display: flex; gap: 18px; font-size: var(--fs-1); padding: 8px 4px 2px; flex-wrap: wrap; }
.diag-blocked {
  margin-bottom: 10px; padding: 8px 12px; font-size: var(--fs-1);
  color: var(--danger); background: var(--danger-bg, #fef2f2);
  border: 1px solid var(--danger-border, #fecaca); border-radius: 8px;
}
.dash-target-handoff { display: flex; align-items: center; justify-content: space-between; gap: 18px; }
.dash-target-handoff strong { display: block; font-size: var(--fs-2); }
.dash-target-handoff p { margin: 4px 0 0; color: var(--text-3); font-size: var(--fs-1); line-height: 1.5; }
.dash-target-handoff .btn { flex: none; }

@media (max-width: 800px) {
  #dash-targets > .chain-bar,
  #dash-targets > .lever-row,
  #dash-targets > .field-hint,
  #dash-targets > .dash-target-store-table,
  #dash-targets > .dash-target-categories { display: none; }
  #dash-targets .tag { font-size: var(--fs-1); }
  .stat-cards.five { grid-template-columns: 1fr 1fr; }
  .stat-cards.five .stat-card:last-child { grid-column: 1 / -1; }
  .stat-cards.five .stat-card { min-height: 96px; }
  .stat-cards.five .stat-value { font-size: var(--fs-4); }
  .trend-chart { min-width: 620px; }
  .card:has(.trend-chart) { overflow-x: auto; }
  .dash-target-handoff { align-items: stretch; flex-direction: column; }
  .dash-target-handoff .btn { justify-content: center; }
}

/* ---------- 商品经营诊断（量-率-速，详情页 tab） ---------- */
.stat-cards.diag-cards { grid-template-columns: repeat(3, 1fr); }
.stat-cards.diag-cards .stat-card { border-right: 1px solid var(--border); }
.stat-cards.diag-cards .stat-card:last-child { border-right: none; }
.pct-bar {
  position: relative;
  height: 6px;
  margin-top: 8px;
  border-radius: 3px;
  background: linear-gradient(to right,
    var(--danger-bg) 0%, var(--danger-bg) 30%,
    var(--sidebar) 30%, var(--sidebar) 70%,
    var(--success-bg) 70%, var(--success-bg) 100%);
  border: 1px solid var(--border);
}
.pct-mark {
  position: absolute;
  top: -3px;
  bottom: -3px;
  width: 2px;
  background: var(--text);
  border-radius: 1px;
}
.diag-conclusion {
  margin-top: 12px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
}
.diag-line { font-size: var(--fs-2); line-height: 1.9; }

/* ---------- 种草引流（漏斗 + 级间转化率侧栏） ---------- */
.seed-funnel-wrap {
  display: flex;
  gap: 16px;
  align-items: stretch;
  padding: 12px 16px;
}
.seed-funnel-rates {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 10px;
  min-width: 150px;
  font-size: var(--fs-1);
  border-left: 1px solid var(--border);
  padding-left: 16px;
}

/* ---------- Scrollbar ---------- */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: #d4d4d8;
  border-radius: 8px;
  border: 2px solid transparent;
  background-clip: padding-box;
}
::-webkit-scrollbar-thumb:hover { background: #a1a1aa; background-clip: padding-box; }

/* ---------- Responsive ---------- */
@media (max-width: 1100px) {
  .stat-cards { grid-template-columns: repeat(2, 1fr); }
  .stat-cards.five { grid-template-columns: repeat(2, 1fr); }
  .stat-cards.five .stat-card { border-right: none; border-bottom: 1px solid var(--border); }
  .stat-card:nth-child(2) { border-right: none; }
  .stat-card:nth-child(1),
  .stat-card:nth-child(2) { border-bottom: 1px solid var(--border); }
  .page-body { padding: 16px 18px 40px; }
  .page-header { padding: 0 18px; }
}

@media (max-width: 800px) {
  body { overflow-x: hidden; }
  .layout { flex-direction: column; }
  .sidebar {
    width: 100%;
    height: auto;
    position: sticky;
    top: 0;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    padding: 7px 10px;
    gap: 4px;
    border-right: none;
    border-bottom: 1px solid var(--border);
    box-shadow: 0 4px 12px rgba(24, 24, 27, 0.06);
  }
  .sidebar .logo {
    height: auto;
    border: none;
    margin: 0;
    padding: 6px 8px;
    flex: 1;
    min-width: 0;
  }
  .sidebar .logo-mark-shell { width: 28px; height: 28px; padding: 4px 6px; }
  .brand-wordmark { width: 116px; }
  .brand-copy small { display: none; }
  .boss-brandbar { min-height: 56px; padding: 7px 14px; }
  .boss-brand-wordmark { width: 142px; }
  .boss-brand small { font-size: var(--fs-1); }
  .boss-brand-flag .boss-signal-flags { width: 148px; }
  .boss-view .content { min-height: calc(100vh - 56px); }
  .boss-wechat-share { align-items: stretch; flex-direction: column; gap: 12px; }
  .boss-copy-wechat { width: 100%; }
  .nav-toggle {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
    height: 34px;
    padding: 0 10px;
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-sm);
    color: var(--text);
    background: var(--surface);
    font: 600 12px/1 var(--font);
  }
  .nav-toggle-label {
    max-width: 88px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .nav-toggle svg { width: 16px; height: 16px; flex: 0 0 auto; }
  .sidebar .nav-label,
  .sidebar .side-foot-meta { display: none; }
  .sidebar .side-foot {
    margin: 0;
    padding: 0;
    border: none;
    width: 100%;
    order: 3;
  }
  .ab-switch { max-width: 220px; }
  .sidebar nav {
    display: none;
    order: 3;
    width: 100%;
    max-height: calc(100vh - 64px);
    overflow-y: auto;
    padding: 8px 2px 6px;
    gap: 8px;
  }
  .sidebar.nav-open nav { display: grid; }
  .nav-group {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px;
    padding-top: 7px;
    border-top: 1px solid var(--border);
  }
  .nav-group:first-child { border-top: none; padding-top: 0; }
  .nav-group-automation { padding: 7px 6px; border: 1px solid #d6e3f2; }
  .nav-group-label {
    grid-column: 1 / -1;
    padding: 2px 8px 3px;
  }
  .sidebar nav a { min-height: 38px; padding: 8px 10px; }
  .form-grid { grid-template-columns: 1fr; }
  .detail-header { flex-direction: column; align-items: flex-start; }
  .search-box input { width: 100%; min-width: 180px; }
  .stat-cards { grid-template-columns: 1fr 1fr; }
  .stat-value { font-size: var(--fs-4); }
  .page-header { position: relative; top: auto; flex-wrap: wrap; min-height: auto; padding: 12px 14px; }
  .page-header-left:has(> .page-meta),
  .page-header-left:has(> h1 + .page-meta) { width: 100%; align-items: flex-start; flex-direction: column; gap: 4px; }
  .page-header-left > .page-meta { width: 100%; }
  /* 手机阅读增强（老板微信/企微/邮箱打开场景） */
  .sidebar .side-foot { display: none; }
  .page-header-right { flex-wrap: wrap; width: 100%; gap: 8px; }
  .page-header-right select { max-width: 100%; }
  .section-head { flex-wrap: wrap; }
  .section-head .section-title, .section-head .section-sub { max-width: 100%; flex: 1 1 auto; min-width: 0; }
  .section-title .muted { display: none; }
  .page-body { padding: 14px 14px 36px; }
  .section { margin-top: 22px; }
  .mobile-only { display: block !important; }
}

/* 商品列表分页 */
.pager { display: flex; align-items: center; justify-content: center; gap: 14px; padding: 12px 16px; border-top: 1px solid var(--border, #e5e7eb); }
.pager .btn:disabled { opacity: .45; cursor: not-allowed; }

/* 五店日报（老板版） */
.boss-grid .rank-input { width: 130px; padding: 4px 8px; border: 1px solid transparent; border-radius: 6px; background: transparent; font: inherit; }
.boss-grid .rank-input:hover, .boss-grid .rank-input:focus { border-color: var(--border, #d7dce3); background: #fff; outline: none; }
.rank-display, .rank-fallback { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; min-width: 128px; }
.rank-display strong { font-variant-numeric: tabular-nums; white-space: nowrap; }
.rank-period { display: inline-flex; align-items: center; min-height: 20px; padding: 1px 6px; border-radius: 999px; background: #eef2f7; color: var(--text-3); font-size: var(--fs-1); white-space: nowrap; }
.rank-status { font-size: var(--fs-1); color: var(--text-3); white-space: nowrap; }
.rank-permission { color: var(--warning); }
.rank-fallback .rank-input { flex: 1 1 116px; border-color: var(--border, #d7dce3); background: #fff; }
.rank-history-block { margin-top: 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); overflow: hidden; }
.rank-history-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 14px 16px 12px; border-bottom: 1px solid var(--border); }
.rank-history-head > div { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px; min-width: 0; }
.rank-history-head span, .rank-policy-note, .rank-history-note { color: var(--text-3); font-size: var(--fs-1); }
.rank-history-note { max-width: 440px; text-align: right; }
.rank-chart-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; padding: 14px; }
.rank-chart-card { min-width: 0; padding: 14px; border: 1px solid var(--border); border-radius: 10px; background: #fff; }
.rank-chart-card-head, .rank-chart-card-head > div, .rank-chart-kpis, .rank-chart-foot {
  display: flex; align-items: center;
}
.rank-chart-card-head { justify-content: space-between; gap: 10px; }
.rank-chart-card-head > div { min-width: 0; flex-wrap: wrap; gap: 7px; }
.rank-chart-card-head strong { font-size: var(--fs-2); }
.rank-chart-direction { color: var(--success) !important; font-size: var(--fs-1) !important; white-space: nowrap; }
.rank-chart-kpis { align-items: flex-end; gap: 18px; margin-top: 14px; }
.rank-chart-kpis > div { display: flex; min-width: 0; flex-direction: column; gap: 3px; }
.rank-chart-kpis span { color: var(--text-3); font-size: var(--fs-1); }
.rank-chart-kpis strong, .rank-chart-kpis .rank-up, .rank-chart-kpis .rank-down, .rank-chart-kpis .rank-flat {
  min-height: 20px; color: var(--text); font-size: var(--fs-2); line-height: 20px;
}
.rank-chart-kpis .rank-up { color: var(--success); }
.rank-chart-kpis .rank-down { color: var(--danger); }
.rank-chart-current strong { color: var(--accent); font-size: var(--fs-4); font-variant-numeric: tabular-nums; }
.rank-trend-chart { display: block; width: 100%; height: auto; margin-top: 8px; overflow: visible; }
.rank-chart-gridline { stroke: #e7eaf0; stroke-width: 1; vector-effect: non-scaling-stroke; }
.rank-chart-line { fill: none; stroke: var(--accent); stroke-width: 2.25; stroke-linecap: round; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.rank-chart-point { fill: #fff; stroke: var(--accent); stroke-width: 1.75; vector-effect: non-scaling-stroke; }
.rank-chart-point.is-latest { fill: var(--accent); stroke: #fff; stroke-width: 2.5; }
.rank-chart-axis { fill: var(--text-3); font-size: var(--fs-1); font-variant-numeric: tabular-nums; }
.rank-chart-axis-better { fill: var(--success); font-weight: 650; }
.rank-chart-sample-note { margin: -7px 0 8px; color: var(--text-3); font-size: var(--fs-1); text-align: center; }
.rank-chart-empty { display: flex; min-height: 132px; margin-top: 10px; align-items: center; justify-content: center; flex-direction: column; gap: 6px; border-radius: 8px; background: #f7f8fa; color: var(--text-2); font-size: var(--fs-2); text-align: center; }
.rank-chart-empty span { color: var(--text-3); font-size: var(--fs-1); }
.rank-chart-foot { justify-content: space-between; gap: 10px; padding-top: 8px; border-top: 1px solid #eef0f3; color: var(--text-3); font-size: var(--fs-1); }
.rank-up { color: var(--success); font-weight: 600; white-space: nowrap; }
.rank-down { color: var(--danger); font-weight: 600; white-space: nowrap; }
.rank-flat { color: var(--text-3); white-space: nowrap; }
.boss-grid .total-row td { font-weight: 600; border-top: 2px solid var(--border, #d7dce3); }
/* 手机端横滑时店铺列钉住，老板扫读不迷路 */
.boss-grid th:first-child, .boss-grid td:first-child {
  position: sticky; left: 0; z-index: 2; background: var(--surface);
  box-shadow: 1px 0 0 var(--border);
}
.boss-grid thead th:first-child { z-index: 3; background: #fafafa; }
.src-tag { display: inline-block; font-size: var(--fs-1); line-height: 1; padding: 2px 4px; border-radius: 4px; background: #eef2f7; color: #5a6b85; vertical-align: middle; }

@media (max-width: 800px) {
  .rank-history-head { flex-direction: column; }
  .rank-history-note { max-width: none; text-align: left; }
  .rank-chart-grid { grid-template-columns: 1fr; padding: 10px; }
  .rank-chart-card { padding: 12px; }
  .rank-chart-kpis { justify-content: space-between; gap: 8px; }
}

@media (min-width: 801px) and (max-width: 1220px) {
  .rank-chart-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* 内容素材看板：诊断标签徽章 + 可排序表头 */
.tag.diag-可放量 { background: var(--success-bg); color: var(--success); border-color: var(--success-border); }
.tag.diag-缺曝光 { background: var(--info-bg); color: var(--info); border-color: #bfdbfe; }
.tag.diag-缺停留 { background: var(--warning-bg); color: var(--warning); border-color: var(--warning-border); }
.tag.diag-缺点击 { background: #fff7ed; color: #c2410c; border-color: #fed7aa; }
.tag.diag-缺成交 { background: var(--danger-bg); color: var(--danger); border-color: var(--danger-border); }
.tag.diag-需重拍 { background: var(--danger); color: #fff; border-color: var(--danger); }
.tag.diag-数据不足 { background: #f4f4f5; color: var(--text-3); border-color: var(--border); }

.content-howto {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 12px;
  margin: 0 0 12px;
  padding: 10px 14px;
  border: 1px solid #dbeafe;
  border-radius: 10px;
  background: #eff6ff;
  color: #1e3a8a;
  font-size: var(--fs-2);
  line-height: 1.5;
}
.content-howto b { font-weight: 700; }
.content-product-row { cursor: pointer; }
.content-product-row.is-open td { background: #f8fafc; }
table.grid .name-cell.content-name {
  white-space: normal;
  overflow: visible;
  max-width: 280px;
}
.content-expand-btn { margin-top: 6px; }
.content-drill > td {
  padding: 0;
  background: #eef2ff;
}
.content-drill-inner { padding: 10px 12px 14px 48px; }
.content-drill-caption {
  margin: 0 0 8px;
  font-size: var(--fs-1);
  font-weight: 600;
  color: var(--text);
}
.content-drill-grid { min-width: 0; background: #fff; }
.content-advice {
  white-space: normal;
  min-width: 200px;
  font-weight: 400;
  color: var(--text-2);
  font-size: var(--fs-1);
  line-height: 1.5;
}
.content-acts {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.content-act-miss { font-size: var(--fs-1); color: var(--text-3); align-self: center; }

table.grid th.sortable { cursor: pointer; user-select: none; white-space: nowrap; }
table.grid th.sortable:hover { color: var(--text); }
table.grid th.sorted { color: var(--accent); }

/* 全站表头排序（app.js 事件委托版）：可排表头指示 + 方向箭头 */
table.grid thead th { cursor: pointer; user-select: none; }
table.grid thead th:hover { color: var(--text); }
table.grid.no-sort thead th { cursor: default; }
table.grid.grid-narrow { max-width: 760px; }

/* 桌面端：表格填满卡片宽度（消除右侧大空白）；窄表等分列避免单个大空白。手机保持紧凑横滑 */
@media (min-width: 801px) {
  table.grid { min-width: 100%; }
  table.grid.grid-narrow { max-width: none; table-layout: fixed; }
}
table.grid th.sorted.sort-asc::after { content: ' ▲'; font-size: var(--fs-1); }
table.grid th.sorted.sort-desc::after { content: ' ▼'; font-size: var(--fs-1); }

/* 店铺分析：数据完整度徽章 + 六宫格指标卡 */
.stat-cards.six { grid-template-columns: repeat(6, 1fr); }
.stat-cards.six .stat-card { border-right: 1px solid var(--border); }
.stat-cards.six .stat-card:last-child { border-right: none; }
.tag.comp-good { background: var(--success-bg); color: var(--success); border-color: var(--success-border); }
.tag.comp-warn { background: var(--warning-bg); color: var(--warning); border-color: var(--warning-border); }
.tag.comp-bad { background: var(--danger-bg); color: var(--danger); border-color: var(--danger-border); }
@media (max-width: 1100px) { .stat-cards.six { grid-template-columns: repeat(2, 1fr); } }

/* 全年目标视角：宽弹窗 + 可点击单元格 */
.modal.modal-wide { width: min(1160px, 96vw); }
.yt-cell { cursor: pointer; }
.yt-cell:hover { background: var(--hover, rgba(0, 0, 0, 0.04)); }
.yt-empty { color: var(--text-muted, #999); }

/* 全年目标拆分页 */
.pl-cards { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
.pl-card { min-width: 0; border: 1px solid var(--border); border-radius: var(--radius, 8px); padding: 10px 12px; cursor: pointer; background: var(--surface); }
.pl-card:hover { border-color: var(--border-strong); }
.pl-card.active { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.pl-card-t { min-width: 0; font-size: var(--fs-1); font-weight: 600; margin-bottom: 6px; overflow-wrap: anywhere; }
.pl-card-v { min-width: 0; font-size: var(--fs-1); color: var(--text-2); line-height: 1.8; overflow-wrap: anywhere; }
.pl-rate-bar { display: flex; flex-wrap: wrap; gap: 4px 6px; align-items: center; font-size: var(--fs-1); color: var(--text-2); margin-bottom: 10px; }
table.grid.pl-table { width: 1110px; min-width: 100%; table-layout: fixed; font-size: var(--fs-1); }
.pl-table th,
.pl-table td { padding-left: 8px; padding-right: 8px; }
.pl-table th:first-child,
.pl-table td:first-child { width: 116px; }
.pl-table td.pl-strong { font-weight: 600; }
.pl-table tr.pl-subrow td { color: var(--text-2); }
.pl-badge { display: inline-block; font-size: var(--fs-1); line-height: 14px; padding: 0 4px; border-radius: 3px; background: var(--warning-bg); color: var(--warning); border: 1px solid var(--warning-border); margin-left: 4px; vertical-align: 1px; }
@media (max-width: 1200px) { .pl-cards { grid-template-columns: repeat(3, 1fr); } }

/* 五店经营节奏 */
.pace-section { margin-bottom: 24px; }
.pace-toolbar,
.pace-calendar-head,
.pace-summary,
.pace-actions,
.pace-checks { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pace-toolbar,
.pace-calendar-head { justify-content: space-between; }
.pace-actions label { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-1); color: var(--text-2); }
.pace-actions input,
.pace-actions select { height: 30px; font-size: var(--fs-1); }
.pace-actions #pace-actor { width: 190px; }
.pace-summary { padding: 10px 12px; margin-top: 12px; border: 1px solid var(--border); border-radius: var(--radius, 8px); font-size: var(--fs-1); color: var(--text-2); }
.pace-summary > div:first-child { display: flex; align-items: center; gap: 8px; color: var(--text); }
.pace-summary code { font-size: var(--fs-1); }
.pace-badge { display: inline-flex; align-items: center; min-height: 20px; padding: 1px 7px; border: 1px solid var(--border-strong); border-radius: 999px; font-size: var(--fs-1); background: var(--surface); color: var(--text-2); }
.pace-badge.ok { color: var(--success); border-color: var(--success); }
.pace-badge.warn { color: var(--warning); border-color: var(--warning); }
.pace-badge.bad,
.pace-blocked { color: var(--danger); border-color: var(--danger); }
.pace-fallback { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 12px; padding: 14px; border: 1px dashed var(--border-strong); border-radius: var(--radius, 8px); font-size: var(--fs-1); color: var(--text-2); }
.pace-validation { display: flex; gap: 8px 14px; flex-wrap: wrap; margin-top: 10px; padding: 9px 12px; border-radius: 6px; font-size: var(--fs-1); }
.pace-validation.ok { color: var(--success); background: var(--success-bg); }
.pace-validation.bad { color: var(--danger); background: var(--danger-bg); }
.pace-store-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; margin: 10px 0; }
.pace-store-card { min-width: 0; padding: 10px; text-align: left; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--text); cursor: pointer; }
.pace-store-card:hover,
.pace-store-card.active { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.pace-store-card strong,
.pace-store-card span { display: block; }
.pace-store-card span { margin-top: 4px; color: var(--text-2); font-size: var(--fs-1); line-height: 1.4; }
.pace-calendar { border: 1px solid var(--border); border-radius: var(--radius, 8px); overflow: hidden; }
.pace-calendar-head { padding: 10px 12px; border-bottom: 1px solid var(--border); background: var(--sidebar); }
.pace-calendar-head > div:first-child span { display: block; margin-top: 3px; color: var(--text-2); font-size: var(--fs-1); }
.pace-table select,
.pace-table input { height: 26px; min-width: 90px; font-size: var(--fs-1); }
.pace-table .pace-weight { width: 96px; text-align: right; }
.pace-checks { justify-content: flex-end; padding: 9px 12px; border-top: 1px solid var(--border); font-size: var(--fs-1); color: var(--text-2); }
.pace-performance { margin-top: 12px; }
.pace-performance-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 9px; }
.pace-performance-head > div { min-width: 0; }
.pace-performance-head strong,
.pace-performance-head span { display: block; }
.pace-performance-head strong { font-size: var(--fs-2); }
.pace-performance-head span { margin-top: 3px; color: var(--text-3); font-size: var(--fs-1); line-height: 1.45; }
.pace-performance-head > span { flex: 0 0 auto; margin-top: 0; padding: 3px 7px; border-radius: 999px; background: var(--bg); }
.pace-performance-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.pace-performance-card { min-width: 0; padding: 10px; border: 1px solid var(--border); border-top: 3px solid var(--border-strong); border-radius: var(--radius); background: var(--surface); }
.pace-performance-card.ok { border-top-color: var(--success); }
.pace-performance-card.warn { border-top-color: var(--warning); }
.pace-performance-card.bad { border-top-color: var(--danger); }
.pace-performance-card > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.pace-performance-card > div:first-child strong { min-width: 0; font-size: var(--fs-1); overflow-wrap: anywhere; }
.pace-performance-card dl { display: grid; gap: 6px; margin: 10px 0 0; }
.pace-performance-card dl > div { min-width: 0; }
.pace-performance-card dt { color: var(--text-3); font-size: var(--fs-1); }
.pace-performance-card dd { margin: 2px 0 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.35; overflow-wrap: anywhere; }
.pace-performance-card dd.bad { color: var(--danger); }
.pace-performance-card p { margin: 7px 0 0; color: var(--danger); font-size: var(--fs-1); line-height: 1.4; }
@media (max-width: 1000px) {
  .pace-store-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pace-performance-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pace-toolbar { align-items: flex-start; }
}
@media (max-width: 800px) {
  .pace-section { margin: 0 12px 20px; }
  .pace-actions { width: 100%; }
  .pace-actions label { width: 100%; justify-content: space-between; }
  .pace-actions input,
  .pace-actions select,
  .pace-actions #pace-actor { flex: 1; width: auto; }
  .pace-store-grid { grid-template-columns: 1fr; }
  .pace-performance-head { flex-direction: column; }
  .pace-performance-grid { grid-template-columns: 1fr; }
}

/* 经营复盘：图表在窄屏保留图例和坐标空间，分类标签完整呈现 */
.weekly-chart { width: 100%; min-width: 0; }
.weekly-quad-chart { height: 440px; }
.weekly-trend-chart { height: 260px; }
.weekly-page-body .section-sub { max-width: 100%; }
.weekly-page-body,
.report-page-body { container: decision-body / inline-size; }

/* 五张老板卡按内容区宽度重排，避免侧栏存在时只按浏览器宽度误判。 */
.stat-cards.five.adaptive-five {
  grid-template-columns: repeat(10, minmax(0, 1fr));
  gap: 1px;
  background: var(--border);
}
.stat-cards.five.adaptive-five > .stat-card {
  grid-column: span 2;
  border: 0 !important;
}
.report-profit-summary.refund-rate-summary {
  grid-template-columns: repeat(16, minmax(0, 1fr));
}
.report-profit-summary.refund-rate-summary > .stat-card { grid-column: span 2; }
.weekly-summary .stat-value,
.report-profit-summary .stat-value { white-space: nowrap; }
.weekly-summary > .stat-card:last-child .stat-value { white-space: normal; }
.weekly-product-table .weekly-image-col { width: 76px; }
.weekly-product-table .weekly-style-col { min-width: 118px; }
.weekly-product-table .name-cell { max-width: 240px; }

@container decision-body (max-width: 980px) {
  .stat-cards.five.adaptive-five { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .stat-cards.five.adaptive-five > .stat-card:nth-child(-n + 3) { grid-column: span 2; }
  .stat-cards.five.adaptive-five > .stat-card:nth-child(n + 4) { grid-column: span 3; }
  .report-profit-summary.refund-rate-summary { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .report-profit-summary.refund-rate-summary > .stat-card:nth-child(n) { grid-column: span 2; }
  .report-profit-summary.refund-rate-summary > .stat-card:nth-last-child(2) { grid-column: 2 / span 2; }
}

@container decision-body (max-width: 640px) {
  .stat-cards.five.adaptive-five { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stat-cards.five.adaptive-five > .stat-card:nth-child(n) { grid-column: span 1; }
  .stat-cards.five.adaptive-five > .stat-card:last-child { grid-column: 1 / -1; }
  .report-profit-summary.refund-rate-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .report-profit-summary.refund-rate-summary > .stat-card:nth-child(n) { grid-column: span 1; }
}

/* 标题说明和周选择器在中等窗口主动换行，不等到手机断点才处理。 */
@media (max-width: 1320px) {
  .weekly-page-header {
    min-height: auto;
    padding-top: 10px;
    padding-bottom: 10px;
    align-items: flex-start;
    flex-wrap: wrap;
  }
  .weekly-page-header .page-header-left {
    width: 100%;
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }
  .weekly-page-header .page-header-right { width: 100%; justify-content: flex-start; }
}

@media (max-width: 800px) {
  .weekly-quad-chart { height: 420px; }
  .weekly-trend-chart { height: 240px; }
  .weekly-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    overflow: visible;
    margin-bottom: 12px;
  }
  .weekly-tabs .tab {
    min-width: 0;
    justify-content: center;
    padding: 9px 5px;
    text-align: center;
    white-space: normal;
    line-height: 1.3;
    overflow-wrap: anywhere;
  }
}

/* 经营总览 · 盈利周报 */
.report-profit-head > div:first-child { min-width: 0; }
.report-profit-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.report-profit-actions label { color: var(--text-3); font-size: var(--fs-1); }
.report-period-toggle {
  display: inline-grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  padding: 2px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--bg-subtle);
}
.report-period-option {
  min-width: 66px;
  height: 28px;
  padding: 0 10px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--text-3);
  font: inherit;
  font-size: var(--fs-1);
  cursor: pointer;
}
.report-period-option.active {
  background: var(--surface);
  color: var(--accent);
  box-shadow: 0 1px 3px rgba(15, 23, 42, .12);
  font-weight: 650;
}
.report-period-field { display: inline-flex; align-items: center; gap: 7px; min-width: 0; }
.report-data-health {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 10px 0;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-left-width: 3px;
  border-radius: 8px;
  background: var(--surface);
}
.report-data-health.is-complete { border-left-color: var(--success); }
.report-data-health.is-missing { border-left-color: var(--danger); }
.report-data-health.is-missing .report-health-copy strong { letter-spacing: .01em; }
.report-decision-blocked { color: var(--text-3); font-weight: 650; }
.grid tr.is-decision-blocked > td:not(:first-child) {
  background: color-mix(in srgb, var(--surface) 86%, var(--text-3));
}
.report-health-copy { min-width: 0; display: grid; gap: 2px; line-height: 1.4; }
.report-health-copy strong { font-size: var(--fs-1); }
.report-health-copy span { color: var(--text-3); font-size: var(--fs-1); overflow-wrap: anywhere; }
.report-health-items { display: flex; justify-content: flex-end; gap: 5px; flex-wrap: wrap; }
.report-health-item {
  display: inline-flex;
  align-items: center;
  min-height: 23px;
  padding: 2px 7px;
  border-radius: 999px;
  background: var(--bg-subtle);
  color: var(--text-3);
  font-size: var(--fs-1);
  white-space: nowrap;
}
.report-health-item.is-complete { color: var(--success); background: color-mix(in srgb, var(--success) 9%, transparent); }
.report-health-item.is-missing { color: var(--danger); background: color-mix(in srgb, var(--danger) 8%, transparent); }
.report-store-cell { min-width: 160px; line-height: 1.35; }
.report-row-gaps { margin-top: 4px; color: var(--danger); font-size: var(--fs-1); line-height: 1.45; overflow-wrap: anywhere; }
.report-row-latest { margin-top: 2px; color: var(--text-3); font-size: var(--fs-1); line-height: 1.4; overflow-wrap: anywhere; }
.report-row-ready { margin-top: 3px; color: var(--success); font-size: var(--fs-1); }
.report-profit-table-card { margin-top: 10px; }
.report-profit-grid .report-profit-rate { margin-top: 2px; font-size: var(--fs-1); }
.report-profit-grid .report-profit-primary {
  background: color-mix(in srgb, var(--accent) 5%, var(--surface));
  font-weight: 650;
}
.report-profit-grid th:first-child,
.report-profit-grid td:first-child {
  position: sticky;
  left: 0;
  z-index: 2;
  box-sizing: border-box;
  width: 180px;
  min-width: 180px;
  max-width: 180px;
  white-space: normal;
  background: var(--surface);
  box-shadow: 1px 0 0 var(--border);
}
.report-profit-grid thead th:first-child { z-index: 4; background: #fafafa; }
@media (min-width: 900px) {
  .report-profit-grid th:nth-child(2),
  .report-profit-grid td:nth-child(2) {
    position: sticky;
    left: 180px;
    z-index: 2;
    box-sizing: border-box;
    width: 132px;
    min-width: 132px;
    max-width: 132px;
  }
  .report-profit-grid th:nth-child(3),
  .report-profit-grid td:nth-child(3) {
    position: sticky;
    left: 312px;
    z-index: 2;
    box-sizing: border-box;
    width: 108px;
    min-width: 108px;
    max-width: 108px;
    box-shadow: 1px 0 0 var(--border);
  }
  .report-profit-grid thead th:nth-child(2),
  .report-profit-grid thead th:nth-child(3) { z-index: 4; }
}
.report-profit-foot {
  padding: 9px 14px;
  border-top: 1px solid var(--border);
  color: var(--text-3);
  font-size: var(--fs-1);
  line-height: 1.5;
  overflow-wrap: anywhere;
}

@container decision-body (max-width: 720px) {
  .report-profit-head { align-items: stretch; flex-wrap: wrap; }
  .report-profit-head > div:first-child,
  .report-profit-actions { width: 100%; }
  .report-profit-actions { justify-content: flex-start; }
  .report-data-health { align-items: flex-start; flex-direction: column; }
  .report-health-items { justify-content: flex-start; }
}

@media (max-width: 800px) {
  .report-profit-head { align-items: stretch; }
  .report-profit-head > div:first-child,
  .report-profit-actions { width: 100%; }
  .report-profit-actions { display: grid; grid-template-columns: 1fr; justify-content: stretch; }
  .report-period-toggle { width: 100%; }
  .report-period-field { display: grid; grid-template-columns: auto minmax(0, 1fr); }
  .report-profit-actions input { width: 100%; min-width: 0; }
  .report-profit-actions .btn { width: 100%; }
}

/* 经营总览首屏：结论、真实数据图形、待办；大表下沉为可展开证据。 */
.report-decision-layer {
  display: grid;
  gap: 16px;
  margin-bottom: 16px;
  padding: 22px;
  border: 1px solid #d9e2ed;
  border-radius: 14px;
  background: #f6f8fb;
  box-shadow: 0 8px 26px rgba(20, 43, 82, .05);
}
.report-decision-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
}
.report-eyebrow {
  display: block;
  margin-bottom: 3px;
  color: #59708f;
  font-size: var(--fs-1);
  font-weight: 750;
  letter-spacing: .08em;
}
.report-decision-head h2 { margin: 0; color: #132b4d; font-size: var(--fs-5); line-height: 1.25; }
.report-decision-sources { display: flex; justify-content: flex-end; gap: 6px; flex-wrap: wrap; }
.report-decision-source {
  display: inline-flex;
  align-items: center;
  min-height: 26px;
  padding: 3px 9px;
  border: 1px solid #dde4ec;
  border-radius: 999px;
  background: #fff;
  color: var(--text-3);
  font-size: var(--fs-1);
  font-weight: 650;
}
.report-decision-source.is-ready { border-color: #bcdcca; background: #f1faf5; color: #246b4d; }
.report-decision-source.is-missing { border-color: #efc3c3; background: #fff6f6; color: #a43c3c; }
.report-identity-warning { padding: 9px 12px; border-left: 3px solid var(--danger); background: var(--danger-bg); color: #8f3030; font-size: var(--fs-1); }
.report-conclusion-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.report-conclusion-grid.is-1 { grid-template-columns: 1fr; }
.report-conclusion-grid.is-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.report-conclusion {
  min-width: 0;
  min-height: 112px;
  padding: 15px 16px;
  border: 1px solid #dfe5ed;
  border-top: 3px solid #8392a6;
  border-radius: 10px;
  background: #fff;
}
.report-conclusion.is-positive { border-top-color: #2d8063; }
.report-conclusion.is-warning { border-top-color: #c27a27; }
.report-conclusion.is-neutral { border-top-color: #345f91; }
.report-conclusion strong { display: block; color: #183354; font-size: var(--fs-3); line-height: 1.35; }
.report-conclusion p { margin: 9px 0 0; color: #657287; font-size: var(--fs-1); line-height: 1.65; }
.report-viz-grid { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(280px, .85fr); gap: 10px; }
.report-mini-viz { min-width: 0; padding: 15px 16px; border: 1px solid #dfe5ed; border-radius: 10px; background: #fff; }
.report-mini-viz:only-child { grid-column: 1 / -1; }
.report-mini-viz-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 13px; }
.report-mini-viz-head strong { color: #203650; font-size: var(--fs-1); }
.report-mini-viz-head span { color: var(--text-3); font-size: var(--fs-1); }
.report-channel-bars { display: grid; gap: 8px; }
.report-channel-row { display: grid; grid-template-columns: minmax(132px, 1.1fr) minmax(120px, 2.2fr) 92px; align-items: center; gap: 10px; }
.report-channel-row > div:first-child { display: flex; justify-content: space-between; gap: 8px; min-width: 0; }
.report-channel-row > div:first-child strong { overflow: hidden; color: #3e4d61; font-size: var(--fs-1); font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.report-channel-row > div:first-child span { color: #7a8798; font-size: var(--fs-1); }
.report-channel-row > b { color: #263c57; font-size: var(--fs-1); text-align: right; font-variant-numeric: tabular-nums; }
.report-channel-track { overflow: hidden; height: 8px; border-radius: 999px; background: #e9edf2; }
.report-channel-track > span { display: block; height: 100%; border-radius: inherit; background: #315d8d; }
.report-pace-values { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; overflow: hidden; margin-bottom: 18px; border: 1px solid #e1e6ed; border-radius: 8px; background: #e1e6ed; }
.report-pace-values > div { padding: 10px 11px; background: #f8fafc; }
.report-pace-values span { display: block; color: #7d8999; font-size: var(--fs-1); }
.report-pace-values strong { display: block; margin-top: 3px; color: #1b3658; font-size: var(--fs-4); }
.report-pace-track { position: relative; height: 10px; border-radius: 999px; background: #e8edf3; }
.report-pace-actual { display: block; height: 100%; border-radius: inherit; background: #2d8063; }
.report-pace-track > i { position: absolute; top: -4px; width: 2px; height: 18px; margin-left: -1px; background: #c27a27; }
.report-pace-legend { display: flex; gap: 15px; margin-top: 10px; color: var(--text-3); font-size: var(--fs-1); }
.report-pace-legend span { display: inline-flex; align-items: center; gap: 5px; }
.report-pace-legend i { display: inline-block; width: 9px; height: 3px; border-radius: 2px; }
.report-pace-legend .is-actual { background: #2d8063; }
.report-pace-legend .is-time { background: #c27a27; }
.report-action-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.report-action-grid > section { min-width: 0; overflow: hidden; border: 1px solid #dfe5ed; border-radius: 10px; background: #fff; }
.report-action-title { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding: 11px 13px; border-bottom: 1px solid #e7ebf0; background: #fbfcfd; }
.report-action-title strong { color: #263b55; font-size: var(--fs-1); }
.report-action-title span { color: var(--text-3); font-size: var(--fs-1); }
.report-action-grid ul { display: grid; list-style: none; }
.report-action-grid li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 9px; min-height: 57px; padding: 9px 12px; border-bottom: 1px solid #edf0f3; }
.report-action-grid li:last-child { border-bottom: 0; }
.report-action-grid li > div { min-width: 0; }
.report-action-grid li strong, .report-action-grid li span { display: block; }
.report-action-grid li strong { overflow: hidden; color: #35465c; font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.report-action-grid li div > span { margin-top: 3px; color: #7b8797; font-size: var(--fs-1); line-height: 1.45; }
.report-action-grid li > a { color: #295d91; font-size: var(--fs-1); font-weight: 650; white-space: nowrap; }
.report-action-grid li.is-empty { grid-template-columns: 1fr; min-height: 68px; }
.report-action-level { padding: 3px 7px; border-radius: 999px; font-size: var(--fs-1); font-weight: 750; }
.report-action-level.is-urgent { background: #fbe6e6; color: #9f3636; }
.report-action-level.is-important { background: #fff0d8; color: #875718; }
.report-action-level.is-normal { background: #edf1f5; color: #5e6979; }
.report-evidence { overflow: hidden; margin-top: 14px; border: 1px solid var(--border); border-radius: 11px; background: var(--surface); }
.report-evidence > summary { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 16px; color: #35455a; cursor: pointer; list-style-position: inside; }
.report-evidence > summary:hover { background: #f8fafc; }
.report-evidence > summary strong { font-size: var(--fs-1); }
.report-evidence > summary span { margin-left: auto; color: var(--text-3); font-size: var(--fs-1); font-weight: 400; }
.report-evidence[open] > summary { border-bottom: 1px solid var(--border); background: #f8fafc; }
.report-evidence > .section,
.report-evidence > .report-section,
.report-evidence > .stat-cards,
.report-evidence > .empty { margin-right: 16px; margin-left: 16px; }
.report-evidence > .section:last-child,
.report-evidence > .report-section:last-child,
.report-evidence > .empty:last-child { margin-bottom: 16px; }

@container decision-body (max-width: 960px) {
  .report-conclusion-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .report-conclusion-grid.is-1 { grid-template-columns: 1fr; }
  .report-viz-grid { grid-template-columns: 1fr; }
  .report-action-grid { grid-template-columns: 1fr; }
}
@container decision-body (max-width: 680px) {
  .report-decision-layer { padding: 15px; border-radius: 10px; }
  .report-decision-head { align-items: flex-start; flex-direction: column; }
  .report-decision-sources { justify-content: flex-start; }
  .report-conclusion-grid { grid-template-columns: 1fr; }
  .report-channel-row { grid-template-columns: minmax(110px, 1fr) 1.6fr; }
  .report-channel-row > b { display: none; }
  .report-evidence > summary { align-items: flex-start; flex-direction: column; }
  .report-evidence > summary span { margin-left: 0; }
}

/* 目标拆分：统一内容边界、横向数据表提示与窄屏排版 */
.target-page-header .page-meta,
.target-pace-section,
.target-pl-body,
.target-ops-section,
.target-monthly-section,
.target-section-head,
.target-controls,
.target-view-controls,
.target-table-shell,
.data-table-shell { min-width: 0; }
.target-page-header .page-meta,
.target-pace-section .section-sub,
.target-ops-section .section-sub { line-height: 1.5; overflow-wrap: anywhere; }
.target-pace-section { margin: 28px 28px 24px; }
.target-ops-section { margin: 30px 28px 48px; }
.target-monthly-section { margin-top: 26px; }
.target-controls,
.target-view-controls { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.target-view-controls { gap: 6px; margin-bottom: 12px; }
.ops-target-cards { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.target-table-card,
.target-table-shell,
.data-table-shell { position: relative; max-width: 100%; }
.target-table-wrap,
.data-table-wrap {
  max-width: 100%;
  overscroll-behavior-inline: contain;
  scrollbar-gutter: stable;
}
.target-table-hint,
.data-table-hint {
  display: none;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  min-height: 30px;
  padding: 5px 10px;
  border-bottom: 1px solid var(--border);
  background: #fafafa;
  color: var(--text-3);
  font-size: var(--fs-1);
  line-height: 1.4;
}
.target-table-shell.has-scroll > .target-table-hint,
.data-table-shell.has-scroll > .target-table-hint,
.data-table-shell.has-scroll > .data-table-hint { display: flex; }
.target-table-shell.has-scroll:not(.at-scroll-end)::after,
.data-table-shell.has-scroll:not(.at-scroll-end)::after {
  content: "";
  position: absolute;
  z-index: 4;
  top: 30px;
  right: 0;
  bottom: 8px;
  width: 18px;
  pointer-events: none;
  background: linear-gradient(90deg, rgb(255 255 255 / 0%), rgb(255 255 255 / 92%));
}
.data-table-wrap:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: -2px;
}
.target-table-wrap table.grid th:first-child,
.target-table-wrap table.grid td:first-child {
  position: sticky;
  left: 0;
  z-index: 2;
  background: var(--surface);
  box-shadow: 1px 0 0 var(--border);
}
.target-table-wrap table.grid thead th:first-child { z-index: 3; background: #fafafa; }
.pace-toolbar > div:first-child,
.pace-calendar-head > div:first-child,
.pace-summary > div,
.pace-checks > span { min-width: 0; overflow-wrap: anywhere; }
.pace-summary strong,
.pace-summary code { overflow-wrap: anywhere; word-break: break-word; }
.pace-calendar { min-width: 0; }

@media (max-width: 1100px) {
  .target-pace-section { margin-left: 18px; margin-right: 18px; }
  .target-ops-section { margin-left: 18px; margin-right: 18px; }
  .ops-target-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 800px) {
  .target-page-header .page-header-left { width: 100%; align-items: flex-start; flex-direction: column; gap: 4px; }
  .target-page-header .page-meta { width: 100%; }
  .target-pace-section { margin: 20px 14px; }
  .target-ops-section { margin: 24px 14px 36px; }
  .target-section-head { align-items: stretch; gap: 10px; }
  .target-controls { width: 100%; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .target-controls select,
  .target-controls input,
  .target-controls .btn { width: 100%; min-width: 0; }
  .target-controls #ops-autosplit { grid-column: 1 / -1; min-height: 34px; height: auto !important; white-space: normal; }
  .target-view-controls .field-hint { flex: 1 0 100%; margin-left: 0 !important; line-height: 1.5; }
  .target-summary-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ops-target-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pl-card { padding: 10px; }
  .pl-card-v { line-height: 1.65; }
  .pl-rate-bar { line-height: 1.55; }
  .pace-toolbar,
  .pace-calendar-head { align-items: stretch; }
  .pace-toolbar > div:first-child,
  .pace-calendar-head > div:first-child { width: 100%; }
  .pace-checks { justify-content: flex-start; }
  .target-table-hint { justify-content: space-between; }
}

/* 行动工作台 */
.store-method-pack { margin-bottom: 18px; padding: 14px 16px; border: 1px solid #cbdaf5; border-radius: var(--radius-lg); background: linear-gradient(135deg, #f8fbff 0%, #fff 72%); }
.method-pack-head,
.method-pack-row,
.method-pack-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.method-pack-head > div { display: flex; align-items: center; gap: 9px; }
.method-pack-head strong { font-size: var(--fs-2); }
.method-platform { display: inline-flex; align-items: center; min-height: 22px; padding: 2px 8px; border-radius: 999px; background: #142b52; color: #fff; font-size: var(--fs-1); }
.method-pack-row { margin-top: 10px; align-items: flex-start; }
.method-pack-row > span { flex: 0 0 106px; padding-top: 3px; color: var(--text-3); font-size: var(--fs-1); }
.method-pack-row > div { display: flex; flex: 1; justify-content: flex-end; gap: 6px; flex-wrap: wrap; }
.method-chip { display: inline-flex; min-height: 24px; align-items: center; padding: 2px 8px; border: 1px solid #cbdaf5; border-radius: 999px; background: #fff; color: #31558e; font-size: var(--fs-1); }
.method-chip.common { border-color: var(--border); color: var(--text-2); background: var(--bg); }
.method-pack-foot { margin-top: 11px; padding-top: 10px; border-top: 1px solid #e3eaf5; align-items: flex-start; color: var(--text-2); font-size: var(--fs-1); line-height: 1.55; }
.method-pack-foot span:first-child { flex: 0 0 auto; font-weight: 600; color: var(--text); }
.ops-scope-note { margin-bottom: 14px; padding: 10px 12px; border: 1px solid var(--border); border-left: 3px solid var(--accent); border-radius: var(--radius); background: var(--bg); color: var(--text-2); font-size: var(--fs-1); line-height: 1.55; }
.ops-scope-note a { color: var(--accent); text-decoration: none; }
.ops-scope-note a:hover { text-decoration: underline; }
.ops-command-bar { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 14px 18px; margin-bottom: 12px; padding: 14px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.ops-command-fields { display: grid; grid-template-columns: repeat(2, minmax(150px, 1fr)); gap: 10px; min-width: 0; }
.ops-command-fields label { display: grid; min-width: 0; gap: 5px; color: var(--text-2); font-size: var(--fs-1); }
.ops-command-fields label > span { line-height: 1.2; }
.ops-command-fields input,
.ops-command-fields select { width: 100%; min-width: 0; height: 34px; font-size: var(--fs-1); }
.ops-command-actions { display: flex; align-items: center; justify-content: flex-end; gap: 7px; flex-wrap: wrap; }
.ops-command-actions .btn { max-width: 100%; min-height: 34px; white-space: normal; text-align: center; overflow-wrap: anywhere; }
.ops-scope-note,
.ops-zone,
.ops-metric,
.ops-source,
.ops-alert,
.ops-task { min-width: 0; overflow-wrap: anywhere; }
.ops-workbench { display: grid; gap: 14px; }
.ops-zone { padding: 14px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.ops-zone-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.ops-zone-head > div { display: flex; align-items: center; gap: 8px; min-width: 0; }
.ops-zone-head h2 { margin: 0; font-size: var(--fs-3); }
.ops-zone-head > span { min-width: 0; color: var(--text-3); font-size: var(--fs-1); text-align: right; overflow-wrap: anywhere; }
.ops-zone-no { color: var(--text-3); font-size: var(--fs-1); letter-spacing: .06em; text-transform: uppercase; }
.ops-verdict-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.ops-verdict-compact { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 10px; }
.ops-assistant-card { padding: 16px; border: 1px solid #cbdaf5; border-left: 4px solid #31558e; border-radius: var(--radius-lg); background: linear-gradient(135deg, #f7faff 0%, #fff 76%); }
.ops-assistant-card.ai { border-color: #a7d8ca; border-left-color: var(--success); background: linear-gradient(135deg, #f3fbf8 0%, #fff 76%); }
.ops-assistant-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ops-assistant-top small { color: var(--text-3); font-size: var(--fs-1); }
.ops-assistant-card h3 { margin: 12px 0 6px; font-size: var(--fs-4); line-height: 1.35; overflow-wrap: anywhere; }
.ops-assistant-card > p { margin: 0; color: var(--text-2); font-size: var(--fs-2); line-height: 1.65; overflow-wrap: anywhere; }
.ops-assistant-notes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
.ops-assistant-notes span { padding: 8px 10px; border-radius: var(--radius); background: rgb(255 255 255 / 72%); color: var(--text-2); font-size: var(--fs-1); line-height: 1.5; overflow-wrap: anywhere; }
.ops-ai-fallback { margin-top: 9px; color: var(--warning); font-size: var(--fs-1); overflow-wrap: anywhere; }
.ops-subhead { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 16px 0 8px; padding-top: 12px; border-top: 1px solid var(--border); }
.ops-subhead:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.ops-subhead strong { font-size: var(--fs-1); }
.ops-subhead span { color: var(--text-3); font-size: var(--fs-1); text-align: right; overflow-wrap: anywhere; }
.ops-priority-list { display: grid; gap: 8px; }
.ops-priority { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 10px; padding: 11px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.ops-priority-no { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 50%; background: #142b52; color: #fff; font-size: var(--fs-1); font-weight: 700; }
.ops-priority > div { min-width: 0; }
.ops-priority > div > div { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ops-priority strong { min-width: 0; font-size: var(--fs-1); overflow-wrap: anywhere; }
.ops-priority > div > div > span { flex: 0 0 auto; color: var(--text-3); font-size: var(--fs-1); }
.ops-priority p { margin: 5px 0 3px; color: var(--text-2); font-size: var(--fs-1); line-height: 1.5; overflow-wrap: anywhere; }
.ops-priority small { color: var(--text-3); font-size: var(--fs-1); }
.ops-system-details { min-width: 0; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.ops-system-details > summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 14px; cursor: pointer; list-style-position: inside; }
.ops-system-details > summary span { font-size: var(--fs-1); font-weight: 600; }
.ops-system-details > summary small { color: var(--text-3); font-size: var(--fs-1); text-align: right; overflow-wrap: anywhere; }
.ops-system-body { display: grid; gap: 8px; padding: 0 14px 14px; }
.ops-metric { min-width: 0; min-height: 94px; padding: 11px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.ops-metric > span,
.ops-metric > strong,
.ops-metric > small { display: block; }
.ops-metric > span { color: var(--text-3); font-size: var(--fs-1); }
.ops-metric > strong { margin: 8px 0; font-size: var(--fs-3); line-height: 1.35; overflow-wrap: anywhere; }
.ops-metric > small { color: var(--text-2); font-size: var(--fs-1); }
.ops-integrity-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.ops-source { display: grid; gap: 5px; padding: 10px 11px; border: 1px solid var(--border); border-left-width: 3px; border-radius: var(--radius); font-size: var(--fs-1); color: var(--text-2); }
.ops-source > div { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; min-width: 0; color: var(--text); }
.ops-source > div strong { min-width: 0; overflow-wrap: anywhere; }
.ops-source.ok { border-left-color: var(--success); }
.ops-source.warn { border-left-color: var(--warning); }
.ops-source.bad { border-left-color: var(--danger); }
.ops-pill { display: inline-flex; align-items: center; max-width: 100%; min-height: 20px; padding: 1px 7px; border: 1px solid var(--border-strong); border-radius: 999px; color: var(--text-2); background: var(--surface); font-size: var(--fs-1); line-height: 1.2; text-align: center; white-space: normal; overflow-wrap: anywhere; }
.ops-pill.ok { color: var(--success); border-color: var(--success-border); background: var(--success-bg); }
.ops-pill.warn { color: var(--warning); border-color: var(--warning-border); background: var(--warning-bg); }
.ops-pill.bad { color: var(--danger); border-color: var(--danger-border); background: var(--danger-bg); }
.ops-alert-list,
.ops-task-list { display: grid; gap: 8px; }
.ops-alert { padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); }
.ops-alert-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ops-alert-top strong { min-width: 0; overflow-wrap: anywhere; }
.ops-alert-top > span:last-child { margin-left: auto; color: var(--text-3); font-size: var(--fs-1); }
.ops-alert p { margin: 8px 0; font-size: var(--fs-1); line-height: 1.55; }
.ops-alert > div:last-child { display: flex; align-items: center; gap: 8px; font-size: var(--fs-1); }
.ops-task { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 12px; border: 1px solid var(--border); border-radius: var(--radius); }
.ops-task.overdue { border-color: var(--danger-border); background: var(--danger-bg); }
.ops-task-main { min-width: 0; }
.ops-task-main > div { display: flex; align-items: flex-start; gap: 8px; min-width: 0; flex-wrap: wrap; }
.ops-task-main > div strong,
.ops-task-main p,
.ops-task-main small { overflow-wrap: anywhere; word-break: break-word; }
.ops-task-main p { margin: 6px 0 4px; color: var(--text-2); font-size: var(--fs-1); }
.ops-task-main small { color: var(--text-3); font-size: var(--fs-1); }
.ops-task-actions { display: flex; align-items: center; justify-content: flex-end; gap: 6px; flex-wrap: wrap; }
.ops-review-table { font-size: var(--fs-1); }
.ops-loop-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-bottom: 12px; }
.ops-loop-summary > div { display: flex; align-items: center; justify-content: space-between; min-width: 0; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.ops-loop-summary span { color: var(--text-2); font-size: var(--fs-1); overflow-wrap: anywhere; }
.ops-loop-summary strong { font-size: var(--fs-4); }
.ops-loop-summary .bad { border-color: var(--danger-border); background: var(--danger-bg); color: var(--danger); }
.ops-loop-summary .warn { border-color: var(--warning-border); background: var(--warning-bg); color: var(--warning); }
.ops-task-trace { display: flex; align-items: center; gap: 6px; margin: 8px 0; flex-wrap: wrap; }
.ops-task-trace span { display: inline-flex; min-height: 24px; align-items: center; padding: 3px 8px; border: 1px solid var(--border); border-radius: 999px; background: var(--bg); color: var(--text-2); font-size: var(--fs-1); }
.ops-task-trace span.complete { border-color: var(--success-border); background: var(--success-bg); color: var(--success); }
.ops-task-trace span.blocked { border-color: var(--danger-border); background: var(--danger-bg); color: var(--danger); }
.ops-task-trace span.waiting,
.ops-task-trace span.gap { border-color: var(--warning-border); background: var(--warning-bg); color: var(--warning); }
.ops-loop-rail { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 7px; margin: 12px 0; }
.ops-loop-stage { position: relative; display: grid; grid-template-columns: 26px minmax(0, 1fr); align-items: start; gap: 7px; min-width: 0; padding: 9px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.ops-loop-stage::after { content: ''; position: absolute; top: 21px; right: -8px; width: 8px; height: 1px; background: var(--border-strong); }
.ops-loop-stage:last-child::after { content: none; }
.ops-loop-dot { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border: 1px solid var(--border-strong); border-radius: 50%; background: var(--surface); color: var(--text-2); font-size: var(--fs-1); font-weight: 700; }
.ops-loop-stage > div { min-width: 0; }
.ops-loop-stage strong,
.ops-loop-stage small { display: block; overflow-wrap: anywhere; }
.ops-loop-stage strong { font-size: var(--fs-1); line-height: 1.35; }
.ops-loop-stage small { margin-top: 3px; color: var(--text-3); font-size: var(--fs-1); line-height: 1.4; }
.ops-loop-stage.complete { border-color: var(--success-border); background: var(--success-bg); }
.ops-loop-stage.complete .ops-loop-dot { border-color: var(--success); color: var(--success); }
.ops-loop-stage.active { border-color: #a8bee1; background: #f3f7fd; box-shadow: inset 0 0 0 1px #d5e1f2; }
.ops-loop-stage.active .ops-loop-dot { border-color: var(--accent); background: var(--accent); color: #fff; }
.ops-loop-stage.blocked { border-color: var(--danger-border); background: var(--danger-bg); }
.ops-loop-stage.blocked .ops-loop-dot { border-color: var(--danger); color: var(--danger); }
.ops-loop-stage.gap { border-color: var(--warning-border); background: var(--warning-bg); }
.ops-loop-stage.gap .ops-loop-dot { border-color: var(--warning); color: var(--warning); }
.ops-loop-stage.waiting { opacity: .72; }
.modal .ops-loop-rail:not(.compact) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.modal .ops-loop-rail:not(.compact) .ops-loop-stage:nth-child(3)::after,
.modal .ops-loop-rail:not(.compact) .ops-loop-stage:nth-child(6)::after { content: none; }
.ops-loop-rail.compact { margin: 8px 0 9px; gap: 5px; }
.ops-loop-rail.compact .ops-loop-stage { grid-template-columns: 20px minmax(0, 1fr); gap: 5px; padding: 6px; }
.ops-loop-rail.compact .ops-loop-dot { width: 20px; height: 20px; font-size: var(--fs-1); }
.ops-loop-rail.compact .ops-loop-stage::after { top: 16px; right: -6px; width: 6px; }
.ops-loop-rail.compact .ops-loop-stage strong,
.ops-loop-rail.compact .ops-loop-stage small { font-size: var(--fs-1); }
.ops-loop-missing { margin: 8px 0; padding: 9px; border: 1px dashed var(--border); border-radius: var(--radius); color: var(--text-3); font-size: var(--fs-1); }
.ops-task-next { display: flex; align-items: flex-start; gap: 7px; margin: 8px 0 0 !important; color: var(--text) !important; font-size: var(--fs-1) !important; }
.ops-task-next b { flex: 0 0 auto; color: var(--accent); }
.ops-next-banner { display: grid; gap: 4px; margin-bottom: 12px; padding: 11px 12px; border: 1px solid #a8bee1; border-left: 4px solid var(--accent); border-radius: var(--radius); background: #f3f7fd; }
.ops-next-banner span { color: var(--text-3); font-size: var(--fs-1); }
.ops-next-banner strong { font-size: var(--fs-2); overflow-wrap: anywhere; }
.ops-evidence { margin-bottom: 12px; padding: 10px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.ops-evidence p { margin: 6px 0; font-size: var(--fs-1); }
.ops-evidence pre { max-height: 160px; margin: 6px 0 0; padding: 8px; overflow: auto; font-size: var(--fs-1); white-space: pre-wrap; }
.ops-evidence-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ops-evidence-meta { display: flex; gap: 6px 12px; flex-wrap: wrap; color: var(--text-3); font-size: var(--fs-1); line-height: 1.5; }
.ops-receipt { margin: 0 0 12px; padding: 10px; border: 1px solid var(--success-border); border-radius: var(--radius); background: var(--success-bg); }
.ops-receipt.waiting { border-color: var(--border); background: var(--bg); }
.ops-receipt.gap { border-color: var(--warning-border); background: var(--warning-bg); }
.ops-receipt > div { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ops-receipt span,
.ops-receipt small { color: var(--text-3); font-size: var(--fs-1); overflow-wrap: anywhere; }
.ops-receipt p { margin: 7px 0; font-size: var(--fs-1); line-height: 1.55; }
.ops-receipt pre { max-height: 150px; margin: 8px 0 0; padding: 8px; overflow: auto; border-radius: 6px; background: rgb(255 255 255 / 72%); font-size: var(--fs-1); white-space: pre-wrap; }
.ops-technical-details { margin-top: 9px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.ops-technical-details > summary { padding: 10px; cursor: pointer; font-size: var(--fs-1); font-weight: 600; }
.ops-technical-details[open] > summary { border-bottom: 1px solid var(--border); }
.ops-technical-details > .form-item,
.ops-technical-details > .field-hint,
.ops-technical-details > .ops-event-list,
.ops-technical-details > .empty { margin: 10px; }
.ops-event-list { display: grid; gap: 0; padding: 0; list-style: none; }
.ops-event-list li { display: grid; grid-template-columns: 14px minmax(0, 1fr); gap: 8px; min-width: 0; padding: 0 0 12px; }
.ops-event-dot { width: 10px; height: 10px; margin-top: 4px; border: 2px solid var(--accent); border-radius: 50%; background: var(--surface); }
.ops-event-list strong { font-size: var(--fs-1); }
.ops-event-list p { margin: 3px 0; color: var(--text-2); font-size: var(--fs-1); }
.ops-event-list small { color: var(--text-3); font-size: var(--fs-1); overflow-wrap: anywhere; }
.ops-review-list { display: grid; gap: 9px; }
.ops-review-card { padding: 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.ops-review-head,
.ops-review-head > div,
.ops-review-card footer { display: flex; align-items: center; gap: 8px; }
.ops-review-head { justify-content: space-between; }
.ops-review-head > div { min-width: 0; }
.ops-review-head strong { min-width: 0; font-size: var(--fs-2); overflow-wrap: anywhere; }
.ops-review-head small { color: var(--text-3); font-size: var(--fs-1); overflow-wrap: anywhere; }
.ops-review-result { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; margin: 10px 0; }
.ops-review-result > div { padding: 8px; border: 1px solid var(--border); border-radius: 6px; background: var(--surface); }
.ops-review-result span,
.ops-review-result strong { display: block; overflow-wrap: anywhere; }
.ops-review-result span { color: var(--text-3); font-size: var(--fs-1); }
.ops-review-result strong { margin-top: 4px; font-size: var(--fs-1); }
.ops-review-card > p { margin: 8px 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.55; }
.ops-review-card footer { justify-content: space-between; flex-wrap: wrap; color: var(--text-3); font-size: var(--fs-1); }
.ops-receipt-form { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; }
.ops-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-bottom: 12px; }
.ops-detail-grid > div { padding: 8px; border: 1px solid var(--border); border-radius: 6px; }
.ops-detail-grid span,
.ops-detail-grid strong { display: block; }
.ops-detail-grid span { color: var(--text-3); font-size: var(--fs-1); }
.ops-detail-grid strong { margin-top: 4px; font-size: var(--fs-1); overflow-wrap: anywhere; }
.modal-ai-config { width: min(780px, 96vw); }
.ops-ai-config-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-bottom: 12px; }
.ops-ai-config-summary > div { display: grid; min-width: 0; gap: 4px; padding: 10px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.ops-ai-config-summary span { color: var(--text-3); font-size: var(--fs-1); }
.ops-ai-config-summary strong { font-size: var(--fs-1); overflow-wrap: anywhere; }
.ops-ai-config-summary small { color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; overflow-wrap: anywhere; word-break: break-word; }
.ops-ai-boundary { margin-bottom: 14px; padding: 10px 11px; border: 1px solid #cbdaf5; border-left: 3px solid #31558e; border-radius: var(--radius); background: #f7faff; color: var(--text-2); font-size: var(--fs-1); line-height: 1.55; }
.ops-ai-config-form select,
.ops-ai-config-form input,
.ops-ai-config-form textarea { max-width: 100%; }
.ops-ai-switch label { display: flex; align-items: center; gap: 7px; width: fit-content; color: var(--text); }
.ops-ai-switch input { width: auto; margin: 0; }
.ops-ai-test-row { display: flex; align-items: center; gap: 10px; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border); }
.ops-ai-test-row span { min-width: 0; color: var(--text-3); font-size: var(--fs-1); line-height: 1.45; overflow-wrap: anywhere; }
.ops-ai-test-row span.ok { color: var(--success); }
.ops-ai-test-row span.bad { color: var(--danger); }
@media (max-width: 1400px) {
  .ops-command-bar { grid-template-columns: 1fr; align-items: stretch; }
  .ops-command-actions { justify-content: flex-start; }
}
@media (max-width: 1200px) {
  .ops-verdict-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ops-integrity-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ops-loop-rail { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ops-loop-stage:nth-child(3)::after,
  .ops-loop-stage:nth-child(6)::after { content: none; }
}
@media (max-width: 800px) {
  .method-pack-head,
  .method-pack-row,
  .method-pack-foot { align-items: stretch; flex-direction: column; }
  .method-pack-row > span { flex-basis: auto; }
  .method-pack-row > div { justify-content: flex-start; }
  .method-pack-foot span:first-child { flex-basis: auto; }
  .ops-zone-head,
  .ops-task { align-items: stretch; flex-direction: column; }
  .ops-ai-config-summary { grid-template-columns: 1fr; }
  .ops-ai-test-row { align-items: stretch; flex-direction: column; }
  .ops-command-fields { grid-template-columns: 1fr; }
  .ops-loop-summary,
  .ops-review-result,
  .ops-receipt-form { grid-template-columns: 1fr; }
  .ops-loop-rail,
  .modal .ops-loop-rail:not(.compact) { grid-template-columns: 1fr; }
  .ops-loop-stage::after { content: none; }
  .ops-command-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
  .ops-command-actions .btn { display: inline-flex; align-items: center; justify-content: center; width: 100%; }
  .ops-zone-head > span { text-align: left; }
  .ops-verdict-grid,
  .ops-integrity-grid,
  .ops-detail-grid { grid-template-columns: 1fr; }
  .ops-assistant-notes { grid-template-columns: 1fr; }
  .ops-evidence-head,
  .ops-receipt > div,
  .ops-review-head { align-items: flex-start; flex-direction: column; }
  .ops-subhead,
  .ops-system-details > summary { align-items: flex-start; flex-direction: column; }
  .ops-subhead span,
  .ops-system-details > summary small { text-align: left; }
  .ops-zone-3 .ops-alert:nth-child(n+6) { display: none; }
  .ops-task-actions { justify-content: flex-start; }
}

/* 五店商品经营与供应链 */
.merch-page,
#merchandise-body,
.merch-table-shell,
.merch-table-shell .table-wrap { min-width: 0; max-width: 100%; }
.page-body.merch-page,
.merch-page { display: grid; grid-auto-rows: max-content; align-content: start; gap: 14px; min-height: 0; overflow: auto; }
.merch-tabs { display: flex; align-items: center; align-self: start; min-height: 44px; gap: 4px; padding: 4px; overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-tabs button,
.merch-tabs a { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; min-height: 34px; padding: 6px 13px; border: 0; border-radius: var(--radius); background: transparent; color: var(--text-2); font: inherit; font-size: var(--fs-1); line-height: 1.2; text-decoration: none; cursor: pointer; }
.merch-tabs button.active,
.merch-tabs a.active { background: var(--accent); color: #fff; font-weight: 650; }
.merch-subtabs { display: flex; align-items: center; gap: 4px; margin-top: 6px; overflow-x: auto; }
.merch-subtabs button { flex: 0 0 auto; min-height: 28px; padding: 4px 10px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); color: var(--text-2); font: inherit; font-size: var(--fs-1); cursor: pointer; }
.merch-subtabs button.active { border-color: var(--accent); color: var(--accent); font-weight: 600; background: var(--sidebar-active); }
.merch-subtabs a { flex: 0 0 auto; min-height: 28px; padding: 4px 10px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); color: var(--text-2); font-size: var(--fs-1); text-decoration: none; display: inline-flex; align-items: center; }
.merch-subtabs a.active { border-color: var(--accent); color: var(--accent); font-weight: 600; background: var(--sidebar-active); }
.import-sop { border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); padding: 8px 12px; }
.import-sop summary { cursor: pointer; font-size: var(--fs-1); font-weight: 600; color: var(--text-2); }
.import-sop-body { display: grid; gap: 6px; padding-top: 8px; font-size: var(--fs-1); color: var(--text-2); line-height: 1.6; }
.import-sop-body p { margin: 0; }
#merchandise-body { display: grid; gap: 12px; overflow: visible; }
.merch-style-detail { display: inline-block; font-weight: 700; }
.merch-style-detail + small { display: block; margin-top: 3px; color: var(--text-3); font-family: var(--font); font-size: var(--fs-1); }
.merch-table-shell { width: 100%; overflow: hidden; }
.merch-table-shell .table-wrap { width: 100%; overflow-x: auto; }
.merch-toolbar { display: grid; grid-template-columns: 150px 170px 150px 150px minmax(220px, 1fr) auto; align-items: end; gap: 9px; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-toolbar label { display: grid; min-width: 0; gap: 5px; color: var(--text-2); font-size: var(--fs-1); }
.merch-toolbar input,
.merch-toolbar select { width: 100%; min-width: 0; height: 34px; }
.merch-toolbar .btn { height: 34px; }
.merch-summary-grid { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); gap: 8px; }
.merch-summary-card { display: grid; min-width: 0; gap: 6px; padding: 11px 12px; border: 1px solid var(--border); border-left: 3px solid var(--border-strong); border-radius: var(--radius); background: var(--surface); }
.merch-summary-card.warn { border-left-color: var(--warning); }
.merch-summary-card.bad { border-left-color: var(--danger); }
.merch-summary-card > span { color: var(--text-3); font-size: var(--fs-1); }
.merch-summary-card > strong { font-size: var(--fs-4); line-height: 1; }
.merch-summary-card > small { min-width: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.4; overflow-wrap: anywhere; }
.merch-data-note { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--border); border-left: 3px solid var(--success); border-radius: var(--radius); background: var(--surface); }
.merch-data-note.bad { border-left-color: var(--danger); background: var(--danger-bg); }
.merch-data-note.merch-image-note { border-left-color: var(--warning); background: var(--warning-bg); }
.merch-data-note strong { flex: 0 0 auto; font-size: var(--fs-1); }
.merch-data-note span { min-width: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; overflow-wrap: anywhere; }
.merch-legend { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--text-3); font-size: var(--fs-1); }
.merch-table { min-width: 1480px; }
.merch-table th:first-child,
.merch-table td:first-child { width: 64px; }
.merch-table td { vertical-align: middle; }
.merch-image-cell { text-align: center; }
.merch-image-cell > small { margin-top: 3px; white-space: normal; }
.merch-image-cell .thumb-placeholder[hidden] { display: none !important; }
.merch-no-image { border-style: dashed; background: var(--bg); }
.merch-table td.num small { display: block; margin-top: 3px; color: var(--text-3); font-size: var(--fs-1); white-space: nowrap; }
.merch-risk,
.merch-plan-missing { display: inline-flex; align-items: center; min-height: 20px; padding: 1px 7px; border: 1px solid var(--border-strong); border-radius: 999px; font-size: var(--fs-1); white-space: nowrap; }
.merch-risk.ok { color: var(--success); border-color: var(--success-border); background: var(--success-bg); }
.merch-risk.warn { color: var(--warning); border-color: var(--warning-border); background: var(--warning-bg); }
.merch-risk.bad { color: var(--danger); border-color: var(--danger-border); background: var(--danger-bg); }
.merch-risk.info { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 35%, var(--border)); background: color-mix(in srgb, var(--accent) 7%, var(--surface)); }
.merch-plan-missing { margin-left: 4px; color: var(--text-3); }
.merch-channel-list { display: flex; flex-wrap: wrap; gap: 4px; min-width: 160px; }
.merch-channel-list span { display: inline-flex; align-items: center; gap: 3px; padding: 2px 5px; border-radius: 4px; background: var(--bg); color: var(--text-2); font-size: var(--fs-1); white-space: nowrap; }
.merch-channel-list b { color: var(--text); font-weight: 600; }
.merch-replenish { font-weight: 700; color: var(--accent); }
.merch-reason { min-width: 180px; max-width: 240px; color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; overflow-wrap: anywhere; }
.merch-table td small { display: block; margin-top: 4px; color: var(--text-3); font-size: var(--fs-1); line-height: 1.35; white-space: nowrap; }
.merch-planning-table { min-width: 1740px; }
.merch-forecast { min-width: 130px; }
.merch-forecast b { font-size: var(--fs-1); }
.merch-tab-panel { min-width: 0; display: grid; gap: 12px; overflow: hidden; }
.merch-section-head { display: flex; align-items: end; justify-content: space-between; gap: 12px; padding: 2px 0; }
.merch-section-head.compact { margin-top: 12px; }
.merch-section-head h2 { margin: 0 0 4px; font-size: var(--fs-2); }
.merch-section-head p { margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.5; }
.merch-quality-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.merch-quality-grid article { display: grid; min-width: 0; gap: 7px; padding: 11px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.merch-quality-grid article > div { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.merch-quality-grid b { min-width: 0; font-size: var(--fs-1); overflow-wrap: anywhere; }
.merch-quality-grid strong { font-size: var(--fs-2); }
.merch-quality-grid small { color: var(--text-3); font-size: var(--fs-1); line-height: 1.4; overflow-wrap: anywhere; }
.merch-priority-list { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; }
.merch-priority-list article { display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: 8px; padding: 11px; border: 1px solid var(--border); border-top: 3px solid var(--accent); border-radius: var(--radius); background: var(--surface); }
.merch-priority-index { display: grid; place-items: center; align-self: start; width: 24px; height: 24px; border-radius: 50%; background: var(--bg); color: var(--accent); font-size: var(--fs-1); font-weight: 750; }
.merch-priority-list article > div { min-width: 0; }
.merch-priority-list article > div > div { display: flex; align-items: center; gap: 6px; min-width: 0; }
.merch-priority-list b { min-width: 0; font-size: var(--fs-1); overflow-wrap: anywhere; }
.merch-priority-list p { margin: 8px 0 5px; font-size: var(--fs-1); line-height: 1.45; }
.merch-priority-list small { color: var(--text-3); font-size: var(--fs-1); line-height: 1.4; overflow-wrap: anywhere; }
.merch-brief-toolbar { grid-template-columns: minmax(330px, .8fr) minmax(360px, 1.2fr) auto; }
.merch-brief-toolbar-note { display: grid; align-content: center; min-width: 0; gap: 3px; padding: 0 14px; border-left: 1px solid var(--border); }
.merch-brief-toolbar-note strong { font-size: var(--fs-1); }
.merch-brief-toolbar-note span { color: var(--text-3); font-size: var(--fs-1); }
.merch-brief-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; padding: 22px 24px; border: 1px solid color-mix(in srgb, var(--accent) 24%, var(--border)); border-left: 4px solid var(--accent); border-radius: var(--radius-lg); background: linear-gradient(120deg, color-mix(in srgb, var(--accent) 7%, var(--surface)), var(--surface) 58%); }
.merch-brief-hero > div:first-child { min-width: 0; max-width: 800px; }
.merch-brief-hero h2 { margin: 7px 0 7px; font-size: var(--fs-5); letter-spacing: -.025em; }
.merch-brief-hero p { margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.65; }
.merch-brief-hero-side { display: grid; flex: 0 0 auto; min-width: 300px; justify-items: end; gap: 5px; padding-left: 20px; border-left: 1px solid var(--border); }
.merch-brief-hero-side > span { font-size: var(--fs-2); font-weight: 700; }
.merch-brief-hero-side > small { color: var(--text-3); font-size: var(--fs-1); }
.merch-brief-hero-side > div { display: flex; gap: 7px; margin-top: 8px; }
.merch-brief-summary { margin-top: 1px; }
.merch-brief-active { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 13px 15px; border: 1px solid color-mix(in srgb, var(--warning) 45%, var(--border)); border-left: 4px solid var(--warning); border-radius: var(--radius); background: color-mix(in srgb, var(--warning) 5%, var(--surface)); }
.merch-brief-active > div { display: grid; min-width: 0; gap: 3px; }
.merch-brief-active span { color: var(--warning); font-size: var(--fs-1); font-weight: 700; }
.merch-brief-active strong { font-size: var(--fs-1); }
.merch-brief-active small { color: var(--text-3); font-size: var(--fs-1); }
.merch-brief-block { display: grid; gap: 9px; min-width: 0; }
.merch-brief-block .merch-section-head.compact { align-items: center; margin-top: 4px; }
.merch-brief-block .merch-section-head > span { color: var(--text-3); font-size: var(--fs-1); }
.merch-brief-readiness { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.merch-brief-readiness-card { display: grid; min-width: 0; gap: 8px; padding: 13px 14px; border: 1px solid var(--border); border-top: 3px solid var(--border-strong); border-radius: var(--radius); background: var(--surface); }
.merch-brief-readiness-card.ok { border-top-color: var(--success); }
.merch-brief-readiness-card.warn { border-top-color: var(--warning); }
.merch-brief-readiness-card.bad { border-top-color: var(--danger); }
.merch-brief-readiness-card > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.merch-brief-readiness-card > div:first-child > span { color: var(--text-2); font-size: var(--fs-1); }
.merch-brief-readiness-card > strong { font-size: var(--fs-4); }
.merch-brief-readiness-card > strong small { color: var(--text-3); font-size: var(--fs-1); font-weight: 500; }
.merch-brief-readiness-card > p { margin: 0; color: var(--text-3); font-size: var(--fs-1); line-height: 1.45; }
.merch-brief-progress { height: 3px; overflow: hidden; border-radius: 999px; background: var(--bg); }
.merch-brief-progress i { display: block; height: 100%; border-radius: inherit; background: var(--accent); }
.merch-brief-readiness-card.ok .merch-brief-progress i { background: var(--success); }
.merch-brief-readiness-card.warn .merch-brief-progress i { background: var(--warning); }
.merch-brief-readiness-card.bad .merch-brief-progress i { background: var(--danger); }
.merch-brief-agenda { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.merch-brief-agenda article { position: relative; display: grid; grid-template-columns: 28px minmax(0, 1fr); min-width: 0; gap: 9px; padding: 13px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.merch-brief-agenda article:not(:last-child)::after { position: absolute; z-index: 2; top: 50%; right: -9px; width: 9px; border-top: 1px solid var(--border-strong); content: ''; }
.merch-brief-agenda article > b { display: grid; place-items: center; align-self: start; width: 28px; height: 28px; border-radius: 50%; background: color-mix(in srgb, var(--accent) 8%, var(--surface)); color: var(--accent); font-size: var(--fs-1); }
.merch-brief-agenda article > div { display: grid; min-width: 0; gap: 5px; }
.merch-brief-agenda span { color: var(--text-2); font-size: var(--fs-1); font-weight: 650; }
.merch-brief-agenda strong { font-size: var(--fs-4); }
.merch-brief-agenda strong small { color: var(--text-3); font-size: var(--fs-1); font-weight: 500; }
.merch-brief-agenda p { margin: 0; color: var(--text-3); font-size: var(--fs-1); line-height: 1.45; }
.merch-brief-agenda .followup > b { background: var(--danger-bg); color: var(--danger); }
.merch-brief-agenda .supply > b { background: color-mix(in srgb, var(--warning) 10%, var(--surface)); color: var(--warning); }
.merch-brief-styles { display: grid; gap: 7px; }
.merch-brief-style { display: grid; grid-template-columns: 28px minmax(220px, .75fr) minmax(280px, 1fr) minmax(290px, .95fr) auto; align-items: center; min-width: 0; gap: 12px; padding: 10px 12px; border: 1px solid var(--border); border-left: 3px solid var(--border-strong); border-radius: var(--radius); background: var(--surface); }
.merch-brief-style.p0 { border-left-color: var(--danger); }
.merch-brief-style.p1 { border-left-color: var(--warning); }
.merch-brief-style.p2 { border-left-color: var(--accent); }
.merch-brief-rank { color: var(--text-3); font-size: var(--fs-1); font-weight: 700; }
.merch-brief-style-product { display: grid; grid-template-columns: 50px minmax(0, 1fr); align-items: center; gap: 9px; min-width: 0; }
.merch-brief-style-product .merch-weekly-image-wrap,
.merch-brief-style-product .merch-weekly-image-placeholder { width: 50px; height: 61px; }
.merch-brief-style-product > div { min-width: 0; }
.merch-brief-style-product h3 { margin: 5px 0 3px; font-size: var(--fs-1); }
.merch-brief-style-product h3 a { color: var(--link); }
.merch-brief-style-product p { margin: 0; overflow: hidden; font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.merch-brief-style-reason { display: grid; min-width: 0; gap: 4px; padding-left: 12px; border-left: 1px solid var(--border); }
.merch-brief-style-reason strong { font-size: var(--fs-1); line-height: 1.45; }
.merch-brief-style-reason p { margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; }
.merch-brief-style-reason small { color: var(--warning); font-size: var(--fs-1); }
.merch-brief-style-metrics { display: grid; grid-template-columns: repeat(4, minmax(60px, 1fr)); min-width: 0; }
.merch-brief-style-metrics > div { display: grid; min-width: 0; gap: 4px; padding: 5px 7px; border-left: 1px solid var(--border); }
.merch-brief-style-metrics span { color: var(--text-3); font-size: var(--fs-1); white-space: nowrap; }
.merch-brief-style-metrics strong { font-size: var(--fs-1); white-space: nowrap; }
.merch-brief-style > .btn { justify-content: center; white-space: nowrap; }
.merch-brief-carryovers { display: grid; gap: 7px; }
.merch-brief-carryovers > article { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(250px, .8fr); align-items: center; gap: 14px; padding: 11px 13px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.merch-brief-carryovers article > div { display: grid; min-width: 0; gap: 6px; }
.merch-brief-carryovers article > div > div { display: flex; gap: 4px; }
.merch-brief-carryovers h3 { margin: 0; font-size: var(--fs-1); line-height: 1.45; }
.merch-brief-carryovers h3 a { color: var(--link); }
.merch-brief-carryovers article > p { display: grid; gap: 3px; margin: 0; padding-left: 13px; border-left: 1px solid var(--border); }
.merch-brief-carryovers p b { font-size: var(--fs-1); }
.merch-brief-carryovers p span { color: var(--text-2); font-size: var(--fs-1); }
.merch-brief-carryovers p small { color: var(--danger); font-size: var(--fs-1); }
.merch-brief-last { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 13px 15px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-brief-last > div { display: grid; gap: 3px; }
.merch-brief-last span { color: var(--text-3); font-size: var(--fs-1); }
.merch-brief-last strong { font-size: var(--fs-1); }
.merch-brief-last small { color: var(--text-2); font-size: var(--fs-1); }
.merch-weekly-toolbar { grid-template-columns: 330px 220px minmax(260px, 1fr) auto; }
.merch-portfolio-toolbar { grid-template-columns: minmax(220px, 1.3fr) 110px 110px 140px auto auto auto; }
.merch-check { display: inline-flex; align-items: center; gap: 6px; height: 34px; color: var(--text-2); font-size: var(--fs-1); white-space: nowrap; }
.merch-problem-strip { display: grid; grid-template-columns: minmax(180px, .6fr) minmax(0, 2.4fr); align-items: center; gap: 16px; padding: 12px 14px; border: 1px solid color-mix(in srgb, var(--accent) 20%, var(--border)); border-radius: var(--radius-lg); background: color-mix(in srgb, var(--accent) 3%, var(--surface)); }
.merch-problem-strip-copy { display: grid; gap: 3px; }
.merch-problem-strip-copy strong { font-size: var(--fs-1); }
.merch-problem-strip-copy span { color: var(--text-3); font-size: var(--fs-1); line-height: 1.45; }
.merch-problem-chips { display: grid; grid-template-columns: repeat(8, minmax(82px, 1fr)); gap: 6px; }
.merch-problem-chip { display: flex; min-width: 0; height: 36px; align-items: center; justify-content: space-between; gap: 7px; padding: 0 9px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); color: var(--text-2); font: inherit; font-size: var(--fs-1); cursor: pointer; transition: border-color .12s var(--ease), box-shadow .12s var(--ease), background .12s var(--ease); }
.merch-problem-chip span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.merch-problem-chip b { flex: 0 0 auto; font-size: var(--fs-2); font-variant-numeric: tabular-nums; }
.merch-problem-chip.bad b { color: var(--danger); }
.merch-problem-chip.warn b { color: var(--warning); }
.merch-problem-chip.ok b { color: var(--success); }
.merch-problem-chip:hover:not(:disabled) { border-color: var(--accent); }
.merch-problem-chip:focus-visible { outline: 2px solid color-mix(in srgb, var(--accent) 55%, transparent); outline-offset: 2px; }
.merch-problem-chip.is-active { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 7%, var(--surface)); box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 16%, transparent); color: var(--text); font-weight: 650; }
.merch-problem-chip:disabled { opacity: .42; cursor: not-allowed; }
.merch-monitor-shell { max-height: calc(100vh - 220px); overflow: auto; max-width: 100%; }
.merch-monitor-shell .table-wrap { overflow-x: auto; overflow-y: auto; max-width: 100%; }
.merch-daily-table { min-width: 1080px; }
.merch-monitor-table { min-width: 1480px; }
.merch-monitor-table thead th { position: sticky; top: 0; z-index: 5; }
.merch-monitor-table thead > tr:first-child > th { height: 36px; }
.merch-monitor-table .stick1 { position: sticky; left: 0; z-index: 6; background: var(--surface); min-width: 230px; }
.merch-monitor-table thead .stick1 { z-index: 8; }
.merch-monitor-table .merch-monitor-total-row th { top: 36px; z-index: 5; border-top: 1px solid var(--border); border-bottom-color: var(--border-strong); background: color-mix(in srgb, var(--accent) 5%, var(--surface)); color: var(--text-2); font-weight: 650; }
.merch-monitor-table .merch-monitor-total-row .stick1 { z-index: 8; background: color-mix(in srgb, var(--accent) 5%, var(--surface)); color: var(--text); }
.merch-monitor-table th.sortable { cursor: pointer; user-select: none; }
.merch-monitor-table .arr { color: var(--accent); font-size: var(--fs-1); }
.merch-monitor-table .cat-main { font-weight: 600; }
.merch-monitor-table .cat-sub { color: var(--text-3); font-size: var(--fs-1); }
.merch-monitor-table .st { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border: 0; border-radius: 999px; background: var(--bg); color: var(--text-2); font: inherit; font-size: var(--fs-1); font-weight: 650; cursor: pointer; }
.merch-monitor-table .st.bad { background: var(--danger-bg); color: var(--danger); }
.merch-monitor-table .st.warn { background: var(--warning-bg); color: var(--warning); }
.merch-monitor-table .st.ok { background: var(--success-bg, color-mix(in srgb, var(--success) 12%, var(--surface))); color: var(--success); }
.merch-monitor-table .st.info { background: color-mix(in srgb, var(--accent) 10%, var(--surface)); color: var(--accent); }
/* 5 个子元素（销量范围 / 搜索 / 更多筛选 / 导出 / 刷新）一行放下；2026-09-12 加范围切换后
   曾按 4 列排版导致刷新按钮被挤到第二行独占整行（用户反馈“按钮太大”） */
.merch-daily-toolbar { grid-template-columns: auto minmax(200px, 1fr) auto auto auto; align-items: center; padding: 8px 12px; gap: 8px; }
.merch-daily-toolbar .btn { height: 30px; min-height: 30px; padding: 4px 12px; font-size: var(--fs-1); }
/* v1 主题的 body[data-product-architecture="v1"] .btn{min-height:34px} 优先级更高，需要同级覆盖 */
body[data-product-architecture="v1"] .merch-daily-toolbar .btn { height: 30px; min-height: 30px; padding: 4px 12px; font-size: var(--fs-1); }
.merch-daily-toolbar input[type=text], .merch-daily-toolbar select { height: 30px; font-size: var(--fs-1); }
.merch-daily-toolbar .merch-daily-more > summary { height: 30px; font-size: var(--fs-1); }
.merch-daily-toolbar .merch-scope-switch button { min-height: 26px; padding: 0 12px; font-size: var(--fs-1); }
/* 销售范围切换在本工具栏内按内容宽度收紧（默认三分栅格是为周报页独占整行设计的） */
.merch-daily-toolbar .merch-toolbar-group { width: auto; }
.merch-daily-toolbar .merch-scope-switch { grid-template-columns: repeat(3, auto); width: max-content; height: 30px; padding: 2px; }
.merch-daily-toolbar .merch-search { grid-column: auto; }
.merch-daily-more,
.merch-header-more { position: relative; }
.merch-daily-more > summary,
.merch-header-more > summary { display: inline-flex; height: 34px; align-items: center; padding: 0 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); color: var(--text-2); font-size: var(--fs-1); cursor: pointer; list-style: none; white-space: nowrap; }
.merch-daily-more > summary::-webkit-details-marker,
.merch-header-more > summary::-webkit-details-marker { display: none; }
.merch-daily-more[open] > summary,
.merch-header-more[open] > summary { border-color: var(--accent); color: var(--accent); }
.merch-daily-more > div,
.merch-header-more > div { position: absolute; z-index: 30; top: calc(100% + 6px); right: 0; display: grid; min-width: 520px; grid-template-columns: repeat(4, minmax(110px, 1fr)); gap: 10px; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); box-shadow: 0 12px 32px rgba(15, 23, 42, .12); }
/* 折叠时必须隐藏筛选面板：上面的 display:grid 会覆盖浏览器对 closed <details> 的默认隐藏，
   导致面板露出在工具栏外（2026-09-12 用户截图定位的空白小框） */
.merch-daily-more:not([open]) > div,
.merch-header-more:not([open]) > div { display: none; }
.merch-header-more > div { min-width: 190px; grid-template-columns: 1fr; }
.merch-header-more .btn { justify-content: center; }
.page-header-right .btn.is-disabled { pointer-events: none; opacity: .45; }
.merch-daily-freshness { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 15px 17px; border: 1px solid var(--success-border); border-left: 4px solid var(--success); border-radius: var(--radius-lg); background: var(--success-bg); }
.merch-daily-freshness.is-blocked { border-color: var(--danger-border); border-left-color: var(--danger); background: var(--danger-bg); }
.merch-daily-freshness > div { display: grid; min-width: 0; gap: 3px; }
.merch-daily-freshness > div > span { color: var(--success); font-size: var(--fs-1); font-weight: 700; }
.merch-daily-freshness.is-blocked > div > span { color: var(--danger); }
.merch-daily-freshness strong { font-size: var(--fs-3); }
.merch-daily-freshness p { margin: 0; color: var(--text-2); font-size: var(--fs-1); }
.merch-daily-freshness > small { max-width: 520px; color: var(--text-2); font-size: var(--fs-1); line-height: 1.55; text-align: right; }
.merch-daily-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.merch-daily-summary article { display: grid; min-width: 0; gap: 6px; padding: 13px 14px; border: 1px solid var(--border); border-left: 3px solid var(--accent); border-radius: var(--radius); background: var(--surface); }
.merch-daily-summary article.bad { border-left-color: var(--danger); }
.merch-daily-summary article.ok { border-left-color: var(--success); }
.merch-daily-summary article.blocked { border-left-color: var(--text-3); background: var(--surface-2); }
.merch-daily-summary span { color: var(--text-2); font-size: var(--fs-1); }
.merch-daily-summary strong { font-size: var(--fs-5); font-variant-numeric: tabular-nums; }
.merch-daily-summary small { color: var(--text-3); font-size: var(--fs-1); }
.merch-daily-filter { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.merch-daily-filter > strong { flex: 0 0 auto; font-size: var(--fs-1); }
.merch-daily-filter > div { display: flex; flex-wrap: wrap; gap: 5px; }
.merch-daily-filter button { display: inline-flex; min-height: 32px; align-items: center; gap: 8px; padding: 0 11px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); color: var(--text-2); font: inherit; font-size: var(--fs-1); cursor: pointer; }
.merch-daily-filter button b { font-size: var(--fs-1); font-variant-numeric: tabular-nums; }
.merch-daily-filter button.is-active { border-color: var(--accent); background: var(--sidebar-active); color: var(--accent); font-weight: 650; }
.merch-daily-warnings { border: 1px solid var(--warning-border); border-radius: var(--radius); background: var(--warning-bg); }
.merch-daily-warnings > summary { padding: 9px 12px; color: var(--warning); font-size: var(--fs-1); font-weight: 650; cursor: pointer; }
.merch-daily-warnings > div { display: grid; gap: 5px; padding: 0 12px 11px; }
.merch-daily-warnings p { margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.5; }
/* ===== 销售库存重构（2026-09-12）：对齐新版 UI 设计语言（integrated-operating-home / ioh 体系） =====
   14px 基准、藏青大数字、白卡 + 1px 细边 + 10-14px 圆角、12px 灰注、信号卡左侧色条。
   作用域 .merch-salesinv 只覆盖 portfolio tab，不影响其他页签旧样式。 */
.merch-salesinv {
  --si-ink: #111b2e; --si-muted: #667085; --si-line: #dfe4eb; --si-soft: #f5f7fa;
  --si-navy: #0C2340; --si-blue: #6CACE4; --si-red: #b42318; --si-amber: #a15c00; --si-green: #147a55;
  display: grid; gap: 12px; color: var(--si-ink); font-size: var(--fs-2); line-height: 1.5;
}
.merch-salesinv .no-data { color: #98a2b3; }

/* 数据截止条 */
/* 数据截止条（紧凑单行）；v1 的 body[data-...] 规则优先级更高，需同级覆盖圆角与内边距 */
body[data-product-architecture="v1"] .merch-salesinv .merch-daily-freshness { padding: 10px 14px; border-radius: 10px; }
.merch-salesinv .merch-daily-freshness { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 14px; border: 1px solid var(--si-line); border-left: 3px solid var(--si-green); border-radius: 10px; background: #fff; }
.merch-salesinv .merch-freshness-stale { color: var(--si-red); font-weight: 650; }
.merch-freshness-stale { color: var(--warning); font-weight: 650; }
.merch-salesinv .merch-daily-freshness.is-blocked { border-left-color: var(--si-red); }
.merch-salesinv .merch-daily-freshness > div { display: grid; min-width: 0; gap: 2px; }
.merch-salesinv .merch-daily-freshness > div > span { color: var(--si-green); font-size: var(--fs-1); font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
.merch-salesinv .merch-daily-freshness.is-blocked > div > span { color: var(--si-red); }
.merch-salesinv .merch-daily-freshness strong { font-size: var(--fs-2); color: var(--si-ink); }
.merch-salesinv .merch-daily-freshness p { margin: 1px 0 0; color: var(--si-muted); font-size: var(--fs-1); }
.merch-salesinv .merch-daily-freshness small { color: var(--si-muted); font-size: var(--fs-1); max-width: 380px; text-align: right; }

/* KPI：两条紧凑横带（核心销量 5 格 + 供给订货 6 格，各一行放完；2026-09-12 密度重排） */
.merch-kpi-groups { display: grid; gap: 10px; }
.merch-kpi-groups.is-missing { padding: 12px 16px; border: 1px dashed var(--si-line); border-radius: 10px; background: var(--si-soft); }
.merch-kpi-band { display: grid; grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); border: 1px solid var(--si-line); border-radius: 10px; background: #fff; overflow: hidden; }
.merch-kpi-card { display: grid; min-width: 0; gap: 2px; padding: 10px 14px; border-right: 1px solid var(--si-line); background: #fff; }
.merch-kpi-card:last-child { border-right: 0; }
.merch-kpi-card.bad > strong { color: var(--si-red); }
.merch-kpi-card.warn > strong { color: var(--si-amber); }
.merch-kpi-card.ok > strong { color: var(--si-green); }
.merch-kpi-card > span { color: var(--si-muted); font-size: var(--fs-1); }
.merch-kpi-card > strong { color: var(--si-navy); font-size: var(--fs-4); font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.02em; line-height: 1.2; }
.merch-kpi-card > small { color: var(--si-muted); font-size: var(--fs-1); }
.merch-kpi-card > small a { color: var(--si-navy); font-size: var(--fs-1); font-weight: 700; text-decoration: none; }
.merch-kpi-card > small a:hover { text-decoration: underline; }
.merch-kpi-note { color: var(--si-muted); }
.merch-kpi-late { color: var(--si-red); font-weight: 700; }
/* 口径脚注：写明剔除了多少非货品交易，可点开明细（口径透明化） */
.merch-kpi-footnote { margin: -2px 0 0; padding: 0 2px; color: #98a2b3; font-size: var(--fs-1); }
.merch-kpi-footnote b { color: #667085; font-variant-numeric: tabular-nums; }
/* 可下钻的 KPI 卡：整卡可点，hover/键盘焦点给出「拆分」入口提示 */
.merch-kpi-card.is-drillable { cursor: pointer; }
.merch-kpi-card.is-drillable:hover { background: var(--si-soft); }
.merch-kpi-card.is-drillable:focus-visible { outline: 2px solid var(--si-navy); outline-offset: -2px; }
.merch-kpi-card > span { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.merch-kpi-go { color: var(--si-blue, #6CACE4); font-size: var(--fs-1); font-style: normal; font-weight: 700; opacity: 0; white-space: nowrap; transition: opacity .12s ease; }
.merch-kpi-card.is-drillable:hover .merch-kpi-go, .merch-kpi-card.is-drillable:focus-visible .merch-kpi-go { opacity: 1; }

/* KPI 下钻弹窗（挂在 body，不受 .merch-salesinv 作用域约束） */
.merch-drill-modal { display: grid; gap: 14px; color: #111b2e; font-size: var(--fs-2); }
.merch-drill-head { display: grid; gap: 12px; }
.merch-drill-total { display: flex; align-items: baseline; gap: 8px; }
.merch-drill-total span { color: #667085; font-size: var(--fs-1); }
.merch-drill-total b { color: #0C2340; font-size: var(--fs-5); font-weight: 700; font-variant-numeric: tabular-nums; }
.merch-drill-total small { color: #667085; font-size: var(--fs-1); }
/* 团队构成：环形图 + 明细行（占比为构成口径，合计 100%） */
.merch-drill-split { display: flex; align-items: center; gap: 18px; }
.merch-drill-donut { width: 148px; height: 148px; flex: none; }
.merch-drill-teamlist { display: grid; gap: 8px; min-width: 200px; flex: 1; }
.merch-drill-teamrow { display: grid; grid-template-columns: 12px auto 1fr auto; align-items: baseline; gap: 8px; }
.merch-drill-teamrow > span { color: #667085; font-size: var(--fs-2); }
.merch-drill-teamrow > b { color: #0C2340; font-size: var(--fs-4); font-weight: 700; font-variant-numeric: tabular-nums; text-align: right; }
.merch-drill-teamrow > small { min-width: 52px; color: #0C2340; font-size: var(--fs-2); font-weight: 650; font-variant-numeric: tabular-nums; text-align: right; }
.merch-drill-split-note { margin: 2px 0 0; color: #98a2b3; font-size: var(--fs-1); }
/* 团队色点（弹窗明细行与页面占比区共用） */
.merch-dot { display: inline-block; width: 10px; height: 10px; border-radius: 3px; background: #0C2340; }
.merch-dot.is-hz, .merch-drill-teamrow.is-hz .merch-dot { background: #6CACE4; }
.merch-dot.is-sh, .merch-drill-teamrow.is-sh .merch-dot { background: #d9a441; }
/* 页面占比区：团队 100% 堆叠条（两段合计恒为 100%） */
.merch-team-stack { display: flex; height: 26px; border-radius: 6px; overflow: hidden; border: 1px solid #dfe4eb; background: #f5f7fa; }
.merch-team-stack > span { display: flex; align-items: center; justify-content: center; color: #fff; font-size: var(--fs-1); font-weight: 700; white-space: nowrap; overflow: hidden; }
.merch-team-stack > .is-hz { background: #6CACE4; }
.merch-team-stack > .is-sh { background: #d9a441; }
/* 大类构成（服饰/配饰）：同款堆叠条配色 */
.merch-team-stack > .is-apparel { background: #0C2340; }
.merch-team-stack > .is-accessory { background: #c9a227; }
.merch-dot.is-apparel, .merch-drill-teamrow.is-apparel .merch-dot { background: #0C2340; }
.merch-dot.is-accessory, .merch-drill-teamrow.is-accessory .merch-dot { background: #c9a227; }
/* 品牌/合作方行：自有=海军蓝，合作方=中性石板灰 */
/* 品牌 × 渠道矩阵：列多时可横向滚动；主销格（行内最大）加底色 */
.merch-drill-matrix { display: grid; gap: 8px; }
.merch-drill-matrix .merch-drill-kindhead > small { max-width: 60%; }
.merch-drill-matrix-scroll { overflow-x: auto; }
.merch-brand-matrix th, .merch-brand-matrix td { padding: 6px 5px; font-size: var(--fs-1); }
.merch-brand-matrix thead th { white-space: normal; line-height: 1.2; }
.merch-brand-matrix td:first-child, .merch-brand-matrix th:first-child { padding-left: 0; }
.merch-brand-matrix td:first-child { white-space: nowrap; }
.merch-brand-matrix td small { margin-left: 4px; color: #98a2b3; font-size: var(--fs-1); }
.merch-brand-matrix td.is-top { background: #f4f8ff; font-weight: 700; color: #0C2340; }
.merch-dot.is-own, .merch-drill-teamrow.is-own .merch-dot { background: #0C2340; }
.merch-dot.is-partner, .merch-drill-teamrow.is-partner .merch-dot { background: #8A94A6; }
.merch-team-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 8px; color: #667085; font-size: var(--fs-2); }
.merch-team-legend > span { display: inline-flex; align-items: center; gap: 6px; }
.merch-team-legend b { color: #0C2340; font-variant-numeric: tabular-nums; }
/* 下钻弹窗·大类构成块 */
.merch-drill-kindbox { display: grid; gap: 8px; padding: 12px 14px; border: 1px solid #dfe4eb; border-radius: 8px; background: #fafbfc; }
.merch-drill-kindhead { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.merch-drill-kindhead > span { color: #0C2340; font-size: var(--fs-1); font-weight: 750; letter-spacing: .08em; white-space: nowrap; }
.merch-drill-kindhead > small { color: #98a2b3; font-size: var(--fs-1); text-align: right; }
.merch-drill-kindrows { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 20px; }
.merch-drill-kindnote { margin: 6px 0 0; color: #98a2b3; font-size: var(--fs-1); }
.merch-drill-table { width: 100%; border-collapse: collapse; font-size: var(--fs-2); font-variant-numeric: tabular-nums; }
.merch-drill-table th { padding: 7px 8px; border-bottom: 1px solid #dfe4eb; color: #667085; font-size: var(--fs-1); font-weight: 650; text-align: left; white-space: nowrap; }
.merch-drill-table td { padding: 7px 8px; border-bottom: 1px solid #edf0f4; }
.merch-drill-table .num { text-align: right; }
.merch-drill-table tfoot td { border-top: 2px solid #0C2340; border-bottom: 0; font-weight: 700; color: #0C2340; }
.merch-drill-modal .merch-drill-note { margin: 0; color: #667085; font-size: var(--fs-1); line-height: 1.6; }
/* 渠道拆分图：横向条形，按大类双色拆分（服饰=海军蓝 / 配饰=金）；无拆分数据时退回团队着色（杭=浅蓝 / 沪=琥珀） */
.merch-drill-chartbox { display: grid; gap: 8px; }
.merch-drill-legend { display: flex; flex-wrap: wrap; gap: 14px; color: #667085; font-size: var(--fs-1); }
.merch-drill-legend .is-hz { color: #6CACE4; font-weight: 650; }
.merch-drill-legend .is-sh { color: #b5822a; font-weight: 650; }
.merch-drill-legend .is-apparel { color: #0C2340; font-weight: 650; }
/* 渠道图配色键：一组 = 一个团队（深 服饰 / 浅 配饰），两维都在条上 */
.merch-kind-key { display: inline-flex; align-items: center; }
.merch-kind-key i { display: inline-block; width: 11px; height: 10px; }
.merch-kind-key i:first-of-type { border-radius: 3px 0 0 3px; }
.merch-kind-key i:last-of-type { border-radius: 0 3px 3px 0; }
.merch-kind-key b { margin-left: 5px; color: #667085; font-weight: 600; }
.merch-kind-key .k-hz-ap { background: #1F6FB2; }
.merch-kind-key .k-hz-ac { background: #A6D0EE; }
.merch-kind-key .k-sh-ap { background: #A8781F; }
.merch-kind-key .k-sh-ac { background: #EFCF83; }
.merch-drill-legend .is-accessory { color: #b5822a; font-weight: 650; }
.merch-drill-chart { width: 100%; }
.merch-delta { font-size: var(--fs-1); font-variant-numeric: tabular-nums; }
.merch-delta.up { color: var(--si-green); }
.merch-delta.down { color: var(--si-red); }
.merch-delta.flat { color: var(--si-muted); }

/* 面板（趋势/占比/热销/队列共用）：密度收紧（2026-09-12） */
.merch-salesinv .merch-overview-panel { display: grid; gap: 10px; padding: 14px 16px; border: 1px solid var(--si-line); border-radius: 10px; background: #fff; }
.merch-salesinv .merch-overview-panel .merch-section-head { align-items: center; padding: 0; }
.merch-salesinv .merch-section-head h2 { margin: 0; font-size: var(--fs-3); color: var(--si-ink); }
.merch-salesinv .merch-section-head p { margin: 2px 0 0; color: var(--si-muted); font-size: var(--fs-1); line-height: 1.5; }
.merch-panel-meta { color: var(--si-muted); font-size: var(--fs-1); white-space: nowrap; }
/* 趋势整宽 + 占比三栏在下一行：渠道条形图移入 KPI 弹窗后，占比不再需要窄栏并排 */
.merch-overview-split { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; align-items: start; }
.merch-chart { width: 100%; height: 236px; }

/* 占比 */
.merch-window-toggle { display: inline-flex; gap: 2px; }
.merch-window-toggle button { padding: 5px 11px; border: 1px solid var(--si-line); background: #fff; color: var(--si-muted); font: inherit; font-size: var(--fs-1); cursor: pointer; }
.merch-window-toggle button:first-child { border-radius: 7px 0 0 7px; }
.merch-window-toggle button:last-child { border-radius: 0 7px 7px 0; }
.merch-window-toggle button.on { border-color: var(--si-navy); background: var(--si-navy); color: #fff; font-weight: 650; }
.merch-share-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 20px; }
@media (max-width: 900px) { .merch-share-grid { grid-template-columns: minmax(0, 1fr); } }
.merch-share-col { min-width: 0; }
.merch-share-col h4 { margin: 0 0 8px; color: var(--si-navy); font-size: var(--fs-1); font-weight: 750; letter-spacing: .08em; text-transform: uppercase; }
.merch-share-row { display: grid; grid-template-columns: minmax(64px, 96px) minmax(0, 1fr) 58px; align-items: center; gap: 8px; padding: 5px 0; }
.merch-share-row > small { grid-column: 1 / -1; color: var(--si-muted); font-size: var(--fs-1); }
.merch-share-label { overflow: hidden; color: var(--si-ink); font-size: var(--fs-2); text-overflow: ellipsis; white-space: nowrap; }
.merch-share-track { height: 8px; border-radius: 4px; background: var(--si-soft); overflow: hidden; }
.merch-share-fill { display: block; height: 100%; border-radius: 4px; background: var(--si-navy); }
.merch-share-row.is-hz .merch-share-fill { background: var(--si-blue); }
/* 品牌/合作方：自有=海军蓝（默认），合作方用中性石板色退后，避免与团队/大类的蓝金撞色 */
.merch-share-row.is-own .merch-share-fill { background: var(--si-navy); }
.merch-share-row.is-partner .merch-share-fill { background: #8A94A6; }
.merch-share-row.is-sh .merch-share-fill { background: #d9a441; }
.merch-share-value { color: var(--si-navy); font-size: var(--fs-2); font-weight: 700; text-align: right; font-variant-numeric: tabular-nums; }
.merch-share-note { margin: 8px 0 0; color: var(--si-muted); font-size: var(--fs-1); line-height: 1.55; }

/* 热销榜 */
.merch-hot-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 8px; }
.merch-hot-card { display: grid; grid-template-columns: 20px 40px minmax(0, 1fr) 104px; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid var(--si-line); border-radius: 8px; background: #fff; }
.merch-hot-card:hover { border-color: #aab4c1; }
.merch-hot-rank { color: var(--si-navy); font-size: var(--fs-2); font-weight: 750; text-align: center; }
.merch-hot-card img { width: 40px; height: 40px; object-fit: cover; border: 1px solid var(--si-line); border-radius: 6px; background: var(--si-soft); }
.merch-hot-noimg { display: flex; width: 40px; height: 40px; align-items: center; justify-content: center; border-radius: 6px; background: var(--si-soft); color: var(--si-muted); font-size: var(--fs-1); }
.merch-hot-main { display: grid; min-width: 0; gap: 1px; }
.merch-hot-main > div:first-child { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.merch-hot-main > div:first-child a { color: var(--si-navy); font-size: var(--fs-1); font-weight: 700; text-decoration: none; white-space: nowrap; }
.merch-hot-main strong { overflow: hidden; color: var(--si-ink); font-size: var(--fs-2); font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.merch-hot-main > small { color: var(--si-muted); font-size: var(--fs-1); }
.merch-hot-nums { display: flex; flex-wrap: wrap; gap: 9px; font-size: var(--fs-1); color: var(--si-muted); }
.merch-hot-nums b { color: var(--si-navy); font-size: var(--fs-2); font-weight: 700; font-variant-numeric: tabular-nums; }
.merch-hot-nums i { margin-left: 3px; color: #98a2b3; font-size: var(--fs-1); font-style: normal; white-space: nowrap; }
.merch-hot-meta { display: flex; flex-wrap: wrap; gap: 8px; font-size: var(--fs-1); color: var(--si-muted); }
.merch-hot-spark { display: grid; justify-items: end; gap: 1px; }
.merch-hot-spark small { color: #98a2b3; font-size: var(--fs-1); }
.merch-spark { width: 104px; height: 24px; }
.merch-spark polyline { fill: none; stroke: var(--si-navy); stroke-width: 1.8; vector-effect: non-scaling-stroke; }
.merch-momentum { font-size: var(--fs-1); font-variant-numeric: tabular-nums; white-space: nowrap; }
.merch-momentum.up { color: var(--si-green); font-weight: 700; }
.merch-momentum.down { color: var(--si-red); font-weight: 700; }
.merch-momentum.flat { color: var(--si-muted); }

/* 行动队列：信号卡（左侧色条）；平衡对按钮与文字动作用 ioh 轻量风格 */
.merch-queue-panel.is-clear { border-color: #b7ddd0; background: #f4faf7; }
.merch-queue-groups { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 10px; }
.merch-queue-group { min-width: 0; border: 1px solid var(--si-line); border-left: 3px solid var(--si-blue); border-radius: 8px; background: #fff; }
.merch-queue-group.bad { border-left-color: var(--si-red); }
.merch-queue-group.warn { border-left-color: var(--si-amber); }
.merch-queue-group > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 14px; border-bottom: 1px solid var(--si-line); }
.merch-queue-group > header h4 { display: flex; align-items: baseline; gap: 8px; margin: 0; color: var(--si-ink); font-size: var(--fs-2); font-weight: 700; }
.merch-queue-group > header h4 b { padding: 1px 7px; border-radius: 9px; background: var(--si-soft); color: var(--si-navy); font-size: var(--fs-1); font-variant-numeric: tabular-nums; }
.merch-queue-group.bad > header h4 b { background: #fff0ee; color: var(--si-red); }
.merch-queue-group.warn > header h4 b { background: #fff6e8; color: var(--si-amber); }
.merch-queue-group ul { margin: 0; padding: 2px 0; list-style: none; }
/* 两行式条目：第一行款号+款名（款名不再被长详情挤断），第二行详情+参考补货 */
.merch-queue-group li { display: grid; gap: 1px; padding: 7px 14px; border-bottom: 1px solid #edf0f4; font-size: var(--fs-2); }
.merch-queue-group li:last-child { border-bottom: 0; }
.merch-queue-group li:hover { background: var(--si-soft); }
.merch-queue-line1 { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.merch-queue-line2 { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; min-width: 0; }
.merch-queue-style { flex: none; cursor: pointer; }
.merch-queue-style a { color: var(--si-navy); font-weight: 700; font-size: var(--fs-1); text-decoration: none; }
.merch-queue-style a:hover { text-decoration: underline; }
.merch-queue-name { overflow: hidden; color: var(--si-ink); text-overflow: ellipsis; white-space: nowrap; }
.merch-queue-detail { overflow: hidden; color: var(--si-muted); font-size: var(--fs-1); font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
.merch-queue-suggest { flex: none; color: var(--si-navy); font-size: var(--fs-1); font-weight: 700; }
.merch-queue-group > footer { padding: 7px 14px; border-top: 1px solid var(--si-line); text-align: center; }
/* 平衡对（缺货/吃紧 ↔ 滞销）：承接原 KPI 卡，成对显示且可点击过滤 */
.merch-queue-pair { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.merch-queue-pair button { display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 0 11px; border: 1px solid var(--si-line); border-radius: 8px; background: #fff; color: var(--si-muted); font: inherit; font-size: var(--fs-1); cursor: pointer; }
.merch-queue-pair button em { font-style: normal; }
.merch-queue-pair button b { color: var(--si-navy); font-size: var(--fs-2); font-variant-numeric: tabular-nums; }
.merch-queue-pair button:hover { border-color: #aab4c1; color: var(--si-navy); }
.merch-queue-pair button.is-active { border-color: var(--si-navy); background: var(--si-navy); color: #fff; }
.merch-queue-pair button.is-active b { color: #fff; }
/* 文字动作（ioh-text-action 风格）：代替大按钮，省空间 */
.merch-text-action { border: 0; background: transparent; padding: 2px 0; color: var(--si-navy); font: inherit; font-size: var(--fs-1); font-weight: 700; cursor: pointer; white-space: nowrap; }
.merch-text-action:hover { text-decoration: underline; }

/* 筛选 chips（今日判断 + 标签） */
.merch-salesinv .merch-daily-filter { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 13px 16px; border: 1px solid var(--si-line); border-radius: 10px; background: #fff; }
.merch-salesinv .merch-daily-filter > strong { flex: 0 0 auto; color: var(--si-navy); font-size: var(--fs-2); }
.merch-salesinv .merch-daily-filter > div { display: flex; flex-wrap: wrap; gap: 6px; }
.merch-salesinv .merch-daily-filter button { display: inline-flex; min-height: 32px; align-items: center; gap: 7px; padding: 0 12px; border: 1px solid var(--si-line); border-radius: 8px; background: #fff; color: var(--si-muted); font: inherit; font-size: var(--fs-1); cursor: pointer; }
.merch-salesinv .merch-daily-filter button b { color: var(--si-navy); font-size: var(--fs-2); font-variant-numeric: tabular-nums; }
.merch-salesinv .merch-daily-filter button:hover { border-color: #aab4c1; color: var(--si-navy); }
.merch-salesinv .merch-daily-filter button.is-active { border-color: var(--si-navy); background: var(--si-navy); color: #fff; font-weight: 650; }
.merch-salesinv .merch-daily-filter button.is-active b { color: #fff; }

/* 明细表（新语言下的字号与合计行；表格骨架沿用 table.grid + product-rebuild v1） */
.merch-salesinv .merch-daily-metric small, .merch-salesinv .merch-daily-metric .no-data { font-size: var(--fs-1); }
.merch-salesinv .merch-daily-metric strong { font-size: var(--fs-2); }
.merch-salesinv .merch-daily-product strong { font-size: var(--fs-2); }
.merch-salesinv .merch-daily-product small { font-size: var(--fs-1); }
.merch-monitor-table .merch-sum-row td { position: sticky; top: 0; z-index: 3; border-bottom: 2px solid var(--si-navy, #0C2340); background: #f0f4f9; color: #0C2340; font-variant-numeric: tabular-nums; }
.merch-monitor-table .merch-sum-row .stick1 { z-index: 4; background: #f0f4f9; }
.merch-sum-row b { font-size: var(--fs-2); }
.merch-sum-row small { display: block; color: var(--si-muted, #667085); font-size: var(--fs-1); }
.merch-row-flash td { animation: merch-flash 1.6s ease-out; }
@keyframes merch-flash { 0%, 40% { background: #fff6e8; } 100% { background: transparent; } }

.merch-rate { display: inline-flex; align-items: center; gap: 6px; }
.merch-rate-track { position: relative; width: 48px; height: 6px; border-radius: 3px; background: var(--si-soft, #f5f7fa); overflow: hidden; }
.merch-rate-track > span { display: block; height: 100%; border-radius: 3px; background: #0C2340; }
.merch-rate-track.is-high > span { background: #b42318; }
.merch-rate-track.is-mid > span { background: #a15c00; }
.merch-rate-track.is-low > span { background: #98a2b3; }
.merch-rate-track.is-over > span { background: #d0d5dd; }
.merch-rate b { color: #0C2340; font-size: var(--fs-2); font-variant-numeric: tabular-nums; }
.merch-rate-over { color: #98a2b3; font-weight: 650; }
.merch-platform-cell { display: grid; gap: 1px; font-variant-numeric: tabular-nums; }
.merch-platform-cell b { font-size: var(--fs-2); }
.merch-platform-cell small { color: #98a2b3; font-size: var(--fs-1); }
.merch-tag-list { display: inline-flex; flex-wrap: wrap; gap: 4px; justify-content: center; }
.merch-salesinv .merch-tag-list .st { padding: 2px 7px; border: 0; border-radius: 5px; background: var(--si-soft); color: var(--si-muted); font: inherit; font-size: var(--fs-1); font-weight: 700; cursor: help; }
.merch-salesinv .merch-tag-list .st.bad { background: #fff0ee; color: var(--si-red); }
.merch-salesinv .merch-tag-list .st.warn { background: #fff6e8; color: var(--si-amber); }
.merch-salesinv .merch-tag-list .st.ok { background: #ecf7f2; color: var(--si-green); }
.merch-salesinv .merch-tag-list .st.info { background: #eaf3fd; color: var(--si-navy); }


/* 警告/门禁折叠块 */
.merch-salesinv .merch-daily-warnings { border: 1px solid #f4d9a9; border-radius: 10px; background: #fff9ed; }
.merch-salesinv .merch-daily-warnings > summary { padding: 11px 14px; color: #7a4b00; font-size: var(--fs-1); font-weight: 700; cursor: pointer; }
.merch-salesinv .merch-daily-warnings p { font-size: var(--fs-1); }

/* ===== 色尺码矩阵弹窗（挂在 body 下，不在 .merch-salesinv 作用域内） ===== */
.merch-matrix-modal { display: grid; gap: 14px; color: #111b2e; font-size: var(--fs-2); }
.merch-matrix-modal h4 { display: flex; align-items: baseline; gap: 10px; margin: 6px 0 0; color: #111b2e; font-size: var(--fs-3); }
.merch-matrix-modal h4 span { color: #667085; font-size: var(--fs-1); font-weight: 400; }
.merch-matrix-title { margin: 0; color: #667085; font-size: var(--fs-2); }
.merch-matrix-wrap { overflow: auto; }
.merch-matrix { border-collapse: separate; border-spacing: 3px; font-size: var(--fs-2); }
.merch-matrix th { padding: 6px 9px; color: #667085; font-size: var(--fs-1); font-weight: 650; text-align: center; white-space: nowrap; }
.merch-matrix th.merch-matrix-color { max-width: 130px; overflow: hidden; color: #111b2e; text-align: left; text-overflow: ellipsis; }
.merch-matrix td { min-width: 52px; padding: 6px 8px; border-radius: 7px; background: #f5f7fa; text-align: center; font-variant-numeric: tabular-nums; }
.merch-matrix td b { font-size: var(--fs-2); }
.merch-matrix td small { display: block; color: #667085; font-size: var(--fs-1); }
.merch-matrix td.w-severe { background: #ffe4e1; color: #b42318; }
.merch-matrix td.w-short { background: #fff3dd; color: #a15c00; }
.merch-matrix td.w-ok { background: #e3f4ec; color: #147a55; }
.merch-matrix td.w-over { background: #eaf3fd; color: #0C2340; }
.merch-matrix td.w-na { background: #f5f7fa; color: #475467; }
.merch-matrix td.w-zero { background: #fff; color: #98a2b3; box-shadow: inset 0 0 0 1px #dfe4eb; }
.merch-matrix td.w-none { background: transparent; color: #d0d5dd; }
.merch-matrix .merch-matrix-total { border: 1px solid #dfe4eb; background: #fff; }
.merch-matrix .merch-matrix-foot th, .merch-matrix .merch-matrix-foot td { border-top: 1px solid #dfe4eb; background: #fff; }
.merch-matrix-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 8px 0 0; color: #667085; font-size: var(--fs-1); }
.merch-matrix-legend span { width: 12px; height: 12px; border-radius: 4px; background: #f5f7fa; }
.merch-matrix-legend span.w-severe { background: #ffe4e1; }
.merch-matrix-legend span.w-short { background: #fff3dd; }
.merch-matrix-legend span.w-ok { background: #e3f4ec; }
.merch-matrix-legend span.w-over { background: #eaf3fd; }
.merch-matrix-legend span.w-na { background: #f5f7fa; }
.merch-matrix-legend span.w-zero { background: #fff; box-shadow: inset 0 0 0 1px #dfe4eb; }
.merch-matrix-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; }
.merch-matrix-kpis > div { display: grid; gap: 3px; padding: 12px 14px; border: 1px solid #dfe4eb; border-radius: 10px; background: #fff; }
.merch-matrix-kpis span { color: #667085; font-size: var(--fs-1); }
.merch-matrix-kpis b { color: #0C2340; font-size: var(--fs-4); font-weight: 700; font-variant-numeric: tabular-nums; }
.merch-matrix-kpis small { color: #98a2b3; font-size: var(--fs-1); }
.merch-matrix-kpis .merch-matrix-note { grid-column: 1 / -1; margin: 0; color: #667085; font-size: var(--fs-1); }
.merch-matrix-gap { margin: 0; padding-left: 18px; color: #475467; font-size: var(--fs-2); line-height: 1.7; }
.merch-matrix-gap b { color: #b42318; }

.merch-monitor-table.merch-daily-table { min-width: 1880px; }
/* 明细表容器与其余区块统一圆角（v1 下 .data-table-shell 默认直角） */
.merch-monitor-shell { border-radius: 10px; }
.merch-daily-table .stick1 { min-width: 280px; }
.merch-daily-table td { vertical-align: middle; }
.merch-daily-product { display: grid; grid-template-columns: 42px minmax(0, 1fr); align-items: center; gap: 9px; min-width: 0; }
.merch-daily-product .thumb,
.merch-daily-product .thumb-placeholder { width: 42px; height: 52px; }
.merch-daily-product > div { display: grid; min-width: 0; gap: 3px; }
.merch-daily-product > div > strong { overflow: hidden; font-size: var(--fs-1); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.merch-daily-product small { color: var(--text-3); font-size: var(--fs-1); }
.merch-daily-detail-link { width: max-content; color: var(--accent); font-size: var(--fs-1); font-weight: 700; text-decoration: none; }
.merch-daily-detail-link:hover { text-decoration: underline; }
.merch-daily-metric > strong { display: block; font-size: var(--fs-1); font-variant-numeric: tabular-nums; white-space: nowrap; }
.merch-daily-metric > small { display: block; margin-top: 4px; color: var(--text-3); font-size: var(--fs-1); white-space: nowrap; }
.merch-row-channels { min-width: 145px; }
.merch-row-channels > summary { color: var(--link); font-size: var(--fs-1); font-weight: 650; cursor: pointer; }
.merch-row-channels > div { display: grid; gap: 4px; margin-top: 7px; }
.merch-row-channels > div > div { display: flex; justify-content: space-between; gap: 8px; color: var(--text-2); font-size: var(--fs-1); }
.merch-daily-decision { display: grid; max-width: 210px; gap: 3px; padding: 7px 9px; border: 1px solid var(--border); border-left: 3px solid var(--success); border-radius: var(--radius); background: var(--surface); color: var(--text); font: inherit; text-align: left; cursor: pointer; }
.merch-daily-decision.bad { border-left-color: var(--danger); background: var(--danger-bg); }
.merch-daily-decision.warn { border-left-color: var(--warning); background: var(--warning-bg); }
.merch-daily-decision.info { border-left-color: var(--accent); }
.merch-daily-decision strong { font-size: var(--fs-1); }
.merch-daily-decision small { display: -webkit-box; overflow: hidden; color: var(--text-2); font-size: var(--fs-1); line-height: 1.4; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.merch-reasoning-modal { display: grid; gap: 14px; }
.merch-reasoning-status { display: grid; grid-template-columns: auto max-content; align-items: center; gap: 5px 12px; padding: 12px 14px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-reasoning-status > span { color: var(--text-3); font-size: var(--fs-1); }
.merch-reasoning-status > strong { justify-self: end; color: var(--text-2); font-size: var(--fs-1); }
.merch-reasoning-status > strong.bad { color: var(--danger); }
.merch-reasoning-status > strong.warn { color: var(--warning); }
.merch-reasoning-status > strong.ok { color: var(--success); }
.merch-reasoning-status > strong.info { color: var(--accent); }
.merch-reasoning-status p { grid-column: 1 / -1; margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.55; }
.merch-reasoning-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.merch-reasoning-metrics > div { display: grid; gap: 4px; padding: 10px 12px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.merch-reasoning-metrics > div:nth-child(3n) { border-right: 0; }
.merch-reasoning-metrics > div:nth-last-child(-n+3) { border-bottom: 0; }
.merch-reasoning-metrics span { color: var(--text-3); font-size: var(--fs-1); }
.merch-reasoning-metrics strong { font-size: var(--fs-2); font-variant-numeric: tabular-nums; }
.merch-reasoning-chain { padding: 12px 14px; border-left: 3px solid var(--accent); background: color-mix(in srgb, var(--accent) 4%, var(--surface)); }
.merch-reasoning-chain h4 { margin: 0 0 8px; font-size: var(--fs-1); }
.merch-reasoning-chain ol { display: grid; gap: 7px; margin: 0; padding-left: 18px; color: var(--text-2); font-size: var(--fs-1); line-height: 1.55; }
.merch-reasoning-classify { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); }
.merch-reasoning-classify > div:first-child { display: grid; gap: 3px; }
.merch-reasoning-classify span,
.merch-reasoning-classify small { color: var(--text-3); font-size: var(--fs-1); }
.merch-reasoning-classify strong { font-size: var(--fs-1); }
.merch-reasoning-note { color: var(--text-3); font-size: var(--fs-1); line-height: 1.5; }
.merch-monitor-error { display: grid; min-height: 112px; place-items: center; align-content: center; gap: 7px; padding: 20px; border: 1px solid var(--danger-border); border-radius: var(--radius-lg); background: var(--danger-bg); color: var(--danger); text-align: center; }
.merch-monitor-error p { margin: 0; }
.merch-rate.r-o { color: var(--danger); font-weight: 700; }
.merch-rate.r-h { color: var(--warning); font-weight: 700; }
.merch-rate.r-m { color: var(--accent); font-weight: 650; }
.merch-rate.r-l { color: var(--text-3); }
.merch-confirm-cell .merch-tier-actions { display: flex; flex-wrap: wrap; gap: 4px; }
.merch-selection-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 8px 12px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-selection-bar #merch-selected-count { color: var(--text-2); font-size: var(--fs-1); font-weight: 650; font-variant-numeric: tabular-nums; }
.merch-selection-bar small { color: var(--text-3); font-size: var(--fs-1); }
.merch-inventory-gate { display: grid; gap: 10px; padding: 12px 14px; border: 1px solid var(--border); border-left: 4px solid var(--success); border-radius: var(--radius-lg); background: var(--surface); }
.merch-inventory-gate.is-blocked { border-color: var(--danger-border); border-left-color: var(--danger); background: var(--danger-bg); }
.merch-inventory-gate > div:first-child,
.merch-inventory-gate-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.merch-inventory-gate > div:first-child > div,
.merch-inventory-gate-head > div { display: grid; gap: 3px; }
.merch-inventory-gate strong { font-size: var(--fs-1); }
.merch-inventory-gate span,
.merch-inventory-gate small { color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; }
.merch-inventory-schema-warning { padding: 8px 10px; border-radius: var(--radius); background: color-mix(in srgb, var(--danger) 10%, var(--surface)); color: var(--danger); font-size: var(--fs-1); font-weight: 650; }
.merch-inventory-negative-list { display: grid; gap: 6px; }
.merch-inventory-negative-list article { display: grid; grid-template-columns: minmax(180px, 1fr) 70px minmax(150px, .7fr) auto; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--danger-border); border-radius: var(--radius); background: var(--surface); }
.merch-inventory-negative-list article > div { display: grid; gap: 2px; }
.merch-inventory-negative-list article > strong { color: var(--danger); font-variant-numeric: tabular-nums; }
.merch-inventory-more { display: block; }
.rhythm-sellable { display: flex; align-items: center; gap: 8px; min-width: 248px; }
.rhythm-sellable-score { display: grid; min-width: 34px; text-align: center; }
.rhythm-sellable-score strong { font-size: var(--fs-1); font-variant-numeric: tabular-nums; }
.rhythm-sellable-score span { color: var(--text-3); font-size: var(--fs-1); }
.rhythm-sellable-lights { display: flex; flex-wrap: wrap; gap: 4px 6px; }
.rhythm-sellable-lights > span { display: inline-flex; align-items: center; gap: 3px; color: var(--text-3); font-size: var(--fs-1); white-space: nowrap; }
.rhythm-sellable-lights > span > i { width: 7px; height: 7px; border-radius: 999px; background: var(--danger); box-shadow: 0 0 0 2px color-mix(in srgb, var(--danger) 14%, transparent); }
.rhythm-sellable-lights > span.is-on { color: var(--text-2); }
.rhythm-sellable-lights > span.is-on > i { background: var(--success); box-shadow: 0 0 0 2px color-mix(in srgb, var(--success) 14%, transparent); }
.rhythm-sellable-section .rhythm-sellable { align-items: flex-start; min-width: 0; padding: 12px; border: 1px solid var(--border); border-left: 3px solid var(--danger); border-radius: var(--radius); background: var(--surface); }
.rhythm-sellable-section .rhythm-sellable.is-ready { border-left-color: var(--success); }
.rhythm-sellable-section .rhythm-sellable-lights { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); flex: 1; gap: 8px; }
.rhythm-sellable-section .rhythm-sellable-lights > span { align-items: flex-start; white-space: normal; font-size: var(--fs-1); }
.rhythm-sellable-section .rhythm-sellable-lights small { display: block; color: var(--text-3); font-size: var(--fs-1); }
.merch-select-col { width: 30px; min-width: 30px; text-align: center; }
.merch-select-col input { width: 14px; height: 14px; cursor: pointer; accent-color: var(--accent); }
.merch-reorder-table { min-width: 1560px; }
.merch-reorder-table .merch-reorder-plan b { color: var(--danger); font-size: var(--fs-2); }
.merch-reorder-table .merch-reorder-plan small,
.merch-reorder-table .merch-reason small { display: block; color: var(--text-3); font-size: var(--fs-1); }
.merch-reorder-table .merch-size-split { min-width: 150px; font-size: var(--fs-1); font-variant-numeric: tabular-nums; }
.merch-reorder-table .merch-reason { min-width: 260px; max-width: 360px; font-size: var(--fs-1); line-height: 1.5; color: var(--text-2); white-space: normal; }
.merch-toolbar-group { display: grid; min-width: 0; gap: 5px; color: var(--text-2); font-size: var(--fs-1); }
.merch-scope-switch { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); height: 34px; padding: 3px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-scope-switch button { min-width: 0; border: 0; border-radius: calc(var(--radius) - 2px); background: transparent; color: var(--text-2); font: inherit; font-size: var(--fs-1); cursor: pointer; }
.merch-scope-switch button.active { background: var(--surface); color: var(--accent); font-weight: 700; box-shadow: 0 1px 4px rgba(20, 43, 82, .09); }
.merch-weekly-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; padding: 20px 22px; border: 1px solid color-mix(in srgb, var(--accent) 22%, var(--border)); border-left: 4px solid var(--accent); border-radius: var(--radius-lg); background: color-mix(in srgb, var(--accent) 4%, var(--surface)); }
.merch-weekly-hero > div:first-child { min-width: 0; max-width: 760px; }
.merch-weekly-kicker { color: var(--accent); font-size: var(--fs-1); font-weight: 750; letter-spacing: .12em; }
.merch-weekly-hero h2 { margin: 7px 0 6px; font-size: var(--fs-5); letter-spacing: -.02em; }
.merch-weekly-hero p { margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.6; }
.merch-weekly-cutoff { display: grid; flex: 0 0 auto; min-width: 240px; gap: 5px; padding-left: 18px; border-left: 1px solid var(--border); }
.merch-weekly-cutoff span { color: var(--text-3); font-size: var(--fs-1); }
.merch-weekly-cutoff strong { font-size: var(--fs-4); }
.merch-weekly-cutoff small { color: var(--text-2); font-size: var(--fs-1); }
.merch-weekly-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.merch-weekly-method { border-left-color: var(--accent); }
.merch-scope-note { border-left-color: var(--accent); }
.merch-weekly-head { padding-top: 6px; }
.merch-weekly-head > span { flex: 0 0 auto; color: var(--text-3); font-size: var(--fs-1); }
.merch-weekly-bulkbar { display: flex; align-items: center; gap: 12px; min-height: 42px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.merch-weekly-bulkbar label { display: inline-flex; align-items: center; gap: 7px; color: var(--text-2); font-size: var(--fs-1); cursor: pointer; }
.merch-weekly-bulkbar input,
.merch-weekly-select input { width: 14px; height: 14px; margin: 0; accent-color: var(--accent); }
.merch-weekly-bulkbar > span { margin-left: auto; color: var(--text-2); font-size: var(--fs-1); }
.merch-weekly-bulkbar .btn { flex: 0 0 auto; }
.merch-weekly-list { display: grid; gap: 9px; }
.merch-weekly-item { position: relative; display: grid; grid-template-columns: minmax(245px, 1.05fr) minmax(390px, 1.35fr) minmax(300px, 1.25fr) minmax(190px, .75fr); gap: 16px; align-items: center; min-width: 0; padding: 38px 16px 14px 18px; border: 1px solid var(--border); border-left: 4px solid var(--border-strong); border-radius: var(--radius-lg); background: var(--surface); }
.merch-weekly-select { position: absolute; z-index: 2; top: 9px; left: 14px; display: inline-flex; align-items: center; gap: 6px; padding: 2px 4px; border-radius: 5px; background: var(--surface); color: var(--text-3); font-size: var(--fs-1); cursor: pointer; }
.merch-weekly-item.p0 { border-left-color: var(--danger); }
.merch-weekly-item.p1 { border-left-color: var(--warning); }
.merch-weekly-item.p2 { border-left-color: var(--accent); }
.merch-weekly-product { display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 11px; min-width: 0; }
.merch-weekly-image-wrap,
.merch-weekly-image-placeholder { position: relative; display: grid; place-items: center; width: 76px; height: 92px; overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-weekly-image-wrap img { width: 100%; height: 100%; object-fit: cover; }
.merch-weekly-image-placeholder { border-style: dashed; color: var(--text-3); font-size: var(--fs-1); line-height: 1.45; text-align: center; }
.merch-image-review { position: absolute; right: 3px; bottom: 3px; padding: 2px 4px; border-radius: 3px; background: rgba(20, 43, 82, .86); color: #fff; font-size: var(--fs-1); line-height: 1; }
.merch-weekly-identity { min-width: 0; }
.merch-weekly-identity > div { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 5px; }
.merch-weekly-identity h3 { margin: 0 0 4px; font-size: var(--fs-2); }
.merch-weekly-identity h3 a { color: var(--link); }
.merch-weekly-identity p { display: -webkit-box; margin: 0 0 5px; overflow: hidden; color: var(--text); font-size: var(--fs-1); line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.merch-weekly-identity small { display: block; overflow: hidden; color: var(--text-3); font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.merch-weekly-facts { display: grid; grid-template-columns: repeat(5, minmax(66px, 1fr)); gap: 6px; min-width: 0; }
.merch-weekly-facts > div { display: grid; min-width: 0; gap: 5px; padding: 8px 7px; border-left: 1px solid var(--border); }
.merch-weekly-facts span { color: var(--text-3); font-size: var(--fs-1); white-space: nowrap; }
.merch-weekly-flags { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.merch-weekly-facts > .merch-weekly-flags { border-left: 0; padding: 2px 7px; }
.merch-daily-recent { color: var(--text-3); font-size: var(--fs-1); }
.merch-weekly-facts > .merch-daily-recent { border-left: 0; padding: 2px 7px; }
.merch-brief-style .merch-weekly-flags { margin-top: 6px; }
.merch-daily-wrap { overflow-x: auto; margin-top: 10px; }
.merch-daily-strip { min-width: 760px; }
.merch-daily-strip th, .merch-daily-strip td { white-space: nowrap; font-size: var(--fs-1); padding: 4px 6px; }
.merch-daily-note { display: block; margin-top: 6px; color: var(--text-3); font-size: var(--fs-1); }
.merch-weekreport-table { min-width: 980px; }
.merch-weekreport-total td { background: color-mix(in srgb, var(--accent) 6%, transparent); font-weight: 600; }
.merch-tier-tabs { display: flex; gap: 6px; margin: 12px 0 10px; flex-wrap: wrap; }
.merch-tier-tabs button { padding: 6px 14px; border: 1px solid var(--border); background: var(--surface); border-radius: var(--radius); cursor: pointer; font-size: var(--fs-1); }
.merch-tier-tabs button.active { border-color: var(--accent); color: var(--accent); font-weight: 600; }
.merch-portfolio-table { min-width: 1120px; }
.merch-portfolio-style { display: flex; gap: 8px; align-items: center; min-width: 230px; }
.merch-portfolio-style small { display: block; color: var(--text-3); font-size: var(--fs-1); }
.merch-tier-actions { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 3px; }
.merch-tier-confirm { padding: 2px 8px; font-size: var(--fs-1); border: 1px solid var(--border); background: var(--surface); border-radius: var(--radius); cursor: pointer; }
.merch-tier-confirm.active { border-color: var(--accent); color: var(--accent); font-weight: 600; }
.merch-tier-confirmed-by { display: block; color: var(--text-3); font-size: var(--fs-1); }
.merch-weekly-facts strong { min-width: 0; color: var(--text); font-size: var(--fs-1); line-height: 1.25; white-space: nowrap; }
.merch-weekly-decision { display: grid; min-width: 0; gap: 6px; }
.merch-weekly-badges { display: flex; flex-wrap: wrap; gap: 4px; }
.merch-weekly-decision h4 { margin: 0; font-size: var(--fs-1); line-height: 1.45; }
.merch-weekly-decision p { margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.5; }
.merch-weekly-decision > small { color: var(--warning); font-size: var(--fs-1); line-height: 1.4; }
.merch-weekly-followup { display: grid; min-width: 0; gap: 10px; padding-left: 14px; border-left: 1px solid var(--border); }
.merch-weekly-followup > div { display: grid; min-width: 0; gap: 4px; }
.merch-weekly-followup b { font-size: var(--fs-1); }
.merch-weekly-followup span { color: var(--text-2); font-size: var(--fs-1); line-height: 1.4; }
.merch-weekly-followup small { color: var(--text-3); font-size: var(--fs-1); }
.merch-weekly-followup .btn { justify-self: start; font-size: var(--fs-1); }
.merch-weekly-more { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 13px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); color: var(--text-2); font-size: var(--fs-1); }
.merch-weekly-more .btn { flex: 0 0 auto; }
.merch-bulk-preview { display: grid; gap: 8px; max-height: 220px; margin: 12px 0; padding: 10px 12px; overflow: auto; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-bulk-preview > strong { font-size: var(--fs-1); }
.merch-bulk-preview ul { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; }
.merch-bulk-preview li { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 8px; color: var(--text-2); font-size: var(--fs-1); line-height: 1.4; }
.merch-bulk-preview li b { color: var(--text); }
.merch-meeting-toolbar-note { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 58px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-meeting-toolbar-note > div { display: grid; gap: 3px; }
.merch-meeting-toolbar-note strong { font-size: var(--fs-1); }
.merch-meeting-toolbar-note span { color: var(--text-2); font-size: var(--fs-1); }
.merch-meeting-hero { border-left-color: var(--accent); }
.merch-meeting-complete-hero { border-left-color: var(--success); background: color-mix(in srgb, var(--success) 4%, var(--surface)); }
.merch-meeting-progress { display: grid; flex: 0 0 auto; min-width: 250px; gap: 4px; padding-left: 18px; border-left: 1px solid var(--border); }
.merch-meeting-progress > span { color: var(--text-3); font-size: var(--fs-1); }
.merch-meeting-progress > strong { font-size: var(--fs-4); }
.merch-meeting-progress > small { margin-bottom: 4px; color: var(--text-2); font-size: var(--fs-1); }
.merch-meeting-progress .btn { justify-self: start; }
.merch-meeting-hero-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 8px; }
.merch-meeting-layout { display: grid; grid-template-columns: 210px minmax(0, 1fr); gap: 10px; align-items: start; min-width: 0; }
.merch-meeting-queue { position: sticky; top: 10px; display: grid; max-height: calc(100vh - 110px); overflow: auto; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-meeting-queue > div { display: flex; justify-content: space-between; gap: 8px; padding: 11px 12px; border-bottom: 1px solid var(--border); }
.merch-meeting-queue > div strong { font-size: var(--fs-1); }
.merch-meeting-queue > div span { color: var(--text-3); font-size: var(--fs-1); }
.merch-meeting-queue button { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 2px 7px; align-items: center; min-width: 0; padding: 9px 10px; border: 0; border-bottom: 1px solid var(--border); background: transparent; color: var(--text); font: inherit; text-align: left; cursor: pointer; }
.merch-meeting-queue button:last-child { border-bottom: 0; }
.merch-meeting-queue button > span { grid-row: 1 / 3; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--bg); color: var(--text-3); font-size: var(--fs-1); }
.merch-meeting-queue button b { min-width: 0; overflow: hidden; font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.merch-meeting-queue button small { color: var(--text-3); font-size: var(--fs-1); }
.merch-meeting-queue button.active { background: color-mix(in srgb, var(--accent) 7%, var(--surface)); box-shadow: inset 3px 0 var(--accent); }
.merch-meeting-queue button.decided > span { background: color-mix(in srgb, var(--success) 14%, var(--surface)); color: var(--success); }
.merch-meeting-queue button.skipped > span { background: color-mix(in srgb, var(--warning) 14%, var(--surface)); color: var(--warning); }
.merch-meeting-focus { display: grid; min-width: 0; gap: 10px; }
.merch-meeting-product { display: grid; grid-template-columns: minmax(300px, .9fr) minmax(0, 1.1fr); gap: 20px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-meeting-product > div:first-child { display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 12px; min-width: 0; }
.merch-meeting-product h2 { margin: 6px 0 4px; font-size: var(--fs-4); }
.merch-meeting-product h2 a { color: var(--link); }
.merch-meeting-product p { margin: 0 0 5px; font-size: var(--fs-1); line-height: 1.45; }
.merch-meeting-product small { color: var(--text-3); font-size: var(--fs-1); }
.merch-meeting-reason { display: grid; align-content: center; gap: 5px; padding-left: 18px; border-left: 1px solid var(--border); }
.merch-meeting-reason span { color: var(--text-3); font-size: var(--fs-1); }
.merch-meeting-reason strong { font-size: var(--fs-1); line-height: 1.5; }
.merch-meeting-reason p { color: var(--text-2); font-size: var(--fs-1); line-height: 1.5; }
.merch-meeting-evidence { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-meeting-evidence > div { display: grid; min-width: 0; gap: 6px; padding: 12px; border-right: 1px solid var(--border); }
.merch-meeting-evidence > div:last-child { border-right: 0; }
.merch-meeting-evidence span { color: var(--text-3); font-size: var(--fs-1); }
.merch-meeting-evidence strong { font-size: var(--fs-1); white-space: nowrap; }
.merch-meeting-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-meeting-form .full { grid-column: 1 / -1; }
.merch-meeting-form-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 8px; padding-top: 12px; border-top: 1px solid var(--border); }
.merch-meeting-decided { display: grid; gap: 8px; padding: 17px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-meeting-decided > div { display: flex; align-items: center; gap: 8px; }
.merch-meeting-decided > div span:last-child { color: var(--text-3); font-size: var(--fs-1); }
.merch-meeting-decided h2 { margin: 0; font-size: var(--fs-3); }
.merch-meeting-decided p { margin: 0; color: var(--text-2); font-size: var(--fs-1); }
.merch-meeting-decided .btn { justify-self: start; }
.merch-meeting-empty { display: grid; justify-items: start; gap: 8px; padding: 34px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-meeting-empty h2 { margin: 0; font-size: var(--fs-4); }
.merch-meeting-empty p { margin: 0 0 8px; color: var(--text-2); font-size: var(--fs-1); }
.merch-meeting-minutes-list { display: grid; gap: 8px; }
.merch-meeting-minutes-list article { display: grid; grid-template-columns: minmax(170px, .5fr) minmax(280px, 1.2fr) minmax(260px, .9fr) auto; gap: 12px; align-items: center; padding: 13px 14px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.merch-meeting-minutes-list article > div { display: flex; align-items: center; gap: 6px; }
.merch-meeting-minutes-list h3 { margin: 0; font-size: var(--fs-1); line-height: 1.45; }
.merch-meeting-minutes-list p { margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.4; }
.merch-meeting-minutes-list a { color: var(--link); font-size: var(--fs-1); white-space: nowrap; }
.merch-report-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; padding: 21px 23px; border: 1px solid color-mix(in srgb, var(--accent) 28%, var(--border)); border-left: 4px solid var(--accent); border-radius: var(--radius-lg); background: linear-gradient(125deg, color-mix(in srgb, var(--accent) 8%, var(--surface)), var(--surface) 62%); }
.merch-report-hero > div:first-child { min-width: 0; max-width: 760px; }
.merch-report-hero h2 { margin: 7px 0 6px; font-size: var(--fs-5); letter-spacing: -.02em; }
.merch-report-hero p { margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.55; }
.merch-report-boundary { border-left-color: var(--accent); }
.merch-report-block { display: grid; min-width: 0; gap: 9px; }
.merch-report-block .merch-section-head.compact { align-items: center; margin-top: 5px; }
.merch-report-block .merch-section-head > span { flex: 0 0 auto; color: var(--text-3); font-size: var(--fs-1); }
.merch-report-task-cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.merch-report-task-cards article { display: grid; min-width: 0; gap: 6px; padding: 12px 13px; border: 1px solid var(--border); border-top: 3px solid var(--border-strong); border-radius: var(--radius); background: var(--surface); }
.merch-report-task-cards article.bad { border-top-color: var(--danger); }
.merch-report-task-cards article.warn { border-top-color: var(--warning); }
.merch-report-task-cards article.ok { border-top-color: var(--success); }
.merch-report-task-cards span { color: var(--text-3); font-size: var(--fs-1); }
.merch-report-task-cards strong { font-size: var(--fs-4); }
.merch-report-task-cards small { color: var(--text-2); font-size: var(--fs-1); line-height: 1.4; }
.merch-report-task-prefix { justify-self: end; color: var(--text-3); font-size: var(--fs-1); }
.merch-report-previous-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-report-previous-head > div { display: grid; gap: 3px; }
.merch-report-previous-head span { color: var(--text-3); font-size: var(--fs-1); }
.merch-report-previous-head strong { font-size: var(--fs-1); }
.merch-report-decisions { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 8px; }
.merch-report-decisions article { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.merch-report-decisions span { color: var(--text-2); font-size: var(--fs-1); }
.merch-report-decisions strong { font-size: var(--fs-4); }
.merch-report-owners { display: grid; gap: 7px; }
.merch-report-owners > article { display: grid; grid-template-columns: minmax(180px, 1.3fr) repeat(3, minmax(70px, .55fr)) minmax(120px, .75fr); align-items: center; gap: 10px; padding: 10px 13px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.merch-report-owners article > div { display: grid; min-width: 0; gap: 3px; }
.merch-report-owners span { color: var(--text-3); font-size: var(--fs-1); }
.merch-report-owners strong { font-size: var(--fs-1); overflow-wrap: anywhere; }
.merch-report-items { display: grid; gap: 7px; }
.merch-report-items > article { display: grid; grid-template-columns: minmax(220px, .8fr) minmax(300px, 1.25fr) minmax(215px, .75fr) auto; align-items: center; min-width: 0; gap: 14px; padding: 11px 13px; border: 1px solid var(--border); border-left: 3px solid var(--accent); border-radius: var(--radius); background: var(--surface); }
.merch-report-items > article.blocked,
.merch-report-items > article.overdue { border-left-color: var(--danger); }
.merch-report-items > article.review_due,
.merch-report-items > article.due_this_week,
.merch-report-items > article.skipped { border-left-color: var(--warning); }
.merch-report-items > article.done { border-left-color: var(--success); }
.merch-report-product { display: grid; grid-template-columns: 50px minmax(0, 1fr); align-items: center; gap: 9px; min-width: 0; }
.merch-report-product .merch-weekly-image-wrap,
.merch-report-product .merch-weekly-image-placeholder { width: 50px; height: 61px; }
.merch-report-product > div { min-width: 0; }
.merch-report-product h3 { margin: 5px 0 3px; font-size: var(--fs-1); }
.merch-report-product h3 a { color: var(--link); }
.merch-report-product p { margin: 0; overflow: hidden; font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.merch-report-conclusion { display: grid; min-width: 0; gap: 5px; padding-left: 13px; border-left: 1px solid var(--border); }
.merch-report-conclusion strong { font-size: var(--fs-1); line-height: 1.5; overflow-wrap: anywhere; }
.merch-report-conclusion span { color: var(--text-2); font-size: var(--fs-1); }
.merch-report-conclusion small { color: var(--warning); font-size: var(--fs-1); line-height: 1.4; }
.merch-report-accountability { display: grid; min-width: 0; gap: 5px; padding-left: 13px; border-left: 1px solid var(--border); }
.merch-report-accountability > div { display: flex; flex-wrap: wrap; gap: 4px; }
.merch-report-accountability > strong { font-size: var(--fs-1); }
.merch-report-accountability > span { color: var(--text-2); font-size: var(--fs-1); line-height: 1.4; }
.merch-report-items > article > .btn { justify-content: center; white-space: nowrap; }
.merch-report-gaps { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 8px; }
.merch-report-gaps article { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.merch-report-gaps span { color: var(--text-2); font-size: var(--fs-1); }
.merch-report-gaps strong { font-size: var(--fs-3); }
.merch-report-gaps strong small { color: var(--text-3); font-size: var(--fs-1); font-weight: 500; }
.merch-history-hero { border-left-color: var(--accent); background: color-mix(in srgb, var(--accent) 3%, var(--surface)); }
.merch-history-toolbar { grid-template-columns: minmax(330px, 1.25fr) minmax(260px, 1fr) auto; }
.merch-history-toolbar > .btn { width: auto; min-width: 96px; }
.merch-history-method { align-items: flex-start; }
.merch-history-list { display: grid; gap: 9px; }
.merch-history-list > article { display: flex; align-items: center; justify-content: space-between; gap: 22px; min-width: 0; padding: 15px 16px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-history-list-main { display: grid; min-width: 0; gap: 4px; }
.merch-history-list-main > span { color: var(--text-3); font-size: var(--fs-1); }
.merch-history-list-main h3 { margin: 0; font-size: var(--fs-2); }
.merch-history-list-main p { margin: 0; color: var(--text-2); font-size: var(--fs-1); }
.merch-history-list-result { display: flex; flex: 0 0 auto; align-items: center; gap: 18px; }
.merch-history-list-result > div { display: grid; justify-items: end; gap: 2px; }
.merch-history-list-result span { color: var(--text-3); font-size: var(--fs-1); }
.merch-history-list-result strong { font-size: var(--fs-4); }
.merch-history-detail-list { display: grid; gap: 12px; }
.merch-history-item { display: grid; gap: 9px; padding: 16px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); }
.merch-history-item-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.merch-history-item-head > div { display: flex; align-items: center; gap: 7px; }
.merch-history-item-head b { font-size: var(--fs-2); }
.merch-history-item-head a { color: var(--link); font-size: var(--fs-1); white-space: nowrap; }
.merch-history-item > h3 { margin: 0; font-size: var(--fs-1); line-height: 1.5; }
.merch-history-item > p { margin: 0; color: var(--text-2); font-size: var(--fs-1); }
.merch-history-first { display: grid; gap: 4px; padding: 12px; border-radius: var(--radius); background: var(--bg); }
.merch-history-first strong { font-size: var(--fs-1); }
.merch-history-first span { color: var(--text-2); font-size: var(--fs-1); line-height: 1.5; }
.merch-history-comparison { display: grid; gap: 10px; margin-top: 3px; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-history-comparison-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.merch-history-comparison-head > div { display: grid; gap: 3px; }
.merch-history-comparison-head span { color: var(--text-3); font-size: var(--fs-1); }
.merch-history-comparison-head strong { font-size: var(--fs-1); }
.merch-history-date-line { display: flex; flex-wrap: wrap; gap: 6px 18px; color: var(--text-3); font-size: var(--fs-1); }
.merch-history-metrics { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.merch-history-metrics article { display: grid; min-width: 0; gap: 5px; padding: 10px; border-right: 1px solid var(--border); }
.merch-history-metrics article:last-child { border-right: 0; }
.merch-history-metrics article > span:first-child { color: var(--text-3); font-size: var(--fs-1); }
.merch-history-metrics strong { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; font-size: var(--fs-1); }
.merch-history-metrics strong i,
.merch-history-decision strong i { color: var(--text-3); font-style: normal; }
.merch-history-delta { justify-self: start; padding: 2px 5px; border-radius: 999px; background: color-mix(in srgb, var(--accent) 7%, var(--surface)); color: var(--text-2); font-size: var(--fs-1); font-weight: 650; }
.merch-history-delta.missing { background: var(--surface); color: var(--text-3); }
.merch-history-delta.flat { background: color-mix(in srgb, var(--text-3) 8%, var(--surface)); }
.merch-history-decision { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 8px 12px; }
.merch-history-decision > span { color: var(--text-3); font-size: var(--fs-1); }
.merch-history-decision strong { display: flex; align-items: center; gap: 7px; font-size: var(--fs-1); }
.merch-history-decision small { color: var(--text-3); font-size: var(--fs-1); }
.merch-review-hero { border-left-color: var(--warning); background: color-mix(in srgb, var(--warning) 4%, var(--surface)); }
.merch-review-list { display: grid; gap: 9px; }
.merch-review-item { display: grid; grid-template-columns: minmax(245px, .95fr) minmax(330px, 1.35fr) minmax(260px, .9fr) minmax(145px, .55fr); gap: 16px; align-items: center; min-width: 0; padding: 15px 16px; border: 1px solid var(--border); border-left: 4px solid var(--border-strong); border-radius: var(--radius-lg); background: var(--surface); }
.merch-review-item.blocked,
.merch-review-item.overdue { border-left-color: var(--danger); }
.merch-review-item.review_due,
.merch-review-item.due_this_week { border-left-color: var(--warning); }
.merch-review-item.tracking { border-left-color: var(--accent); }
.merch-review-item.done { border-left-color: var(--success); }
.merch-review-product { display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 11px; min-width: 0; }
.merch-review-product > div { min-width: 0; }
.merch-review-product h3 { margin: 6px 0 3px; font-size: var(--fs-2); }
.merch-review-product h3 a { color: var(--link); }
.merch-review-product p { display: -webkit-box; margin: 0 0 4px; overflow: hidden; font-size: var(--fs-1); line-height: 1.4; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.merch-review-product small { display: block; overflow: hidden; color: var(--text-3); font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.merch-review-decision { display: grid; min-width: 0; gap: 6px; padding-left: 15px; border-left: 1px solid var(--border); }
.merch-review-decision > div { display: flex; flex-wrap: wrap; gap: 4px; }
.merch-review-decision h4 { margin: 0; font-size: var(--fs-1); line-height: 1.5; overflow-wrap: anywhere; }
.merch-review-decision p { margin: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.4; overflow-wrap: anywhere; }
.merch-review-decision small { color: var(--text-3); font-size: var(--fs-1); line-height: 1.4; overflow-wrap: anywhere; }
.merch-review-accountability { display: grid; min-width: 0; gap: 8px; padding-left: 15px; border-left: 1px solid var(--border); }
.merch-review-accountability > div { display: grid; gap: 3px; }
.merch-review-accountability span { color: var(--text-3); font-size: var(--fs-1); }
.merch-review-accountability strong { font-size: var(--fs-1); line-height: 1.45; overflow-wrap: anywhere; }
.merch-review-accountability .merch-review-blocker strong { color: var(--danger); }
.merch-review-actions { display: grid; gap: 7px; padding-left: 12px; border-left: 1px solid var(--border); }
.merch-review-actions .btn { justify-content: center; width: 100%; font-size: var(--fs-1); text-align: center; }
.bad-text { color: var(--danger); font-weight: 700; }

/* 采购单后的生产、QA、入库与 ERP 可售证据链 */
.merch-delivery-toolbar { grid-template-columns: 180px minmax(260px, .75fr) minmax(360px, 1.25fr) auto; }
.merch-delivery-toolbar .merch-search { grid-column: auto; }
.merch-delivery-toolbar:not(:has(#merch-delivery-stage)) { grid-template-columns: minmax(240px, .7fr) minmax(280px, 1fr) auto; }
.merch-delivery-toolbar #merch-refresh { width: auto; justify-self: end; }
.data-preview-notice { padding: 7px 24px; background: #edf5fc; border-bottom: 1px solid #d5e4f1; color: #34516e; font-size: var(--fs-1); }
@media (max-width: 960px) {
  .merch-delivery-toolbar:not(:has(#merch-delivery-stage)) { grid-template-columns: minmax(0, 1fr) auto; }
}
@media (max-width: 720px) {
  .merch-delivery-toolbar:not(:has(#merch-delivery-stage)) { grid-template-columns: minmax(0, 1fr); }
}
.merch-delivery-hero { border-left-color: var(--success); background: color-mix(in srgb, var(--success) 4%, var(--surface)); }
.merch-delivery-summary { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 8px; }
.merch-delivery-summary .merch-summary-card { width: 100%; color: var(--text); font: inherit; text-align: left; cursor: pointer; }
.merch-delivery-summary .merch-summary-card:hover,
.merch-delivery-summary .merch-summary-card.active { border-color: color-mix(in srgb, var(--accent) 45%, var(--border)); background: color-mix(in srgb, var(--accent) 5%, var(--surface)); }
.merch-delivery-summary .merch-summary-card:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.merch-delivery-list { display: grid; gap: 10px; }
.merch-delivery-card { min-width: 0; padding: 15px 16px; border: 1px solid var(--border); border-left: 4px solid var(--accent); border-radius: var(--radius-lg); background: var(--surface); }
.merch-delivery-card.stage-purchase,
.merch-delivery-card:has(.merch-delivery-step.is-blocked) { border-left-color: var(--danger); }
.merch-delivery-card.stage-qa,
.merch-delivery-card.stage-material,
.merch-delivery-card.stage-inbound { border-left-color: var(--warning); }
.merch-delivery-card.stage-erp_sellable { border-left-color: var(--border-strong); }
.merch-delivery-head { display: grid; grid-template-columns: minmax(250px, .85fr) minmax(460px, 1.15fr); align-items: center; gap: 18px; min-width: 0; }
.merch-delivery-identity { min-width: 0; }
.merch-delivery-identity > div { display: flex; flex-wrap: wrap; gap: 5px; }
.merch-delivery-identity h3 { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; margin: 7px 0 4px; font-size: var(--fs-2); }
.merch-delivery-identity h3 a { color: var(--link); }
.merch-delivery-identity h3 span { min-width: 0; color: var(--text-2); font-size: var(--fs-1); font-weight: 500; overflow-wrap: anywhere; }
.merch-delivery-identity p { margin: 0 0 4px; color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; overflow-wrap: anywhere; }
.merch-delivery-identity small { display: block; color: var(--text-3); font-size: var(--fs-1); line-height: 1.4; overflow-wrap: anywhere; }
.merch-delivery-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); min-width: 0; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-delivery-metrics > div { min-width: 0; padding: 9px 10px; border-right: 1px solid var(--border); }
.merch-delivery-metrics > div:last-child { border-right: 0; }
.merch-delivery-metrics span,
.merch-delivery-metrics strong { display: block; min-width: 0; overflow-wrap: anywhere; }
.merch-delivery-metrics span { margin-bottom: 5px; color: var(--text-3); font-size: var(--fs-1); }
.merch-delivery-metrics strong { font-size: var(--fs-2); font-variant-numeric: tabular-nums; }
.merch-delivery-materials { display: grid; gap: 6px; margin-top: 11px; }
.merch-delivery-materials > div { display: grid; grid-template-columns: 140px 90px minmax(0, 1fr); gap: 8px; align-items: center; min-width: 0; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-delivery-materials span,
.merch-delivery-materials strong,
.merch-delivery-materials small { min-width: 0; overflow-wrap: anywhere; }
.merch-delivery-materials span { color: var(--text-2); font-size: var(--fs-1); }
.merch-delivery-materials strong { font-size: var(--fs-1); }
.merch-delivery-materials small { color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; }
.merch-delivery-materials .is-ready,
.merch-delivery-materials .is-not_required { border-color: var(--success-border); background: var(--success-bg); }
.merch-delivery-materials .is-pool_blocked { border-color: var(--danger-border); background: var(--danger-bg); }
.merch-delivery-materials .is-partial,
.merch-delivery-materials .is-pending { border-color: var(--warning-border); background: var(--warning-bg); }
.merch-delivery-steps { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 7px; margin: 13px 0; }
.merch-delivery-step { position: relative; display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 7px; min-width: 0; padding: 9px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-delivery-step > span { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border: 1px solid var(--border-strong); border-radius: 50%; background: var(--surface); color: var(--text-2); font-size: var(--fs-1); font-weight: 700; }
.merch-delivery-step > div { min-width: 0; }
.merch-delivery-step strong,
.merch-delivery-step small { display: block; overflow-wrap: anywhere; }
.merch-delivery-step strong { font-size: var(--fs-1); line-height: 1.35; }
.merch-delivery-step small { margin-top: 3px; color: var(--text-3); font-size: var(--fs-1); line-height: 1.4; }
.merch-delivery-step.is-complete { border-color: var(--success-border); background: var(--success-bg); }
.merch-delivery-step.is-complete > span { border-color: var(--success); color: var(--success); }
.merch-delivery-step.is-active { border-color: color-mix(in srgb, var(--accent) 42%, var(--border)); background: color-mix(in srgb, var(--accent) 5%, var(--surface)); }
.merch-delivery-step.is-active > span { border-color: var(--accent); background: var(--accent); color: #fff; }
.merch-delivery-step.is-blocked { border-color: var(--danger-border); background: var(--danger-bg); }
.merch-delivery-step.is-blocked > span { border-color: var(--danger); color: var(--danger); }
.merch-delivery-step.is-waiting { opacity: .72; }
.merch-delivery-foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 11px; border-top: 1px solid var(--border); }
.merch-delivery-foot > div:first-child { display: grid; min-width: 0; gap: 3px; }
.merch-delivery-foot strong { font-size: var(--fs-1); }
.merch-delivery-foot span { color: var(--text-2); font-size: var(--fs-1); }
.merch-delivery-foot small { color: var(--danger); font-size: var(--fs-1); line-height: 1.45; overflow-wrap: anywhere; }
.merch-delivery-actions { flex: 0 0 auto; }
.merch-delivery-done,
.merch-delivery-wait { display: inline-flex; min-height: 32px; align-items: center; padding: 5px 10px; border: 1px solid var(--success-border); border-radius: var(--radius); background: var(--success-bg); color: var(--success); font-size: var(--fs-1); font-weight: 650; }
.merch-delivery-wait { border-color: var(--border); background: var(--bg); color: var(--text-2); }
.merch-delivery-history { margin-top: 10px; border-top: 1px dashed var(--border); }
.merch-delivery-history > summary { padding: 9px 0 0; color: var(--text-3); font-size: var(--fs-1); cursor: pointer; }
.merch-delivery-history ol { display: grid; gap: 6px; margin: 9px 0 0; padding: 0; list-style: none; }
.merch-delivery-history li { display: grid; grid-template-columns: 86px 100px minmax(0, 1fr); gap: 8px; min-width: 0; padding: 7px 9px; border-radius: var(--radius); background: var(--bg); font-size: var(--fs-1); }
.merch-delivery-history li > span { color: var(--text-3); }
.merch-delivery-history li > small { color: var(--text-2); line-height: 1.45; overflow-wrap: anywhere; }
.merch-material-form { min-width: min(760px, 75vw); }
.merch-material-editor-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 7px; }
.merch-material-editor { display: grid; gap: 7px; }
.merch-material-row { display: grid; grid-template-columns: minmax(190px, 1.5fr) repeat(3, minmax(90px, .7fr)) auto; gap: 7px; align-items: center; padding: 8px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg); }
.merch-material-row select,
.merch-material-row input { min-width: 0; width: 100%; }
.merch-material-row small { grid-column: 1 / -1; color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; }

@media (max-width: 1500px) {
  .merch-brief-style { grid-template-columns: 28px minmax(210px, .72fr) minmax(250px, 1fr) minmax(260px, .95fr) auto; }
  .merch-weekly-item { grid-template-columns: minmax(240px, 1fr) minmax(360px, 1.35fr) minmax(280px, 1fr); }
  .merch-weekly-followup { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; padding: 10px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-review-item { grid-template-columns: minmax(235px, .9fr) minmax(330px, 1.3fr) minmax(250px, .9fr); }
  .merch-review-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; padding: 10px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-review-actions .btn { width: auto; }
}
@media (max-width: 1180px) {
  .merch-daily-toolbar { grid-template-columns: minmax(250px, 1fr) auto auto; }
  .merch-daily-toolbar .merch-search { grid-column: auto; }
  .merch-daily-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-toolbar.merch-delivery-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-delivery-toolbar .merch-brief-toolbar-note { grid-column: 1 / -1; }
  .merch-delivery-head { grid-template-columns: 1fr; }
  .merch-delivery-summary { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .merch-delivery-steps { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .merch-material-form { min-width: 0; }
  .merch-material-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-material-row select { grid-column: 1 / -1; }
  .merch-toolbar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .merch-weekly-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-portfolio-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-problem-strip { grid-template-columns: 1fr; }
  .merch-problem-chips { grid-template-columns: repeat(4, minmax(82px, 1fr)); }
  .merch-brief-toolbar-note { padding: 0; border-left: 0; }
  .merch-brief-readiness,
  .merch-brief-agenda { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-brief-agenda article:not(:last-child)::after { display: none; }
  .merch-brief-style { grid-template-columns: 28px minmax(220px, .8fr) minmax(0, 1.2fr); align-items: start; }
  .merch-brief-style-metrics,
  .merch-brief-style > .btn { grid-column: 2 / -1; }
  .merch-brief-style > .btn { justify-self: end; }
  .merch-search { grid-column: span 2; }
  .merch-summary-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .merch-weekly-item { grid-template-columns: minmax(230px, .85fr) minmax(0, 1.4fr); align-items: start; }
  .merch-weekly-decision { grid-column: 1 / -1; padding-top: 10px; border-top: 1px solid var(--border); }
  .merch-weekly-followup { grid-column: 1 / -1; }
  .merch-review-item { grid-template-columns: minmax(230px, .8fr) minmax(0, 1.2fr); align-items: start; }
  .merch-review-accountability { grid-column: 1 / -1; grid-template-columns: repeat(3, minmax(0, 1fr)); padding: 10px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-meeting-layout { grid-template-columns: 1fr; }
  .merch-meeting-queue { position: static; grid-template-columns: repeat(4, minmax(160px, 1fr)); max-height: none; overflow-x: auto; }
  .merch-meeting-queue > div { grid-column: 1 / -1; }
  .merch-meeting-queue button { border-right: 1px solid var(--border); border-bottom: 0; }
  .merch-meeting-minutes-list article { grid-template-columns: minmax(150px, .6fr) minmax(0, 1.4fr); }
  .merch-meeting-minutes-list p,
  .merch-meeting-minutes-list a { grid-column: 2; }
  .merch-report-task-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-report-owners > article { grid-template-columns: minmax(180px, 1.2fr) repeat(2, minmax(80px, .55fr)); }
  .merch-report-items > article { grid-template-columns: minmax(220px, .8fr) minmax(0, 1.2fr); align-items: start; }
  .merch-report-accountability { grid-column: 1 / -1; padding: 10px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-report-items > article > .btn { grid-column: 1 / -1; justify-self: end; }
  .merch-history-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .merch-history-metrics article { border-bottom: 1px solid var(--border); }
  .merch-history-metrics article:nth-child(3n) { border-right: 0; }
  .merch-quality-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-priority-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .merch-daily-toolbar { grid-template-columns: 1fr 1fr; }
  .merch-daily-toolbar .merch-search { grid-column: 1 / -1; }
  .merch-daily-more > div { position: fixed; right: 12px; bottom: 12px; left: 12px; top: auto; min-width: 0; grid-template-columns: 1fr; }
  .merch-daily-freshness { align-items: flex-start; flex-direction: column; gap: 9px; }
  .merch-daily-freshness > small { text-align: left; }
  .merch-daily-summary { grid-template-columns: 1fr 1fr; }
  .merch-daily-filter { align-items: flex-start; flex-direction: column; }
  .merch-daily-filter > div { width: 100%; }
  .merch-daily-filter button { flex: 1 1 calc(50% - 5px); justify-content: space-between; }
  .merch-toolbar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-search { grid-column: 1 / -1; }
  .merch-toolbar .btn { width: 100%; }
  /* 切换组按钮超过 3 个时换行增高，不再溢出压住下一组 */
  .merch-toolbar .merch-scope-switch { height: auto; min-height: 30px; }
  .merch-weekly-toolbar { grid-template-columns: 1fr; }
  .merch-weekly-toolbar .merch-search { grid-column: auto; }
  .merch-problem-chips { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-reasoning-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-reasoning-metrics > div,
  .merch-reasoning-metrics > div:nth-child(3n) { border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); }
  .merch-reasoning-metrics > div:nth-child(2n) { border-right: 0; }
  .merch-reasoning-metrics > div:nth-last-child(-n+2) { border-bottom: 0; }
  .merch-brief-hero { align-items: flex-start; flex-direction: column; padding: 17px; }
  .merch-brief-hero-side { width: 100%; min-width: 0; justify-items: start; padding: 12px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-brief-hero-side > div { width: 100%; }
  .merch-brief-hero-side .btn { flex: 1; }
  .merch-brief-active,
  .merch-brief-last { align-items: stretch; flex-direction: column; }
  .merch-brief-active .btn,
  .merch-brief-last .btn { width: 100%; }
  .merch-brief-readiness,
  .merch-brief-agenda { grid-template-columns: 1fr; }
  .merch-brief-style { grid-template-columns: 1fr; padding: 12px; }
  .merch-brief-rank { display: none; }
  .merch-brief-style-reason,
  .merch-brief-style-metrics,
  .merch-brief-style > .btn { grid-column: auto; padding-top: 10px; padding-left: 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-brief-style > .btn { justify-self: stretch; }
  .merch-brief-style-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-brief-carryovers > article { grid-template-columns: 1fr; }
  .merch-brief-carryovers article > p { padding: 9px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-weekly-hero { align-items: flex-start; flex-direction: column; padding: 16px; }
  .merch-weekly-cutoff { width: 100%; min-width: 0; padding: 12px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-weekly-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-weekly-item { grid-template-columns: 1fr; padding: 38px 12px 12px; }
  .merch-weekly-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-weekly-decision,
  .merch-weekly-followup { grid-column: auto; }
  .merch-weekly-followup { display: grid; align-items: start; }
  .merch-review-item { grid-template-columns: 1fr; padding: 12px; }
  .merch-review-decision,
  .merch-review-accountability,
  .merch-review-actions { grid-column: auto; padding: 10px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-review-accountability { grid-template-columns: 1fr; }
  .merch-review-actions { align-items: stretch; flex-direction: column; }
  .merch-review-actions .btn { width: 100%; }
  .merch-toolbar.merch-delivery-toolbar { grid-template-columns: 1fr; }
  .merch-delivery-toolbar .merch-search,
  .merch-delivery-toolbar .merch-brief-toolbar-note { grid-column: auto; }
  .merch-delivery-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-delivery-card { padding: 12px; }
  .merch-delivery-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-delivery-metrics > div:nth-child(2) { border-right: 0; }
  .merch-delivery-metrics > div:nth-child(-n+2) { border-bottom: 1px solid var(--border); }
  .merch-delivery-steps { grid-template-columns: 1fr; }
  .merch-delivery-materials > div { grid-template-columns: 1fr; }
  .merch-material-row { grid-template-columns: 1fr; }
  .merch-material-row select { grid-column: auto; }
  .merch-delivery-foot { align-items: stretch; flex-direction: column; }
  .merch-delivery-actions .btn,
  .merch-delivery-done,
  .merch-delivery-wait { justify-content: center; width: 100%; }
  .merch-delivery-history li { grid-template-columns: 74px minmax(0, 1fr); }
  .merch-delivery-history li > small { grid-column: 1 / -1; }
  .merch-meeting-toolbar-note,
  .merch-meeting-hero-actions { align-items: stretch; flex-direction: column; }
  .merch-meeting-toolbar-note .btn,
  .merch-meeting-hero-actions .btn { width: 100%; }
  .merch-meeting-progress { width: 100%; min-width: 0; padding: 12px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-meeting-queue { grid-template-columns: repeat(2, minmax(150px, 1fr)); }
  .merch-meeting-product { grid-template-columns: 1fr; }
  .merch-meeting-reason { padding: 10px 0 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-meeting-evidence { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-meeting-evidence > div { border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); }
  .merch-meeting-form { grid-template-columns: 1fr; padding: 12px; }
  .merch-meeting-form .full,
  .merch-meeting-form-actions { grid-column: auto; }
  .merch-meeting-form-actions { align-items: stretch; flex-direction: column; }
  .merch-meeting-form-actions .btn { width: 100%; }
  .merch-meeting-minutes-list article { grid-template-columns: 1fr; }
  .merch-meeting-minutes-list p,
  .merch-meeting-minutes-list a { grid-column: auto; }
  .merch-report-hero,
  .merch-report-previous-head { align-items: stretch; flex-direction: column; }
  .merch-report-hero .merch-meeting-hero-actions,
  .merch-report-previous-head .btn { width: 100%; }
  .merch-report-task-cards { grid-template-columns: 1fr; }
  .merch-report-owners > article { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-report-owners article > div:first-child { grid-column: 1 / -1; }
  .merch-report-items > article { grid-template-columns: 1fr; }
  .merch-report-conclusion,
  .merch-report-accountability,
  .merch-report-items > article > .btn { grid-column: auto; padding-top: 10px; padding-left: 0; border-top: 1px solid var(--border); border-left: 0; }
  .merch-report-items > article > .btn { justify-self: stretch; }
  .merch-history-list > article,
  .merch-history-list-result { align-items: stretch; flex-direction: column; }
  .merch-history-list-result > div { justify-items: start; }
  .merch-history-list-result .btn { width: 100%; }
  .merch-history-item-head,
  .merch-history-comparison-head { align-items: flex-start; flex-direction: column; }
  .merch-history-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-history-metrics article:nth-child(3n) { border-right: 1px solid var(--border); }
  .merch-history-metrics article:nth-child(2n) { border-right: 0; }
  .merch-history-decision { grid-template-columns: 1fr; }
  .merch-weekly-more { align-items: stretch; flex-direction: column; }
  .merch-weekly-bulkbar { align-items: stretch; flex-wrap: wrap; }
  .merch-weekly-bulkbar > span { align-self: center; margin-left: auto; }
  .merch-weekly-bulkbar .btn { width: 100%; }
  .merch-bulk-preview li { grid-template-columns: 82px minmax(0, 1fr); }
  .merch-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .merch-quality-grid { grid-template-columns: 1fr; }
  .merch-priority-list { grid-template-columns: 1fr; }
  .merch-data-note,
  .merch-legend { align-items: flex-start; flex-direction: column; }
}

/* 设置与主数据页 */
.config-threshold-grid { max-width: 980px; }
.config-actions { margin-top: 10px; }
.config-save-bar { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:12px; padding-top:10px; border-top:1px solid var(--border); }
.config-save-status { color:var(--text-2); font-size: var(--fs-1); overflow-wrap:anywhere; }
.config-save-status[data-tone="error"] { color:var(--danger, #a12f33); }
.config-save-status[data-tone="ok"] { color:var(--accent); }
.config-threshold-grid small { display:block; margin-top:5px; line-height:1.5; }
.config-save-bar button { flex-shrink:0; }
.config-mode-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
.config-mode-card { padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.config-mode-card b { display: block; }
.config-mode-card span { color: var(--accent); font-size: var(--fs-1); }
.config-mode-card p { margin: 6px 0 0; color: var(--text-2); font-size: var(--fs-1); }
.config-curve-toolbar, .config-supplier-toolbar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
.config-segment-legend { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 8px; color: var(--text-2); }
.config-curve-table { min-width: 640px; }
.config-supplier-table { min-width: 1080px; }
.config-curve-table input, .config-supplier-table input, .config-supplier-table select { width: 100%; max-width: 110px; }

/* 内容制作（#/studio）：模板套素材、模块排序、排队生成。不改经营页样式。 */
.studio-search-card { margin-bottom: 14px; }
.studio-search-box { flex: 1; min-width: 220px; }
.studio-hits {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 8px;
  padding: 10px 12px 12px;
}
.studio-hit {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  text-align: left;
  cursor: pointer;
}
.studio-hit b { display: block; font-family: var(--mono); }
.studio-hit small { color: var(--text-2); }
.studio-demo-card { padding: 16px; margin-bottom: 14px; }
.studio-demo-card p { margin: 0 0 10px; color: var(--text-2); }
.studio-demo-banner {
  margin-bottom: 12px;
  padding: 8px 12px;
  border: 1px dashed #bfdbfe;
  border-radius: var(--radius);
  background: var(--info-bg);
  color: var(--info);
  font-size: var(--fs-2);
}
.studio-style-card { padding: 14px; margin-bottom: 14px; }
.studio-style-card .section-title .tag { margin-left: 8px; vertical-align: middle; }
.studio-style-head {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  margin-bottom: 12px;
}
.studio-hero {
  width: 84px;
  height: 84px;
  object-fit: cover;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: #f4f4f5;
}
.studio-asset-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.studio-chip {
  appearance: none;
  padding: 4px 8px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: #fff;
  color: var(--text-2);
  font: inherit;
  font-size: var(--fs-1);
  cursor: pointer;
}
.studio-chip.is-on { color: var(--accent); border-color: #9eb1cd; background: #f4f7fb; }
.studio-picked { color: var(--text-3); font-size: var(--fs-1); }
.studio-assets {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(104px, 1fr));
  gap: 10px;
}
.studio-asset { margin: 0; }
.studio-asset figcaption {
  margin-top: 6px;
  color: var(--text-2);
  font-size: var(--fs-1);
}
.studio-asset figcaption b { display: block; font-size: var(--fs-1); }
.studio-asset figcaption small { display: block; color: var(--text-3); }
.studio-asset-pick {
  display: block;
  width: 100%;
  padding: 0;
  border: 2px solid transparent;
  border-radius: var(--radius);
  background: transparent;
  cursor: pointer;
}
.studio-asset.is-selected .studio-asset-pick { border-color: var(--accent); }
.studio-asset-img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: #f4f4f5;
}
.studio-asset.is-missing { opacity: 0.7; }
.studio-tabs { margin: 0 0 14px; }
.studio-work {
  display: grid;
  grid-template-columns: minmax(240px, 280px) minmax(0, 1fr) minmax(240px, 300px);
  gap: 14px;
  align-items: start;
}
.studio-col { padding: 14px; }
.studio-col-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.studio-col-hint { margin: 6px 0 12px; color: var(--text-3); font-size: var(--fs-1); }
.studio-mod-list { display: grid; gap: 6px; }
.studio-mod {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  gap: 6px;
  align-items: center;
  padding: 6px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fff;
}
.studio-mod.is-on { border-color: #9eb1cd; background: #f4f7fb; }
.studio-mod.is-off { opacity: 0.55; }
.studio-mod-drag, .studio-mod-ops button {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--text-3);
  cursor: pointer;
  font: inherit;
}
.studio-mod-drag { cursor: grab; letter-spacing: -2px; }
.studio-mod-main {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  min-width: 0;
  padding: 0;
  border: 0;
  background: transparent;
  text-align: left;
  cursor: pointer;
  font: inherit;
}
.studio-mod-idx { color: var(--text-3); font-family: var(--mono); font-size: var(--fs-1); }
.studio-mod-main strong { display: block; }
.studio-mod-main small { display: block; color: var(--text-3); font-size: var(--fs-1); }
.studio-mod-ops { display: flex; gap: 2px; }
.studio-editor-head, .studio-editor-row, .studio-custom, .studio-slots {
  display: grid;
  gap: 10px;
  margin: 12px 0;
}
.studio-editor-head, .studio-editor-row { grid-template-columns: 1fr 1fr; }
.studio-custom { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.studio-col-edit label, .studio-note {
  display: grid;
  gap: 4px;
  color: var(--text-2);
  font-size: var(--fs-1);
}
.studio-col-edit input, .studio-col-edit select, .studio-col-edit textarea {
  width: 100%;
  min-height: 34px;
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  background: #fff;
  font: inherit;
  color: var(--text);
}
.studio-col-edit textarea { min-height: 64px; resize: vertical; }
.studio-mode {
  margin: 0;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.studio-mode legend { padding: 0 4px; color: var(--text-3); font-size: var(--fs-1); }
.studio-mode label { display: grid; grid-template-columns: 16px minmax(0, 1fr); gap: 6px; align-items: start; margin-top: 6px; }
.studio-mode small { display: block; color: var(--text-3); }
.studio-slots { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
.studio-slot-head {
  display: flex;
  justify-content: space-between;
  margin-bottom: 6px;
  color: var(--text-2);
  font-size: var(--fs-1);
}
.studio-slot-body {
  display: grid;
  width: 100%;
  min-height: 120px;
  padding: 0;
  overflow: hidden;
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius);
  background: #fafafa;
  cursor: pointer;
}
.studio-slot-body img { width: 100%; height: 110px; object-fit: cover; }
.studio-slot-body small, .studio-slot-empty {
  display: block;
  padding: 6px 8px;
  color: var(--text-3);
  font-size: var(--fs-1);
}
.studio-editor-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}
.studio-phone {
  border: 1px solid var(--border);
  border-radius: 16px;
  overflow: hidden;
  background: #fff;
}
.studio-phone-bar {
  display: flex;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 12px;
  background: #142b52;
  color: #f8fafc;
  font-size: var(--fs-1);
}
.studio-phone-main { display: grid; grid-template-columns: 44px minmax(0, 1fr); min-height: 280px; }
.studio-phone-rail { display: grid; align-content: start; gap: 4px; padding: 6px; background: #f4f4f5; }
.studio-prev-thumb {
  width: 32px;
  height: 42px;
  padding: 0;
  overflow: hidden;
  border: 1px solid transparent;
  border-radius: 4px;
  background: #fff;
  cursor: pointer;
}
.studio-prev-thumb.is-on { border-color: var(--accent); }
.studio-prev-thumb img { width: 100%; height: 100%; object-fit: cover; }
.studio-phone-stage { background: #f0edea; }
.studio-phone-stage img { width: 100%; height: 100%; object-fit: cover; display: block; aspect-ratio: 3 / 4; }
.studio-phone-empty, .studio-long-empty {
  display: grid;
  place-items: center;
  min-height: 180px;
  color: var(--text-3);
  text-align: center;
}
.studio-phone-cap { margin: 0; padding: 8px 12px 10px; color: var(--text-3); font-size: var(--fs-1); }
.studio-long { display: grid; gap: 8px; }
.studio-long-mod {
  display: grid;
  gap: 4px;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fff;
  text-align: left;
  cursor: pointer;
  font: inherit;
}
.studio-long-mod.is-on { border-color: #9eb1cd; }
.studio-long-mod img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.studio-long-mod span { padding: 6px 8px; color: var(--text-2); font-size: var(--fs-1); }
.studio-lib-mask {
  position: fixed;
  inset: 0;
  z-index: 40;
  display: grid;
  place-items: center;
  padding: 20px;
  background: rgba(24, 24, 27, 0.35);
}
.studio-lib {
  width: min(720px, 100%);
  max-height: min(80vh, 720px);
  overflow: auto;
  padding: 16px;
  background: #fff;
  border-radius: var(--radius-lg);
  box-shadow: 0 16px 40px rgba(24, 24, 27, 0.16);
}
.studio-lib header { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.studio-lib small { color: var(--text-3); letter-spacing: 0.04em; }
.studio-lib h2 { margin: 4px 0 0; font-size: var(--fs-4); }
.studio-lib-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 8px; }
.studio-lib-grid button {
  display: grid;
  gap: 4px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fff;
  text-align: left;
  cursor: pointer;
  font: inherit;
}
.studio-lib-grid button:hover { border-color: #9eb1cd; background: #f4f7fb; }
.studio-lib-grid small { color: var(--text-3); }
.studio-readonly, .studio-missing { color: var(--text-2); margin: 0 0 12px; }
.studio-status-ok { background: var(--success-bg); color: var(--success); border-color: var(--success-border); }
.studio-status-warn { background: var(--warning-bg); color: var(--warning); border-color: var(--warning-border); }
.studio-status-bad { background: var(--danger-bg); color: var(--danger); border-color: var(--danger-border); }
.studio-status-info { background: var(--info-bg); color: var(--info); border-color: #bfdbfe; }
.studio-job-table { min-width: 720px; }
@media (max-width: 1100px) {
  .studio-work { grid-template-columns: 1fr; }
}
@media (max-width: 800px) {
  .studio-style-head { flex-direction: column; }
  .studio-hero { width: 100%; height: auto; max-height: 220px; }
  .studio-editor-head, .studio-editor-row, .studio-custom { grid-template-columns: 1fr; }
  .studio-search-card .toolbar { flex-direction: column; align-items: stretch; }
  .studio-extra { width: 100%; }
}
.studio-extra {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}
.studio-extra input, .studio-extra select {
  min-height: 32px;
  padding: 4px 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  font: inherit;
}
.studio-extra input { min-width: 220px; }
.studio-frame {
  position: relative;
  overflow: hidden;
  aspect-ratio: 3 / 4;
  background: #f0edea;
}
.studio-long-mod .studio-frame { aspect-ratio: 4 / 3; }
.studio-bg-navy { background: #14233f; color: #f8fafc; }
.studio-bg-canvas { background: #f7f3ea; }
.studio-bg-warm-grey { background: #f0edea; }
.studio-frame-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.studio-fit-contain .studio-frame-photo { object-fit: contain; }
.studio-frame-empty {
  display: grid;
  place-items: center;
  height: 100%;
  color: var(--text-3);
}
.studio-frame-brand {
  position: absolute;
  top: 8px;
  left: 10px;
  font-size: var(--fs-1);
  font-weight: 700;
  letter-spacing: 0.04em;
}
.studio-logo-tr .studio-frame-brand { left: auto; right: 10px; }
.studio-bg-navy .studio-frame-brand { color: #f8fafc; }
.studio-frame-copy {
  position: absolute;
  left: 10px;
  right: 10px;
  bottom: 10px;
  display: grid;
  gap: 2px;
}
.studio-frame-copy strong, .studio-frame-copy em { display: block; }
.studio-frame-copy strong { font-size: var(--fs-2); }
.studio-frame-copy em { font-size: var(--fs-1); font-style: normal; opacity: 0.8; }
.studio-bg-navy .studio-frame-copy { color: #f8fafc; }

/* 自建登录页与首登改密（藏青工作台） */
.login-body {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 28px 16px;
  background: #f4f6f9;
}
.login-card {
  width: min(420px, 100%);
  padding: 28px 28px 24px;
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: 0 10px 30px rgba(20, 43, 82, 0.08);
}
.login-brand { display: flex; align-items: center; gap: 12px; margin-bottom: 22px; }
.login-brand .logo-mark-shell { width: 40px; height: 40px; padding: 6px 8px; }
.login-brand .brand-wordmark { width: 148px; }
.login-brand small { display: block; color: var(--text-3); font-size: var(--fs-1); }
.login-card h1 { font-size: var(--fs-4); margin-bottom: 6px; color: var(--accent); }
.login-lead { color: var(--text-2); margin-bottom: 18px; }
.login-card label { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; font-size: var(--fs-1); color: var(--text-2); }
.login-card input { height: 38px; padding: 0 10px; border: 1px solid var(--border); border-radius: 8px; font: inherit; color: var(--text); }
.login-card .btn { width: 100%; height: 40px; margin-top: 6px; }
.login-error { color: var(--danger); font-size: var(--fs-1); margin: 0 0 8px; }
.workspace { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.site-topbar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  min-height: 40px;
  padding: 0 28px;
  background: #fff;
  border-bottom: 1px solid var(--border);
}
.topbar-weather {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  max-width: min(78vw, 640px);
  min-width: 0;
  color: var(--text-2);
  font-size: var(--fs-2);
  text-decoration: none;
}
.topbar-weather:hover,
.topbar-weather:focus,
.topbar-weather:active {
  color: var(--accent);
  text-decoration: none;
}
.topbar-weather-now {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.topbar-weather-now.is-rain {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #17659a;
  font-weight: 650;
}
.topbar-weather-now.is-rain::before {
  width: 8px;
  height: 8px;
  flex: none;
  border-radius: 65% 35% 65% 35%;
  background: #2f91cb;
  box-shadow: 0 0 0 4px #e3f2fb;
  content: '';
  transform: rotate(45deg);
}
.topbar-weather-now.is-sunny,
.topbar-weather-now.is-hot {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 650;
}
.topbar-weather-now.is-sunny { color: #a45c08; }
.topbar-weather-now.is-hot { color: #b84628; }
.topbar-weather-now.is-sunny::before,
.topbar-weather-now.is-hot::before {
  width: 9px;
  height: 9px;
  flex: none;
  border-radius: 50%;
  content: '';
}
.topbar-weather-now.is-sunny::before {
  background: #e7a521;
  box-shadow: 0 0 0 4px #fff1c8;
}
.topbar-weather-now.is-hot::before {
  background: #e66a42;
  box-shadow: 0 0 0 4px #ffe4d7;
}
.topbar-weather-alert {
  flex: none;
  max-width: 16em;
  overflow: hidden;
  padding: 1px 7px;
  border-radius: 999px;
  background: var(--warning-bg);
  border: 1px solid var(--warning-border);
  color: #854d0e;
  font-size: var(--fs-1);
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.topbar-weather-alert.is-rain {
  border-color: #8fc4e4;
  background: #e4f3fc;
  color: #17659a;
}
.topbar-weather-alert.is-hot {
  border-color: #e9a483;
  background: #ffe8dd;
  color: #b84628;
}
@media (max-width: 720px) {
  .topbar-weather-alert:nth-child(n + 3) { display: none; }
}
.site-topbar-name { font-size: var(--fs-2); font-weight: 600; color: var(--accent); }
body[data-view="boss"] .site-topbar { display: none; }
.account-pop-logout {
  display: block;
  width: 100%;
  margin-top: 10px;
  padding-top: 10px;
  border: 0;
  border-top: 1px solid var(--border);
  background: none;
  color: var(--text-2);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.account-pop-logout:hover { color: var(--danger); }

/* ---------- 账号与权限 ---------- */
.account-overview {
  display: grid;
  grid-template-columns: 130px 110px minmax(280px, 1fr);
  gap: 10px;
  margin-bottom: 18px;
}
.account-overview > div,
.account-overview > p {
  min-height: 72px;
  margin: 0;
  padding: 13px 15px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: #fff;
}
.account-overview > div { display: grid; align-content: center; gap: 2px; }
.account-overview span { color: var(--text-3); font-size: var(--fs-1); }
.account-overview strong { color: var(--text); font-size: var(--fs-5); font-weight: 620; }
.account-overview > p { display: flex; align-items: center; color: var(--text-2); font-size: var(--fs-1); line-height: 1.6; }
.account-crew-section { overflow: hidden; border-color: rgba(20,43,82,.2); background: #f3f0e8; }
.account-crew-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; padding: 20px 22px 17px; color: #142b52; }
.account-crew-head > div > span { font: 9px var(--mono); letter-spacing: .15em; }
.account-crew-head .section-title { margin-top: 7px; font-size: var(--fs-4); letter-spacing: -.02em; }
.account-crew-head p { margin: 5px 0 0; color: #687381; font-size: var(--fs-1); }
.account-crew-head > b { font-size: var(--fs-3); line-height: .9; letter-spacing: .08em; text-align: right; }
.account-crew-head > b small { color: #78828d; font-size: var(--fs-1); font-weight: 500; letter-spacing: .03em; }
.account-crew-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); border-top: 1px solid rgba(20,43,82,.15); }
.account-crew-member { display: flex; min-width: 0; min-height: 80px; align-items: center; gap: 10px; padding: 12px 14px; border-right: 1px solid rgba(20,43,82,.12); border-bottom: 1px solid rgba(20,43,82,.12); background: rgba(255,255,255,.38); transition: background .18s ease; }
.account-crew-member:hover { background: rgba(255,255,255,.72); }
.account-crew-member.is-disabled { filter: grayscale(.75); opacity: .5; }
.account-crew-member > span:last-child { display: grid; min-width: 0; gap: 3px; }
.account-crew-member strong { overflow: hidden; color: #142b52; font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.account-crew-member small { color: #747e88; font-size: var(--fs-1); }
.account-role-create {
  margin: 12px 0 14px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: #fafafa;
}
.account-role-create > summary {
  padding: 11px 14px;
  color: var(--accent);
  cursor: pointer;
  font-size: var(--fs-1);
  font-weight: 600;
}
.account-role-create-body { display: grid; gap: 14px; padding: 2px 14px 14px; }
.account-preset-row { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; color: var(--text-3); font-size: var(--fs-1); }
.account-role-fields { max-width: 760px; }
.account-permission-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
.account-permission-item {
  display: flex;
  min-width: 0;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-height: 54px;
  padding: 8px 9px 8px 11px;
  border: 1px solid #e4e4e7;
  border-radius: 7px;
  background: #fff;
}
.account-permission-item > span { display: grid; min-width: 0; gap: 2px; }
.account-permission-item b { color: var(--text); font-size: var(--fs-1); }
.account-permission-item small { overflow: hidden; color: var(--text-3); font-size: var(--fs-1); line-height: 1.3; text-overflow: ellipsis; white-space: nowrap; }
.account-permission-item select { width: 76px; min-width: 76px; padding: 5px 20px 5px 7px; font-size: var(--fs-1); }
.account-role-actions { display: flex; justify-content: flex-end; }
.account-role-list { display: grid; gap: 10px; }
.account-role-card { border: 1px solid var(--border); border-radius: 9px; background: #fff; }
.account-role-card > summary { display: grid; grid-template-columns: 180px minmax(0, 1fr) auto; align-items: center; gap: 14px; min-height: 58px; padding: 10px 13px; cursor: pointer; list-style: none; }
.account-role-card > summary::-webkit-details-marker { display: none; }
.account-role-card > summary > span { display: grid; gap: 2px; }
.account-role-card > summary b { font-size: var(--fs-1); }
.account-role-card > summary small { color: var(--text-3); font-size: var(--fs-1); }
.account-role-card > summary em { overflow: hidden; color: var(--text-2); font-size: var(--fs-1); font-style: normal; text-overflow: ellipsis; white-space: nowrap; }
.account-role-card > summary i { color: var(--accent); font-size: var(--fs-1); font-style: normal; }
.account-role-card[open] > summary { border-bottom: 1px solid var(--border); }
.account-role-card-body { padding: 13px; }
.account-role-card-body > header { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 10px; }
.account-role-card-body > header > div { display: grid; gap: 3px; }
.account-role-card-body > header small { color: var(--text-3); font-size: var(--fs-1); }
.account-role-name { width: 220px; padding: 4px 7px; border-color: transparent; background: transparent; font-size: var(--fs-2); font-weight: 620; }
.account-role-name:not([readonly]):hover,
.account-role-name:not([readonly]):focus { border-color: var(--border); background: #fff; }
.account-role-card-body > header > label { display: flex; align-items: center; gap: 8px; color: var(--text-3); font-size: var(--fs-1); }
.account-role-card-body > header select { min-width: 118px; }
.account-role-card-body > footer { display: flex; align-items: center; justify-content: flex-end; gap: 7px; margin-top: 10px; }
.account-role-card-body > footer span { margin-right: auto; color: var(--text-3); font-size: var(--fs-1); }
.account-user-create { grid-template-columns: 1fr 1fr 1fr 1.2fr auto; align-items: end; }
.account-user-table td { vertical-align: top; }
.account-user-table td > b,
.account-user-table td > small,
.account-user-table td > select { display: block; }
.account-user-table td > small { margin-top: 4px; color: var(--text-3); font-size: var(--fs-1); line-height: 1.35; }
.account-user-identity { display: flex; min-width: 150px; align-items: center; gap: 9px; }
.account-user-identity > span { display: grid; min-width: 0; gap: 1px; }
.account-user-identity b { font-size: var(--fs-1); }
.account-user-identity small { overflow: hidden; max-width: 150px; color: var(--text-3); font-size: var(--fs-1); text-overflow: ellipsis; white-space: nowrap; }
.account-user-table .account-permission-summary { max-width: 310px; white-space: normal; }
.account-status { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-1); font-weight: 600; }
.account-status::before { width: 6px; height: 6px; border-radius: 50%; background: currentColor; content: ''; }
.account-status.active { color: #17894a; }
.account-status.disabled { color: var(--text-3); }
.account-user-actions { display: flex; flex-wrap: wrap; gap: 5px; min-width: 218px; }
@media (max-width: 1180px) {
  .account-permission-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .account-user-create { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .account-overview { grid-template-columns: repeat(2, 1fr); }
  .account-overview > p { grid-column: 1 / -1; }
  .account-permission-grid { grid-template-columns: 1fr; }
  .account-role-card > summary { grid-template-columns: 1fr auto; }
  .account-role-card > summary em { display: none; }
  .account-role-card-body > header { align-items: flex-start; flex-direction: column; }
  .account-user-create { grid-template-columns: 1fr; }
}
.password-gate {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(20, 43, 82, 0.45);
}
.password-gate .login-card { box-shadow: 0 16px 40px rgba(20, 43, 82, 0.2); }

/* ---------- 天气看板 ---------- */
#weather-home-slot { margin-bottom: 16px; }
.weather-home-card {
  display: block;
  padding: 16px 18px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
  color: inherit;
  text-decoration: none;
}
.weather-home-card:hover,
.weather-home-card:focus,
.weather-home-card:active {
  border-color: var(--border-strong);
  text-decoration: none;
}
.weather-home-card.is-loading,
.weather-home-card.is-empty { color: var(--text-3); }
.weather-home-card.is-rain {
  border-color: #7fb9dc;
  background: linear-gradient(115deg, #e4f3fc 0%, #f7fbfe 58%, #fff 100%);
  box-shadow: inset 4px 0 0 #2f91cb, 0 8px 20px rgba(33, 112, 160, .08);
}
.weather-home-card.is-rain .weather-home-kicker,
.weather-home-card.is-rain .weather-home-go { color: #17659a; }
.weather-home-card.is-sunny {
  border-color: #e4bd63;
  background: linear-gradient(115deg, #fff4cf 0%, #fffaf0 58%, #fff 100%);
  box-shadow: inset 4px 0 0 #e0a426, 0 8px 20px rgba(171, 112, 15, .08);
}
.weather-home-card.is-sunny .weather-home-kicker,
.weather-home-card.is-sunny .weather-home-go { color: #9b5b0b; }
.weather-home-card.is-hot {
  border-color: #e9a180;
  background: linear-gradient(115deg, #ffeadf 0%, #fff6f1 58%, #fff 100%);
  box-shadow: inset 4px 0 0 #df6a42, 0 8px 20px rgba(176, 72, 39, .08);
}
.weather-home-card.is-hot .weather-home-kicker,
.weather-home-card.is-hot .weather-home-go { color: #b84628; }
.weather-home-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}
.weather-home-kicker { font-size: var(--fs-1); color: var(--text-3); margin-bottom: 8px; }
.weather-home-title { font-size: var(--fs-4); font-weight: 600; letter-spacing: -0.02em; }
.weather-home-sub { margin-top: 6px; color: var(--text-2); font-size: var(--fs-2); }
.weather-home-go { flex: none; color: var(--accent); font-size: var(--fs-1); font-weight: 600; }
.weather-home-alert {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
  color: #854d0e;
  font-size: var(--fs-1);
}
.weather-page { max-width: 1080px; min-width: 0; overflow: hidden; }
.weather-mode-toggle { margin-bottom: 16px; }
.weather-watch {
  display: grid;
  gap: 10px;
  min-width: 0;
}
.weather-watch-row {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  min-width: 0;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
}
.weather-watch-row.is-rain {
  border-color: #9dc9e4;
  background: linear-gradient(90deg, #edf8fe 0%, #fff 72%);
  box-shadow: inset 4px 0 0 #2f91cb;
}
.weather-watch-row.is-rain .weather-watch-label { color: #17659a; }
.weather-watch-label {
  padding-top: 6px;
  color: #854d0e;
  font-size: var(--fs-1);
  font-weight: 650;
  line-height: 1.3;
  overflow-wrap: anywhere;
}
.weather-hero {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  min-width: 0;
  overflow: hidden;
  padding: 22px 24px;
  margin-bottom: 22px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: linear-gradient(180deg, #f8fafc 0%, #fff 72%);
}
.weather-hero.is-sunny {
  border-color: #e4bd63;
  background: linear-gradient(125deg, #fff0bd 0%, #fff8e7 55%, #fff 100%);
  box-shadow: inset 5px 0 0 #e0a426, 0 10px 28px rgba(171, 112, 15, .09);
}
.weather-hero.is-hot {
  border-color: #e99b78;
  background: linear-gradient(125deg, #ffe1d1 0%, #fff2ea 55%, #fff 100%);
  box-shadow: inset 5px 0 0 #df6a42, 0 10px 28px rgba(176, 72, 39, .1);
}
.weather-hero.is-rain {
  border-color: #78b6db;
  background: linear-gradient(125deg, #dff1fb 0%, #f0f8fd 55%, #fff 100%);
  box-shadow: inset 5px 0 0 #2f91cb, 0 10px 28px rgba(33, 112, 160, .1);
}
.weather-hero.is-alert { background: linear-gradient(180deg, #fef3c7 0%, #fff 70%); }
.weather-hero.is-alert.is-rain {
  border-color: #4f9dcc;
  background: linear-gradient(125deg, #cfeafa 0%, #e8f5fc 52%, #fff 100%);
}
.weather-hero.is-alert.is-hot {
  border-color: #df805b;
  background: linear-gradient(125deg, #ffd6c4 0%, #ffebe2 52%, #fff 100%);
}
.weather-hero.is-rain .weather-hero-kicker,
.weather-hero.is-rain .weather-hero-sky { color: #17659a; }
.weather-hero.is-sunny .weather-hero-kicker,
.weather-hero.is-sunny .weather-hero-sky { color: #9b5b0b; }
.weather-hero.is-hot .weather-hero-kicker,
.weather-hero.is-hot .weather-hero-sky { color: #b84628; }
.weather-hero-copy {
  display: flex;
  min-width: 0;
  align-items: center;
  gap: 18px;
}
.weather-hero-copy-main { min-width: 0; }
.weather-hero-kicker { color: var(--text-3); font-size: var(--fs-1); }
.weather-hero-sky { margin-top: 8px; font-size: var(--fs-3); font-weight: 600; }
.weather-hero-temp {
  margin-top: 6px;
  font-size: var(--fs-hero);
  font-weight: 650;
  letter-spacing: -0.05em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.weather-hero-tomorrow { margin-top: 10px; color: var(--text-2); font-size: var(--fs-2); }
.weather-forecast {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--surface);
}
.weather-forecast.is-empty { padding: 18px 20px; }
.weather-forecast-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  padding: 18px 20px 16px;
  border-bottom: 1px solid var(--border);
}
.weather-forecast-kicker {
  display: block;
  margin-bottom: 5px;
  color: var(--text-3);
  font-size: var(--fs-1);
}
.weather-forecast-head h2 { margin: 0; font-size: var(--fs-3); font-weight: 650; letter-spacing: -.02em; }
.weather-forecast-head p { margin: 5px 0 0; color: var(--text-3); font-size: var(--fs-1); }
.weather-forecast-summary {
  display: grid;
  min-width: 340px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fafafa;
}
.weather-forecast-summary span {
  min-width: 0;
  padding: 9px 11px;
  border-right: 1px solid var(--border);
  color: var(--text-3);
  font-size: var(--fs-1);
  line-height: 1.25;
}
.weather-forecast-summary span:last-child { border-right: 0; }
.weather-forecast-summary b {
  display: block;
  overflow: hidden;
  margin-bottom: 3px;
  color: var(--text);
  font-size: var(--fs-2);
  font-weight: 650;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.weather-rain-callout {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 20px;
  border-bottom: 1px solid #a8cfe6;
  background: linear-gradient(90deg, #dff2fc 0%, #eff9fe 58%, #f8fcff 100%);
  color: #145f90;
}
.weather-rain-callout > span {
  width: 15px;
  height: 15px;
  flex: none;
  border-radius: 65% 35% 65% 35%;
  background: #2f91cb;
  box-shadow: 0 0 0 6px rgba(47, 145, 203, .12);
  transform: rotate(45deg);
}
.weather-rain-callout div { display: grid; gap: 2px; }
.weather-rain-callout b { font-size: var(--fs-1); font-weight: 700; }
.weather-rain-callout small { color: #3e7496; font-size: var(--fs-1); }
.weather-rain-callout.is-heavy {
  border-bottom-color: #6ba8ce;
  background: linear-gradient(90deg, #c8e8f9 0%, #e2f3fc 62%, #f2faff 100%);
  color: #0f527d;
}
.weather-rain-callout.is-heavy > span {
  background: #176d9f;
  box-shadow: 0 0 0 6px rgba(23, 109, 159, .15);
}
.weather-forecast-scroll { max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; }
.weather-forecast-scroll:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.weather-forecast-grid { display: grid; min-width: 742px; grid-template-columns: repeat(7, minmax(106px, 1fr)); }
.weather-forecast-day {
  min-width: 0;
  padding: 13px 12px 12px;
  border-right: 1px solid var(--border);
  background: #fff;
}
.weather-forecast-day:last-child { border-right: 0; }
.weather-forecast-day.is-today { background: #f7f9fc; box-shadow: inset 0 2px 0 #142b52; }
.weather-forecast-day.is-rain {
  background: linear-gradient(180deg, #eaf6fd 0%, #f7fbfe 68%, #fff 100%);
  box-shadow: inset 0 3px 0 #5da5d0;
}
.weather-forecast-day.is-today.is-rain {
  box-shadow: inset 0 3px 0 #176d9f, inset 3px 0 0 rgba(23, 109, 159, .14);
}
.weather-forecast-day.is-heavy-rain {
  background: linear-gradient(180deg, #d9eefb 0%, #eef8fd 66%, #fff 100%);
  box-shadow: inset 0 4px 0 #176d9f;
}
.weather-forecast-day.is-sunny {
  background: linear-gradient(180deg, #fff5d6 0%, #fffbf2 68%, #fff 100%);
  box-shadow: inset 0 3px 0 #dfa426;
}
.weather-forecast-day.is-hot {
  background: linear-gradient(180deg, #ffe8dc 0%, #fff7f2 68%, #fff 100%);
  box-shadow: inset 0 3px 0 #df6a42;
}
.weather-forecast-day.is-today.is-sunny { box-shadow: inset 0 3px 0 #b87912, inset 3px 0 0 rgba(184, 121, 18, .13); }
.weather-forecast-day.is-today.is-hot { box-shadow: inset 0 3px 0 #bd4f2d, inset 3px 0 0 rgba(189, 79, 45, .13); }
.weather-forecast-day-head { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; }
.weather-forecast-day-head b { font-size: var(--fs-1); font-weight: 650; }
.weather-forecast-day-head span { color: var(--text-3); font-size: var(--fs-1); font-variant-numeric: tabular-nums; }
.weather-visual-icon {
  --weather-icon-a: #596579;
  --weather-icon-b: #94a0b2;
  --weather-icon-bg-a: #f1f4f8;
  --weather-icon-bg-b: #fff;
  position: relative;
  display: grid;
  flex: none;
  place-items: center;
  overflow: hidden;
  border: 1px solid rgba(110, 124, 145, .18);
  background:
    radial-gradient(circle at 30% 22%, rgba(255, 255, 255, .96) 0 12%, transparent 30%),
    linear-gradient(145deg, var(--weather-icon-bg-a) 0%, var(--weather-icon-bg-b) 76%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .92), 0 7px 18px rgba(40, 57, 84, .12);
  isolation: isolate;
}
.weather-visual-icon::after {
  position: absolute;
  top: 7%;
  left: 13%;
  width: 42%;
  height: 24%;
  border-radius: 999px;
  background: linear-gradient(180deg, rgba(255, 255, 255, .72), rgba(255, 255, 255, 0));
  content: '';
  filter: blur(.6px);
  transform: rotate(-18deg);
}
.weather-visual-icon i {
  position: relative;
  z-index: 1;
  line-height: 1;
  filter: drop-shadow(0 2px 2px rgba(30, 45, 68, .18));
}
.weather-visual-icon i::before {
  background: linear-gradient(150deg, var(--weather-icon-a) 8%, var(--weather-icon-b) 86%);
  background-clip: text;
  color: transparent;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
.weather-visual-icon.is-rain {
  --weather-icon-a: #126caa;
  --weather-icon-b: #64c8ee;
  --weather-icon-bg-a: #d9f1fd;
  --weather-icon-bg-b: #f6fcff;
  border-color: rgba(34, 133, 190, .24);
}
.weather-visual-icon.is-sunny {
  --weather-icon-a: #d98206;
  --weather-icon-b: #ffcf4b;
  --weather-icon-bg-a: #fff0bd;
  --weather-icon-bg-b: #fffaf0;
  border-color: rgba(206, 139, 16, .24);
}
.weather-visual-icon.is-hot {
  --weather-icon-a: #c64325;
  --weather-icon-b: #f39a54;
  --weather-icon-bg-a: #ffddcf;
  --weather-icon-bg-b: #fff6f0;
  border-color: rgba(205, 79, 43, .23);
}
.weather-visual-icon.is-snow {
  --weather-icon-a: #397dc2;
  --weather-icon-b: #9adcf1;
  --weather-icon-bg-a: #e2f2fb;
  --weather-icon-bg-b: #f9fdff;
  border-color: rgba(58, 126, 184, .22);
}
.weather-visual-icon.is-haze {
  --weather-icon-a: #7e715c;
  --weather-icon-b: #b9a47e;
  --weather-icon-bg-a: #f3eee4;
  --weather-icon-bg-b: #fffdf9;
  border-color: rgba(139, 117, 79, .2);
}
.weather-visual-icon.is-hero {
  width: 78px;
  height: 78px;
  border-radius: 24px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .92), 0 13px 28px rgba(40, 57, 84, .16);
}
.weather-visual-icon.is-hero i { font-size: var(--fs-hero); }
.weather-visual-icon.is-small {
  width: 32px;
  height: 32px;
  border-radius: 11px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 4px 10px rgba(40, 57, 84, .11);
}
.weather-visual-icon.is-small i { font-size: var(--fs-5); }
.weather-forecast-condition {
  display: flex;
  align-items: center;
  gap: 7px;
  min-height: 42px;
  margin-top: 10px;
  overflow: hidden;
  color: var(--text-2);
  font-size: var(--fs-1);
  line-height: 1.25;
}
.weather-forecast-condition > span:last-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.weather-forecast-condition > i {
  width: 8px;
  height: 8px;
  flex: none;
}
.weather-forecast-condition > i.is-rain-mark {
  border-radius: 65% 35% 65% 35%;
  background: #2f91cb;
  box-shadow: 0 0 0 3px rgba(47, 145, 203, .12);
  transform: rotate(45deg);
}
.weather-forecast-condition > i.is-sunny-mark,
.weather-forecast-condition > i.is-hot-mark { border-radius: 50%; }
.weather-forecast-condition > i.is-sunny-mark {
  background: #e0a426;
  box-shadow: 0 0 0 3px rgba(224, 164, 38, .17);
}
.weather-forecast-condition > i.is-hot-mark {
  background: #df6a42;
  box-shadow: 0 0 0 3px rgba(223, 106, 66, .16);
}
.weather-forecast-day.is-rain .weather-forecast-condition,
.weather-forecast-day.is-rain .weather-forecast-metrics .is-wet dd {
  color: #17659a;
  font-weight: 700;
}
.weather-forecast-day.is-sunny .weather-forecast-condition { color: #9b5b0b; font-weight: 700; }
.weather-forecast-day.is-hot .weather-forecast-condition { color: #b84628; font-weight: 700; }
.weather-forecast-temp { display: flex; align-items: baseline; gap: 5px; font-variant-numeric: tabular-nums; }
.weather-forecast-temp b { font-size: var(--fs-4); font-weight: 650; letter-spacing: -.04em; }
.weather-forecast-temp span { color: var(--text-3); font-size: var(--fs-2); }
.weather-forecast-lane {
  position: relative;
  height: 68px;
  margin: 8px 0 9px;
  border-top: 1px solid #eceef2;
  border-bottom: 1px solid #eceef2;
  background: linear-gradient(to bottom, transparent 49%, #f1f2f4 50%, transparent 51%);
}
.weather-forecast-lane i {
  position: absolute;
  top: var(--range-top);
  left: 50%;
  width: 4px;
  height: var(--range-height);
  min-height: 8px;
  border-radius: 99px;
  background: linear-gradient(180deg, #7a8492 0%, #b5bbc4 100%);
  transform: translateX(-50%);
}
.weather-forecast-lane i::before,
.weather-forecast-lane i::after {
  position: absolute;
  left: 50%;
  width: 8px;
  height: 8px;
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 1px rgba(20, 43, 82, .14);
  content: '';
  transform: translateX(-50%);
}
.weather-forecast-lane i::before { top: -2px; background: #7a8492; }
.weather-forecast-lane i::after { bottom: -2px; background: #b5bbc4; }
.weather-forecast-day.is-rain .weather-forecast-lane i { background: linear-gradient(180deg, #237cad 0%, #71b7dc 100%); }
.weather-forecast-day.is-rain .weather-forecast-lane i::before { background: #237cad; }
.weather-forecast-day.is-rain .weather-forecast-lane i::after { background: #71b7dc; }
.weather-forecast-day.is-sunny .weather-forecast-lane i { background: linear-gradient(180deg, #d78f16 0%, #f1c760 100%); }
.weather-forecast-day.is-sunny .weather-forecast-lane i::before { background: #d78f16; }
.weather-forecast-day.is-sunny .weather-forecast-lane i::after { background: #f1c760; }
.weather-forecast-day.is-hot .weather-forecast-lane i { background: linear-gradient(180deg, #c94d2d 0%, #ee9564 100%); }
.weather-forecast-day.is-hot .weather-forecast-lane i::before { background: #c94d2d; }
.weather-forecast-day.is-hot .weather-forecast-lane i::after { background: #ee9564; }
.weather-forecast-metrics { display: grid; gap: 5px; margin: 0; }
.weather-forecast-metrics div { display: flex; align-items: baseline; justify-content: space-between; gap: 5px; }
.weather-forecast-metrics dt { color: var(--text-3); font-size: var(--fs-1); }
.weather-forecast-metrics dd { margin: 0; color: var(--text-2); font-size: var(--fs-1); font-weight: 600; font-variant-numeric: tabular-nums; }
.weather-forecast-metrics .is-wet dd { color: #285f9a; }
.weather-forecast-source { padding: 9px 20px; border-top: 1px solid var(--border); color: var(--text-3); font-size: var(--fs-1); text-align: right; }
.weather-forecast-source a { color: inherit; text-underline-offset: 2px; }
.weather-forecast-source a:hover { color: var(--text-2); }
.weather-pills {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  min-width: 220px;
  align-content: start;
}
.weather-pill {
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fff;
}
.weather-pill span { display: block; color: var(--text-3); font-size: var(--fs-1); }
.weather-pill b { display: block; margin-top: 4px; font-size: var(--fs-3); font-weight: 600; }
.weather-block { margin-bottom: 22px; min-width: 0; }
.weather-block-head { margin-bottom: 10px; }
.weather-block-head h2 { margin: 0; font-size: var(--fs-2); font-weight: 600; }
.weather-region-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 10px;
}
.weather-region-card,
.weather-advice-card {
  min-width: 0;
  overflow: hidden;
  padding: 14px 14px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
}
.weather-region-card.is-rain {
  border-color: #8fc1df;
  background: linear-gradient(150deg, #e6f4fc 0%, #f6fbfe 68%, #fff 100%);
  box-shadow: inset 0 3px 0 #4296c8;
}
.weather-region-card.is-rain .weather-region-top em.is-primary {
  padding: 2px 7px;
  border-radius: 999px;
  background: #d1ebfa;
  color: #17659a;
  font-weight: 650;
}
.weather-region-card.is-rain .weather-bar i { background: #2f91cb; }
.weather-region-card.is-sunny {
  border-color: #e5c16d;
  background: linear-gradient(150deg, #fff3ce 0%, #fffaf0 68%, #fff 100%);
  box-shadow: inset 0 3px 0 #dfa426;
}
.weather-region-card.is-sunny .weather-region-top em.is-primary { color: #9b5b0b; font-weight: 650; }
.weather-region-card.is-sunny .weather-bar i { background: #dfa426; }
.weather-region-card.is-hot {
  border-color: #e9a483;
  background: linear-gradient(150deg, #ffe8dd 0%, #fff6f1 68%, #fff 100%);
  box-shadow: inset 0 3px 0 #df6a42;
}
.weather-region-card.is-hot .weather-region-top em.is-primary { color: #b84628; font-weight: 650; }
.weather-region-card.is-hot .weather-bar i { background: #df6a42; }
.weather-region-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}
.weather-region-top span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--fs-2);
  font-weight: 600;
}
.weather-region-top em {
  flex: none;
  color: var(--text-3);
  font-size: var(--fs-1);
  font-style: normal;
}
.weather-region-top .weather-region-badges {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  overflow: visible;
  font-size: inherit;
  font-weight: inherit;
  text-overflow: clip;
}
.weather-region-badges em {
  padding: 2px 7px;
  border-radius: 999px;
}
.weather-region-badges .is-rain-note {
  background: #d1ebfa;
  color: #17659a;
  font-weight: 650;
}
.weather-region-badges .is-hot-note {
  background: #ffe2d4;
  color: #b84628;
  font-weight: 650;
}
.weather-region-temp {
  margin: 8px 0 10px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: var(--fs-5);
  font-weight: 650;
  letter-spacing: -0.04em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.weather-kv {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 6px;
}
.weather-kv span {
  min-width: 0;
  color: var(--text-3);
  font-size: var(--fs-1);
}
.weather-kv b {
  display: block;
  overflow: hidden;
  margin-top: 2px;
  color: var(--text);
  font-size: var(--fs-1);
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.weather-bar {
  display: block;
  height: 4px;
  margin-top: 10px;
  overflow: hidden;
  border-radius: 99px;
  background: #ececef;
}
.weather-bar i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: #142b52;
}
.weather-tiles {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(72px, 1fr));
  gap: 8px;
  min-width: 0;
}
.weather-watch-row .weather-tiles { margin: 0; }
.weather-region-card .weather-tiles { margin-top: 10px; }
.weather-tile {
  min-width: 0;
  overflow: hidden;
  padding: 8px 8px 7px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fafafa;
}
.weather-tile em,
.weather-tile b {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.weather-tile em {
  color: var(--text-3);
  font-size: var(--fs-1);
  font-style: normal;
}
.weather-tile b {
  margin-top: 2px;
  font-size: var(--fs-3);
  font-weight: 650;
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
}
.weather-tile small { font-size: var(--fs-1); font-weight: 500; color: var(--text-3); }
.weather-tile .weather-bar { margin-top: 7px; }
.weather-compare {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-bottom: 22px;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
}
.weather-compare > div {
  min-width: 0;
  padding: 14px 16px;
  border-right: 1px solid var(--border);
}
.weather-compare > div:last-child { border-right: none; }
.weather-compare span { display: block; color: var(--text-3); font-size: var(--fs-1); }
.weather-compare b {
  display: block;
  overflow: hidden;
  margin-top: 6px;
  font-size: var(--fs-5);
  font-weight: 650;
  letter-spacing: -0.04em;
  line-height: 1;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.weather-compare small { font-size: var(--fs-2); font-weight: 500; color: var(--text-3); }
.weather-advice {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.weather-advice-card strong { display: block; font-size: var(--fs-2); }
.weather-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.weather-tags span {
  padding: 3px 7px;
  border-radius: 999px;
  background: #f4f4f5;
  color: var(--text-2);
  font-size: var(--fs-1);
}
.weather-source { margin: 8px 0 24px; color: var(--text-3); font-size: var(--fs-1); }
.weather-source summary { cursor: pointer; }
.weather-source pre {
  margin: 10px 0 0;
  padding: 14px 16px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fafafa;
  white-space: pre-wrap;
  font: 12px/1.65 ui-monospace, SFMono-Regular, Menlo, monospace;
  color: var(--text-2);
}
@media (max-width: 1100px) {
  .weather-region-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 800px) {
  .weather-hero { flex-direction: column; padding: 18px; }
  .weather-hero-copy { align-items: flex-start; gap: 14px; }
  .weather-visual-icon.is-hero { width: 64px; height: 64px; border-radius: 20px; }
  .weather-visual-icon.is-hero i { font-size: var(--fs-hero); }
  .weather-hero-temp { font-size: var(--fs-hero); }
  .weather-pills { min-width: 0; }
  .weather-forecast-head { align-items: stretch; flex-direction: column; gap: 12px; padding: 16px; }
  .weather-forecast-summary { min-width: 0; }
  .weather-forecast-source { padding-right: 16px; }
  .weather-watch-row,
  .weather-region-grid,
  .weather-advice,
  .weather-compare { grid-template-columns: 1fr; }
  .weather-compare > div { border-right: 0; border-bottom: 1px solid var(--border); }
  .weather-compare > div:last-child { border-bottom: 0; }
}

/* ---------- 执行进度 · Time & Action ---------- */
.rhythm-viewbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.rhythm-viewbar .tabs { margin: 0; }
.rhythm-scope-note {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-left: 3px solid var(--info);
  border-radius: var(--radius);
  background: var(--info-bg);
}
.rhythm-scope-note strong { flex: 0 0 auto; font-size: var(--fs-1); }
.rhythm-scope-note span { min-width: 0; color: var(--text-2); font-size: var(--fs-1); line-height: 1.45; overflow-wrap: anywhere; }
.rhythm-filter-bar {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr)) minmax(220px, 1.4fr);
  gap: 10px;
  margin: 12px 0;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fafafa;
}
.rhythm-filter-field { display: grid; min-width: 0; gap: 5px; }
.rhythm-filter-field > span { color: var(--text-3); font-size: var(--fs-1); font-weight: 700; }
.rhythm-filter-field select { width: 100%; min-width: 0; }
.rhythm-filter-search { align-self: end; width: 100%; }
.tag.rhythm-st-pending { color: #475569; background: #f1f5f9; border-color: #e2e8f0; }
.tag.rhythm-st-doing { color: var(--info); background: var(--info-bg); border-color: #bfdbfe; }
.tag.rhythm-st-overdue { color: var(--danger); background: var(--danger-bg); border-color: var(--danger-border); }
.tag.rhythm-st-blocked { color: #92400e; background: #fffbeb; border-color: #fde68a; }
.tag.rhythm-st-done { color: var(--success); background: var(--success-bg); border-color: var(--success-border); }
@media (max-width: 1100px) {
  .rhythm-filter-bar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .rhythm-filter-search { grid-column: span 2; }
}
@media (max-width: 800px) {
  .rhythm-viewbar { align-items: stretch; flex-direction: column; }
  .rhythm-viewbar .tabs { width: 100%; }
  .rhythm-scope-note { align-items: flex-start; flex-direction: column; gap: 4px; }
  .rhythm-filter-bar { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rhythm-filter-search { grid-column: 1 / -1; }
}
@media (max-width: 520px) {
  .rhythm-filter-bar { grid-template-columns: 1fr; }
  .rhythm-filter-search { grid-column: auto; }
}
.rhythm-design { margin: 14px 0; padding: 14px 16px; }
.rhythm-gaps { margin: 12px 0 0; padding-left: 18px; color: var(--text-2); }
.rhythm-gaps li { margin: 6px 0; }
.rhythm-gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 12px;
}
.rhythm-gallery-card { display: flex; flex-direction: column; gap: 6px; padding: 14px 16px; }
.rhythm-gallery-card b { font-size: var(--fs-2); }
.rhythm-progress {
  height: 6px;
  margin: 4px 0;
  overflow: hidden;
  border-radius: 999px;
  background: #f4f4f5;
}
.rhythm-progress i {
  display: block;
  height: 100%;
  background: var(--accent);
}
.rhythm-gallery-nodes { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.rhythm-gallery-nodes .tag { cursor: pointer; }
.rhythm-week { display: grid; gap: 12px; }
.rhythm-agenda { padding: 14px 16px; }
.rhythm-agenda.is-priority { border-color: #e4b8ad; box-shadow: inset 3px 0 0 var(--danger); }
.rhythm-agenda-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.rhythm-agenda-head p { margin: 4px 0 0; color: var(--text-3); font-size: var(--fs-1); line-height: 1.5; }
.rhythm-agenda-more { margin-top: 10px; border-top: 1px solid var(--border); }
.rhythm-agenda-more > summary {
  padding: 10px 2px 2px;
  color: var(--accent);
  font-size: var(--fs-1);
  font-weight: 700;
  cursor: pointer;
}
.rhythm-agenda-collapsed { padding: 0; overflow: hidden; }
.rhythm-agenda-collapsed > summary {
  display: flex;
  min-height: 68px;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 16px;
  cursor: pointer;
  list-style: none;
}
.rhythm-agenda-collapsed > summary::-webkit-details-marker { display: none; }
.rhythm-agenda-collapsed > summary span { display: grid; min-width: 0; gap: 4px; }
.rhythm-agenda-collapsed > summary b { color: var(--text); font-size: var(--fs-2); }
.rhythm-agenda-collapsed > summary small { color: var(--text-3); font-size: var(--fs-1); font-weight: 400; line-height: 1.5; }
.rhythm-agenda-collapsed > summary em { flex: none; color: var(--accent); font-size: var(--fs-1); font-style: normal; font-weight: 700; }
.rhythm-agenda-collapsed[open] > summary { border-bottom: 1px solid var(--border); background: #fafafa; }
.rhythm-agenda-collapsed[open] > summary em { display: none; }
.rhythm-agenda-collapsed[open] > summary::after { content: '收起'; color: var(--accent); font-size: var(--fs-1); }
.modal-save-error { margin: 12px 24px; color: var(--danger, #b42318); line-height: 1.5; }
.rhythm-template-fields { border: 0; padding: 0; margin: 0; min-width: 0; }
.rhythm-template-fields section { padding: 12px 0; border-bottom: 1px solid var(--border); }
.rhythm-template-fields label { display: flex; flex-direction: column; gap: 6px; margin: 8px 0; min-width: 0; font-size: var(--fs-1); }
.rhythm-template-fields input,.rhythm-template-fields select,.rhythm-template-fields textarea { width: 100%; box-sizing: border-box; }
.rhythm-agenda-collapsed-body { padding: 6px 16px 14px; }
.rhythm-task {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  margin-top: 8px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: #fff;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.rhythm-task:hover { border-color: var(--border-strong); background: #fafafa; }
.rhythm-style-thumb { flex: none; }
.rhythm-task-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.rhythm-modal-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.rhythm-modal-head .muted { margin: 0; }
.rhythm-task-meta { display: flex; align-items: center; gap: 8px; flex-shrink: 0; color: var(--text-3); font-size: var(--fs-1); }
.rhythm-task-meta small { font-size: var(--fs-1); }
.rhythm-style-board { overflow: hidden; }
.rhythm-style-filters {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
  background: #fafafa;
}
.rhythm-style-filters select { width: auto; min-width: 128px; }
.rhythm-style-filters .muted { margin-left: auto; }
.rhythm-style-table-wrap { overflow: auto; }
.rhythm-style-table { min-width: 1280px; }
.rhythm-style-table th,
.rhythm-style-table td { padding: 8px 10px; vertical-align: middle; }
.rhythm-style-table tbody tr:hover { background: #fafafa; }
.rhythm-product-cell { display: flex; align-items: center; gap: 9px; min-width: 220px; }
.rhythm-product-cell > span { display: grid; min-width: 0; }
.rhythm-product-cell small {
  display: block;
  max-width: 220px;
  margin-top: 2px;
  overflow: hidden;
  color: var(--text-3);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rhythm-product-cell small em { color: #92400e; font-style: normal; }
.rhythm-style-link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  width: fit-content;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.rhythm-style-link:hover strong { color: var(--info); text-decoration: underline; text-underline-offset: 2px; }
.rhythm-grade {
  display: inline-grid;
  place-items: center;
  width: 20px;
  height: 20px;
  border-radius: 5px;
  color: #fff;
  font-size: var(--fs-1);
  line-height: 1;
}
.rhythm-grade-S { background: #0a1f3f; }
.rhythm-grade-A { background: #2563eb; }
.rhythm-grade-B { background: #64748b; }
.rhythm-table-progress {
  width: 72px;
  height: 5px;
  overflow: hidden;
  border-radius: 999px;
  background: #e5e7eb;
}
.rhythm-table-progress i { display: block; height: 100%; border-radius: inherit; background: var(--accent); }
.rhythm-row-actions { display: flex; gap: 5px; }
.rhythm-row-actions a {
  padding: 4px 7px;
  border: 1px solid var(--border);
  border-radius: 5px;
  background: #fff;
  color: var(--text-2);
  font-size: var(--fs-1);
}
.rhythm-row-actions a:hover { border-color: #9eb1cd; color: var(--info); text-decoration: none; }
.rhythm-product-cell .rhythm-style-thumb { position: relative; transition: transform .16s var(--ease), box-shadow .16s var(--ease); }
.rhythm-product-cell .rhythm-style-thumb:hover {
  z-index: 3;
  transform: scale(2.35);
  transform-origin: left center;
  box-shadow: 0 10px 28px rgba(15, 23, 42, .2);
}
.rhythm-product-mask { justify-content: flex-end; padding: 0; }
.rhythm-product-mask .modal {
  display: flex;
  flex-direction: column;
  width: min(500px, 100vw);
  max-width: none;
  height: 100vh;
  max-height: 100vh;
  padding: 20px 22px 0;
  border-width: 0 0 0 1px;
  border-radius: 0;
  animation: rhythmDrawerIn .18s var(--ease);
}
@keyframes rhythmDrawerIn { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: none; } }
.rhythm-product-mask .modal-body { min-height: 0; overflow: auto; }
.rhythm-product-mask .modal-actions {
  position: sticky;
  bottom: 0;
  margin: 0 -22px;
  padding: 14px 22px;
  background: rgba(255, 255, 255, .96);
  backdrop-filter: blur(8px);
}
.rhythm-product-hero {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 12px;
  padding: 13px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fafafa;
}
.rhythm-product-hero .rhythm-style-thumb { width: 64px; height: 64px; border-radius: 9px; }
.rhythm-product-hero strong { display: block; margin-top: 2px; font-size: var(--fs-3); }
.rhythm-product-hero p { margin: 5px 0 0; color: var(--text-3); font-size: var(--fs-1); line-height: 1.55; }
.rhythm-product-kicker { color: var(--info); font-size: var(--fs-1); font-weight: 650; letter-spacing: .03em; }
.rhythm-product-actions { display: flex; flex-wrap: wrap; gap: 7px; margin: 12px 0 14px; }
.rhythm-form-section { padding: 14px 0; border-top: 1px solid var(--border); }
.rhythm-form-section h4 { margin: 0 0 11px; font-size: var(--fs-1); font-weight: 650; color: var(--text); }
.rhythm-production-status { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.rhythm-production-status > div {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 7px;
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
}
.rhythm-production-status span { font-size: var(--fs-1); font-weight: 600; }
.rhythm-production-status select { grid-row: span 2; width: auto; }
.rhythm-production-status small { color: var(--text-3); font-size: var(--fs-1); }
.rhythm-evidence { margin: 4px 0 18px; padding: 10px 12px; border-radius: 8px; background: #f8fafc; color: var(--text-2); font-size: var(--fs-1); }
.rhythm-evidence summary { cursor: pointer; font-weight: 600; }
.rhythm-evidence p { margin: 8px 0 0; }
.rhythm-evidence ul { margin: 8px 0 0; padding-left: 18px; }
.rhythm-new-collaboration { display: grid; grid-column: 1 / -1; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 14px; }
.tabs .tab {
  appearance: none;
  background: transparent;
  border: 0;
  font: inherit;
  cursor: pointer;
}
@media (max-width: 800px) {
  .rhythm-style-filters { align-items: stretch; flex-direction: column; }
  .rhythm-style-filters select { width: 100%; }
  .rhythm-style-filters .muted { margin-left: 0; }
  .rhythm-product-mask .modal { width: 100vw; }
  .rhythm-production-status,
  .rhythm-new-collaboration { grid-template-columns: 1fr; }
  .rhythm-task { flex-direction: column; align-items: flex-start; }
  .rhythm-agenda-collapsed > summary { align-items: flex-start; flex-direction: column; gap: 8px; }
}

/* 新品开发：概念款与正式商品主档分离，页面只呈现协作状态和审计信息。 */
.development-page { width: 100%; min-width: 0; max-width: 1460px; margin: 0 auto; }
.development-kicker { color: var(--info); font-size: var(--fs-1); font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.development-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.development-stats > div {
  padding: 17px 18px; border: 1px solid var(--border); border-radius: 10px; background: #fff;
  box-shadow: 0 1px 2px rgba(15, 23, 42, .03);
}
.development-stats span, .development-stats small { display: block; color: var(--text-3); font-size: var(--fs-1); }
.development-stats strong { display: block; margin: 5px 0 4px; color: var(--text); font-size: var(--fs-5); font-variant-numeric: tabular-nums; }
.development-board { padding: 0; overflow: hidden; }
.development-toolbar { display: grid; grid-template-columns: minmax(220px, 1fr) minmax(220px, 360px) 150px; align-items: end; gap: 12px; padding: 17px 18px; border-bottom: 1px solid var(--border); }
.development-toolbar h2, .development-setup h2, .development-handoff h2 { margin: 3px 0 0; font-size: var(--fs-4); }
.development-toolbar input, .development-toolbar select { width: 100%; }
.development-style-list { display: grid; }
.development-style-row {
  display: grid; grid-template-columns: minmax(160px, 1.05fr) minmax(220px, 1.5fr) minmax(110px, .8fr) 110px 120px 16px;
  align-items: center; gap: 13px; width: 100%; padding: 13px 18px; border: 0; border-bottom: 1px solid var(--border);
  background: #fff; color: var(--text); text-align: left; cursor: pointer;
}
.development-style-row:last-child { border-bottom: 0; }
.development-style-row:hover { background: #f8fafc; }
.development-style-row > span { min-width: 0; }
.development-style-row strong, .development-style-row small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.development-style-row strong { font-size: var(--fs-2); }
.development-style-row small { margin-top: 3px; color: var(--text-3); font-size: var(--fs-1); }
.development-style-code strong { color: var(--info); letter-spacing: .02em; }
.development-stage { display: inline-flex; align-items: center; width: fit-content; padding: 3px 7px; border-radius: 999px; background: #eef2f7; color: var(--text-2); font-size: var(--fs-1); font-weight: 650; }
.development-stage-designing { background: #edf5ff; color: #315f97; }
.development-stage-review, .development-stage-sampling { background: #fff4db; color: #8a5d05; }
.development-stage-approved { background: #e7f7ef; color: #207049; }
.development-stage-dropped, .development-stage-archived { background: #f1f1f1; color: #71717a; }
.development-create-panel { margin-bottom: 16px; }
.development-create-form { display: grid; grid-template-columns: repeat(5, minmax(120px, 1fr)) auto; align-items: end; gap: 12px; }
.development-create-form label, .development-form-card label { display: grid; gap: 5px; color: var(--text-2); font-size: var(--fs-1); }
.development-setup { max-width: 720px; padding: 24px; }
.development-setup p { line-height: 1.65; }
.development-setup code { display: block; padding: 10px 12px; border-radius: 7px; background: #f5f6f7; overflow-wrap: anywhere; }
.development-detail-grid { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 16px; margin-bottom: 16px; }
.development-form-card form { display: grid; grid-template-columns: repeat(4, minmax(130px, 1fr)); gap: 13px 14px; margin-top: 14px; }
.development-form-wide { grid-column: 1 / -1; }
.development-form-card button { width: fit-content; }
.development-handoff { align-self: start; border-top: 3px solid #c5ccd6; }
.development-handoff.is-ready { border-top-color: #2f8f62; }
.development-handoff ul { margin: 14px 0; padding-left: 20px; color: var(--text-2); font-size: var(--fs-1); line-height: 1.8; }
.development-handoff p { font-size: var(--fs-1); line-height: 1.6; }
.development-collab-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.development-review-list, .development-ai-list { display: grid; gap: 8px; margin: 12px 0; }
.development-review-list article { padding: 11px 12px; border: 1px solid var(--border); border-radius: 8px; background: #fafafa; }
.development-review-list article > div { display: flex; align-items: center; gap: 7px; }
.development-review-list time, .development-ai-list time { margin-left: auto; color: var(--text-3); font-size: var(--fs-1); }
.development-review-list p { margin: 8px 0 4px; font-size: var(--fs-1); line-height: 1.55; }
.development-review-list small, .development-ai-list small { color: var(--text-3); font-size: var(--fs-1); }
.development-review-form { display: grid; gap: 8px; margin-top: 12px; }
.development-review-form > div { display: flex; flex-wrap: wrap; gap: 7px; }
.development-ai-list > div { display: flex; align-items: center; gap: 10px; padding: 10px 11px; border: 1px solid var(--border); border-radius: 8px; }
.development-ai-list strong, .development-ai-list small { display: block; }
.development-ai-form { display: grid; grid-template-columns: 1fr 1fr 1.2fr auto; gap: 8px; margin-top: 12px; }

@media (max-width: 980px) {
  .development-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .development-toolbar { grid-template-columns: 1fr 1fr; }
  .development-toolbar > div { grid-column: 1 / -1; }
  .development-style-row { grid-template-columns: minmax(130px, 1fr) minmax(180px, 1.4fr) 110px 16px; }
  .development-style-row > span:nth-child(3), .development-style-row > span:nth-child(4) { display: none; }
  .development-create-form, .development-form-card form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .development-detail-grid, .development-collab-grid { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .development-stats { grid-template-columns: 1fr 1fr; gap: 8px; }
  .development-toolbar { grid-template-columns: 1fr; }
  .development-toolbar > div { grid-column: auto; }
  .development-style-row { grid-template-columns: minmax(105px, .85fr) minmax(140px, 1.4fr) 16px; padding: 12px; }
  .development-style-row > span:nth-child(5) { display: none; }
  .development-create-form, .development-form-card form, .development-ai-form { grid-template-columns: 1fr; }
}
/* ---------- 内容实验台：内容生产 → 发布测试 → 效果 → 判定 → 经营任务 ---------- */
.integrated-studio-experiments-root{min-height:calc(100vh - 154px);background:#f5f7fa}
.content-exp-page{padding:24px;max-width:1680px;margin:0 auto;color:#15233a}
.content-exp-intro{position:relative;overflow:hidden;display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:28px 30px;border:1px solid #d7e0eb;border-radius:18px;background:linear-gradient(118deg,#0b2243 0%,#173a67 64%,#21537c 100%);color:#fff;box-shadow:0 14px 36px rgba(16,39,70,.14)}
.content-exp-intro:after{content:"";position:absolute;right:-55px;top:-90px;width:280px;height:280px;border:1px solid rgba(255,255,255,.13);border-radius:50%;box-shadow:0 0 0 38px rgba(255,255,255,.035),0 0 0 76px rgba(255,255,255,.025)}
.content-exp-eyebrow{display:block;margin-bottom:7px;color:#9dc7ee;font-size: var(--fs-1);letter-spacing:.2em;font-weight:800}
.content-exp-intro h1{margin:0 0 7px;font:700 28px/1.15 Georgia,"Songti SC",serif;letter-spacing:.02em}
.content-exp-intro p{max-width:760px;margin:0;color:#d5e3f2;font-size: var(--fs-2);line-height:1.75}
.content-exp-intro-actions{position:relative;z-index:1;display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.content-exp-intro .btn{border-color:rgba(255,255,255,.33);background:rgba(255,255,255,.1);color:#fff}
.content-exp-intro .btn-primary{background:#fff;color:#102d52;border-color:#fff}
.content-exp-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:16px 0}
.content-exp-summary-card{display:flex;flex-direction:column;min-height:105px;padding:17px 18px;border:1px solid #dfe5ed;border-radius:14px;background:#fff;box-shadow:0 5px 18px rgba(22,41,66,.04)}
.content-exp-summary-card span{color:#657188;font-size: var(--fs-1);font-weight:700}
.content-exp-summary-card strong{margin:8px 0 3px;color:#162b4b;font:700 26px/1.1 Georgia,serif}
.content-exp-summary-card small{color:#8a94a6;font-size: var(--fs-1)}
.content-exp-summary-card.navy{border-top:3px solid #274f7d}.content-exp-summary-card.green{border-top:3px solid #2d8063}.content-exp-summary-card.amber{border-top:3px solid #c98b2d}.content-exp-summary-card.red{border-top:3px solid #bb4d4d}
.content-exp-toolbar{display:flex;align-items:end;gap:12px;margin-bottom:12px;padding:12px 14px;border:1px solid #dde4ec;border-radius:12px;background:#fff}
.content-exp-toolbar label{display:flex;flex-direction:column;gap:5px;color:#69758a;font-size: var(--fs-1);font-weight:700}
.content-exp-toolbar select{min-width:145px;padding:8px 30px 8px 10px;border:1px solid #d6dde6;border-radius:8px;background:#fff;color:#21314b}
.content-exp-rule-note{margin-left:auto;padding-bottom:8px;color:#798499;font-size: var(--fs-1)}
.content-exp-workspace{display:grid;grid-template-columns:315px minmax(0,1fr);gap:14px;align-items:start}
.content-exp-list,.content-exp-detail{min-height:580px;border:1px solid #dce3eb;border-radius:15px;background:#fff;box-shadow:0 6px 22px rgba(21,42,70,.045)}
.content-exp-list{position:sticky;top:12px;overflow:hidden}
.content-exp-list-head{display:flex;justify-content:space-between;padding:15px 16px;border-bottom:1px solid #e7ebf0}.content-exp-list-head strong{font-size: var(--fs-2)}.content-exp-list-head span{font-size: var(--fs-1);color:#8490a3}
.content-exp-list-item{display:block;width:100%;padding:15px 16px;border:0;border-bottom:1px solid #edf0f4;background:#fff;text-align:left;color:inherit;cursor:pointer;transition:.16s ease}
.content-exp-list-item:hover{background:#f8fafc}.content-exp-list-item.is-selected{background:#f0f5fa;box-shadow:inset 3px 0 #153c69}
.content-exp-list-top{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:8px;align-items:center}.content-exp-list-top b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size: var(--fs-1)}.content-exp-list-top em{font-style:normal;color:#6e798d;font-size: var(--fs-1)}
.content-exp-status-dot{width:7px;height:7px;border-radius:50%;background:#a6afbc}.content-exp-status-dot.active{background:#2c7c60;box-shadow:0 0 0 3px rgba(44,124,96,.12)}.content-exp-status-dot.observing{background:#c98b2d}.content-exp-status-dot.reviewed{background:#315e91}.content-exp-status-dot.canceled{background:#a8afb8}
.content-exp-list-meta{display:block;margin:8px 0 9px 16px;color:#7b8698;font-size: var(--fs-1)}.content-exp-list-bottom{display:flex;align-items:center;justify-content:space-between;margin-left:16px}.content-exp-list-bottom small{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#8e97a6;font-size: var(--fs-1)}
.content-exp-verdict{padding:3px 7px;border-radius:999px;font-size: var(--fs-1)}.content-exp-verdict.scale{background:#e2f3eb;color:#1e6d50}.content-exp-verdict.iterate{background:#fff1d9;color:#8d5c14}.content-exp-verdict.stop{background:#fbe5e5;color:#9c3737}.content-exp-verdict.insufficient,.content-exp-verdict.pending{background:#eef1f5;color:#647086}
.content-exp-list-empty,.content-exp-empty{display:flex;min-height:270px;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:30px;text-align:center;color:#7c8798}.content-exp-list-empty b,.content-exp-empty b{color:#263650;font-size: var(--fs-2)}.content-exp-list-empty span,.content-exp-empty span{max-width:260px;font-size: var(--fs-1);line-height:1.6}.content-exp-list-empty .btn{margin-top:8px}
.content-exp-detail{padding:22px}
.content-exp-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:18px;border-bottom:1px solid #e7ebf0}.content-exp-detail-head h2{margin:5px 0 5px;font:700 23px/1.2 Georgia,"Songti SC",serif;color:#142b4e}.content-exp-detail-head p{margin:0;color:#788397;font-size: var(--fs-1)}.content-exp-id{font:600 9px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;color:#8190a5;letter-spacing:.04em}
.content-exp-detail-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.content-exp-status{padding:5px 9px;border-radius:999px;background:#eef1f5;color:#647086;font-size: var(--fs-1);font-weight:750}.content-exp-status.active{background:#e3f3ec;color:#216a4f}.content-exp-status.reviewed{background:#e7eef7;color:#214e7e}.content-exp-status.canceled{background:#f0f1f3;color:#8a919b}
.content-exp-hypothesis{display:grid;grid-template-columns:1.7fr repeat(3,1fr);gap:1px;margin:17px 0;overflow:hidden;border:1px solid #dce3eb;border-radius:12px;background:#dce3eb}.content-exp-hypothesis>div{min-height:82px;padding:14px 15px;background:#f8fafc}.content-exp-hypothesis span{display:block;margin-bottom:7px;color:#7b8798;font-size: var(--fs-1);font-weight:750;letter-spacing:.05em}.content-exp-hypothesis b,.content-exp-hypothesis strong{display:block;color:#20334f;font-size: var(--fs-1);line-height:1.55}.content-exp-hypothesis-main{background:#eef4fa!important}.content-exp-hypothesis-main strong{font-size: var(--fs-2)}
.content-exp-gates{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px;margin-bottom:17px}.content-exp-gates div{padding:11px 12px;border:1px solid #e1e6ed;border-radius:9px}.content-exp-gates span{display:block;margin-bottom:5px;color:#8791a1;font-size: var(--fs-1)}.content-exp-gates strong{display:block;color:#233751;font-size: var(--fs-1);line-height:1.3}
.content-exp-decision{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:16px;align-items:center;margin:18px 0 22px;padding:17px 18px;border:1px solid #dce3eb;border-radius:13px;background:#f8fafc}.content-exp-decision.scale{border-color:#b8dcca;background:#f1faf5}.content-exp-decision.iterate{border-color:#ead29f;background:#fffaf0}.content-exp-decision.stop{border-color:#e7bcbc;background:#fff6f6}.content-exp-decision.insufficient,.content-exp-decision.pending{border-color:#dce3eb;background:#f8fafc}
.content-exp-decision-mark{display:grid;width:58px;height:58px;place-items:center;border-radius:50%;background:#e4e9ef;color:#59677b;font-size: var(--fs-1);font-weight:850}.content-exp-decision.scale .content-exp-decision-mark{background:#d8efe3;color:#176247}.content-exp-decision.iterate .content-exp-decision-mark{background:#fae9c7;color:#845511}.content-exp-decision.stop .content-exp-decision-mark{background:#f6dddd;color:#963838}
.content-exp-decision-copy span{color:#7f8b9d;font-size: var(--fs-1)}.content-exp-decision-copy h2{margin:3px 0 5px;font-size: var(--fs-3)}.content-exp-decision-copy p{margin:0;color:#58667a;font-size: var(--fs-1);line-height:1.55}.content-exp-decision-metric{min-width:105px;text-align:right}.content-exp-decision-metric span,.content-exp-decision-metric small{display:block;color:#7a8799;font-size: var(--fs-1)}.content-exp-decision-metric strong{display:block;margin:3px 0;color:#1b3558;font:700 21px/1.1 Georgia,serif}
.content-exp-section-head{display:flex;align-items:end;justify-content:space-between;margin:20px 0 10px}.content-exp-section-head h2{margin:0 0 4px;font-size: var(--fs-3)}.content-exp-section-head p{margin:0;color:#7d8899;font-size: var(--fs-1)}
.content-exp-variants{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.content-exp-variant{position:relative;padding:16px;border:1px solid #dfe5ec;border-radius:13px;background:#fff}.content-exp-variant-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px}.content-exp-variant-label{display:grid;width:34px;height:34px;place-items:center;border-radius:10px;background:#16365f;color:#fff;font:700 16px/1 Georgia,serif}.content-exp-variant-head h3{margin:0 0 3px;font-size: var(--fs-1)}.content-exp-variant-head p{margin:0;color:#8993a2;font-size: var(--fs-1)}.content-exp-asset-link{margin-top:10px}.content-exp-asset-link a{color:#285b8e;font-size: var(--fs-1)}.content-exp-copy{min-height:48px;margin:11px 0;padding:10px 11px;border-radius:8px;background:#f7f9fb}.content-exp-copy b,.content-exp-copy span{font-size: var(--fs-1);color:#35455e}.content-exp-copy p{margin:4px 0 0;color:#748095;font-size: var(--fs-1);line-height:1.5}
.content-exp-sources{display:flex;gap:5px;min-height:23px;flex-wrap:wrap}.content-exp-source-chip{padding:4px 7px;border-radius:999px;background:#eaf1f8;color:#315978;font-size: var(--fs-1)}.content-exp-source-chip.provisional{background:#fff1d9;color:#8b601d}.content-exp-source-missing{font-size: var(--fs-1);color:#a06d27}
.content-exp-funnel{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0}.content-exp-funnel div{min-width:0;padding:8px;border:1px solid #e6eaf0;border-radius:7px}.content-exp-funnel span{display:block;color:#8a94a3;font-size: var(--fs-1)}.content-exp-funnel strong{display:block;margin-top:3px;overflow:hidden;text-overflow:ellipsis;color:#263b58;font-size: var(--fs-1)}
.content-exp-variant-result{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;align-items:center;padding-top:10px;border-top:1px dashed #dfe4ea}.content-exp-variant-result span{color:#718095;font-size: var(--fs-1)}.content-exp-variant-result strong{color:#173d69;font:700 17px/1 Georgia,serif}.content-exp-variant-result small{grid-column:1/-1;color:#8a94a3;font-size: var(--fs-1)}.content-exp-variant-actions{display:flex;justify-content:flex-end;margin-top:9px}
.content-exp-audit{margin-top:18px;border:1px solid #e1e6ec;border-radius:10px;background:#fafbfc}.content-exp-audit summary{padding:12px 14px;cursor:pointer;color:#516076;font-size: var(--fs-1);font-weight:700}.content-exp-audit-body{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:0 14px 14px}.content-exp-audit-body h3{font-size: var(--fs-1)}.content-exp-audit-body p{display:flex;flex-direction:column;margin:0;padding:7px 0;border-bottom:1px solid #edf0f3;font-size: var(--fs-1)}.content-exp-audit-body p span{margin-top:3px;color:#7f8998;line-height:1.45}
.content-exp-modal-lead{margin:-2px 0 14px;padding:10px 12px;border-left:3px solid #244f7d;background:#f1f5f9;color:#566579;font-size: var(--fs-1);line-height:1.6}.content-exp-form{min-width:min(720px,78vw)}.content-exp-snapshot-form{min-width:min(650px,78vw)}
@media(max-width:1200px){.content-exp-summary{grid-template-columns:repeat(3,1fr)}.content-exp-workspace{grid-template-columns:275px minmax(0,1fr)}.content-exp-hypothesis{grid-template-columns:1fr 1fr}.content-exp-gates{grid-template-columns:repeat(3,1fr)}.content-exp-decision{grid-template-columns:auto minmax(0,1fr) auto}.content-exp-decision>.btn{grid-column:2/-1;justify-self:end}}
@media(max-width:820px){.content-exp-page{padding:14px}.content-exp-intro{align-items:flex-start;flex-direction:column;padding:22px}.content-exp-intro-actions{justify-content:flex-start}.content-exp-summary{grid-template-columns:repeat(2,1fr)}.content-exp-toolbar{align-items:stretch;flex-direction:column}.content-exp-rule-note{margin:0}.content-exp-workspace{display:block}.content-exp-list{position:static;min-height:0;margin-bottom:12px;max-height:360px;overflow:auto}.content-exp-detail{padding:16px}.content-exp-detail-head{flex-direction:column}.content-exp-detail-actions{justify-content:flex-start}.content-exp-hypothesis,.content-exp-variants{grid-template-columns:1fr}.content-exp-gates{grid-template-columns:repeat(2,1fr)}.content-exp-decision{grid-template-columns:auto 1fr}.content-exp-decision-metric{grid-column:2;text-align:left}.content-exp-decision>.btn{grid-column:1/-1}.content-exp-audit-body{grid-template-columns:1fr}.content-exp-form,.content-exp-snapshot-form{min-width:0}.integrated-studio-experiments-root{min-height:0}}
/* Replan ledger: quiet by default, dates compared only when reviewing. */
.rhythm-plan-ledger { margin-bottom: var(--space-4,16px); }
.rhythm-plan-ledger > summary { display:flex; gap:12px; flex-wrap:wrap; cursor:pointer; }
.rhythm-plan-ledger > summary span { color:var(--text-2); font-size: var(--fs-1); }
.rhythm-plan-list { list-style:none; padding:0; margin:12px 0; }
.rhythm-plan-list li { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 0; border-bottom:1px solid var(--border); }
.rhythm-plan-list li > div { min-width:0; overflow-wrap:anywhere; }
.rhythm-plan-list small { display:block; margin-top:4px; color:var(--text-2); }
.rhythm-plan-list button { flex-shrink:0; }
.merch-config-secondary > summary { display:flex; flex-wrap:wrap; gap:12px; cursor:pointer; }
.merch-config-secondary > summary span { color:var(--text-2); font-size: var(--fs-1); }
#rhythm-plan-review .table-wrap { max-width:100%; overflow:auto; margin:16px 0; }
#rhythm-plan-review td { min-width:125px; }

/* ── 商品档案：表格 / 画册 双视图（飞书多维表格那种切换） ──────────────
   表格适合核对字段，画册适合「用图认款」——两种场景都要，所以做成切换而不是二选一。 */
.catalog-view-switch {
  display: inline-flex;
  gap: 2px;
  margin: 0 0 10px;
  padding: 2px;
  background: #f1f3f6;
  border-radius: 8px;
}
.catalog-view-btn {
  padding: 5px 14px;
  font-size: var(--fs-2);
  line-height: 1.4;
  color: #4b5563;
  background: transparent;
  border: 0;
  border-radius: 6px;
  cursor: pointer;
}
.catalog-view-btn:hover { color: #111827; }
.catalog-view-btn.is-active {
  color: #111827;
  font-weight: 600;
  background: #fff;
  box-shadow: 0 1px 2px rgba(16, 24, 40, .08);
}

/* 画册网格：auto-fill + 最小 168px，一屏尽量多放，同时保证款号可读 */
.catalog-gallery {
  display: grid;
  gap: 12px;
  padding: 12px;
  grid-template-columns: repeat(auto-fill, minmax(168px, 1fr));
}
.catalog-gallery-card {
  display: grid;
  gap: 8px;
  align-content: start;
  padding: 10px;
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  cursor: pointer;
  transition: border-color .12s ease, box-shadow .12s ease;
}
.catalog-gallery-card:hover { border-color: #c7d2e0; box-shadow: 0 2px 8px rgba(16, 24, 40, .07); }
.catalog-gallery-card:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; }
.catalog-gallery-thumb {
  display: grid;
  place-items: center;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: #f4f4f5;
  border-radius: 8px;
}
/* 图是混比例的（天猫方图 + 共享盘竖版）；方底座 + contain 才不裁件 */
.catalog-gallery-thumb img { width: 100%; height: 100%; object-fit: contain; }
.catalog-gallery-body { display: grid; gap: 4px; min-width: 0; }
.catalog-gallery-code { font-size: var(--fs-2); letter-spacing: .01em; }
.catalog-gallery-name {
  margin: 0;
  font-size: var(--fs-1);
  color: #4b5563;
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.catalog-gallery-meta { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; font-size: var(--fs-1); }
.catalog-gallery-period { color: #4b5563; }
.catalog-gallery-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  font-size: var(--fs-1);
  color: #6b7280;
  border-top: 1px solid #f1f3f6;
  padding-top: 6px;
}
.catalog-gallery-stats .is-empty { color: #b45309; }
