:root {
  /* 与网盘拉新工作台 1:1 同源的设计令牌：红黑金 · 白卡 + 深墨导航 */
  --bg-page: #f5f7fa; --bg-card: #fff;
  /* 软化 v6：内容区浮动画心的四周黑缝宽度 + 圆角（改这两值全局生效） */
  --cf-gap: 10px; --cf-panel-radius: 14px;
  /* 软化 v6：内容区浮动画心的四周黑缝宽度 + 圆角（改这两值全局生效） */
  --cf-gap: 10px; --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; scrollbar-color: var(--border) 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: "Microsoft YaHei", "微软雅黑", -apple-system, "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: stretch; min-height: calc(100dvh - 56px - var(--cf-gap)); 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; }.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: #f2a3a2; background: rgba(226, 75, 74, .2); }
.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; }
#refresh-button.button-primary { background: rgba(201, 164, 92, .16); border-color: rgba(201, 164, 92, .42); color: var(--gold); font-weight: 500; }
#refresh-button.button-primary:hover { background: rgba(201, 164, 92, .26); border-color: rgba(201, 164, 92, .6); color: #e8cd94; }
/* 软化 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: 500; 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(--text-1); background: var(--text-1); }.button-primary:hover { border-color: #1f2937; background: #1f2937; }.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; }

/* ============ 统一流水线索引条（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); }
.pipeline-fits { display: flex; gap: 8px; flex-wrap: wrap; padding: 4px 16px 14px; }
.pipe-fit { display: inline-flex; align-items: center; gap: 6px; min-height: 26px; padding: 0 10px; border: 1px solid var(--border-light); border-radius: 999px; background: #fafbfc; color: var(--text-2); font-size: 12px; }
.pipe-fit i { width: 8px; height: 8px; border-radius: 50%; background: var(--text-4); }
.pipe-fit:hover { border-color: var(--border-strong); background: #fff; }
.pipe-fit.is-active { border-color: var(--brand-red); color: var(--brand-red); background: var(--brand-red-light); }
.pipe-fit.is-active i { background: var(--brand-red); }
.pipe-fit.fit-both i { background: var(--gold); }
.pipe-fit.fit-content i { background: var(--info); }
.pipe-fit.fit-netdisk i { background: var(--purple); }
.pipe-fit.fit-unjudged i { background: var(--text-4); }
.pipe-fit.fit-skip i { background: var(--border-strong); }

/* ============ 统一素材库：项目归属 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); }.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(--bg-hover); }.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 { width: 18px; color: var(--text-2); font-size: 10px; }.score-track { width: 34px; 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; justify-content: space-between; align-items: center; color: var(--text-4); font-size: 11px; }.pagination-controls { display: flex; gap: 4px; }.page-button { width: 25px; height: 25px; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 3px; color: var(--text-3); background: #fff; cursor: pointer; }.page-button.is-active { color: #fff; border-color: var(--primary); background: var(--primary); }.page-button.is-disabled { color: #d1d5db; cursor: default; }
.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; }
.drawer-overlay, .modal-overlay { position: fixed; inset: 0; z-index: 30; background: rgba(0,0,0,.3); }.drawer { position: fixed; inset: 0 0 0 auto; z-index: 31; 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; padding: 0 20px; overflow-x: auto; border-bottom: 1px solid var(--border); }.drawer-tab { padding: 10px 13px; color: var(--text-3); border-bottom: 2px solid transparent; cursor: pointer; font-size: 11px; white-space: nowrap; }.drawer-tab.is-active { color: var(--primary); border-bottom-color: var(--primary); font-weight: 600; }.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); }
/* 窄弹窗：设置密码等单列表单用，避免 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; }
.user-chip-trigger { display: inline-flex; align-items: center; gap: 7px; height: 32px; padding: 0 10px 0 6px; border: 1px solid rgba(255,255,255,.16); border-radius: var(--radius-sm); background: rgba(255,255,255,.06); color: var(--nav-text-strong); cursor: pointer; font: inherit; font-size: 12px; white-space: nowrap; }
.user-chip-trigger:hover { background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.28); 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; }
.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：资料卡去描边 */
.settings-profile { display: flex; align-items: center; 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; }
.settings-name-row { display: flex; gap: 8px; align-items: center; }
.settings-name-row input { max-width: 280px; }
.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%); }
.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; }

/* 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; }
/* 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; }
.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; }
.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. */
.table-action-link { min-height: 0; padding: 0; border: 0; color: var(--primary); background: transparent; font-size: 12px; line-height: 1.5; white-space: nowrap; cursor: pointer; }
.table-action-link:hover { color: var(--brand-red-dark); 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. */
.source-table th.source-col-actions, .source-table td.source-actions { border-left: 1px solid var(--border); }
.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; } }

/* Account management: group toolbar, bulk actions and table layout. */
.account-management .card-header { margin-bottom: 14px; }
.account-group-toolbar { margin: 0 0 14px; padding: 14px 16px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg-2, #fafafa); }
.account-group-toolbar-header { display: flex; gap: 10px; align-items: center; margin-bottom: 12px; }
.account-group-toolbar-header strong { font-size: 14px; }
.account-group-summary { color: var(--text-4); font-size: 12px; margin-right: auto; }
.account-group-list { display: flex; gap: 8px; flex-wrap: wrap; }
.account-group-option { display: inline-flex; gap: 6px; align-items: center; min-height: 32px; padding: 0 12px; border: 1px solid var(--border); border-radius: 999px; background: var(--bg-1, #fff); color: var(--text-2); font-size: 13px; cursor: pointer; }
.account-group-option strong { color: var(--text-4); font-weight: 600; }
.account-group-option:hover { border-color: var(--primary); color: var(--primary); }
.account-group-option.is-active { border-color: var(--primary); background: var(--primary); color: #fff; }
.account-group-option.is-active strong { 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; }
.connection-account-summary { display: flex; gap: 8px; align-items: center; color: var(--text-3); font-size: 13px; }

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

/* 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; }
.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; }
.btn-primary { color: #fff; border-color: var(--text-1); background: var(--text-1); }
.btn-primary:hover:not(:disabled) { border-color: #1f2937; background: #1f2937; }
.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); }
.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: 5px; 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: 5px; 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; }
.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-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; }
.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; }

/* 采集规则：阈值卡 + 词表库卡 */
.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); }

/* 采集规则效果看板 + AI 进化建议 */
.collection-stats-card { margin-top: 14px; }
.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; }

/* 版权规则五模块 */
/* 软化 v6：版权规则分组去描边 */
.copyright-rules-group { margin: 0 0 16px; padding: 14px 16px; border: 0; border-radius: 12px; background: var(--bg-card); box-shadow: 0 1px 3px rgba(26, 22, 20, .05); }
.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; }

