:root {
  /* 与网盘拉新工作台 1:1 同源的设计令牌：红黑金 · 白卡 + 深墨导航 */
  --bg-page: #f5f7fa; --bg-card: #fff;
  /* 🔴 品牌铁律（2026-10-18 用户钦定，永久保留）：顶栏与内容区之间的横向浅色缝隙（--cf-gap）
     不论以后怎么改设计都不许删——顶栏直角通栏贴顶，其下一条浅缝（对照参考站实测约 20px），
     侧栏与白卡顶边从缝的下沿开始。改动幅度可以，缝隙本身必须存在。 */
  --cf-gap: 20px; --cf-panel-radius: 14px;
  /* 软化 v9：框架底色与画心底统一为小鹅通实测值 #F5F7FA（浅蓝灰，白卡直接浮在上面） */
  --cf-frame-bg: #f5f7fa;
  --bg-sidebar: #232021; --bg-sidebar-hover: rgba(255, 255, 255, 0.06); --bg-sidebar-active: var(--brand-red);
  --bg-hover: #f9fafb; --bg-tag: #f3f4f6; --border: #e5e7eb; --border-strong: #d1d5db; --border-light: #f0f1f3;
  --text-1: #111827; --text-2: #4b5563; --text-3: #6b7280; --text-4: #9ca3af;
  /* 品牌红黑金（与网盘站 --brand-red/--gold 同值） */
  --brand-red: #c8342c; --brand-red-dark: #a82a23; --brand-red-light: #faeeec;
  --gold: #c9a45c; --gold-dark: #a07f3a; --gold-light: #f9f3e2;
  --nav-bg: #232021; --nav-text: #9b948c; --nav-text-strong: #ece6da;
  --primary: var(--brand-red); --primary-dark: var(--brand-red-dark); --primary-light: var(--brand-red-light);
  --success: #16a34a; --success-bg: #f0fdf4; --warning: #d97706; --warning-bg: #fffbeb; --danger: #dc2626; --danger-bg: #fef2f2;
  --info: #2563eb; --info-bg: #eff6ff; --purple: #8b5cf6; --purple-bg: #f5f0ff;
  /* 蓝色锚点区（页头横幅，与网盘站同值） */
  --hero-bg-start: #eef5fd; --hero-bg-end: #dbeafe; --hero-border: #b5d4f4; --hero-text: #185fa5; --hero-text-muted: #33619c;
  --radius: 10px; --radius-md: 12px; --radius-sm: 6px; --shadow: 0 2px 8px rgba(26, 22, 20, .07), 0 1px 2px rgba(0, 0, 0, .05);
  /* 顶栏高度：与网盘拉新工作台同值，供 sticky 子导航等计算用 */
  --topbar-h: 56px;
}
* { box-sizing: border-box; }

.metric-card.is-clickable {
  cursor: pointer;
  transition: filter .16s ease, box-shadow .16s ease, transform .16s ease;
}
.metric-card.is-clickable:hover,
.metric-card.is-clickable:focus-visible {
  filter: brightness(.97) saturate(1.15);
  box-shadow: 0 3px 10px rgba(31,35,41,.08);
  outline: 0;
  transform: translateY(-1px);
}
.metric-card.is-clickable:focus-visible {
  box-shadow: 0 0 0 3px rgba(200, 52, 44, .16), 0 3px 10px rgba(31,35,41,.08);
}

/* 全局滚动条：保留滚动能力，隐藏横向和纵向两端的箭头按钮。
   🔴 注意：不能写 * { scrollbar-width: thin } —— Chrome 121+ 一旦元素设了 scrollbar-width/color
   就会禁用 ::-webkit-scrollbar 自定义样式、改画原生滚动条（Windows 原生带两端箭头）。
   Firefox 不认 ::-webkit-scrollbar，用 @supports 只给它 thin。 */
@supports (-moz-appearance: none) { * { scrollbar-width: thin; scrollbar-color: #d1d5db transparent; } }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-button,
::-webkit-scrollbar-button:start,
::-webkit-scrollbar-button:end,
::-webkit-scrollbar-button:start:decrement,
::-webkit-scrollbar-button:end:increment,
::-webkit-scrollbar-button:vertical:start,
::-webkit-scrollbar-button:vertical:end,
::-webkit-scrollbar-button:horizontal:start,
::-webkit-scrollbar-button:horizontal:end {
  display: none;
  width: 0;
  height: 0;
  background: transparent;
}
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--text-4); }
::-webkit-scrollbar-corner { background: transparent; }

[hidden] { display: none !important; }
html, body { margin: 0; min-height: 100%; }
body { color: var(--text-1); background: var(--bg-page); font-family: -apple-system, "PingFang SC", "Microsoft YaHei", "微软雅黑", "Segoe UI", sans-serif; font-size: 13px; line-height: 1.5; letter-spacing: 0; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
/* 软化 v8：整页底色浅暖灰，顶栏黑通栏压顶，侧栏与内容区都是浮起的圆角面板（小鹅通同构） */
.app-shell { min-height: 100dvh; display: flex; flex-direction: column; background: var(--cf-frame-bg); }
/* 软化 v8：顶栏下方留 --cf-gap 浅缝，侧栏面板与内容面板左右之间也留缝 */
/* 软化 v11：侧栏左缘贴屏幕最左（无左 padding），侧栏与内容区之间保留缝；顶栏下缝由 padding-top 统一提供，侧栏与白卡顶边严格同线；底部贴满 */
.app-body { flex: 1; display: flex; gap: var(--cf-gap); padding: var(--cf-gap) var(--cf-gap) 0 0; align-items: stretch; }
/* 软化 v11：侧栏黑色直角贴左缘（x=0），高度拉伸填满列高——顶边与内容区白卡顶边严格同线（同一 flex 行 + 同一 padding-top） */
.sidebar { position: sticky; top: calc(56px + var(--cf-gap)); z-index: 10; flex: 0 0 208px; width: 208px; align-self: start; min-height: calc(100dvh - 56px - var(--cf-gap)); max-height: calc(100dvh - 56px - var(--cf-gap)); overflow-y: auto; display: flex; flex-direction: column; color: var(--nav-text); background: var(--nav-bg); }
.brand-mark { width: 32px; height: 32px; display: grid; place-items: center; color: #fff; background: var(--brand-red); border-radius: 6px; font-size: 14px; font-weight: 500; box-shadow: 0 2px 6px rgba(200, 52, 44, .35); }
.brand-copy strong, .brand-copy small { display: block; }.brand-copy strong { color: var(--nav-text-strong); font-size: 13px; font-weight: 600; }.brand-copy small { margin-top: 1px; color: #7d766f; font-size: 10px; }
/* 软化 v12：菜单间距整体回滚 v10（40px/6px/14px 内边距），仅「知识资产」上方组间距保持 v11 收窄的 14px */
.sidebar-nav { flex: 1; padding: 14px 12px; overflow-y: auto; }.nav-label { display: none; }.nav-item-spaced { margin-top: 14px; }
.nav-item { width: 100%; min-height: 40px; margin-bottom: 6px; padding: 0 14px; display: flex; align-items: center; gap: 10px; border: 0; border-radius: var(--radius-sm); color: var(--nav-text); background: transparent; text-align: left; font-size: 13px; transition: background .14s ease, color .14s ease; }.nav-item:last-child { margin-bottom: 0; }.nav-item:hover { color: var(--nav-text-strong); background: var(--bg-sidebar-hover); }.nav-item.is-active { color: #fff; background: var(--brand-red); font-weight: 600; box-shadow: 0 2px 8px rgba(200, 52, 44, .35); }.nav-symbol { width: 16px; color: currentColor; font-size: 15px; text-align: center; opacity: .85; display: inline-flex; align-items: center; justify-content: center; }
/* 分发中心侧栏图标用内联 SVG（纸飞机，2026-10-20 用户钦定）：尺寸与字符图标同框，颜色跟随选中态 */
.nav-symbol svg { width: 16px; height: 16px; display: block; }.nav-count { min-width: 19px; margin-left: auto; padding: 1px 5px; border-radius: 9px; color: rgba(255,255,255,.85); background: rgba(255,255,255,.16); font-size: 10px; text-align: center; }.nav-count.is-danger { color: #fff; background: rgba(226, 75, 74, .35); }
.sidebar-footer { display: flex; align-items: center; gap: 8px; min-height: 56px; padding: 0 16px; color: #7d766f; border-top: 1px solid rgba(255,255,255,.09); font-size: 11px; }.avatar { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: var(--brand-red); font-size: 11px; font-weight: 800; }.sidebar-footer-meta { margin-left: auto; color: #7d766f; font-size: 10px; }
/* 软化 v8：主区透明，浅暖灰从 .app-body 底色透出成为缝隙 */
.main-area { min-width: 0; flex: 1; }
/* 深墨顶栏（与网盘站 shell-topbar 同款）：通栏深色 + 金色刷新胶囊；底边 1px 金线 */
/* 软化 v10：顶栏直角通栏贴顶（无圆角无上缝），其下留 --cf-gap 浅缝；侧栏与白卡顶边都从这条缝的下沿开始 */
.topbar { position: sticky; top: 0; z-index: 20; height: 56px; padding: 0 24px; display: flex; justify-content: space-between; align-items: center; gap: 16px; background: var(--nav-bg); border-bottom: 1px solid rgba(201, 164, 92, .45); }
.topbar-brand { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.topbar-actions { display: flex; gap: 8px; align-items: center; justify-content: flex-end; }.sync-time { color: #7d766f; font-size: 11px; white-space: nowrap; }.connection-pill { display: inline-flex; gap: 6px; align-items: center; min-height: 24px; padding: 0 8px; border-radius: 999px; color: #7ee2a8; background: rgba(74, 222, 128, .12); border: 1px solid rgba(74, 222, 128, .34); font-size: 11px; white-space: nowrap; }.connection-pill.is-error { color: #f2a3a2; background: rgba(226, 75, 74, .14); border-color: rgba(226, 75, 74, .4); }.connection-pill i { width: 6px; height: 6px; display: inline-block; border-radius: 50%; background: #4ade80; }.connection-pill.is-error i { background: #e24b4a; }.topbar-actions .button { min-height: 32px; border-radius: var(--radius-sm); }.topbar-actions .button-sm { padding: 0 10px; }
/* 软化 v8：内容区 = 圆角暖灰画心，浮在浅暖灰底上；缝隙由 .app-body 的 padding + gap 统一提供 */
/* 软化 v9：画心与框架底同色（#F5F7FA），画心概念消失 = 小鹅通原生观感「浅蓝灰底 + 白卡浮上」；底部不再留缝（侧栏贴边） */
/* 软化 v12：上内边距 20px 收为 0（顶边不齐根因在此）——顶栏下缝由 .app-body 的 padding-top 统一提供，
   侧栏顶边与各页首张白卡顶边从此是数学上的同一条线；左右 24px 与底部 56px 保持不动。 */
.page-content { margin: 0; padding: 0 24px 56px; border-radius: 0; background: var(--bg-page); min-height: calc(100dvh - 56px - var(--cf-gap)); }.page { display: none; }.page.is-active { display: block; }.page-header { margin-bottom: 12px; display: flex; justify-content: space-between; gap: 20px; align-items: end; }.page-title { margin: 0 0 4px; font-size: 21px; line-height: 1.2; }.page-subtitle { margin: 0; color: var(--text-3); font-size: 12px; }.page-actions { display: flex; gap: 8px; align-items: center; }
/* 按钮体系对齐网盘站：36px 标准高 / 品牌红主操作 / 深灰黑 primary */
.button { min-height: 36px; padding: 0 16px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 1px solid var(--border-strong); border-radius: var(--radius-sm); color: var(--text-1); background: #fff; font-size: 13px; font-weight: 600; white-space: nowrap; transition: background .15s, border-color .15s, color .15s, box-shadow .15s; }.button:hover { border-color: var(--text-4); background: var(--bg-hover); }.button-primary { color: #fff; border-color: var(--brand-red); background: var(--brand-red); }.button-primary:hover { border-color: var(--brand-red-dark); background: var(--brand-red-dark); }.button-accent, .button.button-accent { color: #fff; border-color: var(--brand-red); background: var(--brand-red); }.button-accent:hover { border-color: var(--brand-red-dark); background: var(--brand-red-dark); }.button-sm { min-height: 32px; padding: 0 12px; font-size: 12px; }.button-text { padding: 0; border: 0; color: var(--info); background: transparent; }.button-danger { color: var(--danger); border-color: #fecaca; background: var(--danger-bg); }.button-default { }.button-ghost { border-color: transparent; background: transparent; color: var(--text-2); }.button-ghost:hover { background: var(--bg-tag); border-color: transparent; color: var(--text-1); }.button-icon { font-size: 15px; line-height: 1; }
/* 统一工作流（C 版一期）：金色按钮 = AI 判别专属操作色 */
.button-gold, .button.button-gold { color: #fff; border-color: var(--gold-dark); background: var(--gold); }
.button-gold:hover { border-color: #8a6c2e; background: var(--gold-dark); }
.button-gold:disabled { opacity: .55; cursor: not-allowed; }

/* ============ s78：顶部待办按钮计数徽章 + 批处理配置面板 ============ */
/* 顶部按钮内嵌计数徽章：白底按钮统一浅灰徽章（s78b：AI 判别待办按钮也改白底黑字，金底徽章退役） */
.tb-pill { min-width: 22px; padding: 1px 7px; border-radius: 999px; background: var(--bg-tag, #eef2f4); color: var(--text-2, #5a6e77); font-size: 11px; font-weight: 700; line-height: 16px; text-align: center; display: inline-block; }
/* 弹窗内文案与分组标签 */
.batch-sub { margin: 0 0 14px; color: var(--text-3); font-size: 12px; }
.batch-sub b { color: var(--text-1); }
.batch-label { margin: 0 0 8px; font-size: 11.5px; font-weight: 800; color: var(--text-2); letter-spacing: .3px; }
/* 范围选项（白底卡片，含计数徽章；0 计数置灰不可选） */
.batch-opts { display: grid; gap: 7px; margin-bottom: 4px; }
.batch-opt { display: flex; align-items: center; gap: 9px; padding: 8px 11px; border: 1px solid var(--border-light); border-radius: 8px; background: #fff; font-size: 13px; cursor: pointer; transition: border-color .12s, background .12s; }
.batch-opt input { accent-color: var(--brand-red); margin: 0; }
.batch-opt:hover { border-color: var(--border-strong); }
.batch-opt:has(input:checked) { border-color: #b6d7de; background: #eef7fa; }
.batch-opt.is-dis { opacity: .45; pointer-events: none; }
.batch-opt .batch-cnt { margin-left: auto; min-width: 30px; text-align: center; padding: 2px 8px; border-radius: 999px; background: var(--bg-tag, #eef2f4); color: var(--text-2, #5a6e77); font-size: 11px; font-weight: 750; }
.batch-opt:has(input:checked) .batch-cnt { background: #fff; color: var(--text-1); }
.batch-opt .batch-rec { padding: 2px 7px; border-radius: 5px; background: var(--gold-light); color: var(--gold-dark); font-size: 10.5px; font-weight: 800; }
/* 数量分段选择器 + 自定义输入 */
.batch-seg-row { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.batch-seg { height: 32px; padding: 0 13px; border: 1px solid var(--border); border-radius: 8px; background: #fff; color: var(--text-2); font: inherit; font-size: 12.5px; font-weight: 700; cursor: pointer; transition: border-color .12s, background .12s, color .12s; }
.batch-seg:hover { border-color: var(--border-strong); }
.batch-seg.on { border-color: var(--brand-red); background: var(--brand-red-light); color: var(--brand-red); }
.batch-custom { display: none; align-items: center; gap: 6px; }
.batch-custom.show { display: inline-flex; }
.batch-custom input { width: 74px; height: 32px; padding: 0 9px; border: 1px solid var(--border); border-radius: 8px; font: inherit; font-size: 13px; text-align: center; outline: none; }
.batch-custom input:focus { border-color: var(--brand-red); box-shadow: 0 0 0 2px rgba(200, 52, 44, .12); }
.batch-unit { font-size: 12px; color: var(--text-3); }
/* 说明与提醒 */
.batch-note { margin-top: 10px; padding: 8px 11px; border-radius: 8px; background: var(--bg-tag, #f3f7f9); color: var(--text-2); font-size: 11.5px; line-height: 1.6; }
.batch-note-warn { background: #fdf3d8; color: #9a6b12; }
.batch-note[hidden] { display: none; }
/* 弹窗底部预计条 */
.batch-est { margin-right: auto; color: var(--text-3); font-size: 12px; align-self: center; }
.batch-est b { color: var(--brand-red); }
.modal-footer { align-items: center; }

/* ============ s78：批量执行结果卡（完成反馈） ============ */
/* 用户确认：两按钮间距 12px，取消按钮与主按钮之间留足呼吸感 */
.batch-done-actions { display: flex; justify-content: flex-end; gap: 12px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border-light); }
/* s78b1 用户指定：「查看失败原因」白底黑字（与「知道了」同款，不做金/红主按钮） */
.batch-done-secondary { color: var(--text-1); border-color: var(--border-strong); background: #fff; }
.batch-done-secondary:hover { border-color: var(--text-4); background: var(--bg-hover); color: var(--text-1); }
.batch-stats { display: flex; gap: 9px; margin: 14px 0 4px; }
.batch-stat { flex: 1; padding: 11px 12px; border-radius: 9px; background: var(--bg-tag, #f3f7f9); text-align: center; }
.batch-stat b { display: block; font-size: 19px; color: var(--text-1); }
.batch-stat span { font-size: 11px; color: var(--text-3); }
.batch-stat.bad { background: var(--brand-red-light); }
.batch-stat.bad b { color: var(--brand-red); }
.batch-done-ic { width: 44px; height: 44px; border-radius: 50%; background: var(--success-bg, #e9f5f0); color: #087b57; font-size: 21px; font-weight: 800; line-height: 44px; text-align: center; margin-bottom: 11px; }

/* ============ 统一流水线索引条（C 版一期核心 UI） ============ */
.pipeline-card .card-header { min-height: 42px; }
.pipeline-stages { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; padding: 14px 16px 10px; }
.pipe-stage { display: flex; flex-direction: column; align-items: center; gap: 2px; min-height: 58px; padding: 8px 4px; border: 1px solid var(--border-light); border-radius: 8px; background: #fafbfc; transition: border-color .15s, background .15s, box-shadow .15s; }
.pipe-stage strong { color: var(--text-1); font-size: 20px; font-weight: 800; line-height: 1.1; }
.pipe-stage span { color: var(--text-3); font-size: 11px; }
.pipe-stage:hover { border-color: var(--border-strong); background: #fff; }
.pipe-stage.is-active { border-color: var(--info); background: var(--info-bg); box-shadow: 0 0 0 2px rgba(37, 99, 235, .12); }
.pipe-stage.is-active span { color: var(--info); }
.pipe-stage.sp-blue strong { color: var(--info); }
.pipe-stage.sp-teal strong { color: #0d9488; }
.pipe-stage.sp-purple strong { color: var(--purple); }
.pipe-stage.sp-amber strong { color: var(--warning); }
.pipe-stage.sp-green strong { color: var(--success); }
.pipe-stage.sp-gray strong { color: var(--text-3); }
.pipe-stage.sp-red strong { color: var(--danger); }
/* s154：项目归属筛选行（pipeline-fits/pipe-fit）拆除——project_fit 筛选概念退役；
   素材行 AI 归属小标签（fit-tag 系）保留，是判别结果的展示层。 */

/* ============ 统一素材库：项目归属 AI 标签列 ============ */
.cell-fit { white-space: nowrap; }
.fit-tag { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 11px; font-weight: 500; line-height: 18px; }
.fit-tag-both { color: #8a6c2e; background: var(--gold-light); }
.fit-tag-content { color: var(--info); background: var(--info-bg); }
.fit-tag-netdisk { color: var(--purple); background: var(--purple-bg); }
.fit-tag-skip { color: var(--text-3); background: var(--bg-tag); }
.fit-tag-unjudged { color: var(--text-4); background: transparent; border: 1px dashed var(--border-strong); }
.cell-fit em { margin-left: 5px; color: var(--text-3); font-size: 11px; font-style: normal; }
.fit-judge-btn { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; margin-left: 6px; padding: 0; border: 1px solid rgba(201, 164, 92, .5); border-radius: 6px; color: var(--gold-dark); background: #fff; font-size: 12px; font-weight: 600; }
.fit-judge-btn:hover { color: #fff; background: var(--gold); border-color: var(--gold-dark); }
.material-table th .count { margin-left: 4px; padding: 0 5px; border-radius: 999px; color: var(--gold-dark); background: var(--gold-light); font-size: 10px; font-weight: 600; vertical-align: 1px; }
/* 软化 v6：卡片去描边——靠浅阴影和暖灰底衬白卡分区，边界不再用线画 */
.card { border: 0; border-radius: var(--radius); background: var(--bg-card); box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }.card-header { min-height: 46px; padding: 0 16px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border-light); }.card-title { font-size: 14px; font-weight: 600; }.card-title .count { margin-left: 7px; color: var(--text-4); font-size: 11px; font-weight: 400; }.card-body { padding: 16px; }.card-link { color: var(--info); cursor: pointer; font-size: 11px; }
.metrics-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
/* 软化 v13：无框蓝色文字链接按钮（卡片头动作区用）——替代白底描边小按钮 */
/* v18（A 组定版）：卡头排序/查看全部 = 15px/600 蓝字，与「今日待处理队列」标题（覆盖段 15px/600）完全同级 */
.button-text-link { min-height: 24px; padding: 0; display: inline-flex; align-items: center; border: 0; color: var(--info); background: transparent; font-size: 15px; font-weight: 600; white-space: nowrap; cursor: pointer; }
.button-text-link:hover { color: #1d4ed8; text-decoration: underline; }
/* 软化 v9：数据总览白色大卡内的指标格（小鹅通经营数据同构：标签小字在上、数值大字在下、无框线）。
   警报项（red=待人工审核 / coral=自动化失败）在白卡内保留浅红圆角块 + 品牌红竖条。 */
.ov-metric { position: relative; min-height: 74px; padding: 10px 12px 10px 14px; border-radius: 8px; }
/* 软化 v13：整格灰底悬浮删除——改为数字本身可点击变色（鼠标悬停数字变蓝，暗示可点），点击热区仍是整格 */
.ov-metric:hover { background: transparent; }
.ov-metric-value { display: block; margin-top: 6px; color: var(--text-1); font-size: 28px; font-weight: 800; line-height: 1.1; transition: color .12s ease; }
.ov-metric:hover .ov-metric-value { color: var(--info); cursor: pointer; }
.ov-metric-label { display: block; color: var(--text-3); font-size: 12px; font-weight: 600; }
.ov-metric-trend { display: block; margin-top: 8px; color: var(--text-4); font-size: 11px; }
/* 软化 v13：警报格红字保留，红竖线删除（用户要求）；灰底 hover 一并取消 */
.ov-metric-alert { background: transparent; }
.ov-metric-alert .ov-metric-label, .ov-metric-alert .ov-metric-value, .ov-metric-alert .ov-metric-trend { color: #a32d2d; }
.ov-metric-alert:hover .ov-metric-value { color: var(--info); }
.flywheel { padding: 22px 20px; display: flex; align-items: center; justify-content: space-between; gap: 8px; overflow-x: auto; }.flywheel-stage { min-width: 105px; padding: 3px 5px; text-align: center; cursor: pointer; }.flywheel-stage:hover .flywheel-stage-count { color: var(--info); }.stage-icon { width: 30px; height: 30px; margin: 0 auto 7px; display: grid; place-items: center; border-radius: 50%; font-size: 10px; font-weight: 800; }/* 软化 v9：飞轮阶段节点改浅蓝灰圆点（小鹅通底色同款），在白卡上区分 */
.stage-1, .stage-2, .stage-3, .stage-4, .stage-5, .stage-6 { color: var(--text-3); background: var(--cf-frame-bg); }.flywheel-stage-count { font-size: 21px; font-weight: 800; line-height: 1.1; transition: color .12s ease; }.flywheel-stage-name { margin-top: 5px; color: var(--text-3); font-size: 11px; white-space: nowrap; }.flywheel-arrow { color: #c6cad2; font-size: 18px; }
.queue-list { padding: 0 16px; }.queue-item { min-height: 66px; padding: 12px 0; display: grid; grid-template-columns: 3px minmax(0,1fr) minmax(158px,auto); gap: 12px; align-items: center; border-bottom: 1px solid var(--border-light); cursor: pointer; }.queue-item:last-child { border-bottom: 0; }.queue-item:hover { background: #eef1f5; }.queue-priority { align-self: stretch; border-radius: 3px; }.queue-priority.high { background: var(--danger); }.queue-priority.medium { background: var(--warning); }.queue-priority.low { background: var(--info); }.queue-title { overflow: hidden; color: var(--text-1); font-size: 12px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }.queue-title-link { display: block; color: #2563eb; text-decoration: none; }.queue-title-link:hover { color: #1d4ed8; text-decoration: underline; }.queue-meta { margin-top: 5px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center; color: var(--text-3); font-size: 11px; }/* Queue header and row action buttons share the same fixed column widths (88px + 64px,
   gap 8px). Both containers are right-aligned inside the same 16px card padding, so the
   "查看详情" column sits exactly under "按优先级排序" and their centerlines match. */
.queue-card .card-header .page-actions { display: grid; grid-template-columns: 88px 64px; gap: 8px; }
.queue-card .card-header .page-actions .button { width: 100%; padding: 0; justify-content: center; }
.queue-actions { display: grid; grid-template-columns: 88px minmax(64px, max-content); gap: 8px; align-items: center; justify-items: stretch; }.queue-actions .button { width: 100%; padding: 0; justify-content: center; }
/* v14b：队列命令按钮（生成内容/进入审核）去框，与「查看详情」同盒；右列宽随文字自适应 */
.queue-actions .queue-command-link { width: 100%; justify-content: center; }
/* v18（B 组定版）：行内三颗按钮（查看详情/进入审核/生成内容）常态统一黑字 13px/500，
   悬停统一变蓝 + 下划线——三颗物理同款，基线齐。 */
.queue-actions .button-text, .queue-actions .queue-command-link { color: var(--text-1); font-size: 13px; font-weight: 500; }
.queue-actions .button-text:hover, .queue-actions .queue-command-link:hover { color: var(--info); text-decoration: underline; background: transparent; border: 0; }
.badge, .tag { display: inline-flex; gap: 5px; align-items: center; min-height: 21px; padding: 0 6px; border-radius: 3px; color: var(--text-3); background: var(--bg-tag); font-size: 10px; white-space: nowrap; }.badge::before { width: 5px; height: 5px; display: inline-block; border-radius: 50%; content: ""; background: currentColor; }.badge-success { color: #087b57; background: var(--success-bg); }.badge-warning { color: #9a5c00; background: var(--warning-bg); }.badge-danger { color: #b42318; background: var(--danger-bg); }.badge-info { color: #1d4ed8; background: var(--info-bg); }.badge-primary { color: var(--brand-red-dark); background: var(--primary-light); }.badge-purple { color: #6d28d9; background: var(--purple-bg); }.tag-blue { color: #1d4ed8; background: var(--info-bg); }.tag-green { color: #087b57; background: var(--success-bg); }.tag-orange { color: #9a5c00; background: var(--warning-bg); }.tag-purple { color: #6d28d9; background: var(--purple-bg); }
.table-card { overflow: hidden; }.table-toolbar { min-height: 50px; padding: 8px 12px; display: flex; gap: 8px; align-items: center; border-bottom: 1px solid var(--border-light); }
/* s69y：素材库筛选行两行合一——流式布局窄屏自动折行；竖分隔区分精确筛选与快捷视图 */
.inbox-toolbar { flex-wrap: wrap; row-gap: 8px; border-bottom: 0; min-height: 0; padding: 10px 12px; }
.inbox-toolbar .search-box { min-width: 170px; flex: 0 1 190px; }
.toolbar-sep { width: 1px; height: 16px; background: var(--border); margin: 0 2px; flex: 0 0 auto; }
.chip-count { padding: 0 6px; min-width: 18px; text-align: center; border-radius: 999px; background: var(--bg-tag); color: var(--text-3); font-size: 10px; font-weight: 600; line-height: 16px; }
.filter-chip.on .chip-count { background: #fff; color: var(--primary); }
.filter-chip.is-empty { opacity: .55; }.view-toolbar { padding: 8px 12px 5px; display: flex; gap: 18px; flex-wrap: wrap; border-bottom: 0; }.view-group { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 8px; align-items: center; flex-wrap: wrap; }.view-label { height: 27px; min-height: 27px; margin-right: 0; padding: 0 0 5px; display: inline-flex; align-items: center; box-sizing: border-box; color: var(--text-1); font-size: 10px; font-weight: 700; line-height: 1.4; }.view-tabs { height: 27px; display: flex; gap: 16px; padding: 0; overflow-x: auto; align-items: center; position: relative; top: 2px; border-radius: 0; background: transparent; }.view-tab { height: 27px; min-height: 27px; padding: 0 0 5px; display: inline-flex; align-items: center; box-sizing: border-box; border: 0; border-bottom: 2px solid transparent; appearance: none; color: var(--text-3); border-radius: 0; cursor: pointer; background: transparent; font-size: 11px; line-height: 1.4; white-space: nowrap; }.view-tab:hover { color: var(--text-1); background: transparent; }.view-tab.is-active { color: var(--brand-red); background: transparent; box-shadow: none; font-weight: 600; border-bottom-color: var(--brand-red); }.search-box { height: 30px; min-width: 210px; padding: 0 9px; display: flex; gap: 6px; align-items: center; border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text-4); background: #fff; }.search-box input { width: 100%; min-width: 0; border: 0; outline: 0; color: var(--text-1); background: transparent; font-size: 11px; }.filter-select { height: 30px; padding: 0 8px; border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text-2); background: #fff; outline: 0; font-size: 11px; }.flex-spacer { flex: 1; }
.table-wrap { max-width: 100%; overflow-x: auto; }.data-table { width: 100%; min-width: 1050px; border-collapse: collapse; table-layout: fixed; font-size: 11px; }.data-table th { height: 38px; padding: 0 12px; color: var(--text-3); background: var(--bg-page); border-bottom: 1px solid var(--border); font-size: 10px; font-weight: 600; text-align: left; white-space: nowrap; }.data-table td { height: 54px; padding: 8px 12px; color: var(--text-2); border-bottom: 1px solid var(--border-light); vertical-align: middle; }.data-table tbody tr { cursor: pointer; }.data-table tbody tr:hover { background: var(--hero-bg-start); }.data-table .cell-title { display: block; max-width: 280px; overflow: hidden; color: var(--text-1); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }.material-table { min-width: 1180px; }.material-table th, .material-table td { min-width: 0; }.material-table .material-col-original_title { width: 280px; }.material-table .material-col-source_type { width: 110px; }.material-table .material-col-source_url { width: 165px; }.material-table .material-col-collected_at { width: 145px; }.material-table .material-col-parse_status, .material-table .material-col-parse_quality { width: 92px; }.material-table .material-col-productivity_score { width: 105px; }.material-table .material-col-intake_suggestion, .material-table .material-col-review_status, .material-table .material-col-recommended_action, .material-table .material-col-content_status { width: 112px; }.material-table td .badge, .material-table td .tag { max-width: 100%; overflow: hidden; text-overflow: ellipsis; }.material-table .cell-link { display: block; }.cell-id { color: var(--text-4); font-family: Consolas, monospace; font-size: 10px; }.cell-link { max-width: 150px; overflow: hidden; color: var(--primary); text-overflow: ellipsis; white-space: nowrap; }.cell-title-link { display: block; max-width: 100%; overflow: hidden; color: #2563eb; text-overflow: ellipsis; white-space: nowrap; text-decoration: none; }.cell-title-link:hover { color: #1d4ed8; text-decoration: underline; }.score { min-width: 55px; display: flex; align-items: center; gap: 5px; }.score-value { min-width: 18px; flex: none; color: var(--text-2); font-size: 10px; white-space: nowrap; }.score-track { width: 34px; flex: none; height: 4px; overflow: hidden; border-radius: 4px; background: #edf0f2; }.score-track i { height: 100%; display: block; background: var(--success); }.score-track i.is-mid { background: var(--warning); }.score-track i.is-low { background: var(--text-4); }.empty-state { padding: 45px 20px; color: var(--text-4); text-align: center; }.empty-icon { margin-bottom: 8px; color: #c4c8d0; font-size: 26px; }
.pagination { min-height: 48px; padding: 0 14px; display: flex; gap: 14px; justify-content: space-between; align-items: center; color: var(--text-4); font-size: 11px; }.pager-total { white-space: nowrap; }.pagination-controls { display: flex; gap: 4px; align-items: center; }.page-button { min-width: 25px; height: 25px; padding: 0 5px; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 6px; color: var(--text-3); background: #fff; cursor: pointer; font-size: 11px; }.page-button:hover:not(.is-active):not(.is-disabled) { border-color: var(--primary); color: var(--primary); }.page-button.is-active { color: #fff; border-color: var(--primary); background: var(--primary); cursor: default; }.page-button.is-disabled { color: #d1d5db; cursor: default; }.pager-ellipsis { min-width: 16px; color: var(--text-4); text-align: center; }.pager-size .filter-select { height: 25px; font-size: 11px; }.pager-jump { display: inline-flex; gap: 5px; align-items: center; }.pager-jump-input { width: 38px; height: 25px; padding: 0 6px; box-sizing: border-box; border: 1px solid var(--border); border-radius: 6px; outline: 0; color: var(--text-1); background: #fff; text-align: center; font-size: 11px; }.pager-jump-input:focus { border-color: var(--primary); }
.production-toolbar { margin-bottom: 16px; }.kanban { display: flex; gap: 12px; padding-bottom: 8px; overflow-x: auto; scrollbar-width: thin; -ms-overflow-style: auto; }.kanban::-webkit-scrollbar { display: block; width: 8px; height: 8px; }.kanban::-webkit-scrollbar-button, .kanban::-webkit-scrollbar-button:start, .kanban::-webkit-scrollbar-button:end, .kanban::-webkit-scrollbar-button:start:decrement, .kanban::-webkit-scrollbar-button:end:increment, .kanban::-webkit-scrollbar-button:horizontal:start, .kanban::-webkit-scrollbar-button:horizontal:end { display: none; width: 0; height: 0; background: transparent; }.kanban-column { flex: 0 0 220px; min-height: 420px; border: 1px solid var(--border); border-radius: var(--radius); background: #eef0f3; }.kanban-column-header { min-height: 42px; padding: 0 11px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border); }.kanban-column-title { font-size: 11px; font-weight: 700; }.kanban-column-count { color: var(--text-4); font-size: 11px; }.kanban-column-body { padding: 8px; display: grid; gap: 8px; }.kanban-card { padding: 11px; border: 1px solid var(--border); border-radius: 8px; background: #fff; box-shadow: var(--shadow); cursor: pointer; }.kanban-card:hover { border-color: var(--primary); }.kanban-card-title { color: var(--text-1); font-size: 11px; font-weight: 600; line-height: 1.5; }.kanban-card-meta { margin-top: 9px; display: flex; gap: 5px; flex-wrap: wrap; align-items: center; color: var(--text-4); font-size: 10px; }.kanban-error { margin: 9px -11px -11px; padding: 6px 10px; color: #b42318; background: var(--danger-bg); font-size: 10px; }.production-list { display: none; }.production-list.is-visible { display: block; }
.analytics-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 16px; }.chart { min-height: 248px; }.chart-body { padding: 16px; }.bar-chart { height: 142px; padding-top: 12px; display: flex; gap: 12px; align-items: end; border-bottom: 1px solid var(--border); }.bar-item { flex: 1; height: 100%; display: flex; flex-direction: column; justify-content: end; align-items: center; gap: 5px; }.bar { width: 100%; max-width: 38px; min-height: 3px; border-radius: 3px 3px 0 0; background: #f3c7c4; }.bar.is-primary { background: var(--primary); }.bar-label { color: var(--text-4); font-size: 10px; }.chart-legend { margin-top: 13px; display: grid; grid-template-columns: repeat(2,1fr); gap: 7px 18px; }.legend-item { display: flex; gap: 6px; align-items: center; color: var(--text-2); font-size: 11px; }.legend-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--primary); }.stat-strip { margin-top: 14px; display: flex; gap: 16px; flex-wrap: wrap; }.small-stat { color: var(--text-3); font-size: 11px; }.small-stat strong { display: block; margin-bottom: 2px; color: var(--text-1); font-size: 15px; }.progress-list { display: grid; gap: 12px; }.progress-row { display: grid; grid-template-columns: 78px 1fr 36px; gap: 9px; align-items: center; color: var(--text-2); font-size: 11px; }.progress-track { height: 7px; overflow: hidden; border-radius: 4px; background: #f0f1f3; }.progress-track i { height: 100%; display: block; background: var(--danger); }.feedback-empty { padding: 25px 10px; color: var(--text-4); text-align: center; background: var(--bg-page); font-size: 11px; }
.asset-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 14px; }.asset-card { padding: 16px; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; box-shadow: var(--shadow); }.asset-card-head { display: flex; gap: 10px; align-items: center; }.asset-icon { width: 34px; height: 34px; display: grid; place-items: center; border-radius: var(--radius-sm); color: var(--brand-red); background: var(--primary-light); font-weight: 800; }.asset-card h3 { margin: 0; font-size: 13px; }.asset-card p { margin: 2px 0 0; color: var(--text-4); font-size: 10px; }.asset-stats { margin: 17px 0 14px; display: grid; grid-template-columns: repeat(3,1fr); gap: 9px; }.asset-stat-label { color: var(--text-4); font-size: 10px; }.asset-stat-value { margin-top: 2px; color: var(--text-1); font-size: 14px; font-weight: 700; }.asset-card-actions { display: flex; gap: 7px; border-top: 1px solid var(--border-light); padding-top: 12px; }
.task-list { display: grid; gap: 8px; }.task-row { padding: 13px 14px; display: grid; grid-template-columns: 28px minmax(190px,1.3fr) 120px 100px minmax(150px,1fr) 100px auto; gap: 12px; align-items: center; border: 1px solid var(--border); border-radius: var(--radius); background: #fff; }.task-main strong { display: block; font-size: 12px; }.task-main small, .task-value { color: var(--text-3); font-size: 10px; }.task-error { color: #b42318; font-size: 10px; }.task-select { display: grid; place-items: center; }.task-select input, .task-select-all input { accent-color: var(--primary); }.task-select-all { display: inline-flex; gap: 6px; align-items: center; color: var(--text-3); font-size: 11px; }.task-selected-count { color: var(--text-4); font-size: 11px; }.system-list { display: grid; gap: 0; }.system-row { min-height: 46px; padding: 0 14px; display: flex; align-items: center; gap: 12px; border-bottom: 1px solid var(--border-light); }.system-row:last-child { border-bottom: 0; }.system-row span { flex: 1; font-size: 12px; }
.automation-tabs { width: max-content; min-height: 30px; margin-bottom: 14px; padding: 0; display: flex; gap: 20px; border: 0; border-radius: 0; background: transparent; }.automation-tabs .view-tab { min-height: 30px; padding: 0 0 5px; border: 0; border-bottom: 2px solid transparent; border-radius: 0; appearance: none; color: var(--text-3); background: transparent; font-size: 13px; }.automation-tabs .view-tab:hover { color: var(--text-1); background: transparent; }.automation-tabs .view-tab.is-active { color: var(--primary); background: transparent; box-shadow: none; font-weight: 600; border-bottom-color: var(--primary); }
.source-management { overflow: hidden; }.source-management .card-header { min-height: 70px; padding: 12px 32px 12px 16px; align-items: center; }.source-management .card-header > div:first-child { min-width: 0; }.source-header-copy { flex: 1; min-width: 0; }.source-header-actions { flex: 0 0 auto; display: flex; align-items: center; }.source-management .card-subtitle { margin: 3px 0 0; color: var(--text-4); font-size: 12px; }.source-management > .table-toolbar { min-height: 46px; padding: 7px 16px; background: #fff; }.source-table { min-width: 1480px; }.source-table th, .source-table td { vertical-align: middle; }.source-table th { height: 36px; padding: 0 11px; text-align: left; }.source-table td { height: 52px; padding: 7px 11px; }.source-table .source-name-button { display: block; max-width: 190px; padding: 0; border: 0; background: transparent; text-align: left; cursor: pointer; }.source-table .source-name-button:hover { color: var(--primary); }.source-table .cell-id { display: block; margin-top: 4px; }.source-table .empty-state { min-height: 116px; padding: 30px 20px; }.source-actions { display: grid; gap: 6px; align-content: center; }.source-failure { max-width: 180px; color: #b42318 !important; }.source-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 16px; margin-top: 16px; }.source-form-field { display: grid; gap: 5px; min-width: 0; color: var(--text-3); font-size: 12px; }.source-form-field > span { font-weight: 600; }.source-form-field > span::after { color: #b42318; }.source-form-control { width: 100%; min-height: 34px; padding: 6px 9px; border: 1px solid var(--border); border-radius: 4px; outline: 0; color: var(--text-1); background: #fff; font-size: 13px; }.source-form-control:focus { border-color: var(--primary); box-shadow: 0 0 0 2px var(--primary-light); }.source-form-textarea { min-height: 92px; resize: vertical; line-height: 1.55; }.source-form-full { grid-column: 1 / -1; }.source-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; margin-top: 16px; border: 1px solid var(--border-light); background: var(--border-light); }.source-detail-item { min-width: 0; padding: 11px 12px; background: #fff; }.source-detail-item span { display: block; margin-bottom: 4px; color: var(--text-4); font-size: 11px; }.source-detail-item strong { display: block; color: var(--text-1); font-size: 13px; font-weight: 500; overflow-wrap: anywhere; }
/* s198 浮层层级铁律：列宽竖线虚影 z42 > 表头/行悬停 z41；抽屉遮罩 43 / 抽屉 44 整体浮于竖线之上；弹窗 46 保证从抽屉内唤起的确认框不被抽屉盖住；toast 50 仍在最上 */
.drawer-overlay, .modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.3); }
.drawer-overlay { z-index: 43; }
.modal-overlay { z-index: 46; }
.drawer { position: fixed; inset: 0 0 0 auto; z-index: 44; width: min(560px,100vw); display: flex; flex-direction: column; transform: translateX(100%); transition: transform .22s ease; background: #fff; box-shadow: -8px 0 24px rgba(0,0,0,.12); }.drawer.is-open { transform: translateX(0); }.drawer-header { min-height: 72px; padding: 13px 20px; display: flex; gap: 12px; align-items: start; border-bottom: 1px solid var(--border); }.drawer-title { flex: 1; color: var(--text-1); font-size: 15px; font-weight: 700; line-height: 1.4; }.drawer-meta { margin-top: 5px; display: flex; gap: 7px; flex-wrap: wrap; align-items: center; color: var(--text-3); font-size: 10px; }.drawer-close { width: 28px; height: 28px; border: 0; border-radius: 4px; color: var(--text-3); background: transparent; font-size: 20px; }.drawer-close:hover { background: var(--bg-hover); }.drawer-tabs { display: flex; gap: 6px; padding: 12px 20px 0; overflow-x: auto; border-bottom: 1px solid var(--border); }.drawer-tab { margin-bottom: 10px; padding: 6px 14px; color: var(--text-3); border: 1px solid transparent; border-radius: 999px; cursor: pointer; font-size: 11px; white-space: nowrap; background: var(--bg-tag); }.drawer-tab:hover { color: var(--text-1); }.drawer-tab.is-active { color: var(--primary); background: var(--primary-light); border-color: var(--brand-red-light); font-weight: 600; }
/* s69x 方案A：状态带（琥珀金，一句话讲清状态与下一步） */
.drawer-band { display: flex; align-items: center; gap: 8px; padding: 9px 20px; background: var(--gold-light); border-bottom: 1px solid #efe3c2; color: var(--gold-dark); font-size: 11px; font-weight: 600; }.drawer-band-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--gold); flex: 0 0 auto; }
/* s69x 方案A：AI 摘要金边卡（替代灰底大块） */
.drawer-quote { border: 1px solid #eed9b8; border-left: 3px solid var(--gold); border-radius: 10px; background: #fffdf6; padding: 12px 14px; color: var(--text-2); font-size: 12px; line-height: 1.8; white-space: pre-wrap; word-break: break-word; }
/* s69x 方案A：核心信息小卡片网格（替代裸文本两列） */
.drawer-stat-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }@media (max-width: 560px) { .drawer-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }.drawer-stat { min-width: 0; padding: 9px 10px; border: 1px solid var(--border-light); border-radius: 8px; background: #fff; }.drawer-stat-k { display: block; margin-bottom: 4px; color: var(--text-4); font-size: 10px; }.drawer-stat-v { display: block; font-size: 11.5px; overflow-wrap: anywhere; }
/* s69x：原始内容跳转链接（概览 → 原文页签） */
.drawer-raw-link { display: inline-block; margin-top: 10px; color: var(--info); font-size: 11px; text-decoration: none; }.drawer-raw-link:hover { text-decoration: underline; }
/* s69x 入口③：首次引导气泡（4.5s 自动淡出动画，点击即消失） */
.drawer-guide-bubble { position: absolute; top: 12px; right: 16px; z-index: 5; max-width: 300px; padding: 10px 14px; border-radius: 10px; background: #1e2128; color: #fff; font-size: 11.5px; line-height: 1.6; cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.18); animation: drawerGuideOut .35s ease 4.5s forwards; }@keyframes drawerGuideOut { to { opacity: 0; visibility: hidden; } }.drawer-body { flex: 1; padding: 18px 20px; overflow-y: auto; }.detail-section { margin-bottom: 24px; }.detail-section-title { margin-bottom: 11px; color: var(--text-1); font-size: 12px; font-weight: 700; }.detail-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px 16px; }.detail-field { min-width: 0; }.detail-label { display: block; margin-bottom: 3px; color: var(--text-4); font-size: 10px; }.detail-value { color: var(--text-1); font-size: 11px; overflow-wrap: anywhere; }.detail-value.multiline { padding: 10px; white-space: pre-wrap; border-radius: 4px; color: var(--text-2); background: var(--bg-page); line-height: 1.65; }.score-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 8px; }.score-item { padding: 10px; border: 1px solid var(--border-light); border-radius: 4px; background: #fff; }.score-item-label { color: var(--text-4); font-size: 10px; }.score-item-value { margin-top: 4px; color: var(--text-1); font-size: 17px; font-weight: 800; }.failure-box { padding: 10px 12px; border-radius: 4px; color: #b42318; background: var(--danger-bg); font-size: 11px; }.field-table { width: 100%; border-collapse: collapse; font-size: 10px; }.field-table th, .field-table td { padding: 7px 6px; border-bottom: 1px solid var(--border-light); text-align: left; vertical-align: top; }.field-table th { color: var(--text-3); background: var(--bg-page); font-weight: 600; }.field-table td { color: var(--text-2); overflow-wrap: anywhere; }.field-table .mono { color: var(--text-4); font-family: Consolas, monospace; }.drawer-footer { padding: 11px 20px; display: flex; gap: 7px; flex-wrap: wrap; border-top: 1px solid var(--border); background: #fff; }
.drawer-panel { display: none; }.drawer-panel.is-active { display: block; }
.modal-overlay { display: grid; place-items: center; padding: 18px; }
/* 弹窗三段式（与网盘站 modal 同构）：标题栏 + 可滚动 body + 底部操作栏 */
.modal { width: min(480px,100%); max-height: calc(100vh - 32px); display: flex; flex-direction: column; padding: 0; overflow: hidden; border-radius: var(--cf-panel-radius); background: #fff; box-shadow: 0 8px 24px rgba(0,0,0,.12); }
.modal-title { font-size: 15px; font-weight: 600; color: var(--text-1); }
.modal-footer { flex: 0 0 auto; display: flex; justify-content: flex-end; gap: 8px; padding: 12px 20px; border-top: 1px solid var(--border); background: #fff; }
/* s196 方案 A：新增来源账号弹窗去头部/底部两条分隔线（钦定） */
.modal-header-plain { border-bottom: 0; }
.modal-footer-plain { border-top: 0; padding-top: 4px; }
/* s196：渠道自绘 LOGO 下拉（方案 A）——触发框圆角无箭头，菜单圆角浮层带选中态 */
.ch-dd { position: relative; }
.ch-dd-face { width: 100%; height: 38px; border: 1px solid var(--border); border-radius: var(--radius-md, 9px); display: flex; align-items: center; gap: 8px; padding: 0 12px; font-size: 13px; background: #fff; color: var(--text-1); cursor: pointer; user-select: none; font-family: inherit; }
.ch-dd-face:hover { border-color: var(--border-strong, #cfd6de); }
.ch-dd-logo, .ch-logo-img { width: 17px; height: 17px; border-radius: 4px; object-fit: contain; display: block; flex: 0 0 17px; }
.ch-dd-logo-fallback, .ch-logo-img-fallback { background: #e8ebef; }
.ch-dd-menu { list-style: none; margin: 6px 0 0; padding: 4px; border: 1px solid var(--border); border-radius: 10px; background: #fff; box-shadow: 0 10px 28px rgba(15,23,42,.13); max-height: 268px; overflow-y: auto; z-index: 30; }
.ch-dd-item { display: flex; align-items: center; gap: 9px; padding: 8px 10px; font-size: 13px; border-radius: 8px; cursor: pointer; color: var(--text-1); }
.ch-dd-item:hover { background: var(--bg-hover, #f5f6f8); }
.ch-dd-item.is-selected { background: var(--brand-red-light, #faeeec); color: var(--red-dark, #a82a23); font-weight: 600; }
.ch-dd-item .ch-dd-logo { width: 18px; height: 18px; flex-basis: 18px; }
.ch-dd-ck { margin-left: auto; font-style: normal; font-size: 12px; color: var(--brand-red, #c8342c); }
/* s196：下拉滚动条去掉两端上下箭头按钮（钦定）——WebKit 系滚动条本体保留、箭头按钮隐藏 */
.ch-dd-menu::-webkit-scrollbar-button { display: none; height: 0; width: 0; }
.ch-dd-menu::-webkit-scrollbar { width: 10px; }
.ch-dd-menu::-webkit-scrollbar-thumb { background: rgba(0,0,0,.18); border-radius: 6px; border: 3px solid transparent; background-clip: padding-box; }
.ch-dd-menu { scrollbar-button-color: transparent; }
/* 兜底（2026-10-21）：不走 .modal-body 三段式的旧式弹窗（h2/p/grid 直塞 innerHTML，如新增来源账号），
   内容超高时整弹窗滚动，头部与操作栏随内容走；flex-shrink:0 防标题被压缩。 */
.modal > h2, .modal > p { flex-shrink: 0; }
/* 三段式弹窗的 body 层（2026-10-21 对齐网盘站）：唯一滚动层，头部/底部固定不参与滚动 */
.modal-body > p:first-child { margin-top: 0; }
/* 窄弹窗：设置密码等单列表单用，避免 480px 大弹窗显得空旷。 */
.modal.is-narrow { width: min(400px,100%); }
.modal-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--border); }
.modal h2 { margin: 0; font-size: 15px; font-weight: 600; }
.modal-close { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; font-size: 20px; line-height: 1; border: 0; background: transparent; color: var(--text-4); border-radius: var(--radius-sm); cursor: pointer; }
.modal-close:hover { background: var(--bg-tag); color: var(--text-1); }
.modal-body { flex: 1 1 auto; min-height: 0; padding: 20px; overflow-y: auto; font-size: 13px; line-height: 1.6; color: var(--text-1); }
.modal-body > form { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; }
.modal p { color: var(--text-3); font-size: 12px; }
.modal textarea { width: 100%; min-height: 180px; padding: 10px; resize: vertical; border: 1px solid var(--border); border-radius: var(--radius-sm); outline: 0; font-size: 12px; }
.modal textarea:focus { border-color: var(--brand-red); box-shadow: 0 0 0 2px rgba(200,52,44,.12); }
.modal-actions { margin-top: 14px; display: flex; justify-content: end; gap: 8px; }.field-config-tabs { margin: 14px 0 10px; display: flex; gap: 4px; overflow-x: auto; border-bottom: 1px solid var(--border-light); }.field-config-tabs .view-tab { flex: 0 0 auto; }.field-config-tabs .count { margin-left: 3px; color: var(--text-4); font-size: 10px; }.field-search { width: 100%; height: 32px; margin-bottom: 2px; padding: 0 9px; border: 1px solid var(--border); border-radius: 4px; outline: 0; color: var(--text-2); font-size: 11px; }.field-search:focus { border-color: var(--primary); box-shadow: 0 0 0 2px var(--primary-light); }.field-browser-count { margin: 8px 0; color: var(--text-4); font-size: 11px; }.backend-table-wrap { max-height: 620px; overflow: auto; }.backend-table th, .field-table th { position: sticky; top: 0; z-index: 1; }.toast { position: fixed; right: 20px; bottom: 20px; z-index: 50; max-width: 360px; padding: 10px 13px; color: #fff; border-radius: 4px; background: #2b2a28; box-shadow: 0 8px 24px rgba(0,0,0,.18); font-size: 12px; opacity: 0; transform: translateY(8px); pointer-events: none; transition: all .18s ease; }.toast.is-visible { opacity: 1; transform: translateY(0); }
/* Keep metric values and flywheel stages visually stable across browsers. */
.metric-label, .metric-value, .metric-trend, .flywheel-stage-count, .flywheel-stage-name { display: block; }
.flywheel-stage { border: 0; background: transparent; }
@media (max-width: 1000px) { .metrics-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }.analytics-grid { grid-template-columns: 1fr; }.task-row { grid-template-columns: 1fr 1fr; }.task-row .task-actions { grid-column: span 2; } }
@media (max-width: 760px) { .sidebar { position: static; width: 100%; flex-basis: auto; height: auto; margin-bottom: 8px; }.app-shell { display: block; }.app-body { display: block; padding: 8px; }.sidebar-nav { padding: 7px 10px; display: flex; gap: 4px; overflow-x: auto; }.nav-label { display: none; }.nav-item { width: auto; min-width: max-content; padding: 0 10px; }.nav-item-spaced { margin-top: 0; }.nav-count { display: none; }.sidebar-footer { display: none; }.main-area { width: 100%; }.topbar { height: auto; min-height: 52px; padding: 10px 14px; gap: 12px; align-items: start; }.topbar-actions { gap: 6px; flex-wrap: wrap; justify-content: end; }.sync-time { display: none; }.connection-pill { display: none; }.topbar-brand { display: none; }.page-content { padding: 16px 14px 40px; min-height: 0; }.page-header { display: block; }.page-actions { margin-top: 12px; }.metrics-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }.ov-metric { min-height: 64px; padding: 8px 10px 8px 12px; }.ov-metric-value { font-size: 23px; }.flywheel { justify-content: start; padding: 17px 13px; }.queue-item { grid-template-columns: 3px minmax(0,1fr); }.queue-actions { grid-column: 2; grid-template-columns: max-content max-content; justify-content: start; }.queue-actions .button { width: auto; padding: 0 9px; }.table-toolbar { display: block; }.view-toolbar { display: flex; }.filter-select, .search-box { width: 100%; margin-top: 8px; }.view-group { width: 100%; }.view-tabs { max-width: 100%; }.data-table { display: block; min-width: 0; }.data-table thead { display: none; }.data-table tbody, .data-table tr, .data-table td { display: block; }.data-table tr { margin: 8px; padding: 11px; border: 1px solid var(--border); border-radius: 4px; }.data-table td { height: auto; padding: 4px 0; border: 0; }.data-table td::before { display: inline-block; width: 95px; color: var(--text-4); content: attr(data-label); }.cell-title { max-width: none !important; white-space: normal !important; }.pagination { display: block; padding: 12px; }.pagination-controls { margin-top: 9px; }.asset-grid { grid-template-columns: 1fr; }.score-grid { grid-template-columns: repeat(2,1fr); }.detail-grid { grid-template-columns: 1fr; }.drawer { width: 100vw; }.kanban { display: grid; grid-template-columns: 1fr; }.kanban-column-body { max-height: none; }.task-row { grid-template-columns: 1fr; }.task-row .task-actions { grid-column: auto; }.modal-overlay { padding: 12px; }.source-form-grid, .source-detail-grid { grid-template-columns: 1fr; }.source-form-full { grid-column: auto; }.automation-tabs { width: 100%; }.automation-tabs .view-tab { flex: 1; text-align: center; } }
/* Source management must remain a real table on narrow screens so failure and action columns never collapse into each other. */
@media (max-width: 760px) { .source-management .table-wrap { overflow-x: auto; }.source-table { display: table; min-width: 1480px; table-layout: fixed; }.source-table thead { display: table-header-group; }.source-table tbody { display: table-row-group; }.source-table tr { display: table-row; margin: 0; padding: 0; border: 0; border-radius: 0; }.source-table th, .source-table td { display: table-cell; height: 52px; padding: 7px 11px; border-bottom: 1px solid var(--border-light); }.source-table td::before { display: none; }.source-table .source-actions { display: table-cell; }.source-table .source-actions-inline { display: flex; } }

/* Keep the whole console readable at the same scale as the reference workbench. */
body { font-size: 14px; }

/* ============ 前置登录门面（1:1 网盘拉新：纯黑底 + 品牌红主操作 + 金色点缀） ============ */
.gate { position: fixed; inset: 0; z-index: 500; background: #141414; overflow-y: auto; }
.gate[hidden] { display: none !important; }
.gate-wrap { min-height: 100vh; box-sizing: border-box; padding: 48px 24px 32px; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.gate-head { display: flex; align-items: center; gap: 10px; }
.gate-head-text { text-align: left; }
.gate-logo { width: 34px; height: 34px; border-radius: 8px; background: #c8342c; color: #fff; font-size: 16px; font-weight: 500; display: flex; align-items: center; justify-content: center; flex: none; }
.gate-brand-name { font-size: 14px; font-weight: 500; color: #f0f0f0; }
.gate-brand-en { font-size: 11px; letter-spacing: 2px; color: #8f8f8f; margin-top: 2px; }
.gate-title { margin: 30px 0 0; font-size: 24px; font-weight: 500; line-height: 1.45; letter-spacing: 1px; text-align: center; color: #f0ece2; }
.gate-slogan { font-size: 13px; color: #8f8f8f; line-height: 1.7; margin: 10px 0 0; text-align: center; }
.gate-card { width: 100%; max-width: 380px; margin: 30px 0 0; background: #1c1c1c; border: 1px solid #333; border-radius: 12px; padding: 8px 24px 18px; }
.gate-tabs { display: flex; }
.gate-tab { flex: 1; padding: 10px 0; font-size: 13px; border: 0; background: transparent; color: #8f8f8f; cursor: pointer; font: inherit; font-weight: 400; border-bottom: 1.5px solid transparent; }
.gate-tab.is-active { color: #f2e8d5; border-bottom-color: #c8342c; }
.gate-panel { margin-top: 18px; }
.gate-field { display: block; margin-bottom: 12px; }
.gate-field span { display: block; font-size: 12px; color: #9a9a9a; margin-bottom: 6px; }
.gate-field input { width: 100%; box-sizing: border-box; background: #161616; border: 1px solid #3a3a3a; border-radius: 8px; color: #ececec; padding: 10px 12px; font-size: 13px; font: inherit; outline: none; }
.gate-field input:focus { border-color: #c9a45c; outline: none; }
.gate-input-gold { border-color: #c9a45c; }
.gate-code-row { display: flex; gap: 10px; align-items: stretch; }
.gate-code-row input { flex: 1; }
.gate-code-row .gate-field { flex: 1; margin-bottom: 0; }
.gate-send { background: transparent; border: 1px solid #4a4a4a; border-radius: 8px; color: #c9a45c; padding: 0 14px; font-size: 12px; cursor: pointer; white-space: nowrap; font: inherit; }
.gate-send:hover:not(:disabled) { border-color: #c9a45c; }
.gate-send:disabled { opacity: .5; cursor: not-allowed; }
.gate-btn { width: 100%; background: #c8342c; border: 0; border-radius: 8px; color: #fff; padding: 11px 0; font-size: 14px; cursor: pointer; margin-top: 4px; font: inherit; font-weight: 500; }
.gate-btn:hover:not(:disabled) { background: #b02a23; }
.gate-btn:disabled { opacity: .6; cursor: wait; }
.gate-error { color: #e57368; font-size: 12px; margin-top: 8px; }
.gate-error:empty { display: none; }
.gate-error.gate-error-ok { color: #7fc48f; }
.gate-foot-link { text-align: right; margin-top: 10px; }
.gate-foot-link button { background: none; border: 0; color: #9a9a9a; font-size: 12px; cursor: pointer; font: inherit; padding: 0; }
.gate-invite-hint { font-size: 11px; color: #a08b5f; margin: 10px 0 0; line-height: 1.6; }
.gate-terms { font-size: 11px; color: #5f5f5f; margin: 14px 0 0; text-align: center; }
.gate-copy { margin-top: 30px; font-size: 11px; color: #5f5f5f; }

/* ============ 顶部账号区（深墨顶栏上：半透明胶囊，与网盘站 shell-topbar 同款） ============ */
.user-chip { position: relative; display: inline-flex; align-items: center; margin-left: 2px; }
/* s79：用户区去外框（用户确认）——无边框无底色直接浮在顶栏，悬停整块轻微提亮。 */
.user-chip-trigger { display: inline-flex; align-items: center; gap: 7px; height: 32px; padding: 0 8px 0 4px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--nav-text-strong); cursor: pointer; font: inherit; font-size: 12px; white-space: nowrap; }
.user-chip-trigger:hover { background: rgba(255,255,255,.08); border: 0; color: #fff; }
.user-chip-avatar { width: 22px; height: 22px; border-radius: 50%; overflow: hidden; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 600; color: #fff; background: var(--brand-red); flex: none; }
/* s194 头像防闪：字母 fallback（无真头像/头像未到达时）改中性灰底，不再闪品牌红块 */
.user-chip-avatar.is-letter { background: #9aa3b2; }
.user-chip-avatar-img { width: 100%; height: 100%; object-fit: cover; display: block; }
.user-chip-name { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: inherit; font-size: 12px; font-weight: 600; }
.user-chip-caret { flex: none; color: var(--nav-text); transition: transform .16s; }
.user-chip-trigger[aria-expanded="true"] .user-chip-caret { transform: rotate(180deg); }
.user-menu { position: absolute; top: 40px; right: 0; z-index: 40; width: 168px; padding: 6px; display: grid; gap: 2px; border: 1px solid var(--border); border-radius: var(--radius-md); background: #fff; box-shadow: 0 8px 24px rgba(0,0,0,.12); }
.user-menu[hidden] { display: none !important; }
.user-menu-item { width: 100%; padding: 8px 10px; text-align: left; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text-1); font-size: 12px; cursor: pointer; }
.user-menu-item:hover { background: var(--bg-hover); }
.user-menu-item-danger { color: var(--danger); }
.user-menu-item-danger:hover { background: var(--danger-bg); }
.user-menu-sep { height: 1px; margin: 4px 2px; background: var(--border); }

/* ============ 设置页布局 ============ */
/* 软化 v9：页头横幅删除（.view-header 不再渲染，样式仅留兼容存量引用），标题职责交给各页第一张白卡卡头 */
.section-kicker { display: block; margin-bottom: 5px; color: var(--hero-text); font-family: Consolas, "SF Mono", monospace; font-size: 10px; font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase; }
.view-title { margin: 0; font-size: 18px; font-weight: 600; color: var(--text-1); }
.view-desc { margin: 4px 0 0; font-size: 13px; color: var(--hero-text-muted); max-width: 600px; }
/* 分区标题色条：长页面的段落感（与网盘站同款品牌红竖条） */
.page h3, .page h4, .settings-panel h3, .settings-panel h4 { position: relative; padding-left: 11px; }
.page h3::before, .page h4::before, .settings-panel h3::before, .settings-panel h4::before { content: ""; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 3px; height: 14px; border-radius: 2px; background: var(--brand-red); opacity: .8; }
.settings-layout { display: grid; grid-template-columns: 180px minmax(0,1fr); gap: 16px; align-items: start; }
/* 软化 v6：子导航去描边，靠留白与阴影分层 */
.settings-subnav { display: flex; flex-direction: column; gap: 2px; padding: 8px; border: 0; border-radius: var(--cf-panel-radius); background: var(--bg-card); box-shadow: 0 1px 3px rgba(26, 22, 20, .05); align-self: start; position: sticky; top: calc(var(--topbar-h) + 16px); max-height: calc(100dvh - var(--topbar-h) - 32px); overflow-y: auto; }
.settings-subtab { padding: 9px 12px; text-align: left; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text-2); font-size: 13px; cursor: pointer; }
.settings-subtab:hover { background: var(--bg-hover); color: var(--text-1); }
.settings-subtab.is-active { background: var(--brand-red-light); color: var(--brand-red); font-weight: 600; box-shadow: inset 2px 0 0 var(--brand-red); }
/* 软化 v6：设置面板去描边 */
.settings-panel { padding: 20px; border: 0; border-radius: var(--cf-panel-radius); background: var(--bg-card); box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.settings-page-section-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.settings-page-section-heading h3 { margin: 0; color: var(--text-1); font-size: 15px; font-weight: 600; }
.settings-page-section-heading p { margin: 5px 0 0; color: var(--text-3); font-size: 12px; }
/* 软化 v6：方法卡去描边 */
.method-card { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; margin-bottom: 9px; border: 0; border-radius: 10px; background: var(--bg-page); }
.method-main { display: flex; align-items: center; gap: 10px; min-width: 0; flex: 1; }
.method-main strong { color: var(--text-1); font-size: 12.5px; flex: none; }
.method-icon { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 6px; background: var(--primary-light); color: var(--primary); flex: none; font-size: 12px; }
.method-value { color: var(--text-3); font-size: 12px; overflow-wrap: anywhere; }
/* 软化 v6：资料卡去描边；stretch + 内部居中让昵称块严格对齐头像块几何中心（2026-10-18 用户反馈偏低） */
.settings-profile { display: flex; align-items: stretch; gap: 24px; margin-bottom: 18px; padding: 16px 20px; border: 0; border-radius: 12px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.avatar-block { display: flex; flex-direction: column; align-items: center; gap: 10px; flex: none; }
.settings-avatar-wrap { position: relative; width: 64px; height: 64px; }
.settings-avatar-fallback, .settings-avatar-img { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; font-size: 26px; font-weight: 600; color: var(--primary); background: var(--primary-light); user-select: none; }
.settings-avatar-fallback { display: flex; align-items: center; justify-content: center; }
.settings-avatar-fallback[hidden], .settings-avatar-img[hidden] { display: none; }
.settings-avatar-cam { position: absolute; right: -2px; bottom: -2px; width: 22px; height: 22px; padding: 0; display: flex; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: 50%; background: #fff; color: var(--text-3); font-size: 12px; cursor: pointer; }
.settings-avatar-cam:hover { color: var(--primary); border-color: var(--primary); }
.avatar-block-actions { display: flex; gap: 6px; }
.settings-name-field { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; }
/* 昵称一体化输入框（方案 B·内联即存式，2026-10-18 用户选型）：保存按钮嵌在输入框内右侧 */
.pb-box { display: flex; align-items: center; max-width: 340px; border: 1px solid var(--border-strong); border-radius: 8px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.pb-box:focus-within { border-color: var(--brand-red); box-shadow: 0 0 0 3px rgba(200, 52, 44, .12); }
.pb-box input { flex: 1; min-width: 0; min-height: 0; height: 38px; padding: 0 12px; border: 0; outline: none; font: inherit; font-size: 13px; color: var(--text-1); background: transparent; box-shadow: none; }
.pb-box .divider { width: 1px; height: 18px; background: var(--border); flex: 0 0 auto; }
.pb-box .tick { height: 38px; padding: 0 13px; border: 0; background: transparent; color: var(--brand-red); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; flex: 0 0 auto; display: flex; align-items: center; gap: 5px; border-radius: 0 8px 8px 0; }
.pb-box .tick:hover { background: var(--brand-red-light); }
.pb-box .tick:disabled { opacity: .6; cursor: default; }
.nav-label { font-size: 11px; }
.nav-item { font-size: 14px; }
.nav-count { font-size: 11px; }
.sidebar-footer { font-size: 13px; }
.sidebar-footer-meta { font-size: 11px; }
.breadcrumb { font-size: 13px; }
.sync-time, .connection-pill { font-size: 12px; }
.page-subtitle { font-size: 13px; }
.button { font-size: 14px; }
.button-sm { min-height: 30px; font-size: 13px; }
.card-title { font-size: 15px; }
.card-title .count { font-size: 12px; }
.card-link { font-size: 12px; }
.metric-label { font-size: 13px; }
.metric-trend { font-size: 12px; }
.queue-title { font-size: 14px; }
.queue-meta { font-size: 13px; }
.badge, .tag { font-size: 12px; }
.view-label { min-height: 27px; color: var(--text-1); font-size: 14px; font-weight: 700; line-height: 1.4; }
.view-tab { min-height: 27px; padding: 0 0 5px; font-size: 13px; }
.search-box input, .filter-select { font-size: 14px; }
.data-table { font-size: 14px; }
.data-table th { font-size: 13px; }
.cell-id, .score-value { font-size: 12px; }
.pagination { font-size: 13px; }
.kanban-column-title, .kanban-column-count { font-size: 13px; }
.kanban-card-title { font-size: 13px; }
.kanban-card-meta, .kanban-error { font-size: 12px; }
.bar-label, .legend-item, .small-stat, .progress-row { font-size: 13px; }
.asset-card h3 { font-size: 15px; }
.asset-card p { font-size: 12px; }
.asset-stat-label, .asset-stat-value { font-size: 14px; }
.task-main strong { font-size: 14px; }
.task-main small, .task-value, .task-error { font-size: 12px; }
.detail-section-title { font-size: 14px; }
.detail-label { font-size: 12px; }
.detail-value { font-size: 13px; }
.drawer-meta { font-size: 12px; }
.drawer-tab { font-size: 13px; }
.score-item-label { font-size: 12px; }
.failure-box { font-size: 13px; }
.field-table { font-size: 12px; }
.field-table th, .field-table td { padding: 8px 7px; }
.modal h2 { font-size: 16px; }
.modal p, .modal textarea { font-size: 13px; }
.field-search { font-size: 14px; }
.field-browser-count { font-size: 13px; }
.system-row { font-size: 13px; }
.system-row span { font-size: 13px; }
.system-row small { font-size: 12px; }
.toast { font-size: 13px; }

/* Keep inbox group labels and view items on the same text baseline. */
.view-group { align-items: start; }
.view-group .view-label,
.view-group .view-tabs,
.view-group .view-tab { height: 28px; min-height: 28px; box-sizing: border-box; }
.view-group .view-label,
.view-group .view-tab { padding: 0; display: inline-flex; align-items: center; font-size: 14px; line-height: 20px; }
.view-group .view-label { color: var(--text-1); font-weight: 700; }
.view-group .view-tabs { position: static; top: auto; gap: 6px; row-gap: 8px; height: auto; min-height: 28px; align-items: start; }
.view-group .view-tab { position: relative; padding: 0 10px; border-bottom: 0; border-radius: 6px; }
.view-group .view-tab.is-active { color: var(--primary); background: var(--primary-light); font-weight: 600; }
.view-group .view-tab.is-active::after { display: none; }
/* 方案A：高频视图语义色（与总览指标卡 8 色方案同色系）。未激活 = 浅底深字，激活 = 同色系实底白字。 */
.view-group .view-tab.hf-blue { color: #185fa5; background: #e6f1fb; font-weight: 600; }
.view-group .view-tab.hf-red { color: #a32d2d; background: #fcebeb; font-weight: 600; }
.view-group .view-tab.hf-amber { color: #854f0b; background: #faeeda; font-weight: 600; }
.view-group .view-tab.hf-coral { color: #993c1d; background: #faece7; font-weight: 600; }
.view-group .view-tab.hf-teal { color: #0f6e56; background: #e1f5ee; font-weight: 600; }
.view-group .view-tab.hf-purple { color: #534ab7; background: #eeedfe; font-weight: 600; }
.view-group .view-tab.hf-green { color: #3b6d11; background: #eaf3de; font-weight: 600; }
.view-group .view-tab.hf-blue.is-active { color: #fff; background: #185fa5; }
.view-group .view-tab.hf-red.is-active { color: #fff; background: #a32d2d; }
.view-group .view-tab.hf-amber.is-active { color: #fff; background: #854f0b; }
.view-group .view-tab.hf-coral.is-active { color: #fff; background: #993c1d; }
.view-group .view-tab.hf-teal.is-active { color: #fff; background: #0f6e56; }
.view-group .view-tab.hf-purple.is-active { color: #fff; background: #534ab7; }
.view-group .view-tab.hf-green.is-active { color: #fff; background: #3b6d11; }
.view-group .view-tab.hf-blue:hover, .view-group .view-tab.hf-red:hover, .view-group .view-tab.hf-amber:hover, .view-group .view-tab.hf-coral:hover, .view-group .view-tab.hf-teal:hover, .view-group .view-tab.hf-purple:hover, .view-group .view-tab.hf-green:hover { color: inherit; background: inherit; filter: brightness(.96); }

/* 确认弹窗复用 .modal 三段式：内容区自己带 padding，标题栏沿用 modal-header */
.modal-overlay.is-confirm-modal .modal { width: min(620px, 100%); }

/* ============ s63 方案A 四层工具栈（素材库 + 采集中心） ============ */
/* 卡片间距：四层卡之间的 12px 呼吸缝（层次感来源之一） */
.inbox-actions-card + .inbox-filter-card, .inbox-filter-card + .table-card, .card.inbox-actions-card + .card { margin-top: 12px; }
/* L1 操作卡：工具条底部无边线（独立卡不需要与表格分隔） */
.inbox-actions-card .table-toolbar { border-bottom: 0; }
/* L2 快捷筛选 chips（方案A：高频平铺 + 低频折叠分组条） */
.chip-row { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; padding: 10px 14px; border-top: 1px solid var(--border-light); }
.chip-group-label { flex: none; margin-right: 4px; color: var(--text-3); font-size: 12px; font-weight: 600; }
.chip-sep { width: 1px; height: 14px; background: var(--border); margin: 0 4px; }
.filter-chip { min-height: 26px; padding: 0 10px; display: inline-flex; gap: 5px; align-items: center; border: 1px solid var(--border-strong); border-radius: 999px; color: var(--text-2); background: #fff; cursor: pointer; font-size: 12px; transition: border-color .14s, color .14s, background .14s; }
.filter-chip:hover { border-color: var(--primary); color: var(--primary); }
.filter-chip.on { color: #fff; border-color: var(--primary); background: var(--primary); font-weight: 600; }
.filter-chip b { color: var(--warning); font-weight: 700; }
.filter-chip.on b { color: rgba(255,255,255,.9); }
/* 低频分组折叠条：带展开箭头，展开后该组视图 chips 平铺其后 */
.chip-group-toggle i { color: var(--text-4); font-style: normal; font-size: 10px; }
.chip-group-toggle.is-open { border-style: dashed; color: var(--text-1); }
.chip-group-toggle.is-open i { color: var(--primary); }
.confirm-modal { max-width: none; margin: 0; padding: 18px 22px; }
.confirm-modal-heading { display: flex; gap: 12px; align-items: center; }
.confirm-modal-icon { flex: 0 0 auto; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; color: #b42318; background: var(--danger-bg); font-weight: 800; }
.confirm-modal h2 { margin: 0; }
.confirm-modal p { margin: 7px 0; line-height: 1.65; }
.confirm-modal-list { max-height: 180px; margin: 12px 0; padding: 10px 12px 10px 30px; overflow-y: auto; border: 1px solid var(--border-light); border-radius: 4px; color: var(--text-2); background: var(--bg-page); font-size: 12px; line-height: 1.7; }
.confirm-modal-note { color: #b42318 !important; }

/* ═══ s159 品牌弹窗三件套（41 处原生 confirm/prompt/alert 的统一替代） ═══ */
/* 三态图标：danger 红 / warning 琥珀 / info 蓝 / prompt 绿（复用 .confirm-modal-icon 圆形骨架） */
.confirm-modal-icon.bmc-ic-red { color: #b42318; background: var(--danger-bg); }
.confirm-modal-icon.bmc-ic-amber { color: #9a5c00; background: var(--warn-bg, #fff8e6); }
.confirm-modal-icon.bmc-ic-blue { color: var(--info, #2563eb); background: var(--info-bg, #eff4ff); }
.confirm-modal-icon.bmc-ic-green { color: #047857; background: #f0fdf8; }
/* 尾注语义色：danger 红沿用 .confirm-modal-note；warning 琥珀 */
.brand-modal-note-amber { color: #9a5c00 !important; }
/* 输入弹窗（prompt）主体 */
.brand-prompt-body { margin: 14px 0 2px; }
.brand-prompt-input { width: 100%; min-height: 38px; padding: 0 12px; border: 1px solid var(--border, #e2e5e9); border-radius: 8px; font-size: 13px; color: var(--text-1, #1a1a1a); background: #fff; outline: none; transition: border-color .15s; }
.brand-prompt-input:focus { border-color: var(--brand-red, #c8342c); }
.brand-prompt-hint { margin: 7px 0 0; font-size: 11.5px; color: var(--text-3, #9ca3af); line-height: 1.6; }
/* 明细列表弹窗（alert）：可滚动列表替代 \n 拼文本 */
.brand-detail-list { margin: 12px 0 2px; max-height: 180px; overflow-y: auto; padding: 10px 14px; border: 1px solid var(--border-light, #eef0f2); border-radius: 8px; background: var(--bg-page, #f6f7f8); }
.brand-detail-row { font-size: 12px; color: var(--text-2, #4b5563); padding: 5px 0; border-bottom: 1px dashed var(--border-light, #eef0f2); line-height: 1.55; }
.brand-detail-row:last-of-type { border-bottom: 0; }
.brand-detail-more { font-size: 11.5px; color: var(--text-3, #9ca3af); padding-top: 7px; }

/* Long material titles: keep table rows tidy, reveal full text on hover/drawer. */
.material-table .cell-title { display: block; max-width: 100%; overflow: hidden; color: var(--text-1); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
/* s69n（2026-10-24）：素材库表头与候选池同规则——灰底改白底与数据行连成一体，字体黑色，分界只留底部细边线。 */
.material-table thead th { color: var(--text-1); background: #fff; border-bottom: 1px solid var(--border); }

/* ============ s69p 素材库九项改造（2026-10-24） ============ */
/* ① 批量工具条：表格卡顶部，未选中整条不渲染（零占位）；选中显示计数 + ⚡生成 + 🗑删除。 */
.material-bulk-bar { min-height: 42px; padding: 0 12px; display: flex; gap: 8px; align-items: center; border-bottom: 1px solid var(--border-light); background: #fff; }
.material-bulk-count { color: #c8342c; font-size: 12px; font-weight: 600; }
/* 一键生成按钮：金色 hover（区别于删除的红），复用 batch-del 基类。 */
.material-bulk-gen:hover { color: #b8860b; border-color: #d9a520; background: #fdf9ee; }
.material-bulk-gen .batch-del-count { color: #b8860b; }
/* ① 复选框列：表头全选 + 行首单选，样式对齐候选池。 */
.material-table .material-col-check { width: 40px; min-width: 40px; padding: 0 8px; text-align: center; white-space: nowrap; }
.material-table td.material-col-check { cursor: default; }
.material-select-all { display: inline-flex; align-items: center; vertical-align: middle; }
.material-select-all input, .material-checkbox { width: 13px; height: 13px; margin: 0; accent-color: var(--brand-red); cursor: pointer; }
/* ③ 行内操作（s69p 引入，s69t 改版）：⚡生成/🗑删除 移到行尾固定操作列（见文件末尾 s69t 样式块）。 */
.material-table .row-icon-btn.row-del { color: #c8342c; }
.material-table .row-icon-btn.row-del:hover { background: #fdf0ef; }
/* ⑥ 素材库筛选下拉圆角化 + 去原生箭头（设计五原则①），替换为浅灰细箭头。
   s69q：双类选择器（0,2,0）压过全站 .filter-select 基类（0,1,0），!important 兜底防后加载规则反超。 */
.inbox-filter-card .filter-select, .inbox-filter-card select.filter-select {
  appearance: none !important; -webkit-appearance: none !important;
  padding-right: 26px !important; border-radius: 8px !important;
  background: #fff url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="5" viewBox="0 0 8 5"><path d="M0 0l4 5 4-5z" fill="%23b6bcc6"/></svg>') no-repeat right 9px center !important;
}
.inbox-filter-card .search-box { border-radius: 8px; }
/* ⑦ 低频分组点击下拉：菜单圆角 12px + 阴影，向下弹出；四组互斥（renderInbox 时只渲染 data-open 那个）。 */
.inbox-group-dd { position: relative; display: inline-block; }
.chip-group-toggle.has-current { border-color: var(--primary); color: var(--primary); }
.chip-group-toggle i { font-size: 9px; }
.inbox-group-dd[data-open] .chip-group-toggle { border-style: solid; color: var(--text-1); }
.inbox-group-dd[data-open] .chip-group-toggle i { color: var(--primary); }
.inbox-group-menu { position: absolute; top: calc(100% + 6px); left: 0; z-index: 20; min-width: 168px; padding: 6px; display: none; border: 1px solid var(--border-light); border-radius: 12px; background: #fff; box-shadow: 0 8px 24px rgba(0,0,0,.12); }
.inbox-group-dd[data-open] .inbox-group-menu { display: block; }
.inbox-group-item { width: 100%; padding: 8px 10px; display: flex; gap: 8px; align-items: center; border: 0; border-radius: 8px; color: var(--text-2); background: transparent; cursor: pointer; font-size: 12px; text-align: left; white-space: nowrap; }
.inbox-group-item:hover { color: var(--primary); background: var(--bg-hover); }
.inbox-group-item span { flex: 1; overflow: hidden; text-overflow: ellipsis; }
.inbox-group-item i { flex: none; color: var(--primary); font-style: normal; font-size: 11px; font-weight: 700; visibility: hidden; }
.inbox-group-item.is-current { color: var(--primary); font-weight: 600; }
.inbox-group-item.is-current i { visibility: visible; }
/* ⑨ 重置按钮智能显隐（JS 侧 hidden 控制）；确认弹窗软删提示配色（区别于不可恢复的红色）。 */
.confirm-modal-note-soft { color: #9a5c00 !important; }

/* ===== s69r 素材库字段重构 ===== */
/* 字段设置弹窗：核心锁定区 / 可选自定义区分组 */
.gs-field-group { margin-bottom: 14px; }
.gs-field-group:last-child { margin-bottom: 0; }
.gs-field-group-h { font-size: 12px; font-weight: 700; color: var(--text-1); margin-bottom: 8px; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.gs-field-group-note { font-size: 10.5px; font-weight: 400; color: var(--text-4); }
.gs-ck.is-locked { opacity: .72; cursor: default; background: var(--bg-page); border-radius: 6px; }
.gs-ck .gs-ck-lock { font-style: normal; font-size: 10px; margin-left: 2px; }
/* 素材抽屉：折叠正文 + 分区小注 */
.raw-fold { white-space: pre-wrap; word-break: break-word; color: var(--text-2); font-size: 12px; line-height: 1.7; }
.raw-expand { margin-top: 8px; }
.drawer-sec-note { font-size: 10.5px; font-weight: 400; color: var(--text-4); margin-left: 6px; }
.detail-section-title .drawer-sec-note { font-weight: 400; }
/* 新列宽（来源列用渠道 tag，价值评分列窄格） */
.material-table .material-col-source-label { width: 110px; }
.material-table .material-col-parse-state { width: 96px; }
.material-table .material-col-value-score { width: 92px; }
.material-table .material-col-action-state { width: 108px; }
.material-table .material-col-content-topic, .material-table .material-col-usable-angles, .material-table .material-col-demand-insight, .material-table .material-col-quality-angle, .material-table .material-col-parse-failure-reason { width: 150px; }
.material-table .material-col-pain-point-strength, .material-table .material-col-evidence-strength, .material-table .material-col-freshness { width: 84px; }
/* Linked titles must beat .data-table/.material-table .cell-title color (2-class selectors), so use element+2-class specificity. */
.data-table a.cell-title-link, .material-table a.cell-title-link { max-width: 100%; overflow: hidden; color: #2563eb; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; text-decoration: none; }.data-table a.cell-title-link:hover, .material-table a.cell-title-link:hover { color: #1d4ed8; text-decoration: underline; }
.drawer-title-text { display: block; overflow-wrap: anywhere; word-break: break-word; line-height: 1.5; white-space: normal; }

/* Source management tables: fixed column plan so headers and cells stay aligned. */
.source-table { table-layout: fixed; }
.source-table .source-col-name { width: 200px; }
.source-table .source-col-type { width: 100px; }
.source-table .source-col-url { width: 185px; }
.source-table .source-col-method { width: 140px; }
/* s157：入库策略列（下拉+跟随角标约 175px；不设宽度会被 auto 布局挤压与状态列重叠） */
.source-table .source-col-policy { width: 175px; }
.source-table .source-col-status { width: 76px; }
.source-table .source-col-freq { width: 92px; }
.source-table .source-col-time { width: 110px; }
.source-table .source-col-result { width: 130px; }
.source-table .source-col-fail { width: 160px; }
.source-table .source-col-actions { width: 260px; }
/* 定稿（2026-10-21）：来源链接列已删，删掉其列宽；总宽收窄到 1300px。 */
.source-table { min-width: 1300px; }
.source-actions { display: table-cell; vertical-align: middle; }
.source-actions-inline { display: flex; gap: 0; flex-wrap: nowrap; align-items: center; justify-content: center; min-width: max-content; }
.source-actions-inline .button-sm { flex: 0 0 auto; padding: 0 7px; }
/* Xiaoe-style row actions: plain blue text links separated by thin dividers.
   修正（2026-10-21 用户反馈）：链接用蓝色（--info），此前误用 --primary 落成品牌红。 */
.table-action-link { min-height: 0; padding: 0; border: 0; color: var(--info); background: transparent; font-size: 12px; line-height: 1.5; white-space: nowrap; cursor: pointer; }
.table-action-link:hover { color: #1d4ed8; text-decoration: underline; background: transparent; }
.table-action-divider { width: 1px; height: 11px; margin: 0 9px; background: var(--border); }
/* Soft vertical rule separating the actions area from the data columns: a real collapsed border, so it stays continuous across the header and every row, and row separators meet it cleanly at each junction.
   定稿修正（2026-10-21 用户反馈）：常驻 border-left 删除——分隔感由 fx-wrap::before 阴影线承担，拉到最右时整条线消失。 */
.source-table th.source-col-actions, .source-table td.source-actions { border-left: 0; }
.source-table td.source-actions { border-bottom: 1px solid var(--border-light); }
.source-table .source-name-button { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.source-table td .cell-link { max-width: 100%; }
.source-table .source-failure { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Center each source-table heading over the content beneath it. */
.source-table th, .source-table td { text-align: center; }
.source-table .source-name-button { width: 100%; text-align: center; }
.source-table td .cell-link { display: block; margin: 0 auto; text-align: center; }
.source-table .source-failure { text-align: center; }
.source-table .source-actions-inline { justify-content: center; }
@media (max-width: 760px) { .source-management .table-wrap { overflow-x: auto; }.source-table { display: table; min-width: 1480px; table-layout: fixed; }.source-table col { width: auto !important; } }

/* ============ 来源中心定稿（2026-10-21）：顶部操作栏外框 + 分页 + 双固定列滚动 ============ */
/* 顶部横排白色外框（四角圆角、无「操作栏」字样），两个入口横排。
   定稿（2026-10-21 用户反馈）：hover 出浅蓝背景框（小鹅通同款），选中后字体变蓝。 */
.ops-bar { display: flex; gap: 6px; align-items: center; padding: 8px 10px; border-radius: var(--cf-panel-radius); background: var(--bg-card); box-shadow: 0 1px 3px rgba(26, 22, 20, .05); margin-bottom: 16px; }
/* s161：未选中页签黑字（对齐卡片标题 --text-1）；选中蓝字不变（.is-active 在下方覆盖） */
.ops-item { display: inline-flex; align-items: center; gap: 8px; height: 34px; padding: 0 12px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text-1); font-size: 13px; cursor: pointer; transition: background .14s, color .14s; }
.ops-item svg { width: 15px; height: 15px; flex: 0 0 auto; opacity: .8; }
.ops-item:hover { background: var(--info-bg); color: var(--info); }
.ops-item:hover svg { opacity: 1; }
.ops-item.is-active { background: transparent; color: var(--info); font-weight: 600; box-shadow: none; }
.ops-item.is-active svg { opacity: 1; }
.ops-count { min-width: 22px; height: 18px; padding: 0 6px; display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; background: var(--bg-tag); color: var(--text-3); font-size: 10px; font-weight: 600; }
.ops-item:hover .ops-count { background: #fff; color: var(--info); }
.ops-item.is-active .ops-count { background: var(--info-bg); color: var(--info); }
/* s66 采集中心页签操作：导出固定在 ops-bar 最右侧；筛选计数与工具控件同行。 */
.collection-export { margin-left: auto; }
/* s69 候选池 v4（2026-10-23 用户确认）：筛选计数文字整段删除；表头黑字保留（v3 需求①②）。
   s69n（2026-10-24）：表头灰底改白底——灰底表头与白底数据行割裂，白底让整张表连成一体，
   表头与行的分界只靠底部一条细边线（加深一档保证层次仍清晰）。 */
.candidate-table thead th { color: var(--text-1); background: #fff; border-bottom: 1px solid var(--border); }

/* s158：采集源管理 + 来源账号两张表的表头同款黑字白底（用户钦定「整个第一行的表头字体颜色变成黑色，
   参考候选池」；此前全局默认是 text-3 灰字 + bg-page 灰底，与候选池观感割裂）。
   注意作用域限定 .source-management 内，不扩散到素材库/候选池等已定版表格。 */
.source-management .data-table thead th { color: var(--text-1); background: #fff; border-bottom: 1px solid var(--border); }

/* s158：操作列「删除」红色（真删除与归档不同——删除不可恢复，用危险色提示） */
.table-action-link.is-danger { color: #c8342c; }
.table-action-link.is-danger:hover { color: #a32620; }

/* s69c 候选池：行高对齐用户参考图实测值 64px（v4 的 84px 是设定值偏大，用户对比后仍显高）；
   长文字列改 2 行截断（3 行在 64px 内放不下会把行重新撑高）。 */
.candidate-table td { height: 64px; }
.candidate-table td .cell-title { max-width: 200px; }
.candidate-table .cell-clamp2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.55; }
/* s75：无原文链接标题——虚线下划线示意"点开详情"，与真链接（实线蓝）区分 */
.material-table .cell-title-drawer { text-decoration: underline dotted var(--text-4); text-underline-offset: 3px; color: var(--text-1); }
.material-table .cell-title-drawer:hover { color: var(--primary); text-decoration-color: var(--primary); }

/* s69b 候选池 v5（2026-10-23）：行尾 ✕ 删除列整列去掉——删除统一走勾选后工具条「删除」按钮（百度网盘式）。 */
.candidate-table .candidate-check-col { width: 56px; min-width: 56px; padding: 0 10px; white-space: nowrap; }
.candidate-table td.candidate-check-col { cursor: default; }
.candidate-select-all { display: inline-flex; align-items: center; vertical-align: middle; }
.candidate-select-all input, .candidate-checkbox { width: 13px; height: 13px; margin: 0; accent-color: var(--brand-red); cursor: pointer; }

/* s69 候选池 v4：百度网盘式删除按钮——工具条最右侧，未选中 hidden，勾选任意一条/全选后出现（带已选数）。
   白底线框 + 垃圾桶线性图标，hover 变红；替代 v3 的表头「批量删除」按钮。 */
.batch-del { height: 30px; padding: 0 12px; display: inline-flex; gap: 6px; align-items: center; border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text-2); background: #fff; cursor: pointer; font-size: 12px; line-height: 1; white-space: nowrap; }
.batch-del svg { width: 14px; height: 14px; flex: 0 0 auto; }
.batch-del:hover { color: #c8342c; border-color: #c8342c; background: #fdf0ef; }
.batch-del .batch-del-count { min-width: 2px; color: #c8342c; font-weight: 700; }
.batch-del[hidden] { display: none; }

/* s69i 候选池行悬停操作（2026-10-23 修订版二用户确认）：图标固定行尾——锚在「采集时间」格内，
   悬停行时时间淡出、蓝色图标组淡入，原地切换（不跟鼠标、不加列、零列宽变化）。
   左缘 14px 白色渐变避免硬切感；触屏（无 hover）图标常显兜底。 */
.time-cell { position: relative; }
.time-cell .cell-time { transition: opacity .12s ease; }
.time-cell .cell-time-text { transition: opacity .12s ease; }
.row-ops { position: absolute; inset: 0; display: inline-flex; gap: 4px; align-items: center; justify-content: center; background: linear-gradient(to right, rgba(255,255,255,0), #fff 14px); opacity: 0; pointer-events: none; transition: opacity .12s ease; }
.candidate-table tbody tr:hover .row-ops { opacity: 1; pointer-events: auto; }
.candidate-table tbody tr:hover .time-cell .cell-time-text { opacity: 0; }
@media (hover: none) { .row-ops { opacity: 1; pointer-events: auto; } .time-cell .cell-time-text { opacity: 0; } }
.row-icon-btn { width: 27px; height: 27px; display: grid; place-items: center; border: 0; border-radius: 6px; background: transparent; color: #2563eb; cursor: pointer; position: relative; padding: 0; }
.row-icon-btn svg { width: 15px; height: 15px; }
.row-icon-btn:hover { background: #eef4ff; }
.row-icon-btn:disabled { color: #b6bcc6; cursor: not-allowed; background: transparent; }
/* 名称气泡：悬停图标 300ms 显示，深色白字 + 小箭头 */
.row-icon-btn::after { content: attr(data-tip); position: absolute; bottom: calc(100% + 7px); left: 50%; transform: translateX(-50%) translateY(2px); padding: 4px 9px; border-radius: 6px; background: #1e2128; color: #fff; font-size: 11px; white-space: nowrap; opacity: 0; pointer-events: none; transition: opacity .15s ease .2s, transform .15s ease .2s; z-index: 6; }
.row-icon-btn::before { content: ""; position: absolute; bottom: calc(100% + 3px); left: 50%; transform: translateX(-50%); border: 4px solid transparent; border-top-color: #1e2128; opacity: 0; pointer-events: none; transition: opacity .15s ease .2s; z-index: 6; }
.row-icon-btn:hover::after { opacity: 1; transform: translateX(-50%) translateY(0); }
.row-icon-btn:hover::before { opacity: 1; }

/* 双固定列：首列钉左、操作栏列钉右（定稿：阴影线画在外层容器上，贯通表头到滚动条区）。 */
.source-scroll { overflow-x: auto; }
.fx-wrap { position: relative; }
.source-table th.fix-left, .source-table td.fix-left { position: sticky; left: 0; z-index: 2; }
.source-table th.fix-right, .source-table td.fix-right { position: sticky; right: 0; z-index: 2; }
.source-table th.fix-left, .source-table th.fix-right { z-index: 3; background: var(--bg-page); }
/* 滚动条定稿（2026-10-21 三次反馈）：对齐小鹅通比例——6px 细条、浅灰、两端无箭头按钮。 */
.source-scroll::-webkit-scrollbar { height: 6px; }
.source-scroll::-webkit-scrollbar-track { background: transparent; }
.source-scroll::-webkit-scrollbar-thumb { background: #dcdee3; border-radius: 3px; }
.source-scroll::-webkit-scrollbar-thumb:hover { background: #c6cad2; }
.source-scroll::-webkit-scrollbar-button, .source-scroll::-webkit-scrollbar-button:start, .source-scroll::-webkit-scrollbar-button:end, .source-scroll::-webkit-scrollbar-button:start:decrement, .source-scroll::-webkit-scrollbar-button:end:increment, .source-scroll::-webkit-scrollbar-button:horizontal:start, .source-scroll::-webkit-scrollbar-button:horizontal:end { display: none; width: 0; height: 0; background: transparent; }
.source-scroll::-webkit-scrollbar-corner { background: transparent; }
.source-scroll { scrollbar-width: auto; scrollbar-color: auto; }
/* 定稿（2026-10-21 用户反馈）：底色统一白色（去斑马纹），hover 整行浅蓝灰（小鹅通同款 #f5f7fa）。 */
.source-scroll .source-table tbody td { background: #fff; }
.source-scroll .source-table tbody tr:nth-child(even) td { background: #fff; }
.source-scroll .source-table tbody tr:hover td { background: var(--hero-bg-start); }
/* 虚影竖线本体（定稿 2026-10-21）：画在外层容器 .fx-wrap 上，从表头贯通到滚动条区域，不会"漏一节"。
   位置按列宽钉住：左线贴在首列右缘（200px）、右线贴在操作列左缘（260px）。
   显隐规则：最左左线隐 / 最右右线（含发丝线）隐 / 拉动中对应侧浮现。 */
/* s186：z5→z42——悬停行抬层 td z41（s185）会把竖线盖住（用户实测：鼠标放操作列竖线消失）；
   竖线 6px 半透明渐变须始终浮在单元格背景之上（z42 > 41），pointer-events:none 不挡交互。 */
.fx-wrap::after, .fx-wrap::before { content: ""; position: absolute; top: 0; bottom: 0; width: 6px; z-index: 42; pointer-events: none; opacity: 0; transition: opacity .14s ease; }
.fx-wrap::after { left: var(--fx-left, 200px); background: linear-gradient(to right, rgba(31,35,41,.08), rgba(31,35,41,0)); }
.fx-wrap::before { right: var(--fx-right, 260px); background: linear-gradient(to left, rgba(31,35,41,.08), rgba(31,35,41,0)); border-right: 1px solid rgba(31,35,41,.08); }
.fx-wrap.scrolled-left::after { opacity: 1; }
.fx-wrap.scrolled-right::before { opacity: 1; }
/* 来源名称蓝色链接：hover 变深 + 下划线，点击直接跳转来源网址。 */
.source-table .name-link { display: block; max-width: 100%; overflow: hidden; color: var(--info); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; text-decoration: none; }
.source-table .name-link:hover { color: #1d4ed8; text-decoration: underline; }
/* 分页条（小鹅通风格：细按钮 + 当前页红底）。 */
.pagenav { display: flex; gap: 8px; align-items: center; padding: 11px 16px; border-top: 1px solid var(--border-light); color: var(--text-3); font-size: 12px; }
.pagenav .spacer { flex: 1; }
.page-btn { min-width: 28px; height: 28px; padding: 0 8px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: var(--radius-sm); background: #fff; color: var(--text-2); font-size: 12px; cursor: pointer; }
.page-btn:hover:not(:disabled):not(.is-cur) { border-color: var(--brand-red); color: var(--brand-red); }
.page-btn.is-cur { border-color: var(--brand-red); background: var(--brand-red); color: #fff; font-weight: 600; }
.page-btn:disabled { color: #d1d5db; cursor: default; }
.page-ellipsis { color: var(--text-4); }

/* Account management: group toolbar, bulk actions and table layout. */
.account-management .card-header { margin-bottom: 0; }

/* ===== 账号管理方案 C（2026-10-21 用户钦定）：0 账号居中引导卡 + 有账号单卡融合 ===== */
/* 引导卡：整页唯一焦点，黑金图标块 + 说明 + 红色 CTA */
.account-onboard { padding: 74px 24px 80px; text-align: center; }
.account-onboard-icon { width: 76px; height: 76px; margin: 0 auto 20px; border-radius: 22px; background: linear-gradient(145deg, #232021, #3a3436); display: flex; align-items: center; justify-content: center; box-shadow: 0 8px 24px rgba(35,32,33,.25); }
.account-onboard-icon svg { width: 36px; height: 36px; }
.account-onboard h4 { font-size: 18px; font-weight: 600; margin: 0 0 8px; padding-left: 0; }
/* 引导卡标题不吃全局 h4 段落红条（.page h4::before），居中排版下红条会孤零零飘在左侧 */
.account-onboard h4::before { display: none; }
.account-onboard p { font-size: 13px; color: var(--text-3); max-width: 420px; margin: 0 auto 26px; line-height: 1.7; }
.account-onboard-cta { padding: 10px 30px; }
.account-onboard-note { display: block; margin-top: 18px; font-size: 12px; color: var(--text-4); }

/* 分组筛选条：并入来源账号卡内顶部，替代原独立「账号分组」卡 */
.acct-pill-bar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 12px 16px 13px; border-bottom: 1px solid var(--border-light); }
.acct-pill { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--border); background: #fff; color: var(--text-2); border-radius: 999px; padding: 5px 13px; font-size: 13px; font-family: inherit; cursor: pointer; transition: border-color .15s, color .15s, background .15s; }
.acct-pill:hover { border-color: var(--info); color: var(--info); background: var(--info-bg); }
.acct-pill.is-active { border-color: var(--info); color: var(--info); background: var(--info-bg); font-weight: 600; }
.acct-pill-count { font-size: 11px; color: var(--text-4); background: #f3f4f6; border-radius: 999px; padding: 0 7px; line-height: 17px; }
.acct-pill.is-active .acct-pill-count, .acct-pill:hover .acct-pill-count { background: var(--info); color: #fff; }
.acct-pill-add { margin-left: auto; display: inline-flex; align-items: center; border: 1px dashed var(--border-strong); background: transparent; color: var(--text-3); border-radius: 999px; padding: 5px 13px; font-size: 13px; font-family: inherit; cursor: pointer; transition: border-color .15s, color .15s; }
.acct-pill-add:hover { border-color: var(--info); color: var(--info); }

/* 幽灵按钮内的小图标（如「刷新」） */
.btn-ic { width: 14px; height: 14px; vertical-align: -2px; margin-right: 4px; }
/* 方案 B（2026-10-21 定稿）：两张独立卡——来源账号在上，账号分组在下；卡片间距 14px。 */
.account-group-card { margin-top: 14px; }
.account-group-card .card-header { margin-bottom: 10px; min-height: 54px; }
/* 分组区白底（原灰底描边盒子已随拆卡移除），胶囊条直接铺在卡内。 */
.account-group-list { display: flex; gap: 8px; flex-wrap: wrap; padding: 0 16px 16px; }
.account-group-option { display: inline-flex; gap: 6px; align-items: center; min-height: 30px; padding: 0 12px; border: 1px solid var(--border); border-radius: 999px; background: #fff; color: var(--text-2); font-size: 12.5px; cursor: pointer; transition: border-color .13s, color .13s; }
.account-group-option strong { min-height: 18px; padding: 0 7px; display: inline-flex; align-items: center; border-radius: 999px; background: var(--bg-tag); color: var(--text-4); font-size: 10.5px; font-weight: 600; }
.account-group-option:hover { border-color: var(--info); color: var(--info); }
.account-group-option:hover strong { color: var(--info); background: var(--info-bg); }
/* 选中态：字体变蓝 + 数字角标蓝底白字（用户钦定 2026-10-21）。 */
.account-group-option.is-active { border-color: var(--info); background: #fff; color: var(--info); font-weight: 600; }
.account-group-option.is-active strong { background: var(--info); color: #fff; }
.account-bulk-toolbar { display: flex; gap: 14px; align-items: center; margin: 0 0 12px; padding: 10px 14px; border: 1px dashed var(--border); border-radius: 8px; font-size: 13px; color: var(--text-3); }
.account-bulk-toolbar label { display: inline-flex; gap: 6px; align-items: center; cursor: pointer; }
.account-bulk-toolbar select { min-height: 30px; padding: 0 8px; border: 1px solid var(--border); border-radius: 6px; }
.account-group-chip { display: inline-block; margin-left: 6px; padding: 1px 8px; border-radius: 999px; background: var(--bg-3, #eef2ff); color: var(--primary); font-size: 11px; }
.account-select { width: 15px; height: 15px; cursor: pointer; }
.account-channel-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.connection-hint { padding: 10px 12px; border-radius: 6px; background: #fff8e6; color: #8a5a00; font-size: 13px; line-height: 1.6; }
/* s54 账号弹窗单列布局（对齐网盘站 form-field 单列结构）；渠道提示区内的 IMA 密钥对仍保持双列 */
.source-form-grid.is-single { grid-template-columns: minmax(0, 1fr); }
/* s55 渠道连接向导（录 Cookie / 迅雷 Token / 星球设备授权） */
.modal-hint { margin: 0 0 12px; color: var(--text-3); font-size: 13px; }
.cookie-record-steps { margin: 0 0 14px; padding-left: 18px; color: var(--text-2); font-size: 13px; line-height: 1.8; }
.cookie-record-steps code { padding: 1px 5px; border-radius: 4px; background: var(--bg-page); color: var(--brand-red); font-size: 12px; }
.connect-error { margin-top: 10px; padding: 9px 12px; border-radius: 6px; background: #fdecec; color: #b42318; font-size: 13px; line-height: 1.5; }
.connect-error[hidden] { display: none; }
.zsxq-auth-card { display: grid; justify-items: center; gap: 14px; padding: 26px 20px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-page); }
.zsxq-auth-code { padding: 10px 26px; border-radius: var(--radius-sm); background: #fff; color: var(--text-1); font-size: 26px; font-weight: 800; letter-spacing: 6px; font-family: ui-monospace, monospace; }
.zsxq-auth-status { color: var(--text-3); font-size: 13px; text-align: center; }
.connection-account-summary { display: flex; gap: 8px; align-items: center; color: var(--text-3); font-size: 13px; }

.source-form-grid [hidden] { display: none !important; }

/* s158：采集源表单——单次条数 hint */
.source-per-run-hint { grid-column: 1 / -1; margin: 0; font-size: 11.5px; line-height: 1.6; color: var(--text-3, #9ca3af); }
/* s172：关键词输入框退役，原位置换一行式规则入口条（设计稿A，用户钦定） */
.source-rule-bar { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 10px; border: 1px solid var(--border-light); background: #fafbfc; border-radius: var(--radius-sm); padding: 9px 12px; margin-bottom: 4px; }
.srb-left { display: flex; align-items: center; gap: 8px; min-width: 0; }
.srb-icon { width: 22px; height: 22px; border-radius: 6px; background: var(--brand-red-light); color: var(--brand-red); display: inline-flex; align-items: center; justify-content: center; flex: none; }
.srb-text { display: flex; flex-direction: column; min-width: 0; }
.srb-text b { font-size: 11.5px; font-weight: 600; color: var(--text-1); }
.srb-text small { font-size: 10.5px; color: var(--text-4); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.srb-go { font-size: 11.5px; color: var(--brand-red); font-weight: 600; text-decoration: none; white-space: nowrap; flex: none; }
.srb-go:hover { color: var(--brand-red-dark); }

/* Account table column plan: keep the checkbox slim and the name column anchored left. */
.account-table .account-col-check { width: 44px; }
.account-table .account-col-name { width: 230px; }
.account-table th:nth-child(2), .account-table td:nth-child(2) { text-align: left; }
.account-table .account-col-channel { width: 190px; }
.account-table .account-col-id { width: 180px; }
.account-table .account-col-auth { width: 150px; }
.account-table .account-col-capability { width: 130px; }
/* s157：入库策略列（下拉+展开箭头约 185px） */
.account-table .account-col-policy { width: 185px; }
.account-table .account-col-actions { width: 350px; }

/* ============ 设置中心：按钮与模块结构（2026-10-15 阶段 3+4） ============ */
.btn { min-height: 36px; padding: 0 16px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; border: 1px solid var(--border-strong); border-radius: var(--radius-sm); background: #fff; color: var(--text-1); font: inherit; font-size: 13px; font-weight: 500; white-space: nowrap; cursor: pointer; transition: background .15s, border-color .15s, color .15s, box-shadow .15s; }
.btn:hover:not(:disabled) { border-color: var(--text-4); background: var(--bg-hover); }
.btn:active:not(:disabled) { transform: translateY(1px); }
.btn:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(200, 52, 44, .18); }
.btn:disabled { opacity: .6; cursor: not-allowed; }
/* 2026-10-20 用户钦定：主按钮从深灰黑改品牌红（与 btn-accent 同色系），数据导出页红框圈改 */
.btn-primary { color: #fff; border-color: var(--brand-red); background: var(--brand-red); }
.btn-primary:hover:not(:disabled) { border-color: var(--brand-red-dark); background: var(--brand-red-dark); }
/* 方案 B（2026-10-20 用户钦定）：飞书动作按钮——飞书蓝 #3370FF 文字+描边，内嵌官方飞书 Logo，跨品牌识别 */
.btn-feishu { color: #3370FF; border-color: #b6ccff; background: #fff; }
.btn-feishu:hover:not(:disabled) { border-color: #3370FF; background: #f0f4ff; }
.btn-feishu:disabled { color: #9ca3af; border-color: var(--border-light); background: #fafbfc; }
.btn-feishu-logo { display: inline-flex; width: 15px; height: 15px; flex: none; }
.btn-feishu-logo svg { display: block; width: 100%; height: 100%; }
.btn-accent { color: #fff; border-color: var(--brand-red); background: var(--brand-red); }
.btn-accent:hover:not(:disabled) { border-color: var(--brand-red-dark); background: var(--brand-red-dark); }
/* s166：助理中心专用深色主按钮——与网盘站 btn-primary（#111827）同色，助理连接/解绑主操作在两站视觉一致 */
.btn-dark { color: #fff; border-color: #111827; background: #111827; }
.btn-dark:hover:not(:disabled) { border-color: #1f2937; background: #1f2937; }
.btn-outline { background: #fff; }
.btn-sm { min-height: 32px; padding: 0 12px; font-size: 12px; }
.btn-xs { min-height: 26px; padding: 0 8px; font-size: 11px; }
.method-card-actions { display: flex; gap: 8px; align-items: center; flex: none; }
.method-card-actions .filter-select { min-height: 28px; padding: 0 8px; border: 1px solid var(--border); border-radius: 6px; font-size: 12px; }
.method-value.is-ok { color: #087b57; }
.method-value.is-warn { color: #b26a00; }
.method-badge { padding: 1px 7px; border-radius: 999px; background: var(--primary-light); color: var(--primary); font-size: 11px; }
/* 账号安全卡片（与网盘拉新工作台同构）：图标 + 名称 + 状态 + 操作按钮统一对齐 */
.settings-method-card { padding: 12px 14px; }
.settings-method-main { display: flex; align-items: center; gap: 10px; min-width: 0; flex: 1; }
.settings-method-icon { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 6px; background: var(--info-bg); color: var(--info); flex-shrink: 0; }
.settings-method-main strong { color: var(--text-1); font-size: 13px; flex-shrink: 0; }
.settings-method-value { color: var(--text-2); font-size: 12px; overflow-wrap: anywhere; }
.settings-method-value.is-ok { color: var(--text-3); }
.settings-method-badge { flex-shrink: 0; padding: 2px 8px; border-radius: 999px; background: rgba(46, 160, 67, 0.12); color: #1a7f37; font-size: 11px; font-weight: 600; white-space: nowrap; }
.settings-note { margin: 14px 0 8px; display: flex; gap: 8px; align-items: baseline; flex-wrap: wrap; font-size: 12px; color: var(--text-3); }
.settings-note strong { color: var(--text-1); font-size: 12.5px; }
.assistant-card { flex-direction: column; align-items: stretch; gap: 10px; }
.assistant-card .method-main { flex: none; }
.assistant-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.assistant-field { min-height: 0; }
.assistant-field input { width: 100%; min-height: 34px; }
.assistant-toggle { display: inline-flex; gap: 6px; align-items: center; font-size: 12px; color: var(--text-2); cursor: pointer; }
.assistant-toggle input { min-height: 0; padding: 0; width: 15px; height: 15px; flex: 0 0 auto; accent-color: var(--primary); }
.assistant-toggle-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 8px 12px; margin: 4px 0 12px; }
.assistant-save-row { margin-top: 12px; gap: 10px; }
.model-initial { font-weight: 700; }
.model-row-card { flex-wrap: wrap; }
.rules-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.rules-field { display: flex; flex-direction: column; gap: 5px; }
.rules-field > span { font-size: 12px; color: var(--text-2); font-weight: 600; }
.rules-field em { margin-left: 6px; font-style: normal; font-weight: 400; color: var(--text-4); font-size: 11px; }
.rules-field textarea, .rules-field input { width: 100%; min-height: 34px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 5px; font: inherit; font-size: 12.5px; color: var(--text-1); background: #fff; }
.rules-field textarea { min-height: 88px; resize: vertical; line-height: 1.6; }
.rules-thresholds { display: flex; gap: 16px; align-items: flex-end; flex-wrap: wrap; margin: 12px 0; }
.rules-num { width: 150px; }
.rules-check { padding-bottom: 6px; }
@media (max-width: 900px) {
  .settings-layout { grid-template-columns: 1fr; }
  .rules-grid, .assistant-form { grid-template-columns: 1fr; }
  .method-card { flex-wrap: wrap; }
}

/* 设置弹窗借用登录门面的 .gate-field：门面是深色底，弹窗是白底，必须覆盖回浅色。
   不改这里会出现「白弹窗里一个黑输入框」。 */
.modal .gate-field span { color: var(--text-2); font-size: 12px; font-weight: 600; }
.modal .gate-field input, .modal .gate-field select, .modal .gate-field textarea { width: 100%; box-sizing: border-box; min-height: 34px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 6px; background: #fff; color: var(--text-1); font: inherit; font-size: 12.5px; outline: none; }
.modal .gate-field textarea { min-height: 120px; resize: vertical; line-height: 1.6; }
.modal .gate-field input:focus, .modal .gate-field select:focus, .modal .gate-field textarea:focus { border-color: var(--info); box-shadow: 0 0 0 2px rgba(37, 99, 235, .18); }
.modal .gate-field input[readonly] { background: var(--bg-page); color: var(--text-3); }
.modal .gate-error { margin-top: 8px; color: var(--danger); font-size: 12px; }

/* 密码弹窗：输入框 + 右侧眼睛切换（明文/密文）。 */
.password-field .password-input-wrap { position: relative; display: flex; align-items: center; }
.password-field .password-input-wrap input { width: 100%; box-sizing: border-box; min-height: 34px; padding: 8px 38px 8px 10px; border: 1px solid var(--border); border-radius: 5px; background: #fff; color: var(--text-1); font: inherit; font-size: 12.5px; outline: none; }
.password-field .password-input-wrap input:focus { border-color: var(--brand-red); box-shadow: 0 0 0 2px var(--brand-red-light); }
.password-eye { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); display: flex; align-items: center; justify-content: center; width: 26px; height: 26px; padding: 0; border: 0; border-radius: 4px; background: transparent; color: var(--text-4); cursor: pointer; }
.password-eye:hover { color: var(--text-2); background: var(--bg-hover); }
.password-eye.is-visible { color: var(--brand-red); }

/* 模型服务商目录：预设服务商下拉 + 可选模型列表 */
.cf-model-picker { position: relative; }
/* 下拉式目录（2026-10-18 用户反馈）：默认收起，聚焦「模型名称」输入框时展开，选中后自动收起 */
.cf-model-options.is-hidden { display: none; }
.cf-model-options { margin-top: 6px; max-height: 208px; overflow-y: auto; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5px; padding: 6px; border: 1px solid var(--border); border-radius: 5px; background: var(--bg-page); }
.cf-model-option { padding: 7px 9px; text-align: left; border: 1px solid transparent; border-radius: 5px; background: #fff; color: var(--text-2); font: inherit; font-size: 12px; cursor: pointer; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cf-model-option:hover { border-color: var(--primary); color: var(--primary); }
.cf-model-option.is-active { border-color: var(--primary); background: var(--primary-light); color: var(--primary); font-weight: 600; }
.cf-model-option small { display: block; color: var(--text-4); font-size: 10.5px; }
.cf-model-empty { padding: 8px 9px; color: var(--text-4); font-size: 11.5px; }
.cf-model-hint { margin-top: 5px; color: var(--text-4); font-size: 11px; }
@media (max-width: 760px) { .cf-model-options { grid-template-columns: 1fr; } }
/* 收起态下选中模型的回显胶囊：让用户知道当前选的是哪个，不必展开目录 */
.cf-model-picked { margin-top: 5px; display: inline-flex; align-items: center; gap: 6px; max-width: 100%; padding: 2px 9px; border: 1px solid var(--border); border-radius: 999px; background: var(--bg-tag); color: var(--text-2); font-size: 11px; }
.cf-model-picked em { color: var(--text-1); font-style: normal; font-weight: 600; }
.cf-model-picked small { color: var(--text-4); font-size: 10.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 我的套餐：套餐卡 + 免费解锁 + 收银台 */
.cf-plan-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 10px 0 12px; }
/* 套餐卡 1:1 网盘站 ndx-plan-card：居中排布 + 品牌红价签 + 选中浅红底 */
.cf-plan-card { position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; min-width: 0; padding: 12px 10px; border: 1px solid var(--border-strong); border-radius: 10px; background: #fff; text-align: center; cursor: pointer; font: inherit; }
.cf-plan-card:hover { border-color: var(--brand-red); }
.cf-plan-card strong { color: var(--text-1); font-size: 13px; }
.cf-plan-card.is-active { border-color: var(--brand-red); background: var(--brand-red-light); }
.cf-plan-price { color: var(--brand-red); font-size: 20px; font-weight: 600; line-height: 1.2; font-variant-numeric: tabular-nums; }
.cf-plan-meta { color: var(--text-4); font-size: 11px; }
.cf-plan-badge { position: absolute; top: -8px; right: 8px; padding: 2px 8px; border-radius: 999px; background: var(--brand-red); color: #fff; font-size: 10.5px; line-height: 1.4; font-weight: 500; }
/* 底部通栏开通按钮（2026-10-20 按网盘参考站：立即开通 · ¥金额 通栏主按钮） */
.cf-plan-submit { width: 100%; min-height: 40px; margin-top: 14px; font-size: 14px; }
.cf-invite-row { display: flex; gap: 8px; align-items: center; margin: 8px 0 6px; }
.cf-invite-row input { flex: 1; min-width: 0; min-height: 32px; padding: 6px 10px; border: 1px solid var(--border); border-radius: 5px; font: inherit; font-size: 12.5px; }
.settings-note.is-info { padding: 9px 12px; border-radius: 5px; background: var(--info-bg, #eff6ff); color: var(--info, #3b82f6); }
.settings-note.is-warn { padding: 9px 12px; border-radius: 5px; background: #fff6e6; color: #8a5a00; }
.cf-checkout-bar { display: flex; gap: 10px; align-items: center; padding: 10px 12px; border: 1px solid var(--border); border-radius: 6px; background: var(--bg-page); font-size: 12.5px; }
.cf-checkout-bar span:first-child { color: var(--text-4); }
.cf-checkout-bar strong { flex: 1; color: var(--text-1); }
.cf-checkout-price { color: var(--brand-red); font-size: 18px; font-weight: 600; }
.cf-checkout-channels { display: flex; gap: 8px; margin: 12px 0; }
.cf-checkout-channels .btn.is-active { border-color: var(--border-strong); background: #fff; color: var(--text-1); font-weight: 500; }
.cf-checkout-channels .btn.is-active[data-pay-channel="native"] { background: #2aae67; border-color: #2aae67; color: #fff; }
.cf-checkout-channels .btn.is-active[data-pay-channel="alipay"] { background: #1677ff; border-color: #1677ff; color: #fff; }
.cf-checkout-body { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.cf-checkout-qr { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.cf-checkout-qr img { border: 1px solid var(--border); border-radius: 6px; background: #fff; }
.cf-checkout-help { align-self: stretch; margin-top: 6px; padding: 10px 12px; border-radius: 5px; background: var(--bg-page); }
.cf-checkout-help strong { display: block; color: var(--text-1); font-size: 12.5px; }
.cf-checkout-help span { color: var(--text-3); font-size: 11.5px; }
@media (max-width: 760px) { .cf-plan-row { grid-template-columns: 1fr; } }

/* ==================== 设置面板内容级对齐网盘（2026-10-16 六期） ==================== */
/* 助理中心三页签 */
.settings-assistant-tabs { display: flex; gap: 6px; margin-bottom: 14px; padding-bottom: 10px; border-bottom: 1px solid var(--border); }
.settings-assistant-tab { padding: 7px 10px; border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text-2); font-size: 12px; cursor: pointer; }
.settings-assistant-tab.is-active { background: var(--brand-red-light); color: var(--brand-red); font-weight: 600; }
.assistant-toggle-row { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border-radius: var(--radius-sm); cursor: pointer; }
.assistant-toggle-row:hover { background: var(--bg-hover); }
.assistant-toggle-row input { margin-top: 3px; min-height: 0; padding: 0; min-width: 16px; flex: 0 0 auto; }
.assistant-toggle-row strong { display: block; color: var(--text-1); font-size: 13px; font-weight: 600; }
.assistant-toggle-row em { display: block; margin-top: 2px; color: var(--text-3); font-size: 12px; font-style: normal; }
.assistant-history-item { border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 10px 12px; }
.assistant-history-item-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.assistant-history-item-head strong { color: var(--text-1); font-size: 13px; }
.assistant-history-item p { margin: 6px 0 0; color: var(--text-2); font-size: 12px; line-height: 1.6; white-space: pre-wrap; word-break: break-word; }
.assistant-history-item .assistant-history-meta { margin-top: 6px; color: var(--text-3); font-size: 11px; display: flex; gap: 10px; flex-wrap: wrap; }
.assistant-badge { padding: 2px 8px; border-radius: 999px; font-size: 11px; font-weight: 600; }
.assistant-badge.sent { background: var(--info-bg); color: var(--info); }
.assistant-badge.pending { background: var(--bg-tag); color: var(--text-2); }
.assistant-badge.failed, .assistant-badge.skipped { background: rgba(220, 38, 38, 0.1); color: #dc2626; }

/* ==================== 助理中心 1:1 还原网盘站（2026-10-20） ==================== */
.assistant-section { display: flex; flex-direction: column; gap: 12px; }
/* 助理连接卡片（WorkBuddy 式）：标题行 = 官方 LOGO + 名称 + 右侧按钮，描述另起一行 */
.assistant-connect-card { display: flex; flex-direction: column; gap: 0; border: 1px solid var(--border); border-radius: 10px; padding: 16px 18px; background: #fff; transition: border-color .15s ease, box-shadow .15s ease; }
.assistant-connect-card:hover { border-color: #d4d8de; box-shadow: 0 1px 3px rgba(16, 24, 40, .06); }
.assistant-connect-head { display: flex; align-items: center; gap: 10px; }
.assistant-connect-name { color: var(--text-1); font-size: 14px; font-weight: 600; line-height: 1.4; }
.assistant-connect-head .assistant-connect-btn { margin-left: auto; flex: none; }
.assistant-connect-desc { margin: 8px 0 0; color: var(--text-2); font-size: 12.5px; line-height: 1.65; }
.assistant-connect-status { display: none; }
.assistant-brand-icon { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; flex-shrink: 0; }
.assistant-brand-icon svg { display: block; width: 100%; height: 100%; }
/* 弹窗内「更多连接方式」折叠区 */
.assistant-more-ways { display: flex; justify-content: center; margin-top: 4px; }
.assistant-more-ways + div { border-top: 1px dashed var(--border); margin-top: 10px; padding-top: 12px; display: flex; flex-direction: column; gap: 10px; }
.assistant-radio-row { display: flex; gap: 18px; align-items: center; margin-bottom: 6px; }
.assistant-radio-row label { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-1); flex: none; white-space: nowrap; }
.assistant-radio-row input[type="radio"] { flex: none; width: auto; min-height: 0; margin: 0; }
/* 回调地址：只读输入框 + 复制按钮 */
.assistant-copy-row { display: flex; gap: 8px; align-items: center; }
.assistant-copy-row input { flex: 1; min-width: 0; font-size: 12px; color: var(--text-2); min-height: 0; }
.assistant-copy-row button { flex: none; white-space: nowrap; }
/* 助理连接弹窗 */
.assistant-modal-pane { display: flex; flex-direction: column; gap: 10px; }
#assistant-wecom-scan-active, #assistant-wecom-more-ws, #assistant-wecom-more-callback, #assistant-wecom-more-webhook, #assistant-feishu-app-callback-fields { display: flex; flex-direction: column; gap: 10px; }
/* s166b：.form-field 此前是裸类（无任何定义）→ 弹窗表单方框/标签/间距全走浏览器默认，与网盘站 1:1 还原失败。
   以下三行 1:1 抄网盘站 2243-2245 行（flex 列 / 间距 6px / 标签 12px 600 / 输入框 36px 高 + 圆角 + focus 蓝）。 */
.form-field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; color: var(--text-2); font-size: 12px; font-weight: 600; }
.form-field input, .form-field select { width: 100%; min-height: 36px; padding: 8px 10px; border: 1px solid var(--border-strong); border-radius: var(--radius-sm); background: #fff; color: var(--text-1); font: inherit; font-weight: 400; }
.form-field input:focus, .form-field select:focus { outline: 2px solid rgba(37, 99, 235, .25); border-color: var(--info); }
/* 设置页昵称行例外：pb-box 是自带边框的复合输入框，不套 .form-field input 通用框（防双框）。 */
.settings-name-field .pb-box input { min-height: 0; padding: 0 12px; border: 0; border-radius: 0; background: transparent; }
.settings-name-field .pb-box { margin-bottom: 14px; }
.assistant-modal-pane .form-field input, .assistant-modal-pane .form-field select { width: 100%; }
.assistant-qr-wrap { display: flex; align-items: center; justify-content: center; width: 208px; height: 208px; margin: 4px auto; border: 1px solid var(--border); border-radius: var(--radius-sm); background: #fff; overflow: hidden; }
.assistant-qr-wrap img { width: 192px; height: 192px; }
.assistant-qr-placeholder { color: var(--text-3); font-size: 12px; }
/* 微信扫码弹窗（WorkBuddy 式）：窄弹窗 + 居中「微信扫一扫」+ 二维码 */
.assistant-modal.is-wechat-scan { max-width: 360px; }
.assistant-wechat-scan { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 6px 0 4px; }
.assistant-scan-label { margin: 0; font-size: 14px; font-weight: 500; color: var(--text-1); }
/* 弹窗头部（返回箭头 + 书本图标，WorkBuddy 式） */
.assistant-modal-header { display: flex; align-items: center; gap: 8px; }
.assistant-modal-header .modal-close { margin-left: auto; }
.assistant-book-icon { display: inline-flex; align-items: center; }
.assistant-modal-back { border: none; background: transparent; font-size: 22px; line-height: 1; color: var(--text-2); cursor: pointer; padding: 0 8px 2px 2px; margin-left: -4px; border-radius: 6px; }
.assistant-modal-back:hover { color: var(--text-1); }
/* 分段页签（WorkBuddy 式 segmented control） */
.assistant-seg { display: flex; gap: 4px; background: #edf3f7; border-radius: 10px; padding: 4px; margin-bottom: 16px; }
.assistant-seg-btn { flex: 1; border: none; background: transparent; padding: 8px 6px; border-radius: 8px; font-size: 13px; color: #61717f; cursor: pointer; font-weight: 500; white-space: nowrap; }
.assistant-seg-btn:hover { color: var(--text-1); }
.assistant-seg-btn.is-active { background: #fff; color: #16283c; font-weight: 600; box-shadow: 0 1px 3px rgba(16, 42, 67, 0.12); }
/* 企微扫码主屏（WorkBuddy 式：居中大按钮 + 文字链接） */
.assistant-scan-idle { display: flex; flex-direction: column; align-items: center; gap: 20px; padding: 46px 0 40px; }
.assistant-scan-start { min-width: 230px; padding: 11px 26px; font-size: 14px; }
.assistant-text-link { border: none; background: transparent; color: #7d8b99; font-size: 13px; cursor: pointer; padding: 4px 8px; }
.assistant-text-link:hover { color: var(--text-1); text-decoration: underline; }
.assistant-scan-actions { display: flex; flex-direction: column; align-items: center; gap: 6px; margin-top: 8px; }
.assistant-qr-status { text-align: center; }
/* 底部按钮区：右侧 取消 + 连接 */
.assistant-modal-footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 18px; }
.assistant-modal-footer-left { display: flex; align-items: center; gap: 2px; }
.assistant-modal-footer-right { display: flex; align-items: center; gap: 10px; margin-left: auto; }
/* 解绑确认框（WorkBuddy 式小弹窗） */
.assistant-unbind-modal { max-width: 400px; }
.assistant-unbind-modal .modal-body { padding: 18px 20px 6px; }
.assistant-unbind-text { margin: 0; color: var(--text-2); font-size: 13px; line-height: 1.6; }
.assistant-unbind-modal .modal-footer { border-top: none; padding: 8px 20px 16px; }
.assistant-settings-list { display: flex; flex-direction: column; gap: 4px; }
.assistant-history-list { display: flex; flex-direction: column; gap: 8px; }

/* 采集规则：阈值卡 + 词表库卡 */
.collection-threshold-card { border: 1px solid var(--border); border-radius: var(--radius-md); padding: 14px 16px; margin-bottom: 14px; }
.collection-threshold-card h4 { margin: 0 0 10px; font-size: 14px; }
.collection-threshold-hint { display: block; font-size: 12px; font-weight: 400; color: var(--text-3); margin-top: 3px; }
.collection-threshold-row { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 10px; }
.collection-threshold-item { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-2); }
.collection-threshold-item input { width: 64px; min-height: 32px; padding: 4px 8px; border: 1px solid var(--border); border-radius: var(--radius-sm); }
.collection-library-card { border: 1px solid var(--border); border-radius: var(--radius-md); padding: 14px 16px; margin-bottom: 12px; }
.collection-library-head h4 { margin: 0; font-size: 14px; display: flex; align-items: baseline; gap: 10px; }
.collection-library-count { font-size: 12px; font-weight: 400; color: var(--text-3); }
.collection-library-sub { margin: 4px 0 12px; font-size: 12.5px; color: var(--text-2); }
.collection-library-guide { width: 100%; border-collapse: collapse; font-size: 12.5px; table-layout: fixed; margin-bottom: 12px; }
.collection-library-guide th { text-align: left; padding: 6px 10px; background: var(--bg-tag); color: var(--text-2); font-weight: 500; border-radius: 4px; }
.collection-library-guide th:first-child { width: 86px; }
.collection-library-guide th:last-child { width: 132px; }
.collection-library-guide td { padding: 7px 10px; border-bottom: 1px solid var(--border); color: var(--text-2); vertical-align: middle; }
.collection-library-guide tr:last-child td { border-bottom: none; }
.collection-tier-badge { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 12px; line-height: 1.6; white-space: nowrap; }
.collection-tier-badge.tier-signal { background: #ede7f6; color: #4527a0; }
.collection-tier-badge.tier-core { background: var(--info-bg); color: var(--info); }
.collection-tier-badge.tier-extension { background: var(--success-bg); color: var(--success); }
.collection-tier-badge.tier-long-tail { background: var(--warning-bg); color: var(--warning); }
.collection-tier-badge.tier-excluded { background: var(--danger-bg); color: var(--danger); }
.collection-library-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.collection-library-actions-spacer { flex: 1 1 auto; min-width: 8px; }
.collection-library-hint { margin: 10px 0 0; font-size: 12px; color: var(--text-3); }
.collection-library-editor { border: 1px solid var(--border); border-radius: var(--radius-md); padding: 12px 14px; margin-bottom: 14px; }
.collection-library-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.collection-library-tab { display: inline-flex; align-items: center; gap: 7px; padding: 5px 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: transparent; cursor: pointer; font-size: 12.5px; color: var(--text-2); }
.collection-library-tab:hover { border-color: var(--border-strong); }
.collection-library-tab.is-active { border-color: var(--brand-red); background: var(--brand-red-light); }
.collection-library-tab-count { font-size: 11.5px; color: var(--text-3); min-width: 16px; text-align: center; }
.collection-library-tab.is-active .collection-library-tab-count { color: var(--brand-red); }
.collection-library-pane { min-height: 40px; }
.collection-excel-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 10px; }
.collection-excel-hint { font-size: 12px; color: var(--text-3); }

/* 关键词标签编辑器（采集 + 版权共用） */
.keyword-tags { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; flex: 1; min-height: 28px; }
.keyword-tags .keyword-tag { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; font-size: 12px; border-radius: 999px; background: var(--bg-tag); border: 1px solid var(--border); color: var(--text-1); }
.keyword-tags .keyword-tag button { border: 0; background: none; cursor: pointer; padding: 0; line-height: 1; font-size: 13px; color: var(--text-3); }
.keyword-tags .keyword-tag button:hover { color: var(--danger); }
.keyword-tags-locked .keyword-tag { background: var(--danger-bg); border-color: var(--danger-bg); color: var(--danger); }
.keyword-add { display: inline-flex; align-items: center; gap: 4px; }
.keyword-add input { width: 130px; padding: 4px 8px; font-size: 12px; border: 1px solid var(--border); border-radius: 6px; outline: none; background: #fff; color: var(--text-1); }
.keyword-add input:focus { border-color: var(--info); }
.keyword-add button { border: 1px dashed var(--border-strong); background: none; cursor: pointer; padding: 4px 8px; font-size: 12px; border-radius: 6px; color: var(--text-2); }
.keyword-add button:hover { border-color: var(--info); color: var(--info); }

/* 采集规则保存条（方案 A：词表底部，左统计右按钮，2026-10-20 用户钦定） */
.collection-save-bar { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-top: 12px; padding: 12px 15px; border: 1px solid var(--border-light); border-radius: 9px; background: #fff; }
.collection-save-summary { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; min-width: 0; }
.save-sum-item { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-2); }
.save-sum-item b { font-size: 14px; font-weight: 600; color: var(--text-1); min-width: 16px; text-align: center; }
.save-sum-item i { font-style: normal; }
.save-sum-total { padding-left: 12px; border-left: 1px solid var(--border-light); }
.save-sum-total b { color: var(--brand-red); }
.collection-save-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; flex: none; }

/* s69l 方案A（2026-10-24 用户选定）：词数统计徽章组上移词表库标题行——
   五档计数用档位色小徽章贴在「词表库」标题右侧，统计贴数据源；保存条瘦身为纯操作条。 */
.collection-library-head h4 { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.cf-lib-badges { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; font-weight: 400; }
.cf-lib-badge { display: inline-flex; align-items: center; gap: 5px; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 500; line-height: 1.6; }
.cf-lib-badge b { font-weight: 700; font-size: 12px; }
.cf-lib-badge.tier-signal { background: var(--danger-bg); color: var(--danger); }
.cf-lib-badge.tier-core { background: #eef4ff; color: #2563eb; }
.cf-lib-badge.tier-extension { background: #f0faf3; color: #2eaa5e; }
.cf-lib-badge.tier-long-tail { background: #fff7e8; color: #d97706; }
.cf-lib-badge.tier-excluded { background: var(--bg-tag); color: var(--text-2); }
.cf-lib-badge-total { font-size: 11px; color: var(--text-3); padding-left: 9px; border-left: 1px solid var(--border-light); }
.cf-lib-badge-total b { color: var(--brand-red); font-size: 12px; font-weight: 700; }

/* s69m 方案E（2026-10-24 用户确认）：采集规则自动保存——标题行右侧状态徽章。
   灰点=已自动保存，橙点=正在保存，红点=失败（带重试按钮）。全局唯一一枚。 */
.cf-autosave-badge { display: inline-flex; align-items: center; gap: 6px; padding: 3px 11px; border-radius: 999px; background: var(--bg-tag); font-size: 11px; font-weight: 400; color: var(--text-3); transition: background .15s ease; }
.cf-autosave-badge .cf-as-dot { width: 7px; height: 7px; border-radius: 50%; background: #2eaa5e; flex: 0 0 auto; }
.cf-autosave-badge[data-state="saving"] { background: #fff7e8; color: #d97706; }
.cf-autosave-badge[data-state="saving"] .cf-as-dot { background: #d97706; animation: cfAsPulse 1s ease-in-out infinite; }
.cf-autosave-badge[data-state="error"] { background: var(--danger-bg); color: var(--danger); }
.cf-autosave-badge[data-state="error"] .cf-as-dot { background: var(--danger); }
.cf-as-retry { border: 0; border-radius: 5px; background: var(--danger); color: #fff; font-size: 10.5px; padding: 2px 8px; cursor: pointer; }
.cf-as-retry:hover { opacity: .85; }
@keyframes cfAsPulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

/* 采集规则效果看板 + AI 进化建议 */
/* 看板内卡：白底 + 浅色壳（2026-10-20 用户钦定：背景必须纯白不要灰；
   壳=边框+圆角+内边距，此前误删已补回，观感对齐网盘站白底内卡） */
.collection-stats-card { margin-top: 14px; border: 1px solid var(--border-light); border-radius: 9px; padding: 13px 15px; background: #fff; }
.collection-stats-detail { display: flex; flex-wrap: wrap; gap: 10px; margin: 12px 0; }
.collection-stat-tile { flex: 1 1 120px; min-width: 110px; border: 1px solid var(--border); border-radius: 10px; padding: 10px 12px; background: var(--bg-page); }
.collection-stat-tile .stat-num { font-size: 20px; font-weight: 600; color: var(--text-1); }
.collection-stat-tile .stat-label { font-size: 12px; color: var(--text-2); margin-top: 2px; }
.collection-stat-tile.is-warn .stat-num { color: #b45309; }
.collection-stat-tile.is-good .stat-num { color: var(--success); }
.evolution-item { border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; background: var(--bg-page); }
.evolution-type-badge { font-size: 11px; padding: 2px 8px; border-radius: 999px; background: rgba(96, 46, 178, .12); color: #602eb2; align-self: flex-start; }
.evolution-evidence { font-size: 12px; color: var(--text-3); line-height: 1.5; }
.evolution-actions { display: flex; gap: 8px; flex-wrap: wrap; }
/* 进化建议列表复用网盘站 combo-suggestion 类名（2026-10-20 血案：HTML 移植了但样式漏移植，
   空提示裸奔成无样式文本）。变量名按本站适配：text-secondary→text-2、tertiary→text-3、surface→白底。 */
.combo-suggestions { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
.combo-suggestion-empty { font-size: 13px; color: var(--text-2); padding: 14px; border: 1px dashed var(--border); border-radius: 10px; text-align: center; }
.combo-suggestion-item { border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; background: var(--bg-page); }
.combo-suggestion-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.combo-suggestion-theme { font-size: 15px; font-weight: 600; margin: 0; }
.combo-suggestion-reason { margin: 0; font-size: 13px; color: var(--text-2); line-height: 1.6; }
.combo-suggestion-sources { display: flex; flex-wrap: wrap; gap: 6px; }
.combo-suggestion-source-chip { font-size: 12px; padding: 3px 10px; border-radius: 999px; border: 1px solid var(--border); background: #fff; max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.combo-suggestion-meta { font-size: 12px; color: var(--text-3); }
.combo-suggestion-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.combo-suggestion-status { font-size: 12px; padding: 3px 10px; border-radius: 999px; }
.combo-suggestion-status.is-adopted { background: rgba(39, 80, 10, .12); color: var(--success); }
.combo-suggestion-status.is-dismissed { color: var(--text-3); }

/* 版权规则五模块 */
/* 2026-10-20 用户确认：还原实线边框（软化 v6 的无边框+淡阴影导致白底贴白底分界不清，
   与网盘参考站对齐：1px --border 实线，去阴影） */
.copyright-rules-group { margin: 0 0 16px; padding: 14px 16px; border: 1px solid var(--border); border-radius: 12px; background: #fff; }
.copyright-rules-group h4 { margin: 0 0 4px; font-size: 13px; font-weight: 500; color: var(--text-1); }
.copyright-rules-hint { margin-left: 8px; font-size: 12px; font-weight: 400; color: var(--text-3); }
.copyright-keyword-field { display: flex; align-items: flex-start; gap: 10px; margin: 10px 0 0; }
.copyright-keyword-field > label { flex: 0 0 120px; padding-top: 5px; font-size: 12px; color: var(--text-2); }
.copyright-select { padding: 5px 10px; font-size: 12px; border: 1px solid var(--border); border-radius: 6px; background: #fff; color: var(--text-1); min-height: 0; }
.copyright-field-control { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.copyright-field-control .copyright-select { width: fit-content; max-width: 100%; }
.copyright-field-hint { font-size: 11px; line-height: 1.5; color: var(--text-3); }
.copyright-inline-row { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
.copyright-keyword-field-compact { margin: 0; }
.copyright-keyword-field-compact > label { padding-top: 5px; flex: none; width: auto; }
.copyright-toggle-row { margin-top: 10px; }
.copyright-toggle { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text-2); cursor: pointer; }
.copyright-toggle input { min-height: 0; padding: 0; min-width: 16px; flex: 0 0 auto; }
.copyright-suggestions { margin-top: 10px; display: grid; gap: 8px; }
.copyright-suggestion-empty { padding: 12px; font-size: 12px; color: var(--text-3); background: var(--bg-tag); border-radius: var(--radius-sm); }
.copyright-suggestion-actions { display: flex; align-items: center; gap: 10px; margin-top: 10px; flex-wrap: wrap; }
.copyright-analysis-status { font-size: 12px; color: var(--text-3); }
.copyright-suggestion-item { padding: 12px; border: 1px solid var(--border); border-radius: var(--radius-sm); display: grid; gap: 6px; }
.copyright-suggestion-summary { font-size: 13px; font-weight: 600; color: var(--text-1); }
.copyright-suggestion-line { font-size: 12px; color: var(--text-2); line-height: 1.5; }
.copyright-suggestion-buttons { display: flex; gap: 8px; margin-top: 4px; }
.copyright-preview-form { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 10px; }
.copyright-preview-form input, .copyright-preview-form textarea { padding: 7px 10px; font-size: 12px; border: 1px solid var(--border); border-radius: 6px; outline: none; background: #fff; color: var(--text-1); font-family: inherit; resize: vertical; }
.copyright-preview-form input:focus, .copyright-preview-form textarea:focus { border-color: var(--info); }
.copyright-preview-form button { grid-column: 1 / -1; justify-self: start; }
.copyright-preview-result { margin-top: 10px; padding: 12px; font-size: 12px; border-radius: var(--radius-sm); background: var(--bg-tag); }
.copyright-preview-result .preview-verdict { font-size: 13px; font-weight: 500; margin-bottom: 4px; }
.copyright-preview-result .preview-verdict.is-ok { color: var(--success); }
.copyright-preview-result .preview-verdict.is-block { color: var(--danger); }
.copyright-preview-result .preview-verdict.is-review { color: var(--warning); }
.copyright-preview-result .preview-line { color: var(--text-2); line-height: 1.7; }
.copyright-version-history { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.copyright-version-item { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: #fff; font-size: 12px; }
.copyright-version-item.is-current { border-color: var(--info); background: var(--info-bg); }
.copyright-version-tag { flex: none; font-weight: 600; color: var(--info); min-width: 34px; }
.copyright-version-note { flex: 1; color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.copyright-version-time { flex: none; color: var(--text-3); font-size: 11px; }
.copyright-version-rollback { flex: none; border: 1px solid var(--border-strong); background: none; cursor: pointer; padding: 3px 10px; font-size: 12px; border-radius: 6px; color: var(--text-2); }
.copyright-version-rollback:hover { border-color: var(--info); color: var(--info); }
.copyright-confirm-diffs { margin: 10px 0 0; padding: 10px 12px; max-height: 180px; overflow-y: auto; border-radius: var(--radius-sm); background: var(--bg-tag); font-size: 12px; }
.copyright-confirm-diffs li { margin: 3px 0; line-height: 1.6; }
@media (max-width: 760px) {
  .copyright-preview-form { grid-template-columns: 1fr; }
  .copyright-keyword-field { flex-direction: column; gap: 4px; }
  .copyright-keyword-field > label { flex: none; padding-top: 0; }
  .copyright-inline-row { flex-direction: column; align-items: stretch; gap: 8px; }
}

/* 数据导出卡 */
.export-card { border: 1px solid var(--border); border-radius: var(--radius-md); padding: 14px 16px; margin-bottom: 14px; }
.export-card h4 { margin: 0 0 6px; font-size: 14px; }
.export-card-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 10px; }
.export-card-row select { min-height: 32px; padding: 4px 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: #fff; color: var(--text-1); font-size: 12.5px; }
.export-card-hint { font-size: 12px; color: var(--text-3); margin-top: 8px; }

/* 套餐三卡对比 */
.plan-compare-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-bottom: 16px; }
.plan-compare-card { position: relative; border: 1px solid var(--border-strong); border-radius: var(--radius-md); padding: 16px 14px; background: #fff; display: flex; flex-direction: column; gap: 8px; }
.plan-compare-card.is-current { border-color: var(--brand-red); box-shadow: 0 0 0 1px var(--brand-red); }
.plan-compare-card h4 { margin: 0; font-size: 14px; color: var(--text-1); }
.plan-compare-price { font-size: 20px; font-weight: 600; color: var(--brand-red); }
.plan-compare-price small { font-size: 12px; font-weight: 400; color: var(--text-3); }
.plan-compare-desc { font-size: 12px; color: var(--text-2); line-height: 1.6; flex: 1; }
.plan-compare-flag { position: absolute; top: -9px; right: 10px; padding: 2px 8px; border-radius: 999px; background: var(--brand-red); color: #fff; font-size: 10.5px; font-weight: 500; }
@media (max-width: 720px) { .plan-compare-grid { grid-template-columns: 1fr; } }

/* 用户管理搜索 */
.user-search-row { display: flex; gap: 8px; align-items: center; margin-bottom: 12px; }
.user-search-row input { flex: 1; max-width: 320px; min-height: 32px; padding: 5px 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); font-size: 12.5px; }

/* ==================== 设置中心 v6 还原（2026-10-18，对照莫北私域领资料站） ==================== */
/* 全局骨架：设置页 hero 渐变说明卡（与网盘站 .view-header 同规格） */
.settings-hero { margin-bottom: 16px; padding: 13px 16px; background: linear-gradient(120deg, var(--hero-bg-start) 0%, #e4eefb 55%, var(--hero-bg-end) 100%); border: 1px solid var(--hero-border); border-radius: 10px; }
.settings-hero .view-title { font-size: 16px; }

/* 通用：白底带边框内卡（v6 把灰底卡统一升级为白底+边框） */
.set-inner { border: 1px solid var(--border); border-radius: 9px; padding: 13px 15px; margin-bottom: 12px; background: #fff; }
.set-inner-gray { border: 1px solid var(--border-light); border-radius: 9px; padding: 13px 15px; margin-bottom: 12px; background: #f7f8fa; }
.set-inner-h { position: relative; padding-left: 10px; margin: 0 0 4px; font-size: 13px; font-weight: 700; color: var(--text-1); }
.set-inner-h::before { content: ""; position: absolute; left: 0; top: 2px; bottom: 2px; width: 3px; border-radius: 2px; background: var(--brand-red); }
.set-inner-d { margin: 2px 0 10px 13px; font-size: 11.5px; color: var(--text-3); }
/* 灰底提示条（版本提示、加载提示统一此形态，取消蓝色） */
.set-bar { padding: 8px 12px; border-radius: 7px; background: #f3f4f6; color: var(--text-2); font-size: 12px; margin-bottom: 12px; }
.set-bar.is-warn { background: #fffbeb; border: 1px solid #fde68a; color: #92400e; }
/* 空态虚线卡 */
.set-empty { border: 1px dashed var(--border-strong); border-radius: 8px; padding: 18px; text-align: center; color: var(--text-3); font-size: 12px; }
/* 行内图标按钮（✎ 编辑 / 🔗 测试 / 🗑 删除红） */
.set-icon-btn { width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: 6px; background: #fff; color: var(--text-2); font-size: 12px; cursor: pointer; flex: none; }
.set-icon-btn:hover { border-color: var(--brand-red); color: var(--brand-red); }
.set-icon-btn.red { color: var(--brand-red); border-color: #f3c9c5; }
.set-icon-btn.red:hover { background: var(--brand-red); border-color: var(--brand-red); color: #fff; }
/* 文字链（默认模型等） */
.set-link { color: var(--info); font-size: 12px; font-weight: 600; }

/* 1 助理中心：白底边框通道卡 + 彩色图标 + 按钮右置 */
.set-asst { display: flex; align-items: center; gap: 12px; padding: 13px 15px; margin-bottom: 11px; border: 1px solid var(--border); border-radius: 9px; background: #fff; }
.set-asst-ic { width: 34px; height: 34px; flex: 0 0 34px; display: flex; align-items: center; justify-content: center; border-radius: 8px; font-size: 16px; }
.set-asst-ic svg { display: block; width: 22px; height: 22px; }
.set-asst-main { min-width: 0; flex: 1; }
.set-asst-main b { display: block; color: var(--text-1); font-size: 13px; }
.set-asst-main p { margin: 2px 0 0; color: var(--text-3); font-size: 11.5px; overflow-wrap: anywhere; }
.set-asst-main .is-ok { color: var(--success); font-weight: 600; }
.set-asst-main .is-warn { color: var(--warning); font-weight: 600; }
.set-asst-r { display: flex; gap: 8px; flex: 0 0 auto; margin-left: auto; }

/* 2 模型（s61 方案 A 星标制）：去横线——行间 hover 浅底色区分，模型多时无碎线感。
   行结构：★星标(设默认) + 品牌图标 + 名称(含默认胶囊/缺Key红点) + 副题 + 图标操作列。 */
.set-model-list { border-top: 0; padding: 4px 0; }
.set-model { display: flex; align-items: center; gap: 11px; padding: 12px 10px; border-radius: 9px; border-bottom: 0; }
.set-model:hover { background: #f7f8fa; }
.set-model:last-child { border-bottom: 0; }
/* 星标：默认=实心金星，其余=空心灰星，点击即设为默认（语义同浏览器收藏）。 */
.model-star { width: 30px; height: 30px; flex: 0 0 30px; border: 0; background: none; cursor: pointer; font-size: 17px; line-height: 1; color: #c9cdd4; display: inline-flex; align-items: center; justify-content: center; border-radius: 7px; padding: 0; }
.model-star:hover { background: #f2f3f5; color: #f0a020; }
.model-star.on { color: #f0a020; }
/* 默认模型蓝色胶囊（名称右侧）。 */
.default-pill { display: inline-block; vertical-align: 1px; margin-left: 8px; font-size: 11px; font-weight: 600; color: #2f6bff; background: #eef3ff; border-radius: 999px; padding: 2px 9px; line-height: 1.5; }
/* 缺 Key 红点：常显在名称右侧（这个状态必须可见，否则用户不知道为什么调不了模型）。 */
.key-miss-dot { display: inline-block; vertical-align: 2px; margin-left: 8px; width: 7px; height: 7px; border-radius: 50%; background: var(--brand-red); }
.set-m-ic { width: 26px; height: 26px; flex: 0 0 26px; display: flex; align-items: center; justify-content: center; border-radius: 7px; color: #fff; font-size: 12px; font-weight: 700; background: var(--brand-red); }
/* 品牌Logo图标：去底色，SVG 矢量填满（高清）；尺寸变体跟随容器。 */
.set-m-ic-brand { background: transparent; border-radius: 0; }
.set-m-ic-brand svg { display: block; width: 100%; height: 100%; }
.set-m-ic-lg { width: 30px; height: 30px; flex: 0 0 30px; }
.set-m-ic-sm { width: 22px; height: 22px; flex: 0 0 22px; }
.set-model-main { min-width: 0; flex: 1; }
.set-model-main b { display: block; color: var(--text-1); font-size: 13px; }
.set-model-main .u { display: block; color: var(--text-3); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.set-model-r { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; font-size: 11.5px; }

/* 3 创作偏好：灰底当前模型卡 + 更换按钮 */
.set-cur-model { display: flex; align-items: center; gap: 12px; border: 1px solid var(--border-light); border-radius: 9px; padding: 13px 15px; margin-bottom: 4px; background: #f7f8fa; }
.set-cur-model .set-m-ic { width: 30px; height: 30px; flex-basis: 30px; font-size: 13px; }
.set-cur-model-main { min-width: 0; flex: 1; }
.set-cur-model-name { font-size: 13px; color: var(--text-1); font-weight: 600; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.set-cur-model-sub { margin-top: 2px; font-size: 11px; color: var(--text-3); }
/* 更换展开的模型选项列表 */
.set-model-options { display: grid; gap: 6px; margin: 10px 0 14px; }
.set-model-option { display: flex; align-items: center; gap: 10px; border: 1px solid var(--border); border-radius: 8px; padding: 9px 12px; background: #fff; cursor: pointer; transition: border-color .15s ease; }
.set-model-option:hover { border-color: var(--border-strong); }
.set-model-option.is-current { border-color: var(--brand-red); box-shadow: 0 0 0 1px var(--brand-red); }
.set-model-option-main { display: grid; gap: 1px; min-width: 0; flex: 1; }
.set-model-option-name { font-size: 13px; color: var(--text-1); }
.set-model-option-sub { font-size: 11px; color: var(--text-3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.set-model-option-using { font-size: 11px; color: var(--brand-red); font-weight: 600; flex: none; }
/* 模板行：白底边框卡 + 置顶/重命名/编辑/删除四连 */
.set-tpl { display: flex; align-items: flex-start; gap: 10px; border: 1px solid var(--border); border-radius: 9px; padding: 13px 15px; margin-bottom: 10px; background: #fff; }
.set-tpl-main { min-width: 0; flex: 1; }
.set-tpl-main b { font-size: 13px; color: var(--text-1); }
.set-tpl-main p { margin: 4px 0 0; color: var(--text-3); font-size: 11.5px; line-height: 1.55; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.set-tpl-meta { margin-top: 8px; font-size: 10.5px; color: var(--text-3); }
.set-tpl-actions { display: flex; gap: 12px; flex: none; padding-top: 2px; font-size: 11.5px; align-items: center; }
.set-tpl-actions .set-link { cursor: pointer; }
.set-tpl-actions .set-link.gray { color: var(--text-2); }
.set-tpl-actions .set-del { color: var(--brand-red); font-weight: 600; font-size: 12px; cursor: pointer; background: none; border: 0; padding: 0; }
.set-tpl-pin { color: var(--gold); font-size: 12px; margin-right: 4px; }
@media (max-width: 760px) { .set-tpl { flex-direction: column; } .set-model { flex-wrap: wrap; } }

/* 4 采集规则：效果看板包灰底内卡 + 指标白卡 */
.set-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 10px 0; }
.set-metric { border: 1px solid var(--border); border-radius: 8px; padding: 11px 13px; background: #fff; }
.set-metric b { display: block; font-size: 19px; font-weight: 700; line-height: 1.2; color: var(--text-1); }
.set-metric span { font-size: 11px; color: var(--text-3); }
.set-metric i { display: block; font-style: normal; font-size: 10.5px; color: var(--text-3); margin-top: 2px; }
.set-metric b.is-good { color: var(--success); }
.set-metric b.is-warn { color: #c2410c; }
@media (max-width: 900px) { .set-metrics { grid-template-columns: repeat(2, 1fr); } }

/* 5 版权规则：AI 模型只读值框 */
.set-readonly-value { display: inline-flex; align-items: center; min-height: 32px; padding: 5px 12px; border: 1px solid var(--border); border-radius: 7px; background: #fff; color: var(--text-1); font-size: 12px; }

/* 6 数据导出：双卡 */
.set-export-bind { display: flex; align-items: center; gap: 12px; }
.set-export-bind-main { min-width: 0; flex: 1; }
.set-export-bind-main b { font-size: 13px; color: var(--text-1); }
.set-export-bind-main .bind-state { margin-left: 8px; font-size: 11.5px; color: var(--text-3); }
.set-export-bind-main p { margin: 3px 0 0; font-size: 11.5px; color: var(--text-3); }
.set-export-row { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0; }
.set-export-note { font-size: 11px; color: var(--text-3); border-top: 1px dashed var(--border); padding-top: 9px; }

/* 7 我的套餐：四段递进 */
.set-plan-grid { display: grid; grid-template-columns: 1fr 1fr 1.15fr; gap: 12px; margin: 10px 0 4px; }
.set-plan { position: relative; display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: 10px; padding: 14px 15px; background: #fff; }
.set-plan.cur { border: 1.5px solid var(--brand-red); background: linear-gradient(180deg, #fffafa 0%, #fff 30%); }
.set-plan-tag { position: absolute; top: -9px; right: 12px; background: var(--brand-red); color: #fff; font-size: 10px; font-weight: 600; padding: 2px 9px; border-radius: 9px; }
.set-plan-tag2 { position: absolute; top: -9px; left: 12px; background: #fff; border: 1px solid var(--brand-red); color: var(--brand-red); font-size: 10px; font-weight: 600; padding: 1px 9px; border-radius: 9px; }
.set-plan h6 { margin: 0; font-size: 13px; font-weight: 700; color: var(--text-1); }
.set-plan .p-sub { font-size: 10.5px; color: var(--text-3); margin: 1px 0 8px; }
.set-plan .p-price { font-size: 22px; font-weight: 800; color: var(--text-1); }
.set-plan .p-price small { font-size: 11px; color: var(--text-3); font-weight: 400; }
.set-plan ul { list-style: none; margin: 10px 0; padding: 0; font-size: 11.5px; flex: 1; }
.set-plan li { display: flex; justify-content: space-between; padding: 4px 0; border-bottom: 1px dashed var(--border-light); color: var(--text-3); }
.set-plan li b { color: var(--text-2); font-weight: 600; }
.set-plan-foot { margin-top: 10px; font-size: 11px; color: var(--text-3); }
/* 免费解锁：二维码 + 邀请码 */
/* 2026-10-20 修复：原背景是 repeating-conic-gradient 假二维码棋盘格，真实二维码图片
   从 api.qrserver.com 远程加载完成前先显示它 → 用户看到「先乱码再变对」（还被误当可扫码）。
   改成中性浅灰占位，加载完成前只是空白方块。 */
.set-invite-qr { width: 96px; height: 96px; flex: 0 0 96px; border: 1px solid var(--border); border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 10px; color: var(--text-4); background: #fafbfc; }
.set-invite-info { font-size: 12px; }
.set-invite-info .set-link { cursor: pointer; }
.set-invite-row { display: flex; gap: 8px; align-items: stretch; }
.set-invite-row input { flex: 1; min-width: 0; min-height: 34px; padding: 6px 12px; border: 1px solid var(--border); border-radius: 7px; font: inherit; font-size: 12px; }
/* 订阅会员三按钮 */
.set-sub-row { display: flex; flex-wrap: wrap; gap: 10px; }
.set-sub-btn { display: inline-flex; align-items: center; gap: 6px; padding: 8px 16px; border: 1px solid var(--border); border-radius: 7px; background: #fff; color: var(--text-1); font-size: 12.5px; font-weight: 600; cursor: pointer; }
.set-sub-btn:hover { border-color: var(--brand-red); color: var(--brand-red); }
.set-sub-btn.hot { border-color: var(--brand-red); color: var(--brand-red); }
.set-sub-btn em { font-style: normal; font-size: 10px; color: #c2410c; font-weight: 400; }
@media (max-width: 900px) { .set-plan-grid { grid-template-columns: 1fr; } }

/* ============================================================
   长下拉浮层（longSelect.js）
   ------------------------------------------------------------
   原生 <select> 的展开高度由浏览器内核决定，CSS 完全管不住——几百个
   目录/模型/群就会撑成几百行，所以由 JS 把 UI 换成下面这套浮层：
   面板定死高度、列表在面板内部滚动、横向按视口夹紧。
   ⚠️ 面板是 position: fixed：任何百分比的 min-width 都会相对视口计算
   （曾把面板撑成整屏宽），因此这里显式写 min-width: 0。
   ============================================================ */
.long-select-panel { position: fixed; z-index: 400; display: flex; flex-direction: column; gap: 6px; box-sizing: border-box; min-width: 0; padding: 8px; border: 1px solid var(--border, rgba(15, 23, 42, .12)); border-radius: var(--radius-sm, 6px); background: var(--surface, var(--bg-page, #fff)); box-shadow: 0 14px 36px rgba(15, 23, 42, .16); overflow: hidden; }
.long-select-search { display: flex; align-items: center; gap: 6px; flex: 0 0 auto; min-height: 32px; padding: 0 10px; border: 1px solid var(--border, rgba(15, 23, 42, .12)); border-radius: 999px; background: var(--surface-muted, rgba(15, 23, 42, .04)); }
.long-select-search-input { flex: 1 1 auto; min-width: 0; min-height: 0; padding: 0; border: none; background: transparent; color: var(--text-primary, #1f2937); font-size: 12px; outline: none; }
.long-select-search-input::placeholder { color: var(--text-tertiary, #94a3b8); }
.long-select-options { flex: 1 1 auto; min-height: 0; max-height: none; overflow-y: auto; overscroll-behavior: contain; display: flex; flex-direction: column; gap: 2px; }
.long-select-option { display: flex; align-items: center; gap: 8px; width: 100%; padding: 7px 9px; border: none; border-radius: var(--radius-xs, 5px); background: transparent; color: var(--text-primary, #1f2937); font-size: 12px; text-align: left; cursor: pointer; }
.long-select-option:hover { background: var(--surface-muted, rgba(15, 23, 42, .05)); }
.long-select-option.is-selected { background: rgba(37, 99, 235, .1); color: var(--blue, #2563eb); font-weight: 600; }
.long-select-option-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.long-select-option-check { flex: 0 0 auto; width: 12px; color: var(--blue, #2563eb); font-size: 12px; }
.long-select-empty { margin: 0; padding: 18px 10px; color: var(--text-tertiary, #94a3b8); font-size: 12px; text-align: center; }


/* ============ 三期：创作中心三栏工作流（2026-10-19） ============ */
.studio3 { display: grid; grid-template-columns: 300px minmax(0, 1fr) 280px; gap: 16px; align-items: stretch; }
.studio3-col { display: flex; flex-direction: column; min-height: 420px; margin: 0; }
.studio3-list { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 8px; display: flex; flex-direction: column; gap: 6px; }
.studio3-item { display: flex; align-items: center; gap: 8px; width: 100%; padding: 9px 10px; border: 1px solid transparent; border-radius: 10px; background: transparent; cursor: pointer; text-align: left; font: inherit; color: inherit; }
.studio3-item:hover { background: rgba(0, 0, 0, .04); }
.studio3-item.is-active { background: rgba(201, 138, 29, .1); border-color: rgba(201, 138, 29, .35); }
.studio3-item-title { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.studio3-placeholder { flex: 1 1 auto; display: flex; align-items: center; justify-content: center; }
.studio3-form { flex: 1 1 auto; display: flex; flex-direction: column; gap: 14px; padding: 12px 14px 14px; }
.studio3-actions { display: flex; gap: 10px; align-items: center; }
.studio3-result { margin-top: 4px; padding: 10px 12px; border-radius: 10px; background: rgba(16, 185, 129, .1); color: #047857; font-size: 13px; }
.studio3-result.is-error { background: rgba(220, 38, 38, .08); color: #b42318; }
.pf-chip-row { display: flex; flex-wrap: wrap; gap: 8px; }
.pf-chip { position: relative; display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border: 1px solid var(--border, #e2e8f0); border-radius: 999px; background: #fff; cursor: pointer; font-size: 13px; user-select: none; }
.pf-chip input { min-height: 0; width: auto; margin: 0; accent-color: var(--gold, #c98a1d); flex: 0 0 auto; }
.pf-chip.is-active { border-color: var(--gold, #c98a1d); background: rgba(201, 138, 29, .08); }
.pf-chip .rec-dot { position: absolute; top: 5px; right: 5px; width: 6px; height: 6px; border-radius: 50%; background: var(--blue, #2563eb); }
@media (max-width: 1100px) { .studio3 { grid-template-columns: 1fr; } .studio3-col { min-height: 0; } }

/* ============ 三期：多格式入库三卡布局 ============ */
/* s69d 多格式入库（2026-10-23 方案A分段切换落地）：单卡 + 顶部分段控件，三面板互斥显示。
   替换旧三卡结构（.import-grid/.import-form 已删）。 */
.mf-card { margin-bottom: 16px; }
.mf-head { padding: 14px 16px 0; display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.mf-sub { color: var(--text-4); font-size: 11px; }
.mf-seg { display: flex; gap: 2px; margin: 10px 16px 0; border-bottom: 1px solid var(--border-light); }
.mf-seg-btn { height: 34px; padding: 0 14px; border: 0; border-bottom: 2px solid transparent; margin-bottom: -1px; background: transparent; color: var(--text-3); cursor: pointer; font-size: 12px; }
.mf-seg-btn:hover { color: var(--text-1); }
.mf-seg-btn.on { color: var(--brand-red); font-weight: 700; border-bottom-color: var(--brand-red); }
.mf-pane { display: none; padding: 14px 16px 16px; }
.mf-pane.on { display: block; }
.mf-hint { margin: 0 0 10px; color: var(--text-4); font-size: 11px; line-height: 1.6; }
.mf-row { display: flex; gap: 8px; align-items: center; }
.mf-row input { flex: 1; min-width: 0; }
.mf-email { display: grid; gap: 8px; justify-items: start; }
.mf-email input { width: 100%; box-sizing: border-box; }
.mf-email textarea { width: 100%; box-sizing: border-box; min-height: 96px; padding: 8px 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); outline: 0; resize: vertical; color: var(--text-1); background: #fff; font-size: 12px; line-height: 1.6; }
.mf-email textarea:focus { border-color: var(--brand-red); }
/* s170 本地上传双态（设计稿A）：input 视觉隐藏，拖放区整块可点可拖，选中后变金色文件芯片 */
.mf-file-input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.mf-drop { margin-top: 10px; border: 1.5px dashed var(--border-strong); border-radius: var(--radius); background: #fafbfc; padding: 22px 16px; display: flex; flex-direction: column; align-items: center; gap: 6px; cursor: pointer; transition: border-color .15s, background .15s; text-align: center; }
/* s171：悬停/拖拽高亮改浅蓝（用户钦定 2026-11-04，蓝是本站锚点区既有辅助色） */
.mf-drop:hover, .mf-drop.is-drag { border-color: var(--hero-border); background: var(--hero-bg-start); }
.mf-drop-icon { width: 34px; height: 34px; border-radius: 10px; background: var(--gold-light); color: var(--gold-dark); display: flex; align-items: center; justify-content: center; margin-bottom: 2px; }
.mf-drop:hover .mf-drop-icon, .mf-drop.is-drag .mf-drop-icon { background: #fff; color: var(--hero-text); }
.mf-drop-main { font-size: 12px; color: var(--text-2); }
.mf-drop-main b { color: var(--brand-red); font-weight: 600; }
.mf-drop-sub { font-size: 11px; color: var(--text-4); }
.mf-chip { margin-top: 10px; display: flex; align-items: center; gap: 10px; border: 1px solid var(--gold); background: var(--gold-light); border-radius: var(--radius); padding: 10px 12px; }
.mf-chip-icon { width: 32px; height: 32px; border-radius: 8px; background: #fff; color: var(--gold-dark); display: flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 700; flex-shrink: 0; }
.mf-chip-meta { flex: 1; min-width: 0; }
.mf-chip-name { display: block; font-size: 12px; color: var(--text-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mf-chip-size { display: block; font-size: 10px; color: var(--text-4); margin-top: 2px; }
.mf-chip-remove { border: 0; background: transparent; color: var(--text-4); cursor: pointer; font-size: 14px; padding: 4px; }
.mf-chip-remove:hover { color: var(--brand-red); }
.mf-chip-remove:disabled { opacity: .4; cursor: not-allowed; }

/* s69e 候选详情弹窗（2026-10-23 A修订版落地）：分区卡片式。
   专用 cd-* 类，不碰来源中心共用的 source-detail-grid；record_id 不再展示。
   宽度经 JS 加 .cd-modal 类控制（避免 :has() 旧内核兼容问题）。 */
.modal.cd-modal { width: min(560px, 100%); }
/* 滚动条：保留本体、去两端箭头（s69h）。
   🔴 Chrome 121+ 坑：元素一旦设置 scrollbar-width/scrollbar-color 标准属性，::-webkit-scrollbar 全套自定义即被忽略，
   回退系统原生滚动条（Windows 原生带 ▲▼ 箭头）——上一版箭头复现的根因。因此标准属性只允许出现在
   Firefox 专属 @supports 块内，Chrome 走纯 webkit 自定义（8px 无按钮）。 */
.cd-scroll::-webkit-scrollbar { display: block; width: 8px; }
.cd-scroll::-webkit-scrollbar-button { display: none !important; width: 0 !important; height: 0 !important; }
.cd-scroll::-webkit-scrollbar-thumb { background: #c9cdd3; border-radius: 4px; }
.cd-scroll::-webkit-scrollbar-thumb:hover { background: #aab0b8; }
.cd-scroll::-webkit-scrollbar-track { background: transparent; }
/* Firefox：thin 无箭头（Firefox 不读 webkit 伪元素，互不干扰）。 */
@supports (-moz-appearance: none) { .cd-scroll { scrollbar-width: thin; } }
/* IE 系旧内核兜底：箭头同色隐身，滚动条本体保留（Chrome 忽略这些 legacy 属性，无副作用）。 */
.cd-scroll { -ms-overflow-style: -ms-autohiding-scrollbar; scrollbar-arrow-color: #f0f1f3; scrollbar-face-color: #c9cdd3; scrollbar-track-color: #f0f1f3; scrollbar-3dlight-color: #f0f1f3; scrollbar-highlight-color: #f0f1f3; scrollbar-shadow-color: #f0f1f3; scrollbar-darkshadow-color: #f0f1f3; }
.cd-meta-line { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; color: var(--text-3); font-size: 12px; }
.cd-src-tag { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 5px; background: var(--bg-tag); color: var(--text-2); font-size: 11px; font-weight: 600; }
.cd-link { color: #2563eb; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 240px; display: inline-block; vertical-align: middle; }
.cd-sec { margin-top: 18px; }
.cd-sec-t { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; color: var(--text-1); font-size: 12px; font-weight: 700; }
.cd-sec-t::before { content: ""; width: 3px; height: 12px; border-radius: 2px; background: var(--brand-red); }
.cd-score3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.cd-score-card { padding: 10px 12px; border: 1px solid var(--border-light); border-radius: 10px; background: var(--bg-page); text-align: center; }
.cd-score-lab { color: var(--text-3); font-size: 11px; margin-bottom: 4px; }
.cd-score-val { color: var(--text-1); font-size: 20px; font-weight: 800; }
.cd-score-track { height: 4px; margin-top: 6px; border-radius: 2px; background: #eef0f2; overflow: hidden; }
.cd-score-track i { display: block; height: 100%; border-radius: 2px; background: #2eaa5e; }
.cd-chip-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.cd-chip { display: inline-flex; align-items: center; gap: 5px; padding: 3px 10px; border: 1px solid var(--border-light); border-radius: 999px; background: #fff; color: var(--text-3); font-size: 11px; }
.cd-chip b { color: var(--text-1); font-weight: 600; }
.cd-fld-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 16px; }
.cd-fld { min-width: 0; }
.cd-fld.full { grid-column: 1 / -1; }
.cd-fld-lab { display: block; margin-bottom: 3px; color: var(--text-1); font-size: 12px; font-weight: 600; }
.cd-fld-val { color: var(--text-2); font-size: 12px; line-height: 1.65; overflow-wrap: anywhere; }
/* 摘要：meta chips 行 + 限高滚动正文盒（正文按行分段渲染，不过 short() 压平） */
.cd-excerpt-meta { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.cd-m-chip { display: inline-flex; align-items: baseline; gap: 4px; padding: 3px 10px; border-radius: 6px; background: var(--bg-tag); color: var(--text-3); font-size: 11px; }
.cd-m-chip b { color: var(--text-1); font-weight: 600; font-size: 11.5px; }
.cd-m-chip.is-src { background: #fdf0ef; color: var(--brand-red); font-weight: 600; }
.cd-excerpt-box { max-height: 190px; overflow-y: auto; padding: 12px 14px; border: 1px solid var(--border-light); border-radius: 10px; background: var(--bg-page); }
.cd-ex-label { margin-bottom: 6px; color: var(--brand-red); font-size: 11px; font-weight: 700; }
.cd-excerpt-box p { margin-bottom: 8px; color: var(--text-2); font-size: 12.5px; line-height: 1.85; overflow-wrap: anywhere; }
.cd-excerpt-box p:last-child { margin-bottom: 0; }

/* ============ 四期：分发中心 + 飞书镜像 ============ */
.dist-grid { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 16px; align-items: start; }
.dist-queue-col, .dist-mirror-col { margin: 0; }
.dist-item { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--border, #e2e8f0); border-radius: 10px; background: #fff; }
.dist-item-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.dist-item-main b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.dist-item-main .u { font-size: 12px; color: var(--text-tertiary, #94a3b8); }
.dist-item-actions { display: flex; gap: 6px; flex: none; }
.mirror-body { display: flex; flex-direction: column; gap: 10px; padding: 12px 14px 14px; }
@media (max-width: 1100px) { .dist-grid { grid-template-columns: 1fr; } }

/* ============ 通用设置改版 v2（2026-10-19）：分区卡 + 内容类型 + AI 助手 ============ */
.gz-card { padding: 14px 16px; margin-bottom: 12px; border: 1px solid var(--border, #e5e7eb); border-radius: 12px; background: #fff; }
.gz-card.gz-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.gz-head { display: flex; align-items: flex-start; gap: 11px; }
.gz-ic { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 9px; font-size: 16px; flex: 0 0 34px; }
.gz-ic-red { background: var(--brand-red-light, #faeeec); }
.gz-ic-blue { background: #eff6ff; }
.gz-ic-gray { background: #f7f8fa; }
.gz-ic-gray svg { display: block; }
.gz-head-copy { flex: 1; min-width: 0; }
.gz-head-copy b { display: block; font-size: 13.5px; font-weight: 600; color: var(--text-1); }
.gz-head-copy p { margin: 1px 0 0; font-size: 11.5px; color: var(--text-3); }
.gz-head-actions { display: flex; gap: 8px; flex: none; }
.gz-body { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--border-light, #eef0f2); }
.gs-updated { font-size: 11px; color: var(--text-3); flex: none; }
/* AI 助手摊平区 */
.gs-persona { font-size: 12.5px; color: var(--text-2); margin-bottom: 8px; }
.gs-persona b { color: var(--text-1); }
.gs-muted { color: var(--text-3); }
.gs-sub-label { font-size: 11px; color: var(--text-3); margin: 6px 0 5px; }
.gs-directive { margin-top: 8px; font-size: 12px; color: var(--text-2); }
.gs-directive b { color: var(--text-1); }
.gs-chips { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.gs-chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 14px; font-size: 11.5px; font-weight: 600; border: 1px solid var(--border, #e5e7eb); background: #f7f8fa; color: var(--text-2); }
.gs-chip-add { font-weight: 400; }
.gs-chip-blue { background: #eff6ff; border-color: #c3dbf7; color: #2563eb; }
.gs-chip-gold { background: #fbf7ef; border-color: rgba(201, 164, 92, .55); color: #8a6d33; }
.gs-chip-green { background: #ecfdf5; border-color: #bbe9d4; color: #059669; }
.gs-chip-add { border-style: dashed; background: #fff; color: var(--text-3); font-weight: 400; cursor: pointer; }
.gs-chip-x { border: 0; background: transparent; color: inherit; opacity: .45; font-size: 12px; cursor: pointer; padding: 0 1px; line-height: 1; }
.gs-chip-x:hover { opacity: 1; }
.gs-link { border: 0; background: transparent; color: #2563eb; font-size: 12px; font-weight: 600; cursor: pointer; padding: 0; }
/* 内容类型卡片区 */
.ty-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
@media (max-width: 1280px) { .ty-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 760px) { .ty-grid { grid-template-columns: 1fr; } }
.ty-card { display: flex; flex-direction: column; gap: 8px; padding: 11px 12px; border: 1px solid var(--border, #e5e7eb); border-radius: 10px; background: #fff; }
.ty-card.off { background: #fafafa; }
.ty-top { display: flex; align-items: center; gap: 8px; }
.ty-ic { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 8px; background: #f7f8fa; font-size: 15px; flex: 0 0 30px; }
.ty-card b { font-size: 12.5px; color: var(--text-1); line-height: 1.3; }
.ty-card.off b { color: var(--text-3); }
.ty-sp { flex: 1; }
.ty-desc { min-height: 32px; font-size: 11px; line-height: 1.45; color: var(--text-3); }
.ty-foot { display: flex; align-items: center; gap: 6px; margin-top: auto; }
.ty-del { border: 0; background: transparent; font-size: 13px; color: var(--text-3); cursor: pointer; padding: 2px 4px; border-radius: 6px; }
.ty-del:hover { color: var(--brand-red, #c8342c); background: var(--brand-red-light, #faeeec); }
.ty-del.is-disabled, .ty-del:disabled { opacity: .35; cursor: default; }
.ty-switch { position: relative; display: inline-flex; width: 32px; height: 18px; border: 0; border-radius: 9px; background: #d1d5db; cursor: pointer; flex: 0 0 32px; padding: 0; }
.ty-switch::after { content: ""; position: absolute; left: 2px; top: 2px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.2); transition: left .15s; }
.ty-switch.on { background: #10b981; }
.ty-switch.on::after { left: 16px; }
.ty-add { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 112px; border: 1px dashed #d1d5db; border-radius: 10px; color: var(--text-3); font-size: 12px; cursor: pointer; background: transparent; }
.ty-add:hover { color: var(--brand-red, #c8342c); border-color: var(--brand-red, #c8342c); }
.ty-add-plus { font-size: 18px; line-height: 1; }
/* 弹窗内组件 */
.gs-label { display: block; margin: 14px 0 6px; font-size: 12px; font-weight: 700; color: var(--text-1); }
.gs-label:first-child { margin-top: 0; }
.gs-label em { margin-left: 6px; font-style: normal; font-weight: 400; font-size: 11px; color: var(--text-3); }
.gs-text { width: 100%; padding: 8px 11px; border: 1px solid var(--border, #e5e7eb); border-radius: 8px; font: inherit; font-size: 12.5px; color: var(--text-1); background: #fff; line-height: 1.6; resize: vertical; }
.gs-text:focus { outline: none; border-color: var(--brand-red, #c8342c); box-shadow: 0 0 0 3px rgba(200, 52, 44, .1); }
.gs-inline-row { display: flex; gap: 8px; align-items: flex-start; }
.gs-inline-row .gs-text { flex: 1; }
.gs-inline-row .button { flex: none; margin-top: 2px; }
.gs-toggle-line { display: flex; align-items: center; gap: 12px; margin-top: 16px; }
.gs-inner-gray { padding: 12px 13px; margin-bottom: 9px; border-radius: 9px; background: #f7f8fa; }
.gs-inner-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
.gs-inner-head b { font-size: 12px; color: var(--text-1); }
.gs-inner-head .filter-select { min-height: 30px; max-width: 180px; }
.gs-sp { flex: 1; }
.gs-rule-row { display: flex; align-items: center; gap: 9px; padding: 7px 9px; margin-bottom: 6px; border: 1px solid var(--border-light, #eef0f2); border-radius: 8px; background: #fff; }
.gs-rule-name { font-size: 12px; color: var(--text-1); }
.gs-rule-meta { font-size: 10.5px; color: var(--text-3); }
.gs-rule-sp { flex: 1; }
/* 字段显示弹窗 */
.tpl-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.tpl-card { padding: 11px 13px; border: 1.5px solid var(--border, #e5e7eb); border-radius: 10px; background: #fff; cursor: pointer; }
.tpl-card.on { border-color: var(--brand-red, #c8342c); background: linear-gradient(180deg, #fffafa, #fff); }
.tpl-card b { display: flex; align-items: center; gap: 6px; font-size: 12.5px; }
.tpl-card p { margin: 3px 0 0; font-size: 11px; color: var(--text-3); }
.tpl-tag { padding: 1px 8px; border-radius: 9px; background: var(--brand-red, #c8342c); color: #fff; font-size: 10px; font-weight: 600; }
.gs-ck-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px 10px; }
@media (max-width: 900px) { .gs-ck-grid { grid-template-columns: repeat(2, 1fr); } }
.gs-ck { display: flex; align-items: center; gap: 6px; padding: 6px 8px; border: 1px solid var(--border-light, #eef0f2); border-radius: 7px; background: #fff; font-size: 11.5px; color: var(--text-2); cursor: pointer; }
.gs-ck input { min-height: 0; width: auto; margin: 0; flex: 0 0 auto; }
.gs-ck-box { display: none; }
.gs-ck-star { margin-left: auto; font-style: normal; color: #c9a45c; font-size: 10px; }
/* 平台弹窗卡片 */
.pf-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.pf-card { display: flex; align-items: center; gap: 9px; padding: 12px; border: 1px solid var(--border, #e5e7eb); border-radius: 10px; background: #fff; }
.pf-card.off { background: #fafafa; }
.pf-card b { font-size: 12.5px; color: var(--text-1); }
.pf-ic { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 8px; font-size: 14px; flex: 0 0 30px; }
.pf-sp { flex: 1; }
/* 采集源选取弹窗 */
.gs-src-row { display: flex; align-items: center; gap: 9px; padding: 8px 10px; margin-bottom: 6px; border: 1px solid var(--border-light, #eef0f2); border-radius: 8px; background: #fff; cursor: pointer; }
.gs-src-row:hover { border-color: #f3c9c5; background: #fffafa; }
.gs-src-row input { min-height: 0; width: auto; margin: 0; flex: 0 0 auto; }
.gs-src-main { min-width: 0; flex: 1; }
.gs-src-title { font-size: 12px; font-weight: 600; color: var(--text-1); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gs-src-meta { font-size: 10.5px; color: var(--text-3); }
/* 图标选择格 */
.gs-emoji-grid { display: flex; flex-wrap: wrap; gap: 7px; }
.gs-emoji { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border: 1px solid var(--border, #e5e7eb); border-radius: 8px; background: #fff; font-size: 16px; cursor: pointer; }
.gs-emoji.on { border-color: var(--brand-red, #c8342c); background: var(--brand-red-light, #faeeec); }

/* ============================================================
   选题中心（2026-10-22 方案 A 双栏工作台，1:1 还原设计对比稿）
   首屏三段式：topics-stats 三数字 → topic-alert 瓶颈条 → topics-workbench 双栏
   ============================================================ */
/* —— 顶栏三数字 —— */
.topics-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 12px; }
.topics-stat { padding: 12px 16px; border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.topics-stat strong { display: block; color: var(--text-1); font-size: 22px; font-weight: 800; line-height: 1.2; }
.topics-stat strong small { margin-left: 4px; color: var(--text-4); font-size: 12px; font-weight: 400; }
.topics-stat span { display: block; margin-top: 2px; color: var(--text-3); font-size: 12px; }
.topics-stat.is-warn strong { color: var(--warning); }
/* —— 瓶颈提醒细条（只提醒不弹窗） —— */
.topic-alert { display: flex; align-items: center; gap: 8px; min-height: 38px; margin-bottom: 12px; padding: 8px 14px; border: 1px solid #fde6b3; border-radius: 9px; background: var(--warning-bg); color: #92400e; font-size: 12px; }
.topic-alert b { font-weight: 700; }
.topic-alert-go { margin-left: auto; border: 0; background: transparent; color: var(--brand-red); font-size: 12px; font-weight: 600; white-space: nowrap; cursor: pointer; padding: 0; }
.topic-alert-go:hover { text-decoration: underline; }
/* —— 双栏工作台（右栏 272px，≤1280px 折叠到主列底部） —— */
.topics-workbench { display: flex; gap: 14px; align-items: flex-start; }
.topics-main { flex: 1; min-width: 0; }
.topics-rail { flex: 0 0 272px; width: 272px; display: flex; flex-direction: column; gap: 12px; }
@media (max-width: 1280px) { .topics-workbench { flex-direction: column; } .topics-rail { flex: 1; width: 100%; flex-direction: row; flex-wrap: wrap; } .topics-rail-card { flex: 1 1 260px; } }
/* —— 主列页签 —— */
.topics-tabs { display: flex; gap: 4px; width: fit-content; margin-bottom: 12px; padding: 4px; border: 1px solid var(--border-light); border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.topics-tab { padding: 6px 16px; border: 0; border-radius: 7px; background: transparent; color: var(--text-2); font-size: 12.5px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.topics-tab:hover { color: var(--text-1); background: var(--bg-tag); }
.topics-tab.is-active { color: #fff; background: var(--brand-red); }
/* —— 选题卡 —— */
.topic-card { margin-bottom: 10px; padding: 13px 16px; border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.topic-card-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.topic-card-title { margin-bottom: 6px; color: var(--text-1); font-size: 14px; font-weight: 700; }
.topic-card-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; color: var(--text-3); font-size: 11.5px; }
.topic-card-actions { display: flex; align-items: center; gap: 8px; }
.topic-sp { flex: 1; }
.topic-archive-link, .topic-slot-link { color: var(--text-3); font-size: 12px; font-weight: 500; }
.topic-archive-link:hover, .topic-slot-link:hover { color: var(--info); text-decoration: underline; }
/* —— chips 与价值徽章 —— */
.topic-chip { display: inline-flex; align-items: center; gap: 4px; padding: 2px 9px; border: 1px solid var(--border-light); border-radius: 12px; background: #f7f8fa; color: var(--text-2); font-size: 11px; font-weight: 600; }
.topic-chip-red { border-color: #f3d2cf; background: var(--brand-red-light); color: var(--brand-red); }
.topic-chip-blue { border-color: #d3e3fd; background: var(--info-bg); color: var(--info); }
.topic-chip-gold { border-color: #ecdfb9; background: var(--gold-light); color: var(--gold-dark); }
.topic-vb { padding: 2px 9px; border-radius: 12px; font-size: 11px; font-weight: 700; }
.topic-vb-hi { background: var(--brand-red-light); color: var(--brand-red); }
.topic-vb-mid { background: var(--warning-bg); color: var(--warning); }
.topic-vb-low { background: var(--bg-tag); color: var(--text-3); }
/* —— 右栏卡片 —— */
.topics-rail-card { padding: 13px 15px; border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.topics-rail-head { position: relative; display: flex; align-items: center; margin-bottom: 8px; padding-left: 10px; color: var(--text-1); font-size: 13px; font-weight: 700; }
.topics-rail-head::before { content: ""; position: absolute; left: 0; top: 2px; bottom: 2px; width: 3px; border-radius: 2px; background: var(--brand-red); }
.topics-rail-more { margin-left: auto; border: 0; background: transparent; color: var(--text-3); font-size: 11px; font-weight: 400; cursor: pointer; padding: 0; white-space: nowrap; }
.topics-rail-more:hover { color: var(--info); text-decoration: underline; }
.rail-schedule-row { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px solid var(--border-light); color: var(--text-2); font-size: 12px; }
.rail-schedule-row:last-of-type { border-bottom: 0; }
.rail-schedule-meta { margin: -2px 0 4px 16px; padding-bottom: 6px; color: var(--text-4); font-size: 11px; border-bottom: 1px solid var(--border-light); }
.rail-dot { width: 8px; height: 8px; flex: 0 0 8px; border-radius: 50%; }
.rail-mini-num { color: var(--text-1); font-size: 17px; font-weight: 700; }
.rail-bar { height: 5px; margin: 0 0 6px 16px; border-radius: 3px; background: #eef0f2; overflow: hidden; }
.rail-bar i { display: block; height: 100%; border-radius: 3px; }
.topics-rail-ai { background: linear-gradient(135deg, #fdf7f6, #fff); border: 1px solid #f3d2cf; }
.topics-rail-ai-desc { margin-bottom: 9px; color: var(--text-2); font-size: 11.5px; }
.topics-rail-ai .button:disabled { opacity: .55; cursor: not-allowed; }
/* —— 选题日历三档 —— */
.topics-calendar-slot { margin-bottom: 14px; padding: 10px; border: 1px solid var(--border-light); border-radius: 10px; background: #eef0f2; }
.topics-calendar-head { display: flex; align-items: center; gap: 7px; margin-bottom: 8px; padding: 0 2px; color: var(--text-1); font-size: 12.5px; font-weight: 700; }
.topics-calendar-cnt { margin-left: auto; color: var(--text-3); font-size: 11px; font-weight: 600; }
.topics-calendar-empty { min-height: 52px; display: flex; align-items: center; justify-content: center; border: 1px dashed var(--border-strong); border-radius: 9px; background: #fff; color: var(--text-4); font-size: 12px; }
.topics-calendar-slot .topic-card { margin-bottom: 8px; }
/* —— 排期三档弹窗 —— */
.topic-slot-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
/* —— 雷达页签在选题中心内的标题语境 —— */
#page-topics .card { border-radius: 10px; }
/* —— P2：AI 侦察候选带 / 紫色 chip / 竞品预算盒 —— */
.topics-scout-band { margin-bottom: 12px; padding: 10px; border: 1px dashed #d8ccf5; border-radius: 10px; background: #fbfaff; }
.topics-scout-band-head { display: flex; align-items: center; gap: 8px; margin: 0 4px 8px; color: var(--purple, #8b5cf6); font-size: 12.5px; font-weight: 700; }
.topics-scout-band-head .button-text-link { margin-left: auto; font-size: 12px; }
.topic-card-scout { border: 1px solid #e6dcf9; background: #fff; }
.topic-chip-purple { border-color: #e6dcf9; background: var(--purple-bg, #f5f0ff); color: var(--purple, #8b5cf6); }
.topic-chip-green { border-color: #bbe9d4; background: var(--success-bg, #f0fdf4); color: var(--success, #16a34a); }
.topics-budget-box { padding: 12px 13px; border-radius: 9px; background: #f7f8fa; }
.topics-budget-head { display: flex; align-items: center; gap: 8px; color: var(--text-1); font-size: 13px; font-weight: 700; }
.topics-budget-head b { color: var(--brand-red); }
.topics-budget-spent { margin-left: auto; color: var(--text-3); font-size: 11.5px; font-weight: 400; }

/* ===== s69t 素材库表格清理（2026-10-24） ===== */
/* ③ 行高对齐采集中心候选池：64px（用户 2026-10-24 拍板）。 */
.material-table td { height: 64px; }
.material-table td .cell-title { max-width: 280px; }
/* ⑤ 行尾固定操作列：⚡一键生成 + 🗑删除锚在行尾独立格，悬停行才显示（触屏常显兜底）。 */
/* s71 方案A：独立操作列删除——row-ops 悬浮覆盖在行末列右侧（左缘白渐变缓冲），tr 成为锚点 */
.material-row { position: relative; }
/* s183: 素材库/候选池首行气泡被 sticky 表头（白底 z5）压住——同款问题改向下弹（随全站 v74 铁律） */
.material-table .row-icon-btn::after, .candidate-table .row-icon-btn::after { top: calc(100% + 7px); bottom: auto; transform: translateX(-50%) translateY(-2px); }
.material-table .row-icon-btn::before, .candidate-table .row-icon-btn::before { top: calc(100% + 3px); bottom: auto; border-top-color: transparent; border-bottom-color: #1e2128; }
.material-table .row-icon-btn:hover::after, .candidate-table .row-icon-btn:hover::after { transform: translateX(-50%) translateY(0); }
/* 末列 fix-right sticky(z3)：行内非 hover 时 z-auto，气泡(z40)需高于钉住列绘制层 */
.material-table .material-col-ops, .candidate-table td.material-col-ops { z-index: 4; }
.candidate-table tbody tr { position: relative; }
.candidate-table td:last-child { position: relative; }
.material-col-ops { position: relative; }
/* s71c 修正：悬浮层锚定最后一列格内（inset:0），白渐变缓冲；不盖整行、不随字段配置漂移的"末列即行尾"语义 */
.material-table .row-ops { position: absolute; top: 0; bottom: 0; right: 0; left: auto; width: 118px; display: inline-flex; gap: 4px; align-items: center; justify-content: flex-end; background: linear-gradient(to right, rgba(255,255,255,0), #fff 14px); padding-left: 14px; }
.material-table .row-ops .row-icon-btn { flex: 0 0 auto; }
/* s72g：末列 sticky——表格横向滚动（min-width 1180 > 视口）时末列钉在可视右缘，
   悬浮按钮永远可见；sticky 元素自身即 absolute 子元素的锚点 */
.material-table td:last-child, .material-table th:last-child { position: sticky; right: 0; background: #fff; box-shadow: -6px 0 8px -6px rgba(17,24,39,.14); z-index: 2; }
/* s73：列首筛选 + 时间排序 */
.th-filter-wrap { position: relative; display: inline-flex; align-items: center; gap: 2px; max-width: 100%; }
.th-filter { display: inline-flex; gap: 3px; align-items: center; max-width: 100%; padding: 2px 6px; border: 0; border-radius: 6px; background: transparent; color: inherit; font: inherit; font-weight: 600; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.th-filter:hover { background: var(--bg-hover); }
.th-filter.is-active { color: var(--primary); background: var(--primary-light); }
.th-caret { font-size: 9px; color: var(--text-4); }
.th-filter-clear { display: grid; place-items: center; width: 14px; height: 14px; border: 0; border-radius: 50%; background: var(--primary-light); color: var(--primary); font-size: 10px; line-height: 1; cursor: pointer; }
.th-menu { position: absolute; top: calc(100% + 4px); left: 0; z-index: 30; min-width: 140px; max-height: 320px; overflow-y: auto; padding: 4px; border: 1px solid var(--border); border-radius: 10px; background: #fff; box-shadow: 0 8px 24px rgba(0,0,0,.12); }
.th-menu-item { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 8px; padding: 6px 9px; border: 0; border-radius: 6px; background: transparent; color: var(--text-2); font-size: 11px; text-align: left; cursor: pointer; }
.th-menu-item:hover { background: var(--bg-hover); }
.th-menu-item.on { color: var(--primary); background: var(--primary-light); font-weight: 600; }
.th-menu-item.th-menu-star { margin-top: 2px; border-top: 1px solid var(--border-light); border-radius: 0 0 6px 6px; color: var(--gold-dark); }
.th-menu-item.th-menu-star:disabled { color: var(--text-4); cursor: not-allowed; }
.th-sort { display: inline-flex; gap: 3px; align-items: center; padding: 2px 6px; border: 0; border-radius: 6px; background: transparent; color: inherit; font: inherit; font-weight: 600; cursor: pointer; white-space: nowrap; }
.th-sort:hover { background: var(--bg-hover); }
.chip-x { display: inline-grid; place-items: center; width: 14px; height: 14px; margin-left: 2px; border-radius: 50%; color: var(--text-4); font-size: 11px; line-height: 1; }
.chip-x:hover { background: var(--danger-bg); color: var(--danger); }
.material-table tbody tr:hover .material-col-ops .row-ops, .material-table tbody tr:hover .row-ops { opacity: 1; pointer-events: auto; }
.candidate-table tbody tr:hover .row-ops { opacity: 1; pointer-events: auto; }
.material-table .material-col-ops { width: auto; min-width: 0; padding: 0; }
@media (hover: none) { .material-table .material-col-ops .row-ops { opacity: 1; pointer-events: auto; } }
/* 候选池行尾操作列同款（s69t 把入库/删除从时间格移到独立操作列） */
.candidate-table td.material-col-ops { width: 84px; min-width: 84px; padding: 0 10px; text-align: center; white-space: nowrap; cursor: default; }
/* 徽章列防换行挤压（五值徽章较长） */
.material-table td .badge { white-space: nowrap; }
/* s69t 补丁：时间列防折行——此前时间戳折行 2~3 行把行高撑爆（64px 名义值失效的根因） */
.material-table td.time-cell { white-space: nowrap; }
/* s69t3：文本兜底列 2 行截断——可选列（内容主题/可转化选题/需求洞察）AI 长文本此前裸折行，
   把 64px 行高撑到 120px+；与候选池 cell-clamp2 同款（2 行封顶，超出省略号）。 */
.material-table .cell-clamp2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.55; }
/* s69t：旧「行悬停时间格替换」交互退役——素材表时间列回归纯文本 */
.material-table .time-cell .cell-time-text { opacity: 1 !important; }
/* ② 字段弹窗复用 gs-ck 网格（原有样式）；采集中心 ops-bar 左侧按钮与右侧导出留白由 flex-spacer 撑开 */

/* ============================================================
   s84c：创作中心三模块（对话创作 / 批量创作 / 创作记录）
   1:1 对齐设计稿 outputs/siyu-creation-center-final-v3.html。
   此前 trow 结构无配套 CSS（内联 style 硬撑），导致表头竖排、无分区。
   ============================================================ */
/* —— 通用行表格（设计稿 .trow）—— */
.cc-table { border: 1px solid var(--border); border-radius: 11px; background: #fff; overflow: hidden; }
.cc-row { display: grid; align-items: center; min-height: 46px; border-bottom: 1px solid var(--border-light); font-size: 13px; }
.cc-row:last-child { border-bottom: 0; }
.cc-row > div { padding: 8px 14px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-row.head { min-height: 38px; background: #f7fafb; font-size: 11.5px; font-weight: 800; color: #7d919b; }
.cc-row.head > div { padding: 10px 14px; }
.cc-row .ops, .cc-row .task-actions { display: flex; gap: 5px; justify-content: flex-end; flex-wrap: wrap; }
/* 设计稿 .mini-btn：任务/批次行内小按钮 */
.mini-btn { height: 26px; padding: 0 9px; display: inline-flex; align-items: center; gap: 4px; border: 1px solid var(--border); border-radius: 6px; background: #fff; color: var(--text-2); font: inherit; font-size: 11px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.mini-btn:hover { border-color: var(--text-4); background: var(--bg-hover); }
.mini-btn.go { border-color: var(--brand-red); color: var(--brand-red); }
.mini-btn.go:hover { background: var(--brand-red-light); }
.mini-btn.pub { border-color: var(--purple, #6b4bb8); color: var(--purple, #6b4bb8); }
.mini-btn.pub:hover { background: var(--purple-light, #efe9fb); }
/* 设计稿进度条 */
.cc-pbar { height: 6px; border-radius: 4px; background: #e8eef1; overflow: hidden; width: 110px; }
.cc-pbar i { display: block; height: 100%; border-radius: 4px; background: linear-gradient(90deg, var(--gold), var(--brand-red)); }
.cc-pbar i.done { background: #2f8a6b; }
/* —— 对话创作（C 布局）—— */
.cc-top { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.cc-title { display: inline-flex; align-items: center; gap: 8px; height: 36px; padding: 0 13px; border: 1px solid var(--border); border-radius: 9px; background: #fff; color: var(--text-1); font: inherit; font-size: 13.5px; font-weight: 800; cursor: pointer; }
.cc-title .caret { color: var(--text-4); font-size: 10px; }
.cc-actions { margin-left: auto; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.cc-actions .mode-label { font-size: 11px; color: var(--text-4); }
.c-ghost { height: 32px; padding: 0 12px; display: inline-flex; align-items: center; gap: 5px; border: 1px solid var(--border); border-radius: 8px; background: #fff; color: var(--text-2); font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; }
.c-ghost:hover { border-color: var(--text-4); background: var(--bg-hover); }
.c-ghost.accent { border-color: var(--brand-red); color: var(--brand-red); }
.c-ghost.accent:hover { background: var(--brand-red-light); }
.cc-shell { position: relative; display: flex; gap: 12px; align-items: stretch; }
.cc-chat { flex: 1; min-width: 0; border: 1px solid var(--border); border-radius: 12px; background: #fdfefe; padding: 14px; display: flex; flex-direction: column; gap: 11px; min-height: 240px; }
#chat-msgs { flex: 1; display: flex; flex-direction: column; gap: 11px; overflow: auto; max-height: 380px; }
.cc-msg-user { max-width: 78%; align-self: flex-end; padding: 9px 12px; border-radius: 10px; border-bottom-right-radius: 3px; background: var(--brand-red); color: #fff; font-size: 12.5px; line-height: 1.65; white-space: pre-wrap; word-break: break-word; }
.cc-msg-ai { max-width: 78%; align-self: flex-start; padding: 9px 12px; border: 1px solid var(--border-light); border-radius: 10px; border-bottom-left-radius: 3px; background: #fff; color: var(--text-1); font-size: 12.5px; line-height: 1.65; white-space: pre-wrap; word-break: break-word; }
.cc-msg-err { max-width: 78%; align-self: flex-start; padding: 9px 12px; border: 1px solid rgba(200,52,44,.35); border-radius: 10px; background: var(--brand-red-light); color: var(--brand-red); font-size: 12.5px; line-height: 1.6; }
.cc-art { margin-top: 9px; padding-top: 9px; border-top: 1px dashed var(--border); display: flex; gap: 6px; flex-wrap: wrap; }
.cc-srcbar { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin-top: 9px; }
.cc-srcbar .lb { font-size: 11px; color: var(--text-4); }
.cc-src-pill { display: inline-flex; align-items: center; gap: 6px; max-width: 230px; height: 28px; padding: 0 6px 0 10px; border: 1px solid var(--border); border-radius: 999px; background: #fff; font-size: 11.5px; }
.cc-src-pill .t { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-src-pill .x { width: 16px; height: 16px; border-radius: 50%; background: var(--bg-tag); color: var(--text-2); font-size: 10px; line-height: 16px; text-align: center; cursor: pointer; flex: none; }
.cc-input { display: flex; gap: 8px; align-items: flex-end; margin-top: 10px; }
.cc-input textarea { flex: 1; min-height: 46px; max-height: 110px; padding: 9px 11px; border: 1px solid var(--border); border-radius: 9px; font: inherit; font-size: 12.5px; resize: vertical; outline: none; }
.cc-input textarea:focus { border-color: var(--brand-red); box-shadow: 0 0 0 2px rgba(200,52,44,.12); }
/* 素材抽屉（设计稿：右侧 250px，可收起） */
.cc-drawer { width: 256px; flex: none; border: 1px solid var(--border); border-radius: 12px; background: #fff; overflow: hidden; align-self: stretch; display: flex; flex-direction: column; max-height: 430px; }
.cc-drawer-head { padding: 10px 13px; border-bottom: 1px solid var(--border-light); font-size: 12.5px; font-weight: 800; color: var(--text-1); display: flex; justify-content: space-between; align-items: center; }
.cc-drawer-head span { font-size: 11px; color: var(--text-4); font-weight: 650; cursor: pointer; }
.cc-drawer .tpl-row { padding: 10px 13px; border-bottom: 1px solid var(--border-light); display: flex; gap: 6px; flex-wrap: wrap; }
.tpl { padding: 4px 10px; border-radius: 999px; background: var(--tint, #eef7fa); color: #33606d; font-size: 11px; font-weight: 650; cursor: pointer; }
.tpl:hover { background: #d9eff5; }
.cc-drawer .cc-src-opt { padding: 9px 13px; border-bottom: 1px solid var(--border-light); font-size: 12px; display: flex; align-items: center; gap: 8px; cursor: pointer; }
.cc-drawer .cc-src-opt:hover { background: #f6fafb; }
.cc-drawer .cc-src-opt input { accent-color: var(--brand-red); margin: 0; flex: none; }
.cc-drawer .cc-src-opt .t { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-drawer .cc-src-add { padding: 10px 13px; color: var(--info, #2563eb); font-size: 12px; font-weight: 700; cursor: pointer; text-align: center; }
/* 会话下拉 */
.cc-sess-menu { position: absolute; top: 6px; left: 0; z-index: 30; width: 270px; border: 1px solid var(--border); border-radius: 11px; background: #fff; box-shadow: 0 14px 34px rgba(27,58,71,.2); overflow: hidden; }
.cc-sess-item { padding: 10px 13px; border-bottom: 1px solid var(--border-light); font-size: 12.5px; cursor: pointer; display: flex; align-items: center; gap: 8px; }
.cc-sess-item:hover { background: #f6fafb; }
.cc-sess-item.on { background: var(--tint, #eef7fa); }
.cc-sess-item b { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-sess-item span { color: var(--text-4); font-size: 11px; flex: none; }
.cc-sess-new { padding: 10px 13px; text-align: center; color: var(--brand-red); font-size: 12px; font-weight: 800; cursor: pointer; }
.cc-sess-new:hover { background: var(--brand-red-light); }
/* —— 批量创作（设计稿：左批次列表 + 右本批配置 300px）—— */
.cc-batch-grid { display: grid; grid-template-columns: minmax(0, 1fr) 290px; gap: 14px; }
.cc-quota { margin-left: auto; font-size: 11.5px; color: var(--warn, #9a6b12); background: var(--warning-bg, #fdf3d8); padding: 4px 10px; border-radius: 7px; }
.cc-side { border: 1px solid var(--border); border-radius: 12px; background: #fff; overflow: hidden; height: max-content; }
.cc-side-head { padding: 10px 13px; border-bottom: 1px solid var(--border-light); font-size: 12.5px; font-weight: 800; color: var(--text-1); display: flex; justify-content: space-between; align-items: center; }
.cc-side-head span { font-size: 11px; color: var(--text-4); font-weight: 650; }
.cc-side-opt { padding: 9px 13px; border-bottom: 1px solid var(--border-light); font-size: 12.5px; display: flex; align-items: center; gap: 8px; }
.cc-side-opt input { accent-color: var(--brand-red); margin: 0; }
.cc-side-note { padding: 10px 13px; font-size: 11px; color: var(--text-4); line-height: 1.6; }
.cc-side-submit { padding: 12px 13px; border-top: 1px solid var(--border-light); }
.cc-side-submit .button { width: 100%; }
.cc-directive { width: 100%; min-height: 64px; padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; font: inherit; font-size: 12.5px; resize: vertical; outline: none; }
.cc-directive:focus { border-color: var(--brand-red); }
/* 空态 */
.cc-empty { padding: 22px 14px; text-align: center; color: var(--text-4); font-size: 12px; }
@media (max-width: 900px) { .cc-batch-grid { grid-template-columns: 1fr; } .cc-shell { flex-direction: column; } .cc-drawer { width: 100%; max-height: none; } }

/* s101：方案 A「创作台优先」——放大首屏操作区，批次记录退为轻量辅助区。 */
.cc-batch-page { overflow: hidden; }
.cc-batch-hero { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 22px 24px 18px; background: #f8fafb; }
.cc-batch-kicker { color: var(--brand-red); font-size: 10px; font-weight: 800; letter-spacing: 1.4px; }
.cc-batch-hero h2 { margin: 3px 0 4px; font-size: 20px; line-height: 1.3; }
.cc-batch-hero p { margin: 0; color: var(--text-3); font-size: 12px; }
.cc-batch-summary { flex: none; padding: 8px 12px; border-radius: 8px; background: #fff; color: var(--text-3); font-size: 11.5px; box-shadow: 0 3px 12px rgba(35,49,59,.05); }
.cc-batch-summary b { color: var(--text-1); }
.cc-batch-action-grid { display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); gap: 18px; padding: 0 24px 22px; background: #f8fafb; align-items: stretch; }
.cc-batch-materials { min-width: 0; border-radius: 12px; padding: 18px 14px 14px; background: #e5f2ff; }
.cc-batch-config { min-width: 0; border-radius: 12px; padding: 18px 20px 16px; background: #fff; box-shadow: 0 5px 20px rgba(31,45,52,.055); }
.cc-batch-pane-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 13px; }
.cc-batch-pane-head h3 { margin: 0; font-size: 14px; }
.cc-batch-pane-head > span { color: var(--text-4); font-size: 11px; }
.cc-batch-materials > .cc-src-section { padding: 0; border: 0; }
.cc-batch-materials > div:not(.cc-batch-pane-head) { padding-left: 0 !important; padding-right: 0 !important; border-bottom: 0 !important; }
.cc-batch-materials .cc-src-tabs { background: #dbe9f7; border-radius: 8px; padding: 3px; }
.cc-batch-materials .cc-src-tab { border: 0; background: transparent; border-radius: 6px; }
.cc-batch-materials .cc-src-tab.on { background: #fff; box-shadow: 0 2px 6px rgba(50,80,100,.08); }
.cc-batch-materials .cc-filterbar { padding-top: 10px; }
.cc-batch-materials .cc-src-list { max-height: 266px; overflow-y: auto; }
.cc-batch-materials .cc-src-opt { border: 0; border-radius: 7px; margin-bottom: 4px; background: rgba(255,255,255,.42); }
.cc-batch-materials .cc-src-opt:has(input:checked) { background: #fff; box-shadow: 0 2px 7px rgba(50,80,100,.07); }
.cc-batch-materials .cc-src-add { margin: 0; padding: 10px 0 0; }
/* s107：s101 旧输出区布局规则（> div 系列）随 A2 网格结构废弃——
   其中 `> div:last-child{display:block!important}` 曾把 .cc-batch-output-grid 拍平成 block，
   导致模型/Word 两下拉垂直贴死。整批删除，新结构间距由 .cc-batch-output-grid gap 控制。 */
.cc-batch-config-section { margin-bottom: 18px; }
.cc-batch-label-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 9px; }
.cc-batch-label-row b { color: var(--text-2); font-size: 12px; }
.cc-batch-label-row small { color: var(--text-4); font-size: 10.5px; }
.cc-batch-platforms { display: flex; flex-wrap: wrap; gap: 8px; }
.cc-batch-platform { display: inline-flex; align-items: center; gap: 5px; padding: 7px 11px; border-radius: 7px; background: var(--bg-tag, #f3f7f9); color: var(--text-2); font-size: 11.5px; cursor: pointer; }
.cc-batch-platform:has(input:checked) { background: #edf4f1; color: #356d55; }
.cc-batch-platform input { accent-color: var(--brand-red); margin: 0; }
.cc-batch-brief { min-height: 94px; background: #f7f9fa; border-color: transparent; }
.cc-batch-brief:focus { background: #fff; border-color: var(--brand-red); }
.cc-batch-submit-row { display: flex; align-items: center; gap: 12px; margin-top: 3px; }
.cc-batch-submit-row .button { width: auto; min-width: 160px; }
.cc-batch-submit-row > span { color: var(--text-4); font-size: 10.5px; }
.cc-batch-history { margin: 0 24px 24px; padding: 15px 18px 12px; border-radius: 12px; background: #eef2f4; }
.cc-batch-history-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.cc-batch-history-head h3 { margin: 0; color: var(--text-2); font-size: 13px; }
.cc-batch-history-head h3 span { margin-left: 6px; padding: 2px 6px; border-radius: 4px; background: #e2e9ed; color: var(--text-4); font-size: 10px; font-weight: 500; }
.cc-batch-history-head > div { display: flex; align-items: center; gap: 8px; }
.cc-batch-history-head .filter-select { height: 28px; font-size: 11px; }
.cc-batch-history-table-head, .cc-batch-history-row { display: grid; grid-template-columns: minmax(0,1.6fr) 100px 120px 180px; gap: 12px; align-items: center; }
.cc-batch-history-table-head { padding: 3px 10px 5px; color: var(--text-4); font-size: 10px; }
.cc-batch-history-row { padding: 9px 10px; border-radius: 7px; color: var(--text-2); font-size: 11px; }
.cc-batch-history-row + .cc-batch-history-row { margin-top: 3px; }
.cc-batch-history-row:hover { background: rgba(255,255,255,.65); }
.cc-batch-history-row b { display: block; margin-bottom: 2px; color: var(--text-1); font-size: 11.5px; }
.cc-batch-history-row span { color: var(--text-4); font-size: 10px; }
.cc-batch-history-actions { display: flex; justify-content: flex-end; gap: 5px; flex-wrap: wrap; }
.cc-batch-history-actions .mini-btn { height: 26px; padding: 0 8px; font-size: 10px; }
/* s103 A2：按设计稿 1:1 重排——主操作双栏（素材雾蓝面 / 设置白面 步骤流 + 深色通栏提交条），批次记录底部浅灰辅助区。 */
.cc-batch-grid { display: flex; flex-direction: column; gap: 18px; padding: 0 24px 24px !important; background: #f8fafb; }
.cc-batch-action-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.08fr); gap: 18px; align-items: stretch; }
.cc-batch-materials { min-width: 0; border-radius: 14px; padding: 20px 22px 16px; background: #e5f2ff; display: flex; flex-direction: column; }
.cc-batch-config { min-width: 0; border-radius: 14px; padding: 20px 24px 18px; background: #fff; box-shadow: 0 5px 20px rgba(31,45,52,.055); display: flex; flex-direction: column; }
.cc-batch-pane-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.cc-batch-pane-head h3 { margin: 0; color: var(--text-1); font-size: 15.5px; font-weight: 800; }
.cc-batch-pane-head > span { color: var(--text-4); font-size: 12px; }
.cc-batch-pane-head .text-btn { border: 0; background: none; color: var(--brand-red); font-size: 12.5px; font-weight: 700; padding: 0; cursor: pointer; }
/* A2 素材面内部：整块列表，无横线，悬停浮白色圆角底框 */
.cc-batch-materials > .cc-batch-source-body { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.cc-batch-materials > .cc-batch-source-body > div:first-child { padding: 0; border: 0; }
.cc-batch-materials .cc-src-tabs { background: #dbe9f7; border-radius: 8px; padding: 3px; }
.cc-batch-materials .cc-src-tab { border: 0; background: transparent; border-radius: 6px; }
.cc-batch-materials .cc-src-tab.on { background: #fff; box-shadow: 0 2px 6px rgba(50,80,100,.08); }
.cc-batch-materials .cc-filterbar { padding: 10px 0 6px; }
.cc-batch-materials .cc-src-search { background: #fff; border: 0; }
.cc-batch-materials .cc-src-list.cc-batch-flatlist { flex: 1; min-height: 0; overflow-y: auto; border: 0; border-radius: 0; background: transparent; max-height: 330px; }
.cc-batch-materials .cc-src-list.cc-batch-flatlist .cc-src-opt { display: flex; align-items: center; gap: 10px; padding: 11px 10px; border: 1px solid transparent; border-bottom: 0; border-radius: 9px; background: transparent; font-size: 13.5px; }
.cc-batch-materials .cc-src-list.cc-batch-flatlist .cc-src-opt:hover { background: #fff; border-color: #d3e2f0; box-shadow: 0 2px 8px rgba(43,84,112,.06); }
.cc-batch-materials .cc-src-list.cc-batch-flatlist .cc-src-opt:has(input:checked) { background: transparent; box-shadow: none; }
.cc-batch-materials .cc-src-list.cc-batch-flatlist .cc-src-opt:has(input:checked):hover { background: #fff; }
.cc-batch-materials .cc-src-list.cc-batch-flatlist .cc-src-opt:has(input:checked) .t { font-weight: 800; color: var(--text-1); }
.cc-batch-materials .cc-src-list.cc-batch-flatlist .cc-src-opt .t { font-size: 13.5px; }
.cc-batch-materials .cc-src-list.cc-batch-flatlist .cc-src-opt .tag { flex: none; }
.cc-batch-materials .cc-src-count { border: 0; padding: 10px 0 0; margin-top: auto; display: flex; flex-direction: column; align-items: center; gap: 6px; }
.cc-batch-materials .cc-src-add { margin: 0; padding: 8px 0 0; text-align: center; }
/* A2 跨页保留提示 + 真页码条 */
.cc-batch-picked { display: block; width: 100%; text-align: center; font-size: 11.5px; color: #4a6a80; background: rgba(255,255,255,.65); border-radius: 7px; padding: 5px 10px; }
.cc-batch-picked b { color: var(--brand-red); }
.cc-batch-pager { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex-wrap: wrap; }
.cc-batch-pager .mini-btn { width: 26px; height: 26px; padding: 0; border: 0; border-radius: 7px; background: #fff; color: var(--text-3); font-size: 12px; justify-content: center; }
.cc-batch-pager .mini-btn.num.on { background: var(--text-1); color: #fff; font-weight: 700; }
.cc-batch-pager .mini-btn:not(.num) { width: auto; padding: 0 10px; background: transparent; color: var(--text-1); font-weight: 700; }
.cc-batch-pager .mini-btn:disabled { opacity: .35; }
.cc-batch-pager .info { font-size: 11.5px; color: #6b7f8d; margin: 0 4px; }
.cc-batch-pager i { font-style: normal; color: #8aa0ae; }
/* A2 右栏：编号步骤流 */
.cc-batch-step { display: flex; gap: 13px; padding: 14px 0; border-bottom: 1px solid #f0f3f5; }
.cc-batch-step:first-of-type { padding-top: 2px; }
.cc-batch-step-num { width: 22px; height: 22px; border-radius: 50%; background: #eef3f7; color: #5b6b76; font-size: 11.5px; font-weight: 800; display: grid; place-items: center; flex: none; margin-top: 2px; }
.cc-batch-step-body { flex: 1; min-width: 0; }
.cc-batch-label-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 9px; }
.cc-batch-label-row b { color: var(--text-2); font-size: 13px; font-weight: 800; }
.cc-batch-label-row small { color: var(--text-4); font-size: 11.5px; }
.cc-batch-step:last-of-type { border-bottom: 0; padding-bottom: 4px; }
.cc-batch-platforms { display: flex; flex-wrap: wrap; gap: 8px; }
.cc-batch-platform { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border: 1px solid var(--border); border-radius: 9px; background: #fff; color: var(--text-2); font-size: 13px; cursor: pointer; }
.cc-batch-platform:has(input:checked) { background: #fdeeec; border-color: #eab6b1; color: var(--brand-red); font-weight: 700; }
.cc-batch-platform input { accent-color: var(--brand-red); margin: 0; }
.cc-batch-output-grid .cc-picker { max-width: none; }
.cc-batch-brief { min-height: 96px; background: #fcfdfe; border: 1.5px solid #dfe6eb; border-radius: 11px; }
.cc-batch-brief:focus { background: #fff; border-color: var(--brand-red); }
/* s95 同款：模板按钮与标签同行（.cc-batch-label-row 已两端对齐，去 margin-left:auto） */
.cc-batch-label-row .cc-tpl-toggle { margin-left: 0; }
/* A2 深色通栏提交条 */
.cc-batch-submit-bar { margin-top: 14px; background: linear-gradient(135deg, #2b3a44, #22303a); border-radius: 12px; padding: 14px 18px; display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.cc-batch-submit-calc { color: #bcd0dc; font-size: 13px; flex: 1 1 auto; min-width: 0; }
.cc-batch-submit-calc b { color: #fff; font-size: 16px; margin: 0 1px; }
.cc-batch-submit-calc .sep { color: #51636f; margin: 0 6px; }
.cc-batch-submit-bar .button { flex: none; margin-left: auto; min-width: 168px; padding: 12px 28px; font-size: 15px; font-weight: 800; border-radius: 10px; box-shadow: 0 6px 18px rgba(200,52,44,.35); white-space: nowrap; }
.cc-batch-submit-note { margin-top: 8px; color: var(--text-4); font-size: 11.5px; }
.cc-batch-history { margin: 0; padding: 18px 22px 14px; border-radius: 14px; background: #f1f4f6; }
.cc-batch-history-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.cc-batch-history-head h3 { margin: 0; color: var(--text-2); font-size: 13.5px; font-weight: 800; display: flex; align-items: center; }
.cc-batch-history-head h3 span { margin-left: 8px; padding: 2px 8px; border-radius: 6px; background: #fff; color: var(--text-4); font-size: 10.5px; font-weight: 600; }
.cc-batch-history-head > div { display: flex; align-items: center; gap: 8px; }
.cc-batch-history-head .filter-select { height: 28px; font-size: 11px; }
.cc-batch-history-table-head, .cc-batch-history-row { display: grid; grid-template-columns: minmax(0,1.6fr) 100px 140px 215px; gap: 12px; align-items: center; }
.cc-batch-history-table-head { padding: 3px 10px 5px; color: var(--text-4); font-size: 10px; }
.cc-batch-history-row { padding: 9px 10px; border-radius: 7px; color: var(--text-2); font-size: 11px; }
.cc-batch-history-row + .cc-batch-history-row { margin-top: 3px; }
.cc-batch-history-row:hover { background: rgba(255,255,255,.65); }
.cc-batch-history-row b { display: block; margin-bottom: 2px; color: var(--text-1); font-size: 11.5px; }
.cc-batch-history-row span { color: var(--text-4); font-size: 10px; }
.cc-batch-history-actions { display: flex; justify-content: flex-end; gap: 5px; flex-wrap: wrap; }
.cc-batch-history-actions .mini-btn { height: 26px; padding: 0 8px; font-size: 10px; }
.cc-batch-history-body { min-height: 20px; }
.cc-batch-history-foot { margin-top: 8px; font-size: 11.5px; color: var(--text-4); }

/* 页头（A2：标题 + 汇总） */
.cc-batch-page > .card-header { padding: 22px 24px 16px; border-bottom: 0; background: #f8fafb; }
.cc-batch-page > .card-header .cc-title { font-size: 20px; line-height: 1.3; color: var(--text-1); }
.cc-batch-page > .card-header .cc-quota { font-size: 13px; color: var(--text-3); }
.cc-batch-page > .card-header .cc-quota b { color: var(--brand-red); }

@media (max-width: 900px) {
  .cc-batch-grid { padding: 0 16px 16px !important; }
  .cc-batch-action-grid { grid-template-columns: 1fr; }
  .cc-batch-output-grid { grid-template-columns: 1fr; }
  .cc-batch-submit-bar { flex-direction: column; align-items: stretch; text-align: center; }
  .cc-batch-submit-bar .button { margin: 0; }
  .cc-batch-history { overflow-x: auto; }
  .cc-batch-history-table-head, .cc-batch-history-row { min-width: 620px; }
}

/* s84d：对话创作/批量创作 互斥页签（设计稿：红色激活大页签） */
.cc-modebar { display: flex; gap: 8px; align-items: center; }
.cc-modebtn { display: inline-flex; align-items: center; gap: 7px; height: 38px; padding: 0 18px; border: 1px solid var(--border); border-radius: 9px; background: #fff; color: var(--text-2); font: inherit; font-size: 13.5px; font-weight: 700; cursor: pointer; transition: .15s; }
.cc-modebtn:hover { border-color: var(--text-4); }
.cc-modebtn.on { border-color: var(--brand-red); background: var(--brand-red); color: #fff; box-shadow: 0 3px 10px rgba(200,52,44,.25); }

/* s85 P1：素材抽屉搜索框 */
.cc-drawer-search { width: 100%; box-sizing: border-box; padding: 8px 11px; border: 1px solid var(--border); border-bottom: 0; outline: none; font: inherit; font-size: 12px; color: var(--text-1); background: #fff; }
.cc-drawer-search:focus { border-color: var(--brand-red); }

/* ============================================================
   s87：创作配置补全——模型/格式胶囊、批量素材来源区、目录浏览器
   ============================================================ */
/* 通用胶囊选择器（模型/格式） */
.cc-picker { position: relative; display: inline-flex; min-width: 0; }
.cc-trigger { width: 100%; display: inline-flex; align-items: center; gap: 7px; min-height: 34px; padding: 0 11px; border: 1px solid var(--border); border-radius: 8px; background: #fff; font: inherit; font-size: 12.5px; color: var(--text-1); cursor: pointer; }
.cc-trigger:hover:not(:disabled) { border-color: var(--text-4); }
.cc-trigger:disabled { opacity: .55; cursor: not-allowed; }
.cc-trigger .ic { color: var(--text-3); display: inline-flex; flex: none; }
.cc-trigger .caret { margin-left: auto; color: var(--text-4); font-size: 10px; }
.cc-trigger-dir .cc-dir-path { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left; }
.cc-dd { position: absolute; top: 38px; left: 0; right: 0; z-index: 50; background: #fff; border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 14px 34px rgba(27,58,71,.18); overflow: hidden; max-height: 240px; overflow-y: auto; }
.cc-dd .opt { display: flex; align-items: center; gap: 8px; width: 100%; padding: 9px 12px; border: 0; background: #fff; font: inherit; font-size: 12.5px; color: var(--text-1); cursor: pointer; text-align: left; }
.cc-dd .opt:hover { background: #f6fafb; }
.cc-dd .opt .chk { margin-left: auto; color: var(--brand-red); font-weight: 800; visibility: hidden; }
.cc-dd .opt.on .chk { visibility: visible; }
.cc-dd .opt .ic { color: var(--text-3); display: inline-flex; flex: none; }
/* 出文档设置条（对话创作） */
.cc-doc-cfg { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; padding: 8px 10px; border: 1px dashed var(--gold); border-radius: 9px; background: rgba(201,164,92,.07); margin-top: 9px; }
.cc-doc-lbl { font-size: 11px; color: var(--gold-dark); font-weight: 800; flex: none; }
.cc-doc-hint { font-size: 10.5px; color: var(--text-4); }
.cc-doc-cfg .cc-trigger { min-height: 28px; font-size: 11.5px; border-radius: 7px; }
.cc-doc-cfg .cc-picker { max-width: 190px; }
/* 批量素材来源区 */
.cc-src-tabs { display: flex; gap: 6px; margin-bottom: 9px; }
.cc-src-tab { display: inline-flex; align-items: center; gap: 5px; height: 29px; padding: 0 12px; border: 1px solid var(--border); border-radius: 8px; background: #fff; color: var(--text-2); font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; }
.cc-src-tab.on { border-color: var(--brand-red); color: var(--brand-red); background: var(--brand-red-light); }
.cc-filterbar { display: flex; gap: 7px; align-items: center; flex-wrap: wrap; margin-bottom: 8px; }
.cc-src-search { flex: 1; min-width: 110px; height: 30px; padding: 0 10px; border: 1px solid var(--border); border-radius: 8px; font: inherit; font-size: 12px; color: var(--text-1); outline: none; }
.cc-src-search:focus { border-color: var(--brand-red); }
.cc-fit-pills { display: flex; gap: 5px; flex-wrap: wrap; }
.cc-fit-pill { display: inline-flex; align-items: center; gap: 4px; height: 25px; padding: 0 9px; border: 1px solid var(--border); border-radius: 999px; background: #fff; font-size: 11px; font-weight: 700; color: var(--text-3); cursor: pointer; user-select: none; }
.cc-fit-pill input { accent-color: var(--brand-red); margin: 0; width: 0; height: 0; opacity: 0; pointer-events: none; }
.cc-fit-pill.on { border-color: var(--brand-red); color: var(--brand-red); background: var(--brand-red-light); }
.cc-fit-pill .cnt { min-width: 16px; padding: 0 5px; border-radius: 999px; background: var(--bg-tag, #eef2f4); color: var(--text-3); font-size: 10px; text-align: center; line-height: 16px; }
.cc-fit-pill.on .cnt { background: var(--brand-red); color: #fff; }
.cc-src-list { border: 1px solid var(--border); border-radius: 9px; max-height: 210px; overflow: auto; }
.cc-src-opt { display: flex; align-items: center; gap: 9px; padding: 8px 11px; border-bottom: 1px solid var(--border-light); font-size: 12.5px; cursor: pointer; }
.cc-src-opt:last-child { border-bottom: 0; }
.cc-src-opt:hover { background: #f7fafb; }
.cc-src-opt input { accent-color: var(--brand-red); margin: 0; flex: none; }
.cc-src-opt .t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-src-count { font-size: 10.5px; color: var(--text-4); margin-top: 6px; }
.cc-chips { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 9px; }
.cc-chip { display: inline-flex; align-items: center; gap: 6px; max-width: 210px; height: 26px; padding: 0 6px 0 10px; border: 1px solid var(--border); border-radius: 999px; background: #fff; font-size: 11.5px; }
.cc-chip .t { max-width: 140px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-chip .x { width: 16px; height: 16px; border-radius: 50%; background: var(--bg-tag, #eef2f4); color: var(--text-2); font-size: 10px; line-height: 16px; text-align: center; cursor: pointer; flex: none; }
.cc-chip .x:hover { background: var(--brand-red); color: #fff; }
/* 联动徽标 */
.cc-linkage { display: inline-flex; align-items: center; gap: 4px; height: 21px; padding: 0 9px; border-radius: 999px; background: rgba(201,164,92,.14); color: var(--gold-dark); font-size: 10.5px; font-weight: 700; }
.cc-linkage.off { background: var(--bg-tag, #eef2f4); color: var(--text-4); text-decoration: line-through; }
.cc-fmt-note { font-size: 10.5px; color: var(--text-4); margin-top: 5px; line-height: 1.5; }
/* 目录浏览器弹层 */
.cc-acct-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.cc-acct-tab { display: inline-flex; align-items: center; gap: 6px; height: 29px; padding: 0 11px; border: 1px solid var(--border); border-radius: 8px; background: #fff; font: inherit; font-size: 12px; font-weight: 700; color: var(--text-2); cursor: pointer; }
.cc-acct-tab.on { border-color: var(--brand-red); color: var(--brand-red); background: var(--brand-red-light); }
.cc-acct-tab span { color: var(--text-4); font-weight: 650; font-size: 10.5px; }
.cc-crumbs { display: flex; align-items: center; gap: 4px; padding: 9px 0; font-size: 12px; color: var(--text-2); flex-wrap: wrap; border-bottom: 1px solid var(--border-light); }
.cc-crumbs .c { color: var(--info, #2563eb); cursor: pointer; }
.cc-crumbs .c:hover { text-decoration: underline; }
.cc-crumbs .sep { color: var(--text-4); }
.cc-folder-list { max-height: 240px; overflow: auto; border-bottom: 1px solid var(--border-light); min-height: 120px; }
.cc-folder { display: flex; align-items: center; gap: 9px; padding: 9px 4px; font-size: 12.5px; cursor: pointer; border-bottom: 1px solid var(--border-light); }
.cc-folder:hover { background: #f6fafb; }
.cc-folder .ic { color: var(--gold-dark); }
.cc-folder-row { display: flex; gap: 8px; padding: 11px 0 0; }
.cc-folder-row input { flex: 1; height: 34px; padding: 0 10px; border: 1px solid var(--border); border-radius: 8px; font: inherit; font-size: 12.5px; outline: none; }
@media (max-width: 900px) { .cc-filterbar { flex-direction: column; align-items: stretch; } }

/* s88：素材来源分页条 */
.cc-pager { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; }
.cc-pager span { font-size: 11px; color: var(--text-3); font-weight: 700; }

/* ============================================================
   s88b：WorkBuddy 同款输入卡片——圆角大卡片，上打字区下工具栏
   ============================================================ */
.cc-composer { border: 1px solid var(--border); border-radius: 12px; background: #fff; transition: border-color .15s, box-shadow .15s; }
.cc-composer:focus-within { border-color: var(--brand-red); box-shadow: 0 0 0 2px rgba(200,52,44,.1); }
.cc-composer textarea { width: 100%; min-height: 56px; max-height: 140px; padding: 11px 13px 6px; border: 0; border-radius: 12px 12px 0 0; font: inherit; font-size: 12.5px; resize: none; outline: none; background: transparent; color: var(--text-1); }
.cc-composer-bar { display: flex; align-items: center; gap: 9px; padding: 6px 9px 8px 11px; flex-wrap: wrap; }
.cc-composer-left { display: flex; align-items: center; gap: 8px; flex-wrap: nowrap; flex: 1; min-width: 0; }
/* 模式小分段（图标式） */
.cc-mode-sw { display: inline-flex; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; flex: none; }
.cc-mode-sw button { height: 28px; width: 34px; border: 0; background: #fff; font-size: 13px; cursor: pointer; color: var(--text-3); display: inline-flex; align-items: center; justify-content: center; }
.cc-mode-sw button + button { border-left: 1px solid var(--border-light); }
.cc-mode-sw button.on { background: var(--brand-red); color: #fff; }
.cc-mode-sw button:hover:not(.on) { background: var(--bg-hover, #f3f7f8); }
/* 模型胶囊（WorkBuddy 风：轻无边框，六边形图标+名称+▾） */
.cc-picker-model { min-width: 0; }
.cc-trigger-plain { width: auto; min-height: 30px; padding: 0 9px; border: 1px solid transparent; border-radius: 8px; background: transparent; font-size: 12px; color: var(--text-2); }
.cc-trigger-plain:hover:not(:disabled) { background: var(--bg-hover, #f3f7f8); border-color: var(--border-light); }
.cc-model-ic { width: 15px; height: 15px; color: var(--text-3); flex: none; }
.cc-model-name { max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 650; }
.cc-picker-model .caret { margin-left: 0; font-size: 9px; }
/* 底栏里向上弹的菜单 */
.cc-dd-up { bottom: 40px; top: auto; }
.cc-composer .cc-picker-model { position: relative; }
.cc-composer .cc-picker-model .cc-dd { position: absolute; left: 0; right: auto; width: 220px; }
/* 出文档时的格式/目录小胶囊（在底栏内） */
.cc-composer .cc-picker { max-width: 160px; }
.cc-composer .cc-trigger { min-height: 30px; font-size: 11.5px; border-radius: 8px; }
.cc-composer-dir { max-width: 150px; }
.cc-composer-dir .cc-dir-path { font-size: 11.5px; }
/* 圆形发送钮 */
.cc-send-btn { width: 38px; height: 38px; border-radius: 50%; border: 0; background: var(--brand-red); color: #fff; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; flex: none; box-shadow: 0 2px 8px rgba(200,52,44,.3); transition: .15s; }
.cc-send-btn svg { width: 17px; height: 17px; }
.cc-send-btn:hover:not(:disabled) { background: #a92b24; transform: translateY(-1px); }
.cc-send-btn:disabled { background: var(--bg-tag, #e4eaed); color: var(--text-4); cursor: not-allowed; box-shadow: none; }
.cc-send-spinner { width: 15px; height: 15px; border: 2px solid rgba(255,255,255,.4); border-top-color: #fff; border-radius: 50%; animation: cc-spin .7s linear infinite; display: inline-block; }
@keyframes cc-spin { to { transform: rotate(360deg); } }
@media (max-width: 720px) { .cc-composer-bar { flex-direction: column; align-items: stretch; } .cc-send-btn { align-self: flex-end; } }

/* s90b：抽屉列表内部滚动——此前容器 max-height+overflow:hidden 把页码条裁掉（渲染了但看不见） */
#chat-drawer-list { flex: 1; min-height: 0; overflow-y: auto; }
.cc-drawer .cc-src-count { flex: none; display: flex; align-items: center; gap: 6px; padding: 7px 13px 3px; margin: 0; border-top: 1px solid var(--border-light); }
.cc-drawer .cc-src-add { flex: none; }

/* s91：生成中占位（三点呼吸） */
.cc-msg-pending { display: inline-flex; align-items: center; gap: 5px; color: var(--text-4); font-size: 12px; }
.cc-dot { width: 5px; height: 5px; border-radius: 50%; background: var(--text-4); animation: cc-breathe 1.2s ease-in-out infinite; }
.cc-dot:nth-child(2) { animation-delay: .2s; }
.cc-dot:nth-child(3) { animation-delay: .4s; }
@keyframes cc-breathe { 0%, 100% { opacity: .3; } 50% { opacity: 1; } }

/* s91a：指令模板 chips（对话/批量共用，pan 同款交互） */
.cc-tpl-chips { display: flex; gap: 6px; flex-wrap: wrap; padding: 8px 11px 0; align-items: center; }
.cc-composer .cc-tpl-chips { padding: 8px 11px 0; }
.cc-tpl-chip { display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 10px; border: 1px solid var(--border); border-radius: 999px; background: #fff; font: inherit; font-size: 11px; font-weight: 650; color: var(--text-2); cursor: pointer; max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-tpl-chip:hover { border-color: var(--brand-red); color: var(--brand-red); background: var(--brand-red-light); }
.cc-tpl-more { height: 24px; border: 1px solid var(--border); border-radius: 999px; background: #fff; font: inherit; font-size: 11px; color: var(--text-2); outline: none; cursor: pointer; }
.cc-tpl-empty { font-size: 10.5px; color: var(--text-4); }

/* s91c：指令模板弹层面板（pan 同款）——按钮 + 面板（chips 网格 + 存为模板） */
.cc-tpl-toggle { display: inline-flex; align-items: center; gap: 4px; height: 28px; padding: 0 10px; border: 1px solid var(--border); border-radius: 8px; background: #fff; font: inherit; font-size: 11.5px; font-weight: 700; color: var(--text-2); cursor: pointer; flex: none; }
.cc-tpl-toggle:hover { border-color: var(--brand-red); color: var(--brand-red); }
.cc-tpl-toggle.on { border-color: var(--brand-red); color: var(--brand-red); background: var(--brand-red-light); }
.cc-tpl-panel { border: 1px solid var(--border); border-radius: 9px; background: #f9fbfc; margin: 8px 11px 0; }
.cc-composer .cc-tpl-panel { margin: 8px 11px 0; }
#batch-template-panel { margin: 0 0 8px; }
.cc-tpl-panel-head { display: flex; align-items: baseline; gap: 8px; padding: 9px 12px 6px; }
.cc-tpl-panel-head strong { font-size: 12px; color: var(--text-1); }
.cc-tpl-hint { font-size: 10.5px; color: var(--text-4); }
.cc-tpl-panel .cc-tpl-chips { padding: 0 12px; }
.cc-tpl-panel .cc-tpl-chip { height: 26px; font-size: 11.5px; }
.cc-tpl-panel-foot { padding: 8px 12px 10px; }

/* s91d：composer 工具栏右对齐（左侧按钮组靠着发送按钮），发送钮改 WorkBuddy 深青圆形+实心箭头 */
.cc-composer-bar { justify-content: flex-end; }
.cc-composer-left { flex: 0 0 auto; }
.cc-send-btn { width: 40px; height: 40px; background: #1f4e5f; box-shadow: 0 2px 8px rgba(31,78,95,.28); margin-left: 10px; }
/* s95：生成文档设置与模式/模型保持同一横排，不因内容长度换行 */
.cc-composer-left > * { flex: none; }
.cc-composer-left .cc-picker-model { max-width: 190px; }
.cc-composer-left .cc-trigger { white-space: nowrap; }
.cc-composer-left .cc-composer-dir { max-width: 150px; }
/* s100：目录按钮收窄并给发送按钮保留独立槽位，避免窄宽度下重叠 */
.cc-composer-bar { min-width: 0; flex-wrap: nowrap; }
.cc-composer-left { flex: 0 1 auto; max-width: calc(100% - 42px); min-width: 0; margin-left: auto; overflow: visible; }
.cc-composer-left > * { flex: 0 1 auto; min-width: 0; }
.cc-composer-left .cc-mode-sw,
.cc-composer-left .cc-tpl-toggle { flex: 0 0 auto; }
.cc-composer-left .cc-picker-model { flex: 0 1 142px; max-width: 142px; }
.cc-composer-left .cc-picker-model .cc-trigger { min-width: 0; }
.cc-composer-left .cc-picker-model .cc-trigger span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-composer-left .cc-picker:not(.cc-picker-model) { flex: 0 1 118px; max-width: 118px; }
.cc-composer-left .cc-composer-dir { flex: 0 1 118px; max-width: 118px; }
.cc-composer-left .cc-composer-dir .cc-dir-path { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-composer-bar > .cc-send-btn { flex: 0 0 40px; width: 40px; margin-left: 2px; }

/* s100：用更明确的雾蓝层级区分素材辅助区与页面灰底 */
.cc-chat-workspace .cc-drawer { background: #e5f2ff; }
.cc-chat-workspace .cc-drawer .tpl-row { background: #dbe9f7; }
.cc-chat-workspace .cc-drawer .cc-pager .mini-btn:hover:not(:disabled) { background: #d4e6f7; }
/* s95：模式图标使用即时页面提示，避免浏览器 title 的悬停延迟 */
.cc-mode-sw { overflow: visible; }
.cc-mode-sw button[data-tooltip] { position: relative; }
.cc-mode-sw button[data-tooltip]::after { content: attr(data-tooltip); position: absolute; left: 50%; bottom: calc(100% + 7px); z-index: 70; transform: translateX(-50%) translateY(2px); padding: 5px 8px; border-radius: 6px; background: #24343b; color: #fff; font-size: 11px; font-weight: 500; line-height: 1.2; white-space: nowrap; opacity: 0; pointer-events: none; visibility: hidden; transition: none; }
.cc-mode-sw button[data-tooltip]:hover::after, .cc-mode-sw button[data-tooltip]:focus-visible::after { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
@media (max-width: 720px) {
  .cc-composer-bar { flex-wrap: wrap; }
  .cc-composer-left { flex: 1 1 100%; width: 100%; }
  .cc-composer-bar > .cc-send-btn { flex: 0 0 40px; margin-left: auto; }
}
.cc-send-btn svg { width: 18px; height: 18px; }
.cc-send-btn:hover:not(:disabled) { background: #163a47; }
.cc-send-btn:disabled { background: var(--bg-tag, #e4eaed); color: var(--text-4); }

/* ===== s92：对话创作六项体验修正 ===== */
/* 5) 对话区固定高度（加长）+ 消息区内部滚动；素材抽屉与之等高 */
.cc-shell { align-items: stretch; }
.cc-chat { min-height: 620px; max-height: 620px; }
#chat-msgs { flex: 1; min-height: 0; overflow-y: auto; max-height: none; }
.cc-drawer { max-height: none; }
/* 6) 用户气泡改 WorkBuddy 浅蓝灰 */
.cc-msg-user { background: #e8f1f8; color: var(--text-1); border: 1px solid #d3e3ef; }
/* 1) 会话下拉行：三个点按钮 + 操作菜单 */
.cc-sess-item { display: flex; align-items: center; gap: 8px; position: relative; }
.cc-sess-item b { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-sess-meta { flex: none; }
.cc-sess-dots { flex: none; width: 24px; height: 22px; border: 0; border-radius: 6px; background: transparent; color: var(--text-3); font-size: 14px; line-height: 1; cursor: pointer; letter-spacing: 1px; padding: 0; }
.cc-sess-dots:hover { background: var(--bg-hover, #eef3f6); color: var(--text-1); }
.cc-sess-actions { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: 9px; background: #fff; box-shadow: 0 10px 26px rgba(27,58,71,.16); overflow: hidden; margin: 6px 10px; }
.cc-sess-actions button { display: flex; align-items: center; gap: 7px; padding: 9px 13px; border: 0; border-bottom: 1px solid var(--border-light); background: #fff; font: inherit; font-size: 12px; color: var(--text-1); cursor: pointer; text-align: left; }
.cc-sess-actions button:last-child { border-bottom: 0; }
.cc-sess-actions button:hover { background: #f6fafb; }
.cc-sess-actions button.danger { color: var(--brand-red); }
/* 4) 输入区图片附件胶囊 */
.cc-img-chips { display: flex; gap: 6px; flex-wrap: wrap; padding: 8px 11px 0; }
.cc-img-chip { display: inline-flex; align-items: center; gap: 6px; max-width: 200px; height: 26px; padding: 0 6px 0 10px; border: 1px solid #d3e3ef; border-radius: 999px; background: #eef6fb; font-size: 11.5px; color: var(--text-1); }
.cc-img-chip .t { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cc-img-chip .x { width: 16px; height: 16px; border-radius: 50%; background: #d8e6f0; color: var(--text-2); font-size: 10px; line-height: 16px; text-align: center; cursor: pointer; flex: none; }
.cc-img-chip .x:hover { background: var(--brand-red); color: #fff; }

/* ===== s94：方案 A 极简双栏——静态容器去框，靠留白与底色建立层级 ===== */
.cc-chat-workspace { border: 0; background: transparent; box-shadow: none; }
.cc-chat-workspace > .card-header { min-height: 44px; margin: 0; padding: 0 4px 12px; border-bottom: 0; }
.cc-chat-workspace .cc-top { gap: 14px; }
.cc-chat-workspace .cc-title { height: 34px; padding: 0; border: 0; background: transparent; font-size: 15px; font-weight: 700; }
.cc-chat-workspace .cc-title:hover .caret { color: var(--text-1); }
.cc-chat-workspace .c-ghost { height: 32px; padding: 0 8px; border: 0; background: transparent; font-weight: 500; }
.cc-chat-workspace .c-ghost:hover { border: 0; background: #eceff1; color: var(--text-1); }
.cc-chat-workspace .c-ghost.accent { border: 0; color: var(--brand-red); }
.cc-chat-workspace .c-ghost.accent:hover { background: var(--brand-red-light); }
.cc-chat-workspace .cc-shell { gap: 24px; padding: 0 4px; }
.cc-chat-workspace .cc-chat { border: 0; border-radius: 0; background: transparent; padding: 0; gap: 16px; }
.cc-chat-workspace #chat-msgs { gap: 22px; padding: 4px 10px 4px 0; scrollbar-width: thin; scrollbar-color: #d7dde1 transparent; }
.cc-chat-workspace #chat-msgs::-webkit-scrollbar { width: 5px; }
.cc-chat-workspace #chat-msgs::-webkit-scrollbar-track { background: transparent; }
.cc-chat-workspace #chat-msgs::-webkit-scrollbar-thumb { background: #d7dde1; border-radius: 5px; }
.cc-chat-workspace .cc-msg-ai { max-width: 92%; padding: 0; border: 0; border-radius: 0; background: transparent; font-size: 13.5px; line-height: 1.8; }
.cc-chat-workspace .cc-msg-user { max-width: 72%; padding: 11px 14px; border: 0; border-radius: 14px 14px 4px 14px; background: #e8f1f8; font-size: 13px; line-height: 1.75; }
.cc-msg-text.is-collapsed { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 6; overflow: hidden; }
.cc-msg-expand { margin: 6px 0 0; padding: 0; border: 0; background: transparent; color: #547386; font: inherit; font-size: 11.5px; cursor: pointer; }
.cc-msg-expand:hover { color: #1f4e5f; }
.cc-msg-sources { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; margin-top: 9px; }
.cc-msg-source-label { margin-right: 2px; color: #6c8390; font-size: 11px; }
.cc-msg-source { max-width: 180px; padding: 2px 7px; overflow: hidden; border-radius: 5px; background: rgba(255,255,255,.58); color: #526b79; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.cc-chat-workspace .cc-composer { border-color: #dfe4e8; box-shadow: 0 4px 18px rgba(31,45,52,.04); }
.cc-chat-workspace .cc-composer:focus-within { border-color: #9bb4bf; box-shadow: 0 0 0 3px rgba(31,78,95,.07); }
.cc-composer-sources { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 10px 12px 0; }
.cc-composer-sources[hidden] { display: none; }
.cc-composer-source-label { margin-right: 2px; color: var(--text-4); font-size: 11px; }
.cc-composer-sources .cc-src-pill { height: 25px; border: 0; background: #f1f4f6; color: var(--text-2); }
.cc-composer-sources .cc-src-pill .x { background: transparent; color: var(--text-4); }
.cc-composer-sources .cc-src-pill .x:hover { color: var(--brand-red); }
.cc-chat-workspace .cc-composer textarea { min-height: 64px; font-size: 13px; }
.cc-chat-workspace .cc-drawer { width: 264px; border: 0; border-radius: 12px; background: #f7f8f9; }
.cc-chat-workspace .cc-drawer-head { padding: 14px 14px 10px; border: 0; font-size: 13px; font-weight: 700; }
.cc-chat-workspace .cc-drawer-head span { font-weight: 400; }
.cc-chat-workspace .cc-drawer .tpl-row { margin: 0 10px 8px; padding: 4px; border: 0; border-radius: 9px; background: #eceff1; flex-wrap: nowrap; }
.cc-chat-workspace .cc-drawer .tpl { flex: 1; padding: 5px 8px; background: transparent; color: var(--text-3); text-align: center; font-weight: 500; }
.cc-chat-workspace .cc-drawer .tpl:hover { background: rgba(255,255,255,.6); }
.cc-chat-workspace .cc-drawer .tpl.is-on { background: #fff; color: var(--text-1); }
.cc-chat-workspace .cc-drawer-search { width: calc(100% - 24px); margin: 0 12px 7px; padding: 8px 10px; border: 0; border-radius: 8px; background: #fff; }
.cc-chat-workspace .cc-drawer-search:focus { border: 0; box-shadow: 0 0 0 2px rgba(31,78,95,.09); }
.cc-chat-workspace .cc-drawer .cc-src-opt { margin: 0 6px; padding: 9px 8px; border: 0; border-radius: 8px; }
.cc-chat-workspace .cc-drawer .cc-src-opt:hover { background: #fff; }
.cc-chat-workspace .cc-drawer .cc-src-opt:has(input:checked) { background: #fff; }
.cc-chat-workspace .cc-drawer .cc-src-count { padding: 8px 14px 4px; border: 0; }
.cc-chat-workspace .cc-drawer .cc-pager .mini-btn { width: 24px; padding: 0; border: 0; background: transparent; justify-content: center; }
.cc-chat-workspace .cc-drawer .cc-pager .mini-btn:hover:not(:disabled) { background: #e8ecee; }
.cc-chat-workspace .cc-drawer .cc-src-add { padding: 10px 14px 13px; font-weight: 500; text-align: left; }
@media (max-width: 900px) {
  .cc-chat-workspace .cc-shell { gap: 16px; }
  .cc-chat-workspace .cc-drawer { max-height: 560px; }
  .cc-chat-workspace .cc-msg-user { max-width: 86%; }
}

/* ===== s96：对话与素材明确分层——主工作面 + 辅助素材面板 ===== */
.cc-chat-workspace .cc-shell { align-items: stretch; gap: 20px; }
.cc-chat-workspace .cc-chat {
  min-width: 0;
  padding: 16px 18px 18px;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 5px 20px rgba(31,45,52,.055);
}
.cc-chat-workspace .cc-drawer {
  width: 272px;
  flex: 0 0 272px;
  border-radius: 14px;
  background: #eaf7fb;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.85), 0 3px 14px rgba(31,45,52,.035);
  overflow: hidden;
}
.cc-chat-workspace .cc-drawer-head {
  padding: 14px 15px 10px;
  color: #334852;
  letter-spacing: .02em;
}
.cc-chat-workspace .cc-drawer-head::after {
  content: "辅助区";
  display: inline-flex;
  margin-left: 7px;
  padding: 2px 6px;
  border-radius: 4px;
  background: #e1e7ea;
  color: #71818a;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0;
  vertical-align: 1px;
}
.cc-chat-workspace .cc-drawer .tpl-row { background: #e3e8eb; }
.cc-chat-workspace .cc-drawer-search { background: #fff; box-shadow: 0 1px 4px rgba(31,45,52,.035); }
.cc-chat-workspace .cc-drawer .cc-src-opt { margin: 2px 8px; padding: 9px 8px; }
.cc-chat-workspace .cc-drawer .cc-src-opt:has(input:checked) { background: #fff; box-shadow: 0 1px 4px rgba(31,45,52,.07); }
.cc-chat-workspace .cc-drawer .cc-src-opt:hover { background: #fafcfc; }
.cc-chat-workspace .cc-drawer .cc-src-count { margin: 4px 8px 0; padding: 8px 6px 4px; }
.cc-chat-workspace .cc-drawer .cc-src-add { margin: 0 8px; padding: 10px 6px 13px; }

/* s100：最终覆盖旧版分层色，素材区使用明确的雾蓝底 */
.cc-chat-workspace .cc-drawer { background: #e5f2ff; }
.cc-chat-workspace .cc-drawer .tpl-row { background: #dbe9f7; }
.cc-chat-workspace .cc-drawer .cc-pager .mini-btn:hover:not(:disabled) { background: #d4e6f7; }

/* ===== s105：素材来源常驻 + 头部紧凑胶囊（2026-10-28 用户反馈）===== */
/* ① 头部只留「对话名▼ + ⊕新建任务」，白框收紧只包这两个元素 */
.cc-chat-workspace > .card-header {
  padding: 0 4px 14px;
  border-bottom: 0;
  background: transparent;
}
.cc-chat-head-pill {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 7px 14px;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 4px 16px rgba(31,45,52,.06);
  width: max-content;
}
.cc-chat-workspace .cc-title { height: auto; padding: 0; border: 0; background: transparent; font-size: 15px; font-weight: 800; color: var(--text-1); }
.cc-chat-new-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 30px;
  padding: 0 12px;
  border: 0;
  border-radius: 8px;
  background: #eef4f8;
  color: #1f4e5f;
  font-size: 12.5px;
  font-weight: 700;
  cursor: pointer;
}
.cc-chat-new-btn:hover { background: #dfeaf1; }
.cc-chat-new-btn .ic { font-size: 15px; line-height: 1; }
/* ② 素材来源抽屉常驻：不再随 chatDrawerOpen 显隐，保持 272px 等高辅助面板 */
.cc-chat-workspace .cc-drawer { visibility: visible; }
/* ===== s106：六项修正（2026-10-28 用户反馈）===== */
/* ① 新建任务按钮：SVG 图标（对话气泡+加号）尺寸与文字对齐 */
.cc-chat-new-btn .ic { width: 16px; height: 16px; flex: none; }
/* ③ 上传文档加号按钮（composer 工具栏，ModeBuddy 同款圆形） */
.cc-plus-btn {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 8px;
  background: #eef4f8;
  color: #1f4e5f;
  font-size: 17px;
  font-weight: 500;
  line-height: 1;
  cursor: pointer;
  flex: none;
}
.cc-plus-btn:hover { background: #dfeaf1; }
.cc-plus-btn::after { display: none; }
.cc-plus-btn[data-tooltip]:hover::after { display: block; }
.cc-plus-btn[data-tooltip] { position: relative; }
.cc-plus-btn[data-tooltip]:hover::after {
  content: attr(data-tooltip);
  position: absolute;
  left: 50%;
  bottom: calc(100% + 7px);
  z-index: 70;
  transform: translateX(-50%);
  padding: 5px 8px;
  border-radius: 6px;
  background: #24343b;
  color: #fff;
  font-size: 11px;
  font-weight: 500;
  white-space: nowrap;
}
/* ④ 批量手动粘贴：容器收紧（参考对话创作 padding 节奏）+ ⑤ 粘贴框加大 */
.cc-batch-paste-wrap { padding: 10px 13px 6px; }
.cc-batch-paste-box {
  width: 100%;
  min-height: 150px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: #fff;
  color: var(--text-1);
  font: inherit;
  font-size: 12.5px;
  line-height: 1.7;
  resize: vertical;
  outline: none;
}
.cc-batch-paste-box:focus { border-color: #9bb4bf; box-shadow: 0 0 0 2px rgba(31,78,95,.08); }
/* ⑥ 模型与输出两下拉间距加大 */
/* s108 起由文件末尾 s108 块统一控制 output-grid */
/* ② 会话下拉贴近触发器：菜单包裹层顶部紧贴 header 底边，top 6px 即贴着「新对话」 */
.cc-sess-menu { top: 6px; }
/* ③⑤ 创作记录（对话+批量共用 .cc-table 表头）：表头与空态改白底黑字 */
#creation-tasks-card .cc-row.head { background: #fff; color: var(--text-1); font-size: 12px; }
#creation-tasks-card .cc-table { border: 0; }
#creation-tasks-card .cc-empty { color: var(--text-2); }
/* ④ 新建创作批次标题与选择素材面板左对齐：面板在 .cc-batch-grid 的 24px 内边距内，标题需再缩进等量 */
.cc-batch-page > .card-header { padding: 22px 24px 16px 48px; }
.cc-batch-page > .card-header .cc-title { font-size: 20px; font-weight: 800; }

/* ===== s107：批量创作两处间距修正（2026-10-28 用户反馈）===== */
/* s110：子导航 sticky 失效修复——.settings-layout 的 grid 拉伸让侧栏与内容等高，
   sticky 元素随整个 grid 行滚动到内容底部才停；改为 align-self:start + 固定高度吸附。 */
.settings-subnav { align-self: start; max-height: calc(100dvh - var(--topbar-h) - 32px); overflow-y: auto; }
.settings-layout { align-items: start; }
/* ① 模型/Word 两下拉：旧 s101 > div 规则已删（见 1799 注释），间距由 grid gap 控制 */
/* ===== s108：批量三控件横排 + 目录文案 + 要求框加大（2026-10-28 用户反馈）===== */
/* ① 模型/格式/保存目录三控件一横排；目录列稍宽（含「浏览」尾缀），目录提示移到整行下方 */
.cc-batch-output-grid { display: grid; grid-template-columns: 1.1fr 1fr 1.3fr; gap: 10px; }
.cc-batch-output-cell { min-width: 0; }
.cc-batch-output-cell .cc-picker { width: 100%; max-width: none; }
.cc-batch-output-cell .cc-trigger { width: 100%; }
.cc-batch-output-dir .cc-fmt-note { margin-top: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cc-batch-output-grid2 { display: none; }
.cc-batch-output-grid2 .cc-trigger-dir { width: auto; }
/* ③ 统一创作要求输入框加大 */
.cc-batch-brief { min-height: 170px; }
/* ② 素材库选择/手动粘贴页签条：参考对话创作收紧，不再全宽大灰条 */
.cc-batch-materials .cc-src-tabs { margin: 0 0 10px; }
.cc-batch-materials .cc-src-tab { flex: 1; padding: 6px 10px; font-size: 12px; font-weight: 600; color: var(--text-3); }
.cc-batch-materials .cc-src-tab.on { color: var(--text-1); font-weight: 700; }

/* ===== s109：通用设置·默认保存目录卡（2026-10-28 用户确认方案）===== */
.gs-dir-field { margin-bottom: 12px; }
.gs-dir-label { font-size: 12px; font-weight: 700; color: #556973; margin-bottom: 6px; }
.gs-dir-trigger { width: 100%; max-width: 420px; }
.gs-dir-hint { margin: 6px 0 0; font-size: 11.5px; color: var(--text-4); }
.gs-dir-notes { font-size: 12px; color: var(--text-2); line-height: 1.9; }
.gs-dir-notes b { display: block; margin-bottom: 2px; color: var(--text-1); font-size: 12.5px; }
.gs-dir-notes > div { color: var(--text-3); }
.gs-dir-notes > div b { display: inline; margin: 0; }

/* ============ siyuyunying 分发/分析/资产真实页面 v11 ============ */
.real-page-head { margin: 0 0 14px; display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; }
.real-page-head h1 { margin: 0 0 4px; color: var(--text-1); font-size: 24px; line-height: 1.2; }
.real-page-head p { margin: 0; color: var(--text-3); font-size: 13px; }
.real-page-actions { display: flex; align-items: center; gap: 8px; flex: none; }
.real-tabs { min-height: 34px; margin-bottom: 14px; display: flex; align-items: stretch; gap: 24px; border-bottom: 1px solid var(--border-light); overflow: visible; }
.real-tab { position: relative; min-height: 34px; padding: 0 0 8px; border: 0; border-bottom: 2px solid transparent; color: var(--text-3); background: transparent; font-size: 13px; white-space: nowrap; cursor: pointer; }
.real-tab:hover { color: var(--text-1); }
.real-tab.is-active { color: var(--brand-red); font-weight: 700; }
.real-tab.is-active::after { position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; content: ""; background: var(--brand-red); }
.real-tab b { margin-left: 5px; color: var(--text-4); font-size: 11px; font-weight: 500; }
.real-stat-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 22px; }
.real-stat { min-width: 0; min-height: 92px; padding: 15px 16px; border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.real-stat span { display: block; color: var(--text-3); font-size: 12px; font-weight: 600; }
.real-stat strong { display: block; margin-top: 5px; color: var(--text-1); font-size: 28px; line-height: 1.05; font-weight: 800; }
.real-stat small { display: block; margin-top: 7px; overflow: hidden; color: var(--text-4); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.real-stat.is-alert span, .real-stat.is-alert strong, .real-stat.is-alert small { color: #a32d2d; }
.real-analytics-toolbar, .real-dist-toolbar { min-height: 50px; margin-bottom: 14px; padding: 8px 12px; display: flex; align-items: center; gap: 10px; border: 1px solid var(--border-light); border-radius: 9px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.real-analytics-toolbar > span { flex: 1; min-width: 0; color: var(--text-4); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.real-segment { display: flex; gap: 2px; padding: 2px; border-radius: 6px; background: #f3f4f6; }
.real-segment button { min-height: 28px; padding: 0 11px; border: 0; border-radius: 4px; color: var(--text-3); background: transparent; font-size: 12px; cursor: pointer; }
.real-segment button.is-active { color: var(--brand-red); background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, .05); font-weight: 700; }
.real-trend-card, .real-insight-card, .real-high-card, .real-assets-table, .real-queue-table, .real-logs { overflow: hidden; }
.real-card-head { min-height: 48px; padding: 0 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid var(--border-light); }
.real-card-head b { color: var(--text-1); font-size: 14px; }
.real-card-head small { color: var(--text-4); font-size: 11px; font-weight: 400; }
.real-chart { height: 236px; padding: 18px 18px 8px; }
.real-chart svg { width: 100%; height: 100%; overflow: visible; }
.real-chart-grid { fill: none; stroke: #eceff2; stroke-width: 1; }
.real-chart-area { fill: rgba(200, 52, 44, .08); }
.real-chart-line { fill: none; stroke: var(--brand-red); stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.real-chart-point { fill: #fff; stroke: var(--brand-red); stroke-width: 2; }
.real-chart-label { fill: var(--text-4); font-size: 9px; }
.real-insight-card { margin-top: 14px; }
.real-insight-row { min-height: 82px; padding: 13px 16px; display: flex; align-items: flex-start; gap: 10px; border-bottom: 1px solid var(--border-light); }
.real-insight-row:last-child { border-bottom: 0; }
.real-insight-row > i { flex: none; padding-top: 2px; color: var(--brand-red); font-size: 11px; font-style: normal; font-weight: 800; }
.real-insight-row > div { min-width: 0; flex: 1; }
.real-insight-row b { display: block; color: var(--text-1); font-size: 12px; }
.real-insight-row p { margin: 5px 0 6px; color: var(--text-3); font-size: 11px; }
.real-insight-row em { flex: none; padding: 3px 8px; border-radius: 4px; color: #087b57; background: var(--success-bg); font-size: 10px; font-style: normal; }
.real-red-link { margin-left: 10px; padding: 0; border: 0; color: var(--brand-red); background: transparent; font-size: 11px; cursor: pointer; }
.real-analytics-bottom { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; margin-top: 14px; }
.real-bar-list { padding: 15px 16px 17px; display: grid; gap: 13px; }
.real-bar-list > div { display: grid; grid-template-columns: 58px minmax(0, 1fr) 42px; align-items: center; gap: 8px; color: var(--text-2); font-size: 11px; }
.real-bar-list i { height: 7px; overflow: hidden; border-radius: 4px; background: #f0f1f3; }
.real-bar-list i b { display: block; height: 100%; border-radius: inherit; background: #d7665f; }
.real-bar-list small { color: var(--text-4); font-size: 10px; text-align: right; }
.real-high-row { min-height: 62px; padding: 10px 16px; display: grid; grid-template-columns: 22px minmax(0, 1fr) 54px 34px; align-items: center; gap: 8px; border-bottom: 1px solid var(--border-light); }
.real-high-row:last-child { border-bottom: 0; }
.real-high-row > i { width: 20px; height: 20px; display: grid; place-items: center; border-radius: 5px; color: var(--brand-red); background: var(--brand-red-light); font-size: 10px; font-style: normal; }
.real-high-row > div { min-width: 0; }
.real-high-row b { display: block; overflow: hidden; color: var(--text-1); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.real-high-row small { display: block; margin-top: 3px; overflow: hidden; color: var(--text-4); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.real-high-row > strong { color: var(--text-1); font-size: 12px; text-align: right; }
.real-high-row > small:last-child { color: #087b57; text-align: right; }
.real-placeholder { min-height: 180px; padding-bottom: 16px; }
.real-placeholder p { padding: 18px 16px; color: var(--text-3); font-size: 13px; }
.real-assets-toolbar { min-height: 50px; margin-bottom: 14px; padding: 8px 12px; display: flex; align-items: center; gap: 8px; border: 1px solid var(--border-light); border-radius: 9px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.real-assets-toolbar > span { flex: 1; }
.real-assets-toolbar .search-box { min-width: 240px; }
.real-assets-table .data-table { min-width: 900px; }
/* s161：表头白底黑字（对齐来源中心 s158 标准；全站仅内容资产/草稿箱两处使用此类） */
.real-assets-table .data-table th { background: #fff; color: var(--text-1); }
/* s117：资产名称列固定宽度并内部换行，杜绝名称与右侧列重叠。
   s189 修正：s188 在行首插入复选框列后，:first-child 错命中复选框列（把 40px 勾选列撑到 26%/240px，整表错位）——名称列改 :nth-child(2)。 */
.real-assets-table .data-table th:nth-child(2), .real-assets-table .data-table td:nth-child(2) { min-width: 240px; width: 26%; }
/* s189：复选框列定宽（特异性 0,3,0 压过 .asset-col-check 单类 0,1,0，确保不被 table-layout:fixed 均分撑宽） */
.real-assets-table .data-table th.asset-col-check, .real-assets-table .data-table td.asset-col-check { width: 44px; min-width: 44px; max-width: 44px; padding: 0; text-align: center; }
.real-asset-name { display: flex; align-items: center; gap: 9px; min-width: 0; }
.real-asset-name > span { width: 30px; height: 30px; display: grid; flex: none; place-items: center; border-radius: 7px; color: var(--brand-red); background: var(--brand-red-light); font-size: 10px; font-weight: 800; }
.real-asset-name > div { min-width: 0; flex: 1; }
.real-link-button { display: block; max-width: 100%; overflow: hidden; padding: 0; border: 0; color: var(--text-1); background: transparent; font-size: 12px; font-weight: 700; text-align: left; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.real-link-button:hover { color: var(--brand-red); }
/* s117：类型列改为普通徽标，不再挤压名称列；s168 类型列放开 nowrap（多主题标签组需换行排布） */
.real-assets-table .data-table td:nth-child(3) { white-space: nowrap; }
/* s168：多主题标签组——竖排间距排布，杜绝多标签叠印（此前多行文本塞单标签 nowrap 溢出叠到来源列） */
.real-tag-group { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 4px; vertical-align: top; }
.real-tag-group .real-tag { max-width: 160px; overflow: hidden; text-overflow: ellipsis; }
.real-account-placeholder .real-empty { padding: 34px 22px; color: var(--text-2); font-size: 12.5px; line-height: 1.8; }
/* s118：状态指标可点击——整卡 hover 抬升、数字悬停变蓝；键盘可达 */
.real-dist-stat { cursor: pointer; transition: background .12s ease, transform .12s ease; }
.real-dist-stat:hover, .real-dist-stat:focus-visible { background: #f8fafc; outline: none; }
.real-dist-stat:hover strong, .real-dist-stat:focus-visible strong { color: #1d4ed8; }
.real-dist-stat.is-alert:hover strong, .real-dist-stat.is-alert:focus-visible strong { color: #1d4ed8; }
.real-dist-stat strong { transition: color .12s ease; }
/* s118：平台卡操作按钮组 */
.real-platform-ops { margin-top: 8px; display: flex; gap: 6px; flex-wrap: wrap; }
/* s118：新建分发弹窗草稿列表 */
.dist-new-list { margin-top: 12px; max-height: 46vh; overflow-y: auto; border: 1px solid var(--border-light); border-radius: 9px; }
.dist-new-row { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-bottom: 1px solid var(--border-light); cursor: pointer; }
.dist-new-row:last-child { border-bottom: 0; }
.dist-new-row:hover { background: #f8fafc; }
.dist-new-row input { flex: none; }
.dist-new-row .dist-new-main { min-width: 0; flex: 1; }
.dist-new-row b { display: block; overflow: hidden; color: var(--text-1); font-size: 12.5px; text-overflow: ellipsis; white-space: nowrap; }
.dist-new-row small { display: block; margin-top: 2px; overflow: hidden; color: var(--text-4); font-size: 10.5px; text-overflow: ellipsis; white-space: nowrap; }
.real-type-tag { display: inline-flex; min-height: 21px; padding: 0 7px; align-items: center; border-radius: 4px; color: #8a6c2e; background: var(--gold-light); font-size: 10px; white-space: nowrap; }
.real-tag { display: inline-flex; min-height: 21px; padding: 0 7px; align-items: center; border-radius: 4px; font-size: 10px; white-space: nowrap; }
.real-tag.is-green { color: #087b57; background: var(--success-bg); }.real-tag.is-red { color: #b42318; background: var(--danger-bg); }.real-tag.is-gold { color: #9a5c00; background: var(--warning-bg); }.real-tag.is-blue { color: #1d4ed8; background: var(--info-bg); }
/* s120：顶栏重构——删除大标题区，操作栏为页面首个元素：页签 + 分隔线 + 单行粗体视图名 + 新建分发 */
.real-dist-action-bar { min-height: 62px; margin-bottom: 14px; padding: 0 12px; display: flex; align-items: stretch; gap: 0; border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.real-dist-action-bar nav { display: flex; align-items: stretch; gap: 4px; }
.real-dist-tab { min-width: 120px; padding: 10px 14px 8px; display: flex; flex-direction: column; justify-content: center; gap: 2px; border: 0; border-bottom: 2px solid transparent; color: var(--text-2); background: transparent; text-align: left; cursor: pointer; }
.real-dist-tab b { font-size: 13px; }.real-dist-tab small { color: var(--text-4); font-size: 10px; }.real-dist-tab.is-active { color: var(--brand-red); border-bottom-color: var(--brand-red); font-weight: 700; }.real-dist-tab.is-active small { color: #b85a54; }
.real-dist-divider { width: 1px; height: 36px; margin: auto 14px; flex: none; background: var(--border-light); }
.real-dist-context { min-width: 0; flex: 1; display: flex; align-items: center; gap: 10px; }.real-dist-context b { overflow: hidden; color: var(--text-1); font-size: 14px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.real-dist-action-bar .real-page-actions { display: flex; align-items: center; }
/* s120：箭头增强——30px 灰底圆角方块，悬停红底红字，展开态红色 */
.real-expand { width: 30px; height: 30px; display: grid; place-items: center; border: 0; border-radius: 7px; color: var(--text-2); background: var(--bg-tag); font-size: 13px; cursor: pointer; transition: color .12s ease, background .12s ease; }
.real-expand:hover { color: var(--brand-red); background: var(--brand-red-light); }
.real-article.is-open .real-expand { color: var(--brand-red); }
.real-dist-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; margin-bottom: 14px; padding: 10px 12px; border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }.real-dist-stats > div { min-height: 72px; padding: 8px 14px; border-right: 1px solid var(--border-light); }.real-dist-stats > div:last-child { border-right: 0; }.real-dist-stats span,.real-dist-stats small { display: block; color: var(--text-3); font-size: 11px; }.real-dist-stats strong { display: block; margin: 3px 0; color: var(--text-1); font-size: 26px; line-height: 1.1; }.real-dist-stats .is-alert span,.real-dist-stats .is-alert strong,.real-dist-stats .is-alert small { color: #a32d2d; }
.real-dist-notice { min-height: 58px; margin-bottom: 14px; padding: 10px 12px; display: flex; align-items: flex-start; gap: 10px; border: 1px solid #dbe5fa; border-radius: 8px; background: var(--info-bg); color: #3d5f9e; font-size: 11px; }.real-dist-notice b { color: #274d91; font-size: 12px; }.real-dist-notice p { margin: 2px 0 0; }.real-dist-notice > div { flex: 1; }.real-dist-notice .button { flex: none; }
.real-article-list { overflow: hidden; border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }.real-article { border-bottom: 1px solid var(--border-light); }.real-article:last-child { border-bottom: 0; }.real-article-row { min-height: 64px; padding: 10px 14px; display: grid; grid-template-columns: 30px minmax(220px,1.7fr) minmax(120px,.75fr) minmax(130px,.75fr) 86px 30px; align-items: center; gap: 12px; }.real-article-type { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 6px; color: var(--brand-red); background: var(--brand-red-light); font-size: 10px; font-weight: 800; }.real-article-main { min-width: 0; }.real-article-main b { display: block; overflow: hidden; color: var(--text-1); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }.real-article-main small,.real-platform-chips small,.real-article-progress small { display: block; margin-top: 4px; overflow: hidden; color: var(--text-4); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }.real-platform-chips { min-width: 0; }.real-platform-chips i { width: 22px; height: 22px; margin-right: 4px; display: inline-grid; place-items: center; border-radius: 5px; color: var(--text-3); background: var(--bg-tag); font-size: 9px; font-style: normal; }.real-article-progress b { display: block; color: var(--text-1); font-size: 11px; }.real-article-detail { display: none; padding: 0 16px 14px 58px; }.real-article.is-open .real-article-detail { display: block; }.real-detail-head { min-height: 34px; display: flex; align-items: center; gap: 12px; border-bottom: 1px solid var(--border-light); color: var(--text-2); font-size: 11px; }.real-platform-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding-top: 10px; }.real-platform-grid > div { min-width: 0; padding: 10px; border: 1px solid var(--border-light); border-radius: 7px; }.real-platform-grid b,.real-platform-grid small { display: block; }.real-platform-grid small { margin: 6px 0 9px; color: var(--text-3); font-size: 10px; }
.real-account-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }.real-account-card { padding: 15px; }.real-account-card > div:first-child { display: flex; align-items: center; gap: 9px; }.real-account-card > div:first-child > span { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 7px; background: var(--bg-tag); font-weight: 800; }.real-account-card > div:first-child > div { min-width: 0; flex: 1; }.real-account-card b,.real-account-card small { display: block; }.real-account-card small { margin-top: 2px; color: var(--text-4); font-size: 10px; }.real-account-card em { font-style: normal; }.real-account-card dl { margin: 13px 0; padding: 10px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; border-radius: 7px; background: var(--bg-page); }.real-account-card dt { color: var(--text-4); font-size: 10px; }.real-account-card dd { margin: 2px 0 0; color: var(--text-2); font-size: 11px; }.real-account-card dl dt:nth-of-type(2) { grid-column: 1; }.real-account-card dl dd:nth-of-type(2) { grid-column: 2; grid-row: 2; }
.real-assets-table .table-wrap,.real-queue-table .table-wrap,.real-logs .table-wrap { overflow-x: auto; }.real-empty { padding: 42px 20px; color: var(--text-3); text-align: center; }
@media (max-width: 1000px) { .real-analytics-bottom,.real-account-grid { grid-template-columns: 1fr; }.real-platform-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 760px) { .real-page-head { display: block; }.real-page-actions { margin-top: 12px; }.real-stat-row,.real-dist-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }.real-dist-stats > div:nth-child(2) { border-right: 0; }.real-dist-stats > div:nth-child(n+3) { border-top: 1px solid var(--border-light); }.real-tabs,.real-dist-action-bar nav { gap: 16px; overflow-x: auto; }.real-assets-toolbar,.real-analytics-toolbar,.real-dist-toolbar { flex-wrap: wrap; }.real-assets-toolbar .search-box { width: 100%; }.real-article-row { grid-template-columns: 28px minmax(0,1fr) 28px; }.real-platform-chips,.real-article-progress,.real-article-row>.real-tag { display: none; }.real-article-detail { padding-left: 14px; }.real-platform-grid { grid-template-columns: 1fr; } }
/* ============ P1（s121）：逐平台回填行——每平台独立 状态/链接(选填)/时间/操作 ============ */
.real-pf-rows { display: flex; flex-direction: column; gap: 8px; padding-top: 10px; }
.real-pf-row { display: grid; grid-template-columns: 26px minmax(74px, auto) 96px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 9px 12px; border: 1px solid var(--border-light); border-radius: 8px; background: #fff; }
.real-pf-row:hover { border-color: #e2e5e9; }
.real-pf-row.is-failed { border-color: #f3c2be; background: #fffafa; }
.real-pf-logo { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 6px; color: var(--text-2); background: var(--bg-tag); font-size: 10px; font-weight: 700; }
.real-pf-logo.is-done { color: #087b57; background: var(--success-bg); }
.real-pf-logo.is-copied { color: #8a6c2e; background: var(--gold-light); }
.real-pf-logo.is-failed { color: #b42318; background: var(--danger-bg); }
.real-pf-name { min-width: 74px; overflow: hidden; color: var(--text-1); font-size: 12px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.real-pf-meta { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.real-pf-time { overflow: hidden; color: var(--text-4); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.real-pf-link { display: block; overflow: hidden; color: #2563eb; font-size: 10.5px; text-overflow: ellipsis; white-space: nowrap; }
.real-pf-link:hover { text-decoration: underline; }
.real-pf-fail { overflow: hidden; color: #b42318; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.real-pf-link-input { min-width: 0; width: 100%; padding: 5px 9px; border: 1px solid var(--border); border-radius: 6px; color: var(--text-1); background: #fff; font-size: 10.5px; outline: 0; }
.real-pf-link-input:focus { border-color: var(--brand-red); box-shadow: 0 0 0 2px var(--brand-red-light); }
.real-pf-link-input::placeholder { color: #b6bcc4; }
.real-pf-ops { display: flex; gap: 7px; align-items: center; justify-content: flex-end; }
.real-pf-row .button[disabled] { opacity: .55; cursor: default; }
.real-pf-derive { margin-top: 10px; padding: 8px 11px; border: 1px solid #eee0bf; border-radius: 7px; background: var(--gold-light); color: #785a1d; font-size: 10.5px; }
.real-pf-derive b { color: #8a6c2e; }
.real-pf-empty { padding: 14px; border: 1px dashed #e0e3e8; border-radius: 8px; color: var(--text-3); font-size: 11px; text-align: center; }
@media (max-width: 900px) { .real-pf-row { grid-template-columns: 26px minmax(0, 1fr) auto; grid-auto-rows: auto; row-gap: 8px; } .real-pf-row .real-tag { grid-column: 2; justify-self: start; } .real-pf-meta { grid-column: 1 / -1; } .real-pf-ops { grid-column: 1 / -1; justify-content: flex-start; } }
/* P1：平台小图钉状态色（行头 chips 联动明细状态） */
.real-platform-chips i.is-done { color: #087b57; background: var(--success-bg); }
.real-platform-chips i.is-alert { color: #b42318; background: var(--danger-bg); }
.real-platform-chips i.is-copied { color: #8a6c2e; background: var(--gold-light); }
/* ============ P2（s122）：平台总览条 + 发布记录页 + 分页页脚 ============ */
.real-pov-bar { margin: -4px 0 14px; padding: 12px 14px; display: flex; align-items: stretch; gap: 0; overflow-x: auto; border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
/* s149：总览条空态——新账号没有草稿数据时的引导 */
.real-pov-bar.is-empty { overflow: visible; }
.real-pov-empty { flex: 1; min-width: 0; padding: 6px 0; }
.real-pov-empty b { display: block; color: var(--text-1); font-size: 12.5px; }
.real-pov-empty small { display: block; margin-top: 3px; color: var(--text-3); font-size: 11px; line-height: 1.6; }
.real-pov-card { min-width: 128px; flex: 1; display: flex; flex-direction: column; gap: 6px; padding: 4px 14px; border: 0; border-right: 1px solid var(--border-light); border-radius: 8px; background: transparent; text-align: left; cursor: pointer; transition: background .12s; }
.real-pov-card:last-of-type { border-right: 0; }
.real-pov-card:hover { background: #f8fafc; }
.real-pov-head { display: flex; align-items: center; gap: 6px; }
.real-pov-ic { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 6px; color: var(--text-2); background: var(--bg-tag); font-size: 11px; font-weight: 700; font-style: normal; flex: none; }
.real-pov-head b { overflow: hidden; color: var(--text-1); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.real-pov-nums { display: flex; align-items: baseline; gap: 8px; }
.real-pov-nums .is-pend { display: inline-flex; align-items: baseline; gap: 4px; color: #b42318; }
.real-pov-nums .is-pend strong { font-size: 20px; font-weight: 800; line-height: 1; }
.real-pov-nums .is-pend small { font-size: 10px; }
.real-pov-nums .is-week { display: inline-flex; align-items: baseline; gap: 4px; color: #087b57; }
.real-pov-nums .is-week strong { font-size: 13px; font-weight: 700; line-height: 1; }
.real-pov-nums .is-week small { font-size: 10px; }
.real-pov-card.is-zero .is-pend strong { color: var(--text-4); }
.real-pov-foot { overflow: hidden; color: var(--text-4); font-size: 9.5px; text-overflow: ellipsis; white-space: nowrap; }
.real-pov-manage { flex: none; align-self: center; display: flex; flex-direction: column; gap: 6px; margin-left: 8px; padding-left: 14px; border-left: 1px solid var(--border-light); }
.real-pov-manage small { color: var(--text-4); font-size: 9.5px; white-space: nowrap; }
/* 发布记录页（方案A独立页签） */
.real-pub-head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; padding: 12px 14px; border-radius: 10px; background: #fff; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.real-pub-head-title b { color: var(--text-1); font-size: 13px; }
.real-pub-head-title small { display: block; margin-top: 2px; color: var(--text-4); font-size: 10px; }
.real-pub-head-stats { display: flex; gap: 14px; margin-left: 4px; padding-left: 16px; border-left: 1px solid var(--border-light); }
.real-pub-head-stats div { color: var(--text-4); font-size: 10px; }
.real-pub-head-stats b { display: block; margin-top: 2px; color: var(--text-1); font-size: 16px; }
.real-pub-head-stats .is-week b { color: #087b57; }
.real-pub-filter { display: flex; gap: 6px; flex-wrap: wrap; }
.real-pub-filter button { padding: 4px 11px; border: 1px solid var(--border); border-radius: 6px; color: var(--text-2); background: #fff; font-size: 10.5px; cursor: pointer; }
.real-pub-filter button.is-active { border-color: var(--brand-red); color: var(--brand-red); background: var(--brand-red-light); font-weight: 600; }
.real-pub-table .data-table td:nth-child(2) { max-width: 320px; }
.real-pub-title { padding: 0; border: 0; background: transparent; color: var(--text-1); font-size: 11px; font-weight: 600; text-align: left; cursor: pointer; }
.real-pub-title:hover { color: var(--brand-red); }
.real-pub-link { display: inline-block; max-width: 240px; overflow: hidden; color: #2563eb; font-size: 10.5px; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
.real-pub-link:hover { text-decoration: underline; }
.real-pub-link.is-empty { color: var(--text-4); }
.real-pub-ops { display: flex; gap: 7px; align-items: center; white-space: nowrap; }
.real-pub-note { margin-top: 12px; padding: 10px 14px; border: 1px solid var(--border-light); border-radius: 8px; background: #f9fafb; color: var(--text-3); font-size: 10.5px; }
/* 分页页脚（文章列表与发布记录共用） */
.real-article-pager { min-height: 50px; padding: 10px 14px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; border-top: 1px solid var(--border-light); background: #fbfcfd; color: var(--text-4); font-size: 10.5px; }
.real-pager-info b { color: var(--text-2); font-weight: 600; }
.real-page-size { display: flex; align-items: center; gap: 5px; }
.real-page-size select { padding: 3px 6px; border: 1px solid var(--border); border-radius: 6px; color: var(--text-2); background: #fff; font-size: 10.5px; }
.real-page-buttons { display: flex; gap: 4px; align-items: center; margin-left: auto; }
.real-page-buttons button { min-width: 26px; height: 26px; padding: 0 6px; border: 1px solid var(--border); border-radius: 5px; color: var(--text-2); background: #fff; font-size: 10.5px; cursor: pointer; }
.real-page-buttons button:hover { border-color: var(--brand-red); color: var(--brand-red); }
.real-page-buttons button.is-on { border-color: var(--brand-red); background: var(--brand-red); color: #fff; font-weight: 600; }
.real-page-buttons button:disabled { opacity: .4; cursor: not-allowed; }
.real-page-ellipsis { border: 0; background: transparent; color: var(--text-4); }
/* 发布记录页签绿点 */
.real-pub-dot { display: inline-block; width: 6px; height: 6px; margin-left: 5px; border-radius: 50%; background: #49bb7b; vertical-align: 1px; }
/* ============ P5（s125）：失败重试——↻重试按钮 + 金色重试历史提示 ============ */
.real-pf-retry { border-color: #f0c8c4; color: var(--brand-red); background: #fff; }
.real-pf-retry:hover { border-color: var(--brand-red); background: var(--brand-red-light); }
.real-pf-retry:disabled { opacity: .45; cursor: not-allowed; }
.real-pf-retry-note { display: block; width: fit-content; padding: 2px 7px; border-radius: 4px; background: var(--gold-light); color: #9a5c00; font-size: 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
/* ============ P6（s126）：平台账号页公众号卡 + 推送草稿箱 ============ */
.real-accounts-wrap { max-width: 860px; }
.real-mp-card { overflow: hidden; margin-bottom: 14px; }
.real-mp-title { min-width: 0; flex: 1; }
.real-mp-title b { display: block; color: var(--text-1); font-size: 13px; }
.real-mp-title small { display: block; margin-top: 2px; color: var(--text-4); font-size: 10px; }
.real-mp-info { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; padding: 12px 16px; border-bottom: 1px solid var(--border-light); }
.real-mp-info > div { padding: 2px 12px; border-right: 1px solid var(--border-light); }
.real-mp-info > div:first-child { padding-left: 0; }
.real-mp-info > div:last-child { border-right: 0; }
.real-mp-info span { display: block; color: var(--text-4); font-size: 9.5px; }
.real-mp-info b { display: block; margin-top: 3px; overflow: hidden; color: var(--text-1); font-size: 11.5px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.real-mp-info b.ok { color: #087b57; }
.real-mp-info b.bad { color: #b42318; }
.real-mp-body { padding: 14px 16px; }
/* s144：.form-input 此前没有任何 CSS 定义 → 浏览器默认直角方框（用户截图问题 1/3）。
   统一补齐：8px 圆角 + 品牌 focus 环，与全站 .batch-custom input 等同风格。 */
.form-input { width: 100%; box-sizing: border-box; min-height: 34px; padding: 7px 11px; border: 1px solid var(--border); border-radius: 8px; background: #fff; color: var(--text-1); font: inherit; font-size: 12.5px; outline: none; transition: border-color .15s, box-shadow .15s; }
textarea.form-input { resize: vertical; line-height: 1.6; }
.form-input:focus { border-color: var(--brand-red); box-shadow: 0 0 0 2px rgba(200, 52, 44, .1); }
.form-input::placeholder { color: var(--text-4); }
/* s144：form-hint 同样补定义（此前裸奔，各处字号行高不一致） */
.form-hint { color: var(--text-3); font-size: 11.5px; line-height: 1.7; }
.form-hint b { color: var(--text-2); }
.real-mp-form-row { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 10px; align-items: center; margin-bottom: 11px; }
.real-mp-form-row label { color: var(--text-2); font-size: 11.5px; text-align: right; }
/* s144 问题 3：编辑态「用途说明」独占一行、与输入框左缘对齐，不再悬在中间看着乱 */
.real-mp-form-row.align-top { align-items: start; }
.real-mp-form-row.align-top .form-hint { padding-top: 8px; }
.real-mp-secret-masked { display: inline-flex; align-items: center; gap: 8px; padding: 5px 10px; border: 1px solid var(--border); border-radius: 6px; background: #f8fafc; color: var(--text-2); font-size: 11px; }
.real-mp-error { margin-top: 4px; padding: 8px 11px; border: 1px solid #f3c2be; border-radius: 7px; background: #fffafa; color: #b42318; font-size: 10.5px; }
.real-mp-actions { display: flex; gap: 8px; align-items: center; margin-top: 4px; }
.real-mp-actions-note { margin-right: auto; color: var(--text-4); font-size: 10px; }
/* s144 问题 2：小红书已保存态「更多操作」弹窗内的维护项列表 */
.real-xhs-more-list { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.real-xhs-more-item { display: flex; align-items: center; gap: 12px; padding: 11px 13px; border: 1px solid var(--border-light); border-radius: 9px; background: #fbfcfd; }
.real-xhs-more-item > div { flex: 1; min-width: 0; }
.real-xhs-more-item b { display: block; color: var(--text-1); font-size: 12.5px; }
.real-xhs-more-item small { display: block; margin-top: 2px; color: var(--text-3); font-size: 11px; line-height: 1.5; }
.real-xhs-more-item.is-danger { background: #fffbfb; border-color: #f6d5d3; }
.real-xhs-more-item .button { flex: none; }
/* s144 问题 4：本机执行器配对区——标题/说明/按钮同一水平线，去掉 label 左侧空白 */
.runner-pair-intro { display: flex; align-items: center; gap: 12px; margin-bottom: 11px; }
.runner-pair-intro b { flex: none; color: var(--text-1); font-size: 12.5px; }
.runner-pair-intro span { flex: 1; min-width: 0; color: var(--text-3); font-size: 11px; line-height: 1.6; }
.runner-pair-intro .button { flex: none; }
.real-other-platforms { padding: 14px 16px; }
.real-other-platforms b { color: var(--text-1); font-size: 12px; }
.real-other-platforms p { margin-top: 6px; color: var(--text-3); font-size: 10.5px; line-height: 1.8; }
.real-pf-wechat-push { border-color: #a7c4fb; color: #1d4ed8; background: #fff; }
.real-pf-wechat-push:hover { border-color: #1d4ed8; background: var(--info-bg); }
.real-pf-row.is-pushed { border-color: #c7d7f5; background: #f8fbff; }
.real-pf-logo.is-pushed { color: #1d4ed8; background: var(--info-bg); }
.real-platform-chips i.is-pushed { color: #1d4ed8; background: var(--info-bg); }
/* ============ P6.5（s128）：内容资产页——真实分页/数据驱动筛选/同步记录/批量同步 ============ */
.assets-pager { min-height: 50px; padding: 10px 14px; display: flex; align-items: center; gap: 12px; flex-wrap: wrap; background: #fbfcfd; color: var(--text-4); font-size: 10.5px; border-radius: 0 0 10px 10px; box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.assets-pager b { color: var(--text-2); font-weight: 600; }
.assets-pager .page-size { display: flex; align-items: center; gap: 5px; }
.assets-pager .page-size select { padding: 3px 6px; border: 1px solid var(--border); border-radius: 6px; color: var(--text-2); background: #fff; font-size: 10.5px; }
.assets-pager .real-page-buttons { display: flex; gap: 4px; align-items: center; margin-left: auto; }
.assets-pager .real-page-buttons button { min-width: 26px; height: 26px; padding: 0 6px; border: 1px solid var(--border); border-radius: 5px; color: var(--text-2); background: #fff; font-size: 10.5px; cursor: pointer; }
.assets-pager .real-page-buttons button:hover { border-color: var(--brand-red); color: var(--brand-red); }
.assets-pager .real-page-buttons button.on { border-color: var(--brand-red); background: var(--brand-red); color: #fff; font-weight: 600; }
.assets-pager .real-page-buttons button:disabled { opacity: .4; cursor: not-allowed; }
.real-sync-list { padding: 6px 16px 12px; }
.real-sync-row { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--border-light); }
.real-sync-row:last-child { border-bottom: 0; }
.real-sync-row .real-sync-main { min-width: 0; flex: 1; }
.real-sync-row b { display: block; overflow: hidden; color: var(--text-1); font-size: 11.5px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.real-sync-row small { display: block; margin-top: 3px; overflow: hidden; color: var(--text-4); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
/* ============ P3（s127）：发布入口统一——跳转定位高亮 + AI 推荐角标 ============ */
.real-article.is-highlight { background: #fffdf6; animation: realHighlightPulse 1.6s ease 2; }
.real-article.is-highlight .real-article-row { border-left: 3px solid var(--gold); }
/* s187 分发中心列表改造：复选框列 + 更新时间独立列 + 行尾悬停操作组 + 表头行。
   原 grid 6 列（30px 图标/标题/平台/进度/状态/展开）→ 8 列（复选框/标题/平台/进度/时间/状态/操作/展开），
   时间从标题 small 迁出（用户钦定去小字+独立列）。 */
.real-article-row { grid-template-columns: 30px minmax(200px,1.55fr) minmax(110px,.7fr) minmax(120px,.7fr) 110px 86px 64px 26px; }
.real-article-head { margin: 12px 0 0; border: 1px solid var(--border-light); border-radius: 10px 10px 0 0; background: #f7fafb; padding: 8px 14px; display: grid; grid-template-columns: 30px minmax(200px,1.55fr) minmax(110px,.7fr) minmax(120px,.7fr) 110px 86px 64px 26px; align-items: center; gap: 12px; color: var(--text-3); font-size: 11px; font-weight: 700; }
.real-article-head + .real-article-list { border-radius: 0 0 10px 10px; }
.dist-row-check { display: inline-flex; align-items: center; cursor: pointer; }
.dist-row-check input { width: 15px; height: 15px; cursor: pointer; accent-color: var(--brand-red); }
.dist-select-all { display: inline-flex; align-items: center; }
.dist-select-all input { width: 15px; height: 15px; cursor: pointer; accent-color: var(--brand-red); }
.real-article-time { color: var(--text-3); font-size: 11px; white-space: nowrap; }
.dist-row-ops { display: inline-flex; gap: 4px; align-items: center; opacity: 0; transition: none; }
.real-article-row:hover .dist-row-ops { opacity: 1; }
.dist-op-del { color: #c8342c; }
.dist-op-del:hover { background: #fdf0ef; }
/* 空列表时表头行不悬空（无列表头圆角收敛） */
.real-article-list:only-child { border-radius: 10px; }
@media (max-width: 760px) { .real-article-row, .real-article-head { grid-template-columns: 28px minmax(0,1fr) 64px 26px; } .real-article-head .dist-head-platforms, .real-article-head .dist-head-progress, .real-article-head .dist-head-time, .real-article-head .dist-head-status, .real-article-head .dist-head-ops, .real-article-time, .dist-row-ops { display: none; } }

/* ============================================================
@keyframes realHighlightPulse { 0% { background: #fff3d6; } 50% { background: #fffdf6; } 100% { background: #fffdf6; } }
.real-ai-badge { display: inline-block; margin-left: 8px; padding: 1px 6px; border-radius: 4px; background: var(--gold-light); color: #8a6c2e; font-size: 9px; font-weight: 600; white-space: nowrap; }
@media (max-width: 900px) { .real-mp-info { grid-template-columns: 1fr 1fr; } .real-mp-info > div { border-right: 0; border-bottom: 1px solid var(--border-light); } .real-mp-form-row { grid-template-columns: 1fr; } .real-mp-form-row label { text-align: left; } }
@media (max-width: 900px) { .real-pov-bar { flex-wrap: wrap; gap: 8px; } .real-pov-card { min-width: 46%; border-right: 0; border-bottom: 1px solid var(--border-light); } .real-pov-manage { display: none; } .real-pub-head-stats { margin-left: 0; padding-left: 0; border-left: 0; } }

/* ═══ P7.5 内容自动化 + 草稿箱（s129） ═══ */
.auto-card-list { display: flex; flex-direction: column; gap: 12px; }
.auto-card { border: 1px solid var(--line-soft, #e3e8ef); border-radius: 12px; padding: 14px 18px; background: #fff; }
.auto-card.is-open { border-color: var(--gold, #c9a45c); box-shadow: 0 2px 10px rgba(201, 164, 92, 0.15); }
.auto-card-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.auto-card-title { background: none; border: none; padding: 0; cursor: pointer; }
.auto-card-title strong { font-size: 14px; color: var(--text, #26313e); }
.auto-card-meta { display: flex; gap: 16px; color: var(--faint, #7a8694); font-size: 12px; margin-top: 7px; flex-wrap: wrap; }
.auto-card-meta b { color: var(--text, #26313e); font-weight: 600; }
.auto-card .chips { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 7px; }
.auto-card .chips .chip { font-size: 11px; background: var(--panel, #f5f7fa); border: 1px solid var(--line-soft, #e3e8ef); padding: 2px 9px; border-radius: 999px; color: var(--faint, #7a8694); }
.auto-card-actions { display: flex; gap: 6px; justify-content: flex-end; margin-top: 10px; flex-wrap: wrap; }
.auto-card-error { margin-top: 9px; background: var(--danger-bg, #fdeeed); color: #b42318; font-size: 12px; border-radius: 7px; padding: 7px 12px; }
.run-history { margin-top: 12px; border-top: 1px dashed var(--line-soft, #e3e8ef); padding-top: 12px; }
.run-history h4 { font-size: 12.5px; margin-bottom: 9px; color: var(--faint, #7a8694); font-weight: 600; }
.run-row { border: 1px solid var(--line-soft, #e3e8ef); border-radius: 10px; padding: 10px 14px; margin-bottom: 8px; background: #fcfdfe; }
.run-row.failed { background: #fffafa; border-color: #f3c8c5; }
.run-line { display: flex; align-items: center; gap: 10px; font-size: 12.5px; flex-wrap: wrap; }
.run-line time { color: var(--faint, #7a8694); font-size: 12px; }
.run-outputs { margin-top: 8px; display: flex; flex-direction: column; gap: 6px; }
.output-row { display: flex; align-items: center; gap: 8px; font-size: 12px; flex-wrap: wrap; }
.output-label { color: var(--faint, #7a8694); min-width: 52px; }
.doc-chip { display: inline-flex; align-items: center; gap: 4px; background: #fff; border: 1px solid var(--line-soft, #e3e8ef); padding: 3px 10px; border-radius: 7px; font-size: 11.5px; }
/* 五段式弹窗 */
.auto-modal-sections { display: flex; flex-direction: column; gap: 12px; max-height: 62vh; overflow: auto; padding-right: 4px; }
.a-section { border: 1px solid var(--line-soft, #e3e8ef); border-radius: 10px; padding: 12px 16px; display: flex; flex-direction: column; gap: 10px; }
.a-section-dest { border-color: var(--gold, #c9a45c); background: #fffdf6; }
.a-section-title { font-size: 12.5px; font-weight: 700; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.a-section-title .idx { background: var(--panel, #f5f7fa); border: 1px solid var(--line-soft, #e3e8ef); color: var(--faint, #7a8694); width: 18px; height: 18px; border-radius: 50%; font-size: 11px; display: inline-flex; align-items: center; justify-content: center; }
.a-section-title .opt { font-size: 11px; color: var(--faint, #7a8694); font-weight: 400; }
.auto-mode-chips, .auto-output-chips { display: flex; gap: 10px; }
.auto-mode-chip, .auto-output-chip { flex: 1; border: 1.5px solid var(--line-soft, #e3e8ef); border-radius: 10px; padding: 9px 13px; font-size: 12px; background: #fff; cursor: pointer; text-align: left; }
.auto-mode-chip b, .auto-output-chip b { display: block; font-size: 12.5px; margin-bottom: 3px; }
.auto-mode-chip small, .auto-output-chip small { color: var(--faint, #7a8694); font-size: 11px; }
.auto-mode-chip.is-active, .auto-output-chip.is-active { border-color: var(--gold, #c9a45c); background: var(--gold-light, #faf4e6); }
.auto-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; }
.auto-target-row { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; }
.auto-target-row .auto-account-select { flex: 1; }
.dest-note { background: var(--success-bg, #e8f7ef); color: #087b57; font-size: 12px; border-radius: 8px; padding: 8px 12px; }
.auto-check-line { display: flex; align-items: center; gap: 8px; font-size: 12.5px; flex-wrap: wrap; }
.auto-check-line small { color: var(--faint, #7a8694); font-size: 11px; width: 100%; padding-left: 22px; }
/* 草稿箱 */
.draft-stat-row { grid-template-columns: repeat(5, 1fr); display: grid; gap: 12px; margin-bottom: 14px; }
.real-stat.is-alert strong { color: var(--brand-red, #c8342c); }
.src-tag { font-size: 10.5px; border-radius: 4px; padding: 1px 7px; font-weight: 600; white-space: nowrap; }
.src-tag.auto { background: var(--info-bg, #eef3fe); color: #2f6fed; }
.src-tag.chat { background: var(--panel, #f5f7fa); color: var(--faint, #7a8694); border: 1px solid var(--line-soft, #e3e8ef); }
.ops-col { min-width: 240px; }
.ops-col .ops { display: flex; gap: 4px; flex-wrap: nowrap; }
.ops-col .ops .button { white-space: nowrap; flex-shrink: 0; }
.real-page-button.is-active { background: var(--brand-red, #c8342c); color: #fff; border-color: var(--brand-red, #c8342c); }
.red-link { color: #b42318; }
@media (max-width: 900px) {
  .draft-stat-row { grid-template-columns: repeat(2, 1fr); }
  .auto-mode-chips, .auto-output-chips { flex-direction: column; }
  .ops-col { min-width: 180px; }
}

/* ═══ v21：自动化页顶部操作栏 + 全站下拉浮层组件 ═══ */
.ops-topbar { display: flex; align-items: center; gap: 12px; padding: 10px 14px; margin-bottom: 16px; border-radius: var(--cf-panel-radius, 10px); background: var(--bg-card, #fff); box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.ops-topbar .title-block { display: flex; align-items: baseline; gap: 10px; flex: 0 0 auto; min-width: 0; }
.ops-topbar .title-block h1 { margin: 0; font-size: 17px; font-weight: 700; letter-spacing: .5px; color: var(--text-1, #26313e); }
.ops-topbar .title-block small { color: var(--text-4, #7a8694); font-size: 11.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ops-topbar .spacer { flex: 1; }
.ops-topbar .count-chip { color: var(--text-4, #7a8694); font-size: 12px; white-space: nowrap; }
.btn-new { height: 32px; padding: 0 16px; border: 0; border-radius: 8px; background: var(--brand-red, #c8342c); color: #fff; font-size: 12.5px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.btn-new:hover { filter: brightness(1.06); }
/* 自定义下拉（修复原生 select 浮层透明盖住本体）——全站组件，其他页面下拉可复用 */
.select-wrap { position: relative; display: inline-block; }
.select-trigger { height: 32px; min-width: 112px; padding: 0 12px; display: inline-flex; align-items: center; justify-content: space-between; gap: 8px; border: 1px solid var(--border, #e3e8ef); border-radius: 8px; background: #fff; color: var(--text-2, #26313e); font-size: 12px; cursor: pointer; }
.select-trigger .caret { color: var(--text-4, #7a8694); font-size: 10px; }
.select-trigger:hover, .select-trigger.is-open { border-color: var(--brand-red, #c8342c); }
.select-pop { position: absolute; top: calc(100% + 4px); left: 0; z-index: 30; min-width: 148px; padding: 4px; border-radius: 9px; background: #fff; border: 1px solid var(--border, #e3e8ef); box-shadow: 0 6px 20px rgba(20, 16, 14, .13); }
.select-pop .pop-arrow { position: absolute; top: -5px; left: 24px; width: 9px; height: 9px; background: #fff; border-left: 1px solid var(--border, #e3e8ef); border-top: 1px solid var(--border, #e3e8ef); transform: rotate(45deg); }
.select-pop > div:not(.pop-arrow) { padding: 7px 12px; font-size: 12px; border-radius: 6px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 12px; color: var(--text-2, #26313e); }
.select-pop > div:not(.pop-arrow):hover { background: var(--bg-page, #f5f7fa); }
.select-pop > div.on { color: var(--brand-red, #c8342c); font-weight: 600; }
.select-pop .opt-count { color: var(--text-4, #7a8694); font-size: 11px; font-weight: 400; }
@media (max-width: 900px) {
  .ops-topbar { flex-wrap: wrap; }
  .ops-topbar .title-block { flex: 1 1 100%; }
}

/* ═══ v22（s131）：ops-topbar 白描边按钮（导出分析等次级动作，32px 与栏内控件等高） ═══ */
.btn-ghost2 { height: 32px; padding: 0 14px; border: 1px solid var(--border, #e3e8ef); border-radius: 8px; background: #fff; color: var(--text-2, #26313e); font-size: 12px; cursor: pointer; white-space: nowrap; }
.btn-ghost2:hover { border-color: var(--brand-red, #c8342c); color: var(--brand-red, #c8342c); }

/* v134：小红书保存成功后的只读配置态 */
.real-xhs-saved { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 12px 14px; border: 1px solid var(--border-light); border-radius: 8px; background: var(--success-bg); color: #087b57; font-size: 12px; }
.real-xhs-saved b { font-weight: 700; white-space: nowrap; }
.real-xhs-saved span { flex: 1; min-width: 220px; color: #356b51; }
.real-xhs-saved .button { flex: 0 0 auto; white-space: nowrap; }

/* s140：小红书校验结论的中性提示（「暂无法确认」不是错误，不用红色） */
.real-mp-note { margin-top: 4px; padding: 8px 11px; border-radius: 7px; font-size: 10.5px; line-height: 1.6; }
.real-mp-note.is-warn { border: 1px solid #f0dcc0; background: #fffbf3; color: #8a5a12; }

/* ═══ s141：本机执行器 ═══ */
.runner-code-box { display: flex; align-items: baseline; gap: 10px; padding: 10px 14px; border: 1px dashed #d9c08a; border-radius: 9px; background: #fffdf6; margin-bottom: 8px; }
.runner-code-box b { font-size: 22px; letter-spacing: 6px; color: #8a5a12; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.runner-code-box small { color: var(--faint); font-size: 11px; }
.runner-cmd { background: #1a1614; color: #e9e2d8; border-radius: 8px; padding: 9px 12px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11.5px; margin-bottom: 8px; overflow-x: auto; white-space: nowrap; }
.runner-tasks { margin-top: 10px; border-top: 1px dashed var(--line-soft, #e3e8ef); padding-top: 9px; display: flex; flex-direction: column; gap: 6px; }
.runner-task-row { display: flex; align-items: center; gap: 8px; font-size: 11.5px; }
.runner-task-row b { font-weight: 600; }
.runner-task-row small { color: var(--faint); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.runner-task-row time { color: var(--faint); font-size: 10.5px; }
.real-runner-btn { border-color: #d9c08a !important; background: #fffdf6 !important; color: #8a5a12 !important; font-weight: 600; }
.real-runner-btn:hover { background: var(--gold-light, #faf4e6) !important; }
.real-pf-row.is-filled { border-color: #e6d3a8; background: #fffdf6; }
.real-pf-row.is-queued { border-style: dashed; }
/* ═══ s147：多设备列表 ═══ */
.runner-devices { margin-top: 10px; border-top: 1px dashed var(--line-soft, #e3e8ef); padding-top: 9px; display: flex; flex-direction: column; gap: 7px; }
.runner-device-row { display: flex; align-items: center; gap: 10px; padding: 8px 11px; border: 1px solid var(--border-light); border-radius: 9px; background: #fbfcfd; }
.runner-device-main { flex: 1; min-width: 0; }
.runner-device-main b { display: block; color: var(--text-1); font-size: 12px; }
.runner-device-main small { display: block; margin-top: 2px; color: var(--text-3); font-size: 10.5px; }
/* ═══ s155：价值分五档评分锚点（判别规则面板只读说明卡） ═══ */
.vs-anchor-card { border: 1px solid var(--border-light); border-radius: 8px; padding: 11px 13px; }
.vs-anchor-card .vs-band { display: flex; align-items: flex-start; gap: 10px; padding: 5px 0; }
.vs-anchor-card .bd { flex: 0 0 58px; text-align: center; padding: 3px 0; border-radius: 7px; font-size: 12.5px; font-weight: 800; font-family: Consolas, Monaco, monospace; color: #fff; }
.vs-anchor-card .bd-90 { background: linear-gradient(135deg, #059669, #34d399); }
.vs-anchor-card .bd-70 { background: linear-gradient(135deg, #2563eb, #60a5fa); }
.vs-anchor-card .bd-50 { background: linear-gradient(135deg, #c9a45c, #dcb97e); }
.vs-anchor-card .bd-30 { background: linear-gradient(135deg, #c2410c, #f87150); }
.vs-anchor-card .bd-0 { background: linear-gradient(135deg, #6b7280, #9ca3af); }
.vs-anchor-card .vs-desc { flex: 1; min-width: 0; font-size: 11.5px; color: var(--text-3); line-height: 1.55; }
.vs-anchor-card .vs-desc b { color: var(--text-2); }
.vs-anchor-card .vs-dims { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 9px; padding-top: 9px; border-top: 1px dashed var(--border-light); }
.vs-anchor-card .vs-dim { border: 1px solid var(--border-light); background: #fafbfc; border-radius: 8px; padding: 8px 10px; }
.vs-anchor-card .vs-dim b { display: block; font-size: 11.5px; color: var(--text-2); margin-bottom: 3px; }
.vs-anchor-card .vs-dim p { margin: 0; font-size: 10.5px; color: var(--text-3); line-height: 1.5; }
.vs-anchor-card .vs-note { margin-top: 9px; font-size: 10.5px; color: var(--text-3); }
@media (max-width: 860px) { .vs-anchor-card .vs-dims { grid-template-columns: repeat(2, 1fr); } }
/* ═══ s156：AI 判别断点续跑（续跑横幅 + 执行中卡片 + 弹窗提示行） ═══ */
.judge-resume-card, .judge-running-card { margin-bottom: 12px; }
.judge-resume { display: flex; align-items: center; gap: 12px; }
.judge-resume .jr-ic, .judge-running .jr-ic { flex: 0 0 34px; width: 34px; height: 34px; border-radius: 8px; background: var(--brand-red-soft, #faeeec); color: var(--brand-red, #c8342c); display: inline-flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 700; }
.judge-resume .jr-ic-sm, .batch-resume-hint .jr-ic-sm { flex: 0 0 26px; width: 26px; height: 26px; font-size: 12px; }
.judge-resume .jr-main { flex: 1; min-width: 0; }
.judge-resume .jr-main b { display: block; font-size: 12.5px; color: var(--text-1, #1a1a1a); }
.judge-resume .jr-main p { margin: 3px 0 0; font-size: 11px; color: var(--text-3, #9ca3af); }
.jr-prog { height: 7px; border-radius: 4px; background: var(--border-light, #eef0f2); overflow: hidden; margin: 7px 0 5px; }
.jr-prog-fill { height: 100%; border-radius: 4px; background: var(--brand-red, #c8342c); transition: width .3s ease; }
.jr-actions { display: flex; gap: 8px; flex: 0 0 auto; }
.judge-running { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.judge-running b { font-size: 12.5px; color: var(--text-1, #1a1a1a); }
.judge-running .jr-scope { font-size: 11px; color: var(--text-3, #9ca3af); }
.judge-running .jr-stat { font-size: 11.5px; color: var(--text-2, #4b5563); font-family: Consolas, Monaco, monospace; }
.judge-running .jr-prog-main { flex: 1 1 140px; min-width: 120px; margin: 0; }
.judge-running .jr-eta { font-size: 10.5px; color: var(--text-3, #9ca3af); }
.jr-spin { flex: 0 0 14px; width: 14px; height: 14px; border: 2px solid var(--border-light, #eef0f2); border-top-color: var(--brand-red, #c8342c); border-radius: 50%; animation: jr-spin-rotate 1s linear infinite; }
@keyframes jr-spin-rotate { to { transform: rotate(360deg); } }
.jr-hint { margin: 6px 0 0; font-size: 10.5px; color: var(--text-3, #9ca3af); }
.batch-resume-hint { display: flex; align-items: flex-start; gap: 9px; border: 1px solid #f3c9c5; background: #fffafa; border-radius: 8px; padding: 9px 11px; margin-bottom: 12px; }
.batch-resume-hint b { display: block; font-size: 12px; color: var(--text-1, #1a1a1a); }
.batch-resume-hint p { margin: 2px 0 0; font-size: 11px; color: var(--text-3, #9ca3af); }
/* ═══ s157：分级入库策略（三色态下拉 + 目标明细展开区） ═══ */
.ip-col { min-width: 150px; }
/* s157d：表头取消浅橙高亮（用户反馈：与周边表头不一致；强调色只该用于临时引导，不该永久留着） */
.ingest-mode-cell { display: inline-flex; align-items: center; gap: 5px; position: relative; }
/* s158b：文字真居中（用户反馈仍偏左）——根因是 padding 右 22px（给已删除的原生箭头预留）左 9px 不对称，
   text-align-last 管不了 padding 差；改对称 padding 12px 后文字几何居中。 */
.ingest-mode-select { appearance: none; -webkit-appearance: none; border: 1px solid var(--border-light, #e2e5e9); border-radius: 6px; padding: 4px 12px; font-size: 11.5px; color: var(--text-1, #1a1a1a); background-color: #fff; background-image: none; cursor: pointer; font-weight: 600; text-align: center; text-align-last: center; }
.ingest-mode-select.im-sm { padding: 3px 10px; font-size: 10.5px; }
.ingest-mode-select.im-judge { color: #1d4ed8; border-color: #bfdbfe; background-color: #f4f8ff; }
.ingest-mode-select.im-direct { color: #047857; border-color: #a7f3d0; background-color: #f0fdf8; }
.ingest-mode-select.im-off { color: #6b7280; border-color: var(--border-light, #e2e5e9); background-color: #f6f7f8; }
/* s157c：原「跟随」角标样式已按极简原则移除（用户反馈看不懂，且 option 文案已表达默认态） */
.im-expand { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border: 1px solid var(--border-light, #e2e5e9); border-radius: 5px; background: #fff; color: var(--text-3, #9ca3af); cursor: pointer; padding: 0; transition: transform .15s ease, color .15s ease; }
.im-expand:hover { color: var(--text-1, #1a1a1a); border-color: var(--text-3, #b8bec6); }
.im-expand.is-open { transform: rotate(90deg); color: var(--brand-red, #c8342c); border-color: #f3c9c5; background: #fffafa; }
tr.ingest-expand-row > td.ingest-expand-cell { background: #fbfcfd; padding: 10px 14px 12px 34px; }
.ingest-expand-loading { font-size: 11.5px; color: var(--text-3, #9ca3af); }
.ingest-expand-body { border: 1px dashed var(--border-light, #dde1e6); border-radius: 8px; padding: 10px 12px; }
.iet-header { display: flex; align-items: baseline; gap: 10px; margin-bottom: 8px; }
.iet-header > span:first-child { font-size: 12px; font-weight: 700; color: var(--text-1, #1a1a1a); }
.iet-hint { font-size: 10.5px; color: var(--text-3, #9ca3af); }
.iet-binding { margin-bottom: 8px; }
.iet-binding:last-child { margin-bottom: 0; }
.iet-binding-name { font-size: 11px; font-weight: 600; color: var(--text-2, #4b5563); margin-bottom: 5px; }
.iet-target-list { display: flex; flex-direction: column; gap: 4px; }
.iet-target { display: flex; align-items: center; justify-content: space-between; gap: 10px; border: 1px solid var(--border-light, #eef0f2); border-radius: 6px; background: #fff; padding: 5px 9px; }
.iet-target-name { font-size: 11.5px; color: var(--text-1, #1a1a1a); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 60%; }

/* ============ s160 素材库 / 采集中心候选池：来源中心同款双固定列 ============ */
/* 左钉复选框 + 标题，右钉现有末列；不新增操作列，行尾悬停操作保持原逻辑。 */
.fx-data-scroll { overflow-x: auto; }
.fx-data-scroll::-webkit-scrollbar { height: 6px; }
.fx-data-scroll::-webkit-scrollbar-track { background: transparent; }
.fx-data-scroll::-webkit-scrollbar-thumb { background: #dcdee3; border-radius: 3px; }
.fx-data-scroll::-webkit-scrollbar-thumb:hover { background: #c6cad2; }
.fx-data-scroll::-webkit-scrollbar-button { display: none; width: 0; height: 0; }
.fx-data-table th.fix-left, .fx-data-table td.fix-left { position: sticky; left: 0; z-index: 3; background: #fff; }
.fx-data-table th.fx-title-left, .fx-data-table td.fx-title-left { position: sticky; z-index: 3; background: #fff; }
.material-table th.fx-title-left, .material-table td.fx-title-left { left: 40px; }
.candidate-table th.fx-title-left, .candidate-table td.fx-title-left { left: 56px; }
.fx-data-table th.fix-right, .fx-data-table td.fix-right { position: sticky; right: 0; z-index: 3; background: #fff; box-shadow: none; }
.fx-data-table thead th.fix-left, .fx-data-table thead th.fix-right { z-index: 5; background: #fff; }
.fx-data-table tbody tr:hover td.fix-left, .fx-data-table tbody tr:hover td.fix-right { background: var(--hero-bg-start); }
.fx-data-table tbody tr:hover .row-ops { background: linear-gradient(to right, rgba(238,245,253,0), var(--hero-bg-start) 14px); }
/* 空结果行不参与固定列定位。 */
.fx-data-table tbody td[colspan] { position: static; }
/* s174 草稿箱：来源中心同款双固定列列宽（首列钉左 + 操作列钉右，colgroup 定宽） */
.draft-col-title { width: 330px; }
.draft-col-source { width: 130px; }
.draft-col-platform { width: 150px; }
.draft-col-status { width: 120px; }
.draft-col-time { width: 130px; }
.draft-col-ops { width: 140px; }
/* s176 草稿箱操作列：方案A定稿——图标组全常显（不悬停隐藏）；⚡推送金色突出 */
/* s178 修正：操作列回归与前面各列一致的左对齐——表头走全局 .data-table th 左对齐（无需覆盖），图标组 flex-start */
.draft-ops { display: flex; gap: 4px; justify-content: flex-start; align-items: center; }
.draft-op-gold { color: var(--gold-dark); }
.draft-op-gold:hover { background: var(--gold-light); }
/* s179: 草稿箱图标气泡改向下弹出——首行紧贴表头，向上弹会被表头(白底z5)+卡片边缘挡住；随全站 v74 向下铁律 */
.draft-ops .row-icon-btn::after { top: calc(100% + 7px); bottom: auto; transform: translateX(-50%) translateY(-2px); }
.draft-ops .row-icon-btn::before { top: calc(100% + 3px); bottom: auto; border-top-color: transparent; border-bottom-color: #1e2128; }
.draft-ops .row-icon-btn:hover::after { transform: translateX(-50%) translateY(0); }
/* s182: 气泡被下一行盖住——fix-right 列各行均为 sticky(各自层叠上下文)，后绘制的行盖住上行溢出的气泡；
   悬停行时抬该行操作列 z-index，让气泡浮在下方行之上 */
.data-table td.draft-op-cell { position: static; }
.draft-ops .row-icon-btn { z-index: 40; }
.data-table tbody tr:has(.draft-ops .row-icon-btn:hover) td.draft-op-cell { position: relative; z-index: 41; background: var(--hero-bg-start); }
/* s184: ①气泡瞬显瞬隐（去 200ms 延迟+150ms 渐变）——滑过行时半透明中间态会被下一行盖住闪一下；
   ②全站表格悬停行抬 z-index（素材库/候选池每行 relative 各自成上下文，后绘制行会盖住上行溢出的气泡，草稿箱 s182 同款问题补全） */
.row-icon-btn::after, .row-icon-btn::before { transition: none; }
/* s184b 修正：素材库/候选池 row-ops 注入的末列 td 实际类是动态 colCls + fix-right（无 material-col-ops 类），
   s184 选择器没命中。正确目标 = .fx-data-table td.fix-right（sticky z3，需 hover 时压过其他行） */
.fx-data-table td.fix-right:hover { z-index: 41; }
/* s175 草稿箱标题列：去首字图标与备注小字，纯标题蓝色可点击（色系与 cell-title-link 同源） */
.draft-title-link { display: block; max-width: 300px; overflow: hidden; padding: 0; border: 0; background: transparent; color: #2563eb; font-size: 12px; font-weight: 600; text-align: left; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.draft-title-link:hover { color: #1d4ed8; text-decoration: underline; }
/* s186 草稿箱复选框列（首列钉左，44px）+ 行尾红色删除按钮（素材库 🗑 同形） */
.draft-col-check { width: 44px; min-width: 44px; }
.draft-col-check-cell, .data-table th.draft-check-head { text-align: center; }
.draft-col-check-cell { cursor: default; }
.draft-op-del { color: #c8342c; }
.draft-op-del:hover { background: #fdf0ef; }
/* s186 草稿箱批量工具条：素材库 material-bulk-bar 同款（复用类），仅微调间距 */
.draft-bulk-bar { border-bottom: 1px solid var(--border-light); }
/* s186 设置页回收站：草稿软删行列表（统一站自己的，独立于网盘站回收站） */
.settings-trash-card { padding: 16px; }
.settings-trash-card .trash-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.settings-trash-card .trash-head b { font-size: 13.5px; }
.settings-trash-card .trash-head p { margin-top: 3px; font-size: 11.5px; color: var(--text-3); }
.trash-table { width: 100%; }
.trash-table th, .trash-table td { padding: 8px 10px; font-size: 12px; }
.trash-col-check { width: 40px; text-align: center; }
.trash-col-ops { width: 150px; white-space: nowrap; }
.trash-table .trash-col-ops { display: flex; gap: 6px; }
.trash-title { font-weight: 600; color: var(--text-1); }
.trash-purge-btn { color: #c8342c; border-color: #f0d5d3; }
.trash-purge-btn:hover { color: #a92520; border-color: #c8342c; background: #fdf0ef; }
/* s188 回收站页签（草稿 / 素材资产）+ 内容资产复选框列与行尾删除 */
.trash-tabs { display: inline-flex; gap: 6px; margin-bottom: 10px; }
.trash-tab { height: 28px; padding: 0 12px; display: inline-flex; gap: 5px; align-items: center; border: 1px solid var(--border); border-radius: 7px; background: #fff; color: var(--text-2); font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; }
.trash-tab b { color: var(--text-3); font-weight: 700; }
.trash-tab.is-active { border-color: var(--brand-red); color: var(--brand-red); background: var(--brand-red-light); }
.trash-tab.is-active b { color: var(--brand-red); }
.asset-col-check { width: 40px; text-align: center; }
.asset-col-check input { width: 15px; height: 15px; accent-color: var(--brand-red); cursor: pointer; }
.asset-op-del { color: #c8342c; vertical-align: middle; margin-left: 2px; }
.asset-op-del:hover { background: #fdf0ef; }
.asset-bulk-bar { margin: 0 0 10px; border-radius: 8px; border: 1px solid #eecbc8; }

/* ============ s191 资产库（独立新表）：来源 chip / 评级徽章 / 标签 / 复用次数 ============ */
.src-chip { display: inline-block; max-width: 100px; overflow: hidden; padding: 2px 9px; border-radius: 999px; font-size: 10.5px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.src-chip.src-create { color: #2563eb; background: #eef5fd; }
.src-chip.src-material { color: #1a7f4b; background: #e8f5ee; }
.src-chip.src-conn { color: #7c3aed; background: #f3e8ff; }
.src-chip.src-manual { color: var(--text-2); background: #f1f3f5; }
.grade-badge { display: inline-grid; width: 24px; height: 24px; place-items: center; border-radius: 7px; font-size: 12px; font-weight: 800; }
.grade-badge.grade-s { color: #fff; background: var(--brand-red); }
.grade-badge.grade-a { color: #fff; background: var(--gold); }
.grade-badge.grade-b { color: var(--text-2); background: #e8ecef; }
.grade-badge.grade-c { color: var(--text-3); background: #f1f3f5; }
.asset-tag { display: inline-block; max-width: 120px; margin: 1px 3px 1px 0; overflow: hidden; padding: 1px 8px; border-radius: 999px; color: #2563eb; background: #eef5fd; font-size: 10.5px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; vertical-align: top; }
.asset-tag.is-topic { color: var(--gold-dark); background: var(--gold-light); }
.asset-feedback { display: block; max-width: 160px; overflow: hidden; color: var(--text-3); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.reuse-count { font-weight: 700; color: var(--text-3); }
.reuse-count.hot { color: var(--brand-red); }
.assetlib-feed-btn { color: #2563eb; font-weight: 700; }
.asset-transfer-btn { color: #1a7f4b; font-weight: 700; }
.draft-op-save-asset, .dist-op-save-asset { color: var(--gold-dark); }
.draft-op-save-asset:hover, .dist-op-save-asset:hover { color: var(--gold); background: var(--gold-light); }

/* ============================================================
   s162 自绘内联下拉（ipick）——品牌原则⑥落地：
   触发钮圆角 6px、文字居中、无箭头；浮层圆角 10px + 投影、选项文字居中。
   策略/状态/频率三处共用；同屏互斥由 JS 控制（.ipop 只有 is-open 才显示）。
   ============================================================ */
.ipick-wrap { position: relative; display: inline-block; }
.ipick { display: inline-block; min-width: 64px; padding: 4px 12px; border: 1px solid var(--border-light); border-radius: 6px; background-color: #fff; color: var(--text-1); font-size: 11.5px; font-family: inherit; text-align: center; cursor: pointer; font-weight: 600; }
.ipick:hover { border-color: var(--border-strong); }
.ipick.ipick-sm { padding: 3px 10px; font-size: 10.5px; min-width: 58px; }
/* 三色态：策略（judge 蓝/direct 绿/off 灰）与状态（启用绿/暂停灰/观察琥珀）共用色板 */
.ipick.im-judge, .ipick.st-enable { color: #1d4ed8; border-color: #bfdbfe; background-color: #f4f8ff; }
.ipick.tone-direct, .ipick.im-direct, .ipick.st-enable-green { color: #047857; border-color: #a7f3d0; background-color: #f0fdf8; }
.ipick.tone-off, .ipick.im-off, .ipick.st-pause { color: #6b7280; border-color: var(--border-light); background-color: #f6f7f8; }
.ipick.st-observe { color: #b45309; border-color: #fde68a; background-color: #fffbeb; }
.ipick.tone-fr { color: var(--text-2); }
.ipick.is-saving { opacity: .55; pointer-events: none; }
/* 浮层：向下展开（全站统一 v74 铁律），圆角 10px + 投影，选项居中 */
.ipop { position: absolute; top: calc(100% + 6px); bottom: auto; left: 50%; transform: translateX(-50%); z-index: 20; display: none; min-width: 96px; padding: 4px; border: 1px solid var(--border-light); border-radius: 10px; background: #fff; box-shadow: 0 8px 24px rgba(0,0,0,.14); font-size: 11.5px; }
.ipick-wrap.is-open .ipop { display: block; }
.ipop .ipop-item { padding: 5px 12px; border-radius: 6px; color: var(--text-1); text-align: center; white-space: nowrap; cursor: pointer; }
.ipop .ipop-item:hover { background: var(--bg-hover); }
.ipop .ipop-item.is-on { background: var(--info-bg); color: var(--info); font-weight: 600; }
/* 表格内嵌层级修复（s162b，用户实测反馈：浮层被下一行盖住）——
   每个 .ipick-wrap 同为 z-index:4 时 DOM 靠后的行（含 td 白底）会盖住上面行展开的浮层。
   解法：展开时把整行 tr 拉到表格内最高层（is-open 挂在 wrap 上，tr 用相邻兄弟选择器响应），
   wrap 自身也随行提升；行 hover 底色不受影响。 */
.source-table tbody tr:has(.ipick-wrap.is-open) { position: relative; z-index: 30; }
.source-table .ipick-wrap { z-index: 4; }
.source-table .ipick-wrap.is-open { z-index: 31; }

/* ============ s169 页面级顶部操作栏全局吸顶（方案A，2026-11-03 用户钦定） ============ */
/* 五个组件类统一吸顶：滚动时贴在「顶栏+浅缝」单元正下方常驻，不随内容滚走。
   s169c 修正：吸附位 = 顶栏(56px) + 常驻浅缝投影(20px) = 76px——
   浅缝投影属于顶栏绘制层(z=20)，操作栏若吸在 56px 会被投影盖住上半截（用户实测"滑了一半"）；
   下移到缝下方后与侧栏(top: 76px)同一基准，视觉与静态布局完全一致。
   static 布局零变化——sticky 只有滚动到位才吸附，不占额外空间。
   层级 10：高于表格行内容/固定列阴影（≤6），低于顶栏(20)/用户菜单(40)/下拉面板(400)/抽屉弹窗(30+)。
   注：吸顶宽度即各栏自身宽度，无需 left/right。 */
.ops-bar,
.ops-topbar,
.inbox-actions-card,
.real-dist-action-bar,
.topics-tabs,
.pipeline-card {
  position: sticky;
  top: calc(var(--topbar-h) + var(--cf-gap));
  z-index: 10;
}
/* 素材库操作卡与筛选卡之间有 12px 呼吸缝，吸顶时缝隙会露出底色滚动内容——
   吸附态由浏览器处理 margin（sticky 元素带 margin 一起吸），此处只补不透明背景防止透字。 */
.inbox-actions-card { background: var(--bg-card); }
/* 窄屏关闭：移动端顶栏高度不固定（auto/换行），56px 吸顶值不成立，避免压叠 */
@media (max-width: 760px) {
  .ops-bar, .ops-topbar, .inbox-actions-card, .real-dist-action-bar, .topics-tabs, .pipeline-card { position: static; }
}

/* s169b 顶栏下浅缝常驻（2026-11-03 用户反馈：滚动时 20px 品牌浅缝跟着内容滚走）——
   缝隙本体是 .app-body 的 padding-top（文档流），滚动必走。解法：顶栏自身用
   box-shadow 向下投一条 --cf-gap 宽的框架底色（--cf-frame-bg），与真实缝隙同色同宽，
   滚动后视觉上顶栏下永远有这条浅缝——「顶栏+浅缝」合成常驻吸顶单元，布局零改动。
   覆盖顺序：topbar 有 border-bottom(金线)，box-shadow 画在金线之外，互不影响。 */
.topbar { box-shadow: 0 var(--cf-gap) 0 0 var(--cf-frame-bg); }

/* ============ s192 二期轨道B：MCP 连接器面板 ============ */
.mcp-connector-list { display: flex; flex-direction: column; gap: 12px; margin: 16px 0; }
.mcp-connector-card {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  background: var(--bg-card); border: 1px solid var(--border-light, #e6e9ef);
  border-radius: 14px; padding: 16px 18px;
}
.mcp-connector-main { min-width: 0; flex: 1; }
.mcp-connector-name { font-size: 14px; font-weight: 600; color: var(--text-primary, #1f2329); display: flex; align-items: center; gap: 8px; }
.mcp-connector-status { font-size: 12px; font-weight: 400; color: #16a34a; background: rgba(22,163,74,.08); border-radius: 999px; padding: 2px 10px; }
.mcp-connector-endpoint { font-size: 12px; color: var(--text-secondary, #5f5e5a); margin-top: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mcp-connector-headers { font-size: 12px; color: var(--text-muted, #9aa1ac); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mcp-connector-actions { display: flex; gap: 8px; flex-shrink: 0; }
.mcp-header-row { display: grid; grid-template-columns: 1fr 2fr; gap: 8px; margin-bottom: 8px; }
@media (max-width: 640px) { .mcp-connector-card { flex-direction: column; align-items: stretch; } }

/* ============ s192 二期：资产导入器弹窗 ============ */
.asset-import-sources { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 16px; }
@media (max-width: 640px) { .asset-import-sources { grid-template-columns: repeat(2, 1fr); } }
.asset-import-source {
  appearance: none; border: 1px solid var(--border-light, #e6e9ef); border-radius: 12px;
  background: var(--bg-card); padding: 12px 10px; cursor: pointer; text-align: center;
  display: flex; flex-direction: column; gap: 4px; font-family: inherit;
  transition: border-color .15s, box-shadow .15s;
}
.asset-import-source b { font-size: 13px; color: var(--text-primary, #1f2329); }
.asset-import-source span { font-size: 11px; color: var(--text-muted, #9aa1ac); }
.asset-import-source.is-active { border-color: var(--brand-red, #c8342c); box-shadow: 0 0 0 1px var(--brand-red, #c8342c); }
.asset-import-source.is-disabled { opacity: .45; cursor: not-allowed; }
.asset-import-search { display: flex; gap: 8px; margin-bottom: 12px; }
.asset-import-search .source-form-control { flex: 1; }
.asset-import-docs { display: flex; flex-direction: column; gap: 8px; max-height: 320px; overflow-y: auto; margin-bottom: 12px; }
.asset-import-doc {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  border: 1px solid var(--border-light, #e6e9ef); border-radius: 10px; padding: 10px 12px;
}
.asset-import-doc-main { display: flex; align-items: center; gap: 10px; min-width: 0; cursor: pointer; }
.asset-import-doc-title { font-size: 13px; color: var(--text-primary, #1f2329); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.asset-import-doc-type { font-size: 11px; color: var(--text-muted, #9aa1ac); background: var(--bg-subtle, #f2f4f8); border-radius: 999px; padding: 1px 8px; flex-shrink: 0; }
.asset-import-doc-actions { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.modal-footer-inline { display: flex; justify-content: flex-end; align-items: center; gap: 10px; margin-top: 4px; }

/* ============ s193 三期：资产合集 / 反馈看板 / AI 提炼 ============ */
.asset-collection-list { display: flex; flex-direction: column; gap: 12px; }
.asset-collection-card {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  border: 1px solid var(--border-light, #e6e9ef); border-radius: 14px; padding: 16px 18px;
  background: var(--bg-card);
}
.asset-collection-main { min-width: 0; flex: 1; }
.asset-collection-main b { font-size: 14px; color: var(--text-primary, #1f2329); }
.asset-collection-count { font-size: 12px; color: #c8342c; background: rgba(200,52,44,.08); border-radius: 999px; padding: 2px 10px; margin-left: 8px; }
.asset-collection-main p { font-size: 12px; color: var(--text-secondary, #5f5e5a); margin: 6px 0 0; }
.asset-collection-titles { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.asset-collection-titles span { font-size: 11px; color: var(--text-muted, #9aa1ac); background: var(--bg-subtle, #f2f4f8); border-radius: 999px; padding: 2px 10px; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.asset-collection-titles .asset-collection-more { color: #c8342c; background: rgba(200,52,44,.06); }
.asset-collection-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.asset-col-pick-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; max-height: 240px; overflow-y: auto; }
.asset-col-pick-list .radio-row { display: flex; align-items: center; gap: 10px; cursor: pointer; font-size: 13px; color: var(--text-primary, #1f2329); }
.refine-suggestions { display: flex; flex-direction: column; gap: 10px; }
.refine-suggestion { border: 1px solid var(--border-light, #e6e9ef); border-radius: 12px; padding: 12px 14px; }
.refine-suggestion-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.refine-suggestion-head b { font-size: 13px; color: var(--text-primary, #1f2329); }
.refine-suggestion-tags { font-size: 12px; color: var(--text-secondary, #5f5e5a); margin-top: 6px; }
.refine-suggestion-reason { font-size: 12px; color: var(--text-muted, #9aa1ac); margin-top: 4px; }
@media (max-width: 640px) { .asset-collection-card { flex-direction: column; align-items: stretch; } }

/* s199 带反馈重新解析弹窗：圆角 + 品牌红选中态，与其它弹窗同构 */
.reparse-hint { margin: 0 0 12px; color: var(--text-2); font-size: 12px; line-height: 1.7; }
.reparse-reasons { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.reparse-chip { padding: 7px 14px; border: 1px solid var(--border); border-radius: 999px; color: var(--text-2); background: #fff; font-size: 12px; line-height: 1.4; cursor: pointer; transition: background .14s ease, border-color .14s ease, color .14s ease; }
.reparse-chip:hover { border-color: var(--brand-red); color: var(--brand-red); }
.reparse-chip.is-active { border-color: var(--brand-red); color: #fff; background: var(--brand-red); }
.reparse-label { display: block; margin-bottom: 6px; color: var(--text-2); font-size: 12px; }
.reparse-textarea { width: 100%; min-height: 96px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--cf-panel-radius); color: var(--text-1); background: #fff; font-size: 12px; line-height: 1.7; resize: vertical; outline: none; }
.reparse-textarea:focus { border-color: var(--brand-red); }
.reparse-note { margin: 10px 0 0; color: var(--text-4); font-size: 11px; }

/* s203 资产同步知识库：已同步态绿色（区别于普通蓝色文字链接） */
.button-text-link.asset-kb-done { color: var(--success); }
.button-text-link.asset-kb-done:hover { color: #15803d; }

/* ===== s203 创作模板：设置页总览表 + 弹窗编辑器 ===== */
.ptpl-pf { display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.ptpl-ico { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 8px; background: rgba(200, 52, 44, 0.08); font-size: 13px; flex: none; }
.ptpl-count { color: var(--text-3); font-size: 11px; white-space: nowrap; }
.ptpl-desc { margin: 8px 0 12px; color: var(--text-2); font-size: 12px; line-height: 1.7; }
.ptpl-desc code { padding: 1px 5px; border-radius: 6px; background: rgba(17, 24, 39, 0.05); font-size: 11px; color: var(--text-1); }
.ptpl-snippet { color: var(--text-2); font-size: 11px; line-height: 1.6; word-break: break-all; }
.ptpl-ops { white-space: nowrap; }
.ptpl-hint { margin: 12px 0 0; color: var(--text-4); font-size: 11px; }
.ptpl-modal { max-width: 640px; width: min(640px, calc(100vw - 32px)); }
.ptpl-platform-name { color: var(--text-1); font-size: 13px; font-weight: 600; }
.ptpl-req-tip { color: var(--text-4); font-size: 11px; font-weight: 400; }
.ptpl-textarea { min-height: 260px; font-size: 12px; line-height: 1.7; font-family: inherit; resize: vertical; }
.ptpl-modal-hint { margin: 8px 0 0; color: var(--text-4); font-size: 11px; line-height: 1.6; }
.ptpl-modal-hint code { padding: 1px 5px; border-radius: 6px; background: rgba(17, 24, 39, 0.05); font-size: 11px; color: var(--text-1); }

/* s203 创作模板 C：生成前模板确认弹窗 */
.ptpl-c-summary { margin: 0 0 12px; color: var(--text-2); font-size: 12px; line-height: 1.7; }
.ptpl-c-summary b { color: var(--text-1); }
.ptpl-c-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
.ptpl-c-row { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border: 1px solid var(--border); border-radius: var(--cf-panel-radius); background: #fff; }
.ptpl-c-pf { flex: none; width: 64px; color: var(--text-1); font-size: 12px; font-weight: 600; white-space: nowrap; }
.ptpl-c-tpl { color: var(--text-3); font-size: 11px; line-height: 1.6; word-break: break-all; }
.ptpl-c-tpl.is-custom { color: var(--text-1); }
.ptpl-c-more { margin: -4px 0 12px; color: var(--text-4); font-size: 11px; }
.ptpl-c-skip { display: flex; align-items: center; gap: 6px; color: var(--text-2); font-size: 12px; cursor: pointer; }
.ptpl-c-skip input { accent-color: var(--brand-red); }
