* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
       background:#f4f6fb; color:#1c2333; display:flex; min-height:100vh; }
#sidebar { width:200px; background:#141b31; color:#c6cede; padding:20px 0; flex-shrink:0;
           display:flex; flex-direction:column; position:sticky; top:0; height:100vh; }
.logo { padding:0 20px 18px; font-size:18px; font-weight:700; color:#fff; }
.logo span { color:#6ee7d8; }
#sidebar nav { display:flex; flex-direction:column; }
#sidebar nav a { padding:11px 20px; color:#9aa5bd; text-decoration:none; font-size:14px;
                 display:flex; align-items:center; justify-content:space-between; gap:8px; }
#sidebar nav a.active { background:#1f2a4a; color:#fff; border-right:3px solid #6ee7d8; }
#sidebar nav a:hover { color:#fff; }
.nav-badge { font-size:10px; font-weight:700; padding:1.5px 7px; border-radius:99px;
             background:#6ee7d8; color:#0f1729; letter-spacing:.3px; flex-shrink:0; }
.nav-badge.running { animation:tf-pulse 1.5s ease-in-out infinite; }
.nav-badge.done { background:#3ddc97; }
.nav-badge.failed { background:#ff9c9c; }
@keyframes tf-pulse { 0%,100% { opacity:1 } 50% { opacity:.4 } }
.sys-status { margin-top:auto; padding:14px 20px; font-size:12px; color:#6ee7d8; }
.sys-status.err { color:#ff9c9c; }
#main { flex:1; padding:28px 32px; max-width:1200px; }
h1.page-title { font-size:22px; margin-bottom:4px; }
.page-sub { color:#77809a; font-size:13px; margin-bottom:22px; }
.loading { color:#77809a; padding:40px 0; }
.cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:14px; margin-bottom:24px; }
.card { background:#fff; border:1px solid #e3e8f2; border-radius:12px; padding:16px 18px; }
.card .kpi { font-size:26px; font-weight:700; color:#2f4bd7; }
.card .kpi-label { font-size:12.5px; color:#77809a; margin-top:2px; }
.panel { background:#fff; border:1px solid #e3e8f2; border-radius:12px; padding:20px 22px; margin-bottom:20px; }
.panel h3 { font-size:15px; margin-bottom:12px; }
table { width:100%; border-collapse:collapse; font-size:13px; }
th, td { text-align:left; padding:8px 10px; border-bottom:1px solid #eef1f7; }
th { color:#77809a; font-weight:500; font-size:12px; }
tr:hover td { background:#f8faff; }
a.link { color:#2f4bd7; text-decoration:none; cursor:pointer; }
.tag { display:inline-block; padding:2px 9px; border-radius:99px; font-size:11.5px; background:#eef2ff; color:#2f4bd7; margin:1px 2px; }
.tag.green { background:#e3f8f2; color:#0d9268; }
.tag.red { background:#ffeaea; color:#d43d3d; }
.tag.gray { background:#f0f2f7; color:#77809a; }
.tag.orange { background:#fff3e0; color:#e08a00; }
.btn { padding:9px 20px; border:none; border-radius:9px; background:#2f4bd7; color:#fff;
       font-size:14px; cursor:pointer; }
.btn:disabled { opacity:.5; cursor:default; }
.btn.ghost { background:#fff; color:#2f4bd7; border:1px solid #c8d2f5; }
.btn-primary { padding:5px 14px; border:none; border-radius:8px; background:#2f4bd7; color:#fff;
              font-size:13px; cursor:pointer; margin-left:8px; vertical-align:middle; }
.btn-primary:disabled { opacity:.5; cursor:default; }
.revise-status { background:#f0f4ff; border:1px solid #d3ddfb; border-radius:10px; padding:14px 18px;
                font-size:13.5px; margin-top:14px; display:none; line-height:1.7; }
.revise-status.done { background:#e3f8f2; border-color:#bfeedd; color:#0d9268; }
.revise-status.failed { background:#ffeaea; border-color:#ffcfcf; color:#d43d3d; }
select, input { padding:9px 12px; border:1px solid #d5dbea; border-radius:9px; font-size:14px; background:#fff; }
.toolbar { display:flex; gap:12px; align-items:center; margin-bottom:20px; flex-wrap:wrap; }
.job-box { background:#f0f4ff; border:1px solid #d3ddfb; border-radius:10px; padding:14px 18px;
           font-size:13.5px; margin-top:16px; display:none; }
.job-box.show { display:block; position:relative; padding-right:38px; }
.job-elapsed { display:inline-block; margin-left:10px; font-size:11.5px; color:#77809a;
               background:#fff; border:1px solid #d3ddfb; border-radius:99px; padding:1px 9px; }
.job-close { position:absolute; top:10px; right:12px; border:none; background:transparent;
             color:#9aa5bd; font-size:13px; cursor:pointer; line-height:1; padding:2px 4px; }
.job-close:hover { color:#2f4bd7; }
.tabs { display:flex; gap:4px; border-bottom:1px solid #e3e8f2; margin-bottom:18px; flex-wrap:wrap; }
.tabs a { padding:9px 16px; font-size:13.5px; color:#77809a; text-decoration:none; cursor:pointer; }
.tabs a.active { color:#2f4bd7; border-bottom:2px solid #2f4bd7; font-weight:600; }
.article-body h4 { margin:18px 0 6px; font-size:15px; }
.article-body p { font-size:14px; line-height:1.9; color:#333c52; }
.cite { color:#2f4bd7; font-weight:700; font-size:11px; cursor:help; margin:0 1px; }
.trace-step { border-left:3px solid #2f4bd7; padding:10px 16px; margin-bottom:10px; background:#f8faff; border-radius:0 8px 8px 0; }
.trace-step .agent { font-weight:600; font-size:13.5px; }
.trace-step .meta { font-size:11.5px; color:#77809a; margin:3px 0; }
.trace-step .decision { font-size:13px; color:#333c52; }
.trace-step.degraded { border-left-color:#e08a00; }
.trace-step.failed { border-left-color:#d43d3d; }
pre.json { background:#0f1526; color:#b7e4d8; padding:16px; border-radius:10px; font-size:12px;
           overflow:auto; max-height:420px; }
.brief-grid { display:grid; grid-template-columns:110px 1fr; gap:6px 14px; font-size:13.5px; }
.brief-grid dt { color:#77809a; }
.brief-grid dd { color:#1c2333; }
.market-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(330px,1fr)); gap:16px; }
.market-card h3 { display:flex; justify-content:space-between; align-items:center; }
.market-card .section { margin-top:10px; font-size:13px; }
.market-card .section b { color:#2f4bd7; font-size:12px; display:block; margin-bottom:3px; }
.market-card ul { padding-left:18px; color:#333c52; line-height:1.7; font-size:12.5px; }
/* ---------- 多形态：结构化渲染 ---------- */
.fmt-block { border:1px solid #e3e8f2; border-radius:10px; padding:14px 16px; margin-bottom:14px; }
.fmt-block h5 { font-size:13.5px; color:#2f4bd7; margin-bottom:10px; }
.fmt-desc { color:#9aa5bd; font-weight:400; font-size:11.5px; margin-left:8px; }
.fmt-k { display:inline-block; min-width:60px; font-size:11.5px; color:#77809a; margin-right:8px; }
.fmt-row { display:flex; align-items:baseline; gap:4px; margin-top:8px; font-size:13px; color:#333c52; }
.fmt-row > span:last-child { flex:1; }
.fmt-hook { background:#f0f4ff; border-radius:8px; padding:9px 12px; font-size:13.5px;
            color:#1c2333; margin-bottom:10px; }
.fmt-title { font-size:14.5px; font-weight:600; color:#1c2333; margin-bottom:8px; line-height:1.5; }
.fmt-p { font-size:13.5px; line-height:1.8; color:#333c52; }
.fmt-points { padding-left:20px; margin:4px 0; }
.fmt-points li { font-size:13px; line-height:1.75; color:#333c52; margin-bottom:5px; }
.fmt-stat { margin-top:10px; background:#e3f8f2; border-radius:8px; padding:8px 12px; font-size:13px; color:#0d9268; }
.fmt-quote { border-left:3px solid #2f4bd7; padding:6px 0 6px 12px; font-size:13.5px; color:#1c2333; }
table.scenes { margin:6px 0 2px; }
table.scenes td { font-size:12.5px; line-height:1.7; vertical-align:top; color:#333c52; }
.sc-n { color:#2f4bd7; font-weight:700; }
.sc-shot { color:#77809a; }
.sc-sub { color:#0d9268; }
.kv-grid { display:grid; grid-template-columns:120px 1fr; gap:5px 14px; font-size:13px; }
.kv-grid dt { color:#77809a; }
.kv-grid dd { color:#333c52; }
.kv-grid.sub { margin:2px 0; grid-template-columns:96px 1fr; }
.kv-card { border-left:2px solid #e3e8f2; padding-left:10px; margin-bottom:8px; }
.muted { color:#9aa5bd; }

/* 真实信号溯源卡片 */
.sig-list { list-style:none; padding:0; margin:14px 0 0; display:flex; flex-direction:column; gap:12px; }
.sig-item { border:1px solid #e3e8f2; border-radius:10px; padding:12px 14px; background:#fbfcff; }
.sig-title { font-weight:600; font-size:14px; color:#1f2a44; line-height:1.4; margin-bottom:6px; }
.sig-meta { display:flex; flex-wrap:wrap; gap:4px; align-items:center; font-size:12px; }
.sig-angle { margin-top:6px; font-size:12.5px; color:#5b6781; }
.sig-angle::before { content:"💡 "; }
.tag.block { display:inline-block; margin:2px 3px 2px 0; }

/* ---------- 中文对照（面向中文运营的双语审核视图） ---------- */
.zh-bar { display:flex; align-items:center; flex-wrap:wrap; gap:10px; padding:9px 12px; margin-bottom:14px;
          background:#f7f9ff; border:1px solid #e3e8f2; border-radius:9px; }
.zh-lab { font-size:12px; color:#77809a; }
.seg-group { display:inline-flex; border:1px solid #d9e0f0; border-radius:7px; overflow:hidden; background:#fff; }
.seg { padding:4px 12px; font-size:12px; color:#77809a; cursor:pointer; user-select:none;
       border-right:1px solid #eef1f7; }
.seg:last-child { border-right:none; }
.seg.on { background:#2f4bd7; color:#fff; }
.seg:hover:not(.on) { background:#f0f4ff; color:#2f4bd7; }
.zh-note { font-size:11.5px; color:#9aa5bd; margin-left:auto; }
.zh-note.err { color:#e08a00; }
.zh-loading { color:#9aa5bd; font-style:italic; font-size:12px; }
.zh-line { display:block; color:#0d7a8f; font-size:12.5px; line-height:1.7; margin-top:2px;
           padding-left:9px; border-left:2px solid #cfe6ec; }
.tag .zh-line { display:inline; border:none; padding-left:5px; margin-left:4px; color:#0d7a8f; }
.finding { padding:10px 14px; background:#f0f4ff; border-radius:8px; margin-bottom:8px; font-size:13.5px; }
.rank { display:inline-block; min-width:22px; height:22px; line-height:22px; text-align:center;
        background:#2f4bd7; color:#fff; border-radius:6px; font-size:12px; font-weight:700; margin-right:6px; vertical-align:1px; }
.suggestion { padding:10px 14px; background:#e3f8f2; border-radius:8px; margin-bottom:8px; font-size:13.5px; }

/* ---------- 分析中心（M2） ---------- */
.charts-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(380px,1fr)); gap:18px; }
.chart-card { background:#fff; border:1px solid #e3e8f2; border-radius:12px; padding:18px 20px; margin-bottom:4px;
              display:flex; flex-direction:column; }
.chart-head { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:6px; }
.chart-head h3 { font-size:14.5px; font-weight:600; color:#1f2a44; }
.chart-body { margin:8px 0 4px; }
.chart-svg { width:100%; height:auto; display:block; }
.chart-note { font-size:12px; color:#9aa5bd; line-height:1.65; margin:6px 0 0; }
.stat-big { font-size:30px; font-weight:700; color:#2f4bd7; line-height:1.1; }
.stat-suffix { font-size:14px; color:#77809a; font-weight:400; margin-left:3px; }
.stat-sub { font-size:12.5px; color:#77809a; margin-top:3px; }
.sql-reveal { margin-top:12px; border-top:1px dashed #e6eaf2; padding-top:10px; }
.sql-reveal summary { cursor:pointer; font-size:12.5px; color:#2f4bd7; user-select:none; }
.sql-reveal summary:hover { color:#1f2a44; }
.sql-reveal pre { background:#0f1526; color:#b7e4d8; padding:12px 14px; border-radius:8px; font-size:11.5px;
                 overflow:auto; max-height:320px; margin-top:8px; white-space:pre; line-height:1.5; }
.legend { display:flex; flex-wrap:wrap; gap:10px; margin-top:8px; font-size:11.5px; color:#77809a; }
.legend .lg { display:inline-flex; align-items:center; gap:5px; }
.legend .lg i { width:10px; height:10px; border-radius:2px; display:inline-block; }
.heat-table { margin-top:6px; font-size:12px; }
.heat-table th { font-size:11px; }
.heat-table td { text-align:center; font-variant-numeric:tabular-nums; color:#1c2333; }
.heat-table td.hm-label { text-align:left; color:#55607a; font-weight:500; }

/* ---------- 迭代闭环（M3） ---------- */
.tag.blue { background:#eaf0ff; color:#2f4bd7; }
.diff { background:#0f1526; color:#c8d3ff; padding:12px 14px; border-radius:8px; font-size:11.5px;
        overflow:auto; max-height:360px; margin-top:10px; white-space:pre; line-height:1.5;
        font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }

/* ---------- 人工校准（Evaluate 段人机闭环） ---------- */
.dimblk { margin:8px 0 2px; }
.dim { display:flex; align-items:center; gap:10px; margin:4px 0; }
.dim label { width:96px; font-size:13px; color:#55607a; }
.dim > input[type=range] { flex:1; }
.dim .val { width:34px; text-align:center; font-weight:600; color:#4338ca; }
.reason { width:100%; font-size:12px; margin:2px 0 4px; box-sizing:border-box; resize:vertical;
          min-height:32px; border:1px solid #e5e7eb; border-radius:6px; padding:5px 7px;
          font-family:inherit; color:#374151; }
.excerpt { font-size:13px; color:#374151; background:#f8fafc; border-left:3px solid #c7d2fe;
           padding:8px 10px; margin:8px 0; max-height:320px; overflow:auto; line-height:1.7; white-space:pre-wrap; }
.md h2 { font-size:18px; margin:14px 0 6px; }
.md h3 { font-size:15px; margin:12px 0 4px; color:#2f3a52; }
.md h4 { font-size:13.5px; margin:10px 0 3px; color:#374151; }
.md p { margin:5px 0; line-height:1.6; }
.md ul { margin:4px 0 4px 18px; }
.md li { margin:2px 0; }
.md blockquote { margin:8px 0; padding:8px 12px; background:#f4f8ff; border-left:3px solid #4338ca;
                 color:#33415c; border-radius:0 6px 6px 0; font-size:13px; }
.md table.grid { border-collapse:collapse; margin:8px 0; width:100%; font-size:12.5px; }
.md table.grid td { border:1px solid #e5e7eb; padding:5px 8px; }
.chart-wrap { margin:10px 0; }
.chart-wrap svg { width:100%; height:auto; background:#fff; border:1px solid #eef0f3; border-radius:8px; }
/* 校准页徽标 */
.badge { display:inline-block; font-size:11px; padding:1px 7px; border-radius:99px;
         background:#eef0f3; color:#444; margin-right:4px; }
.badge.green { background:#dcfce7; color:#166534; }
/* 校准页：单篇提交 */
.card-actions { display:flex; align-items:center; gap:10px; margin:10px 0 2px; }
.btn.sm { padding:5px 12px; font-size:12.5px; }
/* 校准页评分滑块：负 margin 让 1/5 分能拖到最左/最右；
   填充渐变放在轨道伪元素上（与滑块同坐标系），由 --p 变量驱动，左侧填充/右侧空 */
.dim-range-wrap { flex:1; min-width:0; }
.cal-range { -webkit-appearance:none; appearance:none; width:calc(100% + 16px); margin-left:-8px;
  height:6px; border-radius:99px; background:transparent; outline:none; cursor:pointer; }
.cal-range::-webkit-slider-runnable-track { height:6px; border-radius:99px;
  background: linear-gradient(to right, #4338ca 0%, #4338ca var(--p,50%), #e5e7eb var(--p,50%), #e5e7eb 100%); }
.cal-range::-moz-range-track { height:6px; border-radius:99px;
  background: linear-gradient(to right, #4338ca 0%, #4338ca var(--p,50%), #e5e7eb var(--p,50%), #e5e7eb 100%); }
.cal-range::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:18px; height:18px;
  border-radius:50%; background:#fff; border:3px solid #4338ca; box-shadow:0 1px 3px rgba(0,0,0,.25);
  margin-top:-6px; cursor:pointer; }
.cal-range::-moz-range-thumb { width:18px; height:18px; border:3px solid #4338ca; border-radius:50%; background:#fff; cursor:pointer; }

/* 标题单元格：完整标题，超宽时优雅省略（末尾 …），hover 看全量；不再硬截断断词。 */
.title-cell { display:inline-block; max-width:300px; white-space:nowrap; overflow:hidden;
              text-overflow:ellipsis; vertical-align:bottom; }

/* 运行历史：同选题重跑的旧版本整行灰显，突出最新一条，消除"重复内容"体感（第四条） */
tr.dup-old { opacity: .5; }
tr.dup-old:hover { opacity: 1; }

/* ---------- v2.1 审计整改：toast / 待办 / Agent 进度链 / 零值空态 / 校准折叠 ---------- */
#toast-wrap { position:fixed; right:20px; bottom:20px; z-index:999; display:flex; flex-direction:column; gap:10px; max-width:380px; }
.toast { background:#1f2a4a; color:#fff; padding:12px 16px; border-radius:10px; font-size:13px;
         box-shadow:0 6px 24px rgba(20,27,49,.25); animation:toast-in .25s ease; }
.toast.err { background:#8f2828; }
.toast.out { opacity:0; transition:opacity .35s; }
@keyframes toast-in { from { transform:translateY(8px); opacity:0 } to { transform:none; opacity:1 } }

.todo-panel { border-left:4px solid #6ee7d8; }
.todo-item { padding:6px 0; font-size:13.5px; border-bottom:1px dashed #eef1f7; }
.todo-item:last-child { border-bottom:none; }

.ag-chain { display:flex; flex-wrap:wrap; align-items:center; gap:4px; margin-top:8px; }
.ag-step { font-size:11.5px; padding:2px 8px; border-radius:99px; background:#f0f2f7; color:#77809a; }
.ag-step.now { background:#2f4bd7; color:#fff; font-weight:600; }
.ag-arrow { color:#c3cade; font-style:normal; font-size:10px; }

.chart-zero { border:1px dashed #d7deec; border-radius:8px; padding:22px 16px; color:#77809a;
              font-size:12.5px; text-align:center; background:#fafbfe; }

.cal-excerpt { max-height:230px; overflow:auto; background:#f8f9fd; border:1px solid #eef1f7;
               border-radius:8px; padding:10px 12px; font-size:12.5px; line-height:1.8; color:#3c465c; white-space:pre-wrap; }

.revise-advice { border-left:4px solid #e08a00; font-size:13px; line-height:1.7; }
.fallback-note { border-left:4px solid #e08a00; color:#8a5a00; font-size:12.5px; padding:10px 14px; }

/* ---------- 2026-09-12 全站审计整改：新增样式 ---------- */
/* 仿真/合成数据的诚实标注：凡区块自带，不依赖用户去别页看说明 */
.sim-banner, .synthetic-note { border-left:4px solid #e08a00; background:#fffaf0; color:#8a5a00;
  font-size:12.5px; line-height:1.75; padding:10px 14px; border-radius:0 8px 8px 0; margin-bottom:16px; }
.sim-banner code { background:#f3ece0; padding:1px 5px; border-radius:4px; font-size:12px; }
/* Tab 分主次：过程证据类（质量/Trace）视觉后退 */
.tabs-sep { align-self:center; padding:0 8px; color:#c2c9d8; font-size:12px; letter-spacing:1px; }
.tabs a.tab-ev { color:#9aa3b8; }
.tabs a.tab-ev.active { color:#2f4bd7; }
/* 沉淀区（muted section）用于分析中心分组标题 */
.chart-group { margin:26px 0 4px; display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.chart-group h2 { font-size:16px; margin:0; }
.chart-group .grp-desc { font-size:12px; color:#77809a; }
/* 系统进化：采纳效果回收对比卡 */
.impact-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:14px; }
.impact-card { border:1px solid #e3e8f2; border-radius:10px; padding:12px 14px; background:#fbfcfe; }
.impact-card h4 { font-size:13px; margin-bottom:8px; }
.impact-row { display:flex; justify-content:space-between; font-size:12.5px; padding:3px 0; color:#4a5470; }
.impact-row b { font-variant-numeric:tabular-nums; }
.impact-delta { margin-top:8px; font-size:12.5px; padding-top:8px; border-top:1px dashed #e3e8f2; }
.impact-up { color:#0d9268; font-weight:600; }
.impact-down { color:#d43d3d; font-weight:600; }
.impact-flat { color:#77809a; }
/* 让 <a> 也能用 .btn 样式（评估中心「生成迭代建议 →」跳转按钮） */
a.btn { text-decoration:none; display:inline-flex; align-items:center; }
a.btn:hover { filter:brightness(.96); text-decoration:none; }
/* 双语文案里的中文对照行（避免与英文正文糊在一起） */
.zh-line { padding-left:6px; }

details.sql-reveal summary { cursor:pointer; font-size:12px; color:#55607a; }

/* ---------- 响应式：窄屏侧边栏折叠为顶部导航，表格横向滚动 ---------- */
@media (max-width: 900px) {
  body { flex-direction:column; }
  #sidebar { width:100%; height:auto; position:static; padding:10px 0 4px; flex-direction:column; }
  .logo { padding:0 16px 8px; font-size:16px; }
  #sidebar nav { flex-direction:row; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  #sidebar nav a { padding:8px 12px; white-space:nowrap; border-right:none; border-bottom:3px solid transparent; }
  #sidebar nav a.active { border-bottom-color:#6ee7d8; background:#1f2a4a; }
  .sys-status { margin-top:4px; padding:6px 16px; }
  #main { padding:16px; max-width:100%; }
  .panel { padding:14px; overflow-x:auto; }
  .cards { grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; }
  .toolbar { flex-wrap:wrap; }
  h1.page-title { font-size:19px; }
}
