/* ===== GB/T 45577-2025 数据安全风险自评估 · UI 设计系统（稳重政企 · 统一字阶/间距/按钮） ===== */
:root{
  /* 中性色（slate，政企偏冷、稳重） */
  --bg:#eef1f5; --panel:#ffffff; --ink:#111827; --sub:#465063; --faint:#79839a;
  --line:#dde2ea; --line2:#c3cad6;
  /* 品牌（明亮商务蓝，后台管理风） */
  --brand:#3d7eff; --brand-d:#2f6ae0; --brand-soft:#eaf1ff;
  --field-bg:#ffffff; --field-bg2:#f3f5f9;
  --ok:#0f8a4d; --ok-bg:#e7f5ec; --warn:#b7791f; --warn-bg:#fdf3e2; --bad:#d23f3a; --bad-bg:#fbe9e8; --na:#98a2b3; --na-bg:#eef1f5;
  --lv-da:#c0392b; --lv-da-bg:#fbe6e4; --lv-gao:#c66a14; --lv-gao-bg:#fbeede;
  --lv-zhong:#b08307; --lv-zhong-bg:#faf1d8; --lv-di:#2f6ae0; --lv-di-bg:#e8f0fe; --lv-qing:#0f8a4d; --lv-qing-bg:#e5f4eb;

  /* —— 字阶（7 级，全站只用这些）·中度收紧 —— */
  --fs-xs:11px;   /* 辅助/角标 */
  --fs-sm:12px;   /* 次要正文/表格 */
  --fs-base:12.5px; /* 正文基准 */
  --fs-md:13px;   /* 强调正文/卡片标题 */
  --fs-lg:15px;   /* 小节标题 */
  --fs-xl:17px;   /* 页面标题 */
  --fs-2xl:21px;  /* 首页大标题 */

  /* —— 间距（4/8 网格）·收紧 —— */
  --sp-1:4px; --sp-2:8px; --sp-3:11px; --sp-4:14px; --sp-5:16px; --sp-6:18px; --sp-8:24px;

  /* —— 控件统一高度（解决按钮/输入不等高、不对齐） —— */
  --ctrl-h:32px;    /* 标准按钮/输入 */
  --ctrl-h-sm:26px; /* 小按钮 */

  /* 形状与阴影（克制） */
  --r:6px; --r-lg:9px; --r-pill:999px;
  --shadow:0 1px 2px rgba(16,24,40,.05);
  --shadow-md:0 4px 12px rgba(16,24,40,.09);
  --shadow-lg:0 12px 28px rgba(16,24,40,.15);
  --topbar-h:46px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
html{overflow-x:hidden}
body{
  font-family:system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);color:var(--ink);font-size:var(--fs-base);line-height:1.45;
  overflow-wrap:break-word;word-break:break-word;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  -webkit-text-size-adjust:100%;
}
button{font-family:inherit;cursor:pointer}
a{color:var(--brand-d);text-decoration:none}
::selection{background:rgba(47,111,235,.16)}

/* ---- 顶栏（明亮实色蓝，后台管理风）---- */
.topbar{position:sticky;top:0;z-index:30;background:var(--brand);
  border-bottom:1px solid rgba(0,0,0,.06);padding:0 var(--sp-4);height:var(--topbar-h);
  display:flex;align-items:center;gap:var(--sp-3);box-shadow:0 1px 3px rgba(20,40,90,.14)}
.topbar h1{font-size:var(--fs-md);margin:0;font-weight:700;color:#fff;white-space:nowrap;display:flex;align-items:center;letter-spacing:-.01em}
.topbar h1::before{content:"";display:inline-block;width:4px;height:16px;background:rgba(255,255,255,.9);border-radius:2px;margin-right:9px}
.topbar .sub{font-size:var(--fs-xs);color:rgba(255,255,255,.78);white-space:nowrap}
.topbar .curname{color:#fff;font-size:var(--fs-sm);background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);
  padding:4px 10px;border-radius:var(--r-pill);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topbar .spacer{flex:1}
.topbar .prog{font-size:var(--fs-sm);color:#fff;background:rgba(255,255,255,.18);padding:5px 11px;border-radius:var(--r-pill);font-weight:600;white-space:nowrap}
.topbar button,.topbar .btn{display:inline-flex;align-items:center;height:var(--ctrl-h-sm);background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.30);color:#fff;
  padding:0 12px;border-radius:var(--r);font-size:var(--fs-sm);font-weight:600;transition:.15s;line-height:1;white-space:nowrap}
.topbar button:hover,.topbar .btn:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.26)}

/* ---- 布局 ---- */
.layout{display:block;min-height:calc(100vh - var(--topbar-h))}
.layout.single{display:block}
.sidebar{display:none} /* 步骤导航已移到顶栏「步骤」下拉，左侧竖栏取消 */
.main{min-width:0;padding:var(--sp-5) var(--sp-6) 64px;max-width:1320px;margin:0 auto;width:100%}

/* 顶栏「步骤」下拉：测评名后的一个下拉按钮，点击弹出 6 步菜单 */
.stepdd{position:relative;display:inline-flex}
.topbar .dd-btn{display:inline-flex;align-items:center;height:var(--ctrl-h-sm);background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.45);color:#fff;
  padding:0 11px;border-radius:var(--r);font-size:var(--fs-sm);font-weight:700;white-space:nowrap;line-height:1}
.topbar .dd-btn:hover{background:rgba(255,255,255,.3)}
.topbar .dd-btn .caret{margin-left:5px;font-size:10px;opacity:.85}
.stepdd .dd-menu{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:40;min-width:240px;background:#fff;
  border:1px solid var(--line2);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:5px}
.stepdd.open .dd-menu{display:block}
.dd-hd{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-xs);color:var(--faint);font-weight:700;letter-spacing:.06em;padding:6px 9px 7px;border-bottom:1px solid var(--line)}
.dd-hd span{font-weight:600;letter-spacing:0}
.dditem{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:6px;color:var(--ink)}
.dditem:hover{background:#eef2f8}
.dditem.on{background:var(--brand-soft)}
.dditem .n{flex:0 0 20px;height:20px;border-radius:50%;background:#e7eaf0;color:var(--sub);font-size:var(--fs-xs);font-weight:700;display:flex;align-items:center;justify-content:center}
.dditem.on .n{background:var(--brand);color:#fff}
.dditem.done .n{background:var(--ok);color:#fff}
.dditem .t{font-size:var(--fs-md);font-weight:600}
.dditem.on .t{color:var(--brand-d);font-weight:700}

/* ---- 步骤导航 ---- */
.nav-eyebrow{font-size:var(--fs-xs);font-weight:700;color:var(--faint);letter-spacing:.11em;text-transform:uppercase;padding:2px 10px var(--sp-3)}
.steps{position:relative}
.step{position:relative;display:flex;gap:10px;align-items:center;padding:var(--sp-2) 10px;border-radius:7px;margin-bottom:2px;cursor:pointer;transition:.12s;color:inherit}
.step:hover{background:#eef2f8}
.step.active{background:var(--brand)}
.step:not(:last-child)::before{content:"";position:absolute;left:22px;top:34px;height:calc(100% - 14px);width:2px;background:var(--line2)}
.step.done:not(:last-child)::before{background:#a6dcc0}
.step .num{position:relative;z-index:1;flex:0 0 24px;height:24px;border-radius:50%;background:#e7eaf0;color:var(--sub);
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--fs-sm);border:2px solid var(--panel);transition:.12s}
.step.active .num{background:#fff;color:var(--brand);box-shadow:none}
.step.done .num{background:var(--ok);color:#fff}
.step .stxt{min-width:0}
.step .t{font-weight:600;font-size:var(--fs-base);color:var(--ink);line-height:1.3}
.step.active .t{color:#fff}
.step .d{font-size:var(--fs-xs);color:var(--faint);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.step.active .d{color:rgba(255,255,255,.85)}
.side-meta{margin:var(--sp-4) var(--sp-1) var(--sp-2);padding:var(--sp-3);background:#f2f5fa;border:1px solid var(--line);border-radius:var(--r)}
.sm-row{display:flex;justify-content:space-between;align-items:center;font-size:var(--fs-sm);color:var(--sub);padding:3px 0}
.sm-row b{color:var(--brand-d);font-size:var(--fs-base)}
.side-note{font-size:var(--fs-xs);color:var(--faint);padding:0 var(--sp-3);line-height:1.6;margin-top:var(--sp-2)}

/* ---- 标题 / 卡片 ---- */
.phase-head{margin:0 0 var(--sp-4);display:flex;align-items:center;gap:8px}
.phase-head .k{background:var(--brand-soft);color:var(--brand-d);border-radius:5px;padding:3px 9px;font-size:var(--fs-xs);font-weight:700}
.phase-head h2{font-size:var(--fs-xl);margin:0;font-weight:700;letter-spacing:-.01em}
.phase-sub{color:var(--sub);margin:0 0 var(--sp-4);font-size:var(--fs-base);line-height:1.6;max-width:900px}
.phase-sub b{color:var(--ink)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-5);margin-bottom:var(--sp-3);box-shadow:var(--shadow)}
.card h3{margin:0 0 var(--sp-3);padding-bottom:var(--sp-2);border-bottom:1px solid var(--line);font-size:var(--fs-md);display:flex;align-items:center;gap:var(--sp-2);font-weight:700}
.card h3 .badge{font-size:var(--fs-xs);font-weight:600;color:var(--brand-d);background:var(--brand-soft);padding:2px 8px;border-radius:5px}
/* 卡片标题右侧的次要说明（替代内联 style="font-weight:400;margin-left:auto"） */
.card h3 .h3-note{font-weight:400;margin-left:auto;color:var(--sub);font-size:var(--fs-sm)}
/* 卡片说明段：紧跟标题、统一上间距（替代内联 style="margin-top:-4px"） */
.card .card-lead{margin:0 0 var(--sp-3);color:var(--sub);font-size:var(--fs-sm);line-height:1.6}
.muted{color:var(--sub)}

/* ---- 表单 ---- */
label.f{display:block;font-size:var(--fs-sm);color:var(--sub);margin:0 0 var(--sp-1);font-weight:600}
input[type=text],input[type=date],textarea,select{
  width:100%;height:var(--ctrl-h);padding:0 11px;border:1px solid var(--line2);border-radius:var(--r);font-size:var(--fs-base);
  font-family:inherit;background:var(--field-bg2);color:var(--ink);transition:.12s;-webkit-appearance:none;appearance:none}
textarea{height:auto;padding:7px 11px}
select{background:var(--field-bg2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M3 4.5l3 3 3-3'/%3E%3C/svg%3E") no-repeat right 10px center;padding-right:28px}
input::placeholder,textarea::placeholder{color:var(--faint)}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(61,126,255,.18);background:#fff}
textarea{resize:vertical;min-height:40px;line-height:1.45}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-3) var(--sp-4)}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3) var(--sp-4)}
.field{margin-bottom:var(--sp-3)}

/* ---- 表格 ---- */
.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs-sm);border:1px solid var(--line2);border-radius:var(--r);overflow:hidden}
.tbl th,.tbl td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:middle}
.tbl tr td:last-child,.tbl tr th:last-child{border-right:none}
.tbl tr:last-child td{border-bottom:none}
.tbl th{background:#f5f7fa;font-weight:600;color:var(--sub);white-space:nowrap;font-size:var(--fs-xs)}
.tbl tbody tr:hover td,.tbl tr:hover td{background:#f6f8fc}
.tbl td input,.tbl td textarea,.tbl td select{height:30px;border:1px solid var(--line2);background:#fff;border-radius:5px;padding:0 8px;font-size:var(--fs-sm)}
.tbl td textarea{height:auto;padding:6px 8px}
.tbl td input:focus,.tbl td textarea:focus,.tbl td select:focus{background:#fff;border-color:var(--brand)}
.tbl .rownum{color:var(--faint);text-align:center;width:40px;background:#f6f8fb}
.tbl .del{color:var(--bad);cursor:pointer;font-size:var(--fs-lg);text-align:center;width:36px;user-select:none}
.tbl .del:hover{background:#fdecec}
.kvtbl td:first-child{background:#f4f6fa;font-weight:600;color:var(--sub);width:36%;white-space:nowrap}
.btn-add{display:inline-flex;align-items:center;height:var(--ctrl-h);margin-top:10px;background:#fff;color:var(--brand-d);border:1px dashed var(--line2);padding:0 14px;border-radius:var(--r);font-size:var(--fs-base);font-weight:600;transition:.12s}
.btn-add:hover{border-color:var(--brand);background:var(--brand-soft)}
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;border-radius:var(--r)}
.tbl-wrap .tbl{border-radius:0}
/* ②调研：填表说明 + 键值表（数据安全防护情况） */
.tbl-help{margin:2px 0 12px;font-size:var(--fs-sm)}
.tbl-help summary{cursor:pointer;color:var(--brand-d);font-weight:600;user-select:none}
.tbl-help ul{margin:8px 0 0;padding-left:20px;color:var(--sub);line-height:1.7}
.tbl-help li{margin:2px 0}
.kv-survey{display:flex;flex-direction:column;gap:12px}
.kv-row{display:flex;flex-direction:column;gap:6px}
.kv-row .kv-q{font-size:var(--fs-base);color:var(--ink);font-weight:600;line-height:1.55}
.kv-row textarea{min-height:64px;width:100%;resize:vertical}

/* ---- 按钮（统一两档等高，解决同排参差） ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:var(--ctrl-h);background:var(--brand);color:#fff;border:1px solid var(--brand);
  padding:0 16px;border-radius:var(--r);font-size:var(--fs-base);font-weight:600;transition:.12s;line-height:1;white-space:nowrap;vertical-align:middle}
.btn:hover{background:var(--brand-d);border-color:var(--brand-d)}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(61,126,255,.35)}
.btn.ghost{background:#fff;color:var(--brand-d);border-color:var(--line2)}
.btn.ghost:hover{border-color:var(--brand);background:var(--brand-soft);color:var(--brand-d)}
.btn.sm{height:var(--ctrl-h-sm);padding:0 12px;font-size:var(--fs-base);border-radius:var(--r)}
.btn.lg{height:40px;font-size:var(--fs-md);padding:0 22px;border-radius:var(--r)}
.btn[disabled]{opacity:.55;cursor:not-allowed}
.navbtns{display:flex;justify-content:space-between;margin-top:var(--sp-2);gap:var(--sp-3)}
.navbtns .btn{min-width:120px}

/* ---- 适用条件 ---- */
.cond-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cond{border:1px solid var(--line2);border-radius:var(--r);padding:11px 13px;display:flex;gap:10px;align-items:flex-start;cursor:pointer;transition:.12s}
.cond:hover{border-color:#bcd0fb;background:#f6f9ff}
.cond.on{border-color:var(--brand);background:var(--brand-soft)}
.cond input{margin-top:2px;width:16px;height:16px;flex:0 0 auto;accent-color:var(--brand)}
.cond .cn{font-weight:600;font-size:var(--fs-base)}
.cond .cq{font-size:var(--fs-xs);color:var(--sub);margin-top:2px;line-height:1.5}
/* 数据对外流转三场景（提供/委托/共同）——横排一行、黄框圈起来提醒重点 */
.cond-hi{border:1.5px solid var(--warn);background:var(--warn-bg);border-radius:var(--r-lg);padding:12px 14px;margin-bottom:14px}
.cond-hi-hd{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;font-weight:700;color:var(--warn);font-size:var(--fs-sm);margin-bottom:10px}
.cond-hi-hd span{font-weight:600;color:#a9760c;font-size:var(--fs-xs)}
.cond-trio{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.cond-trio .cond{background:#fff;border-color:#e7cd95}
.cond-trio .cond:hover{border-color:#bcd0fb;background:#f6f9ff}
.cond-trio .cond.on{border-color:var(--brand);background:var(--brand-soft)}

/* ---- checks ---- */
.checks{display:flex;flex-wrap:wrap;gap:7px}
.ck{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line2);border-radius:var(--r-pill);padding:6px 12px;font-size:var(--fs-sm);cursor:pointer;transition:.12s}
.ck:hover{border-color:#bcd0fb}
.ck.on{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-d);font-weight:600}
.ck input{accent-color:var(--brand)}

/* ---- 统计卡 ---- */
.stat-row{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:var(--sp-3)}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:9px 10px;text-align:center;box-shadow:var(--shadow)}
.stat .v{font-size:18px;font-weight:800;line-height:1;letter-spacing:-.02em}
.stat .l{font-size:var(--fs-xs);color:var(--sub);margin-top:4px}
.chip{display:inline-block;padding:2px 9px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:700}
.chip.lv-重大{background:#fbe9e8;color:var(--lv-da)} .chip.lv-高{background:#fdefe0;color:var(--lv-gao)}
.chip.lv-中{background:#fbf3df;color:#a9760c} .chip.lv-低{background:#e9f0fe;color:var(--lv-di)} .chip.lv-轻微{background:#e6f5ec;color:var(--lv-qing)}

/* ===== 模式切换（紧凑分段控件） ===== */
.mode-toggle{display:inline-flex;gap:2px;margin-bottom:var(--sp-4);background:#e9edf3;border:1px solid var(--line);border-radius:8px;padding:3px}
.mode-toggle button{flex:0 0 auto;height:30px;padding:0 15px;border-radius:6px;border:none;background:transparent;font-size:var(--fs-sm);font-weight:600;color:var(--sub);transition:.12s;line-height:1}
.mode-toggle button:hover{color:var(--ink);background:rgba(255,255,255,.55)}
.mode-toggle button.on{background:#fff;color:var(--brand-d);box-shadow:var(--shadow)}

/* ===== 对话 ===== */
.prog-line{display:flex;align-items:center;gap:10px;margin-bottom:var(--sp-3);font-size:var(--fs-sm);color:var(--sub);flex-wrap:wrap}
.prog-line .bar{flex:1;height:6px;background:#e3e7ee;border-radius:var(--r-pill);overflow:hidden;min-width:120px;max-width:320px}
.prog-line .fill{height:100%;background:var(--brand);border-radius:var(--r-pill);transition:width .3s}
.transcript{background:#f2f5f9;border:1px solid var(--line2);border-radius:var(--r-lg);padding:var(--sp-4);max-height:min(560px,64vh);overflow:auto}
.sec-divider{font-size:var(--fs-xs);color:var(--sub);background:#e4e9f1;border:1px solid #d3dae5;border-radius:6px;padding:5px 11px;margin:var(--sp-3) 0 7px;font-weight:500}
.sec-divider b{color:var(--brand-d)}
.bubble{max-width:82%;padding:7px 12px;border-radius:11px;margin:6px 0;font-size:var(--fs-base);line-height:1.5}
.bubble.assessor{background:#fff;color:var(--ink);border:1px solid #dce2ec;border-top-left-radius:4px;margin-right:auto;box-shadow:var(--shadow)}
.bubble.assessor b{color:var(--brand-d);font-weight:700}
.bubble.user{background:var(--brand);color:#fff;border-top-right-radius:4px;margin-left:auto;white-space:pre-wrap}
.answer-box{background:#fff;border:1px solid var(--line2);border-top:3px solid var(--brand);border-radius:var(--r-lg);padding:var(--sp-3);margin-top:var(--sp-3);box-shadow:var(--shadow-md)}
.answer-box textarea{min-height:60px}
.ab-btns{display:flex;gap:var(--sp-2);margin-top:10px;flex-wrap:wrap}
.ab-btns label.btn{display:inline-flex;align-items:center;gap:5px}
.done{text-align:center;color:var(--ok);font-weight:700;padding:var(--sp-6);font-size:var(--fs-md)}

/* ---- AI 判定卡 ---- */
.judgment{background:#fff;border:1px solid var(--line2);border-left:3px solid var(--brand);border-radius:var(--r-lg);padding:var(--sp-3) var(--sp-4);margin:8px 0 4px}
.judgment .jhd{font-weight:700;color:var(--brand-d);font-size:var(--fs-base);margin-bottom:8px}
.jbasis{background:var(--brand-soft);border:1px solid var(--line);border-radius:8px;padding:7px 11px;margin-bottom:9px}
.jbasis .jb-hd{font-weight:700;color:var(--brand-d);font-size:var(--fs-sm);margin-bottom:4px}
.jbasis .jb-src{font-weight:400;color:var(--sub);font-size:var(--fs-xs);margin-left:6px}
.jbasis .jb-reason{font-size:var(--fs-sm);color:var(--ink);line-height:1.65;margin-top:5px}
.jbasis .jb-hits{font-size:var(--fs-xs);color:var(--brand-d);margin-top:6px;line-height:1.5}
.jbasis .muted{color:var(--faint)}
.jrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:9px;margin-bottom:8px}
.jrow2{margin-bottom:8px}
.jsplit2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.jsplit2 .jrow2{margin-bottom:8px}
@media(max-width:700px){.jsplit2{grid-template-columns:1fr}}
.jcol label.f,.jrow2 label.f{margin-bottom:3px}
.hint{font-size:var(--fs-sm);color:var(--sub);background:#f2f5fa;border:1px solid var(--line);border-radius:6px;padding:8px 11px;margin-top:8px;line-height:1.6}
.ev-list{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-bottom:8px}
.ev-chip{display:inline-flex;align-items:center;gap:6px;background:#eaf1fd;border:1px solid #d3e0fa;border-radius:var(--r-pill);padding:4px 11px;font-size:var(--fs-xs);color:var(--brand-d)}
.ev-chip .kb{color:var(--faint);font-size:10px}
.ev-chip .x{cursor:pointer;color:var(--bad);font-weight:700}
/* 附件下载：展示处的文件名 → 可点预览 + ⤓ 下载 */
.mat-dl{color:var(--brand-d);text-decoration:underline;text-decoration-style:dotted;cursor:pointer}
.mat-dl:hover{text-decoration-style:solid}
.mat-dl-ic{margin-left:4px;color:var(--brand-d);text-decoration:none;font-weight:700;cursor:pointer}
.mat-dl-ic:hover{color:var(--bad)}
.bubble.user .mat-dl,.bubble.user .mat-dl-ic{color:inherit}
.ev-add{display:inline-flex}

/* ---- 风险徽章 ---- */
.risk-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;border-radius:6px;font-weight:700;font-size:var(--fs-sm)}
.risk-badge.lv-重大{background:#fbe9e8;color:var(--lv-da)} .risk-badge.lv-高{background:#fdefe0;color:var(--lv-gao)}
.risk-badge.lv-中{background:#fbf3df;color:#a9760c} .risk-badge.lv-低{background:#e9f0fe;color:var(--lv-di)}
.risk-badge.lv-轻微{background:#e6f5ec;color:var(--lv-qing)} .risk-badge.lv-na{background:#eaecf0;color:var(--na)}

/* ===== 按点对话（双栏） ===== */
.bypoint{display:grid;grid-template-columns:284px 1fr;gap:16px;align-items:start}
.tree{background:#fff;border:1px solid var(--line2);border-radius:var(--r-lg);padding:9px;max-height:min(640px,72vh);overflow:auto;position:sticky;top:calc(var(--topbar-h) + 14px);box-shadow:var(--shadow)}
.tree-dom{font-weight:700;color:var(--ink);font-size:var(--fs-base);padding:8px 7px 3px;margin-top:3px}
.dm-prob{color:var(--bad);font-weight:700;font-size:var(--fs-xs)}
.tree-legend{position:sticky;top:0;z-index:2;display:flex;flex-wrap:wrap;gap:5px 11px;padding:8px 9px;margin:-9px -9px 6px;background:#fff;border-bottom:1px solid var(--line2);font-size:var(--fs-xs);color:var(--sub)}
.tree-legend span{display:inline-flex;align-items:center;gap:4px}
.tree-sec{font-size:var(--fs-xs);color:var(--faint);padding:4px 7px;font-weight:600}
.tree-item{display:flex;align-items:center;gap:7px;padding:7px 8px;border-radius:6px;font-size:var(--fs-sm);cursor:pointer;transition:.1s}
.tree-item:hover{background:#eef3fb}
.tree-item.sel{background:var(--brand-soft);color:var(--brand-d);font-weight:600}
.ti-label{flex:1;min-width:0}
.st-tag{flex:0 0 auto;font-size:10px;font-weight:700;padding:1px 6px;border-radius:10px;line-height:1.6;white-space:nowrap}
.st-tag.t-ok{background:#e6f5ec;color:var(--ok)}
.st-tag.t-part{background:#fbf3df;color:#a9760c}
.st-tag.t-bad{background:#fbe9e8;color:var(--bad)}
.st-tag.t-na{background:#eef1f6;color:#98a2b3}
.st-tag.t-todo{background:#eef1f6;color:#8a93a3}
/* ⑤ 报告页·符合性总览 */
.cmp-stat{display:flex;flex-wrap:wrap;gap:9px}
.cmp-cell{display:flex;align-items:center;gap:8px;background:var(--field-bg2);border:1px solid var(--line2);border-radius:8px;padding:8px 13px}
.cmp-cell b{font-size:var(--fs-lg);color:var(--ink);line-height:1}
.cmp-list{margin-top:10px}
.cmp-list summary{cursor:pointer;font-size:var(--fs-sm);color:var(--brand-d);font-weight:600;padding:6px 2px}
.cmp-row{display:flex;align-items:center;gap:7px;padding:5px 6px;border-radius:6px;font-size:var(--fs-sm)}
.cmp-row:hover{background:#f4f7fc}
.dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.dot-todo{background:#fff;box-shadow:inset 0 0 0 1.5px #c0c6d2}
.dot-ok{background:var(--ok)}
.dot-part{background:var(--warn)}
.dot-bad{background:var(--bad)}
.dot-na{background:#cbd2dd}
.bp-panel{min-width:0}
.bp-hd{background:#fff;border:1px solid var(--line2);border-radius:var(--r-lg) var(--r-lg) 0 0;padding:14px 16px;box-shadow:var(--shadow)}
.bp-code{font-weight:700;font-size:var(--fs-md);color:var(--ink)}
.bp-meta{font-size:var(--fs-xs);color:var(--sub);margin-top:4px}
.bp-trans{border-radius:0 0 var(--r-lg) var(--r-lg);border-top:none;max-height:min(440px,56vh)}

/* ---- 报告 ---- */
.report{background:#fff;border:1px solid var(--line2);border-radius:var(--r-lg);padding:40px 48px;line-height:1.9;box-shadow:var(--shadow)}
.report h1{text-align:center;font-size:var(--fs-2xl);margin:0 0 6px}
.report .rcover{text-align:center;color:var(--sub);margin-bottom:24px;font-size:var(--fs-sm)}
.report h2{font-size:var(--fs-lg);border-bottom:2px solid var(--brand);padding-bottom:6px;margin:24px 0 11px}
.report h3{font-size:var(--fs-md);margin:15px 0 6px;color:var(--brand-d)}
.report p{margin:6px 0;text-indent:2em}
.report .nofill{color:#c4cad4;font-style:italic}
.report table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);margin:10px 0}
.report table th,.report table td{border:1px solid #d3d9e2;padding:6px 9px}
.report table th{background:#f3f5f8}

.empty{color:var(--na);text-align:center;padding:32px 20px;font-size:var(--fs-base)}
.callout{background:#f2f5fa;border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:6px;padding:11px 14px;font-size:var(--fs-sm);color:var(--sub);margin-bottom:14px;line-height:1.65}
.callout b{color:var(--ink)}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 20px;border-radius:var(--r-pill);font-size:var(--fs-sm);z-index:100;opacity:0;transition:.3s;pointer-events:none;box-shadow:var(--shadow-lg)}
.toast.show{opacity:1}

/* 步骤条已改为顶栏下拉，手机端旧步骤条不再使用 */
.mobnav{display:none !important}

/* ============ 响应式 ============ */
@media (max-width:920px){
  .sidebar{display:none}
  .main{padding:18px 16px 72px}
  .grid3{grid-template-columns:1fr 1fr}
  .stat-row{grid-template-columns:repeat(3,1fr);gap:9px}
  .bypoint{grid-template-columns:1fr}
  .tree{position:static;max-height:260px}
}

@media (max-width:640px){
  :root{--topbar-h:48px}
  .topbar{padding:0 12px;gap:8px}
  .topbar h1{font-size:var(--fs-md)}
  .topbar h1::before{height:15px;margin-right:7px}
  .topbar .sub,.topbar .curname{display:none}
  .topbar .prog{font-size:var(--fs-xs);padding:3px 9px}
  .topbar .tb-txt{display:none}                       /* 按钮只留图标，防止顶栏溢出、页面被拖动/缩小 */
  .topbar h1 span.h1txt{display:none}                 /* 顶栏标题收成竖条，把宽度让给操作按钮 */
  .topbar h1::before{margin-right:0}
  .topbar button,.topbar .btn{padding:0 9px}
  .main{padding:14px 12px 68px}
  .phase-head h2{font-size:var(--fs-lg)}
  .phase-sub{font-size:var(--fs-sm);margin-bottom:14px}
  .card{padding:13px 13px;border-radius:8px}
  .card h3{font-size:var(--fs-md)}
  .grid2,.grid3,.cond-grid,.cond-trio,.jrow{grid-template-columns:1fr}
  .stat-row{grid-template-columns:repeat(2,1fr);gap:8px}
  .stat{padding:12px 9px}
  .stat .v{font-size:20px}
  .mode-toggle{display:flex}
  .mode-toggle button{flex:1}
  .bubble{max-width:90%;font-size:var(--fs-base)}
  .transcript{padding:12px 12px;max-height:60vh}
  .answer-box{padding:12px}
  .ab-btns{flex-direction:column}
  .ab-btns .btn,.ab-btns label.btn{width:100%}
  .navbtns{gap:10px}
  .navbtns .btn{flex:1;min-width:0}
  .report{padding:20px 15px}
  .report h1{font-size:var(--fs-xl)}
  .report p{text-indent:1.6em}
  /* 移动端输入放大到 16px，避免 iOS 聚焦自动缩放；触摸目标增高 */
  input[type=text],input[type=date],textarea,select{font-size:16px;height:42px}
  textarea{height:auto}
  .tbl td input,.tbl td textarea,.tbl td select{font-size:15px}
}

@media (max-width:400px){
  .stat-row{grid-template-columns:1fr 1fr}
  .topbar h1 span.h1txt{display:none}
  .topbar h1::before{margin-right:0}
  .topbar #btnExport{display:none}
}

@media print{
  .topbar,.sidebar,.mobnav,.dom-tabs,.navbtns,.no-print{display:none!important}
  .layout{display:block}.main{max-width:none;padding:0}
  .report{border:none;box-shadow:none;padding:0}
  body{background:#fff}
}
