/* ==========================================================================
   LexCheck 设计系统
   --------------------------------------------------------------------------
   分层架构（与文中 «§n» 横幅一一对应）：
     §1  设计令牌（:root；暗色令牌覆盖在 §11）
     §2  基础与排版
     §3  布局壳（侧栏 / 主区 / 顶栏 / 全局提示条）
     §4  页面：尽调概览
     §5  页面：核查向导（步骤条 / 主体 / 站点树 / 输出，含按钮与表单基元）
     §6  页面：任务执行 · 核查档案 · 结果明细
     §7  页面：账号
     §8  通用浮层与反馈（对话框 / Toast / 骨架屏 / ⌘K 速查）
     §9  页面：专利侵权分析
     §10 响应式
     §11 暗色主题（仅覆盖令牌，组件一律不改）
     §12 动效降级

   设计原则（aimail 值系）：冷灰画布 + 纯白表面卡 + 单一品牌蓝 accent；
   1px 实色边框分层、阴影只留给浮层，彩色只表达状态。所有组件只引用下列
   语义令牌，不再出现散落的字面量色值。
   ========================================================================== */
:root {
  color-scheme: light;
  font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  color: var(--ink);
  background: var(--page-bg);

  /* 画布与表面：冷灰画布 + 纯白表面卡（Gmail 式） */
  --page-bg: #f7f8fa;
  --canvas: #ffffff;
  --surface: #f5f6f8;
  --surface-hover: #eceef2;
  /* 中性悬浮/图标衬底（随主题翻转） */
  --hover-bg: rgba(16, 24, 40, .04);
  --tile-bg: rgba(16, 24, 40, .05);

  /* 边框：实色三档，卡片靠 1px 边框分层而非阴影 */
  --line: #e7e9ee;
  --line-strong: #d8dce3;
  --card-border: #e7e9ee;
  --card-edge: none;

  /* 文字梯度 */
  --ink: #202124;
  --muted: #667085;
  --tertiary: #98a2b3;

  /* accent：单一品牌蓝。基色承担填充/边框（暗色不覆盖）；
     strong 承担强调文字（暗色下转浅蓝 #9db7ee），hover 为实底按钮悬停色 */
  --accent: #2563eb;
  --accent-strong: #1d4ed8;
  --accent-hover: #1d4ed8;
  --accent-tint: #eff6ff;
  --accent-border: rgba(37, 99, 235, .28);
  --accent-border-strong: rgba(37, 99, 235, .45);
  --focus-ring: rgba(37, 99, 235, .2);

  /* 语义状态四件套（tint 底 / strong 深字 / border 边） */
  --status-success: #22a06b;
  --status-success-strong: #176b4d;
  --status-success-tint: #eaf7f1;
  --status-success-border: rgba(34, 160, 107, .28);
  --status-warning: #d48b27;
  --status-warning-strong: #8a5b13;
  --status-warning-tint: #fff7e6;
  --status-warning-border: rgba(212, 139, 39, .3);
  --status-danger: #bc403b;
  --status-danger-tint: #fdecec;
  --status-danger-border: #e8bebb;

  /* 输入体系 */
  --input-bg: #ffffff;
  --input-border: #d8dce3;
  --input-placeholder: #98a2b3;

  /* 侧栏文字梯度（语义别名，值随正文梯度） */
  --side-strong: var(--ink);
  --side-text: var(--muted);
  --side-muted: var(--tertiary);
  --side-faint: var(--tertiary);

  /* 布局 */
  --sidebar-width: 208px;
  --content-max-width: 1500px;
  --content-gutter: clamp(24px, 2.8vw, 48px);

  /* 圆角：控件 6/8，容器 10（紧凑高密度信息型 UI） */
  --radius-xs: 6px;
  --radius-sm: 8px;
  --radius-md: 10px;
  --radius-lg: 10px;

  /* 控件高度 */
  --control-height-sm: 29px;
  --control-height: 34px;

  /* 字号阶梯（rem 制，随用户根字号缩放；收敛为 aimail 等差链 12/13/14/16/18/20/24/28，
     reading 与 ui 同值消除 1px 错位，heading 与 heading-lg 拉开 2px 层级） */
  --font-micro: 0.75rem;      /* 12 角标/法律脚注 */
  --font-caption: 0.8125rem;  /* 13 标签/徽章/辅助说明 */
  --font-ui: 0.875rem;        /* 14 界面正文（段落/表格/列表/按钮/表单项） */
  --font-reading: 0.875rem;   /* 14 长文阅读（与 ui 同值，保持语义别名） */
  --font-heading: 1rem;       /* 16 卡片标题 */
  --font-heading-lg: 1.125rem;/* 18 小节标题 h3 */
  --font-stat: 1.25rem;       /* 20 区块标题 h2 / 统计数字 / 对话框标题 */
  --font-page-title: 1.5rem;  /* 24 页面标题 h1 */
  --font-hero-title: 1.75rem; /* 28 概览 hero */

  /* 动效 */
  --motion-fast: .13s ease;

  /* 阴影：卡片几乎无投影靠边框分层；lg 仅用于对话框浮层 */
  --shadow-sm: 0 1px 2px rgba(16, 24, 40, .04);
  --shadow-lg: 0 24px 60px rgba(16, 24, 40, .16);
  --card-hover-shadow: 0 1px 2px rgba(16, 24, 40, .05);

  /* 浮层（toast 在明暗主题下都保持深色表面，状态色固定） */
  --toast-bg: #2a3341;
  --toast-success: #176b4d;
  --toast-warning: #8a5b13;
  --toast-error: #bc403b;
  /* 对话框背板 */
  --backdrop: rgba(16, 24, 40, .33);

  /* 模块图标降饱和家族：冷灰画布上的五个分类色锚点（暗色仅换亮前景） */
  --module-compliance-fg: #b25544;
  --module-qualification-fg: #2c8f66;
  --module-shareholder-fg: #5e6cc0;
  --module-assets-fg: #2988a6;
  --module-patent-fg: #8a7c46;
}


/* ===== §2 基础与排版 ======================================================== */
* { box-sizing: border-box; }
html, body { min-height: 100%; }
body {
  margin: 0; height: 100vh; height: 100dvh; overflow: hidden;
  display: grid; grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
  background: var(--page-bg);
  font-size: var(--font-ui); line-height: 1.5;
}
button, input, select, textarea { font: inherit; }
button, summary, label:has(input) { -webkit-tap-highlight-color: transparent; }
[hidden] { display: none !important; }
button:focus-visible, summary:focus-visible, a:focus-visible {
  outline: 2px solid var(--accent); outline-offset: 2px;
}

.skip-link {
  position: fixed; z-index: 100; top: 8px; left: 12px; padding: 8px 12px;
  border-radius: var(--radius-xs); background: var(--toast-bg); color: white; font-size: var(--font-caption);
  transform: translateY(-160%); transition: transform var(--motion-fast);
}
.skip-link:focus { transform: translateY(0); }

/* ===== §3 布局壳：侧栏 ===================================================== */
/* 侧栏：与画布同材质的浅色纸面（lexwork 式），靠右缘 hairline 分层 */
.sidebar {
  min-width: 0; height: 100%; padding: 24px 14px 16px;
  background: var(--page-bg); color: var(--side-strong);
  border-right: 1px solid var(--line);
  display: flex; flex-direction: column; overflow-x: hidden; overflow-y: auto;
}
.brand { display: flex; align-items: center; gap: 11px; margin: 0 9px 26px; }
.brand-mark {
  width: 36px; height: 36px; border-radius: var(--radius-sm); display: grid; place-items: center;
  background: var(--accent-tint); color: var(--accent-strong); font-size: var(--font-caption); font-weight: 850;
  letter-spacing: -.02em; box-shadow: none;
}
.brand-copy, .nav-copy { min-width: 0; display: grid; }
.brand-copy strong { color: var(--ink); font-size: var(--font-reading); letter-spacing: -.01em; }
.brand-copy small { margin-top: 2px; color: var(--side-muted); font-size: var(--font-caption); font-weight: 500; }
.sidebar-section { flex: 0 0 auto; margin-top: 0; }
.sidebar-section + .sidebar-section { margin-top: 16px; }
.sidebar-label {
  display: block; margin: 0 10px 8px; color: var(--side-faint);
  font-size: var(--font-caption); font-weight: 750; letter-spacing: .1em;
}
.sidebar nav { display: grid; gap: 4px; }
/* 单行导航项：图标 + 标题，副标题说明已由概览页模块卡承担 */
.nav {
  width: 100%; min-height: 40px; border: 1px solid transparent; border-radius: var(--radius-sm); padding: 7px 9px;
  background: transparent; color: var(--side-text); text-align: left; cursor: pointer;
  display: flex; align-items: center; gap: 9px; transition: background var(--motion-fast), color var(--motion-fast);
}
.nav:hover { color: var(--ink); background: var(--hover-bg); }
.nav.on { color: var(--accent-strong); background: var(--accent-tint); border-color: transparent; }
.nav-symbol {
  width: 25px; height: 25px; flex: 0 0 25px; border-radius: var(--radius-xs);
  display: grid; place-items: center; background: var(--tile-bg);
  color: var(--muted); font-size: var(--font-caption); font-weight: 750; line-height: 1;
}
.nav:hover .nav-symbol { color: var(--ink); }
.nav.on .nav-symbol { background: rgba(37, 99, 235, .14); color: var(--accent-strong); }
.nav-copy strong { overflow: hidden; text-overflow: ellipsis; font-size: var(--font-ui); font-weight: 650; color: var(--ink); }
.nav.on .nav-copy strong { color: var(--accent-strong); }
/* 数据源目录：账号 › 总览中的单行能力状态条（JS 通过 .closest(".capability-card") 更新 data-state） */
.capability-inline {
  display: flex; align-items: center; gap: 10px; padding: 13px 16px;
  border: 1px solid var(--card-border); border-radius: var(--radius-md);
  background: var(--canvas); box-shadow: var(--card-edge);
}
.capability-pulse {
  width: 7px; height: 7px; flex: 0 0 7px; border-radius: 50%;
  background: var(--status-success); box-shadow: 0 0 0 3px var(--status-success-tint);
}
.capability-card[data-state="loading"] .capability-pulse {
  background: var(--status-warning); box-shadow: 0 0 0 3px var(--status-warning-tint);
}
.capability-card[data-state="idle"] .capability-pulse {
  background: var(--tertiary); box-shadow: none;
}
.capability-card[data-state="error"] .capability-pulse {
  background: var(--status-danger); box-shadow: 0 0 0 3px var(--status-danger-tint);
}
.catalog-state {
  color: var(--muted); font-size: var(--font-ui); line-height: 1.4; overflow-wrap: anywhere;
}
.sidebar-foot {
  margin-top: auto; padding: 13px 4px 2px; border-top: 1px solid var(--line);
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
}
.user-summary { min-width: 0; display: flex; align-items: center; gap: 8px; }
.user-avatar {
  width: 27px; height: 27px; flex: 0 0 27px; display: grid; place-items: center;
  border-radius: 50%; background: var(--surface); color: var(--muted); font-size: var(--font-caption);
}
.user-summary > div { min-width: 0; display: grid; gap: 1px; }
.user-summary small { color: var(--side-muted); font-size: var(--font-caption); }
#user-chip {
  max-width: 105px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  color: var(--ink); font-size: var(--font-caption); font-weight: 600;
}
.session-actions { flex: 0 0 auto; }
.sidebar .btn { min-height: var(--control-height-sm); padding: 5px 12px; }
.sidebar .btn.secondary {
  border-color: var(--card-border); background: var(--canvas); color: var(--muted);
}
.sidebar .btn.secondary:hover { border-color: var(--accent-border); color: var(--accent-strong); background: var(--canvas); }

/* ===== §3b 布局壳：主区 / 顶栏 / 全局提示条 ================================ */
/* 主区：纸面画布上的实色白面板（参考 ZCode），hairline 边框、无重投影 */
.main {
  width: calc(100vw - var(--sidebar-width) - 12px);
  min-width: 0; max-width: none; min-height: 0; margin: 8px 8px 8px 4px; overflow: auto;
  justify-self: stretch;
  border: 1px solid var(--card-border); border-radius: var(--radius-lg);
  background: var(--canvas); outline: none;
  box-shadow: var(--shadow-sm);
  scrollbar-gutter: stable;
}
.topbar {
  width: 100%; max-width: var(--content-max-width); margin: 0 auto;
  padding: 20px var(--content-gutter) 14px;
  display: flex; justify-content: space-between; align-items: flex-end; gap: 20px;
  border-bottom: 1px solid var(--line);
}
.section-kicker {
  display: block; font-size: var(--font-caption); font-weight: 750;
  letter-spacing: .09em; text-transform: uppercase; margin-bottom: 6px;
  color: var(--tertiary);
}
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: 3px; font-size: var(--font-page-title); letter-spacing: -.01em; }
h2 { margin-bottom: 4px; font-size: var(--font-stat); letter-spacing: -.01em; }
h3 { margin: 0; font-size: var(--font-heading-lg); }
p { color: var(--muted); font-size: var(--font-reading); line-height: 1.55; margin-bottom: 0; }
.topbar > div { min-width: 0; }
.topbar-actions { flex: 0 0 auto; display: flex; align-items: center; gap: 8px; }
.topbar-action { flex: 0 0 auto; min-height: var(--control-height); }
.icon-btn {
  min-height: var(--control-height); min-width: var(--control-height); padding: 6px 9px; border: 1px solid var(--line);
  border-radius: var(--radius-sm); background: var(--canvas); color: var(--muted); cursor: pointer;
  display: inline-grid; place-items: center; font-size: var(--font-reading); line-height: 1;
  transition: color var(--motion-fast), border-color var(--motion-fast), background var(--motion-fast);
}
.icon-btn:hover { color: var(--accent-strong); border-color: var(--accent-border); background: var(--surface); }
/* 主题按钮三态指示：跟随系统 / 浅色 / 深色 */
#theme-toggle[data-mode]::before { content: "◐"; }
#theme-toggle[data-mode="light"]::before { content: "☀"; }
#theme-toggle[data-mode="dark"]::before { content: "☾"; }
.tab-panel, .notice {
  width: 100%; max-width: var(--content-max-width); margin-left: auto; margin-right: auto;
}
.tab-panel { padding: 18px var(--content-gutter) 40px; }
/* 带吸底操作栏的向导页：收窄底部留白，避免吸附条与滚动终点之间出现空隙 */
.tab-panel[data-panel="check"] { padding-bottom: 10px; }
.tab-panel[data-panel="patent-analysis"] { padding-bottom: 12px; }
.workspace { width: 100%; }
.notice {
  padding: 14px 18px; display: flex; align-items: center; justify-content: space-between;
  border: 1px solid var(--status-warning-border); border-radius: var(--radius-md);
  background: var(--status-warning-tint); margin-top: 20px; margin-bottom: 0;
}
.notice div { display: grid; gap: 3px; }
.notice span { color: var(--status-warning-strong); font-size: var(--font-ui); }

/* ===== §4 页面：尽调概览 =================================================== */
/* 概览页直给结构：开始区（标题+搜索+一行信任说明）→ 模块卡 → 最近核查。 */
.overview-panel { padding-top: 6px; }
.overview-hero { padding: 2px 0 0; }
.overview-hero h2 {
  margin: 0 0 10px; color: var(--ink);
  font-size: var(--font-hero-title); line-height: 1.17; letter-spacing: -.01em;
}
.overview-search { max-width: 680px; }
.overview-search > label {
  display: block; margin-bottom: 8px; color: var(--muted);
  font-size: var(--font-caption); font-weight: 700;
}
.overview-search > div {
  padding: 5px; border: 1px solid var(--line-strong); border-radius: var(--radius-md);
  background: var(--canvas); display: flex; align-items: center; gap: 6px;
  box-shadow: var(--card-hover-shadow);
}
.overview-search input {
  min-width: 0; flex: 1; min-height: 38px; padding-inline: 12px;
  border: 0; border-radius: var(--radius-sm); box-shadow: none; font-size: var(--font-reading); background: transparent;
}
.overview-search input:focus { box-shadow: inset 0 0 0 2px var(--focus-ring); }
.overview-search .btn { flex: 0 0 auto; min-height: 38px; border-radius: var(--radius-sm); }
.hero-trust-line { margin-top: 9px; color: var(--tertiary); font-size: var(--font-caption); }
.hero-trust-line strong { color: var(--ink); font-size: var(--font-caption); }

.module-section { padding: 24px 0 8px; }
.module-heading { margin-bottom: 13px; align-items: flex-end; }
.catalog-summary {
  flex: 0 0 auto; padding: 7px 10px; border: 1px solid var(--line); border-radius: 999px;
  background: var(--surface); color: var(--muted); font-size: var(--font-caption); white-space: nowrap;
}
.module-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; }
.module-card {
  position: relative; min-width: 0; padding: 14px 16px;
  border: 1px solid var(--card-border); border-radius: var(--radius-md); background: var(--canvas);
  display: flex; flex-direction: column; gap: 9px;
  box-shadow: var(--card-edge); transition: box-shadow .18s ease, border-color .18s ease;
}
.module-card:hover {
  border-color: var(--accent-border);
  box-shadow: var(--card-hover-shadow);
}
.module-card-top { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 9px; align-items: center; }
.module-source-count { color: var(--tertiary); font-size: var(--font-caption); font-weight: 650; }
.module-icon {
  width: 34px; height: 34px; border-radius: var(--radius-sm); display: grid; place-items: center;
  background: var(--surface); color: var(--accent-strong); font-size: var(--font-caption); font-weight: 800;
}
.module-card h3 { margin-bottom: 4px; font-size: var(--font-heading-lg); letter-spacing: -.01em; }
.module-card p { font-size: var(--font-ui); line-height: 1.5; }
.module-link {
  width: 100%; margin-top: auto; padding: 9px 0 0; border: 0; border-top: 1px solid var(--line);
  background: transparent; color: var(--ink); text-align: left; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  font-size: var(--font-caption); font-weight: 750;
}
.module-link span { color: var(--accent-strong); font-size: var(--font-heading); transition: transform var(--motion-fast); }
.module-card:hover .module-link span { transform: translateX(3px); }
.module-card:hover .module-link { color: var(--accent-strong); }
/* 模块图标：统一降饱和家族，浅底 + 低饱和深字（色值由 --module-*-fg 令牌承载，暗色仅换亮前景） */
.module-compliance .module-icon { background: var(--surface); color: var(--module-compliance-fg); }
.module-qualification .module-icon { background: var(--surface); color: var(--module-qualification-fg); }
.module-shareholder .module-icon { background: var(--surface); color: var(--module-shareholder-fg); }
.module-assets .module-icon { background: var(--surface); color: var(--module-assets-fg); }
.module-patent .module-icon { background: var(--surface); color: var(--module-patent-fg); }

.overview-activity {
  margin-top: 24px; padding: 18px 20px; border: 1px solid var(--card-border);
  border-radius: var(--radius-lg); background: var(--surface);
  display: grid; grid-template-columns: minmax(240px, .6fr) minmax(380px, 1.4fr); gap: 26px;
}
.overview-metrics {
  margin-top: 14px; display: grid; grid-template-columns: repeat(3, 1fr);
  border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--canvas); overflow: hidden;
}
.overview-metrics > div { padding: 10px 12px; display: grid; gap: 2px; border-right: 1px solid var(--line); }
.overview-metrics > div:last-child { border-right: 0; }
.overview-metrics span { color: var(--muted); font-size: var(--font-caption); }
.overview-metrics strong { font-size: var(--font-stat); font-variant-numeric: tabular-nums; }
.overview-metrics .warn strong { color: var(--status-warning); }
.recent-work { min-width: 0; border: 1px solid var(--card-border); border-radius: var(--radius-md); background: var(--canvas); overflow: hidden; }
.recent-work-head {
  min-height: 40px; padding: 9px 13px; border-bottom: 1px solid var(--line);
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
}
.recent-work-head strong { font-size: var(--font-caption); }
.overview-recent-jobs { min-height: 112px; }
.recent-job {
  width: 100%; padding: 9px 13px; border: 0; border-bottom: 1px solid var(--line);
  background: var(--canvas); color: var(--ink); text-align: left; cursor: pointer;
  display: grid; grid-template-columns: 7px minmax(0, 1fr) auto 14px; gap: 10px; align-items: center;
}
.recent-job:last-child { border-bottom: 0; }
.recent-job:hover { background: var(--surface); }
.recent-job-status { width: 7px; height: 7px; border-radius: 50%; background: var(--st-dot, var(--tertiary)); }
.recent-job-main { min-width: 0; display: grid; gap: 3px; }
.recent-job-main strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--font-ui); }
.recent-job-main small { color: var(--tertiary); font-size: var(--font-caption); }
.recent-job-state { color: var(--muted); font-size: var(--font-caption); }
.recent-job-arrow { color: var(--accent-strong); font-size: var(--font-reading); transition: transform .15s; }
.recent-job:hover .recent-job-arrow { transform: translateX(3px); }
.overview-empty { padding: 20px 16px; text-align: center; }
.overview-empty > span { font-size: var(--font-caption); font-weight: 700; }
.overview-empty p { margin: 4px auto 11px; font-size: var(--font-caption); }

/* ===== §5 页面：核查向导（步骤条 / 主体 / 站点树 / 输出） ======================= */
.stepper {
  list-style: none; margin: 0 0 20px; padding: 0 0 14px; border-bottom: 1px solid var(--line);
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;
}
.stepper li { display: flex; align-items: center; gap: 10px; color: var(--tertiary); }
.stepper li > span {
  width: 30px; height: 30px; border: 1px solid var(--line); border-radius: 50%;
  display: grid; place-items: center; font-size: var(--font-caption); font-weight: 700;
}
.stepper li div { display: grid; }
.stepper strong { font-size: var(--font-ui); }
.stepper small { margin-top: 2px; font-size: var(--font-caption); }
.stepper li.active, .stepper li.done { color: var(--ink); }
/* 已完成步骤可点击返回：hover 提示可交互 */
.stepper li.done { cursor: pointer; }
.stepper li.done:hover strong { color: var(--accent-strong); text-decoration: underline; text-underline-offset: 3px; }
.stepper li.done:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--radius-xs); }
.stepper li.active > span { color: white; border-color: var(--accent); background: var(--accent); }
.stepper li.done > span { color: var(--status-success); border-color: var(--status-success-border); background: var(--status-success-tint); }

.section-heading {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 18px; margin-bottom: 15px;
}
.service-selector {
  min-width: 0; margin: 0 0 18px; padding: 0 0 16px;
  border: 0; border-bottom: 1px solid var(--line);
}
.service-selector legend {
  margin-bottom: 10px; padding: 0; color: var(--muted); font-size: var(--font-caption); font-weight: 700;
}
.option-grid.service-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.option-grid.service-grid:has(> [hidden]) { grid-template-columns: 1fr; }
.penetration-settings {
  display: grid; gap: 18px; padding: 18px 18px 6px;
  border: 1px solid var(--accent-border); border-radius: var(--radius-md); background: var(--accent-tint);
}
.service-callout {
  padding: 14px 16px; border: 0; border-left: 3px solid var(--accent);
  border-radius: 0; background: var(--surface);
}
.service-callout strong { display: block; margin-bottom: 4px; color: var(--ink); }
.accuracy-note {
  padding: 11px 13px; border-left: 3px solid var(--status-success);
  background: var(--status-success-tint); color: var(--status-success-strong);
}
.button-row, .wizard-actions, .job-actions, .export-create { display: flex; align-items: center; gap: 8px; }
.subject-list { display: grid; gap: 0; border-top: 1px solid var(--line); }
.subject-row {
  display: grid; grid-template-columns: 105px minmax(220px, 1.4fr) minmax(190px, 1fr) minmax(170px, .8fr) auto;
  gap: 10px; align-items: end; padding: 14px 2px;
  border: 0; border-bottom: 1px solid var(--line);
  border-radius: 0; background: transparent;
}
.subject-row:has(label:nth-of-type(2):last-of-type) { grid-template-columns: 105px minmax(240px, 1.5fr) minmax(220px, 1fr) auto; }
.subject-row label, .field { display: grid; gap: 5px; }
.subject-row label span, .field span, .search-field span { color: var(--muted); font-size: var(--font-caption); font-weight: 650; }
/* 管道符分隔的结构化数据录入：等宽字体对齐列，降低漏列错位 */
.mono-data, .paste-box textarea {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size: var(--font-caption); line-height: 1.65;
}
input, select, textarea {
  width: 100%; border: 1px solid var(--input-border); border-radius: var(--radius-xs);
  background: var(--input-bg);
  color: var(--ink); min-height: var(--control-height); padding: 8px 10px; outline: none;
}
input:focus, select:focus, textarea:focus {
  border-color: var(--accent); box-shadow: 0 0 0 3px var(--focus-ring);
}
input::placeholder, textarea::placeholder { color: var(--input-placeholder); }
textarea { resize: vertical; line-height: 1.5; }
.icon-button {
  min-height: var(--control-height); padding: 7px 13px; border: 1px solid var(--line); border-radius: var(--radius-xs);
  background: transparent; color: var(--status-danger); font-size: var(--font-caption); font-weight: 650; cursor: pointer;
  transition: border-color .15s, background .15s, color .15s;
}
.icon-button:hover:not(:disabled) { border-color: var(--status-danger-border); background: var(--status-danger-tint); }
.icon-button:disabled { color: var(--tertiary); cursor: not-allowed; border-color: var(--line); }

.import-box, .metadata-box, .advanced-output {
  margin-top: 18px; border: 0; border-top: 1px solid var(--line);
  border-radius: 0; background: transparent;
}
.import-box summary, .metadata-box summary, .advanced-output summary {
  padding: 14px 2px; cursor: pointer; font-size: var(--font-ui); font-weight: 700;
}
/* 第三步「高级设置」收纳：署名 + 合规与保留统一折叠，降低首屏密度 */
.advanced-settings { margin-top: 18px; padding: 4px 16px; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface); }
.advanced-settings > summary {
  padding: 13px 0; cursor: pointer; font-size: var(--font-ui); font-weight: 700;
  display: flex; align-items: center; gap: 8px;
}
.advanced-settings > summary small { color: var(--muted); font-weight: 500; }
.advanced-settings[open] > summary { border-bottom: 1px solid var(--line); }
.advanced-settings .metadata-box { margin-top: 0; border-top: 0; }
.advanced-settings .metadata-box + .metadata-box { border-top: 1px solid var(--line); }
.import-grid { padding: 0 0 16px; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.upload-zone, .paste-box {
  min-height: 136px; padding: 16px; border: 1px dashed var(--line-strong);
  border-radius: var(--radius-sm); display: grid; align-content: center; gap: 7px; background: var(--surface);
}
.upload-zone { cursor: pointer; }
.upload-zone span { color: var(--muted); font-size: var(--font-ui); line-height: 1.5; }
.upload-zone input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.paste-box { align-content: stretch; }
/* 粘贴识别结果预览：勾选确认后才进入名单 */
.paste-preview {
  display: grid; gap: 8px; padding: 12px;
  border: 1px solid var(--line); border-radius: var(--radius-xs); background: var(--canvas);
}
.paste-preview[hidden] { display: none; }
.paste-preview-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.paste-preview-head strong { font-size: var(--font-ui); }
.paste-preview-head span { color: var(--muted); font-size: var(--font-caption); }
.paste-preview-list {
  display: grid; gap: 2px; max-height: 264px; overflow-y: auto;
  border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 6px 0;
}
.paste-preview-row {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto;
  align-items: center; gap: 10px; padding: 7px 6px;
  border-radius: var(--radius-xs); cursor: pointer;
}
.paste-preview-row:hover { background: var(--surface); }
.paste-preview-row.blocked { cursor: not-allowed; opacity: .72; }
.paste-preview-row input { width: 15px; min-height: 15px; }
.paste-preview-main { min-width: 0; display: grid; gap: 2px; }
.paste-preview-main strong {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--font-ui);
}
.paste-preview-detail { display: flex; gap: 8px; flex-wrap: wrap; }
.paste-preview-detail code { font-size: var(--font-micro); color: var(--tertiary); }
.paste-preview-tag {
  padding: 1px 8px; border-radius: 999px;
  background: var(--surface); color: var(--muted); font-size: var(--font-micro); font-weight: 650; white-space: nowrap;
}
.paste-preview-note { color: var(--tertiary); font-size: var(--font-micro); white-space: nowrap; }
.paste-preview-note.warn { color: var(--status-warning); font-weight: 650; }
.paste-preview-actions {
  display: flex; align-items: center; gap: 9px; justify-content: flex-end;
}
.paste-preview-actions > span { margin-right: auto; color: var(--muted); font-size: var(--font-caption); }
.inline-feedback { margin: 0 0 15px; padding: 10px 12px; border-radius: var(--radius-xs); background: var(--accent-tint); font-size: var(--font-caption); }
.inline-feedback.success { color: var(--status-success); background: var(--status-success-tint); }
.inline-feedback.warning { color: var(--status-warning); background: var(--status-warning-tint); }
.inline-feedback.error { color: var(--status-danger); background: var(--status-danger-tint); }

.option-grid, .profile-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
/* 可选卡片（单选/多选场景）共享同一外观 */
.option-card, .profile-card {
  position: relative; display: flex; gap: 11px; padding: 15px; border: 1px solid var(--card-border);
  border-radius: var(--radius-md); cursor: pointer; background: var(--canvas);
  box-shadow: var(--card-edge); transition: border-color .15s, background .15s, box-shadow .15s;
}
.option-card:hover, .profile-card:hover {
  border-color: var(--accent-border); box-shadow: var(--card-hover-shadow);
}
.option-card:has(input:checked), .profile-card:has(input:checked) {
  border-color: var(--accent-border-strong); background: var(--accent-tint);
}
/* 静态展示类卡片（模块卡 / 套餐卡 / 指标卡）复用同一圆角与阴影 */
.module-card, .billing-offer, .analysis-metrics > div, .analysis-result-grid section { border-radius: var(--radius-md); }
.option-card input, .profile-card input { width: 16px; height: 16px; min-height: 16px; flex: 0 0 auto; align-self: flex-start; margin-top: 2px; }
.option-card > span, .profile-card > span:last-child { display: grid; gap: 5px; }
.option-card small, .profile-card small { color: var(--muted); line-height: 1.45; font-size: var(--font-ui); }
.profile-card em { color: var(--accent-strong); font-size: var(--font-caption); font-style: normal; font-weight: 700; }
.compact-field, .region-field { max-width: 280px; margin-top: 15px; }
.search-field { display: grid; gap: 6px; min-width: 220px; max-width: 560px; }
.site-toolbar, .jobs-toolbar {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 12px;
}
.site-toolbar .search-field { flex: 1 1 360px; }
.filter-pills {
  display: flex; flex-wrap: wrap; align-items: center; gap: 5px;
}
.filter-pill {
  min-height: 32px; padding: 5px 9px;
  border: 1px solid var(--line); border-radius: 999px;
  background: var(--canvas); color: var(--muted); cursor: pointer; font-size: var(--font-caption); font-weight: 700;
}
.filter-pill:hover { border-color: var(--accent-border); color: var(--ink); }
.filter-pill.active {
  border-color: var(--accent-border-strong); background: var(--accent-tint); color: var(--accent-strong);
}
.selection-note {
  min-height: 24px; color: var(--muted); font-size: var(--font-caption); margin: 10px 0 8px;
  display: flex; align-items: center; gap: 9px;
}
.selection-note span + span { padding-left: 9px; border-left: 1px solid var(--line); }
.selection-note .text-button { margin-left: auto; }

/* ---- 第二步：智能推荐面板 + 分组站点树 ---- */
.recommend-panel {
  padding: 15px 16px 13px; margin-bottom: 16px;
  border: 1px solid var(--card-border); border-radius: var(--radius-md);
  background: var(--canvas); box-shadow: var(--card-edge);
}
.recommend-panel[data-state="loading"] { border-color: var(--accent-border); }
.recommend-panel[data-state="error"] { border-color: var(--status-danger-border); }
.recommend-controls {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px;
  padding-top: 12px;
}
.recommend-controls .field { margin-top: 0; flex: 0 1 auto; }
.recommend-controls .field-hint { display: block; }
.recommend-controls .btn { min-height: 38px; }
.recommend-summary { display: grid; gap: 5px; }
/* 站点树折叠：模块直达默认收起，summary 携带当前勾选数 */
.site-tree-fold > summary {
  padding: 2px 0; color: var(--muted); font-size: var(--font-caption); font-weight: 650; cursor: pointer;
}
.site-tree-fold > summary small { margin-left: 6px; color: var(--tertiary); font-weight: 500; }
/* 推荐控件默认收起：摘要先行，需要调整时才展开 */
.recommend-tune { margin-top: 12px; padding-top: 11px; border-top: 1px solid var(--line); }
.recommend-tune > summary {
  color: var(--muted); font-size: var(--font-caption); font-weight: 650; cursor: pointer;
}
.recommend-headline { margin: 0; font-size: var(--font-ui); color: var(--ink); }
.recommend-headline strong { color: var(--accent-strong); font-size: var(--font-ui); }
.recommend-basis { margin: 0; color: var(--muted); font-size: var(--font-caption); }
.recommend-extra { margin: 0; color: var(--tertiary); font-size: var(--font-caption); }
.recommend-note { margin: 0; color: var(--muted); font-size: var(--font-caption); }
.recommend-note.warn { color: var(--status-warning); }

.site-scope-panel { border-top: 0; }
.site-group-list { display: grid; gap: 10px; max-height: 460px; overflow: auto; padding-right: 2px; }
.site-group { border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--canvas); }
.site-group-head {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px; border-bottom: 1px solid var(--line); background: var(--surface);
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
}
.site-group.is-collapsed .site-group-head { border-bottom: 0; border-radius: inherit; }
.site-group-check {
  display: flex; align-items: center; gap: 5px; cursor: pointer;
  color: var(--muted); font-size: var(--font-caption); font-weight: 700; flex: 0 0 auto;
}
.site-group-check input { width: 14px; min-height: 14px; }
.site-group-toggle {
  flex: 1; min-width: 0; display: flex; align-items: center; gap: 9px;
  padding: 3px 6px; border: 0; background: transparent; border-radius: var(--radius-xs);
  cursor: pointer; text-align: left; color: var(--ink); font-size: var(--font-ui); font-weight: 700;
}
.site-group-toggle:hover { background: var(--canvas); }
.site-group-count { color: var(--muted); font-size: var(--font-caption); font-weight: 500; }
.site-group-chevron { color: var(--muted); transition: transform .15s; }
.site-group.is-collapsed .site-group-chevron { transform: rotate(-90deg); }
.site-group-body { display: grid; gap: 6px; padding: 9px 10px; }
.site-group.is-collapsed .site-group-body { display: none; }

.site-item {
  padding: 8px 10px; border: 1px solid var(--line); border-radius: var(--radius-xs);
  display: flex; align-items: flex-start; gap: 8px; cursor: pointer; background: var(--canvas);
  transition: border-color .15s, background .15s;
}
.site-item:not(:has(input:checked)):hover {
  border-color: var(--accent-border); background: var(--surface);
}
.site-item:has(input:checked) { border-color: var(--accent-border); background: var(--accent-tint); }
.site-item input { width: 15px; min-height: 15px; margin-top: 2px; }
.site-item-main { display: grid; gap: 3px; min-width: 0; flex: 1; }
.site-item strong { font-size: var(--font-ui); }
.site-item small { color: var(--muted); font-size: var(--font-ui); overflow-wrap: anywhere; }
.site-item.is-recommended { border-left: 3px solid var(--accent); }
.site-item.is-breakthrough { background: var(--surface); }
.site-item.is-breakthrough:has(input:checked) { background: var(--accent-tint); }
.site-item-badges {
  display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px;
  flex: 0 0 auto; max-width: 46%; margin-top: 1px;
}
.site-badge {
  padding: 2px 7px; border-radius: 999px; font-size: var(--font-micro);
  font-weight: 700; border: 1px solid transparent; white-space: nowrap;
}
.site-badge.badge-reason { background: var(--accent-tint); color: var(--accent-strong); border-color: var(--accent-border); }
.site-badge.badge-ready { background: var(--status-success-tint); color: var(--status-success); border-color: var(--status-success-border); }
.site-badge.badge-breakthrough { background: var(--status-warning-tint); color: var(--status-warning); border-color: var(--status-warning-border); }
.site-badge.badge-person { background: var(--accent-tint); color: var(--accent-strong); border-color: var(--accent-border); }

/* 站点行检索目标说明：单行截断，悬停看全文（title 已带） */
.site-item-desc {
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  color: var(--tertiary);
}

/* ---- 站点家族卡：同构多地区站折叠为一行，展开平铺省份网格 ---- */
.site-family { border: 1px dashed var(--line); border-radius: var(--radius-xs); background: var(--surface); }
.site-family-head { display: flex; align-items: center; gap: 8px; padding: 7px 10px; }
.site-family-check { display: inline-flex; align-items: center; gap: 5px; font-size: var(--font-caption); color: var(--muted); cursor: pointer; white-space: nowrap; }
.site-family-check input { width: 14px; min-height: 14px; }
.site-family-toggle {
  flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px;
  padding: 3px 6px; border: 0; border-radius: var(--radius-xs);
  background: transparent; cursor: pointer; text-align: left;
}
.site-family-toggle:hover { background: var(--canvas); }
.site-family-title { display: grid; gap: 2px; min-width: 0; }
.site-family-title strong { font-size: var(--font-ui); }
.site-family-title small { color: var(--muted); font-size: var(--font-micro); font-weight: 500; white-space: nowrap; }
.site-family-desc {
  flex: 1; min-width: 0; color: var(--tertiary); font-size: var(--font-micro);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.site-family-note { color: var(--status-warning); font-size: var(--font-micro); white-space: nowrap; }
.site-family-count { color: var(--muted); font-size: var(--font-caption); font-weight: 500; white-space: nowrap; }
.site-family .site-group-chevron { color: var(--muted); transition: transform .15s; }
.site-family.is-collapsed .site-group-chevron { transform: rotate(-90deg); }
.site-family.is-collapsed .site-family-body { display: none; }
.site-family-body { display: grid; gap: 8px; padding: 4px 10px 10px; }
.site-family-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.site-family-tools input[type="search"] {
  margin-left: auto; width: 180px; padding: 4px 9px; font-size: var(--font-caption);
  border: 1px solid var(--line); border-radius: var(--radius-xs); background: var(--canvas);
}
.site-family-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); gap: 6px;
}
.site-family-item { flex-direction: row; align-items: center; padding: 6px 8px; gap: 6px; }
.site-family-item .site-item-badges { max-width: none; margin-top: 0; justify-content: flex-start; }
.site-family-item-main { display: flex; align-items: baseline; gap: 5px; min-width: 0; flex: 1; }
.site-family-item-main strong { font-size: var(--font-caption); white-space: nowrap; }
.site-family-item-main small { color: var(--tertiary); font-size: var(--font-micro); white-space: nowrap; }

.field-grid { padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
/* 穿透参数区的开关型字段：checkbox 顶行 + 说明文字折行 */
.field-check { align-content: start; }
.field-check input[type="checkbox"] { width: auto; min-height: 0; }
.field-check small { color: var(--tertiary); font-size: var(--font-caption); line-height: 1.45; }
.advanced-output-body { padding: 0 2px 16px; }
.toggle-line {
  display: flex; align-items: flex-start; gap: 9px; padding: 2px 0 14px;
  border-radius: 0; background: transparent;
}
.toggle-line input { width: 16px; min-height: 16px; margin-top: 2px; }
.toggle-line span { display: grid; gap: 3px; }
.toggle-line small, .template-hint { color: var(--muted); font-size: var(--font-caption); line-height: 1.5; }
.advanced-output-panel { margin-top: 14px; }
.advanced-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }
.advanced-columns section { min-width: 0; padding: 0 14px 0 0; border: 0; border-radius: 0; }
.advanced-columns section + section { padding: 0 0 0 14px; border-left: 1px solid var(--line); }
.advanced-columns h4 { margin: 0 0 9px; font-size: var(--font-caption); }
.advanced-columns h4 small { margin-left: 5px; color: var(--muted); font-size: var(--font-caption); font-weight: 500; }
.mini-choice-grid { display: flex; flex-wrap: wrap; gap: 7px; }
.mini-choice {
  display: flex; align-items: center; gap: 5px; padding: 6px 8px;
  border: 1px solid var(--line); border-radius: var(--radius-xs); font-size: var(--font-caption); cursor: pointer;
}
.mini-choice:has(input:checked) {
  border-color: var(--accent-border-strong); background: var(--accent-tint); color: var(--ink);
}
.mini-choice input { width: 14px; min-height: 14px; }
.advanced-fields { padding: 0; margin-bottom: 14px; }
.compact-toggle { margin-bottom: 14px; }
.header-footer-options { transition: opacity .12s ease; }
.header-footer-options.is-disabled { opacity: .5; }
.header-footer-options input:disabled { cursor: not-allowed; }
.evidence-naming-builder {
  margin: 0 0 16px; padding: 14px; border: 1px solid var(--line);
  border-radius: var(--radius-xs); background: var(--surface);
}
.naming-builder-head { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 11px; }
.naming-builder-head h4 { margin: 0 0 3px; font-size: var(--font-caption); }
.naming-builder-head small { color: var(--muted); font-size: var(--font-caption); }
.naming-order-grid {
  display: grid; grid-template-columns: repeat(5, minmax(105px, 1fr)); gap: 8px;
}
.naming-order-field { gap: 4px; }
.naming-preview {
  display: flex; align-items: baseline; gap: 10px; margin-top: 10px;
  color: var(--muted); font-size: var(--font-caption);
}
.naming-preview code {
  overflow-wrap: anywhere; color: var(--ink); font-size: var(--font-caption);
}
.naming-template-advanced { margin-top: 10px; }
.naming-template-advanced summary { color: var(--muted); cursor: pointer; font-size: var(--font-caption); }
.naming-template-advanced .field { margin-top: 9px; }
.naming-template-advanced .template-hint { margin-top: 7px; }
.template-hint { margin: 0; }
.check-field { display: flex; gap: 8px; align-items: center; padding-top: 20px; color: var(--muted); font-size: var(--font-caption); }
.check-field input { width: 16px; min-height: 16px; }
.plan-summary {
  margin-top: 22px; padding: 16px 0 0; border: 1px solid var(--line);
  border-width: 1px 0 0; border-radius: 0; background: transparent;
  color: var(--ink); display: grid; gap: 15px;
}
.plan-block { min-width: 0; display: grid; gap: 9px; }
.plan-block + .plan-block { padding-top: 13px; border-top: 1px solid var(--line); }
.plan-block-label {
  color: var(--tertiary); font-size: var(--font-caption); font-weight: 750;
  letter-spacing: .09em; text-transform: uppercase;
}
.plan-cells { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; }
.plan-cells > div { min-width: 0; display: grid; gap: 4px; padding: 0 16px; align-content: start; }
.plan-cells > div:first-child { padding-left: 2px; }
.plan-cells > div + div { border-left: 1px solid var(--line); }
.plan-cells span { color: var(--muted); font-size: var(--font-caption); }
.plan-cells strong { font-size: var(--font-stat); font-variant-numeric: tabular-nums; }
.plan-cells .formula strong { font-size: var(--font-heading); letter-spacing: -.01em; }
.plan-summary p { margin: 0; padding: 0 2px; color: var(--muted); font-size: var(--font-caption); }
.plan-summary .summary-warning {
  padding: 10px 12px; border: 1px solid var(--status-warning-border);
  border-radius: var(--radius-xs); background: var(--status-warning-tint); color: var(--status-warning-strong);
  font-size: var(--font-caption);
}
.summary-loading, .summary-error { color: var(--muted); font-size: var(--font-ui); }
.summary-error { color: var(--status-danger); }
/* 长表单的操作栏吸附在滚动区底部，任何步骤都可见 */
.wizard-actions {
  position: sticky; bottom: 0; z-index: 6;
  margin-top: 24px; padding: 14px 0 16px;
  border-top: 1px solid var(--line); background: var(--canvas);
  box-shadow: 0 -12px 28px rgba(16, 24, 40, .05);
  justify-content: flex-end;
}
.wizard-draft {
  display: inline-flex; align-items: center; gap: 4px;
  color: var(--tertiary); font-size: var(--font-caption); white-space: nowrap;
}
.form-error { margin-right: auto; color: var(--status-danger); font-size: var(--font-caption); }
.form-error:focus { outline: none; }
.form-error.shake { animation: form-error-shake .3s ease; }
@keyframes form-error-shake {
  20% { transform: translateX(-3px); } 40% { transform: translateX(3px); }
  60% { transform: translateX(-2px); } 80% { transform: translateX(2px); }
}

.btn {
  border: 1px solid var(--accent); border-radius: var(--radius-sm); background: var(--accent); color: white;
  min-height: var(--control-height); padding: 8px 13px;
  font-size: var(--font-ui); font-weight: 600; cursor: pointer;
  box-shadow: none; transition: background var(--motion-fast), border-color var(--motion-fast);
}
.btn:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
.btn:disabled { opacity: .55; cursor: wait; }
.btn.secondary { border-color: var(--card-border); background: var(--canvas); color: var(--ink); }
.btn.secondary:hover { border-color: var(--accent-border); background: var(--surface); color: var(--accent-strong); }
.btn.compact { min-height: var(--control-height-sm); padding: 6px 11px; font-size: var(--font-caption); }
.btn.danger { color: var(--status-danger); }
.text-button { padding: 0; border: 0; background: transparent; color: var(--accent-strong); cursor: pointer; }
.text-button:hover { text-decoration: underline; text-underline-offset: 3px; }
/* 键盘按键呈现：用于 ⌘K 等快捷键提示 */
kbd {
  display: inline-block; min-width: 20px; padding: 1px 5px; margin-right: 2px;
  border: 1px solid var(--line-strong); border-bottom-width: 2px; border-radius: var(--radius-xs);
  background: var(--surface); color: var(--ink); font: 650 var(--font-micro)/1.5 inherit;
  text-align: center; vertical-align: middle;
}
.btn kbd { margin-right: 6px; border-color: var(--accent-border); background: var(--accent-tint); }

/* ===== §6 页面：任务执行 · 核查档案 · 结果明细 ================================== */
/* 进度条：任务页大条与任务卡小条共用同一轨道令牌，仅高度不同 */
.progress-track {
  display: block; width: 100%; height: 9px; overflow: hidden; border: 0;
  border-radius: var(--radius-sm); background: var(--surface-hover); accent-color: var(--accent);
}
.progress-track::-webkit-progress-bar { border-radius: var(--radius-sm); background: var(--surface-hover); }
.progress-track::-webkit-progress-value { border-radius: var(--radius-sm); background: var(--accent); }
.progress-track::-moz-progress-bar { border-radius: var(--radius-sm); background: var(--accent); }
.progress-meta { display: flex; justify-content: space-between; margin: 8px 0 16px; color: var(--muted); font-size: var(--font-caption); }
.work-list {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 18px;
  max-height: 400px; overflow: auto; border-top: 1px solid var(--line);
}
.work-item {
  display: grid; grid-template-columns: 9px minmax(140px, 1fr) minmax(100px, 1fr) auto;
  gap: 8px; align-items: center; padding: 10px 2px;
  border: 0; border-bottom: 1px solid var(--line); border-radius: 0; font-size: var(--font-caption);
}
.work-item > span { color: var(--muted); overflow: hidden; text-overflow: ellipsis; }
.work-item em { color: var(--muted); font-style: normal; }
/* 状态 → 颜色的唯一映射：徽标、圆点、列表状态点通过 --st-* 变量继承 */
.status-queued, .status-running { --st-bg: var(--accent-tint); --st-fg: var(--accent-strong); --st-dot: var(--accent); }
.status-completed, .status-verified_hit, .status-verified_empty {
  --st-bg: var(--status-success-tint); --st-fg: var(--status-success); --st-dot: var(--status-success);
}
.status-completed_with_issues, .status-partial, .status-unverified, .status-mismatch,
.status-cancelled, .status-pending {
  --st-bg: var(--status-warning-tint); --st-fg: var(--status-warning); --st-dot: var(--status-warning);
}
.status-failed, .status-blocked, .status-error_page {
  --st-bg: var(--status-danger-tint); --st-fg: var(--status-danger); --st-dot: var(--status-danger);
}
.status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--st-dot, var(--tertiary)); }
.status-running .status-dot { animation: pulse 1.2s infinite; }
@keyframes pulse { 50% { opacity: .35; } }

.active-context, .jobs-overview {
  margin: 0 0 18px;
  display: grid; grid-template-columns: repeat(3, 1fr);
  border: 1px solid var(--line); border-width: 1px 0;
}
.active-context > div, .jobs-overview > div {
  min-width: 0; padding: 11px 14px; display: grid; gap: 4px;
  border-right: 1px solid var(--line);
}
.active-context > div:first-child, .jobs-overview > div:first-child { padding-left: 2px; }
.active-context > div:last-child, .jobs-overview > div:last-child { border-right: 0; }
.active-context span, .jobs-overview span { color: var(--muted); font-size: var(--font-caption); }
.active-context strong, .jobs-overview strong {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--font-ui);
}
.jobs-overview { grid-template-columns: repeat(4, 1fr); }
.jobs-overview strong { font-size: var(--font-stat); font-variant-numeric: tabular-nums; }
.jobs-toolbar {
  margin-bottom: 14px; padding: 12px 14px;
  border-radius: var(--radius-sm); background: var(--surface);
  justify-content: flex-start;
}
.jobs-toolbar .search-field { flex: 1 1 420px; max-width: none; }
.jobs-toolbar .compact-field { flex: 0 0 180px; max-width: none; margin: 0; }
.refresh-state { margin-left: auto; padding-bottom: 10px; color: var(--tertiary); font-size: var(--font-caption); white-space: nowrap; }

.jobs-list { display: grid; gap: 0; border-top: 1px solid var(--line); }
.job-card {
  display: grid; grid-template-columns: minmax(270px, 1.5fr) minmax(160px, .7fr) auto;
  align-items: center; gap: 18px; padding: 16px 2px;
  border: 0; border-bottom: 1px solid var(--line); border-radius: 0;
  background: transparent; transition: background .15s;
}
.job-card:hover { background: var(--surface); }
.job-title-line, .result-title-line { display: flex; align-items: center; gap: 10px; }
.job-main p { margin: 4px 0; font-size: var(--font-ui); }
.job-main small { color: var(--tertiary); font-size: var(--font-caption); }
.job-progress progress {
  display: block; width: 100%; height: 6px; overflow: hidden; border: 0;
  border-radius: var(--radius-xs); background: var(--surface-hover); accent-color: var(--accent);
}
.job-progress progress::-webkit-progress-bar { border-radius: var(--radius-xs); background: var(--surface-hover); }
.job-progress progress::-webkit-progress-value { border-radius: var(--radius-xs); background: var(--accent); }
.job-progress progress::-moz-progress-bar { border-radius: var(--radius-xs); background: var(--accent); }
.job-progress small { display: block; margin-top: 5px; color: var(--muted); text-align: right; }
.status-badge, .work-status {
  display: inline-block; padding: 3px 7px; border-radius: 999px;
  background: var(--st-bg, var(--surface-hover)); color: var(--st-fg, var(--muted));
  font-size: var(--font-caption); font-weight: 700;
}

.result-header { padding-bottom: 20px; border-bottom: 1px solid var(--line); }
.result-title-line { justify-content: space-between; margin-top: 18px; }
.result-header p { font-size: var(--font-ui); display: flex; align-items: center; gap: 9px; }
.copy-job-id { font-size: var(--font-caption); }
.result-alert {
  margin-top: 18px; padding: 13px 15px;
  border-left: 3px solid var(--status-warning); background: var(--status-warning-tint);
}
.result-alert strong { color: var(--status-warning-strong); font-size: var(--font-ui); }
.result-alert p { margin-top: 4px; color: var(--status-warning-strong); font-size: var(--font-ui); }
.result-guide {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  margin-top: 18px;
  padding: 16px 18px;
  border: 0; border-left: 3px solid var(--accent);
  border-radius: 0; background: var(--surface);
}
.result-guide h3 { margin: 3px 0 5px; }
.result-guide p, .section-help { margin: 0; color: var(--muted); font-size: var(--font-ui); }
.result-guide-actions { display: flex; align-items: center; gap: 8px; flex: 0 0 auto; }
.business-lenses { margin: 20px 0 0; }
.business-lens-head { display: flex; align-items: baseline; gap: 9px; margin-bottom: 9px; }
.business-lens-head .section-kicker { margin: 0; }
.business-lens-head h3 { font-size: var(--font-ui); }
.business-lens-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(185px, 1fr));
  border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); overflow: hidden;
}
.business-lens-grid.single-lens { grid-template-columns: minmax(260px, 420px); }
.business-lens {
  min-width: 0; padding: 13px 14px; border-right: 1px solid var(--line);
  display: grid; grid-template-columns: 29px minmax(0, 1fr); gap: 4px 9px; align-items: center;
}
.business-lens:last-child { border-right: 0; }
.lens-icon {
  grid-row: 1 / 3; width: 29px; height: 29px; border-radius: var(--radius-xs); display: grid; place-items: center;
  background: var(--accent-tint); color: var(--accent-strong); font-size: var(--font-caption); font-weight: 800;
}
.business-lens > div { min-width: 0; display: grid; gap: 1px; }
.business-lens strong { font-size: var(--font-reading); }
.business-lens small { color: var(--muted); font-size: var(--font-ui); }
.business-lens em { grid-column: 2; color: var(--status-success); font-size: var(--font-caption); font-style: normal; }
.business-lens em.has-issues { color: var(--status-warning); }
.metric-grid {
  display: grid; grid-template-columns: repeat(5, 1fr); gap: 0;
  margin: 20px 0; border: 1px solid var(--line); border-width: 1px 0;
}
.metric-grid > div {
  padding: 14px 16px; background: transparent; border: 0;
  border-right: 1px solid var(--line); border-radius: 0; display: grid; gap: 5px;
}
.metric-grid > div:first-child { padding-left: 2px; }
.metric-grid > div:last-child { border-right: 0; }
.metric-grid span { color: var(--muted); font-size: var(--font-caption); }
.metric-grid strong { font-size: var(--font-stat); font-variant-numeric: tabular-nums; }
.result-section { margin-top: 22px; }
.result-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.result-section-head > div { min-width: 0; }
.result-filters { justify-content: flex-end; }
.delivery-section {
  padding: 20px 0;
  border: 1px solid var(--line); border-width: 1px 0;
  border-radius: 0; background: transparent;
}
.subject-results { display: grid; gap: 8px; }
.export-list { display: grid; gap: 0; border-top: 1px solid var(--line); }
.subject-result { border: 1px solid var(--line); border-radius: var(--radius-sm); overflow: hidden; }
.subject-result summary {
  padding: 12px 14px; display: flex; justify-content: space-between; cursor: pointer;
  background: var(--surface); transition: background .15s;
}
.subject-result summary:hover { background: var(--surface-hover); }
.subject-result summary span { color: var(--muted); font-size: var(--font-caption); }
.result-table-wrap { overflow: auto; }
.result-table-wrap tbody tr { transition: background .12s; }
.result-table-wrap tbody tr:hover { background: var(--surface); }
table { width: 100%; border-collapse: collapse; font-size: var(--font-ui); font-variant-numeric: tabular-nums; }
th {
  background: transparent; color: var(--tertiary); text-align: left;
  font-size: var(--font-caption); font-weight: 650; border-top: 0; border-bottom: 1px solid var(--line-strong);
}
th, td { padding: 9px 11px; border-top: 1px solid var(--line); vertical-align: top; }
td strong, td small { display: block; }
td small { margin-top: 3px; color: var(--muted); }
.export-row {
  display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 12px;
  padding: 12px 2px; border: 0; border-bottom: 1px solid var(--line); border-radius: 0;
}
.export-row div { display: grid; gap: 3px; }
.export-row small, .export-row > span { color: var(--muted); font-size: var(--font-caption); }
.export-create select { min-height: 33px; }
.record-tools { display: flex; align-items: flex-end; gap: 10px; }
.compact-search { display: grid; gap: 4px; min-width: min(300px, 55vw); }
.compact-search span { color: var(--muted); font-size: var(--font-caption); }
.compact-search input { min-height: 33px; padding-block: 6px; }
.record-count { padding-bottom: 8px; color: var(--muted); font-size: var(--font-caption); white-space: nowrap; }
.record-list { display: grid; gap: 0; border-top: 1px solid var(--line); }
.record-card { border: 0; border-bottom: 1px solid var(--line); border-radius: 0; padding: 14px 2px; }
.record-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.record-card-head span { color: var(--muted); font-size: var(--font-caption); }
.record-card-head h4 { margin: 3px 0 0; font-size: var(--font-reading); }
.record-card-head a { white-space: nowrap; color: var(--accent-strong); font-size: var(--font-caption); }
.record-card > p { margin: 10px 0; color: var(--muted); font-size: var(--font-ui); }
.record-card dl { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px 14px; margin: 0; }
.record-card dl div { min-width: 0; }
.record-card dt { color: var(--muted); font-size: var(--font-caption); }
.record-card dd { margin: 1px 0 0; overflow-wrap: anywhere; font-size: var(--font-ui); }

/* ===== §7 页面：账号 ============================================================ */
/* 账户页：总览分区节奏与身份条 */
[data-account-section-panel="overview"] { display: grid; gap: 28px; }
.account-operator { margin: 0; color: var(--tertiary); font-size: var(--font-caption); line-height: 1.7; }
.account-operator a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.account-operator a:hover { color: var(--muted); }
.account-identity {
  display: flex; align-items: center; justify-content: space-between;
  gap: 22px 28px; flex-wrap: wrap;
}
.identity-main { display: flex; align-items: center; gap: 14px; min-width: 0; }
.identity-avatar {
  display: inline-flex; align-items: center; justify-content: center;
  width: 46px; height: 46px; flex: 0 0 auto;
  border-radius: var(--radius-md); background: var(--accent-tint); color: var(--accent-strong);
  font-size: var(--font-heading-lg); font-weight: 800;
}
.identity-copy { display: grid; gap: 3px; min-width: 0; }
.identity-name-line { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.identity-name-line strong { font-size: var(--font-heading); letter-spacing: -0.01em; }
.identity-copy p { margin: 0; color: var(--muted); font-size: var(--font-caption); }
.identity-meta {
  display: flex; gap: 8px 28px; flex-wrap: wrap; margin: 0;
  padding-left: 24px; border-left: 1px solid var(--line);
}
.identity-meta > div { display: grid; gap: 3px; min-width: 0; }
.identity-meta dt { color: var(--tertiary); font-size: var(--font-micro); font-weight: 650; letter-spacing: .05em; }
.identity-meta dd { margin: 0; color: var(--ink); font-size: var(--font-caption); font-weight: 650; }
.identity-meta code { font-size: var(--font-micro); color: var(--muted); }

/* 账户页：二级分区导航 */
.account-subnav {
  display: flex; gap: 2px; margin: 0 0 24px;
  border-bottom: 1px solid var(--line);
  overflow-x: auto; scrollbar-width: none;
}
.account-subnav::-webkit-scrollbar { display: none; }
.account-subnav button {
  padding: 9px 14px 10px; border: 0; background: transparent;
  border-bottom: 2px solid transparent; border-radius: var(--radius-xs) var(--radius-xs) 0 0;
  color: var(--muted); font-size: var(--font-ui); font-weight: 650; white-space: nowrap;
  cursor: pointer; transition: color .15s, background .15s, border-color .15s;
}
.account-subnav button:hover { color: var(--ink); background: var(--surface); }
.account-subnav button.on { color: var(--accent-strong); border-bottom-color: var(--accent); }


/* 账户页：余额统计卡 */
.account-grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px;
}
.account-grid > div {
  display: grid; gap: 6px; align-content: start; min-width: 0;
  padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius-md);
  background: var(--canvas);
}
.account-grid > div > span {
  color: var(--tertiary); font-size: var(--font-micro); font-weight: 650; letter-spacing: .05em;
}
.account-grid > div > strong {
  color: var(--ink); font-size: var(--font-stat); font-weight: 750; line-height: 1.3;
  font-variant-numeric: tabular-nums; letter-spacing: -0.01em;
}
.account-grid > div > code { font-size: var(--font-heading); font-weight: 700; line-height: 1.3; }
.account-grid .stat-hero {
  border-color: var(--accent);
  background: var(--accent);
}
.account-grid .stat-hero > span { color: rgba(255, 255, 255, .82); }
.account-grid .stat-hero > strong { color: #fff; font-size: var(--font-page-title); }
.account-grid .stat-hero > small { color: rgba(255, 255, 255, .72); font-size: var(--font-micro); }

/* 目录行内徽章：接口状态/角色的统一视觉锚点 */
.row-badge {
  display: inline-flex; align-items: center; justify-self: start;
  padding: 2px 9px; border-radius: 999px;
  font-size: var(--font-micro); font-weight: 700; line-height: 1.6; white-space: nowrap;
}
.row-badge.tone-green { background: var(--status-success-tint); color: var(--status-success); }
.row-badge.tone-amber { background: var(--status-warning-tint); color: var(--status-warning); }
.row-badge.tone-red { background: var(--status-danger-tint); color: var(--status-danger); }
.row-badge.tone-blue { background: var(--accent-tint); color: var(--accent-strong); }
.row-badge.tone-gray { background: var(--surface); color: var(--muted); }
.row-title-line { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; }
code { overflow-wrap: anywhere; font-size: var(--font-caption); }
/* ===== §8 通用浮层与反馈（对话框 / Toast / 骨架屏 / ⌘K 速查） ==================== */
.credential-dialog {
  width: min(500px, calc(100vw - 32px)); padding: 0; border: 1px solid var(--card-border);
  border-radius: var(--radius-lg); background: var(--canvas); color: var(--ink);
  box-shadow: var(--shadow-lg);
}
.credential-dialog::backdrop { background: var(--backdrop); backdrop-filter: blur(3px); }
.credential-dialog form { display: grid; gap: 16px; padding: 28px; }
.credential-dialog h2 { margin: -6px 0 0; font-size: var(--font-stat); }
.credential-dialog p { margin: 0; color: var(--muted); font-size: var(--font-ui); line-height: 1.65; }
.credential-dialog .field { display: grid; gap: 7px; }
.credential-dialog .field span { color: var(--muted); font-size: var(--font-caption); }
.credential-dialog input { width: 100%; }
.credential-dialog .credential-error { min-height: 18px; color: var(--status-danger); }
.mfa-enrollment { display: grid; justify-items: start; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--surface); }
.mfa-enrollment[hidden] { display: none; }
.mfa-enrollment img { width: 180px; height: 180px; padding: 8px; border-radius: 10px; background: #fff; }
.mfa-manual-key { max-width: 100%; overflow-wrap: anywhere; letter-spacing: .12em; user-select: all; }
.dialog-actions { display: flex; justify-content: flex-end; gap: 9px; }
.account-auth-shell { display: grid; gap: 15px; padding: 28px; }
.account-auth-shell h2 { margin: -5px 0 0; font-size: var(--font-stat); }
.account-auth-shell > p { margin: 0; }
.account-auth-tabs { display: grid; grid-template-columns: 1fr 1fr; border-bottom: 1px solid var(--line); }
.account-auth-tabs button { padding: 9px; border-bottom: 2px solid transparent; font-weight: 750; }
.account-auth-tabs button.on { border-bottom-color: var(--accent); color: var(--accent-strong); }
.account-auth-shell form { display: grid; gap: 13px; padding: 0; }
/* 注册引导说明与字段提示：降低首次使用认知负担 */
.auth-step-note { margin: 0; color: var(--muted); font-size: var(--font-ui); line-height: 1.55; }
.field-hint { color: var(--tertiary); font-size: var(--font-caption); line-height: 1.4; }
.check-row { display: flex; align-items: flex-start; gap: 8px; font-size: var(--font-caption); color: var(--muted); }
.check-row input { width: 15px; min-height: 15px; margin-top: 2px; flex: 0 0 auto; }
/* 对话框底部帮助折叠：压缩为次级链接形态，不与主表单争夺注意力 */
.account-verification-help { border-top: 1px solid var(--line); padding-top: 10px; }
.account-verification-help summary {
  color: var(--accent-strong); font-size: var(--font-caption); cursor: pointer; user-select: none;
}
.account-verification-help summary:hover { text-decoration: underline; }
.account-verification-help form { display: grid; gap: 9px; padding-top: 10px; }
.account-auth-shell form[hidden] { display: none; }
.account-auth-shell .field { display: grid; gap: 7px; }
.billing-account-grid code { color: var(--ink); font-weight: 650; }
.billing-commerce {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(250px, 320px);
  gap: 18px; align-items: start; margin-top: 24px;
}
.billing-offers { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; }
.billing-offer {
  min-width: 0; display: grid; gap: 12px; padding: 18px;
  border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--canvas);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.billing-offer:hover {
  border-color: var(--accent-border);
  box-shadow: var(--card-hover-shadow);
}
.billing-offer h4, .billing-checkout h3 { margin: 0; font-size: var(--font-reading); }
.billing-offer-price {
  color: var(--ink); font-size: var(--font-page-title); font-weight: 800;
  font-variant-numeric: tabular-nums; letter-spacing: -0.01em;
}
.billing-offer-meta { margin: 0; color: var(--muted); font-size: var(--font-ui); line-height: 1.55; }
.billing-offer .btn { justify-self: stretch; }
.billing-checkout {
  display: grid; justify-items: center; gap: 10px; padding: 18px;
  border: 1px solid var(--accent-border); border-radius: var(--radius-md); background: var(--accent-tint);
  text-align: center;
  position: sticky; top: 10px;
}
.billing-checkout img {
  width: min(220px, 100%); aspect-ratio: 1; padding: 8px; border-radius: var(--radius-xs);
  background: white; image-rendering: crisp-edges;
}
.billing-checkout > strong { font-size: var(--font-heading-lg); }
.billing-checkout > p { margin: 0; color: var(--muted); font-size: var(--font-caption); }
.billing-checkout > code { max-width: 100%; color: var(--tertiary); }
.checkout-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
.account-commercial-records {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px; margin-top: 28px;
}
.account-commercial-records > section { min-width: 0; }
.secondary-history { margin-top: 10px; }
.account-directory {
  display: grid; border: 1px solid var(--line); border-radius: var(--radius-md); overflow: hidden;
  background: var(--canvas);
}
.account-directory-row {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px;
  padding: 13px 16px; border-bottom: 1px solid var(--line);
  transition: background .12s;
}
.account-directory-row:hover { background: var(--surface); }
.account-directory-row:last-child { border-bottom: 0; }
.account-directory-row > div { min-width: 0; display: grid; gap: 3px; align-content: start; }
.account-directory-row > div > span {
  color: var(--tertiary); font-size: var(--font-micro); font-weight: 650; letter-spacing: .05em;
}
.account-directory-row strong, .account-directory-row code {
  overflow-wrap: anywhere; color: var(--ink); font-size: var(--font-ui);
}
.commercial-record-row > div:first-child strong { font-weight: 700; }
.member-add-form {
  display: grid; grid-template-columns: minmax(220px, 1fr) minmax(160px, .45fr) auto;
  gap: 12px; align-items: end; margin-bottom: 14px;
  padding: 14px; border: 1px solid var(--line); border-radius: var(--radius-md);
  background: var(--surface);
}
.member-add-form .field { display: grid; gap: 6px; }
.member-add-form .btn { align-self: end; }
.member-directory-row { grid-template-columns: minmax(0, .7fr) minmax(0, 1fr) auto; }
.member-controls { display: flex !important; flex-wrap: wrap; align-items: end; gap: 7px; }
.member-controls select { min-width: 128px; }
.commercial-record-row { grid-template-columns: minmax(0, 1.1fr) minmax(84px, .48fr) minmax(96px, .58fr) minmax(118px, .72fr) auto; }
.subscription-directory-row { grid-template-columns: minmax(0, 1fr) minmax(92px, .5fr) minmax(150px, 1fr) auto; }
.invoice-request-row { grid-template-columns: minmax(0, 1.1fr) minmax(84px, .48fr) minmax(88px, .52fr) minmax(118px, .72fr); }
.invoice-status {
  justify-self: start; display: inline-block; margin-top: 2px;
  padding: 2px 9px; border-radius: 999px;
  font-size: var(--font-caption); font-weight: 650; line-height: 1.5;
  background: var(--surface-hover); color: var(--muted);
}
.invoice-status-approved { background: var(--status-success-tint); color: var(--status-success); }
.invoice-status-rejected { background: var(--status-danger-tint); color: var(--status-danger); }
.commercial-record-actions {
  display: flex !important; flex-wrap: wrap; justify-content: flex-end;
  align-items: center; gap: 7px;
}
.tenant-directory-row { grid-template-columns: minmax(0, 1.2fr) minmax(96px, .55fr) minmax(0, 1fr) auto; }
.session-directory-row { grid-template-columns: minmax(0, 1.2fr) minmax(110px, .7fr) minmax(110px, .7fr) auto; }
.account-audit-panel { margin-top: 28px; }
.audit-event-row {
  grid-template-columns: minmax(0, .8fr) minmax(0, .55fr) minmax(0, 1.4fr) minmax(0, .8fr);
}
.audit-event-row time {
  overflow-wrap: anywhere; color: var(--ink); font-size: var(--font-caption); font-weight: 650;
}
.spend-limit-form {
  grid-template-columns: minmax(180px, 1fr) repeat(3, minmax(130px, .6fr)) auto auto;
}
.password-change-form {
  grid-template-columns: repeat(3, minmax(180px, 1fr)) auto;
}
.empty { grid-column: 1 / -1; padding: 32px 12px; color: var(--muted); text-align: center; font-size: var(--font-ui); }
.empty.slim { padding: 15px; }
/* 账号子分区锁定空态：账号体系未启用或未登录时的说明块 */
.account-locked-note { padding: 34px 18px; }
.account-locked-note .empty { padding: 26px 12px; }
.error-text { color: var(--status-danger); }
.empty .btn, .empty .text-button { margin-top: 12px; }

.toast-region {
  position: fixed; z-index: 1000; right: 22px; bottom: 22px;
  width: min(420px, calc(100vw - 32px));
  display: grid; gap: 8px; pointer-events: none;
}
.toast {
  pointer-events: auto;
  display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
  padding: 11px 14px; border: 0; border-radius: var(--radius-sm);
  background: var(--toast-bg); color: white; box-shadow: 0 12px 30px rgba(16, 24, 40, .18);
  font-size: var(--font-ui); line-height: 1.5;
  opacity: 0; transform: translateY(8px);
  transition: opacity .16s, transform .16s;
}
.toast.visible { opacity: 1; transform: translateY(0); }
.toast[data-tone="success"] { background: var(--toast-success); }
.toast[data-tone="warning"] { background: var(--toast-warning); }
.toast[data-tone="error"] { background: var(--toast-error); }
.toast-close {
  flex: 0 0 auto; margin: -2px -5px -2px 0; padding: 1px 6px;
  border: 0; background: transparent; color: rgba(255,255,255,.74);
  font-size: var(--font-reading); line-height: 1.2; cursor: pointer;
}
.toast-close:hover { color: white; }

/* 骨架屏加载占位 */
.skeleton-stack { display: grid; border-top: 1px solid var(--line); }
.skeleton-row {
  display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, .8fr) minmax(0, .5fr);
  gap: 18px; padding: 16px 2px; border-bottom: 1px solid var(--line); align-items: center;
}
.skeleton {
  display: block; min-height: 12px; border-radius: var(--radius-xs);
  background: linear-gradient(90deg, var(--surface) 25%, var(--surface-hover) 48%, var(--surface) 70%);
  background-size: 200% 100%; animation: skeleton-wave 1.4s ease infinite;
}
.skeleton-row:nth-child(3n+1) .skeleton:nth-child(1) { width: 62%; }
.skeleton-row:nth-child(3n+1) .skeleton:nth-child(2) { width: 38%; }
.skeleton-row:nth-child(3n+1) .skeleton:nth-child(3) { width: 46%; }
.skeleton-row:nth-child(3n+2) .skeleton:nth-child(1) { width: 48%; }
.skeleton-row:nth-child(3n+2) .skeleton:nth-child(2) { width: 30%; }
.skeleton-row:nth-child(3n+2) .skeleton:nth-child(3) { width: 58%; }
.skeleton-row:nth-child(3n) .skeleton:nth-child(1) { width: 55%; }
.skeleton-row:nth-child(3n) .skeleton:nth-child(2) { width: 44%; }
.skeleton-row:nth-child(3n) .skeleton:nth-child(3) { width: 38%; }
@keyframes skeleton-wave { to { background-position: -200% 0; } }

/* 内联 SVG 图标（sprite use） */
.icon { display: block; }
.nav-symbol .icon { width: 13px; height: 13px; }
.module-icon .icon { width: 17px; height: 17px; }
.lens-icon .icon { width: 15px; height: 15px; }
.user-avatar .icon { width: 13px; height: 13px; }

/* 长列表「显示更多」 */
.list-more { display: flex; justify-content: center; padding: 14px 0 4px; }

/* Cmd/Ctrl+K 主体速查 */
.quick-subject-dialog { width: min(560px, calc(100vw - 32px)); }
.quick-module-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.quick-module-grid button {
  min-height: 40px; border:  1px solid var(--line); border-radius: var(--radius-xs);
  background: var(--canvas); color: var(--ink); font-size: var(--font-caption); font-weight: 650; cursor: pointer;
}
.quick-module-grid button:hover { border-color: var(--accent-border); background: var(--surface); }
.quick-module-grid button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.quick-hint { margin: 0; color: var(--tertiary); font-size: var(--font-caption); }
@media (max-width: 520px) {
  .quick-module-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ===== §9 页面：专利侵权分析 ==================================================== */
.patent-analysis-workspace { display: grid; gap: 22px; }
.analysis-boundary {
  display: grid; grid-template-columns: auto 1fr; align-items: start; gap: 14px;
  padding: 17px 19px; border: 1px solid var(--accent-border); border-left: 4px solid var(--accent);
  border-radius: var(--radius-md); background: var(--accent-tint);
}
.analysis-boundary strong { color: var(--accent-strong); white-space: nowrap; }
.analysis-boundary p { margin: 0; color: var(--ink); }
.analysis-form { display: grid; gap: 18px; }
.analysis-section {
  display: grid; gap: 17px; padding: 22px;
  border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--canvas);
}
.analysis-section .section-heading { margin-bottom: 0; }
.analysis-section .compact-heading h2 { font-size: var(--font-stat); }
.analysis-field-grid, .analysis-two-column {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px;
}
.analysis-section .field { display: grid; gap: 7px; }
.analysis-section .field > span, .implementation-actions legend {
  color: var(--muted); font-size: var(--font-caption); font-weight: 700;
}
.analysis-import-box {
  padding: 0; border: 1px dashed var(--line-strong); border-radius: var(--radius-md);
  background: var(--surface);
}
.analysis-import-box summary {
  padding: 14px 16px; color: var(--ink); font-size: var(--font-ui); font-weight: 700; cursor: pointer;
}
.analysis-import-content {
  display: flex; align-items: center; gap: 12px; padding: 0 16px 16px;
}
.analysis-import-content .upload-zone { min-width: 0; flex: 1; }
.automatic-drawing-note {
  display: flex; align-items: flex-start; gap: 12px; padding: 13px 15px;
  border: 1px solid var(--status-success-border); border-radius: var(--radius-xs); background: var(--status-success-tint);
  color: var(--ink); font-size: var(--font-ui); line-height: 1.55;
}
.automatic-drawing-note strong { flex: 0 0 auto; color: var(--status-success); }
.implementation-actions {
  display: flex; flex-wrap: wrap; gap: 9px 16px; margin: 0; padding: 0; border: 0;
}
.implementation-actions legend { width: 100%; margin-bottom: 2px; }
.implementation-actions label {
  display: inline-flex; align-items: center; gap: 7px; min-height: 34px; padding: 7px 11px;
  border: 1px solid var(--line); border-radius: var(--radius-xs); background: var(--surface); font-size: var(--font-ui);
  cursor: pointer; transition: border-color .15s, background .15s;
}
.implementation-actions label:hover { border-color: var(--accent-border); background: var(--surface); }
.implementation-actions label:has(input:checked) {
  border-color: var(--accent-border-strong); background: var(--accent-tint);
}
.implementation-actions input { accent-color: var(--accent); }
.analysis-submit-row {
  position: sticky; bottom: 12px; z-index: 6;
  display: flex; justify-content: space-between; align-items: center; gap: 20px;
  padding: 18px 22px; border: 1px solid var(--line-strong); border-radius: var(--radius-md);
  background: var(--surface); box-shadow: var(--shadow-sm);
}
.analysis-submit-row p { margin-top: 4px; }
.analysis-result {
  display: grid; gap: 20px; padding: 23px;
  border: 1px solid var(--status-success-border); border-radius: var(--radius-md); background: var(--surface);
}
.analysis-result-header {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;
  padding-bottom: 17px; border-bottom: 1px solid var(--status-success-border);
}
.analysis-result-header h2 { margin-top: 3px; }
.analysis-result-header p { max-width: 820px; color: var(--ink); }
.analysis-metrics {
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px;
}
.analysis-metrics > div {
  display: grid; gap: 4px; padding: 15px; min-width: 0;
  border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--canvas);
}
.analysis-metrics span, .analysis-metrics small { color: var(--muted); font-size: var(--font-caption); }
.analysis-metrics strong { font-size: var(--font-page-title); font-variant-numeric: tabular-nums; }
.analysis-result-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.analysis-result-grid section {
  padding: 17px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--canvas);
}
.analysis-result-grid h3 { margin-bottom: 10px; }
.analysis-result-grid ul, .analysis-result-grid ol {
  display: grid; gap: 8px; margin: 0; padding-left: 21px; color: var(--ink); font-size: var(--font-ui); line-height: 1.55;
}
.markdown-preview { border-top: 1px solid var(--status-success-border); padding-top: 15px; }
.markdown-preview summary { color: var(--accent-strong); font-size: var(--font-ui); font-weight: 700; cursor: pointer; }
.markdown-preview pre {
  max-height: 560px; margin: 14px 0 0; padding: 17px; overflow: auto;
  border: 1px solid var(--line); border-radius: var(--radius-xs); background: var(--surface);
  color: var(--ink); font: var(--font-caption)/1.65 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  white-space: pre-wrap; overflow-wrap: anywhere;
}

/* ===== §10 响应式 ============================================================== */
@media (min-width: 1600px) {
  /* 大屏只放大令牌，不再逐元素覆盖字号 */
  :root {
    --sidebar-width: clamp(208px, 13vw, 232px);
    --content-gutter: clamp(36px, 2.5vw, 44px);
    --font-page-title: 1.625rem;
    --font-hero-title: 2rem;
  }
  .sidebar { padding-left: clamp(14px, 1vw, 18px); padding-right: clamp(14px, 1vw, 18px); }
  .topbar { padding-top: clamp(24px, 2vw, 30px); padding-bottom: 18px; }
  .record-card dl { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 1000px) {
  body { --sidebar-width: 190px; }
  .subject-row { grid-template-columns: 100px 1fr 1fr; }
  .subject-row .icon-button { grid-column: -2 / -1; }
  .option-grid, .profile-grid { grid-template-columns: repeat(2, 1fr); }
  .choice-grid { grid-template-columns: repeat(3, 1fr); }
  .job-card { grid-template-columns: 1fr auto; }
  .job-progress { grid-column: 1 / -1; grid-row: 2; }
  .metric-grid { grid-template-columns: repeat(3, 1fr); }
  .metric-grid > div:nth-child(3) { border-right: 0; }
  .metric-grid > div:nth-child(n+4) { border-top: 1px solid var(--line); }
  .analysis-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .module-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .overview-activity { grid-template-columns: 1fr; gap: 24px; }
  .billing-commerce { grid-template-columns: 1fr; }
  .billing-checkout { justify-self: stretch; position: static; }
  .account-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .account-commercial-records { grid-template-columns: 1fr; }
  .spend-limit-form, .password-change-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
  body { display: block; height: auto; min-height: 100vh; overflow: auto; }
  .sidebar {
    position: sticky; z-index: 20; top: 0; width: 100%; height: auto; padding: 9px 12px;
    display: flex; flex-direction: row; flex-wrap: nowrap;
    align-items: center; gap: 8px; overflow-x: auto; overflow-y: hidden;
    overscroll-behavior-x: contain;
    border-bottom: 1px solid var(--line); box-shadow: var(--shadow-sm);
  }
  /* 横向导航溢出的续示提示：固定在视口右上、不随内容滚动、不拦截点击。
     挂在 body 上而不是 .sidebar 内，避免绝对定位元素被滚动带走。 */
  body::after {
    content: ""; position: fixed; top: 0; right: 0; z-index: 30;
    width: 34px; height: 57px; pointer-events: none;
    /* functional-gradient: 横向导航滚动续示遮罩（功能性，非装饰） */
    background: linear-gradient(90deg, transparent, var(--page-bg));
  }
  .brand { flex: 0 0 auto; margin: 0 8px 0 0; }
  .brand-mark { width: 28px; height: 28px; border-radius: var(--radius-xs); font-size: var(--font-reading); }
  .brand-copy small, .sidebar-label { display: none; }
  .nav { min-height: 36px; width: auto; white-space: nowrap; padding: 5px 8px; }
  .nav-symbol { width: 22px; height: 22px; flex-basis: 22px; }
  .sidebar-section, .sidebar-section + .sidebar-section { flex: 0 0 auto; margin: 0; }
  .sidebar-section nav { display: flex; }
  .sidebar-foot { flex: 0 0 auto; margin-left: auto; padding: 0; border: 0; }
  .user-summary { display: none; }
  .main {
    width: 100%; min-height: calc(100vh - 57px); margin: 0; overflow: visible;
    border-width: 0; border-radius: 0;
  }
  .topbar { padding: 18px 16px 12px; align-items: flex-start; }
  .tab-panel { padding: 14px 16px 36px; }
  .notice { margin: 16px 16px 0; }
  .stepper small { display: none; }
  .stepper li div { display: grid; }
  .stepper li { justify-content: center; gap: 6px; }
  .stepper strong { font-size: var(--font-caption); white-space: nowrap; }
  .section-heading, .result-section-head, .result-guide { display: grid; }
  .subject-row, .subject-row:has(label:nth-of-type(2):last-of-type) { grid-template-columns: 1fr; }
  .subject-row .icon-button { grid-column: auto; justify-self: start; }
  .import-grid, .option-grid, .profile-grid, .field-grid, .work-list { grid-template-columns: 1fr; }
  .option-grid.service-grid { grid-template-columns: 1fr; }
  .naming-order-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .advanced-columns { grid-template-columns: 1fr; }
  .advanced-columns section,
  .advanced-columns section + section { padding: 0; border-left: 0; }
  .advanced-columns section + section { margin-top: 16px; }
  .choice-grid { grid-template-columns: repeat(2, 1fr); }
  .plan-cells { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 12px; }
  .plan-cells > div { padding: 0 12px; }
  .plan-cells > div:nth-child(odd) { padding-left: 2px; border-left: 0; }
  .job-card { grid-template-columns: 1fr; }
  .job-progress { grid-column: auto; grid-row: auto; }
  .job-actions { justify-content: flex-start; }
  .result-guide-actions { align-items: stretch; display: grid; }
  .metric-grid { grid-template-columns: repeat(2, 1fr); }
  .metric-grid > div,
  .metric-grid > div:nth-child(3) { border-right: 0; }
  .metric-grid > div:nth-child(odd) { border-right: 1px solid var(--line); }
  .metric-grid > div:nth-child(n+3) { border-top: 1px solid var(--line); }
  .export-row { grid-template-columns: 1fr auto; }
  .export-row .btn { grid-column: 1 / -1; }
  .account-identity { display: grid; justify-items: start; }
  .identity-meta { padding-left: 0; border-left: 0; }
  .account-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .account-grid .stat-hero { grid-column: 1 / -1; }
  .account-directory-row, .member-add-form, .password-change-form,
  .account-commercial-records, .spend-limit-form { grid-template-columns: 1fr; }
  .member-controls { align-items: stretch; }
  .member-add-form .btn { justify-self: start; }
  .record-card dl { grid-template-columns: 1fr; }
  .site-toolbar, .jobs-toolbar { display: grid; align-items: stretch; }
  .site-toolbar .search-field, .jobs-toolbar .search-field,
  .jobs-toolbar .compact-field { min-width: 0; width: 100%; max-width: none; }
  .filter-pills { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 2px; }
  .filter-pill { flex: 0 0 auto; }
  .refresh-state { margin-left: 0; padding-bottom: 0; }
  .active-context, .jobs-overview { grid-template-columns: repeat(2, 1fr); }
  .active-context > div:nth-child(2), .jobs-overview > div:nth-child(2) { border-right: 0; }
  .active-context > div:nth-child(n+3), .jobs-overview > div:nth-child(n+3) { border-top: 1px solid var(--line); }
  .result-filters { justify-content: flex-start; }
  .record-tools { display: grid; align-items: stretch; }
  .compact-search { min-width: 0; width: 100%; }
  .record-count { padding-bottom: 0; }
  .toast-region { right: 16px; bottom: 16px; }
  .analysis-boundary { grid-template-columns: 1fr; }
  .analysis-field-grid, .analysis-two-column, .analysis-result-grid { grid-template-columns: 1fr; }
  .analysis-submit-row, .analysis-result-header { align-items: stretch; flex-direction: column; }
  .analysis-submit-row .button-row { width: 100%; }
  .analysis-submit-row .btn { flex: 1; }
  .analysis-import-content { align-items: stretch; flex-direction: column; }
  .overview-panel { padding-top: 2px; }
  .overview-hero h2 { font-size: 1.3125rem; }
  .module-section { padding-top: 22px; }
  .module-heading { display: grid; align-items: start; }
  .catalog-summary { justify-self: start; white-space: normal; }
  .module-grid { grid-template-columns: 1fr; }
  .overview-activity { padding: 15px 16px; grid-template-columns: 1fr; }
}

@media (max-width: 520px) {
  .brand-copy { display: none; }
  .paste-preview-row { grid-template-columns: auto minmax(0, 1fr); }
  .paste-preview-tag, .paste-preview-note { grid-column: 2; justify-self: start; }
  .nav-copy strong { font-size: var(--font-caption); }
  .nav-symbol { display: none; }
  .sidebar { gap: 4px; }
  .sidebar-foot .btn { min-height: 32px; padding-inline: 8px; }
  .topbar p { font-size: var(--font-caption); }
  .notice { align-items: flex-start; gap: 10px; }
  .topbar { display: grid; }
  .topbar-action, .topbar-actions .btn.secondary { display: none; }
  .topbar-actions { justify-content: flex-end; }
  .overview-search > div { display: grid; }
  .overview-search .btn { width: 100%; }
  .overview-metrics > div { padding: 9px 9px; }
  .recent-job { grid-template-columns: 7px minmax(0, 1fr) 14px; }
  .recent-job-state { display: none; }
}

/* Patent analysis form simplification ------------------------------------- */
.patent-import-banner {
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
  padding: 11px 16px; border: 1px solid var(--status-success-border); border-left: 4px solid var(--status-success);
  border-radius: var(--radius-md); background: var(--status-success-tint);
}
.patent-import-banner .refresh-state { color: var(--ink); font-size: var(--font-ui); font-weight: 600; }
.patent-optional-material .patent-optional-body { display: grid; gap: 16px; padding-top: 8px; }
.patent-optional-material .analysis-section {
  box-shadow: none; background: var(--surface); padding: 18px;
}
.column-hint {
  display: block; margin-top: 1px;
  color: var(--muted); font: var(--font-caption)/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  word-break: break-all;
}
.analysis-section .analysis-two-column code.column-hint { margin-top: -8px; }

/* ===== §11 暗色主题（仅令牌覆盖，组件不改） ===================================== */
/* 暗色主题：只覆盖令牌，组件无需改动（aimail dark 值系）。
   theme.js 会把「跟随系统」解析为显式 data-theme（含系统偏好变化监听），
   因此这里只需要一份属性块，不再需要 prefers-color-scheme 媒体查询兜底。
   accent 基色与 -hover 不覆盖：实底按钮/进度在暗色下保持品牌蓝，仅强调
   文字（--accent-strong）与衍生层转浅蓝。 */
html[data-theme="dark"] {
  color-scheme: dark;
  background: var(--page-bg);
  --page-bg: #12151a;
  --canvas: #191d23;
  --surface: #222831;
  --surface-hover: #282f39;
  --hover-bg: rgba(255, 255, 255, .05);
  --tile-bg: rgba(255, 255, 255, .07);
  --line: #2b313a;
  --line-strong: #3b4450;
  --card-border: #2b313a;
  --ink: #eef1f4;
  --muted: #a8b0bd;
  --tertiary: #7f8998;
  --accent-strong: #9db7ee;
  --accent-tint: #1b2a45;
  --accent-border: rgba(157, 183, 238, .35);
  --accent-border-strong: rgba(157, 183, 238, .5);
  --focus-ring: rgba(37, 99, 235, .5);
  --status-success: #7fd6ac;
  --status-success-strong: #a9ebc6;
  --status-success-tint: #16302a;
  --status-success-border: rgba(127, 214, 172, .3);
  --status-warning: #e3b56d;
  --status-warning-strong: #f0cf96;
  --status-warning-tint: rgba(212, 139, 39, .16);
  --status-warning-border: rgba(227, 181, 109, .3);
  --status-danger: #ef9a94;
  --status-danger-tint: #3a2423;
  --status-danger-border: #5b3230;
  --input-bg: #161b22;
  --input-border: #3b4450;
  --input-placeholder: #7f8998;
  --toast-bg: #39424f;
  --backdrop: rgba(0, 0, 0, .5);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);
  --shadow-lg: 0 24px 60px rgba(0, 0, 0, .55);
  --card-hover-shadow: 0 1px 2px rgba(0, 0, 0, .3);
  --module-compliance-fg: #e2a294;
  --module-qualification-fg: #7fd2a4;
  --module-shareholder-fg: #a8b0f0;
  --module-assets-fg: #83ccdd;
  --module-patent-fg: #d1bd8a;
}

/* ===== §12 动效降级 ========================================================== */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
