/* ============================================================
   科技企业资质申报工作台 — 样式
   ============================================================ */

:root {
  --brand: #1e4fd8;
  --brand-dark: #163a9e;
  --brand-soft: #eef3ff;
  --brand-line: #d6e0f5;
  --ok: #0a9e5c;
  --ok-soft: #e8f7ef;
  --warn: #e08b00;
  --warn-soft: #fff5e6;
  --danger: #d92b2b;
  --danger-soft: #fdecec;
  --ink: #1a2233;
  --ink-2: #44506b;
  --ink-3: #5d6c8a;
  --ink-4: #62718f;
  --bg: #f4f7fc;
  --card: #ffffff;
  --line: #e4eaf5;
  --shadow: 0 1px 2px rgba(26, 34, 51, .05), 0 6px 20px rgba(26, 34, 51, .06);
  --radius: 12px;
  --mono: "JetBrains Mono", Consolas, Menlo, monospace;
}

html[data-theme="dark"] {
  --brand: #5b8cff;
  --brand-dark: #3f6fe8;
  --brand-soft: #16203a;
  --brand-line: #24304e;
  --ok: #35d18a;
  --ok-soft: #102a20;
  --warn: #f0b429;
  --warn-soft: #2b2210;
  --danger: #ff6b6b;
  --danger-soft: #2e1515;
  --ink: #e8edf7;
  --ink-2: #c2ccdf;
  --ink-3: #93a0ba;
  --ink-4: #7b89a5;
  --bg: #0f1420;
  --card: #171e2e;
  --line: #26314a;
  --shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 6px 20px rgba(0, 0, 0, .35);
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: "PingFang SC", "HarmonyOS Sans SC", "MiSans", system-ui, "Segoe UI", "Microsoft YaHei", sans-serif;
  background: var(--bg);
  color: var(--ink);
  font-size: 14px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

/* ---------- 布局 ---------- */
.app { display: flex; min-height: 100vh; }

.sidebar {
  width: 232px;
  flex: 0 0 232px;
  background: var(--card);
  border-right: 1px solid var(--line);
  padding: 20px 14px;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow-y: auto;
}

.logo { display: flex; align-items: center; gap: 10px; padding: 0 6px 18px; border-bottom: 1px solid var(--line); margin-bottom: 14px; }
.logo-mark {
  width: 36px; height: 36px; border-radius:10px; flex: 0 0 36px;
  background: linear-gradient(135deg, #1e4fd8, #5b8cff);
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 800; font-size: 15px; letter-spacing: -.5px;
}
.logo-txt b { display: block; font-size: 14px; line-height: 1.3; }
.logo-txt span { font-size:12.5px; color: var(--ink-3); }

.nav { display: flex; flex-direction: column; gap: 2px; }
.nav-item {
  display: flex; align-items: center; gap: 10px;
  padding: 9px 11px; border-radius:8px; cursor: pointer;
  color: var(--ink-2); font-size: 13.5px; user-select: none;
  border: none; background: none; width: 100%; text-align: left; font-family: inherit;
  transition: background .15s, color .15s;
}
.nav-item:hover { background: var(--brand-soft); color: var(--brand); }
.nav-item.active { background: var(--brand); color: #fff; font-weight: 600; }
.nav-item .ico { font-size: 15px; width: 18px; text-align: center; }
.nav-sep { font-size:12.5px; color: var(--ink-4); padding: 14px 11px 6px; letter-spacing: .5px; }

.side-foot { margin-top: 18px; padding: 12px 11px; border-top: 1px solid var(--line); font-size:12.5px; color: var(--ink-4); line-height: 1.6; }

.main { flex: 1; min-width: 0; padding: 26px 30px 60px; max-width: 1500px; }

/* 未登录：整页显示（隐藏侧栏，首页全宽） */
.app.no-side .sidebar { display: none; }
.app.no-side .main { max-width: none; }

.page-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 20px; flex-wrap: wrap; }
.page-head h1 { font-size: 21px; margin: 0 0 5px; letter-spacing: -.3px; }
.page-head p { margin: 0; color: var(--ink-3); font-size: 13px; }
.head-actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* ---------- 通用控件 ---------- */
.btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 15px; border-radius:8px; border: 1px solid var(--line);
  background: var(--card); color: var(--ink-2); cursor: pointer;
  font-size: 13px; font-family: inherit; font-weight: 500;
  transition: all .15s; white-space: nowrap;
}
.btn:hover { border-color: var(--brand); color: var(--brand); background: var(--brand-soft); }
.btn-primary { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn-primary:hover { background: var(--brand-dark); border-color: var(--brand-dark); color: #fff; }
.btn-sm { padding: 5px 11px; font-size:13px; }
.btn-ghost { border-color: transparent; background: transparent; }

.card {
  background: var(--card); border: 1px solid var(--line);
  border-radius:var(--radius); padding: 18px 20px; box-shadow: var(--shadow);
  margin-bottom: 16px;
}
.card > h2 { font-size: 15.5px; margin: 0 0 4px; }
.card > .sub { color: var(--ink-3); font-size:13px; margin: 0 0 14px; }

.grid { display: grid; gap: 14px; }
.g2 { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); }
.g3 { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.g4 { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }

/* ---------- 统计卡 ---------- */
.stat { background: var(--card); border: 1px solid var(--line); border-radius:var(--radius); padding: 15px 17px; box-shadow: var(--shadow); }
.stat .n { font-size: 24px; font-weight: 800; letter-spacing: -.5px; line-height: 1.2; }
.stat .l { font-size:13px; color: var(--ink-3); margin-top: 2px; }
.stat .x { font-size:12.5px; color: var(--ink-4); margin-top: 6px; }
.c-brand { color: var(--brand); }
.c-ok { color: var(--ok); }
.c-warn { color: var(--warn); }
.c-danger { color: var(--danger); }

/* ---------- 徽标 ---------- */
.tag { display: inline-block; padding: 2px 8px; border-radius:20px; font-size:12.5px; font-weight: 600; line-height: 1.7; white-space: nowrap; }
.t-brand { background: var(--brand-soft); color: var(--brand); }
.t-ok { background: var(--ok-soft); color: var(--ok); }
.t-warn { background: var(--warn-soft); color: var(--warn); }
.t-danger { background: var(--danger-soft); color: var(--danger); }
.t-mute { background: var(--bg); color: var(--ink-3); border: 1px solid var(--line); }

/* ---------- 表格 ---------- */
.tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.tbl th { background: var(--brand-soft); color: var(--brand); text-align: left; padding: 8px 10px; border: 1px solid var(--brand-line); font-weight: 600; font-size:13px; }
.tbl td { padding: 8px 10px; border: 1px solid var(--line); vertical-align: top; }
.tbl tr:hover td { background: var(--bg); }
.tbl .num { text-align: right; font-family: var(--mono); font-size:13px; }
.tbl-wrap { overflow-x: auto; }

/* ---------- 评分条 ---------- */
.bar { height: 7px; border-radius:6px; background: var(--line); overflow: hidden; margin-top: 5px; }
.bar > i { display: block; height: 100%; border-radius:6px; background: var(--brand); transition: width .4s ease; }
.bar.ok > i { background: var(--ok); }
.bar.warn > i { background: var(--warn); }
.bar.danger > i { background: var(--danger); }

/* ---------- 表单 ---------- */
.field { margin-bottom: 12px; }
.field label { display: block; font-size:13px; color: var(--ink-2); margin-bottom: 5px; font-weight: 500; }
.field .hint { font-size:12.5px; color: var(--ink-4); margin-top: 3px; }
input[type=text], input[type=number], input[type=date], select, textarea {
  width: 100%; padding: 8px 11px; border: 1px solid var(--line);
  border-radius:8px; background: var(--card); color: var(--ink);
  font-size: 13px; font-family: inherit; transition: border-color .15s, box-shadow .15s;
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(30, 79, 216, .1); }
.fgrid { display: grid; gap: 10px 14px; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.chk { display: flex; align-items: center; gap: 7px; font-size: 13px; padding: 5px 0; cursor: pointer; color: var(--ink-2); }
.chk input { width: auto; margin: 0; }

/* ---------- 资质卡 ---------- */
.qcard {
  background: var(--card); border: 1px solid var(--line); border-radius:var(--radius);
  padding: 16px 18px; box-shadow: var(--shadow); cursor: pointer;
  transition: transform .16s, border-color .16s, box-shadow .16s;
  display: flex; flex-direction: column; gap: 8px;
}
.qcard:hover { transform: translateY(-2px); border-color: var(--brand); box-shadow: 0 4px 10px rgba(30, 79, 216, .1), 0 10px 28px rgba(30, 79, 216, .1); }
.qcard .top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.qcard h3 { margin: 0; font-size: 15.5px; }
.qcard .desc { font-size:13px; color: var(--ink-3); line-height: 1.6; flex: 1; }
.qcard .kv { font-size:13px; color: var(--ink-2); display: flex; gap: 6px; }
.qcard .kv b { color: var(--ink-3); font-weight: 500; flex: 0 0 auto; }

/* ---------- 抽屉 ---------- */
.drawer-mask { position: fixed; inset: 0; background: rgba(12, 18, 30, .45); z-index: 90; opacity: 0; pointer-events: none; transition: opacity .22s; }
.drawer-mask.open { opacity: 1; pointer-events: auto; }
.drawer {
  position: fixed; top: 0; right: 0; bottom: 0; width: min(720px, 94vw);
  background: var(--card); z-index: 91; box-shadow: -8px 0 40px rgba(0, 0, 0, .18);
  transform: translateX(100%); transition: transform .26s cubic-bezier(.4, 0, .2, 1), visibility 0s .26s;
  visibility: hidden;
  display: flex; flex-direction: column;
}
.drawer.open { transform: translateX(0); visibility: visible; transition: transform .26s cubic-bezier(.4, 0, .2, 1); }
.drawer-head { padding: 18px 22px; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.drawer-head h2 { margin: 0 0 4px; font-size: 18px; }
.drawer-body { padding: 18px 22px 40px; overflow-y: auto; flex: 1; }
.drawer-body h4 { font-size: 13.5px; margin: 20px 0 8px; color: var(--brand); border-left: 3px solid var(--brand); padding-left: 8px; }
.drawer-body h4:first-child { margin-top: 0; }
.drawer-body ul { margin: 6px 0; padding-left: 20px; }
.drawer-body li { margin-bottom: 5px; font-size: 13px; color: var(--ink-2); }
.x-close { background: none; border: none; font-size: 22px; color: var(--ink-3); cursor: pointer; line-height: 1; padding: 0 4px; }
.x-close:hover { color: var(--danger); }
.meta-line { font-size:13px; color: var(--ink-3); margin-bottom: 3px; }
.meta-line b { color: var(--ink-2); font-weight: 600; }

/* ---------- 提示条 ---------- */
.note { border-radius:10px; padding: 11px 14px; font-size:13px; line-height: 1.65; margin: 10px 0; border: 1px solid; }
.note-brand { background: var(--brand-soft); border-color: var(--brand-line); color: var(--ink-2); }
.note-warn { background: var(--warn-soft); border-color: var(--warn); color: var(--ink-2); }
.note-danger { background: var(--danger-soft); border-color: var(--danger); color: var(--ink-2); }
.note-ok { background: var(--ok-soft); border-color: var(--ok); color: var(--ink-2); }
.note b { color: var(--ink); }

/* ---------- 时间轴 ---------- */
.tl { position: relative; padding-left: 22px; }
.tl::before { content: ''; position: absolute; left: 6px; top: 6px; bottom: 6px; width: 2px; background: var(--line); }
.tl-item { position: relative; padding: 0 0 16px; }
.tl-item::before { content: ''; position: absolute; left: -20px; top: 6px; width: 10px; height: 10px; border-radius:50%; background: var(--brand); border: 2px solid var(--card); box-shadow: 0 0 0 2px var(--brand-line); }
.tl-item .m { font-size:13px; color: var(--brand); font-weight: 700; }
.tl-item .d { font-size:13px; color: var(--ink-2); }
.tl-item ul { margin: 4px 0 0; padding-left: 18px; }
.tl-item li { font-size:13px; color: var(--ink-3); }

/* ---------- 空状态 ---------- */
.empty { text-align: center; padding: 46px 20px; color: var(--ink-3); }
.empty .big { font-size: 34px; margin-bottom: 10px; opacity: .5; }
.empty p { margin: 6px 0; font-size: 13px; }

/* ---------- 对比表 ---------- */
.cmp td:first-child { font-weight: 600; color: var(--ink); background: var(--bg); }
.cmp .risk-h { color: var(--danger); font-weight: 700; }
.cmp .risk-m { color: var(--warn); font-weight: 700; }

/* ---------- 公式块 ---------- */
.formula { font-family: var(--mono); background: var(--bg); border: 1px dashed var(--brand-line); border-radius:8px; padding: 11px 14px; font-size:13px; color: var(--brand); overflow-x: auto; line-height: 1.7; }

/* ---------- 材料导出中心 ---------- */
.chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 14px; }
.chip {
  display: inline-flex; align-items: center; gap: 7px; cursor: pointer;
  border: 1px solid var(--line); background: var(--card); color: var(--ink-2);
  border-radius:999px; padding: 6px 13px; font-size:13px; font-family: inherit;
}
.chip span { font-size:12.5px; color: var(--ink-3); background: var(--bg); border-radius:999px; padding: 1px 7px; }
.chip:hover { border-color: var(--brand); color: var(--brand); }
.chip.on { background: var(--brand); border-color: var(--brand); color: #fff; font-weight: 600; }
.chip.on span { background: rgba(255, 255, 255, .22); color: #fff; }

.mat-tool {
  display: flex; justify-content: space-between; align-items: center; gap: 10px; flex-wrap: wrap;
  background: var(--card); border: 1px solid var(--line); border-radius:var(--radius);
  padding: 10px 14px; position: sticky; top: 0; z-index: 6; box-shadow: var(--shadow);
}
.mat-group-title { display: flex; align-items: center; gap: 8px; margin: 22px 0 10px; font-size: 14px; font-weight: 700; color: var(--ink); }
.mat-group-title .ico {
  width: 22px; height: 22px; border-radius:8px; background: var(--brand-soft); color: var(--brand);
  display: inline-flex; align-items: center; justify-content: center; font-size:13px;
}
.mat-card {
  display: flex; gap: 12px; align-items: flex-start; background: var(--card);
  border: 1px solid var(--line); border-radius:var(--radius); padding: 13px 15px; margin-bottom: 10px;
}
.mat-card.on { border-color: var(--brand); box-shadow: 0 0 0 2px var(--brand-soft); }
.mat-card input[type=checkbox] { margin-top: 3px; width: 15px; height: 15px; accent-color: var(--brand); flex: none; }
.mat-body { flex: 1; min-width: 0; }
.mat-body h3 { font-size: 14px; margin: 0 0 6px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.mat-purpose { font-size:13px; color: var(--ink-2); line-height: 1.7; }
.mat-kv { font-size:13px; color: var(--ink-3); margin-top: 7px; display: flex; gap: 16px; flex-wrap: wrap; }
.mat-kv b { color: var(--ink-2); font-weight: 600; }
.mat-tips { margin: 6px 0 0; padding: 0; list-style: none; font-size:13px; color: var(--ink-2); }
.mat-tips li { position: relative; padding-left: 14px; margin-bottom: 5px; line-height: 1.65; }
.mat-tips li::before { content: '·'; position: absolute; left: 2px; top: -1px; color: var(--brand); font-weight: 700; font-size: 16px; }
details.mat-det summary { cursor: pointer; font-size:13px; color: var(--brand); margin-top: 9px; user-select: none; }
.mat-acts { display: flex; flex-direction: column; gap: 6px; align-items: flex-end; flex: none; }
@media (max-width: 720px) {
  .mat-card { flex-direction: column; }
  .mat-acts { flex-direction: row; align-items: center; }
  .mat-tool { position: static; }
}

/* ---------- 企业计划书 ---------- */
.card .sub { color: var(--ink-3); font-size:13px; }

.plan-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin: 14px 0; }
.plan-stat { background: var(--card); border: 1px solid var(--line); border-radius:var(--radius); padding: 14px 16px; box-shadow: var(--shadow); }
.plan-stat .n { font-size: 24px; font-weight: 700; color: var(--brand); line-height: 1.25; }
.plan-stat .n span { font-size: 14px; color: var(--ink-4); font-weight: 400; }
.plan-stat .l { font-size:13px; color: var(--ink-3); margin-top: 4px; }

.plan-export {
  position: sticky; top: 0; z-index: 6; display: flex; justify-content: space-between; align-items: center;
  gap: 12px; flex-wrap: wrap; background: var(--card); border: 1px solid var(--line);
  border-radius:var(--radius); padding: 12px 16px; margin: 16px 0; box-shadow: var(--shadow);
}

.plan-sec { background: var(--card); border: 1px solid var(--line); border-radius:var(--radius); margin: 14px 0; box-shadow: var(--shadow); overflow: hidden; }
.plan-sec > summary {
  list-style: none; cursor: pointer; padding: 14px 18px; font-size: 15px; font-weight: 700;
  display: flex; align-items: center; gap: 10px; border-bottom: 1px solid var(--line); background: var(--brand-soft);
  color: var(--ink);
}
.plan-sec > summary::-webkit-details-marker { display: none; }
.plan-sec > summary::after { content: '▾'; margin-left: auto; color: var(--ink-3); font-size: 13px; transition: transform .2s; }
.plan-sec[open] > summary::after { transform: rotate(180deg); }
.plan-sec .ps-no {
  display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px;
  background: var(--brand); color: #fff; border-radius:8px; font-size:13px; padding: 0 6px;
}
.plan-sec .ps-tip { font-size:13px; font-weight: 400; color: var(--ink-3); margin-left: auto; padding-right: 22px; }
.plan-sec .ps-body { padding: 14px 18px 18px; }
.plan-sec h3 { font-size: 13.5px; margin: 16px 0 8px; color: var(--brand-dark); }

.plan-qual { border: 1px solid var(--line); border-radius:10px; margin: 10px 0; overflow: hidden; }
.plan-qual > summary { list-style: none; cursor: pointer; padding: 11px 14px; display: flex; align-items: center; gap: 10px; background: var(--bg); font-size: 13.5px; }
.plan-qual > summary::-webkit-details-marker { display: none; }
.plan-qual[open] > summary { border-bottom: 1px solid var(--line); }
.plan-qual .tbl { margin: 0; }
.plan-qual .tbl-wrap { padding: 0 12px 12px; }

.row-fail { background: var(--danger-soft); }

.plan-opts { display: grid; gap: 10px; }
.plan-opt {
  display: flex; gap: 11px; align-items: flex-start; padding: 12px 14px; cursor: pointer;
  border: 1px solid var(--line); border-radius:10px; background: var(--bg); transition: all .15s;
}
.plan-opt:hover { border-color: var(--brand-line); }
.plan-opt.on { border-color: var(--brand); background: var(--brand-soft); }
.plan-opt > input { margin-top: 3px; width: auto; flex: none; }
.plan-opt .po-name { font-size: 13.5px; font-weight: 700; display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.plan-opt .po-ico { color: var(--brand); font-size: 15px; }
.plan-opt .po-desc { font-size:13px; color: var(--ink-2); margin-top: 3px; }
.plan-opt .po-value { font-size:13px; color: var(--ink-3); margin-top: 5px; padding-left: 8px; border-left: 2px solid var(--brand-line); }
.plan-opt .po-value b { color: var(--brand-dark); }

.plan-tiers { display: grid; grid-template-columns: repeat(auto-fit, minmax(235px, 1fr)); gap: 12px; margin: 10px 0; }
.plan-tier { border: 1px solid var(--line); border-radius:10px; padding: 13px 15px; background: var(--bg); }
.plan-tier.on { border-color: var(--brand); background: var(--brand-soft); box-shadow: 0 0 0 1px var(--brand) inset; }
.plan-tier .pt-head { display: flex; align-items: center; gap: 8px; font-size: 13.5px; flex-wrap: wrap; }
.plan-tier .pt-amt { font-size: 22px; font-weight: 700; color: var(--brand); margin: 7px 0 9px; }
.plan-tier .pt-list { margin: 0; padding-left: 17px; font-size:13px; color: var(--ink-2); }
.plan-tier .pt-list li { margin: 3px 0; }
.plan-tier .pt-list b { color: var(--ink); }
.plan-tier .pt-note { font-size:12.5px; color: var(--ink-3); margin-top: 9px; padding-top: 8px; border-top: 1px dashed var(--line); }

@media (max-width: 860px) {
  .plan-export { position: static; }
  .plan-sec .ps-tip { display: none; }
}

/* ============================================================
   企业档案 · 资料自动带出 + 财报上传
   ============================================================ */

/* 整行字段（注册地址、经营范围等长文本） */
.fgrid .field.wide { grid-column: 1 / -1; }

/* ---------- 自动带出工具条 ---------- */
.fi-bar {
  display: flex; gap: 14px; flex-wrap: wrap; align-items: center;
  justify-content: space-between;
  background: linear-gradient(180deg, var(--brand-soft), var(--card));
  border: 1px solid var(--brand-line); border-radius:10px;
  padding: 11px 14px; margin: 4px 0 12px;
}
.fi-bar-l { display: flex; flex-direction: column; gap: 3px; min-width: 220px; }
.fi-bar-l b { font-size: 13px; color: var(--brand); }
.fi-bar-l span { font-size:12.5px; color: var(--ink-3); line-height: 1.5; }
.fi-bar-b { display: flex; gap: 6px; flex-wrap: wrap; }

/* ---------- 面板 ---------- */
.fi-panel {
  border: 1px solid var(--brand-line); border-radius:10px;
  background: var(--card); padding: 13px 15px; margin: 0 0 14px;
}
.fi-panel-h { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }
.fi-panel-h b { font-size: 13px; color: var(--ink); }
.fi-panel-h span { font-size:12.5px; color: var(--ink-3); line-height: 1.6; }
.fi-panel-f { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 11px; }
.fi-tip { font-size:12.5px; color: var(--ink-4); }
.fi-ta {
  width: 100%; font-family: var(--mono); font-size:13px; line-height: 1.65;
  resize: vertical;
}
.fi-panel input[type=text] { font-family: var(--mono); font-size:13px; }

/* ---------- 财报上传投放区 ---------- */
.up-drop {
  border: 2px dashed var(--brand-line); border-radius:12px;
  background: var(--brand-soft); padding: 26px 20px; text-align: center;
  cursor: pointer; transition: border-color .16s, background .16s, transform .16s;
}
.up-drop:hover, .up-drop.over {
  border-color: var(--brand); background: var(--card);
  box-shadow: 0 4px 14px rgba(30, 79, 216, .1);
}
.up-drop.over { transform: scale(1.005); }
.up-drop .up-ico { font-size: 28px; color: var(--brand); line-height: 1; margin-bottom: 8px; }
.up-drop .up-t { font-size: 13.5px; font-weight: 600; color: var(--ink); }
.up-drop .up-d { font-size:12.5px; color: var(--ink-3); line-height: 1.7; margin-top: 7px; }
.up-drop .up-link { color: var(--brand); text-decoration: underline; }

/* ---------- 识别结果小标题与折叠区 ---------- */
.fr-h {
  font-size: 13px; color: var(--brand);
  margin: 18px 0 8px; padding-bottom: 5px;
  border-bottom: 1px solid var(--brand-line);
}
.fr-h:first-child { margin-top: 6px; }
.fr-det { margin-top: 14px; }
.fr-det > summary {
  cursor: pointer; font-size:13px; color: var(--ink-3);
  padding: 6px 0; user-select: none;
}
.fr-det > summary:hover { color: var(--brand); }
.fr-det[open] > summary { color: var(--brand); }

/* 附件表内下拉框紧凑化 */
.tbl select { padding: 4px 7px; font-size:13px; }

/* 小字着色（信用代码校验等） */
.hint.c-ok { color: var(--ok); }
.hint.c-danger { color: var(--danger); font-weight: 500; }

/* ---------- 打印 ---------- */
@media print {
  .sidebar, .head-actions, .nav { display: none !important; }
  .main { padding: 0; max-width: none; }
  .card { box-shadow: none; page-break-inside: avoid; }
}

/* ---------- 移动端 ---------- */
@media (max-width: 860px) {
  .app { flex-direction: column; }
  .sidebar { width: 100% !important; flex: none !important; height: auto !important; position: static; border-right: none; border-bottom: 1px solid var(--line); padding: 12px; }
  .sidebar .nav { width: 100% !important; }
  /* 2026-11-02 移动端紧凑化：logo 单行缩小 + 导航横向滚动吸顶，侧栏高度减半不刷屏 */
  .logo { padding-bottom: 8px; margin-bottom: 8px; gap: 8px; }
  /* 2026-11-02：#brandLogo.brand-v 的 ID 特异性高于类选择器，移动端规则须同写法并置后 */
  #brandLogo.brand-v { flex-direction: row !important; text-align: left !important; gap: 8px !important; padding: 0 0 8px !important; }
  #brandLogo.brand-v .brand-v-mark { width: 30px !important; height: 30px !important; border-radius: 8px; }
  #brandLogo.brand-v .brand-v-txt { align-items: flex-start !important; }
  #brandLogo.brand-v .brand-v-txt b { font-size: 13px !important; }
  #brandLogo.brand-v .brand-v-txt span { font-size: 10.5px !important; }
  .sidebar .logo-mark { width: 30px; height: 30px; border-radius: 8px; }
  .sidebar .logo-mark img { width: 100%; height: 100%; object-fit: contain; }
  .sidebar .logo-txt b { font-size: 13px; }
  .sidebar .logo-txt span { font-size: 10.5px; }
  .nav { flex-direction: row; overflow-x: auto; gap: 6px; padding-bottom: 4px; -webkit-overflow-scrolling: touch; }
  .nav-item { white-space: nowrap; padding: 8px 12px; }
  .nav-sep, .side-foot { display: none; }
  /* 2026-11-02 移动端：子菜单收起（页面内已有页签，横条只留主项——16 个子项平铺会挤爆横条） */
  .nav-sub, .nav-subg { display: none !important; }
  /* 侧栏科技感 ::before 微网格（定高 340px）在移动横条模式下取消，避免撑高
     （.sidebar.sidebar 双类特异性压过 L3152 的单类定义） */
  .sidebar.sidebar::before { display: none; }
  .main { padding: 16px 14px 50px; }
  .page-head h1 { font-size: 18px; }
  .tbl { font-size:13px; }
  .tbl th, .tbl td { padding: 6px 7px; }
}


/* ---------------- 云端登录墙 ---------------- */
#authGate { position:fixed; inset:0; z-index:300; display:none; align-items:center; justify-content:center; background:var(--bg); }
.auth-card { width:min(430px,92vw); max-height:92vh; overflow:auto; background:var(--card); border:1px solid var(--line); border-radius:12px; padding:26px 24px; box-shadow:var(--shadow); }
.auth-logo { width:44px; height:44px; border-radius:10px; background:var(--brand); color:#fff; font-weight:600; display:flex; align-items:center; justify-content:center; font-size:20px; margin-bottom:12px; }
.auth-card h2 { font-size:17px; margin:0 0 4px; }
.auth-sub { font-size:13px; color:var(--ink-3); margin:0 0 14px; line-height:1.6; }
.auth-tabs { display:flex; gap:6px; margin-bottom:14px; }
.auth-tabs button { flex:1; padding:7px 4px; font-size:13px; border:1px solid var(--line); background:transparent; border-radius:8px; cursor:pointer; color:var(--ink-2); }
.auth-tabs button.on { background:var(--brand); color:#fff; border-color:var(--brand); }
.auth-body .field { margin-bottom:10px; }
.auth-body .field label { display:block; font-size:13px; color:var(--ink-3); margin-bottom:4px; }
.auth-body .field input { width:100%; box-sizing:border-box; padding:9px 11px; border:1px solid var(--line); border-radius:8px; font-size:13.5px; background:var(--card); color:var(--ink); }
.auth-msg { min-height:18px; font-size:13px; margin-top:8px; color:var(--ink-3); }
.auth-msg.err { color:var(--danger); }
.auth-msg.ok { color:var(--ok); }

/* 混合上传（整包导入） */
.mix-drop { border-style: dashed; }
.mix-drop.over { border-color: var(--brand); background: rgba(0, 0, 0, .03); }
.mix-drop .up-d { max-width: 720px; margin: 6px auto 0; }
.mix-flash { animation: mixFlash 1.8s ease; }
@keyframes mixFlash {
  0%   { box-shadow: 0 0 0 0 rgba(0, 0, 0, .22); }
  30%  { box-shadow: 0 0 0 8px rgba(0, 0, 0, .06); }
  100% { box-shadow: 0 0 0 0 rgba(0, 0, 0, 0); }
}

/* ============================================================
   视觉升级 2026-10-22
   ------------------------------------------------------------
   目标：统一层次与节奏，修掉字符图标缺字，登录页重做为品牌双栏
   全部为追加覆盖，不改动上方既有规则
   ============================================================ */

:root {
  --radius: 14px;
  --radius-sm: 10px;
  --bg: #f5f7fb;
  --card: #ffffff;
  --line: #e6eaf3;
  --line-soft: #eff2f8;
  --shadow-sm: 0 1px 2px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .05);
  --shadow-md: 0 2px 4px rgba(16, 24, 40, .03), 0 12px 28px -10px rgba(16, 24, 40, .12);
  --shadow-lg: 0 20px 60px -24px rgba(16, 24, 40, .32);
  --shadow: var(--shadow-sm);
}

html[data-theme="dark"] {
  --line-soft: #1f2841;
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);
  --shadow-md: 0 12px 30px -12px rgba(0, 0, 0, .5);
  --shadow-lg: 0 24px 70px -20px rgba(0, 0, 0, .7);
}

body { font-feature-settings: "tnum" 0; }
::selection { background: rgba(30, 79, 216, .16); }

/* 细滚动条 */
* { scrollbar-width: thin; scrollbar-color: #c9d3e6 transparent; }
html[data-theme="dark"] * { scrollbar-color: #33405e transparent; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: #d3dced; border-radius:8px; border: 2px solid transparent; background-clip: content-box; }
::-webkit-scrollbar-thumb:hover { background: #b9c6de; background-clip: content-box; }
html[data-theme="dark"] ::-webkit-scrollbar-thumb { background: #2c3852; background-clip: content-box; }

/* ---------- 侧栏 ---------- */
.sidebar {
  width: 236px; flex: 0 0 236px;
  padding: 18px 12px 22px;
  background: var(--card);
  display: flex; flex-direction: column;
}
.logo { padding: 0 8px 16px; margin-bottom: 12px; }
.logo-mark { box-shadow: 0 6px 14px -6px rgba(30, 79, 216, .7); }
.logo-txt b { letter-spacing: -.2px; }

.nav { gap: 1px; }
.nav-item {
  position: relative;
  padding: 8px 10px;
  border-radius:10px;
  gap: 9px;
  font-size: 13px;
  letter-spacing: .01em;
  transition: background .16s, color .16s, transform .12s;
}
.nav-item .ico { width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center; flex: none; }
.nav-item .ico .ni { width: 17px; height: 17px; display: block; }
.nav-item .lbl { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-item:hover { background: var(--brand-soft); color: var(--brand); }
.nav-item.active {
  background: linear-gradient(180deg, #2456e0, var(--brand));
  color: #fff;
  box-shadow: 0 8px 18px -10px rgba(30, 79, 216, .9);
}
.nav-item.active::before {
  content: ''; position: absolute; left: -12px; top: 50%;
  transform: translateY(-50%);
  width: 3px; height: 16px; border-radius:0 4px 4px 0;
  background: var(--brand);
}
.nav-item:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }

.nav-sep {
  font-size:12px;
  letter-spacing: .12em;
  color: var(--ink-4);
  padding: 15px 10px 5px;
  font-weight: 600;
  opacity: .85;
}
.nav-sep:first-child { display: none; }

.side-foot {
  margin-top: auto;
  padding: 14px 8px 0;
  border-top: 1px solid var(--line-soft);
  font-size:12.5px;
  color: var(--ink-4);
  line-height: 1.65;
}
.side-foot div { margin-bottom: 5px; }
.side-foot #cloudStat { font-weight: 500; }

/* ---------- 主区 ---------- */
.main { padding: 24px 32px 72px; }
.page-head { margin-bottom: 22px; align-items: center; }
.page-head h1 { font-size: 22px; font-weight: 700; letter-spacing: -.4px; }
.page-head p { font-size:13px; color: var(--ink-3); }
.head-actions .btn { box-shadow: var(--shadow-sm); }

/* ---------- 通用控件 ---------- */
.btn { border-radius:10px; font-weight: 500; }
.btn-primary { box-shadow: 0 6px 14px -8px rgba(30, 79, 216, .8); }
.btn-primary:active { transform: translateY(.5px); }
.btn:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

.card {
  border-radius:var(--radius);
  padding: 18px 20px;
  box-shadow: var(--shadow-sm);
  transition: box-shadow .18s, border-color .18s;
}
.card:hover { box-shadow: var(--shadow-md); }
.card > h2 { font-size: 15.5px; font-weight: 700; letter-spacing: -.2px; }

/* 统计卡：加一条品牌色进度条位置，数字用等宽数字 */
.stat { border-radius:var(--radius); padding: 14px 16px 15px; box-shadow: var(--shadow-sm); }
.stat .n { font-size: 25px; font-variant-numeric: tabular-nums; }
.stat .l { font-size:13px; }
.stat .x { font-size:12.5px; }

.plan-stat .n, .tbl .num, .tl-item .m { font-variant-numeric: tabular-nums; }

/* ---------- 表格 ---------- */
.tbl { font-size:13px; border-collapse: separate; border-spacing: 0; }
.tbl th {
  background: var(--bg);
  color: var(--ink-2);
  border: none;
  border-bottom: 1px solid var(--line);
  font-size:13px;
  font-weight: 600;
  letter-spacing: .02em;
  padding: 9px 11px;
  white-space: nowrap;
}
.tbl td {
  border: none;
  border-bottom: 1px solid var(--line-soft);
  padding: 10px 11px;
  line-height: 1.6;
}
.tbl tbody tr:hover td { background: var(--brand-soft); }
.tbl tbody tr:last-child td { border-bottom: none; }
.tbl-wrap { border-radius:var(--radius-sm); }

/* ---------- 徽标与提示 ---------- */
.tag { font-weight: 600; letter-spacing: .01em; }
.note { border-radius:var(--radius-sm); }
.formula { border-radius:var(--radius-sm); }

/* ============================================================
   登录墙 · 品牌双栏
   ============================================================ */
#authGate {
  display: none;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background:
    radial-gradient(900px 520px at 12% 0%, rgba(30, 79, 216, .12), transparent 62%),
    radial-gradient(760px 480px at 100% 100%, rgba(30, 79, 216, .08), transparent 60%),
    var(--bg);
}
html[data-theme="dark"] #authGate {
  background:
    radial-gradient(900px 520px at 12% 0%, rgba(91, 140, 255, .14), transparent 62%),
    radial-gradient(760px 480px at 100% 100%, rgba(91, 140, 255, .08), transparent 60%),
    var(--bg);
}

.auth-shell {
  display: grid;
  grid-template-columns: minmax(0, 1.06fr) minmax(370px, 430px);
  width: min(1060px, 96vw);
  min-height: 560px;
  max-height: calc(100dvh - 32px);
  background: var(--card);
  border: 1px solid var(--line);
  border-radius:22px;
  overflow: hidden;
  box-shadow: var(--shadow-lg);
}
/* P1-1：小屏/高缩放下登录卡不裁切——面板区独立滚动 */
.auth-panel { max-height: calc(100dvh - 32px); overflow-y: auto; }
@media (max-height: 760px), (max-width: 940px) {
  .auth-shell { min-height: 0; max-height: calc(100dvh - 24px); }
}

/* 左：品牌区 */
.auth-hero {
  position: relative;
  padding: 40px 40px 32px;
  color: #fff;
  background: linear-gradient(152deg, #0f1e46 0%, #17369c 48%, #2f63ea 100%);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.auth-hero::after {
  content: '';
  position: absolute; right: -90px; bottom: -120px;
  width: 340px; height: 340px; border-radius:50%;
  background: radial-gradient(circle, rgba(255, 255, 255, .16), transparent 68%);
  pointer-events: none;
}
.auth-hero::before {
  content: '';
  position: absolute; inset: 0;
  background-image: linear-gradient(rgba(255, 255, 255, .05) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(255, 255, 255, .05) 1px, transparent 1px);
  background-size: 34px 34px;
  mask-image: radial-gradient(circle at 20% 10%, #000 0%, transparent 72%);
  -webkit-mask-image: radial-gradient(circle at 20% 10%, #000 0%, transparent 72%);
  pointer-events: none;
}
.ah-top { display: flex; align-items: center; gap: 11px; position: relative; }
.ah-mark {
  width: 38px; height: 38px; border-radius:10px;
  background: rgba(255, 255, 255, .14);
  border: 1px solid rgba(255, 255, 255, .28);
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; font-size: 16px;
  backdrop-filter: blur(4px);
}
.ah-brand b { display: block; font-size: 14px; letter-spacing: .04em; }
.ah-brand span { font-size:12.5px; color: rgba(255, 255, 255, .66); letter-spacing: .04em; }

.auth-hero h1 {
  position: relative;
  margin: 38px 0 14px;
  font-size: 30px;
  line-height: 1.32;
  letter-spacing: -.6px;
  font-weight: 700;
}
.ah-lede {
  position: relative;
  margin: 0 0 26px;
  font-size: 13px;
  line-height: 1.8;
  color: rgba(255, 255, 255, .76);
  max-width: 34em;
}
.ah-list { position: relative; list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; }
.ah-list li { display: flex; gap: 12px; align-items: flex-start; }
.ah-list i {
  flex: none;
  width: 21px; height: 21px; border-radius:8px;
  background: rgba(255, 255, 255, .14);
  border: 1px solid rgba(255, 255, 255, .22);
  font-style: normal; font-size:12.5px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  margin-top: 1px;
}
.ah-list b { display: block; font-size: 13px; font-weight: 600; letter-spacing: .01em; }
.ah-list span { display: block; font-size:12.5px; color: rgba(255, 255, 255, .62); line-height: 1.65; margin-top: 3px; }

.ah-foot {
  position: relative;
  margin-top: auto; padding-top: 26px;
  border-top: 1px solid rgba(255, 255, 255, .14);
  display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  font-size:12.5px; color: rgba(255, 255, 255, .52);
}

/* 右：表单区 */
.auth-panel {
  display: flex; flex-direction: column; justify-content: center;
  padding: 40px 38px 22px;
  background: var(--card);
}
.auth-panel .auth-card {
  width: auto; max-height: none; overflow: visible;
  background: transparent; border: none; box-shadow: none;
  padding: 0; border-radius:0;
}
.auth-copyright {
  margin-top: 26px; text-align: center;
  font-size:12.5px; color: var(--ink-4); letter-spacing: .02em;
}
.auth-datause {
  margin-top: 18px; padding: 11px 13px; border-radius:10px;
  background: var(--bg); border: 1px solid var(--line-soft);
  font-size:12.5px; line-height: 1.7; color: var(--ink-3);
}

.auth-logo {
  width: 42px; height: 42px; border-radius:11px;
  background: linear-gradient(135deg, #2456e0, #4b7bf5);
  box-shadow: 0 8px 18px -8px rgba(30, 79, 216, .8);
  font-size: 18px; margin-bottom: 14px;
}
.auth-card h2 { font-size: 19px; font-weight: 700; letter-spacing: -.3px; line-height: 1.4; }
.auth-sub { font-size:13px; line-height: 1.7; color: var(--ink-3); margin-bottom: 18px; }

.auth-tabs {
  display: flex; gap: 3px; margin-bottom: 16px;
  padding: 3px; border-radius:10px;
  background: var(--bg); border: 1px solid var(--line-soft);
}
.auth-tabs button {
  flex: 1; padding: 7px 6px; font-size:13px;
  border: none; border-radius:8px;
  background: transparent; color: var(--ink-3);
  cursor: pointer; font-family: inherit;
  transition: background .16s, color .16s, box-shadow .16s;
  white-space: nowrap;
}
.auth-tabs button:hover { color: var(--ink); }
.auth-tabs button.on {
  background: var(--card); color: var(--brand); font-weight: 600;
  box-shadow: var(--shadow-sm);
}

.auth-body .field { margin-bottom: 13px; }
.auth-body .field label { font-size:13px; color: var(--ink-2); font-weight: 500; margin-bottom: 6px; }
.auth-body .field input {
  width: 100%; padding: 10px 12px;
  border: 1px solid var(--line); border-radius:10px;
  font-size: 13.5px; background: var(--card); color: var(--ink);
  transition: border-color .15s, box-shadow .15s;
}
.auth-body .field input:hover { border-color: #d3dcf0; }
.auth-body .field input:focus {
  outline: none; border-color: var(--brand);
  box-shadow: 0 0 0 3px rgba(30, 79, 216, .12);
}
.auth-body .btn { padding: 10px 15px; border-radius:10px; font-size: 13.5px; }
.auth-body .btn-primary { font-weight: 600; }
.auth-body .btn:disabled { opacity: .62; cursor: not-allowed; transform: none; }
.auth-msg { min-height: 20px; font-size:13px; margin-top: 10px; line-height: 1.6; }
.auth-msg:not(:empty) { padding: 8px 11px; border-radius:8px; background: var(--bg); }

@media (max-width: 940px) {
  .auth-shell { grid-template-columns: 1fr; min-height: 0; width: min(460px, 96vw); }
  .auth-hero { display: none; }
  .auth-panel { padding: 30px 26px 18px; }
}

/* ---------- 移动端补齐（须覆盖上方固定宽度，故重写整块） ---------- */
@media (max-width: 860px) {
  .app { flex-direction: column; }
  .sidebar {
    width: 100%; flex: none; height: auto;
    position: static; border-right: none;
    border-bottom: 1px solid var(--line);
    padding: 10px 12px 8px;
    display: block;
  }
  .logo { padding: 0 2px 10px; margin-bottom: 8px; }
  .nav { flex-direction: row; overflow-x: auto; gap: 4px; padding-bottom: 6px; }
  .nav-item { padding: 7px 12px; white-space: nowrap; flex: none; width: auto; }
  .nav-item.active::before { display: none; }
  .nav-item .lbl { white-space: nowrap; }
  .nav-sep, .side-foot { display: none; }
  .main { padding: 16px 14px 56px; }
  .page-head { gap: 10px; }
  .card { padding: 15px 15px; }
  .stat { padding: 13px 14px; }
  .tbl th, .tbl td { padding: 8px 9px; }
  .g4 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .g3 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .stat .n { font-size: 21px; }
  .plan-stat .n { font-size: 21px; }
}

/* 登录页：桌面端隐藏右侧重复的品牌标记（左侧已有） */
@media (min-width: 941px) {
  .auth-panel .auth-logo { display: none; }
}

/* ============================================================
   业务总览（公开首页）
   ------------------------------------------------------------
   用途：对外展示业务范畴，适合投屏与打印。
   版式：大字号、宽留白、按梯度分层，避免做成数据看板。
   ============================================================ */

.home { max-width: 1180px; margin: 0 auto; }
.btn-lg { padding: 11px 22px; font-size: 14px; border-radius:10px; }

/* ---------- 首屏 ---------- */
.home-hero {
  background:
    radial-gradient(760px 380px at 8% -10%, rgba(30, 79, 216, .10), transparent 62%),
    linear-gradient(180deg, var(--card), var(--card));
  border: 1px solid var(--line);
  border-radius:18px;
  padding: 40px 40px 30px;
  box-shadow: var(--shadow-md);
  margin-bottom: 26px;
}
.hh-eyebrow {
  font-size:13px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--brand); font-weight: 600; margin-bottom: 14px;
}
.home-hero h1 {
  margin: 0 0 16px;
  font-size: 33px; line-height: 1.34; letter-spacing: -.8px; font-weight: 700;
  color: var(--ink);
}
.home-hero h1 em {
  font-style: normal; color: var(--brand);
  display: inline-block; margin-top: 4px;
}
.hh-lede {
  margin: 0 0 22px; font-size: 14px; line-height: 1.9;
  color: var(--ink-2); max-width: 46em;
}
.hh-lede b { color: var(--ink); font-weight: 600; }
.hh-actions { display: flex; gap: 10px; flex-wrap: wrap; }

.hh-stats {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px; margin-top: 30px; padding-top: 24px;
  border-top: 1px dashed var(--line);
}
.hs-item { padding-right: 8px; }
.hs-n {
  font-size: 30px; font-weight: 800; letter-spacing: -1px; line-height: 1.1;
  color: var(--brand); font-variant-numeric: tabular-nums;
}
.hs-n i { font-style: normal; font-size: 14px; font-weight: 600; margin-left: 3px; }
.hs-l { font-size: 13px; font-weight: 600; color: var(--ink); margin-top: 5px; }
.hs-x { font-size:12.5px; color: var(--ink-4); line-height: 1.6; margin-top: 3px; }

/* ---------- 区块 ---------- */
.home-sec { margin-bottom: 30px; }
.sec-head { margin-bottom: 14px; }
.sec-head h2 {
  margin: 0; font-size: 17px; font-weight: 700; letter-spacing: -.2px;
  display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
}
.sec-head h2 span {
  font-size:13px; font-weight: 400; color: var(--ink-3); letter-spacing: 0;
}

/* ---------- 梯度分层 ---------- */
.tiers { display: flex; flex-direction: column; gap: 16px; }
#tiersRest { display: flex; flex-direction: column; gap: 16px; margin-top: 16px; }
#tiersRest[hidden] { display: none; }
.tiers-more-wrap { text-align: center; margin-top: 16px; }

/* ---------- 品牌蓝首屏（未登录） ---------- */
.hero-brand {
  position: relative;
  background: linear-gradient(152deg, #0f1e46 0%, #17369c 48%, #2f63ea 100%);
  border: none;
  color: #fff;
  overflow: hidden;
  padding: 40px 40px 28px;
}
.hero-brand::before {
  content: '';
  position: absolute; inset: 0;
  background-image: linear-gradient(rgba(255, 255, 255, .05) 1px, transparent 1px),
                    linear-gradient(90deg, rgba(255, 255, 255, .05) 1px, transparent 1px);
  background-size: 34px 34px;
  mask-image: radial-gradient(circle at 20% 10%, #000 0%, transparent 72%);
  -webkit-mask-image: radial-gradient(circle at 20% 10%, #000 0%, transparent 72%);
  pointer-events: none;
}
.hero-brand::after {
  content: '';
  position: absolute; right: -90px; bottom: -120px;
  width: 340px; height: 340px; border-radius:50%;
  background: radial-gradient(circle, rgba(255, 255, 255, .16), transparent 68%);
  pointer-events: none;
}
.hb-inner {
  position: relative;
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 36px;
  align-items: center;
}
.hb-main { position: relative; min-width: 0; }
.hero-brand h1 { color: #fff; margin: 30px 0 14px; }
.hero-brand .hh-lede { color: rgba(255, 255, 255, .78); margin-bottom: 22px; }
.hero-brand .hh-actions { position: relative; margin-bottom: 26px; }
.hero-brand .hh-actions .btn {
  background: rgba(255, 255, 255, .10);
  border-color: rgba(255, 255, 255, .45);
  color: #fff;
}
.hero-brand .hh-actions .btn:hover { background: rgba(255, 255, 255, .20); border-color: rgba(255, 255, 255, .65); }
.hero-brand .hh-actions .btn-primary {
  background: #fff; border-color: #fff; color: #1e4fd8;
}
.hero-brand .hh-actions .btn-primary:hover { background: #e8efff; border-color: #e8efff; }
.hero-brand .ah-list { position: relative; }
.hb-stats {
  position: relative;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.hb-stats .hs-item {
  background: rgba(255, 255, 255, .10);
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius:12px;
  padding: 14px 16px;
  backdrop-filter: blur(4px);
}
.hb-stats .hs-n { color: #fff; }
.hb-stats .hs-l { color: #fff; }
.hb-stats .hs-x { color: rgba(255, 255, 255, .68); }
.hb-foot {
  position: relative;
  margin-top: 26px; padding-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, .14);
  display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  font-size:12.5px; color: rgba(255, 255, 255, .55);
}
@media (max-width: 900px) {
  .hb-inner { grid-template-columns: 1fr; gap: 24px; }
}
.tier {
  background: var(--card); border: 1px solid var(--line);
  border-radius:var(--radius); padding: 16px 18px 18px;
  box-shadow: var(--shadow-sm);
}
.tier-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.tier-badge {
  flex: none; font-size:13px; font-weight: 700; letter-spacing: .04em;
  padding: 5px 12px; border-radius:999px; white-space: nowrap;
}
.tier-txt { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.tier-txt b { font-size: 13px; font-weight: 500; color: var(--ink-2); }
.tier-txt span { font-size:12.5px; color: var(--ink-4); }

.tier-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 12px; }
.q-tile {
  border: 1px solid var(--line); border-radius:var(--radius-sm);
  padding: 14px 15px; background: var(--bg);
  border-left: 3px solid var(--brand);
  transition: box-shadow .16s, transform .16s;
}
.q-tile:hover { box-shadow: var(--shadow-md); transform: translateY(-1px); }
.qt-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.qt-head h4 { margin: 0; font-size: 14.5px; font-weight: 700; color: var(--ink); line-height: 1.4; }
.qt-abbr {
  font-size:12.5px; font-weight: 600; color: var(--brand);
  background: var(--brand-soft); border-radius:5px; padding: 1px 6px;
}
.qt-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 7px 0 9px; }
.qt-lv { font-size:12.5px; color: var(--ink-3); background: var(--card); border: 1px solid var(--line); border-radius:5px; padding: 1px 7px; }
.qt-dept { font-size:12.5px; color: var(--ink-4); }
.qt-line { font-size:13px; color: var(--ink-2); line-height: 1.7; margin-top: 5px; }
.qt-line b { color: var(--ink-3); font-weight: 600; margin-right: 6px; }

/* 梯度配色 */
.tone-blue   { }
.tone-indigo { }
.tone-teal   { }
.tone-amber  { }
.tone-slate  { }
.tier-badge.tone-blue   { background: #eaf1ff; color: #1e4fd8; }
.tier-badge.tone-indigo { background: #ecebff; color: #4f46e5; }
.tier-badge.tone-teal   { background: #e3f7f3; color: #0d9488; }
.tier-badge.tone-amber  { background: #fdf3e3; color: #b45309; }
.tier-badge.tone-slate  { background: #eef1f6; color: #64748b; }
.q-tile.tone-indigo { border-left-color: #4f46e5; }
.q-tile.tone-teal   { border-left-color: #0d9488; }
.q-tile.tone-amber  { border-left-color: #d97706; }
.q-tile.tone-slate  { border-left-color: #94a3b8; }

/* ---------- 能力 ---------- */
.cap-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 12px; }
.cap {
  background: var(--card); border: 1px solid var(--line); border-radius:var(--radius);
  padding: 16px 17px; box-shadow: var(--shadow-sm);
}
.cap-ico {
  width: 30px; height: 30px; border-radius:8px;
  background: var(--brand-soft); color: var(--brand);
  display: flex; align-items: center; justify-content: center; margin-bottom: 10px;
}
.cap-ico svg { width: 17px; height: 17px; }
.cap b { display: block; font-size: 13.5px; font-weight: 700; color: var(--ink); margin-bottom: 6px; }
.cap p { margin: 0; font-size:13px; line-height: 1.75; color: var(--ink-3); }

/* ---------- 流程 ---------- */
.flow {
  display: grid; grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 0; background: var(--card); border: 1px solid var(--line);
  border-radius:var(--radius); overflow: hidden; box-shadow: var(--shadow-sm);
}
.flow-step { padding: 16px 15px; border-right: 1px solid var(--line-soft); position: relative; }
.flow-step:last-child { border-right: none; }
.fs-no {
  font-size:12.5px; font-weight: 800; letter-spacing: .08em;
  color: var(--brand); margin-bottom: 7px;
}
.flow-step b { display: block; font-size: 13px; font-weight: 700; color: var(--ink); margin-bottom: 5px; }
.flow-step p { margin: 0; font-size:12.5px; line-height: 1.7; color: var(--ink-3); }

/* ---------- 合作方式 ---------- */
.coop-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 14px; }
.coop {
  border: 1px solid var(--line); border-radius:var(--radius);
  background: var(--card); padding: 18px 20px; box-shadow: var(--shadow-sm);
}
.coop-gov { border-top: 3px solid #1e4fd8; }
.coop-biz { border-top: 3px solid #0d9488; }
.coop-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.coop-head b { font-size: 15px; font-weight: 700; color: var(--ink); }
.coop-head span { font-size:13px; color: var(--ink-3); }
.coop ul { margin: 0; padding-left: 0; list-style: none; }
.coop li {
  position: relative; padding-left: 18px; margin-bottom: 9px;
  font-size:13px; line-height: 1.75; color: var(--ink-2);
}
.coop li::before {
  content: ''; position: absolute; left: 2px; top: 9px;
  width: 6px; height: 6px; border-radius:50%; background: var(--brand);
}
.coop-biz li::before { background: #0d9488; }

/* ---------- 业务板块：研发归集 / 知识产权 / 供应链金融 ---------- */
.svc-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 12px; }
.svc {
  background: var(--card); border: 1px solid var(--line); border-radius:var(--radius);
  padding: 16px 17px; box-shadow: var(--shadow-sm);
}
.svc-ico {
  width: 30px; height: 30px; border-radius:8px;
  display: flex; align-items: center; justify-content: center; margin-bottom: 10px;
  font-size:13px; font-weight: 800; letter-spacing: .04em; color: #fff;
}
.svc b { display: block; font-size: 13.5px; font-weight: 700; color: var(--ink); margin-bottom: 6px; }
.svc p { margin: 0; font-size:13px; line-height: 1.75; color: var(--ink-3); }
.svc-ip .svc-ico { background: #7c3aed; }
.svc-scf .svc-ico { background: #0d9488; }
.svc-basis { margin: 12px 0 0; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.svc-basis i { font-style: normal; font-size:12.5px; color: var(--ink-3); }
.svc-basis span {
  font-size:12.5px; color: var(--ink-2);
  background: var(--brand-soft); border: 1px solid var(--line-soft);
  padding: 2px 9px; border-radius:999px;
}

/* ---------- 研发费用归集合规指导（蓝色重点板块） ---------- */
.rd-blue {
  background:
    radial-gradient(720px 300px at 92% -20%, rgba(255, 255, 255, .14), transparent 60%),
    linear-gradient(135deg, #12224d, #1e4fd8);
  color: #fff; border-radius:16px; padding: 26px 28px;
}
.rb-eyebrow { font-size:12.5px; letter-spacing: .14em; color: rgba(255, 255, 255, .62); margin-bottom: 8px; }
.rd-blue h2 { margin: 0 0 8px; font-size: 26px; font-weight: 800; letter-spacing: -.4px; color: #fff; }
.rb-lede { margin: 0 0 20px; font-size: 13px; line-height: 1.75; color: rgba(255, 255, 255, .78); max-width: 760px; }
.rb-body { display: grid; grid-template-columns: 1.12fr .88fr; gap: 22px; align-items: start; }
.rb-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 18px; }
.rb-list li { display: flex; gap: 12px; align-items: flex-start; }
.rb-list b {
  font-size: 23px; font-weight: 800; color: #ffd166;
  letter-spacing: -.5px; line-height: 1.1; min-width: 78px;
}
.rb-list strong { display: block; font-size: 13px; font-weight: 700; color: #fff; margin-bottom: 3px; }
.rb-list span { font-size:13px; line-height: 1.65; color: rgba(255, 255, 255, .72); }
.rb-calc {
  background: #fff; color: var(--ink); border-radius:12px; padding: 18px 20px;
  box-shadow: 0 14px 34px -18px rgba(4, 14, 44, .55);
}
.rc-t { font-size:13px; font-weight: 800; letter-spacing: .08em; color: var(--brand); margin-bottom: 10px; }
.rc-row {
  display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  padding: 8px 0; border-bottom: 1px dashed var(--line);
  font-size: 13px; color: var(--ink-2);
}
.rc-row b { font-size: 17px; font-weight: 800; color: var(--ink); }
.rc-row.rc-hl { border-bottom: none; }
.rc-row.rc-hl b { color: #c2410c; font-size: 21px; }
.rc-note { margin-top: 8px; font-size:12.5px; line-height: 1.6; color: var(--ink-4); }
.rb-caps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 22px; }
.rb-cap {
  background: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .14);
  border-radius:10px; padding: 12px 14px;
}
.rb-cap b { display: block; font-size:13px; font-weight: 700; color: #fff; margin-bottom: 4px; }
.rb-cap span { font-size:12.5px; line-height: 1.6; color: rgba(255, 255, 255, .66); }
.rb-basis { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 16px; }
.rb-basis i { font-style: normal; font-size:12.5px; color: rgba(255, 255, 255, .6); }
.rb-basis span {
  font-size:12.5px; color: rgba(255, 255, 255, .85);
  background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .16);
  padding: 2px 9px; border-radius:999px;
}

/* ---------- 政策依据 ---------- */
.basis-list {
  margin: 0; padding: 16px 20px 16px 34px;
  background: var(--card); border: 1px solid var(--line);
  border-radius:var(--radius); box-shadow: var(--shadow-sm);
  font-size:13px; line-height: 1.9; color: var(--ink-2);
}
.basis-list li { margin-bottom: 4px; }

/* ---------- 联系 ---------- */
.home-contact {
  display: flex; justify-content: space-between; align-items: center;
  gap: 18px; flex-wrap: wrap;
  background: linear-gradient(135deg, #12224d, #1e4fd8);
  color: #fff; border-radius:16px; padding: 24px 28px;
}
.hc-l b { font-size: 15px; font-weight: 700; display: block; margin-bottom: 5px; }
.hc-l p { margin: 0; font-size:13px; color: rgba(255, 255, 255, .78); }
.hc-r { display: flex; gap: 22px; flex-wrap: wrap; }
.hc-r span { font-size: 13px; color: #fff; display: flex; flex-direction: column; gap: 2px; }
.hc-r i { font-style: normal; font-size:12.5px; color: rgba(255, 255, 255, .6); letter-spacing: .06em; }

/* ---------- 深色适配 ---------- */
html[data-theme="dark"] .tier-badge.tone-blue   { background: #16233f; color: #7da4ff; }
html[data-theme="dark"] .tier-badge.tone-indigo { background: #1e1d3d; color: #a5a1ff; }
html[data-theme="dark"] .tier-badge.tone-teal   { background: #102a26; color: #4fd1bd; }
html[data-theme="dark"] .tier-badge.tone-amber  { background: #2b2210; color: #f0b429; }
html[data-theme="dark"] .tier-badge.tone-slate  { background: #1c2431; color: #9aa8bd; }
html[data-theme="dark"] .home-hero {
  background:
    radial-gradient(760px 380px at 8% -10%, rgba(91, 140, 255, .12), transparent 62%),
    var(--card);
}

/* ---------- 响应式 ---------- */
@media (max-width: 1080px) {
  .flow { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .flow-step:nth-child(3n) { border-right: none; }
  .flow-step:nth-child(-n+3) { border-bottom: 1px solid var(--line-soft); }
  .rb-caps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 860px) {
  .home-hero { padding: 26px 20px 22px; border-radius:12px; }
  .home-hero h1 { font-size: 24px; letter-spacing: -.4px; }
  .hh-lede { font-size: 13px; }
  .hh-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px 12px; }
  .hs-n { font-size: 24px; }
  .flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .flow-step:nth-child(2n) { border-right: none; }
  .flow-step { border-bottom: 1px solid var(--line-soft); }
  .home-contact { padding: 20px; }
  .sec-head h2 { font-size: 15.5px; }
  .rd-blue { padding: 22px 18px; }
  .rd-blue h2 { font-size: 21px; }
  .rb-body { grid-template-columns: 1fr; }
  .rb-list { grid-template-columns: 1fr; }
  .rb-caps { grid-template-columns: 1fr; }
}

/* ---------- 打印（会谈时直接给纸质版 / PDF） ---------- */
@media print {
  .sidebar, .head-actions, .hh-actions, .home-contact .hc-r { display: none !important; }
  .main { padding: 0 !important; max-width: none !important; }
  .home-hero, .tier, .cap, .flow, .coop, .basis-list, .svc, .rd-blue {
    box-shadow: none !important; break-inside: avoid;
  }
  .home-sec { break-inside: avoid; }
  .home-contact { background: #fff !important; color: #000 !important; border: 1px solid #ccc; }
  .home-contact .hc-l b, .home-contact .hc-l p { color: #000 !important; }
  .rd-blue { background: #fff !important; color: #000 !important; border: 1px solid #ccc; }
  .rd-blue h2, .rd-blue .rb-list strong { color: #000 !important; }
  .rd-blue .rb-eyebrow, .rd-blue .rb-lede, .rd-blue .rb-list span,
  .rd-blue .rb-cap b, .rd-blue .rb-cap span, .rd-blue .rb-basis i { color: #333 !important; }
  .rd-blue .rb-list b { color: #1e4fd8 !important; }
  .rd-blue .rb-cap, .rd-blue .rb-basis span { background: #fff !important; border-color: #ddd !important; }
  .rd-blue .rb-calc { box-shadow: none !important; border: 1px solid #ddd; }
  .home-hero { padding: 0 0 18px; border: none; }
  body { font-size:13px; }
}

/* 联系区：主体全称 */
.hc-l .hc-legal {
  font-size:13px;
  color: rgba(255, 255, 255, .88);
  margin: 0 0 6px 0;
  letter-spacing: .02em;
}

/* 联系区：微信二维码 */
.hc-qr { display: flex; align-items: center; gap: 12px; margin-top: 16px; }
.hc-qr img {
  width: 86px; height: 86px; flex: 0 0 86px;
  background: #fff; border-radius:10px; padding: 6px;
  object-fit: contain; display: block; box-sizing: border-box;
}
.hc-qr-t { font-size:13px; color: rgba(255, 255, 255, .88); line-height: 1.55; }
.hc-qr-t b { display: block; font-size: 13px; font-weight: 700; margin-bottom: 3px; color: #fff; }
.hc-qr-t span { color: rgba(255, 255, 255, .72); }

/* ============================================================
   品牌 LOGO 接入（替换原"远"字标记）
   ============================================================ */
.logo-mark {
  background: transparent;
  box-shadow: none;
  border-radius:0;
  width: 38px; height: 38px; flex: 0 0 38px;
  padding: 0; overflow: visible;
}
.logo-mark img { width: 100%; height: 100%; object-fit: contain; display: block; }
.logo-txt b {
  font-size: 13px;
  letter-spacing: -.2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.auth-logo {
  background: transparent;
  box-shadow: none;
  width: 46px; height: 46px; border-radius:0;
  padding: 0; margin-bottom: 14px;
}
.auth-logo img { width: 100%; height: 100%; object-fit: contain; display: block; }

.ah-mark {
  background: rgba(255, 255, 255, .92);
  border: none;
  padding: 6px;
  width: 40px; height: 40px;
  box-shadow: 0 6px 14px -8px rgba(0, 0, 0, .5);
}
.ah-mark img { width: 100%; height: 100%; object-fit: contain; display: block; }

@media (max-width: 860px) {
  .logo-txt b { font-size: 13px; }
}

/* ============================================================
   客户管理
   ============================================================ */
.bg-brand { background: var(--brand); }
.bg-warn { background: var(--warn); }
.bg-ok { background: var(--ok); }
.bg-danger { background: var(--danger); }
.bg-mute { background: #a8b3c7; }

/* 阶段漏斗 */
.crm-funnel {
  display: grid;
  grid-template-columns: repeat(8, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 14px;
}
.crm-fn {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
  border: 1px solid var(--line); background: var(--card);
  border-radius:10px; padding: 10px 11px; cursor: pointer;
  font-family: inherit; text-align: left;
  transition: border-color .15s, box-shadow .15s, background .15s;
  position: relative; overflow: hidden;
}
.crm-fn::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: var(--line);
}
.crm-fn.bg-brand::before { background: var(--brand); }
.crm-fn.bg-warn::before { background: var(--warn); }
.crm-fn.bg-ok::before { background: var(--ok); }
.crm-fn.bg-danger::before { background: var(--danger); }
.crm-fn.bg-mute::before { background: #a8b3c7; }
.crm-fn b { font-size: 20px; font-weight: 800; color: var(--ink); line-height: 1.1; font-variant-numeric: tabular-nums; }
.crm-fn span { font-size:12.5px; color: var(--ink-3); }
.crm-fn:hover { border-color: var(--brand); box-shadow: var(--shadow-sm); }
.crm-fn.on { border-color: var(--brand); background: var(--brand-soft); box-shadow: 0 0 0 1px var(--brand) inset; }
.crm-fn.on span { color: var(--brand); font-weight: 600; }

/* 工具条 */
.crm-tools { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.crm-tools input[type=text] {
  flex: 1; min-width: 220px; padding: 7px 11px; font-size: 13px;
  border: 1px solid var(--line); border-radius:8px;
  background: var(--card); color: var(--ink);
}
.crm-tools input[type=text]:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(30,79,216,.1); }
.crm-count { font-size:13px; color: var(--ink-4); margin-left: auto; }

/* 表格 */
.crm-tbl th { white-space: nowrap; }
.crm-row { cursor: pointer; }
.crm-row:hover td { background: var(--brand-soft); }
.lead-sel { padding: 5px 8px; border: 1px solid var(--line); border-radius:8px; background: var(--card); color: var(--ink); font-size:13px; }
.lead-inp { width: 96px; padding: 5px 8px; border: 1px solid var(--line); border-radius:8px; background: var(--card); color: var(--ink); font-size:13px; }
.crm-name { font-size: 13px; font-weight: 600; color: var(--ink); line-height: 1.4; }
.crm-sub { font-size:12.5px; color: var(--ink-4); margin-top: 2px; }
.crm-dash { color: var(--ink-4); }
.crm-next {
  max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-size:13px; color: var(--ink-2);
}
.crm-bar {
  height: 6px; border-radius:6px; background: var(--line-soft); overflow: hidden;
}
.crm-bar > i { display: block; height: 100%; border-radius:6px; transition: width .3s; }
.crm-pct { font-size:12.5px; color: var(--ink-4); margin-top: 3px; font-variant-numeric: tabular-nums; }
.crm-over { color: var(--danger); font-weight: 600; }
.crm-over-t {
  display: inline-block; margin-left: 5px; font-size:12px; font-weight: 600;
  color: #fff; background: var(--danger); border-radius:6px; padding: 0 4px;
}
.crm-act { white-space: nowrap; }
.crm-act .btn { margin-right: 4px; }

/* 详情抽屉 */
.crm-dsec { margin-bottom: 20px; }
.crm-dsec:first-child { margin-top: 0; }
.crm-dsec h4 {
  font-size:13px; font-weight: 700; color: var(--ink);
  margin: 0 0 10px 0; padding-bottom: 6px;
  border-bottom: 1px solid var(--line-soft);
}
.crm-stages { display: flex; flex-wrap: wrap; gap: 6px; }
.crm-sc {
  border: 1px solid var(--line); background: var(--card); color: var(--ink-2);
  border-radius:999px; padding: 5px 13px; font-size:13px;
  cursor: pointer; font-family: inherit; transition: all .15s;
}
.crm-sc:hover { border-color: var(--brand); color: var(--brand); }
.crm-sc.on { background: var(--brand); border-color: var(--brand); color: #fff; font-weight: 600; }
.crm-dfoot {
  display: flex; gap: 8px; align-items: center;
  padding-top: 14px; border-top: 1px solid var(--line-soft);
}

/* 轻提示 */
.crm-toast {
  position: fixed; left: 50%; bottom: 34px; transform: translate(-50%, 12px);
  background: #1f2937; color: #fff; font-size: 13px;
  padding: 10px 18px; border-radius:10px; z-index: 400;
  box-shadow: 0 12px 28px -10px rgba(0, 0, 0, .5);
  opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s;
  max-width: 82vw; line-height: 1.6;
}
.crm-toast.on { opacity: 1; transform: translate(-50%, 0); }
html[data-theme="dark"] .crm-toast { background: #e8edf7; color: #10151f; }

@media (max-width: 1080px) {
  .crm-funnel { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (max-width: 860px) {
  .crm-funnel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .crm-next { max-width: 120px; }
  .crm-tools input[type=text] { min-width: 0; width: 100%; }
  .crm-count { margin-left: 0; }
}

/* ============================================================
   侧栏分组强化（2026-10-22）
   ------------------------------------------------------------
   问题：原分组标题只是 10.5px 浅灰小字，四个板块看不出边界。
   做法：分组名用板块主题色 + 前置色条 + 右侧渐隐分割线，
        图标同色呼应；块间留白加大。悬停与选中态仍以品牌蓝为准。
   ============================================================ */

/* 板块主题色（浅色）：档案蓝 / 资金青 / 合规紫 / 输出琥珀 */
.nav-sep[data-grp="档案与诊断"], .nav-item[data-grp="档案与诊断"] { --gc: #2159d8; }
.nav-sep[data-grp="政策与资金"], .nav-item[data-grp="政策与资金"] { --gc: #0b8a7d; }
.nav-sep[data-grp="研发与合规"], .nav-item[data-grp="研发与合规"] { --gc: #6d3fc4; }
.nav-sep[data-grp="输出与执行"], .nav-item[data-grp="输出与执行"] { --gc: #b4620a; }

/* 分组标题 */
.nav-sep {
  display: flex; align-items: center; gap: 7px;
  padding: 21px 10px 8px;
  font-size:12.5px; font-weight: 700;
  letter-spacing: .06em;
  color: var(--gc, var(--ink-3));
  opacity: 1;
  cursor: default;
  user-select: none;
}
.nav-sep .ns-bar {
  width: 3px; height: 11px; border-radius:2px;
  background: var(--gc, var(--brand));
  flex: none;
}
.nav-sep .ns-txt { color: var(--gc, var(--ink-2)); }
.nav-sep .ns-line {
  flex: 1; height: 1px; margin-left: 2px;
  background: linear-gradient(90deg, var(--gc, var(--line)) 0%, var(--line) 55%, transparent 100%);
  opacity: .5;
}

/* 图标随板块着色，与标题呼应 */
.nav-item .ico { color: var(--gc, inherit); }
.nav-item[data-grp] .ico { opacity: .92; }
.nav-item:hover .ico { color: var(--brand); opacity: 1; }
.nav-item.active .ico { color: #fff; opacity: 1; }

/* 未分组的顶层项（业务总览 / 驾驶舱 / 客户管理）保持中性 */
.nav-item:not([data-grp]) .ico { color: currentColor; }

/* 深色模式：提亮一档，保证对比度 */
html[data-theme="dark"] .nav-sep[data-grp="档案与诊断"],
html[data-theme="dark"] .nav-item[data-grp="档案与诊断"] { --gc: #7ea6ff; }
html[data-theme="dark"] .nav-sep[data-grp="政策与资金"],
html[data-theme="dark"] .nav-item[data-grp="政策与资金"] { --gc: #4fd1bd; }
html[data-theme="dark"] .nav-sep[data-grp="研发与合规"],
html[data-theme="dark"] .nav-item[data-grp="研发与合规"] { --gc: #b39bff; }
html[data-theme="dark"] .nav-sep[data-grp="输出与执行"],
html[data-theme="dark"] .nav-item[data-grp="输出与执行"] { --gc: #f0b429; }

/* 移动端：横向滚动时分组标题改为竖排小标签，避免占宽 */
@media (max-width: 860px) {
  .nav-sep {
    padding: 0 11px; gap: 6px;
    margin-left: 7px;
    border-left: 1px solid var(--line);
    flex: none; align-items: center;
    font-size:12px;
  }
  .nav-sep .ns-line { display: none; }
  .nav-sep .ns-bar { height: 9px; }
}

/* ============================================================
   研发流程子菜单（左栏平铺，替代页内二级侧栏）
   ------------------------------------------------------------
   主项"研发项目"下方缩进列出各流程页签；分组小标题分节。
   ============================================================ */
.nav-subg { font-size:12px; color: var(--ink-4); padding: 7px 11px 2px 30px; letter-spacing: 1px; }
.nav-sub {
  display: flex; align-items: center; gap: 7px;
  width: calc(100% - 16px); margin: 1px 0 1px 16px;
  padding: 5px 10px; border: none; border-radius:8px;
  background: none; color: var(--ink-2); font-family: inherit;
  font-size:13px; text-align: left; cursor: pointer;
  transition: background .15s, color .15s;
}
.nav-sub .rdw-ico { width: 14px; flex: none; text-align: center; font-size:12.5px; opacity: .75; }
.nav-sub .lbl { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-sub:hover { background: rgba(46, 107, 230, .08); color: var(--ink); }
.nav-sub.on {
  background: linear-gradient(90deg, rgba(46, 107, 230, .14), rgba(46, 107, 230, .06));
  color: var(--brand); font-weight: 700;
}
.nav-sub.on .rdw-ico { opacity: 1; }
html[data-theme="dark"] .nav-sub:hover { background: rgba(94, 140, 255, .12); }
html[data-theme="dark"] .nav-sub.on {
  background: linear-gradient(90deg, rgba(94, 140, 255, .2), rgba(94, 140, 255, .08));
  color: #9db9ff;
}
@media (max-width: 860px) {
  .nav-sub { width: auto; flex: none; margin-left: 7px; padding: 4px 9px; border: 1px solid var(--line); border-radius:99px; white-space: nowrap; }
  .nav-sub.on { border-color: var(--brand); }
  .nav-subg { display: none; }
}

/* 研发工作区全宽（页内二级侧栏已移除，主栏平铺流程菜单） */
.rdw-main-full { min-width: 0; --rdw-pin-h: 50px; margin-top: 2px; }
@media (max-width: 980px) { .rdw-main-full { --rdw-pin-h: 96px; } }
.rdw-main-full .tbl input[type=text], .rdw-main-full .tbl input[type=number], .rdw-main-full .tbl select { width: 100%; padding: 4px 6px; font-size:13px; border: 1px solid var(--line-soft); border-radius:8px; background: var(--card); color: var(--ink); font-family: inherit; }
.rdw-main-full .tbl input:focus, .rdw-main-full .tbl select:focus { border-color: var(--brand); outline: none; }

/* ============================================================
   政策库 · 惠企政策自动同步
   ============================================================ */
#polFeed { }
.pf-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; flex-wrap: wrap; margin-bottom: 12px;
}
.pf-head h2 { display: flex; align-items: center; gap: 10px; }
.pf-live {
  font-size:12.5px; font-weight: 600; letter-spacing: .04em;
  color: #0b8a7d; background: #e3f7f3;
  border-radius:999px; padding: 2px 9px;
}
html[data-theme="dark"] .pf-live { color: #4fd1bd; background: #102a26; }
.pf-head .sub { margin-top: 4px; }
.pf-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pf-time { font-size:13px; color: var(--ink-4); font-variant-numeric: tabular-nums; }

.pf-filters { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
.pf-chip {
  border: 1px solid var(--line); background: var(--card); color: var(--ink-2);
  border-radius:999px; padding: 4px 13px; font-size:13px; cursor: pointer;
  font-family: inherit; transition: all .15s;
}
.pf-chip:hover { border-color: var(--brand); color: var(--brand); }
.pf-chip.on { background: var(--brand); border-color: var(--brand); color: #fff; font-weight: 600; }

.pf-list { display: flex; flex-direction: column; }
.pf-item {
  display: grid;
  grid-template-columns: 52px 48px 56px minmax(0, 1fr) 64px;
  align-items: center; gap: 10px;
  padding: 9px 6px;
  border-bottom: 1px solid var(--line-soft);
}
.pf-item:last-child { border-bottom: none; }
.pf-item:hover { background: var(--brand-soft); border-radius:8px; }
.pf-date { font-size:13px; color: var(--ink-3); font-variant-numeric: tabular-nums; white-space: nowrap; }
.pf-badge { justify-self: start; }
.pf-tag { text-align: center; justify-self: start; }
.pf-title { font-size: 13px; color: var(--ink); line-height: 1.5; text-decoration: none; min-width: 0; }
.pf-title:hover { color: var(--brand); text-decoration: underline; }
.pf-new {
  font-size:12px; font-weight: 700; color: #fff; background: #d92d20;
  border-radius:6px; padding: 0 4px; margin-left: 4px; vertical-align: 1px;
}
.pf-dept { font-size:12.5px; color: var(--ink-4); text-align: right; white-space: nowrap; }
.pf-empty { padding: 26px 8px; text-align: center; color: var(--ink-4); font-size: 13px; }

@media (max-width: 860px) {
  .pf-item { grid-template-columns: 42px 48px 56px minmax(0, 1fr); }
  .pf-dept { display: none; }
  .pf-meta { width: 100%; }
  .pf-head .sub { max-width: 100%; }
}

/* ============================================================
   知识产权服务页
   ============================================================ */
.ip-price {
  text-align: right;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--brand);
  white-space: nowrap;
}
.ip-flow .fs-no { font-size:12.5px; }
.ip-notes {
  margin: 0; padding-left: 20px;
  font-size: 13px; line-height: 1.9; color: var(--ink-2);
}
.ip-notes li { margin-bottom: 6px; }
@media (max-width: 860px) {
  .ip-price { white-space: nowrap; }
}

/* 企业档案 · 专精特新要素块 */
.ipx-wrap {
  margin-top: 16px;
  padding: 14px 16px 16px;
  border: 1px solid var(--line);
  border-left: 3px solid #b4620a;
  border-radius:10px;
  background: var(--bg);
}
.ipx-wrap .fgrid { margin-bottom: 8px; }

/* ============================================================
   首页增强 · 自助诊断 / 样例 / 预约 / 政策预览 / 受众入口（2026-10-22）
   ============================================================ */

/* 首屏主 CTA：行动指令型，突出"免费开始资质诊断" */
.home-hero h1 { font-size: 31px; }
.hh-actions .btn-lg { min-width: 168px; justify-content: center; }

/* 流程卡：查看样例按钮 */
.fs-sample {
  margin-top: 10px; width: 100%; text-align: left;
  background: transparent; border: 1px dashed var(--brand-line); color: var(--brand);
  border-radius:8px; padding: 6px 10px; font-size:13px; font-family: inherit; cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
.fs-sample:hover { background: var(--brand-soft); border-style: solid; color: var(--brand-dark); }
.fs-sample:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }

/* ---------- 弹窗（模态） ---------- */
.hm-mask {
  position: fixed; inset: 0; z-index: 320;
  background: rgba(12, 18, 30, .5);
  display: flex; align-items: center; justify-content: center; padding: 18px;
  animation: hmMaskIn .18s ease;
}
@keyframes hmMaskIn { from { opacity: 0; } to { opacity: 1; } }
.hm-modal {
  width: min(580px, 96vw); max-height: 90vh; overflow: auto;
  background: var(--card); border: 1px solid var(--line); border-radius:16px;
  box-shadow: var(--shadow-lg); animation: hmIn .2s ease; position: relative;
}
@keyframes hmIn { from { opacity: 0; transform: translateY(10px) scale(.985); } to { opacity: 1; transform: none; } }
.hm-head {
  position: relative; display: flex; justify-content: space-between; align-items: flex-start; gap: 12px;
  padding: 18px 20px; border-bottom: 1px solid var(--line-soft);
}
.hm-head b { font-size: 16px; color: var(--ink); }
.hm-sub { font-size:13px; color: var(--ink-3); margin-top: 3px; }
.hm-body { padding: 18px 20px 22px; }
.hm-err { background: var(--danger-soft); color: var(--danger); font-size:13px; padding: 8px 11px; border-radius:8px; margin: 10px 0 0; line-height: 1.6; }
.hm-note { font-size:12.5px; color: var(--ink-4); margin: 12px 0 0; line-height: 1.7; }
.hm-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 14px; }
.hm-h4 { font-size: 13px; font-weight: 700; color: var(--brand); margin: 16px 0 8px; }
.hm-rec, .hm-gap { margin: 0; padding-left: 20px; }
.hm-rec li, .hm-gap li { font-size: 13px; line-height: 1.8; color: var(--ink-2); margin-bottom: 5px; }
.hm-gap li b { color: var(--ink); }
.hm-ok { background: var(--ok-soft); color: var(--ok); font-size: 13px; padding: 10px 12px; border-radius:10px; margin-top: 12px; font-weight: 600; line-height: 1.6; }
.x-close {
  position: absolute; top: 12px; right: 14px; width: 30px; height: 30px;
  border: none; background: transparent; font-size: 24px; line-height: 1; color: var(--ink-3);
  cursor: pointer; border-radius:8px;
}
.x-close:hover { background: var(--bg); color: var(--ink); }

/* 脱敏样例纸张 */
.hm-sample-paper { border: 1px solid var(--line); border-radius:12px; overflow: hidden; background: var(--card); }
.hm-sp-label { background: var(--warn-soft); color: var(--warn); font-size:12.5px; font-weight: 600; text-align: center; padding: 6px; letter-spacing: .04em; }
.hm-sp-title { font-size: 14px; font-weight: 700; color: var(--ink); padding: 12px 14px 4px; }
.hm-sp-body { padding: 6px 16px 12px; min-height: 84px; }
.hm-sp-foot { font-size:12.5px; color: var(--ink-4); padding: 8px 14px 12px; border-top: 1px dashed var(--line); line-height: 1.6; }
.sm-row { display: flex; align-items: center; gap: 8px; font-size:13px; color: var(--ink-2); margin: 6px 0; }
.sm-row span { width: 112px; flex: none; color: var(--ink-3); }
.sm-bar { height: 9px; border-radius:5px; background: var(--brand); display: inline-block; flex: 1; max-width: 56%; opacity: .82; }
.sm-line { height: 9px; border-radius:5px; background: var(--line); margin: 8px 0; width: 88%; }
.sm-tbl { width: 100%; border-collapse: collapse; font-size:13px; }
.sm-tbl th, .sm-tbl td { border: 1px solid var(--line); padding: 6px 8px; text-align: left; }
.sm-tbl th { background: var(--bg); color: var(--ink-2); }
.sm-list { margin: 6px 0; padding-left: 18px; font-size:13px; color: var(--ink-2); line-height: 1.8; }
.sm-tag { display: inline-block; margin-top: 6px; font-size:12.5px; font-weight: 600; color: var(--brand); background: var(--brand-soft); border-radius:8px; padding: 2px 8px; }
.sm-bad { color: var(--danger); font-weight: 600; }
.sm-ok { color: var(--ok); font-weight: 600; }

/* 政策匹配预览 */
.pp-box { background: var(--card); border: 1px solid var(--line); border-radius:var(--radius); padding: 16px 18px; box-shadow: var(--shadow-sm); }
.pp-result { margin-top: 12px; display: flex; flex-direction: column; gap: 10px; }
.pp-item { border: 1px solid var(--line); border-left: 3px solid var(--brand); border-radius:10px; padding: 12px 14px; background: var(--bg); }
.pp-item b { font-size: 13.5px; color: var(--ink); }
.pp-win { font-size:13px; color: var(--ink-3); margin-top: 4px; }
.pp-gate { font-size:13px; color: var(--ink-2); margin-top: 4px; line-height: 1.6; }
.pp-empty { font-size:13px; color: var(--ink-4); padding: 10px 0; }

/* 预约诊断表单（嵌于深色联系区） */
.appt { background: rgba(255, 255, 255, .1); border: 1px solid rgba(255, 255, 255, .2); border-radius:12px; padding: 16px 18px; min-width: 300px; flex: 1; }
html[data-theme="dark"] .appt { background: rgba(255, 255, 255, .05); }
.appt h3 { margin: 0 0 12px; font-size: 14.5px; color: #fff; }
.appt .field label { color: rgba(255, 255, 255, .82); }
.appt input, .appt select { background: rgba(255, 255, 255, .96); color: var(--ink); border-color: transparent; }
.appt input:focus, .appt select:focus { border-color: var(--brand); box-shadow: 0 0 0 3px rgba(30, 79, 216, .25); }
.appt-step { margin-bottom: 8px; }
.appt-done { background: rgba(255, 255, 255, .94); color: #163a9e; font-weight: 600; font-size: 13px; padding: 12px 14px; border-radius:10px; margin-top: 6px; line-height: 1.6; }
.appt-privacy { font-size:12.5px; color: rgba(255, 255, 255, .62); margin-top: 10px; line-height: 1.6; }

/* 全站页脚（备案 / 数据说明） */
.site-foot {
  max-width: 1180px; margin: 18px auto 0; padding: 14px 4px;
  display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap;
  font-size:12.5px; color: var(--ink-4); border-top: 1px solid var(--line);
}
.site-foot a { color: var(--ink-3); text-decoration: none; }
.site-foot a:hover { color: var(--brand); text-decoration: underline; }

/* 登录墙数据用途说明（P2-2） */
.gate-note { font-size:12.5px; color: var(--ink-3); margin-top: 14px; line-height: 1.7; text-align: center; }

/* ---------- 响应式：移动端 ---------- */
@media (max-width: 860px) {
  .hm-modal { width: 96vw; }
  .home-contact { flex-direction: column; align-items: stretch; }
  .appt { min-width: 0; }
  .site-foot { flex-direction: column; gap: 4px; }
}
@media (max-width: 480px) {
  .home-hero h1 { font-size: 21px; }
  .hh-actions .btn-lg { min-width: 0; flex: 1; }
}

/* ---------- 登录状态：顶部徽标 + 侧栏用户卡片 ---------- */
.main-topbar { display: flex; justify-content: flex-end; align-items: center; gap: 10px; margin-bottom: 10px; }
.user-badge {
  display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px; border-radius:999px;
  font-size:13px; border: 1px solid var(--line); background: var(--card); color: var(--ink-3);
  white-space: nowrap; line-height: 1.2;
}
.user-badge .ub-dot { width: 7px; height: 7px; border-radius:50%; background: var(--ink-4); flex: none; }
.user-badge.on { border-color: rgba(30, 79, 216, .3); background: var(--brand-soft); color: var(--brand); font-weight: 500; }
.user-badge.on .ub-dot { background: var(--ok); }
.user-badge.off { cursor: pointer; }
.user-badge.off:hover { border-color: var(--line); color: var(--ink); background: var(--bg); }
.side-user { display: flex; gap: 9px; align-items: center; }
.su-av {
  width: 30px; height: 30px; border-radius:50%; background: var(--brand); color: #fff;
  display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; flex: none;
}
.su-meta { display: flex; flex-direction: column; gap: 1px; min-width: 0; line-height: 1.35; }
.su-meta b { font-size:13px; color: var(--ink); font-weight: 600; }
.su-role { font-size:12.5px; color: var(--brand); }
.su-mail { font-size:12.5px; color: var(--ink-4); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 480px) { .user-badge { font-size:13px; padding: 4px 9px; } }
.ub-wrap { position: relative; }
.user-badge .ub-caret { font-size: 9px; opacity: .7; margin-left: 1px; }
.user-menu {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 60;
  background: var(--card); border: 1px solid var(--line); border-radius:10px;
  box-shadow: var(--shadow); padding: 8px; min-width: 200px;
}
.um-mail { font-size:13px; color: var(--ink-3); padding: 4px 8px 8px; border-bottom: 1px solid var(--line-soft); margin-bottom: 6px; word-break: break-all; }
.um-out { width: 100%; text-align: left; padding: 7px 8px; border: none; background: transparent; color: var(--danger); font-size:13px; border-radius:8px; cursor: pointer; }
.um-out:hover { background: var(--danger-soft); }
.um-item {
  width: 100%; display: flex; align-items: baseline; justify-content: space-between; gap: 10px;
  padding: 7px 8px; border: none; background: transparent; color: var(--ink);
  font-size:13px; font-weight: 600; border-radius:8px; cursor: pointer; font-family: inherit; text-align: left;
}
.um-item:hover { background: var(--brand-soft); color: var(--brand); }
.um-item .um-sub { font-size:12.5px; color: var(--ink-4); font-weight: 400; }
.um-item:hover .um-sub { color: var(--brand); }

/* ---------- 研发立项全流程 stepper ---------- */
.rdf-steps { display: flex; align-items: stretch; gap: 4px; flex-wrap: wrap; }
.rdf-step {
  flex: 1 1 108px; min-width: 102px; display: flex; flex-direction: column; align-items: flex-start; gap: 3px;
  padding: 9px 10px; border: 1px solid var(--line); border-radius:10px; background: var(--card);
  cursor: pointer; text-align: left; font-family: inherit;
}
.rdf-step .rdf-no { width: 18px; height: 18px; border-radius:50%; background: var(--line); color: var(--ink-3); font-size:12.5px; display: flex; align-items: center; justify-content: center; }
.rdf-step .rdf-t { font-size:13px; font-weight: 600; color: var(--ink-2); }
.rdf-step .rdf-d { font-size:12px; color: var(--ink-4); line-height: 1.35; }
.rdf-step:hover { border-color: var(--brand); }
.rdf-step.done { background: var(--brand-soft); border-color: rgba(30, 79, 216, .25); }
.rdf-step.done .rdf-no { background: var(--ok); color: #fff; }
.rdf-step.on { background: var(--brand); border-color: var(--brand); }
.rdf-step.on .rdf-t, .rdf-step.on .rdf-d { color: #fff; }
.rdf-step.on .rdf-no { background: rgba(255, 255, 255, .28); color: #fff; }
.rdf-arrow { color: var(--ink-4); align-self: center; font-size: 14px; }
@media (max-width: 860px) { .rdf-step { flex: 1 1 44%; min-width: 0; } .rdf-arrow { display: none; } }

/* ---------- 企业名称检索下拉（工商库） ---------- */
.el-field { position: relative; }
.el-wrap { position: relative; }
.el-pop {
  position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 80;
  background: var(--card); border: 1px solid var(--line); border-radius:10px;
  box-shadow: var(--shadow); max-height: 300px; overflow: auto; padding: 4px;
}
.el-item { padding: 8px 9px; border-radius:8px; cursor: pointer; }
.el-item:hover, .el-item.on { background: var(--brand-soft); }
.el-nm { font-size: 13px; font-weight: 600; color: var(--ink); line-height: 1.4; }
.el-sub { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 3px; font-size:12.5px; color: var(--ink-3); }
.el-cc { font-family: ui-monospace, Menlo, Consolas, monospace; letter-spacing: .02em; color: var(--ink-2); }
.el-nocode { color: var(--warn); font-family: inherit; }
.el-region { color: var(--ink-4); }
.el-tag { padding: 1px 6px; border-radius:999px; background: var(--bg); border: 1px solid var(--line-soft); font-size:12px; color: var(--ink-3); }
.el-tag-warn { background: var(--warn-soft); border-color: rgba(180, 120, 0, .25); color: var(--warn); }
.el-foot { padding: 6px 9px 3px; font-size:12px; color: var(--ink-4); border-top: 1px solid var(--line-soft); margin-top: 3px; }
.el-empty { padding: 10px; font-size:13px; color: var(--ink-3); line-height: 1.6; }
.el-dim { color: var(--ink-4); font-size:12.5px; }

/* ---------- 研发项目管理：页签 + 文档归档 ---------- */
.rd-kpi .stat b { font-size: 22px; }
.rd-kpi-s { font-size:12.5px; color: var(--ink-4); margin-top: 2px; }
.rd-tabs { display: flex; gap: 6px; flex-wrap: wrap; margin: 12px 0 4px; }
.rd-tab {
  flex: 1 1 150px; min-width: 132px; text-align: left; cursor: pointer;
  padding: 9px 12px; border: 1px solid var(--line); border-radius:10px;
  background: var(--card); font-family: inherit; display: flex; flex-direction: column; gap: 2px;
}
.rd-tab b { font-size: 13px; color: var(--ink-2); font-weight: 600; }
.rd-tab span { font-size:12px; color: var(--ink-4); }
.rd-tab:hover { border-color: var(--brand); }
.rd-tab.on { background: var(--brand); border-color: var(--brand); }
.rd-tab.on b, .rd-tab.on span { color: #fff; }

.rd-tool-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 10px; }
.rd-tool-hint { margin-top: 8px; font-size:12.5px; color: var(--ink-4); line-height: 1.6; }

/* 文档归档 */
.rdd-bar { margin: 10px 0 4px; }
.rdd-bar-t { font-size:13px; color: var(--ink-2); }
.rdd-bar-t b { color: var(--brand); font-size: 14px; }
.rdd-prog { height: 6px; border-radius:999px; background: var(--bg); border: 1px solid var(--line-soft); margin: 6px 0 4px; overflow: hidden; }
.rdd-prog i { display: block; height: 100%; background: var(--brand); border-radius:999px; }
.rdd-bar-n { font-size:12.5px; color: var(--ink-4); }
.rdd-note { margin: 10px 0 2px; font-size:13px; line-height: 1.65; }
.rdd-stage { margin-top: 16px; }
.rdd-stage-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; padding: 6px 0; border-bottom: 1px solid var(--line-soft); margin-bottom: 6px; }
.rdd-stage-h b { font-size: 14px; color: var(--ink); }
.rdd-stage-h span { font-size:12.5px; color: var(--ink-4); flex: 1 1 auto; }
.rdd-stage-h em { font-size:12.5px; color: var(--brand); font-style: normal; }
.rdd-tbl td { vertical-align: top; padding-top: 8px; padding-bottom: 8px; }
.rdd-no { color: var(--ink-4); font-size:13px; }
.rdd-desc { font-size:12.5px; color: var(--ink-3); line-height: 1.55; min-width: 200px; }
.rdd-ops { white-space: normal; }
.rdd-ops .btn { margin: 0 4px 4px 0; padding: 3px 8px; font-size:12.5px; }
.rdd-ops .btn[disabled] { opacity: .45; cursor: not-allowed; }
.rdd-src { margin-top: 3px; font-size:12.5px; line-height: 1.45; }
.rdd-src.ok { color: var(--ok); }
.rdd-src.mid { color: var(--ink-3); }
.rdd-src.warn { color: var(--ink-4); }
.rdd-genmark { display: inline-block; margin-left: 6px; padding: 0 5px; font-size:12px; line-height: 16px; border-radius:4px; background: var(--brand-soft); color: var(--brand); vertical-align: middle; }
.rdd-genhint { margin-top: 3px; font-size:12px; color: var(--ink-4); line-height: 1.45; }
.rdd-na { font-size:12.5px; color: var(--ink-4); display: inline-block; margin-bottom: 4px; }
.rdd-files { font-size:12.5px; }
.rdd-file { display: flex; flex-direction: column; gap: 1px; padding: 4px 0; border-bottom: 1px dashed var(--line-soft); }
.rdd-file.rdd-genf { background: var(--ok-soft); border-radius:8px; padding: 5px 7px; margin-bottom: 2px; border-bottom: 0; }
.rdd-file:last-child { border-bottom: 0; }
.rdd-fn { color: var(--ink-2); word-break: break-all; }
.rdd-fs { color: var(--ink-4); font-size:12px; }
.rdd-fa { display: flex; gap: 8px; margin-top: 2px; }
.rdd-fa a { color: var(--brand); cursor: pointer; font-size:12.5px; }
.rdd-fa a:hover { text-decoration: underline; }
.rdd-fa .rdd-del { color: var(--danger); }
.rdd-empty { color: var(--warn); }
@media (max-width: 860px) {
  .rd-tab { flex: 1 1 46%; min-width: 0; }
  .rdd-tbl th:nth-child(4), .rdd-tbl td:nth-child(4) { display: none; }
}

/* ---------- 研发平台：四层架构工作台 ---------- */
.rdw-sel { padding: 5px 8px; font-size:13px; border: 1px solid var(--line); border-radius:8px; background: var(--card); color: var(--ink); max-width: 280px; }
.rdw-wrap { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 16px; margin-top: 14px; align-items: start; }
.rdw-nav { background: var(--card); border: 1px solid var(--line); border-radius:12px; padding: 10px; position: sticky; top: 8px; max-height: calc(100vh - 16px); overflow-y: auto; }
.rdw-g { font-size:12px; color: var(--ink-4); padding: 12px 10px 5px; letter-spacing: .06em; }
.rdw-nav .rdw-g:first-child { padding-top: 6px; }
.rdw-ni { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; padding: 8px 10px; margin-bottom: 2px; border: 0; border-radius:8px; background: transparent; color: var(--ink-2); font-size: 13px; cursor: pointer; font-family: inherit; }
.rdw-ni:hover { background: var(--bg); }
.rdw-ni.on { background: var(--brand); color: #fff; font-weight: 600; }
.rdw-ico { width: 16px; text-align: center; opacity: .8; font-size:13px; }
.rdw-main { min-width: 0; --rdw-pin-h: 50px; }
.rdw-hero { display: flex; gap: 10px; flex-wrap: wrap; align-items: stretch; }
.rdw-hero-c { flex: 2 1 300px; background: linear-gradient(135deg, #2c4bd8, #4a6cf0); color: #fff; border-radius:12px; padding: 14px 16px; }
.rdw-hero-t { font-size: 15px; font-weight: 700; display: flex; align-items: center; gap: 8px; }
.rdw-hero-s { font-size:13px; margin-top: 5px; opacity: .95; }
.rdw-hero-cd { font-size:12.5px; margin-top: 4px; opacity: .75; }
.rdw-hero-box { flex: 1 1 110px; background: var(--card); border: 1px solid var(--line); border-radius:12px; padding: 12px; display: flex; flex-direction: column; justify-content: center; }
.rdw-hero-box span { font-size:12.5px; color: var(--ink-4); }
.rdw-hero-box b { font-size: 22px; color: var(--ink); line-height: 1.25; }
.rdw-hero-box b.sm { font-size: 14px; }
.rdw-hero-box i { font-size:12px; color: var(--ink-4); font-style: normal; }
.rdw-prog { margin-top: 12px; }
.rdw-prog-h { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; font-size:13px; }
.rdw-prog-h b { font-size: 14px; }
.rdw-prog-h span { color: var(--ink-4); font-size:12.5px; }
.rdw-prog-bar { position: relative; height: 8px; border-radius:999px; background: var(--bg); border: 1px solid var(--line-soft); margin: 12px 0 8px; }
.rdw-prog-bar i { display: block; height: 100%; border-radius:999px; background: linear-gradient(90deg, #4a6cf0, #2c4bd8); }
.rdw-dot { position: absolute; top: -4px; width: 14px; height: 14px; margin-left: -7px; border-radius:50%; background: #fff; border: 3px solid var(--brand); }
.rdw-prog-note { font-size:12.5px; color: var(--ink-3); line-height: 1.7; }
.rdw-chart { display: flex; align-items: flex-end; gap: 6px; height: 160px; padding: 8px 0; border-bottom: 1px solid var(--line-soft); }
.rdw-bar { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 3px; height: 100%; }
.rdw-bar em { display: block; width: 100%; max-width: 26px; min-height: 6px; background: linear-gradient(180deg, #4a6cf0, #2c4bd8); border-radius:6px 6px 0 0; }
.rdw-bar span { font-size: 9.5px; color: var(--ink-4); }
.rdw-bar b { font-size:12px; color: var(--ink-3); font-weight: 500; }
.rdw-tools { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin: 10px 0; }
/* 新增工具栏吸顶：长表格滚动时「＋ 新增记录」始终可见
   top 让开吸顶项目切换条的高度（变量定义在共同的父级 .rdw-main 上），
   否则两条吸顶栏会叠在一起把按钮盖住 */
.rdw-tools-sticky { position: sticky; top: var(--rdw-pin-h, 0px); z-index: 9; background: var(--card); }
/* 项目切换吸顶条：滚到页面任何位置都能直接换项目 */
.rdw-pin { position: sticky; top: 0; z-index: 14; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 8px 0; margin-bottom: 4px; background: var(--bg); }
.rdw-pin-t { font-size:13px; color: var(--ink-3); margin-right: auto; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 980px) { .rdw-main { --rdw-pin-h: 96px; } }
.rdw-sum { font-size:13px; color: var(--ink-3); }
.rdw-sum b { color: var(--brand); }
.rdw-mute { color: var(--ink-4); font-size:13px; }
.rdw-amt { font-weight: 600; color: var(--ink); }
.rdw-radio { display: flex; gap: 8px; flex-wrap: wrap; }
.rdw-rb { display: inline-flex; align-items: center; gap: 5px; padding: 6px 12px; border: 1px solid var(--line); border-radius:999px; font-size:13px; cursor: pointer; color: var(--ink-3); }
.rdw-rb.on { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); font-weight: 600; }
.rdw-rb input { margin: 0; }
.rdw-main .tbl input[type=text], .rdw-main .tbl input[type=number], .rdw-main .tbl select { width: 100%; padding: 4px 6px; font-size:13px; border: 1px solid var(--line-soft); border-radius:8px; background: var(--card); color: var(--ink); font-family: inherit; }
.rdw-main .tbl input:focus, .rdw-main .tbl select:focus { border-color: var(--brand); outline: none; }
@media (max-width: 980px) {
  .rdw-wrap { grid-template-columns: 1fr; }
  .rdw-nav { position: static; display: flex; flex-wrap: wrap; gap: 4px; max-height: none; overflow: visible; }
  .rdw-g { width: 100%; }
  .rdw-ni { width: auto; }
}

/* ---------- 全流程诊断 + 申报文件 ---------- */
.rdr-legend { display: flex; gap: 16px; flex-wrap: wrap; align-items: center; margin-top: 10px; font-size:13px; color: var(--ink-3); }
.rdr-legend span { display: inline-flex; align-items: center; gap: 5px; }
.rdr-dot { width: 9px; height: 9px; border-radius:50%; display: inline-block; }
.rdr-dot.auto { background: #639922; }
.rdr-dot.tpl { background: #378ADD; }
.rdr-dot.ext { background: #888780; }
.rdr-legend-note { color: var(--ink-4); font-size:12.5px; }
.rdr-stage { padding-top: 10px; }
.rdr-stage-h { display: flex; align-items: center; gap: 10px; padding-bottom: 6px; border-bottom: 1px solid var(--line-soft); margin-bottom: 6px; }
.rdr-no { width: 22px; height: 22px; border-radius:50%; background: var(--bg); border: 1px solid var(--line); display: inline-flex; align-items: center; justify-content: center; font-size:12.5px; color: var(--ink-3); flex: none; }
.rdr-stage-h div { flex: 1 1 auto; min-width: 0; }
.rdr-stage-h b { font-size: 14px; display: block; }
.rdr-stage-h span { font-size:12.5px; color: var(--ink-4); }
.rdr-stage-h em { font-style: normal; font-size:13px; color: var(--warn); }
.rdr-stage-h em.ok { color: var(--ok); }
.rdr-tag { display: inline-block; padding: 1px 7px; border-radius:999px; font-size:12.5px; border: 1px solid transparent; white-space: nowrap; }
.rdr-tag.auto { background: #EAF3DE; color: #3B6D11; border-color: #C0DD97; }
.rdr-tag.tpl { background: #E6F1FB; color: #185FA5; border-color: #B5D4F4; }
.rdr-tag.ext { background: #F1EFE8; color: #5F5E5A; border-color: #D3D1C7; }
.rdr-stat { display: flex; gap: 18px; flex-wrap: wrap; font-size:13px; color: var(--ink-3); margin: 8px 0; }
.rdr-stat b { color: var(--brand); font-size: 14px; }
.rdr-files { display: flex; flex-direction: column; gap: 6px; margin-top: 6px; }
.rdr-file { display: flex; align-items: center; gap: 12px; padding: 9px 10px; border: 1px solid var(--line-soft); border-radius:10px; background: var(--bg); }
.rdr-file-m { flex: 1 1 auto; min-width: 0; }
.rdr-file-m b { font-size: 13px; display: block; }
.rdr-file-m span { font-size:12.5px; color: var(--ink-4); }
.rdr-file-a { display: flex; gap: 8px; align-items: center; flex: none; }
@media (max-width: 860px) {
  .rdr-file { flex-wrap: wrap; }
  .rdr-file-a { width: 100%; justify-content: flex-end; }
}

/* ---------- 导出闸门 ---------- */
.rdr-gate-bad { border-left: 3px solid var(--danger); }
.rdr-gate-bad h2 { color: var(--danger); }
.rdr-gate-warn { border-left: 3px solid var(--warn); }
.rdr-gate-warn h2 { color: var(--warn); }
.rdr-gate .rdr-file { background: var(--bg); }
.rdr-gate-bad .rdr-file { border-color: rgba(200, 60, 60, .25); }
.rdr-gate-warn .rdr-file { border-color: rgba(180, 120, 0, .25); }

/* ---------- 阶段条 / 锁定 / 变更审批 / 快照 ---------- */
.rds-bar {
  display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
  background: var(--card); border: 1px solid var(--line); border-left: 3px solid var(--brand);
  border-radius:10px; padding: 10px 13px; margin: 12px 0 2px;
}
.rds-bar-m { flex: 1 1 320px; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.rds-bar-m b { font-size: 13px; color: var(--ink); }
.rds-bar-m span { font-size:12.5px; color: var(--ink-4); line-height: 1.55; }
.rds-bar-a { display: flex; gap: 8px; flex-wrap: wrap; flex: none; }
.rds-bar-lock { border-left-color: var(--danger); background: var(--danger-soft); }
.rds-bar-lock b { color: var(--danger); }

.rds-toast {
  position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%);
  background: #1f2937; color: #fff; padding: 9px 16px; border-radius:8px;
  font-size: 13px; z-index: 400; box-shadow: 0 8px 24px rgba(0, 0, 0, .2);
  transition: opacity .4s;
}
.rds-toast.bad { background: var(--danger); }

.rds-diff { display: flex; flex-direction: column; gap: 6px; font-size:13px; color: var(--ink-2); }
.rds-diff label { display: flex; align-items: center; gap: 7px; cursor: pointer; }
.rds-mono { font-family: ui-monospace, Menlo, Consolas, monospace; font-size:12.5px; color: var(--ink-3); }
.rds-tbl td { vertical-align: middle; }

.rds-chg { border: 1px solid var(--line-soft); border-radius:10px; padding: 11px 12px; margin-bottom: 9px; background: var(--bg); }
.rds-chg-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 7px; }
.rds-chg-h b { font-size: 13.5px; color: var(--ink); }
.rds-chg-h em { font-style: normal; font-size:12.5px; color: var(--ink-4); }
.rds-chg-b { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 8px 16px; }
.rds-chg-b span { display: block; font-size:12px; color: var(--ink-4); margin-bottom: 2px; }
.rds-chg-b p { margin: 0; font-size:13px; color: var(--ink-2); line-height: 1.6; }
.rds-chg-b code { background: var(--card); border: 1px solid var(--line-soft); border-radius:6px; padding: 1px 5px; font-size:12.5px; margin-right: 4px; }
.rds-chg-a { display: flex; gap: 8px; margin-top: 9px; }
@media (max-width: 860px) { .rds-bar-a { width: 100%; justify-content: flex-end; } }

/* ============================================================
   视觉增强：KPI 卡片 / 环形图 / 进度条 / 资质快照 / 成员管理
   ============================================================ */
.kpi { position: relative; overflow: hidden; }
.kpi::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 5px; }
.kpi .kpi-n { font-size: 26px; font-weight: 800; line-height: 1.15; }
.kpi .kpi-l { font-size:13px; font-weight: 600; color: var(--ink-2); margin-top: 5px; }
.kpi .kpi-x { font-size:12.5px; color: var(--ink-4); margin-top: 3px; }
.k-tone1::before { background: var(--brand); } .k-tone1 .kpi-n { color: var(--brand); }
.k-tone2::before { background: var(--ok); } .k-tone2 .kpi-n { color: var(--ok); }
.k-tone3::before { background: var(--warn); } .k-tone3 .kpi-n { color: var(--warn); }
.k-tone4::before { background: #8b5cf6; } .k-tone4 .kpi-n { color: #8b5cf6; }

.ring { width: 66px; height: 66px; border-radius:50%; display: inline-flex; align-items: center; justify-content: center; position: relative; flex: none; }
.ring::after { content: ''; position: absolute; inset: 7px; background: var(--card); border-radius:50%; }
.ring b { position: relative; z-index: 1; font-size: 14.5px; color: var(--ink); }
.ring.ok { background: conic-gradient(var(--ok) 100%, var(--line) 0); }
.ring.mid { background: conic-gradient(var(--warn) var(--p, 50%), var(--line) 0); }
.ring.bad { background: conic-gradient(var(--danger) var(--p, 25%), var(--line) 0); }

.pbar { height: 8px; border-radius:99px; background: var(--line); overflow: hidden; }
.pbar i { display: block; height: 100%; border-radius:99px; background: linear-gradient(90deg, var(--brand), #6ea0ff); }
.pbar.ok i { background: linear-gradient(90deg, #0a9e5c, #35d18a); }
.pbar.warn i { background: linear-gradient(90deg, #e08b00, #ffb84d); }
.pbar.danger i { background: linear-gradient(90deg, #d92b2b, #ff7a7a); }

.dot { display: inline-block; width: 8px; height: 8px; border-radius:50%; margin-right: 5px; vertical-align: 1px; }
.dot.ok { background: var(--ok); }
.dot.bad { background: var(--danger); }
.dot.mute { background: var(--ink-4); }

.qsnap { border: 1px solid var(--line); border-radius:12px; padding: 13px 14px; background: var(--card); cursor: pointer; display: flex; gap: 11px; align-items: center; transition: box-shadow .15s, transform .15s; min-width: 0; }
.qsnap:hover { box-shadow: var(--shadow); transform: translateY(-1px); }
.qsnap .qs-ic { width: 40px; height: 40px; border-radius:10px; display: flex; align-items: center; justify-content: center; font-size: 17px; flex: none; }
.qsnap .qs-ic.ok { background: var(--ok-soft); color: var(--ok); }
.qsnap .qs-ic.bad { background: var(--danger-soft); color: var(--danger); }
.qsnap b { font-size: 13.5px; color: var(--ink); display: block; }
.qsnap .x { font-size:12.5px; color: var(--ink-3); margin-top: 3px; line-height: 1.55; }

/* 成员管理 */
.mem-top { margin-bottom: 14px; }
.mem-invite h3 { font-size: 14px; margin: 0 0 6px; }
.mem-sub { font-size:13px; color: var(--ink-3); line-height: 1.65; margin: 0 0 12px; }
.mem-form { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.mem-form .field { margin-bottom: 0; }
.mem-form .field label { font-size:12.5px; color: var(--ink-3); margin-bottom: 4px; }
.mem-form input, .mem-form select { width: 100%; box-sizing: border-box; padding: 7px 9px; border: 1px solid var(--line); border-radius:8px; font-size: 13px; background: var(--card); color: var(--ink); }
.mem-form input:focus, .mem-form select:focus { outline: none; border-color: var(--brand); }
.mem-actions { margin-top: 12px; }
.mem-msg { margin-top: 10px; font-size:13px; color: var(--ok); }
.mem-msg.err { color: var(--danger); }
.mem-role { border: 1px solid var(--line); border-radius:10px; padding: 9px 11px; margin-bottom: 8px; background: var(--bg); }
.mem-role b { display: block; font-size:13px; color: var(--brand); }
.mem-role span { font-size:12.5px; color: var(--ink-3); }
@media (max-width: 700px) { .mem-form { grid-template-columns: 1fr; } }

/* ============================================================
   r 版：驾驶舱「研发费用与合规」+ 研发总览年度趋势
   ============================================================ */
.rd-cmd { border-color: var(--brand-line); }
.rd-cmd-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }
.rd-cmd-head h2 { font-size: 15.5px; margin: 0 0 4px; font-weight: 700; letter-spacing: -.2px; }
.rd-cmd-head .sub { margin: 0; color: var(--ink-3); font-size:13px; line-height: 1.6; }
.rd-cmd-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.rd-kpi { margin-bottom: 14px; }
.rd-kpi .rk {
  background: linear-gradient(180deg, var(--brand-soft), var(--card) 72%);
  border: 1px solid var(--brand-line); border-radius:var(--radius);
  padding: 13px 15px 14px;
}
.rd-kpi .rk-n { font-size: 26px; font-weight: 800; letter-spacing: -.6px; line-height: 1.15; color: var(--ink); font-variant-numeric: tabular-nums; }
.rd-kpi .rk-n i { font-style: normal; font-size:13px; font-weight: 600; color: var(--ink-3); margin-left: 4px; }
.rd-kpi .rk-l { font-size:13px; font-weight: 600; color: var(--ink-2); margin-top: 3px; }
.rd-kpi .rk-x { font-size:12.5px; color: var(--ink-3); margin-top: 5px; line-height: 1.5; }
.rd-kpi .rk.green .rk-n { color: var(--ok); }
.rd-kpi .rk.warn .rk-n { color: var(--warn); }
.rd-kpi .rk.danger .rk-n { color: var(--danger); }
.rd-cmd-body { display: grid; grid-template-columns: 1.25fr .75fr; gap: 14px; }
.rd-trend, .rd-health { border: 1px solid var(--line); border-radius:10px; padding: 14px 16px; background: var(--bg); min-width: 0; }
.rt-head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.rt-head b { font-size: 13px; color: var(--ink); }
.rt-head span { font-size:12.5px; color: var(--ink-4); }
.rd-trend-legend { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; font-size:12.5px; color: var(--ink-3); margin-bottom: 2px; }
.rd-trend-legend .rlt { display: inline-flex; align-items: center; gap: 5px; }
.rd-trend-legend i { width: 9px; height: 9px; border-radius:2px; display: inline-block; }
.rd-trend-legend .rlt-note { margin-left: auto; color: var(--ink-4); }
.rd-issue { display: flex; gap: 8px; padding: 8px 0; border-bottom: 1px dashed var(--line-soft); font-size:13px; line-height: 1.6; color: var(--ink-2); }
.rd-issue b { color: var(--ink); }
.rd-issue .tag { flex: none; margin-top: 1px; }
.rd-health-ok { display: flex; align-items: center; gap: 8px; padding: 12px 0; color: var(--ok); font-size:13px; font-weight: 600; }
@media (max-width: 1080px) { .rd-cmd-body { grid-template-columns: 1fr; } }
@media (max-width: 860px) { .rd-kpi .rk-n { font-size: 22px; } }

/* 研发总览：KPI 强调与年度趋势 */
.stat.stat-total { background: linear-gradient(180deg, var(--brand-soft), var(--card) 68%); border-color: var(--brand-line); }
.stat .n { font-variant-numeric: tabular-nums; }

/* ============================================================
   AI 顾问
   ============================================================ */
.ai-fab {
  position: fixed; right: 22px; bottom: 26px; z-index: 60;
  display: flex; align-items: center; gap: 7px;
  padding: 10px 15px; border-radius:999px;
  background: linear-gradient(135deg, #1e4fd8, #7c3aed);
  color: #fff; font-size: 13px; font-weight: 700; cursor: pointer;
  box-shadow: 0 10px 30px -8px rgba(30, 79, 216, .55);
  user-select: none; transition: transform .15s ease, box-shadow .15s ease;
}
.ai-fab:hover { transform: translateY(-2px); box-shadow: 0 16px 34px -10px rgba(30, 79, 216, .6); }
.ai-fab-ico { font-size: 15px; }
.ai-mask { position: fixed; inset: 0; background: rgba(10, 18, 38, .32); z-index: 70; }
.ai-panel[hidden], .ai-mask[hidden] { display: none !important; }
.ai-panel {
  position: fixed; top: 0; right: 0; bottom: 0; width: 440px; max-width: 96vw;
  background: var(--card); border-left: 1px solid var(--line);
  z-index: 80; display: flex; flex-direction: column;
  box-shadow: -18px 0 50px -20px rgba(10, 18, 38, .35);
}
.ai-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; padding: 16px 18px 10px; border-bottom: 1px solid var(--line-soft); }
.ai-head b { display: block; font-size: 15.5px; }
.ai-head span { font-size:12.5px; color: var(--ink-4); }
.ai-chips { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 18px; border-bottom: 1px solid var(--line-soft); }
.ai-chip { font-size:13px; padding: 5px 10px; border-radius:999px; border: 1px solid var(--brand-line); background: var(--brand-soft); color: var(--brand); cursor: pointer; }
.ai-chip:hover { border-color: var(--brand); }
.ai-msgs { flex: 1; overflow-y: auto; padding: 14px 18px; background: var(--bg); }
.ai-msg { margin-bottom: 12px; display: flex; }
.ai-msg.ai-user { justify-content: flex-end; }
.ai-bub { max-width: 88%; border-radius:12px; padding: 10px 13px; font-size: 13px; line-height: 1.7; }
.ai-user .ai-bub { background: var(--brand); color: #fff; border-bottom-right-radius: 4px; }
.ai-bot .ai-bub { background: var(--card); border: 1px solid var(--line); color: var(--ink-2); border-bottom-left-radius: 4px; }
.ai-bub .ai-p { margin: 0 0 6px; }
.ai-bub .ai-p:last-child { margin-bottom: 0; }
.ai-bub code { background: var(--bg); border: 1px solid var(--line-soft); border-radius:6px; padding: 0 4px; font-size:12.5px; }
.ai-h { font-weight: 700; color: var(--ink); margin: 8px 0 4px; font-size: 13px; }
.ai-ul { margin: 4px 0 8px; padding-left: 18px; }
.ai-ul li { margin-bottom: 3px; }
.ai-pre { background: var(--bg); border: 1px solid var(--line-soft); border-radius:8px; padding: 8px 10px; font-size:13px; overflow-x: auto; }
.ai-gap { height: 4px; }
.ai-input { padding: 10px 18px 6px; border-top: 1px solid var(--line-soft); display: grid; grid-template-columns: 1fr auto; gap: 8px; align-items: end; }
.ai-ctx { grid-column: 1 / -1; font-size:12.5px; color: var(--ink-3); display: flex; align-items: center; gap: 6px; }
.ai-input textarea { resize: none; border: 1px solid var(--line); border-radius:10px; padding: 9px 11px; font-size: 13px; font-family: inherit; outline: none; background: var(--card); color: var(--ink); }
.ai-input textarea:focus { border-color: var(--brand); }
.ai-foot { padding: 6px 18px 12px; font-size:12px; color: var(--ink-4); line-height: 1.5; }
.ai-loading { font-size:13px; color: var(--ink-3); }
body.ai-open { overflow: hidden; }
@media (max-width: 600px) { .ai-panel { width: 100vw; max-width: 100vw; } .ai-fab { right: 14px; bottom: 16px; } }
@media print { .ai-fab, .ai-mask, .ai-panel { display: none !important; } }

/* ================= 园区培育驾驶舱 ================= */
.pk-kpi-s { font-size:12.5px; color: var(--ink-4); margin-top: 3px; line-height: 1.5; }
.pk-trend { font-size:12.5px; color: var(--ink-4); margin-top: 3px; line-height: 1.5; }
.pk-trend.up { color: var(--ok); }
.pk-trend.down { color: var(--danger); }
.pk-layer { cursor: pointer; transition: box-shadow .2s; }
.pk-layer:hover { box-shadow: 0 2px 10px rgba(44, 75, 216, .12); }
.pk-layer.open { border-left-width: 4px; background: #fff; box-shadow: 0 3px 14px rgba(44, 75, 216, .14); }
.pk-flag { color: #b8860b; font-weight: 600; }
.pk-layer-tip { font-size:12px; color: var(--ink-4); margin-top: 4px; opacity: .75; }
.pk-layer-list { margin-top: 10px; border-top: 1px dashed var(--line); padding-top: 8px; }
.pk-li { display: flex; align-items: center; gap: 8px; padding: 5px 0; font-size:13px; flex-wrap: wrap; }
.pk-li b { color: var(--ink); }
.pk-li-won { font-size:12.5px; color: var(--ok); }
.pk-li-note { font-size:12.5px; color: var(--ink-4); flex: 1 1 120px; }
.pk-li-empty { color: var(--ink-4); }
.pk-report-mask { position: fixed; inset: 0; background: rgba(15, 20, 40, .55); z-index: 999; display: flex; align-items: center; justify-content: center; padding: 24px; }
.pk-report { background: var(--card); border-radius:12px; width: min(880px, 94vw); max-height: 92vh; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 20px 60px rgba(0,0,0,.3); }
.pk-report-bar { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.pk-report-bar b { font-size: 14px; }
.pk-report-bar span { font-size:12.5px; color: var(--ink-4); flex: 1; }
.pk-report-body { flex: 1; overflow: auto; background: #f2f3f7; }
.pk-report-body iframe { width: 100%; height: 78vh; border: 0; background: #fff; }
.pk-cal-wrap { overflow-x: auto; }
.pk-cal { min-width: 680px; }
.pk-cal-months { display: grid; grid-template-columns: repeat(12, 1fr); font-size:12px; color: var(--ink-4); text-align: center; padding-bottom: 6px; border-bottom: 1px solid var(--line); }
.pk-cal-body { padding-top: 4px; }
.pk-cal-today { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--danger); opacity: .65; z-index: 2; }
.pk-cal-row { display: grid; grid-template-columns: 200px 1fr 130px 220px; gap: 10px; align-items: center; padding: 7px 0; border-bottom: 1px dashed var(--line-soft, #eee); }
.pk-cal-row:last-child { border-bottom: 0; }
.pk-cal-name b { font-size:13px; display: block; }
.pk-cal-name span { font-size:12px; color: var(--ink-4); }
.pk-cal-track { position: relative; height: 14px; background: var(--bg-2, #f5f6fa); border-radius:8px; }
.pk-cal-bar { position: absolute; top: 0; height: 14px; border-radius:8px; background: var(--pkc); opacity: .28; }
.pk-cal-bar::after { content: ''; position: absolute; inset: 4px 0; border-radius:6px; background: var(--pkc); }
.pk-cal-bar.past { opacity: .12; }
.pk-cal-bar.past::after { opacity: .4; }
.pk-cal-bar.live { opacity: 1; box-shadow: 0 0 0 2px var(--pkc) inset, 0 1px 6px rgba(0,0,0,.08); }
.pk-cal-state { font-size:12.5px; color: var(--ink-4); white-space: nowrap; }
.pk-cal-state.live { color: var(--ok); font-weight: 600; }
.pk-cal-note { font-size:12px; color: var(--ink-4); line-height: 1.5; }
@media (max-width: 900px) { .pk-cal-row { grid-template-columns: 150px 1fr; } .pk-cal-state, .pk-cal-note { display: none; } }
.pk-ok { color: var(--ok) !important; }
.pk-warn { color: var(--warn) !important; }
.pk-layer { position: relative; padding: 12px 14px; border: 1px solid var(--line); border-left: 4px solid var(--pkc, var(--brand)); border-radius:10px; margin-bottom: 22px; background: var(--bg-soft, #fafbfe); }
.pk-layer-t { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.pk-layer-dot { width: 9px; height: 9px; border-radius:50%; background: var(--pkc, var(--brand)); display: inline-block; }
.pk-layer-t b { font-size: 14px; color: var(--ink); }
.pk-layer-q { font-size:13px; color: var(--ink-3); }
.pk-layer-t em { margin-left: auto; font-style: normal; font-size: 16px; font-weight: 700; color: var(--pkc, var(--brand)); }
.pk-layer-bar { height: 8px; border-radius:6px; background: var(--line); overflow: hidden; margin: 8px 0 6px; }
.pk-layer-bar i { display: block; height: 8px; border-radius:6px; background: var(--pkc, var(--brand)); transition: width .4s; }
.pk-layer-d { font-size:12.5px; color: var(--ink-4); line-height: 1.6; }
.pk-layer-up { position: absolute; right: 16px; bottom: -20px; font-size:12.5px; color: var(--ink-4); }
.pk-unmap { font-size:13px; color: var(--warn); background: var(--warn-soft, #fff7e6); border-radius:8px; padding: 8px 12px; }
.pk-badge { display: inline-flex; align-items: center; gap: 4px; border: 1px solid; border-radius:999px; padding: 2px 9px; font-size:13px; white-space: nowrap; }
.pk-tbl-head { display: flex; align-items: baseline; gap: 10px; padding: 14px 18px 0; }
.pk-tbl-head b { font-size: 15.5px; }
.pk-tbl-head span { font-size:13px; color: var(--ink-4); }
.pk-cap-card { margin-bottom: 14px; }
.pk-cap-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 10px; margin-top: 12px; }
.pk-cap { border: 1px solid var(--line); border-radius:10px; padding: 12px 13px; display: flex; flex-direction: column; gap: 5px; background: var(--bg-soft, #fafbfe); }
.pk-cap .pk-ico { font-size: 20px; line-height: 1; }
.pk-cap b { font-size: 13px; color: var(--ink); }
.pk-cap span { font-size:12.5px; color: var(--ink-3); line-height: 1.65; }
.pk-steps { display: flex; align-items: stretch; gap: 6px; margin-top: 14px; flex-wrap: wrap; }
.pk-step { flex: 1 1 120px; border: 1px dashed var(--line); border-radius:10px; padding: 10px 12px; text-align: center; }
.pk-step i { display: inline-flex; width: 22px; height: 22px; border-radius:50%; background: var(--brand); color: #fff; font-style: normal; font-size:13px; align-items: center; justify-content: center; margin-bottom: 4px; }
.pk-step b { display: block; font-size:13px; margin-bottom: 3px; }
.pk-step span { font-size:12.5px; color: var(--ink-4); line-height: 1.55; }
.pk-arrow { align-self: center; color: var(--ink-4); font-size: 16px; }
@media (max-width: 900px) { .pk-steps .pk-arrow { display: none; } }
.pk-cw { font-size:13px; color: var(--ink-3); }
.pk-cw.live { color: var(--ok); font-weight: 600; }
.pk-cw.soon { color: var(--warn); }

/* ==== 水母报告接入 + 多维度核验 + 档案录入辅助（smdiag 2026-10-25） ==== */
.sm-box{border:1px solid #cddef9;border-radius:10px;padding:14px;background:linear-gradient(180deg,#f7faff,#f0f5ff);margin-bottom:12px}
.sm-head{display:flex;gap:10px;align-items:flex-start;margin-bottom:10px}
.sm-ico{flex:none;width:36px;height:36px;border-radius:10px;background:linear-gradient(135deg,#1d4fc0,#2e6be6);color:#fff;display:flex;align-items:center;justify-content:center;font-size:17px}
.sm-sub{font-size:13px;color:var(--ink-2);line-height:1.65;margin-top:2px}
.sm-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.sm-ok{margin-top:8px;font-size:13px;color:var(--ok)}
.sm-msg{margin-top:8px;font-size:13px;color:var(--warn)}
.sm-strip{display:flex;gap:12px;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:14px;background:var(--card);flex-wrap:wrap}
.sm-strip.on{border-color:#cddef9;background:linear-gradient(180deg,#f7faff,#f0f5ff)}
.sm-verify{display:grid;gap:8px}
.sm-vitem{display:flex;gap:10px;align-items:flex-start;padding:10px 13px;border-radius:10px;background:var(--bg);border:1px solid var(--line-soft)}
.sm-vitem.pass{background:#f0faf4;border-color:#cdeadd}.sm-vitem.warn{background:#fff8ec;border-color:#f2dfb8}.sm-vitem.fail{background:#fdf0f0;border-color:#f0cccc}.sm-vitem.info{background:var(--bg)}
.sm-vitem .tag{flex:none;margin-top:2px}
.sm-viewer{position:fixed;inset:0;z-index:1000;background:rgba(12,20,40,.72);display:flex;flex-direction:column}
.sm-viewer .smv-bar{flex:none;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 16px;background:#12234d;color:#fff}
.sm-viewer iframe{flex:1;width:100%;border:0;background:#fff}
.ent-tools .ent-meter-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.ent-meter{flex:1;min-width:140px;height:10px;border-radius:8px;background:var(--line);overflow:hidden}
.ent-meter i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#2e6be6,#4f8df0);transition:width .3s}
.ent-anchors{display:flex;gap:6px;flex-wrap:wrap;margin-top:11px;padding-top:10px;border-top:1px dashed var(--line)}

/* ==== 资质图谱视觉重设计 + 政策库分层（2026-10-25 第九批） ==== */
.qg-kpis{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.qg-kpi{flex:1;min-width:150px;border-radius:12px;padding:14px 16px;border:1px solid #dbe6fa;background:linear-gradient(180deg,#f7faff,#eef4ff);position:relative;overflow:hidden}
.qg-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:#2e6be6}
.qg-kpi .n{font-size:26px;font-weight:800;color:#1d4fc0;line-height:1.15}
.qg-kpi .n i{font-style:normal;font-size:13px;font-weight:600;color:#5d6c8a;margin-left:2px}
.qg-kpi .l{font-size:13px;font-weight:600;color:#2c3a5c;margin-top:3px}
.qg-kpi .x{font-size:12.5px;color:#8392b6}
.qg-kpi.hot{border-color:#f3c9c9;background:linear-gradient(180deg,#fdf1f1,#fbe9e9)}
.qg-kpi.hot::before{background:#d92b2b}
.qg-kpi.hot .n{color:#c62828}
.qg-ladder{display:flex;gap:0;align-items:stretch;flex-wrap:wrap;margin-bottom:18px}
.qg-step{flex:1;min-width:190px;position:relative;border-radius:12px;padding:14px 16px;margin-right:26px;background:var(--qbg);border:1px solid transparent;box-shadow:inset 0 0 0 1px rgba(0,0,0,.03),0 2px 8px rgba(24,60,142,.06);display:flex;gap:10px;align-items:flex-start}
.qg-step:last-child{margin-right:0}
.qg-step-no{flex:none;width:30px;height:30px;border-radius:10px;background:var(--qc);color:#fff;font-weight:800;font-size:14px;display:flex;align-items:center;justify-content:center}
.qg-step-name{font-size:15px;font-weight:800;letter-spacing:.5px}
.qg-step-desc{font-size:12.5px;color:#5b6b93;margin-top:3px;line-height:1.6}
.qg-step-chips{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.qg-chip{display:inline-block;padding:3px 10px;border-radius:20px;background:#fff;border:1px solid var(--qc);color:var(--qc);font-size:12.5px;font-weight:600;cursor:pointer;transition:all .15s}
.qg-chip:hover{background:var(--qc);color:#fff}
.qg-arrow{position:absolute;right:-22px;top:50%;transform:translateY(-50%);color:#93a9d8;font-size:17px;font-weight:800;z-index:2}
.qg-cards{margin-bottom:4px}
.qg-card{border-radius:12px;padding:0;background:#fff;border:1px solid var(--line);overflow:hidden;cursor:pointer;transition:transform .16s,box-shadow .16s;display:flex;flex-direction:column}
.qg-card:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(24,60,142,.13)}
.qg-card-top{display:flex;gap:12px;align-items:center;padding:15px 16px 12px;background:var(--qbg);border-bottom:1px solid var(--line)}
.qg-ico{flex:none;width:44px;height:44px;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 2px 8px rgba(24,60,142,.12)}
.qg-card-top h3{margin:0;font-size:15.5px;color:#182338}
.qg-meta{font-size:12.5px;color:#5b6b93;margin-top:3px}
.qg-tier{flex:none;color:#fff;font-size:12.5px;font-weight:700;padding:3px 10px;border-radius:20px;letter-spacing:.5px}
.qg-rows{padding:12px 16px;flex:1}
.qg-row{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px dashed var(--line);font-size:13px}
.qg-row:last-child{border-bottom:0}
.qg-row span{color:var(--ink-3);flex:none}
.qg-row b{color:var(--ink-1);text-align:right;font-weight:600;line-height:1.6}
.qg-card-foot{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;border-top:1px solid var(--line);font-size:12.5px;color:var(--ink-4);background:#fbfcfe}
/* 政策库：月份分层 + 版本徽章 */
.pf-group{display:flex;justify-content:space-between;align-items:center;margin:14px 0 6px;padding:7px 12px;border-radius:8px;background:linear-gradient(90deg,#2456c4,#4f8df0);color:#fff;font-size:13px}
.pf-group b{letter-spacing:1px}
.pf-group span{font-size:12.5px;opacity:.9}
.pf-group.old{background:linear-gradient(90deg,#8a94ab,#aab4c8)}
.pf-badge{flex:none;display:inline-block;padding:2px 8px;border-radius:20px;font-size:12px;font-weight:800;letter-spacing:.5px}
.pf-b-new{background:#ffe3e3;color:#d92b2b;box-shadow:0 0 0 2px rgba(217,43,43,.12);animation:pfPulse 1.8s infinite}
.pf-b-recent{background:#e3ecff;color:#2456c4}
.pf-b-year{background:#eef1f7;color:#5d6c8a}
.pf-item.pf-fresh .pf-title{font-weight:700}
.pf-item.pf-old{opacity:.66}
.pf-item.pf-old:hover{opacity:1}
@keyframes pfPulse{0%,100%{box-shadow:0 0 0 2px rgba(217,43,43,.12)}50%{box-shadow:0 0 0 5px rgba(217,43,43,.05)}}
.pf-chip i{font-style:normal;opacity:.65;font-size:12.5px;margin-left:2px}

/* ==== 首页决策引导改版（场景卡/阶梯/模块预览/初筛，2026-10-26） ==== */
/* P0-1 场景化入口 */
.hm-scenes{max-width:1120px;margin:18px auto 0;padding:0 18px}
.hms-head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}
.hms-head b{font-size:15.5px;color:var(--ink)}
.hms-head span{font-size:13px;color:var(--ink-3)}
.hms-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.hms-card{display:flex;flex-direction:column;align-items:flex-start;gap:7px;text-align:left;padding:16px 16px 13px;border:1px solid var(--line);border-radius:12px;background:linear-gradient(180deg,#fff,#f7faff);cursor:pointer;font-family:inherit;transition:transform .16s,box-shadow .16s,border-color .16s}
.hms-card:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(24,60,142,.13);border-color:var(--brand)}
.hms-ico{font-size:24px;line-height:1}
.hms-card b{font-size:14.5px;color:var(--ink)}
.hms-card span{font-size:13px;color:var(--ink-2);line-height:1.65;min-height:38px}
.hms-go{font-style:normal;font-size:13px;font-weight:700;color:var(--brand);margin-top:auto}
.hm-aud{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:13px;color:var(--ink-3);flex-wrap:wrap}
.hm-aud-btn{padding:6px 16px;border-radius:999px;border:1px solid var(--brand);color:var(--brand);background:#fff;font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;transition:all .15s}
.hm-aud-btn:hover{background:var(--brand);color:#fff}
/* P0-3 梯度阶梯 */
.hm-ladder{display:flex;gap:0;align-items:stretch;flex-wrap:wrap;margin-bottom:18px}
.hml-step{flex:1;min-width:200px;position:relative;border-radius:12px;padding:14px 16px;margin-right:30px;display:flex;gap:11px;align-items:flex-start;box-shadow:0 2px 10px rgba(24,60,142,.07)}
.hml-step:last-child{margin-right:0}
.hml-step.tone-blue{background:linear-gradient(135deg,#e8f8f0,#d2f0e2)}
.hml-step.tone-teal{background:linear-gradient(135deg,#eaf1ff,#d4e3fd)}
.hml-step.tone-amber{background:linear-gradient(135deg,#f1ebfd,#e0d3fa)}
.hml-step.tone-indigo{background:linear-gradient(135deg,#fdf6e3,#f8ecc8)}
.hml-no{flex:none;width:30px;height:30px;border-radius:10px;color:#fff;font-weight:800;font-size:14px;display:flex;align-items:center;justify-content:center}
.tone-blue .hml-no{background:#0e9f6e}.tone-teal .hml-no{background:#2e6be6}.tone-amber .hml-no{background:#7c3aed}.tone-indigo .hml-no{background:#b8860b}
.hml-body{display:flex;flex-direction:column;gap:3px;min-width:0}
.hml-body b{font-size:14.5px}
.tone-blue .hml-body b{color:#0a7a52}.tone-teal .hml-body b{color:#1d4fc0}.tone-amber .hml-body b{color:#6d28d9}.tone-indigo .hml-body b{color:#8a6508}
.hml-quals{font-size:13px;font-weight:600;color:var(--ink-2)}
.hml-num{font-size:12.5px;color:var(--ink-3)}
.hml-arrow{position:absolute;right:-24px;top:50%;transform:translateY(-50%);color:#93a9d8;font-size:17px;font-weight:800;z-index:2}
.hml-hint{flex-basis:100%;margin-top:10px;font-size:13px;color:var(--ink-3);text-align:center}
/* P1-5 模块预览 */
.hm-mods{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.hm-mod{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;padding:13px 14px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;font-family:inherit;transition:transform .15s,box-shadow .15s,border-color .15s}
.hm-mod:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(24,60,142,.11);border-color:var(--brand)}
.hmm-ico{font-size:19px;line-height:1}
.hm-mod b{font-size:13px;color:var(--ink)}
.hm-mod span{font-size:12.5px;color:var(--ink-3);line-height:1.6}
.hmm-more{font-style:normal;font-size:12.5px;font-weight:700;color:var(--brand);margin-top:auto}
/* P2-8 中段 CTA */
.hm-midcta{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-top:16px;padding:16px 18px;border-radius:12px;background:linear-gradient(135deg,#153d8f,#2e6be6);color:#fff}
.hm-midcta b{font-size:14.5px;display:block}
.hm-midcta span{font-size:13px;opacity:.9;display:block;margin-top:3px}
/* P2-9 联动提示 */
.hm-xlink{margin-top:14px;padding:10px 14px;border-radius:10px;background:#eef4ff;border:1px dashed #b9d0f5;font-size:13px;color:#33436b;line-height:1.7}
.hm-xlink.on-dark{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.35);color:#fff}
/* P1-4 初筛 */
.hm-screen{margin-top:16px;padding:16px 18px;border-radius:12px;border:1px solid #cddef9;background:linear-gradient(180deg,#f7faff,#f0f5ff)}
.hmsc-head b{font-size:15px;color:var(--ink)}
.hmsc-head span{display:block;font-size:13px;color:var(--ink-3);margin-top:3px;margin-bottom:10px}
.hmsc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:10px}
.hmsc-result{margin-top:12px}
.hmsc-warn{font-size:13px;color:var(--danger)}
.hmsc-out{border-top:1px dashed #b9d0f5;padding-top:12px}
.hmsc-layer{font-size:14px;color:var(--ink-2)}
.hmsc-layer b{color:var(--brand);font-size:15px}
.hmsc-why{font-size:13px;color:var(--ink-2);line-height:1.75;margin-top:7px}
.hmsc-next{font-size:13px;color:#0a6bd6;margin-top:6px;line-height:1.7}
.hmsc-acts{display:flex;gap:8px;margin-top:11px;flex-wrap:wrap}
.hmsc-note{font-size:12.5px;color:var(--ink-4);margin-top:9px}
/* P0-2 数据条图标 */
.hs-item{display:flex;gap:10px;align-items:flex-start}
.hs-ico{flex:none;font-size:20px;line-height:1.2}
.hs-main{min-width:0}
@media (max-width:900px){
  .hms-grid{grid-template-columns:repeat(2,1fr)}
  .hm-mods{grid-template-columns:repeat(2,1fr)}
  .hmsc-grid{grid-template-columns:1fr}
  .hml-step{margin-right:0;flex-basis:100%;margin-bottom:8px}
  .hml-arrow{display:none}
}

/* ==== 访客首页统一化：同族蓝渐进 + 等高卡片 + 统一节奏（2026-10-26 v2） ==== */
.home{background:linear-gradient(180deg,#f5f8fe 0%,#fafcff 340px,#fff 640px)}
/* —— 场景卡：等高 + 图标统一容器 + 顶部品牌色条 —— */
.hms-grid{gap:14px}
.hms-card{position:relative;overflow:hidden;min-height:176px;border-radius:12px;background:#fff;border:1px solid #e3ebf8;box-shadow:0 2px 10px rgba(24,60,142,.06)}
.hms-card::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,#1d4fc0,#4f8df0)}
.hms-card:hover{box-shadow:0 12px 28px rgba(24,60,142,.15);border-color:#c3d6f6}
.hms-ico{width:42px;height:42px;border-radius:11px;background:linear-gradient(135deg,#eef4ff,#dfeafd);display:flex;align-items:center;justify-content:center;font-size:20px}
.hms-card b{font-size:15px}
.hms-card span{min-height:42px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--ink-3);font-size:13px}
.hms-go{font-size:13px}
.hm-scenes{margin-bottom:30px}
/* —— 梯度阶梯：同族蓝由浅到深渐进，白字徽章统一 —— */
.hm-ladder{gap:0}
.hml-step{min-height:104px;align-items:center;border:1px solid #d5e2f8;margin-right:34px;border-radius:12px}
.hml-step:nth-of-type(1){background:linear-gradient(135deg,#f0f6ff,#e6effe)}
.hml-step:nth-of-type(2){background:linear-gradient(135deg,#e4eefe,#d5e5fd)}
.hml-step:nth-of-type(3){background:linear-gradient(135deg,#d6e6fd,#c5dbfc)}
.hml-step:nth-of-type(4){background:linear-gradient(135deg,#c8dcfc,#b2cefa)}
.hml-no{background:linear-gradient(135deg,#1d4fc0,#2e6be6) !important;box-shadow:0 3px 9px rgba(29,79,192,.35)}
.hml-body b{color:#17337e !important;font-size:15px}
.hml-quals{color:#33436b !important}
.hml-num{color:#5b6b93 !important}
.hml-arrow{color:#7ea3e0}
.hml-hint{margin-top:12px}
/* —— 模块卡 / 初筛 / 中段 CTA 统一质感 —— */
.hm-mod{border-color:#e3ebf8;border-radius:12px;background:#fff;box-shadow:0 1px 6px rgba(24,60,142,.05);min-height:118px}
.hm-mod:hover{border-color:#c3d6f6}
.hm-screen{border-radius:12px;border-color:#d5e2f8;background:linear-gradient(180deg,#f7faff,#f2f7ff)}
.hm-midcta{border-radius:12px}
/* —— 区块节奏统一 —— */
.home-sec .sec-head{margin-bottom:20px}
.home-sec{scroll-margin-top:16px}
@media (max-width:900px){
  .hml-step{margin-right:0;min-height:0}
}




/* ==== hero→内容衔接 v5：v4 网格对齐 + 区块标题视觉锚点 ==== */
.hero-brand{margin-bottom:0;border-radius:18px 18px 0 0;box-shadow:none;background:linear-gradient(180deg,#0f1e46 0%,#17369c 52%,#2f63ea 100%)}
.home > .hero-brand + .hm-scenes{
  max-width:none;
  margin:-14px 0 0;
  padding:46px 40px 26px;
  background:linear-gradient(180deg,#2f63ea 0%,#9dbdf3 190px,rgba(245,248,254,0) 370px);
}
.home > .hero-brand + .hm-scenes .hms-head{margin-bottom:12px}
.home > .hero-brand + .hm-scenes .hms-head b{color:#fff}
.home > .hero-brand + .hm-scenes .hms-head span{color:rgba(255,255,255,.85)}
/* 全部区块对齐同一条 40px 内容网格 */
.home-sec{padding-left:40px;padding-right:40px}
.hms-card{box-shadow:0 12px 32px rgba(15,30,70,.20)}
.hms-card:hover{box-shadow:0 16px 38px rgba(15,30,70,.24)}
/* —— 区块标题锚点：渐变竖条 + 副题分隔，明确每节起点 —— */
.sec-head{padding-top:4px}
.sec-head h2{
  position:relative;
  padding-left:18px;
  font-size:19px;
  letter-spacing:.2px;
}
.sec-head h2::before{
  content:"";
  position:absolute;left:0;top:5px;bottom:5px;width:5px;border-radius:4px;
  background:linear-gradient(180deg,#1d4fc0,#4f8df0);
  box-shadow:0 2px 6px rgba(29,79,192,.28);
}
.sec-head h2 span{position:relative;padding-left:14px}
.sec-head h2 span::before{
  content:"";
  position:absolute;left:0;top:3px;bottom:3px;width:1px;
  background:var(--line);
}
@media (max-width:900px){
  .home-sec{padding-left:20px;padding-right:20px}
  .home > .hero-brand + .hm-scenes{margin-top:-12px;padding:36px 20px 22px;background:linear-gradient(180deg,#2f63ea 0%,#9dbdf3 150px,rgba(245,248,254,0) 300px)}
  .sec-head h2{font-size:17px}
}

/* ==== 知识产权管理 ipm（2026-10-26） ==== */
.ipm .fr-h{margin:14px 0 6px;font-size:13.5px;color:#17337e}
.ipm-stats{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 14px}
.ipm-kpi{flex:1;min-width:110px;border-radius:12px;padding:12px 14px;background:linear-gradient(180deg,#f7faff,#eef4ff);border:1px solid #dbe6fa;position:relative;overflow:hidden}
.ipm-kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#2e6be6}
.ipm-kpi .n{font-size:23px;font-weight:800;color:#1d4fc0;line-height:1.1}
.ipm-kpi .l{font-size:12.5px;color:#5b6b93;margin-top:2px}
.ipm-kpi.c1::before{background:#7c3aed}.ipm-kpi.c1 .n{color:#6d28d9}
.ipm-kpi.c2::before{background:#4f8df0}.ipm-kpi.c2 .n{color:#2e6be6}
.ipm-kpi.wn::before{background:#e08b00}.ipm-kpi.wn .n{color:#b26a00}
.ipm-kpi.pl::before{background:#0e9f6e}.ipm-kpi.pl .n{color:#0a8a52}
.ipm-visual{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin:6px 0 8px;padding:14px 16px;border-radius:12px;background:linear-gradient(180deg,#fbfdff,#f5f9ff);border:1px solid #e3ebf8}
.ipm-donut-wrap{flex:none;width:168px}
.ipm-donut{display:block;width:100%}
.ipm-donut circle{transition:stroke-dasharray .4s}
.ipm-donut-n{font-size:30px;font-weight:800;fill:#17337e}
.ipm-donut-l{font-size:12.5px;fill:#7583a8}
.ipm-donut-empty{width:168px;height:168px;border-radius:50%;background:radial-gradient(circle,#eef4ff 58%,#f6f9ff 59%);display:flex;align-items:center;justify-content:center;color:#62718f;font-size:13px}
.ipm-legend{flex:1;min-width:220px;display:grid;grid-template-columns:1fr 1fr;gap:7px 18px}
.ipm-lg{display:flex;align-items:center;gap:8px;font-size:13px}
.ipm-lg i{flex:none;width:11px;height:11px;border-radius:4px}
.ipm-lg b{color:var(--ink)}
.ipm-lg span{color:var(--ink-4);font-size:12.5px}
.ipm-lg em{font-style:normal;margin-left:auto;color:#1d4fc0;font-weight:700}
.ipm-tbl select,.ipm-tbl input[type="text"],.ipm-tbl input[type="number"]{width:100%;min-width:0;padding:5px 8px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:inherit;background:#fff}
.ipm-tbl select:focus,.ipm-tbl input:focus{outline:none;border-color:var(--brand)}
.ipm-pbar{display:inline-block;vertical-align:middle;width:56px;height:7px;border-radius:6px;background:var(--line);overflow:hidden;margin-left:6px}
.ipm-pbar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#2e6be6,#4f8df0);transition:width .25s}
@media (max-width:900px){
  .ipm-legend{grid-template-columns:1fr}
  .ipm-visual{justify-content:center}
}

.ipm-msg{margin:8px 0 4px;padding:9px 13px;border-radius:10px;background:#eef8f2;border:1px solid #bfe6cf;color:#1a6b45;font-size:13px;line-height:1.7}

/* ==== CRO 进阶批（场景浮层/结果三段式/Demo/CountUp/Mockup/倒计时，2026-10-26） ==== */
/* 场景浮层 */
.hm-pts{margin:6px 0 12px;padding-left:2px;list-style:none}
.hm-pts li{position:relative;padding:5px 0 5px 22px;font-size:12.8px;color:var(--ink-2);line-height:1.7}
.hm-pts li::before{content:"·";position:absolute;left:6px;color:var(--brand);font-weight:800}
.hm-pts.ok li::before{content:"✓";color:var(--ok)}
.hm-cycle{background:#f0f5ff;border:1px dashed #b9d0f5;border-radius:10px;padding:9px 13px;font-size:13px;color:#33436b;line-height:1.7}
/* 自测结果三段式 */
.hm-verdict{border-radius:12px;padding:16px 18px;background:linear-gradient(135deg,#153d8f,#2e6be6);color:#fff;margin-bottom:6px}
.hm-verdict .hv-label{font-size:12.5px;letter-spacing:2px;opacity:.85;margin-bottom:6px}
.hm-verdict b{font-size:17.5px;line-height:1.5;display:block}
.hm-verdict .hv-alt{display:block;font-size:13px;opacity:.92;margin-top:5px}
.hm-verdict .hv-sub{font-size:12.5px;opacity:.72;margin-top:8px;line-height:1.6}
.hm-topgaps{margin:8px 0 14px;padding:0;list-style:none;counter-reset:none}
.hm-topgaps li{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed var(--line);font-size:12.8px;line-height:1.7}
.hm-topgaps li:last-child{border-bottom:0}
.hm-topgaps li i{flex:none;width:22px;height:22px;border-radius:8px;background:#fdeaea;color:#c62828;font-style:normal;font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center}
.hm-actions.two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.hm-brief{border:1px solid #cddef9;border-radius:12px;padding:14px 16px;background:linear-gradient(180deg,#f7faff,#f0f5ff);margin-top:12px}
.hm-brief .hmb-t{font-weight:800;font-size:14px;color:#17337e;margin-bottom:8px}
.hm-brief ol{margin:0;padding-left:19px}
.hm-brief li{margin:6px 0;font-size:13px;color:var(--ink-2);line-height:1.75}
.hm-brief .hmb-note{font-size:12.5px;color:var(--ink-4);margin-top:9px}
/* 窗口速览 */
.hm-wstbl{width:100%;border-collapse:collapse;font-size:13px;margin:4px 0 12px}
.hm-wstbl th{background:#2456c4;color:#fff;text-align:left;padding:7px 9px;border:1px solid #1d49ab;font-weight:600}
.hm-wstbl td{border:1px solid #dbe4f5;padding:6px 9px;vertical-align:top;line-height:1.65}
.hm-wstbl tbody tr:nth-child(even) td{background:#f5f8fe}
.hm-wstbl .ws-dept{font-size:12px;color:var(--ink-4);margin-top:2px}
/* 样例浏览器 Mockup + 高亮 */
.hm-browser{border:1px solid #c9d6ee;border-radius:10px;overflow:hidden;margin:10px 0;background:#fff}
.hmb-bar{display:flex;align-items:center;gap:6px;padding:7px 11px;background:#e8eef9;border-bottom:1px solid #d5e0f4}
.hmb-bar i{width:9px;height:9px;border-radius:50%;background:#f87171}
.hmb-bar i:nth-child(2){background:#fbbf24}
.hmb-bar i:nth-child(3){background:#34d399}
.hmb-bar span{margin-left:8px;font-size:12px;color:#5d6c8a;background:#fff;border-radius:5px;padding:2px 10px;border:1px solid #dde6f6}
.hmb-body{padding:12px 14px}
.hm-hl{margin:0 0 10px;padding:8px 12px;border-radius:10px;background:#fff8e6;border:1px dashed #ecc96b;color:#7a5410;font-size:13px;line-height:1.6}
/* 政策倒计时 */
.pp-count{display:inline-block;margin-left:8px;padding:2px 10px;border-radius:20px;font-size:12.5px;font-weight:800;background:#e3ecff;color:#2456c4;white-space:nowrap}
.pp-count.hot{background:#fdeaea;color:#c62828;animation:ppBlink 1.6s infinite}
.pp-count.past{background:#eef1f7;color:#5d6c8a;font-weight:600}
@keyframes ppBlink{0%,100%{opacity:1}50%{opacity:.72}}
/* 跨线 CTA 按钮 */
.hm-xbtn{margin-left:10px;white-space:nowrap}
.hm-xlink.on-dark .hm-xbtn{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.5);color:#fff}
.hm-xlink.on-dark .hm-xbtn:hover{background:#fff;color:#1d4fc0}
/* 模块三分类 */
.hm-mgrp{margin-bottom:14px}
.hmg-head{display:flex;align-items:baseline;gap:9px;margin:4px 0 8px}
.hmg-head b{font-size:13.5px;color:#17337e;padding-left:10px;border-left:4px solid #2e6be6}
.hmg-head span{font-size:12.5px;color:var(--ink-4)}
.hm-mcap{text-align:center;font-size:13px;color:var(--ink-3);margin:6px 0 14px;padding:9px 12px;border-radius:10px;background:#f4f8ff;border:1px dashed #c9d9f5}
/* 体验模式徽标 */
.user-badge.demo{background:#fff7e8;border-color:#ecc96b;color:#8a6508}
/* 登录墙体验入口 */
.auth-demo{margin-top:12px;padding-top:11px;border-top:1px dashed var(--line);font-size:13px;color:var(--ink-3);text-align:center}
.auth-demo a{color:var(--brand);font-weight:700;cursor:pointer;text-decoration:underline}
@media (max-width:700px){.hm-actions.two{grid-template-columns:1fr}}

/* ==== 会员审核弹窗（2026-10-26 v2） ==== */
.adm-mask{position:fixed;inset:0;z-index:9996;background:rgba(12,20,40,.55);display:flex;align-items:center;justify-content:center}
.adm-modal{width:min(440px,92vw);background:#fff;border-radius:12px;box-shadow:0 18px 50px rgba(10,25,60,.3);overflow:hidden}
.adm-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:14px 18px;background:linear-gradient(135deg,#153d8f,#2e6be6);color:#fff}
.adm-head b{font-size:14.5px}
.adm-x{background:none;border:0;color:#fff;font-size:20px;cursor:pointer;line-height:1}
.adm-body{padding:16px 18px;max-height:60vh;overflow:auto}
.adm-tip{font-size:13px;color:#5b6b93;line-height:1.7;margin-bottom:10px}
.adm-periods{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.adm-p{display:flex;align-items:center;justify-content:center;gap:5px;padding:8px 4px;border:1px solid #d5e2f8;border-radius:10px;font-size:13px;cursor:pointer;background:#fff;transition:all .13s}
.adm-p:hover{border-color:#2e6be6}
.adm-p.on{background:#e8f0ff;border-color:#2e6be6;color:#1d4fc0;font-weight:700}
.adm-p input{accent-color:#2e6be6;margin:0}
.adm-reason{width:100%;border:1px solid #d5e2f8;border-radius:10px;padding:9px 11px;font-size:13px;font-family:inherit;resize:vertical}
.adm-reason:focus{outline:none;border-color:#2e6be6}
.adm-err{margin-top:10px;padding:8px 11px;border-radius:8px;background:#fdeaea;color:#c62828;font-size:13px}
.adm-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid #eef1f7;background:#fafbfe}
.adm-rejreason{font-size:12.5px;color:#c62828;margin-top:3px;max-width:200px;line-height:1.5}
@media (max-width:520px){.adm-periods{grid-template-columns:repeat(2,1fr)}}

/* ==== 档案表单折叠手风琴（2026-10-26） ==== */
details.ent-fold > summary.ent-fold-sum{cursor:pointer;list-style:none;user-select:none}
details.ent-fold > summary.ent-fold-sum::-webkit-details-marker{display:none}
details.ent-fold > summary.ent-fold-sum h2{margin:0;display:flex;align-items:center;width:100%;justify-content:space-between;gap:10px}
details.ent-fold > summary.ent-fold-sum h2::after{content:'展开 ▾';font-size:12.5px;font-weight:600;color:var(--brand);letter-spacing:1px;transition:transform .15s}
details.ent-fold[open] > summary.ent-fold-sum h2::after{content:'收起 ▴'}
details.ent-fold[open] > summary.ent-fold-sum{margin-bottom:10px}
#view > .card:has(> details.ent-fold){padding-bottom:8px}

/* ==== CEO 企业综合看板基础样式（board.js） ==== */
.bd-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:14px}
.bd-stat{position:relative;background:linear-gradient(160deg,#ffffff,#f6f9ff);border:1px solid #e3ebfa;border-radius:12px;padding:16px 15px 13px;overflow:hidden;box-shadow:0 2px 10px rgba(24,60,142,.05);transition:transform .2s,box-shadow .2s}
.bd-stat::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#4f8df0,#7c3aed)}
.bd-n{font-size:27px;font-weight:800;color:var(--brand);line-height:1.15;letter-spacing:.3px;font-variant-numeric:tabular-nums}
.bd-l{font-size:13px;color:#5a6b85;margin-top:4px;font-weight:600}
.bd-x{font-size:12.5px;color:#62718f;margin-top:3px}
.bd-rings{display:flex;justify-content:space-evenly;align-items:stretch;flex-wrap:wrap;gap:0;padding:18px 0 14px;background:linear-gradient(180deg,#fbfdff,#f5f9ff);border:1px solid #eef3fc;border-radius:12px;margin-top:10px}
.bd-ring{display:flex;flex-direction:column;align-items:center;width:180px;position:relative;justify-content:center;padding:4px 0}
.bd-ring-sep{width:1px;background:linear-gradient(180deg,transparent,#dfe8f8 20%,#dfe8f8 80%,transparent);margin:16px 0}
/* 悬停差距提示（CEO 看板资质态势）——浅色气泡：上方居中 + 小箭头，柔和不刺眼 */
.bd-tip{display:none;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translateX(-50%) translateY(4px);width:236px;background:rgba(255,255,255,.97);border:1px solid #dfe8f8;color:#33415e;border-radius:11px;padding:9px 12px;font-size:12.5px;line-height:1.75;text-align:left;box-shadow:0 12px 30px rgba(24,60,142,.16);z-index:40;opacity:0;transition:opacity .18s ease,transform .18s ease}
.bd-ring:hover .bd-tip{display:block;opacity:1;transform:translateX(-50%) translateY(0)}
.bd-tip::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:7px solid transparent;border-top-color:#fff}
.bd-tip b{color:#1d4fc0;display:block;margin-bottom:3px;font-size:13px}
/* KPI 图标角标 */
.bd-kico{position:absolute;top:12px;right:12px;width:32px;height:32px;border-radius:10px;background:linear-gradient(135deg,#eef4ff,#f7faff);border:1px solid #e3ebfa;display:flex;align-items:center;justify-content:center;font-size:15px}
/* 看板知识产权网格 */
.bd-ip-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;margin-top:12px}
.bd-ip-grid > div{background:#f6f9ff;border:1px solid #e3ebfa;border-radius:11px;padding:12px 6px;text-align:center;transition:transform .2s}
.bd-ip-grid > div:hover{transform:translateY(-3px)}
.bd-ip-grid b{display:block;font-size:19px;color:var(--brand)}
.bd-ip-grid span{font-size:12.5px;color:#5a6b85;font-weight:600}
.bd-ip-grid span i{font-style:normal;display:block;font-size:12px;color:#62718f;margin-top:2px;font-weight:400}
.bd-ip-grid > div.dim{opacity:.42}
.bd-ip-grid > div.dim b{color:#9aa8c2}
/* 三合一全景卡：三列栅格 + 分隔线 */
.bd-tri{display:grid;grid-template-columns:1.15fr 1px 1.1fr 1px .85fr;gap:0 22px;align-items:stretch;margin-top:8px}
.bd-tri-cell{display:flex;flex-direction:column;justify-content:center}
.bd-tri-sep{width:1px;height:100%;min-height:180px;background:linear-gradient(180deg,transparent,#e3ebfa 15%,#e3ebfa 85%,transparent)}
.bd-tri-t{display:block;font-size:13px;color:#5a6b85;font-weight:700;margin-bottom:6px}
@media (max-width:960px){.bd-tri{grid-template-columns:1fr}.bd-tri-sep{width:100%;height:1px;min-height:1px;background:linear-gradient(90deg,transparent,#e3ebfa 15%,#e3ebfa 85%,transparent)}}
/* 登录态品牌区：上下结构（LOGO 上 / 企业名+平台名下） */
#brandLogo.brand-v{flex-direction:column;text-align:center;gap:7px;padding:16px 8px 14px}
#brandLogo.brand-v .brand-v-mark{width:44px;height:44px;border-radius:12px;flex:none}
#brandLogo.brand-v .brand-v-txt{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}
#brandLogo.brand-v .brand-v-txt b{font-size:13.5px;line-height:1.35;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#brandLogo.brand-v .brand-v-txt span{font-size:12px;color:var(--ink-3);letter-spacing:.5px}

/* ==== 费用凭证管理（加计扣除备查） ==== */
.vg-proj{border:1px solid #e3ebfa;border-radius:12px;padding:12px 14px;margin-top:10px;background:#fbfdff}
.vg-proj.vg-risk{border-color:#f2d9a8;background:linear-gradient(180deg,#fffdf8,#fdf9f0)}
.vg-proj.vg-empty{background:#fbfcfe;border-style:dashed}
.vg-empty-hint{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;font-size:13px;color:var(--ink-3)}
.vg-empty-btns{display:inline-flex;gap:6px;flex-wrap:wrap}
.vg-cat{border-top:1px dashed #e9eef8;margin-top:8px;padding:8px 0 4px}
.vg-must{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.vg-doc{font-size:12.5px;border-radius:99px;padding:2px 10px;border:1px solid #e3ebfa;background:#f6f9ff;color:#62718f}
.vg-doc.ok{background:#e8f8f1;border-color:#c4ead9;color:#0f9d6e;font-weight:700}
.vg-doc.miss{background:#fdf3e6;border-color:#f2d9a8;color:#b06f00}
.vg-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.vg-file{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;background:#fff;border:1px solid #dfe8f8;border-radius:8px;padding:3px 8px}
.vg-file a{color:#1d4fc0;text-decoration:none}
.vg-file a:hover{text-decoration:underline}
.vg-del{border:none;background:none;color:#c62828;cursor:pointer;font-size:12.5px;padding:0 2px}
.vg-hint{font-size:12px;color:#62718f;margin-left:8px}
@media (max-width:768px){.vg-hint{display:block;margin-left:0;margin-top:3px}}
.bd-ring-svg{width:112px;height:112px;display:block}
.bd-ring b{font-size:14.5px;color:#33415e;margin-top:8px}
.bd-tier{font-style:normal;font-size:12px;color:#7d8ba6;background:#f1f5fc;border:1px solid #e3ebfa;border-radius:99px;padding:1px 10px;margin-top:5px;letter-spacing:1.5px}
.bd-ok{font-size:13px;color:#0f9d6e;font-weight:700;margin-top:5px}
.bd-warn{font-size:13px;color:#d97e00;font-weight:700;margin-top:5px}
.bd-tax{margin-top:4px}
/* 效益测算图形化流程：投入 → 加计 → 节税 */
.bd-flow{display:grid;grid-template-columns:1fr 92px 1fr 92px 1.08fr;align-items:stretch;margin-top:14px}
.bd-flow-node{background:linear-gradient(160deg,#f8fbff,#eef4ff);border:1px solid #dfe8f8;border-radius:12px;padding:16px 14px 14px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.bd-flow-node i{font-style:normal;font-size:25px;line-height:1.15}
.bd-flow-node span{font-size:12.5px;color:#7d8ba6;line-height:1.45}
.bd-flow-node b{font-size:25px;color:#1d4fc0;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.bd-flow-node b i{font-style:normal;font-size:13px;color:#62718f;font-weight:600;margin-left:2px}
.bd-flow-node.hot{background:linear-gradient(135deg,#1d4fc0,#2e6be6);border-color:#1d4fc0;box-shadow:0 10px 26px rgba(29,79,192,.32)}
.bd-flow-node.hot span{color:#cfe0ff;font-weight:700}
.bd-flow-node.hot b{color:#fff;font-size:28px}
.bd-flow-node.hot b i{color:#b9d0ff}
.bd-flow-arrow{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:0 2px}
.bd-flow-arrow b{color:#b9c8e6;font-size:22px;line-height:1;font-weight:400}
.bd-flow-arrow em{font-style:normal;font-size:12px;font-weight:800;color:#1d4fc0;background:#e8f0ff;border:1px solid #d5e3fa;border-radius:99px;padding:2px 9px;white-space:nowrap}
.bd-flow-arrow span{font-size:12px;color:#62718f;white-space:nowrap}
@media (max-width:960px){.bd-flow{grid-template-columns:1fr}.bd-flow-arrow{flex-direction:row;gap:8px;padding:6px 0}.bd-flow-arrow b{transform:rotate(90deg)}}
.bd-tax-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:9px 2px;border-bottom:1px dashed #e4ebf7;font-size:13px;color:#5a6b85}
.bd-tax-row b{font-size:14.5px;color:#26344e;font-variant-numeric:tabular-nums}
.bd-tax-row.bd-hl{border-bottom:1px dashed #f2d9a8}
.bd-tax-row.bd-hl b{color:#b06f00}
.bd-tax-row.bd-hl2{background:linear-gradient(90deg,#eef4ff,#f7fbff);border-bottom:none;border-radius:10px;padding:11px 12px;margin-top:8px}
.bd-tax-row.bd-hl2 span{font-weight:700;color:#33415e}
.bd-big{font-size:21px !important;font-weight:800;color:#c0392b !important}
.bd-quote{margin-top:12px;padding:10px 13px;border-radius:10px;background:#f2f7ff;border:1px solid #dfe9fb;font-size:13px;color:#3d548c;line-height:1.65}
.bd-bars{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-around;gap:14px;padding:14px 4px 4px;min-height:180px}
.bd-legend{flex-basis:100%;width:100%;text-align:center;font-size:12.5px;color:#5d6c8a;margin-top:12px}
.bd-bar-grp{display:flex;flex-direction:column;align-items:center;gap:6px}
.bd-bar-pair{display:flex;align-items:flex-end;gap:5px;height:130px}
.bd-bar{width:23px;border-radius:8px 8px 2px 2px;position:relative;transition:height 1.2s cubic-bezier(.4,0,.2,1)}
.bd-bar.rev{background:linear-gradient(180deg,#6ba3f5,#2e6be6)}
.bd-bar.rd{background:linear-gradient(180deg,#3fd6a4,#0f9d6e)}
.bd-bar span{position:absolute;top:-17px;left:50%;transform:translateX(-50%);font-size:12px;color:#5d6c8a;white-space:nowrap;font-variant-numeric:tabular-nums}
.bd-bar-grp b{font-size:13px;color:#33415e}
.bd-bar-ratio{font-size:12px;color:#62718f}
.bd-legend{width:100%;text-align:center;font-size:12.5px;color:#5d6c8a;margin-top:10px}
/* legacy 图例选择器收编（上条已全局 100% 换行） */
.bd-legend i{display:inline-block;width:9px;height:9px;border-radius:4px;margin:0 3px 0 8px;vertical-align:-1px}
.bd-legend .l-rev{background:#2e6be6}
.bd-legend .l-rd{background:#0f9d6e}
.bd-donut-wrap{display:flex;align-items:center;justify-content:center;gap:22px;padding:10px 0;flex-wrap:wrap}
.bd-donut{width:172px;height:172px}
.bd-donut-n{font-size:21px;font-weight:800;fill:#26344e}
.bd-donut-l{font-size:12.5px;fill:#62718f}
.bd-donut-legend{display:flex;flex-direction:column;gap:7px;min-width:150px}
.bd-dl{display:flex;align-items:center;gap:7px;font-size:13px;color:#33415e}
.bd-dl i{width:10px;height:10px;border-radius:4px;flex:none}
.bd-dl em{font-style:normal;color:#62718f;margin-left:auto;font-size:12.5px;font-variant-numeric:tabular-nums}
.bd-team{margin:6px 0 14px}
.bd-team-n{font-size:26px;font-weight:800;color:var(--brand)}
.bd-team-n i{font-style:normal;font-size:13px;color:#62718f;font-weight:600}
.bd-team-bar{height:10px;border-radius:8px;background:#e9effb;overflow:hidden;margin:8px 0 7px}
.bd-team-bar i{display:block;height:100%;border-radius:8px;background:linear-gradient(90deg,#4f8df0,#12b886);transition:width 1.1s cubic-bezier(.4,0,.2,1)}
.bd-team-x{font-size:13px;color:#5d6c8a}
.bd-team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.bd-team-grid > div{background:#f6f9ff;border:1px solid #e3ebfa;border-radius:11px;padding:11px 6px;text-align:center}
.bd-team-grid b{display:block;font-size:18px;color:var(--brand)}
.bd-team-grid span{font-size:12.5px;color:#62718f}
.bd-roadmap{padding:4px 0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:40px}
.bd-rm{display:flex;align-items:center;gap:12px;padding:11px 4px;border-bottom:1px dashed #e9eef8;font-size:13px}
.bd-rm:last-child{border-bottom:none}
.bd-rm em{font-style:normal;width:24px;height:24px;border-radius:8px;background:#eef4ff;border:1px solid #dfe8f8;color:#1d4fc0;font-size:12.5px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:none}
.bd-rm.done em{background:#e6f7f0;border-color:#c4ead9;color:#0f9d6e}
.bd-rm-main{min-width:0;flex:1}
.bd-rm-main b{display:block;font-weight:700;color:#33415e;font-size:13px}
.bd-rm-main span{display:block;font-size:12.5px;color:#62718f;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bd-rm .tag{flex:none}
.bd-foot{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:12.5px;color:#62718f;margin-top:18px;padding-top:12px;border-top:1px solid #eef1f7}

/* ==== CEO 看板 10 轮 UI 迭代 ==== */
/* R1: 卡片底色（2026-11-01 审计：移除 backdrop-filter 毛玻璃——卡片底本为不透明渐变，
   毛玻璃无效且悬停 scale 放大时模糊被同步放大导致文字发虚；改为干净实底+悬停高光） */
#view:has(.bd-kpis) > .card:first-child{background:rgba(255,255,255,.96);border:1px solid rgba(180,200,240,.35);box-shadow:0 8px 32px rgba(24,60,142,.08)}
.bd-card-glow{border:1px solid rgba(180,200,240,.4);background:linear-gradient(135deg,rgba(247,250,255,.98),rgba(235,243,255,.95))}
/* R2: 数字滚动 + 环形入场 */
.bd-n{transition:none}
.bd-ring-svg circle{transition:stroke-dasharray 1.4s cubic-bezier(.4,0,.2,1)}
.bd-ring-svg text{font-family:inherit;transition:fill .3s}
/* R3: 柱状图生长 */
/* backwards 填充：动画被禁用（prefers-reduced-motion）时静态即为 scaleY(1)，柱子不会永久隐形 */
.bd-bar{animation:bdGrow .9s cubic-bezier(.25,.46,.45,.94) backwards;transform-origin:bottom}
@keyframes bdGrow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.bd-bar.rev{animation-delay:.15s}.bd-bar.rd{animation-delay:.3s}
/* R4: 悬浮微交互（2026-11-01：悬停放大保留，模糊改高光——内描边+顶部渐变条增亮+柔投影。
   不用 scale()——background-clip:text 渐变数字在 transform 缩放时会掉 GPU 合成层变灰（Chromium 已知问题） */
.bd-stat:hover{box-shadow:inset 0 0 0 1.5px #a8c4f0,0 14px 36px rgba(29,79,192,.2);border-color:#a8c4f0}
.bd-stat:hover::before{background:linear-gradient(90deg,#4f8df0,#12b886);box-shadow:0 0 10px rgba(79,141,240,.45)}
.bd-stat::before{transition:background .3s}
.bd-stat:hover .bd-n{color:#0f3d99;-webkit-text-fill-color:#0f3d99;background:none;text-shadow:none}
html[data-theme="dark"] .bd-stat:hover .bd-n{color:#7fb0ff;-webkit-text-fill-color:#7fb0ff;background:none}
/* R5: 科技网格底纹 */
.bd-kpis{position:relative}
.bd-kpis::after{content:"";position:absolute;inset:-8px;background-image:linear-gradient(rgba(79,141,240,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(79,141,240,.04) 1px,transparent 1px);background-size:28px 28px;pointer-events:none;border-radius:16px}
/* R6: 数据呼吸灯 + 雷达扫描 */
.bd-stat .bd-n{animation:bdPulse 3s ease-in-out 2s infinite}
@keyframes bdPulse{0%,100%{opacity:1}50%{opacity:.82}}
.bd-ring.pass-ring circle:last-of-type{filter:drop-shadow(0 0 6px rgba(18,184,134,.35))}
/* R7: 深色模式 */
html[data-theme="dark"] .bd-stat{background:linear-gradient(135deg,#1a2332,#1e2d45);border-color:#2a3a55}
html[data-theme="dark"] .bd-n{color:#6ba3f8}
html[data-theme="dark"] .bd-l{color:#8fa8c8}
html[data-theme="dark"] .bd-x{color:#5a6e8a}
html[data-theme="dark"] .bd-card-glow{background:linear-gradient(135deg,#1a2332,#1e2d45);border-color:#2a3a55}
html[data-theme="dark"] .bd-tax-row{border-color:#2a3a55;color:#a0b4d0}
html[data-theme="dark"] .bd-tax-row b{color:#6ba3f8}
html[data-theme="dark"] .bd-tax-row.bd-hl{background:#1a2840}
html[data-theme="dark"] .bd-tax-row.bd-hl2{background:#0f2820}
html[data-theme="dark"] .bd-tax-row.bd-hl2 b{color:#34d399}
html[data-theme="dark"] .bd-donut-l{fill:#68809c}
html[data-theme="dark"] .bd-donut-n{fill:#8fa8c8}
html[data-theme="dark"] .bd-dl{border-color:#2a3a55;color:#8fa8c8}
html[data-theme="dark"] .bd-bar-ratio{color:#5a6e8a}
/* R8: 品牌色微调 */
.bd-n{background:linear-gradient(135deg,#1d4fc0,#2e6be6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.bd-stat:hover .bd-n{background:linear-gradient(135deg,#0f3d99,#1d5fd0);-webkit-background-clip:text;background-clip:text}
/* R9: 打印 */
@media print{
  .bd-stat{break-inside:avoid;page-break-inside:avoid}
  .bd-rings{break-inside:avoid}
  .bd-tax{break-inside:avoid}
  .bd-bars{break-inside:avoid}
  .bd-bar{animation:none;transform:scaleY(1)}
}
/* R10: 响应式精调 */
@media (max-width:768px){
  .bd-ip-grid{grid-template-columns:repeat(2,1fr)}
  .bd-kpis{grid-template-columns:1fr 1fr}
  .bd-n{font-size:22px}
  .bd-rings{flex-wrap:wrap;gap:10px;padding:10px 0 4px}
  .bd-ring{width:44%}
  .bd-ring-sep{display:none}
  .bd-ring-svg{width:92px;height:92px}
  .bd-roadmap{grid-template-columns:minmax(0,1fr)}
  .bd-rm-main span{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
  .bd-donut-wrap{flex-direction:column;align-items:center}
  .bd-donut{width:130px}
  .bd-bar-pair{height:100px}
  .bd-bar{width:16px}
}
@media (max-width:480px){
  .bd-kpis{grid-template-columns:1fr}
}

/* ============================================================
   移动端体验补丁（2026-10-29 检测修复，375px 真机走查）
   ① 输入控件字号 ≥16px：iOS Safari 聚焦 <16px 输入框会自动放大页面，
      输入后需手动缩回——移动端最常见体验缺陷
   ② 触控目标：.btn-sm 点击高度 28px → ≥34px（拇指可点）
   ============================================================ */
@media (max-width: 720px) {
  input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  select,
  textarea {
    font-size: 16px !important;   /* 覆盖 JS 内联 font-size，防 iOS 聚焦缩放 */
  }
  .btn-sm {
    padding-top: 8px !important;
    padding-bottom: 8px !important;
  }
}

/* 直接投入：凭证号 + 附件关联（消耗材料/燃料/动力表格） */
#view .rdw-vgsum{font-size:13px;color:#5a6275}
#view .rdw-vgline{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
#view .rdw-vgline .rdw-vgno{width:78px !important;flex:0 0 78px;padding:3px 5px}
#view .rdw-vglink{font-size:13px;color:#2c5bd8;text-decoration:none;white-space:nowrap}
#view .rdw-vglink:hover{text-decoration:underline}
#view .rdw-vgup{flex:0 0 auto;padding:3px 8px;white-space:nowrap}
#view .rdw-vgx{flex:0 0 auto;border:0;background:none;color:#98a1b3;cursor:pointer;font-size:13px;padding:0 2px;line-height:1}
#view .rdw-vgx:hover{color:#c00}
/* 委托研发：合同 + 付款凭证两项必备附件 */
#view .rdw-vgdocs{display:flex;flex-direction:column;gap:5px}
#view .rdw-vgtag{flex:0 0 auto;font-size:12.5px;color:var(--ink-3);background:var(--bg);border:1px solid var(--line);border-radius:99px;padding:1px 8px;line-height:1.6}
#view .rdw-outneed-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}
#view .rdw-outneed-item{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2)}
/* 委托研发金额弹窗：合同必传行 */
#drawer .rdw-vgline{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:6px 0 0}
#drawer .rdw-vgtag{flex:0 0 auto;font-size:12.5px;color:var(--ink-3);background:var(--bg);border:1px solid var(--line);border-radius:99px;padding:1px 8px;line-height:1.6}
#drawer .rdw-vglink{font-size:13px;color:#2c5bd8;text-decoration:none;white-space:nowrap}
#drawer .rdw-vglink:hover{text-decoration:underline}

/* ===== 破坏性操作闸门（两步确认 + 撤销条）===== */
.qwb-dng-armed { background: var(--danger) !important; border-color: var(--danger) !important; color: #fff !important; font-weight: 600; }
tr.qwb-dng-row > td { background: var(--danger-soft) !important; }
.qwb-undo { position: fixed; left: 50%; transform: translateX(-50%); bottom: 86px; z-index: 120; display: flex; align-items: center; gap: 10px; max-width: min(92vw, 640px); padding: 9px 12px; border-radius:10px; background: var(--ink); color: var(--card); font-size: 13px; box-shadow: 0 8px 28px rgba(20, 26, 40, .28); }
.qwb-undo > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qwb-undo .btn { flex: 0 0 auto; }
.qwb-undo-x { flex: 0 0 auto; border: 0; background: transparent; color: var(--card); opacity: .6; font-size: 17px; line-height: 1; cursor: pointer; padding: 0 2px; }
.qwb-undo-x:hover { opacity: 1; }

/* ============================================================
   暗色模式对比度补全（2026-10-29 审计）
   ------------------------------------------------------------
   审计发现 106 条硬编码浅色背景规则无暗色覆盖，导致暗色模式下
   浅底浅字不可读。本块逐一给出暗色等价值；新模块上线时须同步。
   ============================================================ */
html[data-theme="dark"] .sm-vitem.pass { background: rgba(18, 184, 134, .13); }
html[data-theme="dark"] .sm-vitem.warn { background: rgba(224, 139, 0, .13); }
html[data-theme="dark"] .sm-vitem.fail { background: rgba(217, 43, 43, .15); }
html[data-theme="dark"] .sm-box { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .sm-strip.on { background: rgba(94, 140, 255, .12); border-color: #2a3a55; }

html[data-theme="dark"] .qg-kpi { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .qg-kpi .n, html[data-theme="dark"] .qg-kpi .l, html[data-theme="dark"] .qg-kpi .x { color: #c9d7f2; }
html[data-theme="dark"] .qg-kpi.hot { background: rgba(224, 139, 0, .15); border-color: #5a4a2a; }
html[data-theme="dark"] .qg-chip { background: #1e2d45; border-color: #2a3a55; color: #c9d7f2; }
html[data-theme="dark"] .qg-card { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .qg-ico { background: #26344f; }
html[data-theme="dark"] .qg-card-foot { background: #1e2d45; border-color: #2a3a55; }

html[data-theme="dark"] .bd-rings { background: rgba(94, 140, 255, .05); border-color: #2a3a55; }
html[data-theme="dark"] .bd-tip { background: #253a63; border-color: #2f4a7a; color: #e9eef8; box-shadow: 0 12px 30px rgba(0, 0, 0, .5); }
html[data-theme="dark"] .bd-tip::after { border-top-color: #253a63; }
html[data-theme="dark"] .bd-tip b { color: #ffd28a; }
html[data-theme="dark"] .bd-kico { background: #26344f; border-color: #2a3a55; }
html[data-theme="dark"] .bd-ip-grid > div { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .bd-tri-sep { background: #2a3a55; }
html[data-theme="dark"] .bd-tier { background: #26344f; border-color: #2a3a55; color: #9db9ff; }
html[data-theme="dark"] .bd-flow-node { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .bd-flow-node b { color: #9db9ff; }
html[data-theme="dark"] .bd-flow-node span { color: #8b99b3; }
html[data-theme="dark"] .bd-flow-node.hot { background: linear-gradient(135deg, #1d4fc0, #2e6be6); border-color: #2e6be6; }
html[data-theme="dark"] .bd-flow-node.hot b { color: #fff; }
html[data-theme="dark"] .bd-flow-node.hot span { color: #cfe0ff; }
html[data-theme="dark"] .bd-flow-arrow b { color: #4a5f8a; }
html[data-theme="dark"] .bd-flow-arrow em { background: rgba(94, 140, 255, .15); border-color: rgba(94, 140, 255, .3); color: #9db9ff; }
html[data-theme="dark"] .bd-quote { background: rgba(94, 140, 255, .08); border-color: #2a3a55; color: #b9c8e6; }
html[data-theme="dark"] .bd-team-bar { background: #26344f; }
html[data-theme="dark"] .bd-team-grid > div { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .bd-rm em { background: #26344f; border-color: #2a3a55; color: #9db9ff; }
html[data-theme="dark"] .bd-rm.done em { background: rgba(18, 184, 134, .18); border-color: rgba(18, 184, 134, .35); color: #2fbf8f; }
html[data-theme="dark"] #view:has(.bd-kpis) > .card:first-child { background: rgba(26, 35, 50, .92); }

html[data-theme="dark"] .vg-proj { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .vg-proj.vg-risk { background: rgba(224, 139, 0, .08); border-color: #5a4a2a; }
html[data-theme="dark"] .vg-doc { background: #26344f; border-color: #2a3a55; color: #9db9ff; }
html[data-theme="dark"] .vg-doc.ok { background: rgba(18, 184, 134, .16); border-color: rgba(18, 184, 134, .3); color: #2fbf8f; }
html[data-theme="dark"] .vg-doc.miss { background: rgba(224, 139, 0, .12); border-color: rgba(224, 139, 0, .3); color: #e0a94e; }
html[data-theme="dark"] .vg-file { background: #26344f; border-color: #2a3a55; }
html[data-theme="dark"] .vg-file a { color: #9db9ff; }

html[data-theme="dark"] .pp-count { background: #26344f; color: #9db9ff; }
html[data-theme="dark"] .pp-count.hot { background: rgba(224, 139, 0, .18); color: #e0a94e; }
html[data-theme="dark"] .pp-count.past { background: #1a2332; color: #5a6b85; }
html[data-theme="dark"] .pf-b-new { background: rgba(217, 43, 43, .2); color: #ff9d9d; }
html[data-theme="dark"] .pf-b-recent { background: rgba(224, 139, 0, .15); color: #e0a94e; }
html[data-theme="dark"] .pf-b-year { background: #26344f; color: #8b99b3; }

html[data-theme="dark"] .ipm-kpi { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .ipm-kpi.wn::before { background: rgba(224, 139, 0, .25); }
html[data-theme="dark"] .ipm-visual { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .ipm-tbl select, html[data-theme="dark"] .ipm-tbl input[type="text"], html[data-theme="dark"] .ipm-tbl input[type="number"] { background: #26344f; border-color: #2a3a55; color: #e8eef9; }
html[data-theme="dark"] .ipm-msg { background: rgba(18, 184, 134, .1); border-color: rgba(18, 184, 134, .3); color: #2fbf8f; }

html[data-theme="dark"] .adm-modal { background: #1e2d45; }
html[data-theme="dark"] .adm-p { background: #26344f; border-color: #2a3a55; color: #c9d7f2; }
html[data-theme="dark"] .adm-p.on { background: rgba(94, 140, 255, .18); border-color: var(--brand); color: #9db9ff; }
html[data-theme="dark"] .adm-err { background: rgba(217, 43, 43, .18); color: #ff9d9d; }
html[data-theme="dark"] .adm-foot { background: transparent; border-color: #2a3a55; }
html[data-theme="dark"] .user-badge.demo { background: #3a2f14; border-color: #6b5518; color: #e0c06a; }

html[data-theme="dark"] .rdf-step.on .rdf-no { background: var(--brand); color: #fff; }
html[data-theme="dark"] .rdw-dot { background: #26344f; border-color: #2a3a55; }
html[data-theme="dark"] .rdr-tag.auto { background: rgba(94, 140, 255, .15); color: #9db9ff; }
html[data-theme="dark"] .rdr-tag.tpl { background: rgba(124, 58, 237, .18); color: #c4a5ff; }
html[data-theme="dark"] .rdr-tag.ext { background: rgba(224, 139, 0, .15); color: #e0a94e; }
html[data-theme="dark"] .pbar { background: #26344f; }
html[data-theme="dark"] .pbar.warn i { background: #e0a94e; }
html[data-theme="dark"] .pbar.danger i { background: #e57373; }

html[data-theme="dark"] .hm-mod { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .hms-card { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .hms-ico { background: #26344f; }
html[data-theme="dark"] .hm-screen { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .hm-aud-btn { background: #1e2d45; border-color: #2a3a55; color: #c9d7f2; }
html[data-theme="dark"] .hm-xlink { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .hm-xlink.on-dark { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .2); }
html[data-theme="dark"] .hm-cycle { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .hm-brief { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .hm-hl { background: rgba(94, 140, 255, .12); }
html[data-theme="dark"] .hm-topgaps li i { background: #26344f; border-color: #2a3a55; }
html[data-theme="dark"] .hm-wstbl tbody tr:nth-child(even) td { background: rgba(94, 140, 255, .05); }
html[data-theme="dark"] .hmb-bar { background: #26344f; }
html[data-theme="dark"] .hmb-bar i { background: #3d548c; }
html[data-theme="dark"] .hmb-bar span { background: #26344f; color: #c9d7f2; }
html[data-theme="dark"] .hm-browser { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .hml-step.tone-blue { background: rgba(94, 140, 255, .1); }
html[data-theme="dark"] .hml-step.tone-teal { background: rgba(18, 184, 134, .1); }
html[data-theme="dark"] .hml-step.tone-amber { background: rgba(224, 139, 0, .1); }
html[data-theme="dark"] .hml-step.tone-indigo { background: rgba(124, 58, 237, .12); }
html[data-theme="dark"] .appt input, html[data-theme="dark"] .appt select { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .18); color: #e8eef9; }
html[data-theme="dark"] .appt-done { background: rgba(18, 184, 134, .12); }

html[data-theme="dark"] .rb-calc { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .rb-cap { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .rb-basis span { background: #26344f; border-color: #2a3a55; color: #9db9ff; }
html[data-theme="dark"] .ah-mark { background: rgba(255, 255, 255, .92); }
html[data-theme="dark"] .ah-list i { background: rgba(255, 255, 255, .14); color: #fff; }
html[data-theme="dark"] .hero-brand .hh-actions .btn { background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .25); color: #fff; }
html[data-theme="dark"] .hero-brand .hh-actions .btn:hover { background: rgba(255, 255, 255, .18); }
html[data-theme="dark"] .hero-brand .hh-actions .btn-primary { background: #fff; color: #1d4fc0; border-color: #fff; }
html[data-theme="dark"] .hero-brand .hh-actions .btn-primary:hover { background: #e8f0ff; }
html[data-theme="dark"] .hb-stats .hs-item { background: #1e2d45; border-color: #2a3a55; }

/* ============================================================
   暗色模式对比度补全（2026-10-29 审计：106 条浅色背景规则）
   ============================================================ */
html[data-theme="dark"] .sm-vitem.pass { background: rgba(18, 184, 134, .13); border-color: rgba(18, 184, 134, .3); }
html[data-theme="dark"] .sm-vitem.warn { background: rgba(224, 139, 0, .13); border-color: rgba(224, 139, 0, .3); }
html[data-theme="dark"] .sm-vitem.fail { background: rgba(217, 43, 43, .15); border-color: rgba(217, 43, 43, .3); }
html[data-theme="dark"] .sm-vitem.info { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .sm-box { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .sm-strip.on { background: rgba(94, 140, 255, .12); border-color: #2a3a55; }
html[data-theme="dark"] .qg-kpi { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .qg-kpi .n, html[data-theme="dark"] .qg-kpi .l, html[data-theme="dark"] .qg-kpi .x { color: #c9d7f2; }
html[data-theme="dark"] .qg-kpi.hot { background: rgba(224, 139, 0, .15); border-color: #5a4a2a; }
html[data-theme="dark"] .qg-chip { background: #1e2d45; border-color: #2a3a55; color: #c9d7f2; }
html[data-theme="dark"] .qg-card { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .qg-ico { background: #26344f; }
html[data-theme="dark"] .qg-card-foot { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .bd-rings { background: rgba(94, 140, 255, .05); border-color: #2a3a55; }
html[data-theme="dark"] .bd-tip { background: #253a63; border-color: #2f4a7a; color: #e9eef8; box-shadow: 0 12px 30px rgba(0, 0, 0, .5); }
html[data-theme="dark"] .bd-tip::after { border-top-color: #253a63; }
html[data-theme="dark"] .bd-tip b { color: #ffd28a; }
html[data-theme="dark"] .bd-kico { background: #26344f; border-color: #2a3a55; }
html[data-theme="dark"] .bd-ip-grid > div { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .bd-tri-sep { background: #2a3a55; }
html[data-theme="dark"] .bd-tier { background: #26344f; border-color: #2a3a55; color: #9db9ff; }
html[data-theme="dark"] .bd-flow-node { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .bd-flow-node b { color: #9db9ff; }
html[data-theme="dark"] .bd-flow-node span { color: #8b99b3; }
html[data-theme="dark"] .bd-flow-node.hot { background: linear-gradient(135deg, #1d4fc0, #2e6be6); border-color: #2e6be6; }
html[data-theme="dark"] .bd-flow-node.hot b { color: #fff; }
html[data-theme="dark"] .bd-flow-node.hot span { color: #cfe0ff; }
html[data-theme="dark"] .bd-flow-arrow b { color: #4a5f8a; }
html[data-theme="dark"] .bd-flow-arrow em { background: rgba(94, 140, 255, .15); border-color: rgba(94, 140, 255, .3); color: #9db9ff; }
html[data-theme="dark"] .bd-quote { background: rgba(94, 140, 255, .08); border-color: #2a3a55; color: #b9c8e6; }
html[data-theme="dark"] .bd-team-bar { background: #26344f; }
html[data-theme="dark"] .bd-team-grid > div { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .bd-rm em { background: #26344f; border-color: #2a3a55; color: #9db9ff; }
html[data-theme="dark"] .bd-rm.done em { background: rgba(18, 184, 134, .18); border-color: rgba(18, 184, 134, .35); color: #2fbf8f; }
html[data-theme="dark"] #view:has(.bd-kpis) > .card:first-child { background: rgba(26, 35, 50, .92); }
html[data-theme="dark"] .vg-proj { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .vg-proj.vg-risk { background: rgba(224, 139, 0, .08); border-color: #5a4a2a; }
html[data-theme="dark"] .vg-doc { background: #26344f; border-color: #2a3a55; color: #9db9ff; }
html[data-theme="dark"] .vg-doc.ok { background: rgba(18, 184, 134, .16); border-color: rgba(18, 184, 134, .3); color: #2fbf8f; }
html[data-theme="dark"] .vg-doc.miss { background: rgba(224, 139, 0, .12); border-color: rgba(224, 139, 0, .3); color: #e0a94e; }
html[data-theme="dark"] .vg-file { background: #26344f; border-color: #2a3a55; }
html[data-theme="dark"] .vg-file a { color: #9db9ff; }
html[data-theme="dark"] .pp-count { background: #26344f; color: #9db9ff; }
html[data-theme="dark"] .pp-count.hot { background: rgba(224, 139, 0, .18); color: #e0a94e; }
html[data-theme="dark"] .pp-count.past { background: #1a2332; color: #5a6b85; }
html[data-theme="dark"] .pf-b-new { background: rgba(217, 43, 43, .2); color: #ff9d9d; }
html[data-theme="dark"] .pf-b-recent { background: rgba(224, 139, 0, .15); color: #e0a94e; }
html[data-theme="dark"] .pf-b-year { background: #26344f; color: #8b99b3; }
html[data-theme="dark"] .ipm-kpi { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .ipm-kpi.wn::before { background: rgba(224, 139, 0, .25); }
html[data-theme="dark"] .ipm-visual { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .ipm-tbl select, html[data-theme="dark"] .ipm-tbl input[type="text"], html[data-theme="dark"] .ipm-tbl input[type="number"] { background: #26344f; border-color: #2a3a55; color: #e8eef9; }
html[data-theme="dark"] .ipm-msg { background: rgba(18, 184, 134, .1); border-color: rgba(18, 184, 134, .3); color: #2fbf8f; }
html[data-theme="dark"] .adm-modal { background: #1e2d45; }
html[data-theme="dark"] .adm-p { background: #26344f; border-color: #2a3a55; color: #c9d7f2; }
html[data-theme="dark"] .adm-p.on { background: rgba(94, 140, 255, .18); border-color: var(--brand); color: #9db9ff; }
html[data-theme="dark"] .adm-err { background: rgba(217, 43, 43, .18); color: #ff9d9d; }
html[data-theme="dark"] .adm-foot { background: transparent; border-color: #2a3a55; }
html[data-theme="dark"] .user-badge.demo { background: #3a2f14; border-color: #6b5518; color: #e0c06a; }
html[data-theme="dark"] .rdf-step.on .rdf-no { background: var(--brand); color: #fff; }
html[data-theme="dark"] .rdw-dot { background: #26344f; border-color: #2a3a55; }
html[data-theme="dark"] .rdr-tag.auto { background: rgba(94, 140, 255, .15); color: #9db9ff; }
html[data-theme="dark"] .rdr-tag.tpl { background: rgba(124, 58, 237, .18); color: #c4a5ff; }
html[data-theme="dark"] .rdr-tag.ext { background: rgba(224, 139, 0, .15); color: #e0a94e; }
html[data-theme="dark"] .pbar { background: #26344f; }
html[data-theme="dark"] .pbar.warn i { background: #e0a94e; }
html[data-theme="dark"] .pbar.danger i { background: #e57373; }
html[data-theme="dark"] .hm-mod { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .hms-card { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .hms-ico { background: #26344f; }
html[data-theme="dark"] .hm-screen { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .hm-aud-btn { background: #1e2d45; border-color: #2a3a55; color: #c9d7f2; }
html[data-theme="dark"] .hm-xlink { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .hm-xlink.on-dark { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .2); }
html[data-theme="dark"] .hm-cycle { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .hm-brief { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .hm-hl { background: rgba(94, 140, 255, .12); }
html[data-theme="dark"] .hm-topgaps li i { background: #26344f; border-color: #2a3a55; }
html[data-theme="dark"] .hm-wstbl tbody tr:nth-child(even) td { background: rgba(94, 140, 255, .05); }
html[data-theme="dark"] .hmb-bar { background: #26344f; }
html[data-theme="dark"] .hmb-bar i { background: #3d548c; }
html[data-theme="dark"] .hmb-bar span { background: #26344f; color: #c9d7f2; }
html[data-theme="dark"] .hm-browser { background: #1a2332; border-color: #2a3a55; }
html[data-theme="dark"] .hml-step.tone-blue { background: rgba(94, 140, 255, .1); }
html[data-theme="dark"] .hml-step.tone-teal { background: rgba(18, 184, 134, .1); }
html[data-theme="dark"] .hml-step.tone-amber { background: rgba(224, 139, 0, .1); }
html[data-theme="dark"] .hml-step.tone-indigo { background: rgba(124, 58, 237, .12); }
html[data-theme="dark"] .appt input, html[data-theme="dark"] .appt select { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .18); color: #e8eef9; }
html[data-theme="dark"] .appt-done { background: rgba(18, 184, 134, .12); }
html[data-theme="dark"] .rb-calc { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .rb-cap { background: #1e2d45; border-color: #2a3a55; }
html[data-theme="dark"] .rb-basis span { background: #26344f; border-color: #2a3a55; color: #9db9ff; }
html[data-theme="dark"] .ah-mark { background: rgba(255, 255, 255, .92); }
html[data-theme="dark"] .ah-list i { background: rgba(255, 255, 255, .14); color: #fff; }
html[data-theme="dark"] .hero-brand .hh-actions .btn { background: rgba(255, 255, 255, .1); border-color: rgba(255, 255, 255, .25); color: #fff; }
html[data-theme="dark"] .hero-brand .hh-actions .btn:hover { background: rgba(255, 255, 255, .18); }
html[data-theme="dark"] .hero-brand .hh-actions .btn-primary { background: #fff; color: #1d4fc0; border-color: #fff; }
html[data-theme="dark"] .hero-brand .hh-actions .btn-primary:hover { background: #e8f0ff; }
html[data-theme="dark"] .hb-stats .hs-item { background: #1e2d45; border-color: #2a3a55; }

/* ============================================================
   暗色补全·运行时注入样式（JS 内嵌 <style> 晚于本文件，需 !important 压过）
   rdcompliance（归集合规中心）等模块的自带浅色样式
   ============================================================ */
html[data-theme="dark"] .rc-kpi .k { background: #1e2d45 !important; border-color: #2a3a55 !important; }
html[data-theme="dark"] .rc-kpi .n { color: #c9d7f2 !important; }
html[data-theme="dark"] .rc-kpi .l { color: #9db9ff !important; }
html[data-theme="dark"] .rc-kpi .s { color: #7d8ba8 !important; }
html[data-theme="dark"] .rc-card { background: #1a2332 !important; border-color: #2a3a55 !important; }
html[data-theme="dark"] .rc-card h2 { color: #e8eef9 !important; }
html[data-theme="dark"] .rc-card .sub { color: #8fa8c8 !important; }
html[data-theme="dark"] .rc-tbl th { color: #9db9ff !important; border-color: #2a3a55 !important; }
html[data-theme="dark"] .rc-tbl td { border-color: #243247 !important; color: #c9d7f2 !important; }
html[data-theme="dark"] .rc-tbl tr:last-child td { border-bottom: 0 !important; }
html[data-theme="dark"] .rc-ok { color: #2fbf8f !important; }
html[data-theme="dark"] .rc-bad { color: #ff8f8f !important; }
html[data-theme="dark"] .rc-warn { color: #e0a94e !important; }
html[data-theme="dark"] .rc-hero h1 { font-size: 22px !important; color: #e8eef9 !important; }
html[data-theme="dark"] .rc-hero p { color: #b9c6de !important; }
/* 规格统一：rc-hero 标题与其他页 h1 一致（浅色下同样生效） */
.rc-hero h1 { font-size: 22px !important; }
/* ② 核验行卡片化：暗色下加边框成块，不再漂浮 */
html[data-theme="dark"] .sm-vitem { border: 1px solid #2a3a55; }
html[data-theme="dark"] .sm-vitem.pass { border-color: rgba(18, 184, 134, .3); }
html[data-theme="dark"] .sm-vitem.warn { border-color: rgba(224, 139, 0, .3); }
html[data-theme="dark"] .sm-vitem.fail { border-color: rgba(217, 43, 43, .3); }

/* ④ 研发项目切换条加深：实底卡片 + 阴影，醒目 */
.rdw-pin { position: sticky; top: 0; z-index: 14; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 14px; margin-bottom: 10px; background: var(--card); border: 1px solid var(--line); border-radius:12px; box-shadow: 0 4px 16px rgba(15, 30, 70, .1); }
.rdw-pin-t { font-size:13px; font-weight: 700; color: var(--ink); margin-right: auto; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
html[data-theme="dark"] .rdw-pin { background: #1e2d45; border-color: #2a3a55; box-shadow: 0 4px 16px rgba(0, 0, 0, .45); }
html[data-theme="dark"] .rdw-pin-t { color: #e8eef9; }

/* ③ 资质图谱淡化：彩色渐变底 → 中性卡片 + 层级色仅保留在标签与左侧细条 */
.qg-kpi { background: var(--card) !important; border: 1px solid var(--line) !important; }
.qg-kpi::before { width: 4px !important; opacity: .55; }
.qg-kpi.hot { border-color: rgba(217, 43, 43, .35) !important; }
.qg-card { background: var(--card) !important; border: 1px solid var(--line) !important; border-left: 4px solid var(--qc, var(--brand)) !important; }
.qg-card-top { background: transparent !important; }
.qg-ico { box-shadow: none !important; border: 1px solid var(--line-soft); }
/* 暗色下同步（覆盖早前暗色渐变底） */
html[data-theme="dark"] .qg-kpi { background: #1e2d45 !important; border-color: #2a3a55 !important; }
html[data-theme="dark"] .qg-kpi.hot { background: #1e2d45 !important; border-color: rgba(217, 43, 43, .4) !important; }
html[data-theme="dark"] .qg-card { background: #1a2332 !important; border-color: #2a3a55 !important; }


/* ============================================================
   侧栏科技感改造（2026-10-30）：研发管理平台属性 · 护眼
   ------------------------------------------------------------
   低饱和冷色渐变 + 顶部微网格纹理 + 流程管线树；
   活动态小面积品牌辉光，不做大面积高亮，保证长时间阅读舒适。
   ============================================================ */
.sidebar {
  background:
    radial-gradient(420px 200px at 50% -60px, rgba(46, 107, 230, .07), transparent 70%),
    linear-gradient(180deg, #f7faff 0%, #eef3fb 100%);
}
.sidebar::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 340px;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(46, 107, 230, .04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(46, 107, 230, .04) 1px, transparent 1px);
  background-size: 26px 26px;
  mask-image: linear-gradient(180deg, rgba(0,0,0,.9), transparent);
  -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.9), transparent);
}
.sidebar > * { position: relative; z-index: 1; }
.sidebar::-webkit-scrollbar { width: 8px; }
.sidebar::-webkit-scrollbar-thumb { background: #c9d7f2; border-radius:8px; border: 2px solid transparent; background-clip: content-box; }
.sidebar::-webkit-scrollbar-thumb:hover { background: #a8c0e8; background-clip: content-box; }
html[data-theme="dark"] .sidebar {
  background:
    radial-gradient(420px 200px at 50% -60px, rgba(94, 140, 255, .08), transparent 70%),
    linear-gradient(180deg, #0e1729 0%, #101b30 100%);
  border-right-color: #1d2b47;
}
html[data-theme="dark"] .sidebar::before {
  background-image:
    linear-gradient(rgba(94, 140, 255, .05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(94, 140, 255, .05) 1px, transparent 1px);
}
html[data-theme="dark"] .sidebar::-webkit-scrollbar-thumb { background: #26344f; background-clip: content-box; }

/* 分组标题条：LED 点辉光（组色 --gc 已按板块定义） */
.nav-sep .ns-bar {
  width: 6px; height: 6px; border-radius:2px;
  background: var(--gc, var(--brand));
  box-shadow: 0 0 6px var(--gc, var(--brand));
}

/* 研发流程子菜单：管线树（竖轨 + 节点圆） */
.nav-sub {
  border-left: 2px solid #d8e3f6;
  border-radius:0 8px 8px 0;
  background: linear-gradient(90deg, rgba(46, 107, 230, .04), transparent 70%);
}
.nav-sub::before {
  content: ''; position: absolute; left: -5px; top: 50%; transform: translateY(-50%);
  width: 8px; height: 8px; border-radius:50%;
  background: #fff; border: 2px solid #b9cbf2;
  transition: border-color .16s, box-shadow .16s, background .16s;
}
.nav-sub:hover { border-left-color: #8fb0f0; background: linear-gradient(90deg, rgba(46, 107, 230, .1), transparent 75%); }
.nav-sub:hover::before { border-color: #8fb0f0; }
.nav-sub.on { border-left-color: var(--brand); background: linear-gradient(90deg, rgba(46, 107, 230, .14), transparent 75%); }
.nav-sub.on::before { background: var(--brand); border-color: var(--brand); box-shadow: 0 0 8px rgba(46, 107, 230, .75); }
html[data-theme="dark"] .nav-sub {
  border-left-color: #243247;
  background: linear-gradient(90deg, rgba(94, 140, 255, .06), transparent 70%);
}
html[data-theme="dark"] .nav-sub::before { background: #101b30; border-color: #3d548c; }
html[data-theme="dark"] .nav-sub:hover { border-left-color: #5e8cff; background: linear-gradient(90deg, rgba(94, 140, 255, .12), transparent 75%); }
html[data-theme="dark"] .nav-sub:hover::before { border-color: #5e8cff; }
html[data-theme="dark"] .nav-sub.on { border-left-color: #5e8cff; background: linear-gradient(90deg, rgba(94, 140, 255, .16), transparent 75%); }
html[data-theme="dark"] .nav-sub.on::before { background: #5e8cff; border-color: #5e8cff; box-shadow: 0 0 8px rgba(94, 140, 255, .8); }
@media (max-width: 860px) {
  .nav-sub { border: 1px solid var(--line); border-radius:99px; }
  .nav-sub.on { border-color: var(--brand); }
  .nav-sub::before { display: none; }
}

/* 导航活动轨：渐变辉光条；悬停轻微右移 */
.nav-item.active::before {
  height: 60%; border-radius:0 4px 4px 0;
  background: linear-gradient(180deg, #8fb0f0, var(--brand));
  box-shadow: 0 0 8px rgba(94, 140, 255, .8);
}
.nav-item .ico { transition: filter .16s, color .16s; }
.nav-item.active .ico { filter: drop-shadow(0 0 4px rgba(255, 255, 255, .5)); }
.nav-item:hover { transform: translateX(2px); }
.nav-item.active:hover { transform: none; }

/* 品牌区分隔线：品牌渐变发丝线替代实线 */
#brandLogo { position: relative; border-bottom: none; }
#brandLogo::after {
  content: ''; position: absolute; left: 8%; right: 8%; bottom: 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(46, 107, 230, .45), transparent);
}
/* 工时日历：触屏禁用双击缩放，保证双击改工时可触发；拖动连选的滚动抑制由 touchmove preventDefault 控制 */
.rdw-day { touch-action: manipulation; }
/* 账号状态 / 有效期徽章语义色（会员账号管理页） */
.tag-amber { background: #fdf3e0; color: #8a5a00; }
.tag-red { background: #fdeaea; color: #a02020; }
.tag-grey { background: #eef1f7; color: #5a6275; }
html[data-theme="dark"] .tag-amber { background: rgba(240, 180, 41, .16); color: #f0b429; }
html[data-theme="dark"] .tag-red { background: rgba(240, 90, 90, .16); color: #ff9b9b; }
html[data-theme="dark"] .tag-grey { background: rgba(255, 255, 255, .08); color: #9aa8c2; }


/* ============================================================
   2026-10-31 UI polish — 统一密度 / 弱化噪音 / 清爽化
   ============================================================ */

/* 侧栏：紧凑品牌区 + 低饱和导航 */
.sidebar { width: 228px; flex-basis: 228px; padding: 16px 12px 18px; }
.logo { padding: 0 6px 12px; margin-bottom: 10px; }
.logo-mark { width: 34px; height: 34px; flex-basis: 34px; }
.logo-txt { min-width: 0; flex: 1; }
.logo-txt b { font-size: 13px; line-height: 1.35; }
.logo-txt span { display: block; font-size: 11.5px; line-height: 1.45; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.nav { gap: 2px; }
.nav-item { padding: 8px 10px; border-radius: 8px; }
.nav-item.active { background: var(--brand-soft); color: var(--brand); box-shadow: inset 3px 0 0 var(--brand); font-weight: 600; }
.nav-item.active::before { display: none; }
.sidebar .nav-item .ico { color: var(--ink-3); }
.sidebar .nav-item:hover .ico, .sidebar .nav-item.active .ico { color: var(--brand); }
.sidebar .nav-sep { padding: 12px 10px 4px; font-size: 11px; letter-spacing: .08em; opacity: .9; }
/* 2026-11-01 审计：恢复板块组色（下方 polish 块曾把组名/色条中和成灰，与 LED 彩晕矛盾） */
.sidebar .nav-sep .ns-txt { color: var(--gc, var(--ink-3)); font-weight: 600; }
.sidebar .nav-sep .ns-bar { background: var(--gc, var(--brand)); }

/* 主区与页头 */
.main { padding: 22px 28px 64px; max-width: 1480px; }
.page-head { margin-bottom: 18px; }
.page-head h1 { font-size: 20px; letter-spacing: -.2px; }
.page-head p { font-size: 13px; line-height: 1.6; }

/* 卡片：静态卡片不再 hover 抬升，统一密度 */
.card { padding: 16px 18px; margin-bottom: 14px; box-shadow: var(--shadow-sm); }
.card:hover { box-shadow: var(--shadow-sm); }
.card > h2 { font-size: 15px; font-weight: 600; letter-spacing: 0; margin: 0 0 6px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.card > .sub { margin: 0 0 12px; line-height: 1.65; }
.card > h2 .tag { font-weight: 500; }

/* 控件统一高度 */
.btn { min-height: 34px; padding: 7px 14px; border-radius: 8px; font-size: 13px; }
.btn-sm { min-height: 30px; padding: 4px 10px; font-size: 12.5px; border-radius: 7px; }
.btn-primary { box-shadow: none; }
.btn-primary:hover { box-shadow: 0 6px 14px -10px rgba(30, 79, 216, .6); }
input[type=text], input[type=number], input[type=date], select, textarea { min-height: 34px; padding: 7px 10px; border-radius: 8px; }
input:focus, select:focus, textarea:focus { box-shadow: 0 0 0 3px rgba(30, 79, 216, .08); }

/* 表格：中性表头 + 轻 hover */
.tbl th { padding: 8px 10px; font-size: 12.5px; color: var(--ink-3); font-weight: 600; background: var(--bg); }
.tbl td { padding: 9px 10px; }
.tbl tbody tr:hover td { background: var(--bg); }

/* 标签与提示 */
.tag { padding: 2px 8px; font-size: 12px; border-radius: 999px; line-height: 1.6; font-weight: 600; }
.note { padding: 9px 12px; border-radius: 8px; font-size: 13px; line-height: 1.65; }
.note-warn { border-color: rgba(224, 139, 0, .35); }
.note-danger { border-color: rgba(217, 43, 43, .3); }
.note-ok { border-color: rgba(10, 158, 92, .3); }
.note-brand { border-color: var(--brand-line); }

/* 子导航：与主侧栏一致的软选中态 */
.rdw-ni.on { background: var(--brand-soft); color: var(--brand); box-shadow: inset 3px 0 0 var(--brand); font-weight: 600; }
.rdw-ni.on .rdw-ico { opacity: 1; }
.rdw-nav { padding: 8px; }
.rdw-ni { padding: 7px 9px; }

/* 顶部项目条 */
.rdw-pin { padding: 8px 12px; border-radius: 10px; box-shadow: var(--shadow-sm); gap: 8px; }
.rdw-pin .btn { min-height: 30px; }

/* 工时页：成员选择改为紧凑网格 */
#view .rdw-ts-bind { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 8px; }
#view .rdw-ts-bind label { display: flex; align-items: center; gap: 8px; min-width: 0; margin: 0; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--card); font-size: 13px; line-height: 1.2; cursor: pointer; }
#view .rdw-ts-bind label:hover { border-color: var(--brand); background: var(--brand-soft); }
#view .rdw-ts-bind label.on { border-color: var(--brand); background: var(--brand-soft); color: var(--brand); box-shadow: inset 0 0 0 1px rgba(30, 79, 216, .12); }
#view .rdw-ts-bind label.off { opacity: .6; }
#view .rdw-ts-bind label input[type=checkbox] { width: 14px; height: 14px; margin: 0; accent-color: var(--brand); flex: none; }
#view .rdw-ts-bind label .rdw-mute { margin-left: auto !important; font-size: 12px; color: var(--ink-3); white-space: nowrap; }

/* 工时页：工具条与提示条 */
#view .rdw-tools { gap: 8px 10px; margin: 12px 0 10px; align-items: center; }
#view .rdw-tools .rdw-sum { margin-left: auto; font-size: 12.5px; }
#view .rdw-tools .rdw-sum b { font-size: 13.5px; }
#view .rdw-tools .btn { min-height: 30px; }
#view .rdw-sel { height: 30px; min-height: 30px; padding: 0 10px; border-radius: 8px; font-size: 12.5px; }
#view .rdw-cal-hint { background: #f8fafd; border: 1px solid var(--line); color: var(--ink-3); border-radius: 8px; padding: 7px 11px; gap: 4px 14px; max-width: none; }
#view .rdw-cal-hint b { color: var(--ink-2); font-weight: 600; }
html[data-theme="dark"] #view .rdw-cal-hint { background: #141b2a; border-color: var(--line); }
#view .rdw-ts-tbl th { background: var(--bg); color: var(--ink-3); font-size: 12.5px; }
#view .rdw-ts-tbl td { padding: 8px 10px; vertical-align: middle; }
#view .rdw-ts-tbl .rdw-amt-in { width: 120px; height: 30px; border-radius: 6px; font-size: 13px; }
#view .rdw-ts-tbl .btn-sm { min-height: 28px; padding: 3px 9px; font-size: 12px; }

/* 企业档案：8 个指标改为整齐的 4×2 数据栅格 */
.ent-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; margin: 14px 0 0; background: var(--line); border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.ent-metrics > div { min-width: 0; padding: 11px 14px; background: var(--card); }
.ent-metrics span { display: block; font-size: 12px; line-height: 1.5; color: var(--ink-3); }
.ent-metrics b { display: block; margin-top: 2px; font-size: 15px; line-height: 1.4; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ent-metrics > div:last-child { background: var(--brand-soft); }
.ent-metrics > div:last-child b { color: var(--brand); }
@media (max-width: 980px) { .ent-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 560px) { .ent-metrics { grid-template-columns: 1fr; } }

/* AI 悬浮按钮：去掉紫色，统一品牌蓝 */
.ai-fab { background: linear-gradient(135deg, var(--brand), #4a7bf0); box-shadow: 0 10px 26px -10px rgba(30, 79, 216, .5); }
.ai-fab:hover { box-shadow: 0 14px 30px -12px rgba(30, 79, 216, .55); }

/* 修复：部分模板只写 g2/g3/g4 而漏了 grid 类，导致卡片竖排 */
.g2, .g3, .g4 { display: grid; gap: 14px; }

/* 成员管理：左列表不被右卡片强行拉高；角色说明改为 2×2 */
.mem-list { align-self: start; }
.mem-roles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.mem-roles .mem-role { margin-bottom: 0; }
@media (max-width: 600px) { .mem-roles { grid-template-columns: 1fr; } }

/* 表格内输入框保持紧凑，避免行高被全局控件高度撑大 */
.tbl input[type=text], .tbl input[type=number], .tbl select { min-height: 28px; padding: 4px 7px; }

/* 成员选择：桌面固定 4 列，避免 12 人时最后一行只剩 2 个 */
#view .rdw-ts-bind { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1100px) { #view .rdw-ts-bind { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 800px) { #view .rdw-ts-bind { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { #view .rdw-ts-bind { grid-template-columns: 1fr; } }

/* ============================================================
   暗色文字层补全（2026-11-01 审计修复）：
   样式大改后遗留的硬编码中灰在暗色卡上对比度不足（1.4—2.8:1），
   按两档统一提亮：正文级 #c9d7f2 / 辅助级 #9db9d8 / 链接 #8fb8ff
   ============================================================ */
/* ① CEO 看板 KPI 大数字：暗色下禁用浅色渐变填充（text-fill 废色问题） */
html[data-theme="dark"] .bd-n {
  background: none;
  -webkit-text-fill-color: #7fb0ff;
  color: #7fb0ff;
}
/* ② 访客首页整页暗色底（原浅色渐变整页残留） */
html[data-theme="dark"] .home { background: var(--bg); }
html[data-theme="dark"] .home > .hero-brand + .hm-scenes { background: linear-gradient(180deg, rgba(29, 79, 192, .35), rgba(14, 20, 32, 0) 340px); }
/* ③ bd-* 看板暗色文字：#33415e 系（原 1.4—1.6:1）提亮到正文级 */
html[data-theme="dark"] .bd-ring b,
html[data-theme="dark"] .bd-rm-main b,
html[data-theme="dark"] .bd-bar-grp b,
html[data-theme="dark"] .bd-tax-row.bd-hl2 span { color: #c9d7f2; }
/* ④ bd-* 看板暗色文字：中灰系（原 2.2—2.8:1）提亮到辅助级 */
html[data-theme="dark"] .bd-tri-t,
html[data-theme="dark"] .bd-ip-grid span,
html[data-theme="dark"] .bd-bar span,
html[data-theme="dark"] .bd-legend,
html[data-theme="dark"] .bd-team-x,
html[data-theme="dark"] .bd-team-grid span,
html[data-theme="dark"] .bd-rm-main span,
html[data-theme="dark"] .bd-foot,
html[data-theme="dark"] .bd-flow-node b i,
html[data-theme="dark"] .bd-flow-arrow span,
html[data-theme="dark"] .bd-dl em,
html[data-theme="dark"] .bd-team-n i { color: #9db9d8; }
/* ⑤ 资质图谱未定义变量修正 */
.qg-row b { color: var(--ink); }
/* ⑥ 园区驾驶舱 pk-* 暗色（--bg-soft/--bg-2 未定义导致整体浅色） */
html[data-theme="dark"] .pk-layer { background: #171e2e; }
html[data-theme="dark"] .pk-cap { background: #1e2d45; color: #c9d7f2; }
html[data-theme="dark"] .pk-cal-track { background: #12192a; }
html[data-theme="dark"] .pk-layer.open { background: #171e2e; }
html[data-theme="dark"] .pk-report-body { background: #12192a; }
/* ⑦ 知产管理 ipm-* 暗色文字/圆环 */
html[data-theme="dark"] .ipm-kpi .n { color: #8fb8ff; }
html[data-theme="dark"] .ipm .fr-h { color: #c9d7f2; }
html[data-theme="dark"] .ipm-donut-n { fill: #c9d7f2; }
html[data-theme="dark"] .ipm-donut-empty { background: #12192a; }
html[data-theme="dark"] .ipm-lg em { color: #c9d7f2; }
/* ⑧ 首页营销区 hml-*（带 !important 的浅色字需对冲） */
html[data-theme="dark"] .hml-body b { color: #c9d7f2 !important; }
html[data-theme="dark"] .hml-quals { color: #9db9d8 !important; }
html[data-theme="dark"] .hml-num { color: #9db9d8 !important; }
html[data-theme="dark"] .hm-xlink,
html[data-theme="dark"] .hm-cycle { color: #9db9d8; }
/* ⑨ 备查合规汇总条/链接暗色 */
html[data-theme="dark"] .rdw-vgsum { color: #9db9d8; }
html[data-theme="dark"] .rdw-vglink,
html[data-theme="dark"] #drawer .rdw-vglink { color: #8fb8ff; }
