/**
 * input: _shared/tokens.css, _shared/components.css
 * output: filter-first-home 原型样式——1:1 复刻 qlai_v4 真实外壳（WindowChrome + AppSidebar + ContentArea）+ 筛选器行式布局 + 下拉看板 + 持续滚动 + 弹窗
 * pos: 本原型私有样式
 *
 * 对照源：
 *   src/renderer/components/sidebar/app-sidebar.scss
 *   src/renderer/components/workspace/window-chrome.scss
 *   src/renderer/components/workspace/workspace-tab-bar.scss
 *   src/renderer/components/filter/FilterPanel.vue / FilterGroup.vue / FilterRowInline.vue / FilterRowTags.vue / FilterSearchDuo.vue
 *   src/renderer/components/result/CartSubmitSuccessDialog.vue
 */

:root {
  /* 星图尺寸 token 复刻（来自 variables.scss） */
  --xt-group-width: 120px;
  --xt-group-padding: 24px 28px;
  --xt-row-title-width: 80px;
  --xt-item-height: 28px;
  --xt-item-padding: 0 12px;
  --xt-item-radius: 6px;
  --xt-item-font: 14px;
  --xt-title-font: 13px;

  /* 分区色别名 → 全部引 _shared/tokens.css 的 --ql-xt-* / --ql-ours-* */
  --xt-accent: var(--ql-xt-accent);
  --xt-text: var(--ql-xt-text);
  --xt-tint: var(--ql-xt-bg-subtle);
  --xt-tint-strong: var(--ql-xt-bg-strong);
  --xt-content-tint: var(--ql-xt-content-tint);
  --xt-border: var(--ql-xt-border);

  --ours-accent: var(--ql-ours-accent);
  --ours-text: var(--ql-ours-text);
  --ours-tint: var(--ql-ours-bg-subtle);
  --ours-tint-strong: var(--ql-ours-bg-strong);
  --ours-content-tint: var(--ql-ours-content-tint);
  --ours-border: var(--ql-ours-border);
}

body { margin: 0; font-family: var(--ql-font-family); font-variant-numeric: tabular-nums; background: var(--ql-app-bg); color: var(--ql-text); overflow: hidden; }

/* ============ 原型外框：左 ctrl + 右真实应用壳 ============ */
.proto-shell { display: grid; grid-template-columns: 300px 1fr; height: 100vh; }

/* ============ 左侧控制面板 ============ */
.ctrl {
  background: var(--ql-surface);
  border-right: 1px solid var(--ql-border-light);
  padding: var(--ql-space-lg);
  overflow-y: auto;
  display: flex; flex-direction: column; gap: var(--ql-space-lg);
  height: 100vh;
}
.ctrl__header { display: flex; flex-direction: column; gap: 4px; padding-bottom: var(--ql-space-md); border-bottom: 1px solid var(--ql-border-light); }
.ctrl__title { font-size: 17px; font-weight: 700; letter-spacing: -0.01em; }
.ctrl__sub { font-size: 12px; color: var(--ql-text-muted); }
.ctrl__prd-link {
  display: inline-flex; align-items: center; gap: 4px;
  margin-top: 8px;
  padding: 6px 12px;
  background: var(--ql-ours-bg-subtle);
  color: var(--ql-action);
  border: 1px solid var(--ql-ours-border);
  border-radius: var(--ql-radius-pill);
  font-size: 12px; font-weight: 600;
  text-decoration: none;
  transition: var(--ql-transition);
  width: fit-content;
}
.ctrl__prd-link:hover { background: var(--ql-action); color: var(--ql-text-inverse); border-color: var(--ql-action); }
.ctrl__group-title { font-size: 11px; font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase; color: var(--ql-text-muted); margin-bottom: var(--ql-space-sm); }
.ctrl__guide { padding: 14px; background: var(--ql-surface-alt); border-radius: var(--ql-radius-sm); border: 1px solid var(--ql-border-light); }
.ctrl__guide--pale { background: transparent; border-style: dashed; }
.guide-rule, .guide-list { margin: 0; padding-left: 18px; font-size: 12.5px; line-height: 1.65; color: var(--ql-text-secondary); }
.guide-rule li, .guide-list li { margin-bottom: 4px; }
.guide-rule li::marker, .guide-list li::marker { color: var(--ql-action); }
.ctrl__options { display: flex; flex-direction: column; gap: 8px; }
.ctrl__radio { position: relative; display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border-radius: var(--ql-radius-sm); border: 1.5px solid var(--ql-border-light); background: var(--ql-surface); cursor: pointer; transition: var(--ql-transition-fast); }
.ctrl__radio:hover { border-color: var(--ql-action); background: var(--ql-surface-hover); }
.ctrl__radio[data-active="true"] { border-color: var(--ql-action); background: var(--ql-ours-bg-subtle); box-shadow: var(--ql-pill-shadow-subtle); }
.ctrl__radio input { position: absolute; opacity: 0; pointer-events: none; }
.ctrl__dot { width: 14px; height: 14px; border-radius: 50%; border: 1.5px solid var(--ql-border); flex-shrink: 0; margin-top: 2px; position: relative; }
.ctrl__radio[data-active="true"] .ctrl__dot { border-color: var(--ql-action); background: var(--ql-action); }
.ctrl__radio[data-active="true"] .ctrl__dot::after { content: ''; position: absolute; inset: 3px; border-radius: 50%; background: var(--ql-surface); }
.ctrl__radio-text { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.ctrl__radio-title { font-size: 13px; font-weight: 600; color: var(--ql-text); }
.ctrl__radio-desc { font-size: 11.5px; color: var(--ql-text-muted); line-height: 1.5; }
.ctrl__foot { margin-top: auto; display: flex; flex-direction: column; gap: 4px; padding-top: var(--ql-space-md); border-top: 1px solid var(--ql-border-light); font-size: 11px; color: var(--ql-text-muted); }
.ctrl__foot-item { display: flex; justify-content: space-between; }

/* 滚动演示按钮 */
.ctrl__scroll-demo { display: flex; flex-direction: column; gap: 8px; }
.ctrl__scroll-btns { display: flex; flex-direction: column; gap: 6px; }
.scroll-ctrl-btn {
  position: relative;
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
  padding: 8px 10px 8px 28px;
  border: 1.5px solid var(--ql-border-light);
  border-radius: var(--ql-radius-sm);
  background: var(--ql-surface);
  cursor: pointer;
  transition: var(--ql-transition-fast);
  text-align: left;
}
.scroll-ctrl-btn::before {
  content: '';
  position: absolute; left: 10px; top: 50%; transform: translateY(-50%);
  width: 10px; height: 10px;
  border: 1.5px solid var(--ql-border);
  border-radius: 50%;
  background: transparent;
}
.scroll-ctrl-btn[data-active="true"] {
  border-color: var(--ql-action);
  background: var(--ql-ours-bg-subtle);
}
.scroll-ctrl-btn[data-active="true"]::before {
  border-color: var(--ql-action);
  background: var(--ql-action);
  box-shadow: inset 0 0 0 2px var(--ql-surface);
}
.scroll-ctrl-btn:hover:not([data-active="true"]) { border-color: var(--ql-action); }
.scroll-ctrl-btn__label { font-size: 12.5px; font-weight: 600; color: var(--ql-text); }
.scroll-ctrl-btn__desc { font-size: 11px; color: var(--ql-text-muted); }

.ctrl__note {
  padding: 10px 12px;
  background: var(--ql-ours-bg-subtle);
  border: 1px dashed var(--ours-border);
  border-radius: var(--ql-radius-xs);
  font-size: 11.5px; color: var(--ql-text-secondary); line-height: 1.5;
}
.ctrl__note strong { color: var(--ours-accent); font-weight: 700; }

/* ============ 右侧真实应用壳（1:1 复刻 qlai_v4 主界面） ============ */
.app-stage {
  background: var(--ql-app-bg);
  position: relative;
  overflow: hidden;
  height: 100vh;
}

.main-view {
  position: absolute;
  inset: 20px;
  background: var(--ql-app-bg);
  border-radius: 10px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.18), 0 2px 8px rgba(0, 0, 0, 0.08);
  overflow: hidden;
}

/* ==== WindowChrome（window-chrome.scss 复刻） ==== */
.window-chrome {
  position: absolute; inset: 0 0 auto 0;
  height: 40px;
  z-index: var(--z-bar);
  background: transparent;
}
.window-chrome__pinned {
  position: absolute; top: 0; left: 0;
  height: 100%;
  display: flex; align-items: center; gap: 12px;
  padding: 0 12px;
  z-index: var(--z-chrome-pinned);
}
.mac-traffic { display: flex; gap: 8px; align-items: center; }
.mac-traffic__light { width: 12px; height: 12px; border-radius: 50%; box-shadow: inset 0 0 0 0.5px rgba(0,0,0,0.15); }
.mac-traffic__light--close { background: #FF5F57; }
.mac-traffic__light--min { background: #FEBC2E; }
.mac-traffic__light--max { background: #28C840; }
.mac-back { width: 24px; height: 24px; border: 0; background: transparent; border-radius: var(--ql-radius-xs); color: var(--ql-text-secondary); cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0; }
.mac-back:hover { background: var(--ql-surface-hover); color: var(--ql-text); }
.mac-back svg { width: 16px; height: 16px; }

.window-chrome__tab-region {
  position: absolute; top: 0;
  left: 268px; right: 0;
  height: 100%;
  display: flex; align-items: center;
  padding: 0 16px;
}
.window-chrome__tab-shell { display: flex; align-items: stretch; min-width: 0; height: 100%; width: 100%; max-width: min(100%, 980px); }
.ws-tab-bar--chrome { display: flex; align-items: center; flex: 1; min-width: 0; height: 100%; background: transparent; padding: 0; }
.ws-tab-bar--chrome .ws-tabs-scroll { display: flex; align-items: center; flex: 1; min-width: 0; gap: 4px; padding: 7px 4px; overflow: hidden; }
.ws-tab {
  display: flex; align-items: center; gap: 4px;
  height: 28px; padding: 0 10px;
  flex: 1 1 0; min-width: 60px; max-width: 180px;
  border-radius: 12px;
  color: var(--ql-text-muted);
  background: transparent;
  font-size: 12.5px;
  overflow: hidden; white-space: nowrap; cursor: pointer;
  transition: all 0.2s cubic-bezier(0.2, 0, 0, 1);
}
.ws-tab:hover { background: color-mix(in srgb, var(--ql-surface) 68%, transparent); color: var(--ql-text-secondary); }
.ws-tab.active { color: var(--ql-text); font-weight: 500; background: color-mix(in srgb, var(--ql-surface) 88%, transparent); box-shadow: 0 1px 2px rgba(15,23,42,0.06), inset 0 0 0 1px rgba(255,255,255,0.46); }
.ws-tab-icon { flex-shrink: 0; width: 14px; height: 14px; }
.ws-tab-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.ws-tab-badge { min-width: 16px; height: 16px; padding: 0 4px; border-radius: 4px; font-size: 9px; font-weight: 700; flex-shrink: 0; background: rgba(0,0,0,0.05); color: var(--ql-text-muted); display: inline-flex; align-items: center; justify-content: center; }

/* ==== Sidebar（app-sidebar.scss 复刻） ==== */
.sidebar {
  position: absolute;
  top: 6px; left: 6px; bottom: 6px;
  z-index: var(--z-sticky);
  display: flex; flex-direction: column;
  width: 256px;
  background: var(--ql-glass-bg);
  backdrop-filter: var(--ql-glass-blur);
  -webkit-backdrop-filter: var(--ql-glass-blur);
  border: 1px solid rgba(0,0,0,0.06);
  border-radius: var(--ql-radius-surface);
  overflow: hidden;
}
.sidebar-drag-spacer { height: 34px; flex-shrink: 0; }
.sidebar-logo {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px;
  padding: 8px 14px 20px 20px;
  flex-shrink: 0;
}
.logo-brand { font-size: 20px; font-weight: 800; color: var(--ql-primary); letter-spacing: -0.5px; }

.sidebar-tools { margin: 0 14px; padding-bottom: 20px; display: flex; flex-direction: column; gap: 10px; flex-shrink: 0; }
.search-bar {
  height: 36px; display: flex; align-items: center; gap: 8px;
  padding: 0 14px;
  border-radius: var(--ql-radius-pill);
  background: transparent;
  box-shadow: 0 0 0 1px var(--ql-border-light) inset;
  font-size: 12.5px;
  color: var(--ql-text-muted);
}
.new-task-entry {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px;
  background: var(--ql-surface);
  color: var(--ql-text);
  border: 1px solid var(--ql-border-light);
  border-radius: var(--ql-radius-control);
  cursor: pointer;
  font-weight: 600; font-size: 13.5px;
}
.new-task-entry:hover { border-color: var(--ql-border); }
.new-task-entry svg { color: var(--ql-text-muted); }
.new-task-entry:hover svg { color: var(--ql-action); }

.section-header { display: flex; align-items: center; gap: 8px; padding: 0 20px 10px; flex-shrink: 0; }
.section-label { font-size: 12px; font-weight: 600; color: var(--ql-text-secondary); letter-spacing: 0.02em; }
.section-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 16px; height: 16px; padding: 0 5px;
  border-radius: var(--ql-radius-pill);
  font-size: 10px; font-weight: 700;
  background: var(--ql-primary); color: var(--ql-text-inverse);
}

.task-section { flex: 1; overflow-y: auto; padding: 0 10px 10px; display: flex; flex-direction: column; gap: 2px; }

/* 任务卡（当前任务区） */
.task-card {
  padding: 10px 12px;
  border-radius: var(--ql-radius-sm);
  background: var(--ql-surface);
  border: 1px solid var(--ql-border-light);
  cursor: pointer;
  transition: var(--ql-transition-fast);
  margin-bottom: 4px;
}
.task-card--active { border-left: 3px solid var(--ql-primary); padding-left: 10px; box-shadow: var(--ql-shadow-xs); }
.task-card__row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.task-card__name { font-size: 13px; font-weight: 600; color: var(--ql-text); }
.task-card__close { width: 20px; height: 20px; border: 0; background: transparent; color: var(--ql-text-tertiary); border-radius: 50%; cursor: pointer; font-size: 16px; line-height: 1; display: flex; align-items: center; justify-content: center; }
.task-card__close:hover { background: var(--ql-surface-hover); color: var(--ql-text); }
.task-card__sub { font-size: 11px; color: var(--ql-text-muted); margin-top: 2px; }

/* 项目 item (> chev 前缀) */
.task-item {
  display: flex; align-items: center; gap: 4px;
  padding: 7px 10px;
  border-radius: var(--ql-radius-xs);
  font-size: 12.5px;
  color: var(--ql-text-secondary);
  cursor: pointer;
  transition: var(--ql-transition-fast);
}
.task-item:hover { background: var(--ql-surface-hover); color: var(--ql-text); }
.task-item__chev { color: var(--ql-text-tertiary); font-size: 14px; line-height: 1; width: 12px; flex-shrink: 0; }
.task-item__label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-variant-numeric: tabular-nums; }

.sidebar-footer { padding: 10px 14px; flex-shrink: 0; margin-top: auto; border-top: 1px solid var(--ql-border-light); }
.left-footer { display: flex; align-items: center; gap: 8px; }
.footer-user { display: flex; align-items: center; gap: 10px; padding: 4px 6px; border-radius: var(--ql-radius-xs); cursor: pointer; flex: 1; min-width: 0; border: none; background: transparent; }
.footer-user:hover { background: var(--ql-surface-hover); }
.user-avatar { width: 28px; height: 28px; border-radius: 50%; overflow: hidden; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.user-avatar-default {
  background: linear-gradient(135deg, var(--ql-avatar-pink-from) 0%, var(--ql-avatar-pink-to) 100%);
  color: var(--ql-text-inverse); font-size: 12px; font-weight: 700;
}
.user-info { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.user-name { font-size: 13px; font-weight: 500; color: var(--ql-text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ==== ContentArea ==== */
.content-area {
  position: absolute;
  top: 40px;
  left: 268px;   /* sidebar 256 + inset 6 + 余 6 */
  right: 6px;
  bottom: 6px;
  overflow-y: auto;
  background: var(--ql-surface);
  border-radius: var(--ql-radius-sm);
  padding: 20px 28px 32px;
}

/* view 状态机 */
.view { display: none; }
.main-view[data-state="home"] .view-home { display: block; }
.main-view[data-state="results"] .view-results,
.main-view[data-state="edit"] .view-results,
.main-view[data-state="cart"] .view-results { display: block; }

/* ============ 极简 hero：顶部大留白 + tagline + 大字标题 + 低调 lede ============ */
.home-hero {
  padding: 32px 0 24px;
  display: flex; flex-direction: column; gap: 6px;
}
.home-hero__tagline {
  font-size: 13px;
  font-weight: 600;
  color: var(--ql-primary);
  letter-spacing: 0.04em;
}
.home-hero__title {
  margin: 0;
  line-height: 1.3;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 10px;
}
.home-hero__title-q {
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -0.02em;
  color: var(--ql-text);
}
.home-hero__title-brief {
  font-size: 24px;
  font-weight: 400;
  color: var(--ql-text-secondary);
  letter-spacing: -0.01em;
  min-height: 1.3em;
  position: relative;
}
.home-hero__title-brief strong {
  color: var(--ql-ours-accent);
  font-weight: 700;
}
/* 打字机光标 */
.home-hero__title-brief .typing-caret {
  display: inline-block;
  width: 1.5px; height: 0.95em;
  background: var(--ql-primary);
  vertical-align: text-bottom;
  margin-left: 1px;
  animation: hero-caret-blink 0.85s step-end infinite;
}
@keyframes hero-caret-blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

/* 顶部 brief 记录区（项目索引 + 需求 brief / 项目备注） */
.brief-row { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }

/* home 态：brief-need 有内容时才悬浮贴顶 */
.view-home > .brief-need { margin-bottom: 12px; }
.view-home > .brief-need[data-has-content="true"] {
  position: sticky;
  top: 6px;
  z-index: 4;
}

/* 对外版：V4 精致双胶囊（52px 高 + berry 渐变 + hover lift + focus glow） */
.main-view[data-edition="external"] .brief-row,
.main-view[data-edition="external"] .filter-dashboard__brief {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 12px;
  align-items: stretch;
  min-width: 0;
}

/* 左胶囊：新建项目 · 主 pill 占主宽度 · berry 渐变 */
.main-view[data-edition="external"] .brief-row > .brief-project,
.main-view[data-edition="external"] .filter-dashboard__brief > .brief-project {
  flex: 1 1 auto;
  min-width: 0;
  background: linear-gradient(135deg, var(--ql-ours-bg-subtle), #fff 70%);
  border-color: var(--ql-ours-border);
}

/* 对外版：brief-need 默认折叠（在 view-home/filter-dashboard 直接子级） */
.main-view[data-edition="external"] .brief-need { display: none; }
.main-view[data-edition="external"] .brief-need[data-expanded="true"] { display: flex; }

/* 展开按钮（对内版永远不显示） */
.brief-expand-btn,
.brief-collapse-btn { display: none; }

.main-view[data-edition="external"] .brief-row .brief-expand-btn,
.main-view[data-edition="external"] .filter-dashboard__brief .brief-expand-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0 20px;
  height: 52px;
  border-radius: 9999px;
  border: 1.5px dashed var(--ql-ours-border);
  background: transparent;
  color: var(--ql-ours-accent);
  font-size: 13px;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  transition: all 0.2s;
  white-space: nowrap;
  flex-shrink: 0;
}
.main-view[data-edition="external"] .brief-expand-btn svg {
  width: 14px; height: 14px;
  color: currentColor;
}
.main-view[data-edition="external"] .brief-expand-btn__arrow {
  width: 12px !important;
  height: 12px !important;
  opacity: 0.6;
  margin-left: -2px;
}
.main-view[data-edition="external"] .brief-expand-btn:hover {
  border-style: solid;
  background: var(--ql-ours-bg-subtle);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(107,58,93,0.08);
}

/* 展开后按钮藏起 */
.main-view[data-edition="external"] .brief-row[data-expanded="true"] .brief-expand-btn,
.main-view[data-edition="external"] .filter-dashboard__brief[data-expanded="true"] .brief-expand-btn {
  display: none;
}

/* 收起按钮（× 小圆钮，只在对外版展开态生效） */
.main-view[data-edition="external"] .brief-need .brief-collapse-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px; height: 24px;
  border: 0;
  background: transparent;
  color: var(--ql-text-muted);
  font-size: 18px;
  line-height: 1;
  padding: 0;
  border-radius: 9999px;
  font-family: inherit;
  cursor: pointer;
  flex-shrink: 0;
  transition: all 0.15s;
}
.main-view[data-edition="external"] .brief-need .brief-collapse-btn:hover {
  background: var(--ql-surface-alt);
  color: var(--ql-text);
}

/* hover lift */
.main-view[data-edition="external"] .brief-project:hover,
.main-view[data-edition="external"] .brief-need:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(107, 58, 93, 0.08);
}

/* focus glow */
.main-view[data-edition="external"] .brief-project:focus-within,
.main-view[data-edition="external"] .brief-need:focus-within {
  border-color: var(--ql-ours-accent);
  box-shadow: 0 0 0 3px var(--ql-ours-glow), 0 4px 14px rgba(107, 58, 93, 0.1);
  transform: translateY(-1px);
}

/* icon：对内外版都显示，对内版用中性灰 */
.brief-project__icon,
.brief-need__icon {
  display: block;
  width: 16px;
  height: 16px;
  color: var(--ql-text-muted);
  flex-shrink: 0;
}
.main-view[data-edition="external"] .brief-project__icon,
.main-view[data-edition="external"] .brief-need__icon {
  color: var(--ql-ours-accent);
}

/* 下拉 chevron：对内外版都显示（暗示 click 可弹出历史项目列表） */
.brief-project__chevron {
  display: block;
  width: 14px;
  height: 14px;
  color: var(--ql-text-muted);
  flex-shrink: 0;
  transition: color 0.15s, transform 0.15s;
}
.brief-project:hover .brief-project__chevron,
.brief-project:focus-within .brief-project__chevron {
  color: var(--ql-action);
}
.main-view[data-edition="external"] .brief-project:hover .brief-project__chevron,
.main-view[data-edition="external"] .brief-project:focus-within .brief-project__chevron {
  color: var(--ql-ours-accent);
}

/* 基础胶囊（内外版共用）：52px 高 + 9999px 全圆角 */
.brief-project,
.brief-need {
  display: flex; align-items: center; gap: 10px;
  height: 52px;
  padding: 0 20px;
  background: #fff;
  border: 1.5px solid var(--ql-border-light);
  border-radius: 9999px;
  margin: 0;
  box-sizing: border-box;
  transition: all 0.2s;
}
.brief-project:hover,
.brief-need:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.05);
}
.brief-project:focus-within,
.brief-need:focus-within {
  border-color: var(--ql-action);
  box-shadow: 0 0 0 3px var(--ql-ours-glow), 0 4px 14px rgba(107, 58, 93, 0.08);
  transform: translateY(-1px);
}
.brief-project__label,
.brief-need__label {
  font-size: 13px; font-weight: 600;
  color: var(--ql-text);
  flex-shrink: 0;
  letter-spacing: 0.02em;
}
.brief-project__input {
  flex: 1;
  min-width: 0;
  border: 0;
  padding: 0;
  background: transparent;
  font-size: 14px;
  font-family: inherit;
  color: var(--ql-text);
  text-overflow: ellipsis;
  outline: none;
}
.brief-project__input::placeholder { color: var(--ql-text-placeholder); }
.brief-need__label {
  font-size: 13px; font-weight: 600;
  color: var(--ql-text);
  flex-shrink: 0;
  letter-spacing: 0.02em;
}
.brief-need__input {
  flex: 1;
  min-width: 0;
  border: 0;
  padding: 2px 0;
  background: transparent;
  font-size: 14px;
  color: var(--ql-text);
  text-overflow: ellipsis;
  outline: none;
}
.brief-need__input::placeholder { color: var(--ql-text-placeholder); }

/* Filter Action Bar（筛选面板上方）— 左：已选 quick chips，右：重置 + 开始筛选 */
.filter-action-bar {
  display: flex; align-items: center; gap: 16px;
  padding: 12px 0;
  margin-bottom: 4px;
  border-bottom: 1px solid var(--ql-border-light);
}
.filter-action-bar__summary {
  flex: 1;
  display: flex; flex-wrap: wrap; align-items: center; gap: 6px;
  min-height: 28px;
}
.filter-action-bar__actions {
  display: flex; align-items: center; gap: 8px;
  flex-shrink: 0;
}
.filter-action-bar__actions .ql-btn { height: 34px; padding: 0 18px; font-size: 13px; border-radius: var(--ql-radius-sm); }
.filter-action-bar__count {
  margin-left: auto;
  font-size: 11px; color: var(--ql-text-muted);
  padding: 2px 8px;
  border-radius: var(--ql-radius-xs);
  background: var(--ql-surface-alt);
  white-space: nowrap;
}

/* quick chip（action bar 里的 chip）：更小更 compact，无删除按钮 */
.chip--quick { height: 22px; padding: 0 9px; font-size: 11.5px; font-weight: 500; }
.chip--quick:hover { transform: none; box-shadow: none; padding-right: 9px; }
.chip--quick .chip__remove { display: none; }

/* =========== 左侧 ctrl 面板按状态动态显隐 =========== */
.ctrl__scroll-demo--edition,
.ctrl__scroll-demo--ai,
.ctrl__scroll-demo--scroll { display: none; }

/* 找人态（home / edit）：只显示对内/对外版切换 */
.proto-shell[data-state="home"] .ctrl__scroll-demo--edition,
.proto-shell[data-state="edit"] .ctrl__scroll-demo--edition {
  display: block;
}

/* 列表态（results / cta-*）：显示 AI 搜索和滚动加载演示 */
.proto-shell[data-state="results"] .ctrl__scroll-demo--ai,
.proto-shell[data-state="results"] .ctrl__scroll-demo--scroll,
.proto-shell[data-state="cta-submit"] .ctrl__scroll-demo--ai,
.proto-shell[data-state="cta-submit"] .ctrl__scroll-demo--scroll,
.proto-shell[data-state="cta-success"] .ctrl__scroll-demo--ai,
.proto-shell[data-state="cta-success"] .ctrl__scroll-demo--scroll {
  display: block;
}

/* =========== 底部 sticky 大胶囊 action bar（筛选态 CTA） =========== */
.filter-action-bar--sticky { display: none; }
.view-home[data-has-conditions="true"] .filter-action-bar--sticky { display: flex; }
.view-home[data-has-conditions="true"] .filter-action-bar--sticky {
  margin: 20px 0 12px;
  padding: 12px 20px;
  background: #fff;
  border: 1.5px solid var(--ql-border-light);
  border-radius: 9999px;
  box-shadow:
    0 2px 6px rgba(0, 0, 0, 0.04),
    0 16px 44px rgba(107, 58, 93, 0.08);
  gap: 16px;
  transition: box-shadow 0.2s;
}
.filter-action-bar--sticky:hover {
  box-shadow:
    0 4px 10px rgba(0, 0, 0, 0.05),
    0 20px 56px rgba(107, 58, 93, 0.14);
}
.filter-action-bar--sticky .filter-action-bar__count {
  margin-left: 0;
  margin-right: 4px;
  background: var(--ql-ours-bg-subtle);
  color: var(--ql-ours-accent);
  font-weight: 600;
  font-size: 12px;
  padding: 4px 12px;
  border-radius: 9999px;
  order: -1;
  flex-shrink: 0;
}
.filter-action-bar--sticky .filter-action-bar__count strong {
  font-weight: 700;
  font-size: 13px;
  margin: 0 2px;
}
.filter-action-bar--sticky .filter-action-bar__actions .ql-btn {
  height: 40px;
  padding: 0 22px;
  font-size: 13.5px;
  border-radius: 9999px;
}
.filter-action-bar--sticky .ql-btn--primary {
  background: var(--ql-ours-accent);
  color: #fff;
  box-shadow: 0 2px 8px rgba(107, 58, 93, 0.25);
  font-weight: 600;
  letter-spacing: 0.02em;
}
.filter-action-bar--sticky .ql-btn--primary:hover {
  box-shadow: 0 4px 14px rgba(107, 58, 93, 0.35);
  transform: translateY(-1px);
}
.filter-action-bar--sticky .ql-btn--ghost {
  color: var(--ql-text-secondary);
  font-weight: 500;
}

/* ============ FilterPanel（三板块章节式分区） ============ */
.fp {
  max-width: 100%;
  margin: 0;
  background: transparent;
  display: flex;
  flex-direction: column;
  gap: var(--ql-space-xl);
}

/* ---- Filter Section：板块级容器（AI / 星图 / 增强 三档） ---- */
.fs {
  border-radius: var(--ql-radius-panel);
  overflow: hidden;
  transition: var(--ql-transition);
}

.fs-head {
  display: flex;
  align-items: center;
  gap: var(--ql-space-md);
  padding: var(--ql-space-sm) var(--ql-space-xl);
  border-bottom: 1px solid var(--ql-border-light);
}
.fs-num {
  font-family: var(--ql-font-display);
  font-size: var(--ql-font-xl);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -0.03em;
  min-width: 30px;
  font-variant-numeric: tabular-nums;
}
.fs-text {
  display: flex; flex-direction: row; align-items: baseline; flex-wrap: wrap;
  gap: var(--ql-space-sm); flex: 1; min-width: 0;
}
.fs-name { font-size: var(--ql-font-base); font-weight: 700; letter-spacing: 0.01em; color: var(--ql-text); line-height: 1.3; flex-shrink: 0; }
.fs-desc { font-size: var(--ql-font-xs); color: var(--ql-text-muted); letter-spacing: 0.01em; line-height: 1.3; min-width: 0; }
.fs-tag {
  padding: 3px 10px;
  border-radius: var(--ql-radius-xs);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.05em;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.fs-tag--signature {
  background: var(--ours-accent);
  color: var(--ql-text-inverse);
  box-shadow: 0 1px 3px var(--ql-ours-glow);
}
.fs-tag--signature::before {
  content: '✦';
  font-size: 10px;
  line-height: 1;
  opacity: 0.92;
}
.fs-tag--base {
  background: var(--ql-xt-bg-subtle);
  color: var(--ql-xt-text);
  border: 1px solid var(--xt-border);
}

.fs-body { background: var(--ql-surface); }

/* ---- 板块 A：AI 内容找人（招牌，最强视觉） ---- */
.fs--ai {
  background: var(--ql-ours-content-tint);
  border: 1px solid var(--ours-border);
  box-shadow: var(--ql-shadow-card);
}
.fs--ai .fs-num { color: var(--ours-accent); }
.fs--ai .fs-head {
  background: linear-gradient(180deg, var(--ql-ours-bg-subtle) 0%, var(--ql-surface) 100%);
}
.fs--ai:hover { box-shadow: var(--ql-shadow-card-hover); }

/* ---- 板块 B：星图同款（中性白底，克制） ---- */
.fs--xt {
  background: var(--ql-surface);
  border: 1px solid var(--ql-border-light);
  box-shadow: var(--ql-shadow-xs);
}
.fs--xt .fs-num { color: var(--xt-accent); }
.fs--xt .fs-head { background: var(--ql-xt-bg-subtle); }

/* ---- 板块 C：精准筛选增强（独特优势，berry 强调） ---- */
.fs--ours {
  background: var(--ql-ours-content-tint);
  border: 1px solid var(--ours-border);
  box-shadow: var(--ql-shadow-card);
}
.fs--ours .fs-num { color: var(--ours-accent); }
.fs--ours .fs-head {
  background: linear-gradient(180deg, var(--ql-ours-bg-subtle) 0%, var(--ql-surface) 100%);
}
.fs--ours:hover { box-shadow: var(--ql-shadow-card-hover); }

/* ---- 板块内 fg：去掉原来的 3px 左竖条（板块容器已承担分区视觉） ---- */
.fg {
  display: flex; position: relative;
  border-bottom: 1px solid var(--ql-border-light);
  background: var(--ql-surface);
}
.fs-body .fg:last-child { border-bottom: none; }

/* fg-title：左列标签区，只在这里做视觉区分（不蔓延到内容区） */
.fg-title {
  width: var(--xt-group-width); min-width: var(--xt-group-width); flex-shrink: 0;
  padding: var(--xt-group-padding);
  color: var(--ql-text);
  background: var(--ql-surface);
  border-right: 1px solid var(--ql-border-light);
  display: flex; flex-direction: column; justify-content: center; gap: 6px; align-items: flex-start;
}

/* 独家组突出：左列 title 淡 berry 底 + berry 粗字名 */
.fg--ours > .fg-title {
  background: var(--ql-ours-bg-subtle);
}
.fg--ours .fg-title__name {
  color: var(--ql-ours-accent);
  font-weight: 700;
}
/* 星图组保持中性：title 白底 + 黑字（默认即可） */

.fg-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px;
  border-radius: var(--ql-radius-xs);
  font-size: 10px; font-weight: 700;
  letter-spacing: 0.05em;
  border: 1px solid transparent;
}
/* 星图 badge：浅底蓝字（常规视觉，中性） */
.fg-badge--xt {
  background: var(--ql-xt-bg-subtle);
  color: var(--xt-accent);
  border-color: var(--xt-border);
}

/* 独家 badge：实心 berry + 白字（招牌感，最高视觉权重） */
.fg-badge--ours {
  background: var(--ql-ours-accent);
  color: var(--ql-text-inverse);
  border-color: transparent;
  box-shadow: 0 1px 3px var(--ql-ours-glow);
  padding: 3px 10px;
  font-size: 10.5px;
}
.fg-badge--ours::before {
  content: '✦';
  font-size: 10px;
  line-height: 1;
  opacity: 0.9;
  width: auto; height: auto;
  background: transparent;
  border-radius: 0;
  display: inline-block;
  flex-shrink: 0;
}

.fg-title__name { font-size: 14px; font-weight: 600; color: var(--ql-text); white-space: nowrap; letter-spacing: 0.02em; }
.fg-title__hint { display: none; }

.fg-content { flex: 1; min-width: 0; padding: var(--xt-group-padding); position: relative; display: flex; flex-direction: column; gap: var(--ql-space-md); background: var(--ql-surface); }

.fr { display: flex; flex-wrap: wrap; align-items: center; gap: 22px; min-height: var(--xt-item-height); padding-left: calc(var(--xt-row-title-width) + var(--ql-space-sm)); position: relative; }
.fr.fr--no-title { padding-left: 0; }
.fr.fr--focused { animation: row-focus 1.6s ease-out; }
@keyframes row-focus {
  0% { background: var(--ql-ours-bg-strong); box-shadow: 0 0 0 2px var(--ours-border); border-radius: var(--ql-radius-xs); }
  100% { background: transparent; box-shadow: none; }
}
.fr-title { width: var(--xt-row-title-width); flex-shrink: 0; margin-left: calc(-1 * (var(--xt-row-title-width) + var(--ql-space-sm))); font-size: var(--xt-title-font); font-weight: 500; color: var(--ql-text-secondary); line-height: var(--xt-item-height); white-space: nowrap; position: relative; padding-left: var(--ql-space-md); letter-spacing: 0.02em; display: inline-flex; align-items: center; gap: 6px; text-decoration: underline dashed rgba(0,0,0,0.22); text-underline-offset: 3px; text-decoration-thickness: 1px; cursor: help; }
.fr-title:hover { text-decoration-color: var(--ql-primary); color: var(--ql-text); }
/* row 标题竖条：真实前端统一粉色，不按分区变色 */
.fr-title::before { content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 3px; height: 14px; border-radius: 2px; background: var(--ql-primary); }


.fr-divider { display: inline-flex; align-items: center; height: 14px; width: 1px; background: var(--ql-border); margin: 0 var(--ql-space-lg); flex-shrink: 0; opacity: 0.35; }

.fi-all, .fi-tag { display: inline-flex; align-items: center; gap: 2px; min-height: var(--xt-item-height); padding: var(--xt-item-padding); font-size: var(--xt-item-font); color: var(--ql-text-secondary); border-radius: var(--xt-item-radius); border: 1px solid transparent; cursor: pointer; transition: var(--ql-transition-fast); white-space: nowrap; user-select: none; }
.fi-all:hover, .fi-tag:hover { color: var(--ql-primary-400); background: var(--ql-selected-bg); }
.fi-tag.active { color: var(--ql-primary-400); background: var(--ql-selected-bg); border-color: var(--ql-primary-glow); font-weight: 500; }
.fi-all.active { color: var(--ql-text-inverse); background: var(--ql-primary); border-color: var(--ql-primary); font-weight: 500; box-shadow: 0 2px 6px var(--ql-primary-glow); }
.fi-tag .arrow svg { width: 10px; height: 10px; margin-left: 2px; opacity: 0.4; }
.fi-more { display: inline-flex; align-items: center; gap: 2px; height: var(--xt-item-height); padding: var(--xt-item-padding); font-size: var(--xt-item-font); color: var(--ql-text-muted); cursor: pointer; font-weight: 450; }
.fi-more:hover { color: var(--ql-primary-400); }

/* fi-drop：无边框下拉（单值）— 对齐 FilterDropdown.vue */
.fi-drop {
  display: inline-flex; align-items: center; gap: 2px;
  height: var(--xt-item-height); padding: var(--xt-item-padding);
  font-size: var(--xt-item-font); color: var(--ql-text-secondary);
  border-radius: var(--xt-item-radius); cursor: pointer;
  white-space: nowrap; user-select: none; position: relative;
}
.fi-drop:hover { color: var(--ql-primary-400); background: var(--ql-selected-bg); }
.fi-drop.has-value { color: var(--ql-primary-400); background: var(--ql-selected-bg); font-weight: 500; }
.fi-drop.fi-drop-bordered { background: transparent; padding: 0; }
.fi-drop.fi-drop-bordered .fi-drop-label { border-bottom: 1px dashed rgba(0, 0, 0, 0.2); padding-bottom: 1px; }
.fi-drop.fi-drop-bordered:hover .fi-drop-label { border-bottom-color: var(--ql-primary); }
.fi-drop.fi-drop-bordered.has-value .fi-drop-label { border-bottom-color: var(--ql-primary); }
.fi-drop .arrow { display: inline-flex; align-items: center; margin-left: 2px; }
.fi-drop .arrow svg { width: 12px; height: 12px; fill: currentColor; opacity: 0.5; }
.fi-drop:hover .arrow svg,
.fi-drop.has-value .arrow svg { opacity: 0.8; }

/* fi-input / fi-drop-input / fi-drop-range / fi-input-toggle — 对齐 FilterRowInline.scss */
.fi-input, .fi-drop-input, .fi-drop-range, .fi-input-toggle {
  display: inline-flex; align-items: center;
  height: 32px; border: 1px solid var(--ql-border); border-radius: var(--ql-radius-sm);
  background: var(--ql-surface); gap: 0; padding: 0;
  white-space: nowrap; font-size: var(--xt-item-font); margin-right: var(--ql-space-md);
}
.fi-input label,
.fi-drop-input .di-label,
.fi-input-toggle label {
  display: flex; align-items: center; height: 100%; padding: 0 10px;
  background: var(--ql-surface-alt); border-right: 1px solid var(--ql-border-light);
  border-radius: var(--ql-radius-sm) 0 0 var(--ql-radius-sm);
  font-size: var(--ql-font-base); color: var(--ql-text-muted); flex-shrink: 0; font-weight: 450;
}
.fi-input input,
.fi-drop-input .di-input,
.fi-input-toggle .it-input {
  border: none; background: transparent; width: 40px; height: 100%; padding: 0 8px;
  text-align: center; font-size: var(--ql-font-base); outline: none;
}
.fi-drop-input .di-select {
  height: 100%; padding: 0 8px; border: none; background: transparent;
  font-size: var(--ql-font-base); color: var(--ql-text-secondary); cursor: pointer; outline: none;
}
.fi-drop-input .di-sep { padding: 0 6px; font-size: var(--ql-font-sm); color: var(--ql-text-placeholder); }
.fi-drop-input .di-unit { padding-right: var(--ql-space-sm); font-size: var(--ql-font-sm); color: var(--ql-text-placeholder); }
.fi-drop-range .dr-select {
  height: 100%; padding: 0 8px; border: none; border-right: 1px solid var(--ql-border-light);
  background: var(--ql-surface-alt); border-radius: var(--ql-radius-sm) 0 0 var(--ql-radius-sm);
  font-size: var(--ql-font-base); color: var(--ql-text-secondary); cursor: pointer; outline: none;
}
.fi-drop-range .dr-min, .fi-drop-range .dr-max {
  width: 50px; height: 100%; border: none; background: transparent;
  text-align: center; font-size: var(--ql-font-base); outline: none;
}
.fi-drop-range .dr-sep { padding: 0 4px; font-size: var(--ql-font-sm); color: var(--ql-text-placeholder); }
.fi-drop-range .dr-unit { padding-right: var(--ql-space-sm); font-size: var(--ql-font-sm); color: var(--ql-text-placeholder); }
.fi-input-toggle .it-unit { padding-right: var(--ql-space-xs); font-size: var(--ql-font-sm); color: var(--ql-text-placeholder); }
.fi-input-toggle .it-toggle {
  height: calc(100% - 4px); padding: 0 10px; margin: 2px 2px 2px 0;
  border: 1px solid var(--ql-border); border-radius: var(--ql-radius-xs);
  font-size: var(--ql-font-sm); background: var(--ql-surface); color: var(--ql-text-muted);
  cursor: pointer; transition: all var(--ql-motion-fast); white-space: nowrap;
}
.fi-input-toggle .it-toggle:hover { border-color: var(--ql-primary); color: var(--ql-primary); }
.fi-input-toggle .it-toggle.active { background: var(--ql-primary); border-color: var(--ql-primary); color: white; font-weight: 500; }

.fi-check { display: inline-flex; align-items: center; gap: var(--ql-space-sm); height: var(--xt-item-height); padding: 0 8px; font-size: var(--xt-item-font); color: var(--ql-text-secondary); cursor: pointer; }
.fi-check input { width: 16px; height: 16px; accent-color: var(--ql-primary); cursor: pointer; }

/* search-duo */
.search-duo-row { display: flex; gap: var(--ql-space-lg); width: 100%; padding-left: 0; }
.search-duo-row.fr { padding-left: 0; }
.search-duo-item { flex: 1; display: flex; align-items: center; height: 40px; border: 1px solid var(--ql-border); border-radius: var(--ql-radius-control); background: var(--ql-surface); overflow: hidden; transition: border-color var(--ql-motion-fast); }
.search-duo-item:focus-within { border-color: var(--ql-primary); box-shadow: 0 0 0 3px var(--ql-primary-glow); }
.sd-label { display: flex; align-items: center; gap: var(--ql-space-sm); padding: 0 12px; height: 100%; background: var(--ql-surface-alt); border-right: 1px solid var(--ql-border-light); font-size: var(--ql-font-base); font-weight: 450; color: var(--ql-text-muted); white-space: nowrap; flex-shrink: 0; }
.sd-icon.icon-ban { color: var(--ql-error); opacity: 0.6; }
.sd-input { flex: 1; height: 100%; border: none; background: transparent; padding: 0 12px; font-size: var(--ql-font-base); color: var(--ql-text); outline: none; }
.sd-input::placeholder { color: var(--ql-text-placeholder); }

/* portrait：对齐真实 FilterPortrait.vue — crowd-block 卡片 + 下划线 tabs + msm-section */
.portrait-block { width: 100%; background: var(--ql-surface); border: 1px solid var(--ql-primary-bg, var(--ql-ours-border)); border-radius: var(--ql-radius-panel); overflow: hidden; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.03), 0 0 0 1px rgba(0, 0, 0, 0.02); }
.crowd-header { display: flex; align-items: center; gap: var(--ql-space-md); padding: 14px 18px 12px; background: linear-gradient(135deg, var(--ql-ours-bg-subtle) 0%, var(--ql-surface-alt) 50%, var(--ql-surface) 100%); border-bottom: 1px solid var(--ql-primary-bg, var(--ql-ours-border)); }
.crowd-title { font-size: var(--ql-font-base); font-weight: 600; color: var(--ql-text); letter-spacing: 0.04em; position: relative; padding-left: var(--ql-space-md); flex-shrink: 0; }
.crowd-title::before { content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 3px; height: 14px; border-radius: 2px; background: var(--ql-primary); }
.crowd-tabs { display: flex; gap: 0; }
.crowd-tab { position: relative; height: 34px; padding: 0 16px; border: none; background: transparent; font-size: var(--ql-font-sm); font-weight: 450; color: var(--ql-text-muted); cursor: pointer; transition: all 0.18s; white-space: nowrap; }
.crowd-tab::after { content: ''; position: absolute; bottom: -1px; left: 50%; transform: translateX(-50%) scaleX(0); width: calc(100% - 12px); height: 2px; border-radius: 1px; background: var(--ql-primary); transition: transform var(--ql-motion-base); }
.crowd-tab:hover { color: var(--ql-primary-400); }
.crowd-tab.active { color: var(--ql-primary-400); font-weight: 600; }
.crowd-tab.active::after { transform: translateX(-50%) scaleX(1); }
.crowd-tab.crowd-tab-exclude.active { color: var(--ql-error, #F0384E); }
.crowd-tab.crowd-tab-exclude.active::after { background: var(--ql-error, #F0384E); }
.crowd-pane { padding: 10px 18px 14px; }
.crowd-msm { margin-bottom: var(--ql-space-md); padding: 10px 14px; background: var(--ql-surface-alt); border-radius: var(--ql-radius-sm); font-size: var(--ql-font-sm); }
.msm-section { display: flex; align-items: center; gap: var(--ql-space-md); flex-wrap: wrap; }
.msm-section-label { font-size: var(--ql-font-sm); font-weight: 600; color: var(--ql-text-secondary); white-space: nowrap; flex-shrink: 0; }
.msm-presets { display: flex; flex-wrap: wrap; gap: var(--ql-space-sm); }
.msm-preset { height: 28px; padding: 0 12px; border: 1px solid var(--ql-border); border-radius: var(--ql-radius-panel); font-size: var(--ql-font-sm); font-weight: 450; color: var(--ql-text-secondary); background: var(--ql-surface); cursor: pointer; transition: all var(--ql-motion-fast); white-space: nowrap; }
.msm-preset:hover { color: var(--ql-primary-400); }
.msm-preset.active { background: var(--ql-selected-bg); border-color: var(--ql-primary); color: var(--ql-primary-400); font-weight: 600; }
.cond-add-btn { font-size: var(--ql-font-sm); color: var(--ql-primary); cursor: pointer; white-space: nowrap; margin-left: auto; }
.cond-add-btn:hover { opacity: 0.7; }
.portrait-tags { display: flex; flex-wrap: wrap; gap: var(--ql-space-sm); transition: opacity var(--ql-motion-base); }
.portrait-tags.tags-disabled { opacity: 0.4; pointer-events: none; }
.crowd-all, .crowd-tag { display: inline-flex; align-items: center; justify-content: center; height: 30px; padding: 0 14px; font-size: var(--ql-font-sm); color: var(--ql-text-secondary); border-radius: var(--ql-radius-panel); border: 1px solid rgba(0, 0, 0, 0.08); cursor: pointer; transition: all 0.18s; user-select: none; background: var(--ql-surface); font-weight: 450; }
.crowd-all:hover, .crowd-tag:hover { border-color: var(--ql-border); color: var(--ql-primary-400); }
.crowd-all.active { border-color: var(--ql-primary-glow); color: var(--ql-primary-400); background: var(--ql-selected-bg); font-weight: 500; }
.crowd-tag.active { border-color: var(--ql-primary); color: white; background: var(--ql-primary); font-weight: 500; box-shadow: 0 2px 6px var(--ql-primary-glow); }

/* dedup：对齐真实 FilterDedup.vue — 全宽 grid 双栏 */
.dedup-block { position: relative; width: 100%; }
.dedup-hint { display: flex; align-items: center; gap: 8px; padding: 9px 14px; margin-bottom: 14px; border-radius: var(--ql-radius-sm); background: var(--ql-surface-alt); border: 1px solid var(--ql-border-light); font-size: 12.5px; color: var(--ql-text-secondary); line-height: 1.5; }
.dedup-hint[data-active="true"] { background: var(--ql-ours-bg-subtle); border-color: var(--ql-ours-border); color: var(--ql-ours-accent); }
.dedup-hint__icon { width: 13px; height: 13px; flex-shrink: 0; opacity: 0.75; }
.dedup-hint[data-active="true"] .dedup-hint__icon { opacity: 1; }
.dedup-hint__text strong { font-weight: 700; color: var(--ql-text); }
.dedup-hint[data-active="true"] .dedup-hint__text strong { color: var(--ql-ours-accent); }
.dedup-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--ql-space-xl); align-items: stretch; width: 100%; }
.dedup-left { display: flex; flex-direction: column; gap: var(--ql-space-md); }
.dedup-right { display: flex; flex-direction: column; }
.dedup-field { display: flex; flex-direction: column; }
.dedup-sub { display: block; position: relative; font-size: var(--xt-title-font); font-weight: 500; color: var(--ql-text-secondary); padding-left: var(--ql-space-md); margin-bottom: 8px; white-space: nowrap; }
.dedup-sub::before { content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 3px; height: 14px; border-radius: 2px; background: var(--ql-primary); }
.dedup-input { width: 100%; height: 36px; padding: 0 var(--ql-space-md); border: 1px solid var(--ql-border); border-radius: var(--ql-radius-control); font-size: var(--ql-font-sm); background: var(--ql-surface); color: var(--ql-text); outline: none; transition: border-color var(--ql-motion-fast); }
.dedup-input:focus, .dedup-textarea:focus { border-color: var(--ql-primary-300); box-shadow: 0 0 0 2px var(--ql-primary-glow); }
.dedup-input::placeholder, .dedup-textarea::placeholder { color: var(--ql-text-placeholder); }
.dedup-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.dedup-tag { display: inline-flex; align-items: center; gap: 2px; height: 24px; padding: 0 8px; border-radius: 12px; font-size: 12px; background: var(--ql-selected-bg); color: var(--ql-primary); border: 1px solid var(--ql-primary-100); line-height: 1; }
.dedup-tag-x { margin-left: 2px; cursor: pointer; font-size: 14px; opacity: 0.5; transition: opacity var(--ql-motion-fast); }
.dedup-tag-x:hover { opacity: 1; }
.seg { display: inline-flex; border: 1px solid var(--ql-border); border-radius: var(--ql-radius-control); overflow: hidden; }
.seg-btn { flex: 1; height: 34px; padding: 0 16px; border: none; border-left: 1px solid var(--ql-border); background: var(--ql-surface); font-size: var(--ql-font-sm); color: var(--ql-text-secondary); cursor: pointer; transition: all var(--ql-motion-fast); white-space: nowrap; }
.seg-btn:first-child { border-left: none; }
.seg-btn:hover:not(.active) { background: var(--ql-surface-alt); }
.seg-btn.active { background: var(--ql-primary); color: white; font-weight: 500; }
.dedup-textarea { flex: 1; min-height: 90px; padding: 10px 12px; border: 1px solid var(--ql-border); border-radius: var(--ql-radius-control); font-size: var(--ql-font-sm); font-family: inherit; background: var(--ql-surface); color: var(--ql-text); resize: none; outline: none; line-height: 1.6; width: 100%; transition: border-color var(--ql-motion-fast); }

/* ============ 结果视图 ============ */
.view-results { max-width: 1100px; margin: 0 auto; width: 100%; padding-bottom: 64px; }

/* edit 态：filter-dashboard 内 brief-need，有内容才悬浮 */
.main-view[data-state="edit"] .filter-dashboard > .brief-need { margin-bottom: 12px; }
.main-view[data-state="edit"] .filter-dashboard > .brief-need[data-has-content="true"] {
  position: sticky;
  top: 6px;
  z-index: 4;
}
.condition-bar {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 14px 10px 16px;
  background: var(--ql-surface);
  border: 1px solid var(--ql-border);
  border-radius: var(--ql-radius-control);
  margin-bottom: 14px;
  transition: var(--ql-transition-fast);
  box-shadow: var(--ql-shadow-xs);
}
.condition-bar--normal { cursor: pointer; }
.condition-bar--normal:hover { border-color: var(--ql-action); background: var(--ql-ours-content-tint); }
.condition-bar--editing { background: var(--ql-surface-alt); border-style: dashed; cursor: default; }
.condition-chips { flex: 1; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-width: 0; }
.condition-zone-label {
  font-size: 11px; font-weight: 700; letter-spacing: 0.4px;
  text-transform: uppercase;
  padding: 0 6px 0 0;
}
.condition-zone-label--xt { color: var(--xt-accent); }
.condition-zone-label--ours { color: var(--ours-accent); }
.condition-sep { width: 1px; height: 14px; background: var(--ql-border); margin: 0 6px; display: inline-block; }
.condition-clear { font-size: 11.5px; color: var(--ql-text-muted); cursor: pointer; padding: 3px 8px; border-radius: var(--ql-radius-xs); border: 1px solid transparent; margin-left: auto; }
.condition-clear:hover { color: var(--ql-error-text); border-color: var(--ql-error-bg); background: var(--ql-error-bg); }

/* Chip 带删除按钮 */
.chip {
  display: inline-flex; align-items: center; gap: 4px;
  height: 24px; padding: 0 4px 0 10px;
  border-radius: var(--ql-radius-pill);
  font-size: 12px; font-weight: 600;
  cursor: pointer;
  border: 1px solid transparent;
  transition: transform 180ms var(--ql-ease-glass), box-shadow 180ms var(--ql-ease-glass), background 180ms var(--ql-ease-glass), padding 180ms var(--ql-ease-glass);
  position: relative;
  white-space: nowrap;
}
.chip--xt { background: var(--xt-tint); color: var(--xt-accent); border-color: var(--xt-border); }
.chip--ours { background: var(--ours-tint); color: var(--ours-accent); border-color: var(--ours-border); }
.chip:hover { transform: translateY(-1px); box-shadow: var(--ql-shadow-xs); padding-right: 4px; }
.chip--xt:hover { background: var(--ql-xt-bg-strong); }
.chip--ours:hover { background: var(--ql-ours-bg-strong); }
.chip__text { line-height: 1; }
.chip__remove {
  width: 0; height: 18px; padding: 0; border: 0;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent;
  color: inherit; opacity: 0;
  border-radius: 50%;
  font-size: 14px; line-height: 1; cursor: pointer;
  transition: all 180ms var(--ql-ease-glass);
  overflow: hidden;
  flex-shrink: 0;
}
.chip:hover .chip__remove { width: 18px; opacity: 0.75; }
.chip__remove:hover { background: rgba(0,0,0,0.08); opacity: 1; }
.chip.is-removing { animation: chip-remove 220ms var(--ql-ease-glass) forwards; }
@keyframes chip-remove {
  to { transform: scale(0.6); opacity: 0; max-width: 0; padding: 0; margin-left: -4px; }
}

.bar-editing__note { flex: 1; font-size: 13px; color: var(--ql-text-secondary); }

/* ============ Result Toolbar（复刻 src/renderer/components/result/result-toolbar.scss） ============ */
.result-toolbar {
  position: sticky;
  top: 0;
  z-index: var(--z-bar, 100);
  background: color-mix(in srgb, var(--ql-glass-bg-light) 86%, transparent);
  backdrop-filter: saturate(145%) blur(14px);
  -webkit-backdrop-filter: saturate(145%) blur(14px);
  border-bottom: 1px solid rgba(15, 23, 42, 0.06);
  border-radius: var(--ql-radius-control) var(--ql-radius-control) 0 0;
  overflow: visible;
}
.main-view[data-state="edit"] .result-toolbar { display: none; }

.rt-row {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 44px;
  padding: 6px 18px;
}

.rt-filter-trigger {
  display: inline-flex; align-items: center; gap: 7px;
  height: 28px; padding: 0 11px;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: var(--ql-text-muted);
  font-size: 12.5px; font-weight: 500;
  cursor: pointer;
  transition: var(--ql-transition-fast);
  white-space: nowrap;
}
.rt-filter-trigger:hover {
  background: color-mix(in srgb, var(--ql-surface) 76%, transparent);
  border-color: rgba(15, 23, 42, 0.06);
  color: var(--ql-text-secondary);
}

.rt-filter-edit-zone {
  display: inline-flex; align-items: center;
  padding: 0 2px;
  border-radius: 6px;
}
.rt-filter-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  font-size: 11px; font-weight: 700;
  background: rgba(0, 0, 0, 0.05);
}

.rt-divider {
  width: 1px; height: 18px;
  background: rgba(15, 23, 42, 0.08);
  flex-shrink: 0;
}

.rt-tabs {
  flex: 1; min-width: 0;
  display: flex; align-items: center; justify-content: center;
  gap: 4px;
  overflow-x: auto; overflow-y: hidden;
  scrollbar-width: none;
}
.rt-tabs::-webkit-scrollbar { display: none; }

.rt-tab {
  display: inline-flex; align-items: center; gap: 5px;
  height: 28px; padding: 0 12px;
  border: none; border-radius: 999px;
  background: transparent;
  color: var(--ql-text-tertiary);
  font-size: 12.5px; font-weight: 400;
  cursor: pointer; user-select: none;
  font-family: inherit;
  transition: var(--ql-transition-fast);
  white-space: nowrap;
}
.rt-tab:hover {
  color: var(--ql-text-secondary);
  background: rgba(15, 23, 42, 0.04);
}
.rt-tab.active {
  background: rgba(255, 255, 255, 0.82);
  color: var(--ql-text);
  font-weight: 600;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05), inset 0 0 0 1px rgba(255, 255, 255, 0.46);
}
.rt-tab.active[data-tab="submitted"] { color: var(--ql-success-text); }
.rt-tab.active[data-tab="pending"] { color: var(--ql-warning-text); }
.rt-tab.active[data-tab="rejected"] { color: var(--ql-text-muted); }

.rt-tab-n {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 16px; height: 16px;
  padding: 0 4px;
  border-radius: 999px;
  font-size: 10px; font-weight: 700;
  color: inherit; background: transparent;
}
.rt-tab.active .rt-tab-n { background: rgba(15, 23, 42, 0.06); }

.rt-ctrls {
  margin-left: auto;
  display: flex; align-items: center; gap: 8px;
  flex-shrink: 0;
}

.rt-agent-btn {
  display: inline-flex; align-items: center; gap: 6px;
  height: 28px; padding: 0 12px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 999px;
  background: transparent;
  color: var(--ql-text-secondary);
  font-size: 12.5px; font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  transition: var(--ql-transition-fast);
  white-space: nowrap;
}
.rt-agent-btn:hover {
  background: rgba(15, 23, 42, 0.04);
  color: var(--ql-text);
}
.rt-agent-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--ql-success);
  box-shadow: 0 0 0 2px rgba(101, 180, 45, 0.15);
}

.rt-tools-trigger {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px;
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 999px;
  background: transparent;
  color: var(--ql-text-muted);
  cursor: pointer;
  transition: var(--ql-transition-fast);
}
.rt-tools-trigger:hover {
  background: rgba(15, 23, 42, 0.04);
  color: var(--ql-text-secondary);
}

/* ============ 列表表头（对齐 rc 行 grid） ============ */
.rlv-thead {
  position: sticky; top: 0;
  z-index: var(--z-sticky);
  background: var(--ql-surface);
  border-bottom: 1px solid var(--ql-border-light);
}
.rlv-th {
  display: grid;
  grid-template-columns: 28px 44px minmax(160px, 1fr) 220px minmax(280px, 340px) 96px;
  gap: 14px;
  align-items: center;
  min-height: 36px;
  padding: 0 16px;
}
.rlv-th > div {
  font-size: var(--ql-font-sm, 13px);
  font-weight: 600;
  color: var(--ql-text-muted);
  letter-spacing: 0.03em;
}
.th-chk {
  display: flex; align-items: center; justify-content: center;
}
.th-chk input[type=checkbox] {
  width: 15px; height: 15px;
  accent-color: var(--ql-action);
  cursor: pointer;
}
.th-spacer {}
.th-info {}
.th-metrics {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2px;
  align-items: center;
}
.th-metrics > .th-col {
  text-align: left;
  font-weight: 600;
  color: var(--ql-text-muted);
  padding-left: 2px;
}
.th-metrics > .th-col--accent { color: var(--ql-error); }

.th-vid { display: flex; flex-direction: column; justify-content: center; gap: 2px; }
.th-vid-note { font-size: 10px; font-weight: 500; color: var(--ql-text-muted); letter-spacing: 0.01em; }
body:not([data-content-search="active"]) .th-vid-note { display: none; }
.th-act { text-align: center; }

/* 下拉看板 — 扁平化，视觉与主筛选器首页一致 */
.filter-dashboard { display: none; background: transparent; margin: 0 0 14px; padding: 0; animation: dashboard-drop 240ms var(--ql-ease-glass); }
.main-view[data-state="edit"] .filter-dashboard { display: block; }
.filter-dashboard__brief { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; padding: 0; background: transparent; border: 0; }
.filter-dashboard__brief .brief-project { margin: 0; }
.filter-dashboard__brief .brief-need { margin: 0; }
@keyframes dashboard-drop { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
.filter-dashboard .fp { padding: 0; background: transparent; max-width: none; }
.filter-dashboard__actions { display: flex; justify-content: flex-end; gap: 10px; padding: 16px 0 0; border: 0; background: transparent; }
.main-view[data-state="edit"] .condition-bar--normal,
.main-view[data-state="edit"] .condition-bar--editing { display: none; }
.main-view:not([data-state="edit"]) .condition-bar--editing { display: none; }

/* edit 态：底部列表收起（对齐 AiFilterView.vue 里 v-if="isCollapsed && !filterExpanded"） */
.main-view[data-state="edit"] .rlv-thead,
.main-view[data-state="edit"] .results-card,
.main-view[data-state="edit"] .scroll-zone,
.main-view[data-state="edit"] .scroll-sticky { display: none !important; }

.results-toolbar { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; background: var(--ql-surface); border-radius: var(--ql-radius-sm); border: 1px solid var(--ql-border-light); margin-bottom: 10px; }
.results-toolbar__stat { font-size: 13px; color: var(--ql-text-secondary); }
.results-toolbar__stat strong { color: var(--ql-text); font-weight: 700; }

.results-card { border-radius: var(--ql-radius-control); overflow: hidden; border: 1px solid var(--ql-border-light); background: var(--ql-surface); }
.results-list { background: var(--ql-surface); }

/* 批次分隔 */
.batch-sep {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 16px;
  font-size: 11px; font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--ql-text-muted);
  background: var(--ql-surface-alt);
  border-bottom: 1px solid var(--ql-border-light);
  border-top: 1px solid var(--ql-border-light);
}
.batch-sep__num { color: var(--ql-action); }
.batch-sep__line { flex: 1; height: 1px; background: var(--ql-border-light); }

/* ==== Result Card (rc) ==== */
.rc {
  display: grid;
  grid-template-columns: 28px 44px minmax(160px, 1fr) 220px minmax(280px, 340px) 96px;
  gap: 14px;
  align-items: center;
  padding: 14px 16px;
  border-bottom: 1px solid var(--ql-border-light);
  transition:
    background 180ms var(--ql-ease-glass),
    opacity 500ms ease,
    filter 500ms ease;
  position: relative;
}
.rc:last-child { border-bottom: none; }
.rc:hover { background: var(--ql-surface-alt); }
.rc[data-selected="true"] {
  background: linear-gradient(90deg, var(--ql-ours-bg-subtle) 0%, var(--ql-ours-content-tint) 40%, transparent 100%);
}
.rc[data-selected="true"]::before {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 3px;
  background: var(--ql-action);
}
.rc--enter { animation: rc-enter 320ms var(--ql-ease-glass) backwards; }
@keyframes rc-enter {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

.rc__check { display: flex; align-items: center; justify-content: center; }
.rc__check input { width: 16px; height: 16px; accent-color: var(--ql-action); cursor: pointer; }

/* 渐变头像（5 色轮换） */
.rc__avatar {
  width: 40px; height: 40px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 700; color: var(--ql-text-inverse);
  letter-spacing: -0.02em;
  box-shadow: var(--ql-shadow-xs), inset 0 1px 0 var(--ql-glass-border);
  position: relative;
  flex-shrink: 0;
}
.rc__avatar[data-color="pink"]   { background: linear-gradient(135deg, var(--ql-avatar-pink-from)   0%, var(--ql-avatar-pink-to)   100%); }
.rc__avatar[data-color="purple"] { background: linear-gradient(135deg, var(--ql-avatar-purple-from) 0%, var(--ql-avatar-purple-to) 100%); }
.rc__avatar[data-color="blue"]   { background: linear-gradient(135deg, var(--ql-avatar-blue-from)   0%, var(--ql-avatar-blue-to)   100%); }
.rc__avatar[data-color="green"]  { background: linear-gradient(135deg, var(--ql-avatar-green-from)  0%, var(--ql-avatar-green-to)  100%); }
.rc__avatar[data-color="amber"]  { background: linear-gradient(135deg, var(--ql-avatar-amber-from)  0%, var(--ql-avatar-amber-to)  100%); }

.rc__main { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.rc__row1 { display: flex; align-items: center; gap: 6px; min-width: 0; }
.rc__name { font-size: 14px; font-weight: 700; color: var(--ql-text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 140px; }
.rc__auth { width: 14px; height: 14px; flex-shrink: 0; color: var(--xt-accent); }
.rc__auth-check { stroke: var(--ql-text-inverse); }
.rc__tag {
  display: inline-flex; align-items: center;
  height: 18px; padding: 0 7px;
  border-radius: var(--ql-radius-xs);
  font-size: 10.5px; font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.rc__tag--xt { background: var(--xt-tint); color: var(--xt-accent); border: 1px solid var(--xt-border); }
.rc__tag--ours { background: var(--ours-tint); color: var(--ours-accent); border: 1px solid var(--ours-border); }
.rc__tag--neutral { background: var(--ql-surface-alt); color: var(--ql-text-muted); border: 1px solid var(--ql-border-light); }
.rc__row2 { font-size: 11.5px; color: var(--ql-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.35; }

/* ---- 视频封面列 + 命中句子（独立一列，对齐真实 .td-vid / .cr-vid / .cr-vid-hit） ---- */
.rc__vid {
  display: flex;
  gap: var(--ql-space-sm);
  align-items: flex-start;
  min-width: 0;
}
.rc__vid-col {
  display: flex;
  flex-direction: column;
  width: 60px;
  flex-shrink: 0;
}
.rc__vid-thumb {
  width: 60px;
  height: 80px;
  border-radius: var(--ql-radius-xs);
  position: relative;
  background: linear-gradient(135deg, var(--ql-avatar-pink-from), var(--ql-avatar-pink-to));
  overflow: hidden;
  cursor: pointer;
  transition: transform var(--ql-motion-fast) var(--ql-ease);
}
.rc__vid-thumb:hover { transform: scale(1.04); }
.rc__vid-thumb[data-color="purple"] { background: linear-gradient(135deg, var(--ql-avatar-purple-from), var(--ql-avatar-purple-to)); }
.rc__vid-thumb[data-color="blue"]   { background: linear-gradient(135deg, var(--ql-avatar-blue-from),   var(--ql-avatar-blue-to)); }
.rc__vid-thumb[data-color="green"]  { background: linear-gradient(135deg, var(--ql-avatar-green-from),  var(--ql-avatar-green-to)); }
.rc__vid-thumb[data-color="amber"]  { background: linear-gradient(135deg, var(--ql-avatar-amber-from),  var(--ql-avatar-amber-to)); }
/* 右下角播放图标，对齐真实 .cr-vid::after */
.rc__vid-thumb::after {
  content: '▶';
  position: absolute;
  bottom: 3px; right: 3px;
  font-size: 8px;
  color: rgba(255, 255, 255, 0.9);
  background: rgba(0, 0, 0, 0.4);
  border-radius: var(--ql-radius-xs);
  padding: 1px 4px;
  line-height: 1.2;
}

/* 命中句子：仅 body[data-content-search="active"] 时显示 */
.rc__vid-hit {
  width: 60px;
  margin-top: var(--ql-space-xs);
  padding: 1px 3px;
  font-size: 9px;
  line-height: 1.3;
  color: var(--ql-text-secondary);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-all;
}
.rc__vid-hit--empty {
  min-height: calc(9px * 1.3 * 2 + 2px);
  padding: 0;
}
body:not([data-content-search="active"]) .rc__vid-hit { display: none; }

/* 关键词高亮（对齐真实 .cr-hit-em，用 warning token 替代硬编码 #d48806 / #FFFDE7） */
.rc__hit-em {
  font-weight: 600;
  color: var(--ql-warning-text);
  background: var(--ql-warning-bg);
  padding: 0 1px;
  border-radius: 1px;
  font-style: normal;
}

/* 数据 + 匹配分 */
.rc__stats-wrap { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.rc__stats {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 2px; align-items: baseline;
}
.rc__stat { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; min-width: 0; }
.rc__stat-num { font-size: 13.5px; font-weight: 700; color: var(--ql-text); font-variant-numeric: tabular-nums; line-height: 1.1; white-space: nowrap; }
.rc__stat-num--good { color: var(--ql-success-text); }
.rc__stat-num--warn { color: var(--ql-warning-text); }
.rc__stat-num--accent { color: var(--ql-error); }
.rc__stat-label { font-size: 10.5px; color: var(--ql-text-muted); letter-spacing: 0.02em; white-space: nowrap; }

/* ==== 标注状态视觉 × 行整体 ==== */
/* 已通过（+ selected）: 淡绿背景 + 左侧绿色竖条（覆盖 selected 的紫色条） */
.rc--passed {
  background: linear-gradient(90deg, var(--ql-success-bg) 0%, oklch(0.99 0.015 150) 55%, transparent 100%);
}
.rc--passed::before {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 3px;
  background: var(--ql-success);
}

/* 已待定：淡黄背景 + 左侧黄竖条 */
.rc--pend {
  background: linear-gradient(90deg, var(--ql-warning-bg) 0%, oklch(0.99 0.015 85) 55%, transparent 100%);
}
.rc--pend::before {
  content: '';
  position: absolute; left: 0; top: 0; bottom: 0;
  width: 3px;
  background: var(--ql-warning);
}

/* 已不通过（手动）：灰化 + 透明度 */
.rc--rejected { opacity: 0.5; filter: grayscale(0.5); }
.rc--rejected:hover { opacity: 0.75; }

/* mark 行 hover 保持自身色调（覆盖 .rc:hover 的灰 bg） */
.rc.rc--passed:hover { background: linear-gradient(90deg, oklch(0.95 0.07 145) 0%, oklch(0.99 0.015 150) 55%, transparent 100%); }
.rc.rc--pend:hover { background: linear-gradient(90deg, oklch(0.96 0.06 80) 0%, oklch(0.99 0.015 85) 55%, transparent 100%); }

/* 翻页自动不通过：更灰（"翻页自动"标签已在操作列显示） */
.rc--auto-rejected { opacity: 0.45; filter: grayscale(0.7); }
.rc--auto-rejected:hover { opacity: 0.75; filter: grayscale(0.3); }

/* ==== 操作列（按 mark 不同） ==== */
.rc__action {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 4px;
  position: relative;
  min-width: 96px;
}

/* 未标注：3 按钮（通过 / 待定 / 不通过） */
.act-btn {
  width: 26px; height: 26px;
  border-radius: var(--ql-radius-xs);
  background: var(--ql-surface);
  border: none;
  box-shadow: var(--ql-pill-shadow-subtle);
  color: var(--ql-text-muted);
  cursor: pointer;
  display: inline-flex;
  align-items: center; justify-content: center;
  transition: transform 120ms var(--ql-ease), color 120ms, background 120ms;
}
.act-btn:hover { transform: scale(1.12); }
.act-btn:active { transform: scale(0.92); }
.act-btn--pass:hover    { color: var(--ql-success);      background: var(--ql-success-bg); }
.act-btn--pending:hover { color: var(--ql-warning-text); background: var(--ql-warning-bg); }
.act-btn--reject:hover  { color: var(--ql-error-text);   background: var(--ql-error-bg); }

/* 已标注状态标签 */
.act-st {
  display: inline-flex;
  align-items: center; gap: 3px;
  padding: 4px 10px;
  border-radius: var(--ql-radius-xs);
  font-size: 11px;
  font-weight: 600;
  white-space: nowrap;
  letter-spacing: 0.02em;
}
.act-st--pass { background: var(--ql-success-bg); color: var(--ql-success-text); }
.act-st--pend { background: var(--ql-warning-bg); color: var(--ql-warning-text); }
.act-st--rej  { background: var(--ql-surface-alt); color: var(--ql-text-muted); }
.act-st--rej-auto {
  background: transparent;
  color: var(--ql-text-muted);
  border: 1px dashed var(--ql-border);
  font-weight: 500;
  font-size: 10.5px;
}

/* hover 修改按钮组（默认隐藏；行 hover 显示；同时隐藏标签） */
.act-re { display: none; gap: 3px; }
.rc:hover .act-re { display: inline-flex; }
.rc:hover .act-st { display: none; }

.act-sm {
  width: 22px; height: 22px;
  border-radius: var(--ql-radius-xs);
  background: var(--ql-surface);
  cursor: pointer;
  display: inline-flex;
  align-items: center; justify-content: center;
  border: 1px solid var(--ql-border);
  color: var(--ql-text-muted);
  transition: all 120ms var(--ql-ease);
}
.act-sm:active { transform: scale(0.92); }
.act-sm--pass { border-color: var(--ql-success); color: var(--ql-success); }
.act-sm--pass:hover { background: var(--ql-success); color: #fff; }
.act-sm--pend { border-color: var(--ql-warning); color: var(--ql-warning-text); }
.act-sm--pend:hover { background: var(--ql-warning); color: #fff; }
.act-sm--rej { border-color: var(--ql-muted); color: var(--ql-text-muted); }
.act-sm--rej:hover { background: var(--ql-muted); color: #fff; }

/* ==== 持续滚动区 ==== */
.scroll-zone {
  margin-top: 10px;
  background: var(--ql-surface);
  border: 1px solid var(--ql-border-light);
  border-radius: var(--ql-radius-control);
  overflow: hidden;
}
.scroll-loading { padding: 2px 0; }
.scroll-skeleton {
  display: grid;
  grid-template-columns: 28px 44px minmax(200px, 1fr) minmax(300px, 380px) 96px;
  gap: 14px;
  padding: 14px 16px;
  align-items: center;
  border-bottom: 1px solid var(--ql-border-light);
}
.skel-avatar { width: 40px; height: 40px; border-radius: 50%; background: linear-gradient(90deg, var(--ql-skeleton-base) 0%, var(--ql-skeleton-shine) 50%, var(--ql-skeleton-base) 100%); background-size: 200% 100%; animation: skel-shine 1.4s linear infinite; }
.skel-check { width: 16px; height: 16px; border-radius: 3px; background: var(--ql-skeleton-base); }
.skel-bars { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.skel-bar, .skel-chunk, .skel-stat, .skel-match {
  background: linear-gradient(90deg, var(--ql-skeleton-base) 0%, var(--ql-skeleton-shine) 50%, var(--ql-skeleton-base) 100%);
  background-size: 200% 100%;
  animation: skel-shine 1.4s linear infinite;
  border-radius: 4px;
}
.skel-bar { height: 11px; }
.skel-chunk { height: 9px; }
.skel-stats-wrap { display: flex; flex-direction: column; gap: 6px; }
.skel-stats-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.skel-stat { height: 14px; }
.skel-match { height: 4px; }
.skel-action { height: 30px; border-radius: 9999px; }
@keyframes skel-shine { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

.scroll-hint {
  display: flex; align-items: center; justify-content: center; gap: 10px;
  padding: 16px 18px;
  font-size: 12.5px; color: var(--ql-text-secondary);
  background: linear-gradient(180deg, transparent, var(--ql-ours-content-tint));
  border-top: 1px solid var(--ql-border-light);
}
.scroll-hint strong { color: var(--ql-text); font-variant-numeric: tabular-nums; }
.scroll-spinner {
  width: 14px; height: 14px;
  border: 2px solid var(--ql-border);
  border-top-color: var(--ql-action);
  border-radius: 50%;
  animation: scroll-spin 0.8s linear infinite;
  flex-shrink: 0;
}
@keyframes scroll-spin { to { transform: rotate(360deg); } }

.scroll-trigger {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 18px 20px;
  background: var(--ql-surface);
  border-top: 1px solid var(--ql-border-light);
}
.scroll-trigger__text { font-size: 13px; color: var(--ql-text-secondary); }
.scroll-trigger__text strong { color: var(--ql-text); font-weight: 700; font-variant-numeric: tabular-nums; }
.scroll-trigger__arrow {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11.5px; color: var(--ql-text-muted);
  font-weight: 500;
  letter-spacing: 0.04em;
}
.scroll-trigger__arrow-dots {
  display: inline-flex; flex-direction: column; gap: 1px;
}
.scroll-trigger__arrow-dots span {
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--ql-action);
  opacity: 0.35;
  animation: arrow-dot 1.6s ease-in-out infinite;
}
.scroll-trigger__arrow-dots span:nth-child(2) { animation-delay: 0.2s; }
.scroll-trigger__arrow-dots span:nth-child(3) { animation-delay: 0.4s; }
@keyframes arrow-dot {
  0%, 100% { opacity: 0.25; transform: translateY(0); }
  50% { opacity: 1; transform: translateY(2px); }
}

.scroll-end {
  display: flex; align-items: center; justify-content: center; gap: 14px;
  padding: 24px 20px;
  font-size: 12.5px; color: var(--ql-text-muted);
  background: var(--ql-surface-alt);
  border-top: 1px solid var(--ql-border-light);
}
.scroll-end__line { flex: 1; max-width: 100px; height: 1px; background: var(--ql-border); }
.scroll-end__text { font-weight: 600; white-space: nowrap; letter-spacing: 0.06em; }
.scroll-end__check {
  width: 16px; height: 16px; border-radius: 50%;
  background: var(--ql-success);
  color: var(--ql-text-inverse); display: inline-flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 700;
  box-shadow: 0 2px 4px var(--ql-success-glow);
}

/* 浮动 sticky 底部 CTA（定位到 main-view 内） */
.scroll-sticky {
  display: none;
  position: absolute;
  bottom: 16px; left: 50%;
  transform: translateX(-50%);
  z-index: var(--z-toolbar);
  background: var(--ql-glass-bg-heavy);
  backdrop-filter: var(--ql-glass-blur-panel);
  -webkit-backdrop-filter: var(--ql-glass-blur-panel);
  border: 1px solid var(--ql-glass-border);
  border-radius: var(--ql-radius-pill);
  box-shadow: var(--ql-shadow-float), var(--ql-glass-inset);
  padding: 8px 10px 8px 18px;
  align-items: center; gap: 14px;
  font-size: 13px;
  animation: sticky-slide-up 300ms var(--ql-ease-glass);
}
@keyframes sticky-slide-up {
  from { transform: translate(-50%, 20px); opacity: 0; }
  to   { transform: translate(-50%, 0);     opacity: 1; }
}
.main-view[data-state="results"] .scroll-sticky,
.main-view[data-state="cta-submit"] .scroll-sticky,
.main-view[data-state="cta-success"] .scroll-sticky { display: flex; }
.main-view[data-state="cart"] .scroll-sticky { display: none !important; }
.scroll-sticky__stat { color: var(--ql-text-secondary); letter-spacing: 0.02em; display: flex; align-items: center; gap: 8px; }
.scroll-sticky__stat strong { color: var(--ql-text); font-weight: 700; font-variant-numeric: tabular-nums; }
.scroll-sticky__stat-sep { width: 3px; height: 3px; border-radius: 50%; background: var(--ql-border); }
.scroll-sticky__selected { color: var(--ql-action); font-weight: 700; font-variant-numeric: tabular-nums; padding: 2px 8px; background: var(--ql-ours-bg-strong); border-radius: var(--ql-radius-pill); font-size: 12px; }
.scroll-sticky__divider { width: 1px; height: 18px; background: var(--ql-border); flex-shrink: 0; }

/* ---- 浮球 hub 双态切换（idle / selected） ---- */
.scroll-sticky[data-mode="idle"] [data-sticky-mode="selected"] { display: none; }
.scroll-sticky[data-mode="selected"] [data-sticky-mode="idle"] { display: none; }

/* 批量操作态样式（对齐真实 BatchBar） */
.sticky-batch-label {
  font-size: 13px;
  color: var(--ql-text-secondary);
  letter-spacing: 0.02em;
  padding-left: var(--ql-space-sm);
}
.sticky-batch-label strong {
  color: var(--ql-action);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  margin: 0 2px;
}
.batch-btn {
  height: 28px;
  padding: 0 var(--ql-space-md);
  border-radius: var(--ql-radius-pill);
  font-size: 12px;
  font-weight: 600;
}
.batch-btn--pass { color: var(--ql-success-text); background: var(--ql-success-bg); border-color: transparent; }
.batch-btn--pass:hover { background: var(--ql-success); color: var(--ql-text-inverse); }
.batch-btn--pending { color: var(--ql-warning-text); background: var(--ql-warning-bg); border-color: transparent; }
.batch-btn--pending:hover { background: var(--ql-warning); color: var(--ql-text-inverse); }
.batch-btn--reject { color: var(--ql-error-text); background: var(--ql-error-bg); border-color: transparent; }
.batch-btn--reject:hover { background: var(--ql-error); color: var(--ql-text-inverse); }
.scroll-sticky .ql-btn--primary { height: 34px; padding: 0 18px; border-radius: var(--ql-radius-pill); }

/* ---- 翻页自动不通过 toggle（iOS 风格 pill switch） ---- */
.auto-reject { display: inline-flex; align-items: center; gap: var(--ql-space-sm); cursor: pointer; user-select: none; }
.auto-reject input { position: absolute; opacity: 0; pointer-events: none; }
.auto-reject__track {
  width: 32px; height: 18px;
  background: var(--ql-border);
  border-radius: var(--ql-radius-pill);
  position: relative; flex-shrink: 0;
  transition: background var(--ql-motion-base) var(--ql-ease);
}
.auto-reject__thumb {
  position: absolute; top: 2px; left: 2px;
  width: 14px; height: 14px;
  background: var(--ql-surface);
  border-radius: 50%;
  box-shadow: var(--ql-shadow-xs);
  transition: transform var(--ql-motion-base) var(--ql-ease);
}
.auto-reject input:checked + .auto-reject__track { background: var(--ql-action); }
.auto-reject input:checked + .auto-reject__track .auto-reject__thumb { transform: translateX(14px); }
.auto-reject__label { font-size: 12px; color: var(--ql-text-secondary); font-weight: 500; white-space: nowrap; letter-spacing: 0.01em; }
.auto-reject:hover .auto-reject__label { color: var(--ql-text); }

/* results-toolbar 废弃 — batch-indicator 接管，这里删掉所有旧样式 */
.results-toolbar { display: none; }

/* ============ Modal ============ */
.cta-modal { width: 540px; max-width: calc(100vw - 40px); }
.cta-authors { display: flex; flex-direction: column; gap: 8px; max-height: 240px; overflow-y: auto; margin-bottom: 14px; }
.cta-author { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: var(--ql-surface-alt); border-radius: var(--ql-radius-sm); border: 1px solid var(--ql-border-light); }
.cta-author__text { min-width: 0; flex: 1; }
.cta-author__name { font-weight: 600; color: var(--ql-text); font-size: 13.5px; }
.cta-author__meta { font-size: 11.5px; color: var(--ql-text-muted); }
.cta-note-label { display: block; font-size: 12px; color: var(--ql-text-secondary); margin-bottom: 6px; font-weight: 500; }
.cta-note { width: 100%; padding: 10px 12px; border: 1px solid var(--ql-border); border-radius: var(--ql-radius-sm); background: var(--ql-surface); font-family: inherit; font-size: 13px; resize: vertical; min-height: 68px; }
.cta-note:focus { outline: none; border-color: var(--ql-action); box-shadow: 0 0 0 3px var(--ql-ours-glow); }

.cta-success-modal { width: 400px; }
.cta-success__body { padding: 28px 24px 8px; text-align: center; }
.cta-success__icon { width: 56px; height: 56px; border-radius: 50%; background: var(--ql-success); color: var(--ql-text-inverse); display: flex; align-items: center; justify-content: center; margin: 0 auto 12px; font-size: 28px; font-weight: 700; box-shadow: 0 6px 16px var(--ql-success-glow); }
.cta-success__title { font-size: 20px; font-weight: 700; margin-bottom: 4px; }
.cta-success__sub { font-size: 13px; color: var(--ql-text-muted); margin-bottom: 18px; }
.cta-success__order { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 14px; background: var(--ql-surface-alt); border-radius: var(--ql-radius-sm); border: 1px solid var(--ql-border-light); margin-bottom: 8px; }
.cta-success__order-label { font-size: 12px; color: var(--ql-text-muted); }
.cta-success__order-no { font-family: var(--ql-font-mono); font-weight: 600; font-size: 12px; letter-spacing: 0.5px; }
.cta-success__qr-title { font-size: 14px; font-weight: 600; color: var(--ql-action); margin: 12px 0 10px; }
.cta-success__qr { display: flex; justify-content: center; margin-bottom: 6px; }
.qr-grid { width: 144px; height: 144px; padding: 8px; background: var(--ql-surface); border: 1px solid var(--ql-border); border-radius: var(--ql-radius-xs); display: grid; grid-template-columns: repeat(16, 1fr); grid-template-rows: repeat(16, 1fr); gap: 1px; }
.qr-grid > div { background: var(--ql-text); }
.qr-grid > .qr-w { background: transparent; }
.cta-success__qr-hint { font-size: 11.5px; color: var(--ql-text-muted); }

/* 响应式 */
@media (max-width: 1359px) {
  .proto-shell { grid-template-columns: 260px 1fr; }
  :root { --xt-group-padding: 18px 20px; --xt-group-width: 104px; }
  .fp { max-width: 100%; }
}
.ctrl::-webkit-scrollbar, .content-area::-webkit-scrollbar, .task-section::-webkit-scrollbar { width: 6px; }
.ctrl::-webkit-scrollbar-thumb, .content-area::-webkit-scrollbar-thumb, .task-section::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.12); border-radius: 9999px; }

/* ============ fs-unified: 三 pack 侧列 + 副标题分割（替代原三卡片 SECTION_A/B/C） ============ */

.fs-unified {
  border: 0;
  border-radius: 20px;
  overflow: hidden;
  background: var(--ql-surface);
  box-shadow:
    0 1px 2px rgba(16, 24, 40, 0.04),
    0 8px 28px rgba(107, 58, 93, 0.06);
  margin-bottom: var(--ql-space-lg);
}

.fs-pack {
  display: flex;
  align-items: stretch;
  position: relative;
}
.fs-pack + .fs-pack::before {
  content: '';
  position: absolute;
  top: 0;
  left: 64px;
  right: 24px;
  height: 1px;
  background: var(--ql-border-light);
  opacity: 0.6;
}

.fs-pack__label {
  width: 64px;
  flex-shrink: 0;
  padding: 12px 4px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  text-align: center;
  position: relative;
}
.fs-pack--ai .fs-pack__label {
  background: linear-gradient(150deg, color-mix(in oklab, var(--ql-ours-bg-subtle) 60%, #fff), var(--ql-surface));
  color: var(--ql-ours-accent);
}
.fs-pack--xt .fs-pack__label {
  background: linear-gradient(150deg, color-mix(in oklab, var(--ql-xt-bg-subtle) 70%, #fff), var(--ql-surface));
  color: var(--ql-xt-text);
}
.fs-pack--ours .fs-pack__label {
  background: linear-gradient(150deg, color-mix(in oklab, var(--ql-ours-bg-strong) 55%, #fff), color-mix(in oklab, var(--ql-ours-bg-subtle) 80%, var(--ql-surface)));
  color: var(--ql-ours-accent);
}

/* 右侧轻 accent 竖条，代替硬 border-right */
.fs-pack__label::after {
  content: '';
  position: absolute;
  right: 0;
  top: 24px;
  bottom: 24px;
  width: 1px;
  background: currentColor;
  opacity: 0.12;
}

.fs-pack__num {
  font-size: 9.5px;
  letter-spacing: 0.18em;
  font-weight: 600;
  opacity: 0.4;
  font-variant-numeric: tabular-nums;
}
.fs-pack__name {
  display: flex;
  flex-direction: column;
  gap: 2px;
  align-items: center;
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: 0.01em;
  line-height: 1.05;
}
.fs-pack__name > span,
.fs-pack__name > b {
  display: inline-block;
  font-weight: inherit;
}
.fs-pack__tag {
  font-size: 9px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.8);
  letter-spacing: 0.06em;
}

.fs-pack__body {
  flex: 1;
  min-width: 0;
  padding: 10px 22px 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  background: var(--ql-surface);
}

/* 副标题：星图风小灰字 + 左侧 accent 小方块 + 虚线下划线表可搜 */
.fs-sub {
  font-size: 12px;
  font-weight: 600;
  color: var(--ql-text);
  letter-spacing: 0.06em;
  padding: 0 0 2px 12px;
  margin-top: 2px;
  position: relative;
  border: 0;
  text-decoration: underline dashed rgba(0,0,0,0.22);
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
  cursor: help;
}
.fs-sub:hover { text-decoration-color: currentColor; }
.fs-sub::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 6px;
  height: 6px;
  border-radius: 2px;
  background: currentColor;
  opacity: 0.5;
}
.fs-pack__body > .fs-sub:first-child { margin-top: 0; }

.fs-pack--ai .fs-sub { color: var(--ql-ours-accent); }
.fs-pack--xt .fs-sub { color: var(--ql-xt-text); }
.fs-pack--ours .fs-sub { color: var(--ql-ours-accent); }

/* 结果去重：可折叠 sub-section */
.fs-sub--toggle {
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
  gap: 8px;
  transition: color 0.15s, background 0.15s;
  padding-right: 12px;
  border-radius: 6px;
  position: relative;
}
.fs-sub--toggle:hover { color: var(--ql-action); }
.fs-sub__hint {
  font-size: 10.5px;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--ql-text-muted);
  padding: 1px 7px;
  background: var(--ql-surface-alt);
  border-radius: 9999px;
  opacity: 0.85;
}
.fs-sub--toggle[data-open="true"] .fs-sub__hint { display: none; }
.fs-sub-chev {
  width: 11px;
  height: 11px;
  color: currentColor;
  transition: transform 0.2s var(--ql-ease);
  margin-left: auto;
  opacity: 0.7;
}
.fs-sub--toggle[data-open="false"] .fs-sub-chev { transform: rotate(-90deg); }
.fs-dedup-wrap {
  overflow: hidden;
  transition: max-height 0.25s var(--ql-ease), opacity 0.2s;
  max-height: 600px;
  opacity: 1;
}
.fs-dedup-wrap[data-open="false"] {
  max-height: 0;
  opacity: 0;
  pointer-events: none;
}

/* ============================================================ */
/*                   购物车 Tab 子视图（CartTab.vue）            */
/* ============================================================ */

/* 默认隐藏；进入 cart 态时显示 + 同步隐藏 results 主列表/滚动区 */
.cart-view { display: none; }
.main-view[data-state="cart"] .cart-view {
  display: flex;
  flex-direction: column;
  background: var(--ql-surface);
  border: 1px solid var(--ql-border-light);
  border-radius: var(--ql-radius-control);
  overflow: hidden;
  margin-top: 10px;
}
.main-view[data-state="cart"] .rlv-thead,
.main-view[data-state="cart"] .results-card,
.main-view[data-state="cart"] .scroll-zone { display: none !important; }

/* tab active 态同步：cart 态下 rt-tab[cart] active */
.main-view[data-state="cart"] .rt-tab[data-tab="working"]:not(.cv-active-guard) { /* 占位，JS 不改 class 时靠 JS */ }

/* 表头 */
.cart-view__thead {
  background: var(--ql-surface-alt);
  border-bottom: 1px solid var(--ql-border-light);
  padding: 10px 20px;
  font-size: 12px;
  font-weight: 600;
  color: var(--ql-text-muted);
  display: grid;
  grid-template-columns: 36px 220px minmax(260px, 1fr) 280px 110px;
  align-items: center;
  gap: 16px;
}
.cart-view__thead .cv-th-chk { display: flex; align-items: center; justify-content: center; }
.cart-view__thead .cv-th-chk input { width: 14px; height: 14px; accent-color: var(--ql-action); cursor: pointer; }
.cart-view__thead .cv-th-metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  text-align: center;
}
.cart-view__thead .cv-th-act { text-align: center; }

/* 达人行 */
.cart-view__body { background: var(--ql-surface); }
.cv-row {
  display: grid;
  grid-template-columns: 36px 220px minmax(260px, 1fr) 280px 110px;
  align-items: center;
  gap: 16px;
  padding: 14px 20px;
  border-bottom: 1px solid var(--ql-border-light);
  transition: background 0.15s;
}
.cv-row:hover { background: var(--ql-surface-alt); }
.cv-row__chk { display: flex; align-items: center; justify-content: center; }
.cv-row__chk input { width: 14px; height: 14px; accent-color: var(--ql-action); cursor: pointer; }
.cv-row__info { display: flex; align-items: center; gap: 10px; min-width: 0; }
.cv-row__avatar {
  width: 38px; height: 38px; border-radius: 50%;
  flex-shrink: 0;
  color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 15px;
  background: linear-gradient(135deg, var(--ql-avatar-pink-from), var(--ql-avatar-pink-to));
}
.cv-row__avatar[data-color="pink"]   { background: linear-gradient(135deg, var(--ql-avatar-pink-from),   var(--ql-avatar-pink-to)); }
.cv-row__avatar[data-color="purple"] { background: linear-gradient(135deg, var(--ql-avatar-purple-from), var(--ql-avatar-purple-to)); }
.cv-row__avatar[data-color="blue"]   { background: linear-gradient(135deg, var(--ql-avatar-blue-from),   var(--ql-avatar-blue-to)); }
.cv-row__avatar[data-color="green"]  { background: linear-gradient(135deg, var(--ql-avatar-green-from),  var(--ql-avatar-green-to)); }
.cv-row__avatar[data-color="amber"]  { background: linear-gradient(135deg, var(--ql-avatar-amber-from),  var(--ql-avatar-amber-to)); }
.cv-row__vid-thumb[data-color="pink"]   { background: linear-gradient(135deg, var(--ql-avatar-pink-from),   var(--ql-avatar-pink-to)); color: #fff; }
.cv-row__vid-thumb[data-color="purple"] { background: linear-gradient(135deg, var(--ql-avatar-purple-from), var(--ql-avatar-purple-to)); color: #fff; }
.cv-row__vid-thumb[data-color="blue"]   { background: linear-gradient(135deg, var(--ql-avatar-blue-from),   var(--ql-avatar-blue-to)); color: #fff; }
.cv-row__text { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.cv-row__name { font-size: 13.5px; font-weight: 600; color: var(--ql-text); display: flex; align-items: center; gap: 6px; }
.cv-row__tag {
  font-size: 10px; font-weight: 600;
  padding: 1px 6px;
  border-radius: 4px;
  background: var(--ql-ours-bg-subtle);
  color: var(--ql-ours-accent);
  letter-spacing: 0.04em;
}
.cv-row__meta { font-size: 11.5px; color: var(--ql-text-muted); }
.cv-row__vid {
  display: flex;
  gap: 8px;
  min-width: 0;
}
.cv-row__vid-thumb {
  width: 60px; height: 80px;
  border-radius: 6px;
  background: linear-gradient(135deg, #EED5E0, #F4E5EC);
  display: flex; align-items: center; justify-content: center;
  color: var(--ql-ours-accent);
  font-size: 11px;
  flex-shrink: 0;
}
.cv-row__metrics {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  text-align: center;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
.cv-row__metric strong { color: var(--ql-text); font-weight: 700; }
.cv-row__metric span { color: var(--ql-text-muted); font-size: 10.5px; display: block; }
.cv-row__act { display: flex; justify-content: center; }
.cv-row__remove {
  height: 30px; padding: 0 14px;
  font-size: 12px;
  border-radius: var(--ql-radius-pill);
  border: 1px solid var(--ql-border);
  background: var(--ql-surface);
  color: var(--ql-text-secondary);
  cursor: pointer;
  transition: all 0.15s;
}
.cv-row__remove:hover { border-color: var(--ql-error); color: var(--ql-error); background: var(--ql-error-bg); }

/* 已提交订单折叠手风琴 */
.cart-view__orders {
  background: var(--ql-surface-alt);
  border-top: 1px solid var(--ql-border-light);
}
.cv-orders-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 14px 20px;
  font-size: 13px;
  font-weight: 600;
  color: var(--ql-text-muted);
  cursor: pointer;
  user-select: none;
  transition: background 0.15s;
}
.cv-orders-toggle:hover { background: rgba(0,0,0,0.025); }
.cv-orders-arrow {
  width: 12px; height: 12px;
  color: var(--ql-text-tertiary);
  transition: transform 0.2s;
  flex-shrink: 0;
}
.cart-view__orders.is-open .cv-orders-arrow { transform: rotate(90deg); }
.cv-order-badge {
  font-size: 11px; font-weight: 700;
  padding: 1px 8px; height: 18px;
  border-radius: 9999px;
  background: var(--ql-ours-bg-subtle);
  color: var(--ql-ours-accent);
  display: inline-flex; align-items: center;
  font-variant-numeric: tabular-nums;
}
.cv-orders-body {
  display: none;
  padding: 0 20px 12px;
}
.cart-view__orders.is-open .cv-orders-body { display: block; }
.cv-order-card {
  background: var(--ql-surface);
  border: 1px solid var(--ql-border-light);
  border-radius: var(--ql-radius-sm);
  padding: 10px 14px;
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 12.5px;
  cursor: pointer;
  transition: border-color 0.15s;
}
.cv-order-card:hover { border-color: var(--ql-ours-accent); }
.cv-order-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: var(--ql-success);
  flex-shrink: 0;
}
.cv-order-no {
  font-family: var(--ql-font-mono);
  font-weight: 600;
  color: var(--ql-text);
  letter-spacing: 0.3px;
}
.cv-order-tag {
  font-size: 11px;
  padding: 1px 8px;
  border-radius: 9999px;
  background: var(--ql-surface-alt);
  color: var(--ql-text-secondary);
  font-weight: 500;
}
.cv-order-time {
  font-size: 11px;
  color: var(--ql-text-muted);
  margin-left: auto;
  font-variant-numeric: tabular-nums;
}
.cv-order-chev {
  width: 12px; height: 12px;
  color: var(--ql-text-tertiary);
  flex-shrink: 0;
}

/* 底部操作栏 */
.cart-view__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 20px;
  background: var(--ql-surface);
  border-top: 1px solid var(--ql-border-light);
  gap: 16px;
}
.cv-bar-left {
  font-size: 13px;
  color: var(--ql-text-secondary);
}
.cv-bar-left strong {
  color: var(--ql-ours-accent);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.cv-bar-right {
  display: flex;
  gap: 8px;
  align-items: center;
}
.cv-bar-right .ql-btn--primary {
  height: 36px;
  padding: 0 22px;
  border-radius: var(--ql-radius-pill);
  font-weight: 600;
}

.cart-view__empty {
  padding: 60px 20px;
  text-align: center;
  color: var(--ql-text-muted);
  font-size: 13.5px;
}
