/* 企业内控自查系统 —— 视觉系统 v2
   定位：给企业用户的专业 SaaS。深蓝信任色系 · 克制的层级 · 柔和阴影 · 留白充足 */
:root{
  --bg:#F5F6FA; --card:#FFFFFF; --ink:#1B2233; --sub:#68718A; --line:#E7EAF1;
  --pri:#3056D3; --pri-dark:#2445B8; --pri-soft:#EDF1FE; --pri-line:#C9D4F6;
  --ok:#12915F; --ok-soft:#E7F6EF; --ok-line:#BFE5D2;
  --warn:#B3730C; --warn-soft:#FCF3E1; --warn-line:#F0DDB0;
  --bad:#C93B31; --bad-soft:#FBEDEB; --bad-line:#F0C7C1;
  --blue:#2F6FBF; --blue-soft:#EAF2FC;
  --r:14px;
  --shadow-sm:0 1px 2px rgba(23,32,64,.05);
  --shadow:0 1px 2px rgba(23,32,64,.04),0 8px 24px rgba(23,32,64,.06);
  --shadow-lg:0 4px 12px rgba(23,32,64,.08),0 20px 48px rgba(23,32,64,.10);
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:'PingFang SC','Microsoft YaHei',-apple-system,'Segoe UI',sans-serif;
  font-size:14px;line-height:1.7;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}

/* ───────── 顶栏：深蓝渐变 + 光晕，玻璃化数据徽章 ───────── */
.top{position:relative;color:#fff;overflow:hidden;
  background:linear-gradient(118deg,#141E4D 0%,#23368C 48%,#3056D3 100%);
  padding:30px 0 64px;}
.top::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(560px 240px at 12% -10%,rgba(120,150,255,.28),transparent 62%),
    radial-gradient(680px 280px at 92% 118%,rgba(90,200,190,.16),transparent 60%);}
.top-inner{position:relative;max-width:1180px;margin:0 auto;padding:0 28px;
  display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;}
.top h1{margin:0 0 10px;font-size:24px;letter-spacing:.5px;font-weight:700;
  display:flex;align-items:center;gap:12px;}
.top .brand{width:38px;height:38px;border-radius:10px;flex-shrink:0;
  background:linear-gradient(135deg,#5B7CFA,#3E63E0);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px rgba(15,26,80,.45),inset 0 1px 0 rgba(255,255,255,.35);}
.top .brand svg{width:22px;height:22px;}
.top p{margin:0;font-size:13px;color:#C4CDF3;max-width:660px;line-height:1.9;}
.top p b{color:#fff;font-weight:600;}
.top-meta{display:grid;grid-template-columns:repeat(2,minmax(128px,auto));gap:8px;}
.top-meta span{font-size:11.5px;color:#D6DDF8;background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.16);border-radius:9px;padding:6px 12px;
  backdrop-filter:blur(4px);white-space:nowrap;}
.top-meta b{color:#fff;font-weight:700;font-variant-numeric:tabular-nums;margin-left:2px;}

/* ───────── 步骤条：悬浮卡 + 连接感 ───────── */
.stepper{max-width:1080px;margin:-40px auto 0;padding:0 28px;display:flex;gap:8px;
  position:relative;z-index:2;}
.stp{flex:1;display:flex;align-items:center;gap:10px;background:var(--card);
  border:1px solid var(--line);border-radius:13px;padding:12px 14px;cursor:pointer;
  font-family:inherit;text-align:left;color:var(--sub);
  box-shadow:var(--shadow);transition:box-shadow .18s,transform .18s,border-color .18s;}
.stp:hover:not(:disabled){transform:translateY(-2px);box-shadow:var(--shadow-lg);}
.stp i{font-style:normal;width:26px;height:26px;border-radius:8px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700;
  background:#EEF0F7;color:#98A0BA;transition:.18s;}
.stp span{display:block;font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;}
.stp em{display:block;font-style:normal;font-size:10.5px;color:var(--sub);white-space:nowrap;}
.stp:disabled{opacity:.5;cursor:not-allowed;}
.stp.cur{border-color:var(--pri);box-shadow:0 0 0 3px var(--pri-soft),var(--shadow-lg);}
.stp.cur i{background:linear-gradient(135deg,#4A6BE8,#3056D3);color:#fff;}
.stp.done i{background:var(--ok);color:#fff;}

/* ───────── 主区与卡片 ───────── */
.main{max-width:1180px;margin:22px auto 90px;padding:0 28px;}
.panel{display:none;}
.panel.on{display:block;animation:fadein .28s ease;}
@keyframes fadein{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;
  box-shadow:var(--shadow);margin-bottom:18px;overflow:hidden;}
.card-hd{display:flex;gap:14px;align-items:flex-start;padding:22px 28px 0;}
.card-no{width:32px;height:32px;border-radius:10px;color:#fff;flex-shrink:0;
  background:linear-gradient(135deg,#4A6BE8,#3056D3);
  font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;
  box-shadow:0 3px 8px rgba(48,86,211,.28);}
.card-hd h2{margin:0;font-size:17px;color:var(--ink);font-weight:700;letter-spacing:.2px;}
.card-hd h2 small{font-weight:400;font-size:12px;color:var(--sub);margin-left:10px;}
.card-sub{margin:4px 0 0;font-size:12.5px;color:var(--sub);}
.card-bd{padding:18px 28px 26px;}

/* ───────── 表单 ───────── */
.frm-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.f{display:block;font-size:12.5px;color:#3D4560;}
.f>span{display:block;margin-bottom:6px;font-weight:600;}
.f em{font-style:normal;font-weight:400;}
.f input,.f select,.adj-grid input,.adj-grid select,.perm-row input{
  width:100%;padding:10px 13px;border:1px solid #D9DEEC;border-radius:10px;
  font-size:13.5px;font-family:inherit;background:#FBFCFE;color:var(--ink);transition:.15s;}
.f input:hover,.f select:hover{border-color:#B9C3DE;}
.f input:focus,.f select:focus,.adj-grid input:focus,.adj-grid select:focus,
.perm-row input:focus{outline:none;border-color:var(--pri);background:#fff;
  box-shadow:0 0 0 3.5px rgba(48,86,211,.12);}
.span2{grid-column:span 2;}
.ind-row{display:flex;gap:10px;flex-wrap:wrap;}
.ind-row input{max-width:200px;}
.muted{color:var(--sub);}
.tiny{font-size:11.5px;margin-top:6px;}
.mono{font-family:Consolas,Menlo,monospace;font-size:11px;color:var(--pri);}
.hidden{display:none !important;}

.fold{border:1px dashed #C9D2EC;border-radius:12px;padding:12px 16px;margin:16px 0 4px;
  background:#FAFBFE;transition:border-color .15s;}
.fold:hover{border-color:var(--pri-line);}
.fold summary{cursor:pointer;font-size:12.5px;font-weight:600;color:var(--pri);
  list-style:none;display:flex;align-items:center;gap:6px;}
.fold summary::-webkit-details-marker{display:none;}
.fold summary::before{content:'▸';font-size:11px;color:#8D9AC4;transition:.15s;}
.fold[open] summary::before{transform:rotate(90deg);}
.fold summary em{font-style:normal;font-weight:400;color:var(--sub);margin-left:6px;font-size:11.5px;}
.fold[open] summary{margin-bottom:12px;}

.act-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px;}
.main-act{border-top:1px solid var(--line);padding-top:18px;}
.hint{font-size:12px;color:var(--sub);}

/* 按钮 */
button{font-family:inherit;cursor:pointer;}
.btn{border:0;border-radius:11px;padding:11px 24px;font-size:13.5px;font-weight:600;
  transition:transform .15s,box-shadow .15s,background .15s;}
.btn.pri{background:linear-gradient(135deg,#4A6BE8,#3056D3);color:#fff;
  box-shadow:0 4px 12px rgba(48,86,211,.32);}
.btn.pri:hover{box-shadow:0 6px 18px rgba(48,86,211,.4);transform:translateY(-1px);}
.btn.ok{background:linear-gradient(135deg,#17A067,#12915F);color:#fff;
  box-shadow:0 4px 12px rgba(18,145,95,.3);}
.btn.ok:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(18,145,95,.36);}
.btn.ghost{background:#fff;color:var(--pri);border:1.5px solid #C9D4F6;}
.btn.ghost:hover{background:var(--pri-soft);border-color:#A9BBEF;}
.btn.sm{padding:6px 14px;font-size:12.5px;border-radius:8px;}
.btn.big{padding:13px 36px;font-size:15px;}
.btn:disabled{background:#D4D8E5;color:#fff;box-shadow:none;cursor:not-allowed;transform:none;}

/* ───────── 判档结果 ───────── */
.tier-hero{display:flex;gap:26px;align-items:center;
  background:linear-gradient(120deg,#F7F8FE 0%,#FDFDFF 100%);
  border:1px solid var(--pri-line);border-radius:14px;padding:22px 26px;margin-top:18px;}
.tier-badge{font-size:34px;font-weight:800;color:var(--pri-dark);white-space:nowrap;
  padding:12px 26px;border-radius:16px;background:#fff;border:2px solid var(--pri);
  box-shadow:0 6px 18px rgba(48,86,211,.16);font-variant-numeric:tabular-nums;}
.tier-tags{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:9px;}
.tag{font-size:11.5px;border-radius:16px;padding:3px 12px;background:#fff;
  border:1px solid var(--pri-line);color:var(--pri-dark);}
.tag.ok{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok);}
.trace{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 14px;
  font-size:12px;color:#535C78;line-height:1.95;}
.trace .s::before{content:'› ';color:#9AA6CC;}
.tier-base{margin-top:14px;}
.tier-base-line{background:var(--pri-soft);border:1px solid var(--pri-line);border-radius:11px;
  padding:11px 16px;font-size:12.5px;color:#2B3E85;}
.rule-pick{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px;}
.stat{background:#FAFBFE;border:1px solid var(--line);border-radius:11px;padding:12px;
  text-align:center;font-variant-numeric:tabular-nums;}
.stat b{display:block;font-size:20px;color:var(--pri-dark);font-weight:700;}
.stat span{font-size:11px;color:var(--sub);}

/* ───────── 人员表 ───────── */
.tbl-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff;
  box-shadow:var(--shadow-sm);}
.roster-wrap{max-height:420px;}
table.tbl{width:100%;border-collapse:collapse;font-size:12.5px;}
.tbl th{background:#F6F7FC;color:#4A5470;font-weight:600;text-align:left;
  padding:9px 12px;border-bottom:1px solid var(--line);font-size:11.5px;
  position:sticky;top:0;z-index:2;white-space:nowrap;}
.tbl td{padding:8px 12px;border-bottom:1px solid #F1F3F9;vertical-align:middle;}
.tbl tbody tr:hover td{background:#FAFBFE;}
.req{color:var(--bad);font-style:normal;}
#rosterBody td{padding:5px 7px;}
#rosterBody input,#rosterBody select{width:100%;padding:7px 10px;border:1px solid #DEE3F0;
  border-radius:8px;font-size:12.5px;font-family:inherit;background:#FBFCFE;transition:.15s;}
#rosterBody input:focus,#rosterBody select:focus{outline:none;border-color:var(--pri);
  box-shadow:0 0 0 2.5px rgba(48,86,211,.12);background:#fff;}
.cell-hint{margin-top:2px;font-size:10.5px;line-height:1.4;min-height:13px;}
tr.sod-hit td{background:var(--bad-soft);}
.roster-check .bdg{margin-right:6px;}
.up-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:10px;}

/* 徽标 */
.bdg{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:12px;
  font-size:11px;font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums;}
.b-blue{background:var(--blue-soft);color:var(--blue);}
.b-ok{background:var(--ok-soft);color:var(--ok);}
.b-warn{background:var(--warn-soft);color:var(--warn);}
.b-bad{background:var(--bad-soft);color:var(--bad);}
.b-gray{background:#F0F2F7;color:#7C85A0;}

/* ───────── 矩阵 ───────── */
.stat-row{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;margin-bottom:14px;}
.stat.badv b{color:var(--bad);} .stat.warnv b{color:var(--warn);}
.legend{display:flex;gap:15px;flex-wrap:wrap;font-size:11.5px;color:var(--sub);margin-bottom:12px;}
.legend i{font-style:normal;display:inline-flex;align-items:center;gap:5px;}
.legend .sw{width:13px;height:13px;border-radius:4px;display:inline-block;
  box-shadow:inset 0 0 0 1px rgba(23,32,64,.08);}
.mx-wrap{max-height:540px;overflow:auto;border:1px solid var(--line);border-radius:12px;
  background:#fff;box-shadow:var(--shadow-sm);}
table.mx{border-collapse:separate;border-spacing:0;width:100%;font-size:12px;}
.mx th{background:#33406E;color:#fff;font-weight:600;padding:9px 8px;text-align:center;
  position:sticky;top:0;z-index:3;font-size:11.5px;line-height:1.45;}
.mx th.item-h{left:0;z-index:4;text-align:left;min-width:210px;
  background:linear-gradient(180deg,#3A4878,#33406E);}
.mx td,.mx th{border-bottom:1px solid #F0F1F8;border-right:1px solid #F4F5FA;}
.mx td{padding:7px 8px;text-align:center;background:#fff;}
.mx .it{position:sticky;left:0;z-index:2;text-align:left;background:#FBFCFE;
  min-width:210px;max-width:260px;vertical-align:top;}
.mx .it b{display:block;font-size:12px;color:var(--ink);}
.mx .it .rl{font-size:10px;color:var(--pri);font-family:Consolas,Menlo,monospace;}
.mx .it .cf{font-size:10px;color:var(--sub);line-height:1.45;}
.mx td.cell{cursor:pointer;font-weight:700;transition:.12s;}
.mx td.cell:hover{outline:2px solid #E8B84B;outline-offset:-2px;}
.mx td .pc{display:block;font-size:9px;font-weight:400;opacity:.75;font-family:Consolas,monospace;}
.pc-A{background:#E9E4F9;color:#433A85;} .pc-B{background:var(--blue-soft);color:var(--blue);}
.pc-C{background:var(--ok-soft);color:var(--ok);} .pc-D{background:#F0F2F7;color:#8B93AC;}
.mx td.cell-no{color:#C6CBDC;background:#FCFCFE;}
.mx td.cell-conf{background:var(--bad-soft);color:var(--bad);font-weight:800;cursor:not-allowed;}
.mx td.cell-pend{background:var(--warn-soft);color:var(--warn);font-weight:800;cursor:not-allowed;}
.mx td.st-ok{background:var(--ok-soft);color:var(--ok);font-weight:700;}
.mx tr.revoked td.cell,.mx td.cell.rev{background:#FDF6E4;color:var(--warn);text-decoration:line-through;}
.hd-badge{display:inline-block;font-size:9.5px;border-radius:9px;padding:0 6px;margin-top:2px;}
.hb-conf{background:#F6D5D0;color:#8E2718;} .hb-pend{background:#F3E2B8;color:#7C5306;}
.hb-off{background:#F0F2F7;color:#7C85A0;border:1px dashed #C0C7DA;margin-left:5px;}
.mx td.off{opacity:.55;}
.cnt{font-size:11.5px;color:var(--sub);margin-top:8px;line-height:1.8;}

/* 冲突面板 */
.issue{border-radius:11px;padding:11px 16px;font-size:12.5px;margin-top:12px;line-height:1.85;}
.issue.bad{background:var(--bad-soft);border:1px solid var(--bad-line);color:#8E2718;}
.issue.ok{background:var(--ok-soft);border:1px solid var(--ok-line);color:#136341;}

/* 点格降级浮层 */
.dg-menu{position:fixed;z-index:99;background:#fff;border:1px solid var(--pri-line);
  border-radius:11px;box-shadow:0 14px 38px rgba(23,32,64,.24);padding:6px;min-width:170px;}
.dg-menu .dg-title{font-size:11px;color:var(--sub);padding:4px 10px 8px;
  border-bottom:1px solid #F0F1F8;margin-bottom:4px;line-height:1.55;}
.dg-menu .dg-opt{padding:8px 12px;font-size:12.5px;cursor:pointer;border-radius:8px;
  color:var(--pri-dark);transition:.12s;}
.dg-menu .dg-opt:hover{background:var(--pri-soft);}

/* ───────── 确认门 ───────── */
.gate-laws{background:linear-gradient(120deg,#F2F4FE,#F8F9FE);border:1px solid var(--pri-line);
  border-radius:12px;padding:12px 18px;font-size:12.5px;color:#2B3E85;line-height:2;}
.duo{display:grid;grid-template-columns:1fr 1.2fr;gap:16px;margin-top:16px;}
.sub-card{border:1px solid var(--line);border-radius:14px;padding:16px 18px;background:#fff;
  box-shadow:var(--shadow-sm);}
.sub-card h3{margin:0 0 12px;font-size:13.5px;color:var(--ink);font-weight:700;}
.sub-card h3 em{font-style:normal;font-weight:400;font-size:11px;color:var(--sub);margin-left:6px;}
.cklist{display:flex;flex-direction:column;gap:9px;}
.ck{display:flex;align-items:center;gap:11px;border:1px solid var(--line);border-radius:10px;
  padding:10px 14px;cursor:pointer;font-size:13px;transition:.15s;background:#fff;}
.ck:hover{border-color:var(--pri-line);box-shadow:var(--shadow-sm);}
.ck .box{width:20px;height:20px;border-radius:6px;border:1.5px solid #C9D0E4;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff;transition:.15s;}
.ck.on{border-color:var(--ok-line);background:var(--ok-soft);}
.ck.on .box{background:var(--ok);border-color:var(--ok);}
.ck .st{margin-left:auto;font-size:11px;color:var(--sub);}
.adj-grid{display:grid;grid-template-columns:1.4fr 1fr auto auto;gap:9px;margin-bottom:10px;}
.blockers{margin-top:16px;}
.blk{border-radius:11px;padding:12px 16px;font-size:12.5px;line-height:1.9;}
.blk.ok{background:var(--ok-soft);border:1px solid var(--ok-line);color:#136341;}
.blk.bad{background:var(--bad-soft);border:1px solid var(--bad-line);color:#8E2718;}
.blk b.sev{font-family:Consolas,monospace;margin-right:4px;}

.confirm-card{margin-top:18px;border-radius:16px;padding:22px 26px;position:relative;
  background:linear-gradient(130deg,#FBFCFF 0%,#F4F6FE 100%);
  border:2px solid var(--pri);box-shadow:var(--shadow-lg);}
.confirm-card::before{content:'生效门';position:absolute;top:-11px;left:24px;
  background:var(--pri);color:#fff;font-size:11px;font-weight:700;
  border-radius:14px;padding:2px 14px;letter-spacing:1px;}
.cc-title{font-size:16px;font-weight:800;color:var(--pri-dark);margin-bottom:14px;}
.cc-form{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:680px;}
.code-row{display:flex;gap:8px;}
.code-row input{flex:1;}
.declare{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#3D4560;
  margin-top:16px;cursor:pointer;}
.declare input{width:16px;height:16px;accent-color:var(--pri);}
.cc-act{display:flex;align-items:center;gap:16px;margin-top:18px;flex-wrap:wrap;}

/* ───────── 生效 ───────── */
.banner{display:none;border-radius:16px;padding:18px 24px;margin-bottom:18px;
  background:linear-gradient(120deg,#E9F7F0,#F4FBF7);border:2px solid var(--ok);
  color:#136341;box-shadow:0 6px 20px rgba(18,145,95,.14);}
.banner.on{display:block;animation:fadein .3s ease;}
.banner b{font-size:15.5px;}
.banner b span{display:inline;}
.banner span{display:block;font-size:12px;font-weight:400;margin-top:5px;color:#2C7A55;}
.perm-row{display:grid;grid-template-columns:2fr 1fr auto;gap:10px;max-width:780px;}
#permResult{margin-top:12px;border-radius:11px;padding:12px 16px;font-size:13px;max-width:780px;}
#permResult.pass{background:var(--ok-soft);border:1px solid var(--ok-line);color:#136341;}
#permResult.human{background:var(--warn-soft);border:1px solid var(--warn-line);color:#7C5306;}
#permResult.block{background:var(--bad-soft);border:1px solid var(--bad-line);color:#8E2718;}

.ver{border:1px solid var(--ok-line);background:#FBFEFC;border-radius:13px;
  padding:14px 18px;font-size:12.5px;margin-bottom:10px;line-height:1.85;}
.ver b.v{font-size:14.5px;color:#136341;}
.ver .mono{font-family:Consolas,Menlo,monospace;font-size:11px;color:var(--pri);}
.ver details{margin-top:6px;}
.ver summary{cursor:pointer;font-size:11.5px;color:var(--sub);}
.mini-tbl{width:100%;border-collapse:collapse;font-size:11.5px;margin-top:8px;}
.mini-tbl th{background:#F4F5FB;padding:6px 10px;text-align:left;font-size:10.5px;color:#4A5470;}
.mini-tbl td{padding:6px 10px;border-bottom:1px solid #F1F3F9;}
.audit-tbl td:first-child{font-family:Consolas,monospace;font-size:10.5px;color:var(--sub);white-space:nowrap;}

.tabbar{display:flex;gap:6px;align-items:center;border-bottom:2px solid var(--line);
  padding-bottom:0;margin-bottom:16px;}
.tab{background:none;border:0;padding:10px 18px;font-size:13px;font-weight:600;color:var(--sub);
  border-bottom:2.5px solid transparent;margin-bottom:-2px;transition:.15s;border-radius:8px 8px 0 0;}
.tab:hover{color:var(--pri);background:var(--pri-soft);}
.tab.on{color:var(--pri);border-bottom-color:var(--pri);background:var(--pri-soft);}
.print-btn{margin-left:auto;}
.flow-name{font-size:13.5px;font-weight:700;color:var(--pri-dark);margin:16px 0 8px;}
.flow-name .bdg{margin-left:8px;vertical-align:1px;}

/* toast */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);
  background:#1E2647;color:#fff;border-radius:12px;padding:13px 22px;font-size:13px;
  max-width:540px;opacity:0;pointer-events:none;transition:.25s;z-index:200;
  box-shadow:0 16px 40px rgba(15,20,50,.4);}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}

/* 人员预检评分卡 + 组织评价卡 */
.precheck{margin-top:12px;background:#FAFBFE;border:1px solid var(--line);border-radius:12px;
  padding:12px 16px;}
.pc-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px;}
.pc-title{font-weight:700;color:var(--pri-dark);}
.pc-total{font-size:22px;font-variant-numeric:tabular-nums;}
.pc-total.ok{color:var(--ok);} .pc-total.bad{color:var(--bad);}
.pc-bars{margin-top:9px;display:grid;gap:7px;}
.pc-bar,.ev-dim{display:flex;align-items:center;gap:10px;font-size:11.5px;color:var(--sub);}
.pc-bar>span,.ev-dim>span{width:170px;flex-shrink:0;}
.pc-bar em,.ev-dim em{font-style:normal;font-size:10px;color:#9AA3BE;}
.bar{flex:1;height:8px;border-radius:5px;background:#EDEFF6;overflow:hidden;}
.bar i{display:block;height:100%;border-radius:5px;transition:width .3s;}
.bar i.ok{background:linear-gradient(90deg,#2DB67C,#12915F);}
.bar i.warn{background:linear-gradient(90deg,#E0A93C,#C77E14);}
.bar i.bad{background:linear-gradient(90deg,#E05B4E,#C93B31);}
.pc-bar b,.ev-dim b{width:36px;text-align:right;color:var(--ink);font-variant-numeric:tabular-nums;}
/* 组织架构树（架构图表：根→连接线→条线/归口岗→岗位胶囊） */
.tc{margin:4px 0 6px;}
.tc-root{background:linear-gradient(135deg,#33406E,#2A3560);color:#fff;border-radius:13px;
  padding:14px 22px;max-width:560px;margin:0 auto;text-align:center;
  box-shadow:0 6px 18px rgba(23,32,64,.22);position:relative;}
.tc-root::after{content:'';position:absolute;left:50%;top:100%;width:2px;height:16px;
  background:#C5CDE4;transform:translateX(-50%);}
.tc-root-name{font-weight:800;font-size:14.5px;}
.tc-root-note{font-size:11px;color:#C9D2F0;margin-top:3px;line-height:1.6;}
.tc-level{position:relative;display:flex;gap:14px;padding-top:32px;flex-wrap:wrap;
  align-items:stretch;margin-top:16px;}
.tc-level::before{content:'';position:absolute;top:0;left:60px;right:60px;height:2px;
  background:#C5CDE4;border-radius:2px;}
.tc-unit{position:relative;flex:1 1 190px;background:#fff;border-radius:12px;
  padding:12px 14px;min-width:180px;box-shadow:var(--shadow-sm);}
.tc-unit::before{content:'';position:absolute;top:-32px;left:50%;width:2px;height:32px;
  background:#C5CDE4;}
.tc-blue{border:1.6px solid #4A6BE8;background:#F4F7FF;}
.tc-green{border:1.6px solid #2E9E6B;background:#F2FAF6;}
.tc-dash{border:1.5px dashed #C77E14;background:#FFFDF6;}
.tc-unit-name{font-weight:700;font-size:13px;color:var(--ink);}
.tc-unit-head{font-size:11px;color:var(--sub);margin:2px 0 8px;}
.tc-posts{display:flex;flex-wrap:wrap;gap:6px;}
.tc-post{display:inline-block;border:1px solid #D9DEEC;background:#fff;
  border-radius:15px;padding:3px 11px;font-size:11px;color:#3D4560;}
.tc-post.tc-red{border-color:#C93B31;background:#FBEDEB;color:#8E2718;font-weight:700;}
.tc-post.tc-amber{border-color:#D9A13B;background:#FDF6E4;color:#7C5306;}
.tc-post.empty{color:#98A0BA;border-style:dashed;}
.tc-tag{font-style:normal;font-size:9px;border-radius:8px;padding:0 5px;margin-left:4px;
  background:#C93B31;color:#fff;}
.tc-tag.amber{background:#C77E14;}
.tc-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:11px;color:var(--sub);margin-top:14px;}
.tc-legend i{display:inline-block;width:12px;height:12px;border-radius:4px;
  margin-right:5px;vertical-align:-1px;border:1.5px solid;}
.org-units{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:12px;}
.unit{border:1px solid var(--line);border-radius:10px;padding:9px 13px;background:#fff;}
.unit.conf{border-color:var(--bad-line);background:var(--bad-soft);}
.eval-card{border:1px solid var(--pri-line);border-radius:12px;padding:14px 17px;
  background:linear-gradient(120deg,#FDFDFF,#F8F9FE);}
.ev-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px;
  font-weight:600;color:var(--pri-dark);}
.ev-total{font-size:24px;font-variant-numeric:tabular-nums;}
.ev-total.ok{color:var(--ok);} .ev-total.bad{color:var(--bad);}
.ev-dims{display:grid;grid-template-columns:1fr 1fr;gap:7px 22px;margin:11px 0;}
.ev-finding{border-top:1px dashed var(--line);padding:8px 2px;font-size:12px;line-height:1.65;}
.ev-finding b{margin:0 6px;}

/* 一页纸定稿编辑区 */
.op-node{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:12.5px;
  border-bottom:1px dashed #EDEFF6;padding:7px 2px;line-height:1.65;}
.op-node>b{color:var(--pri);width:20px;text-align:right;flex-shrink:0;
  font-variant-numeric:tabular-nums;}
.op-node.op-trimmed{opacity:.5;}
.op-node.op-trimmed b{text-decoration:line-through;}
.op-flow{margin-bottom:12px;}

/* 未启用域折叠区（矩阵底部） */
.off-fold{margin-top:12px;}
.off-fold summary{cursor:pointer;list-style:none;font-size:12.5px;font-weight:600;
  color:#4A5470;background:#F7F8FC;border:1px dashed #C9D2EC;border-radius:10px;
  padding:10px 15px;user-select:none;transition:.15s;}
.off-fold summary:hover{border-color:var(--pri-line);color:var(--pri);}
.off-fold summary::-webkit-details-marker{display:none;}
.off-fold summary::before{content:'▸ ';color:#9AA6CC;}
.off-fold[open] summary::before{content:'▾ ';}
.off-fold summary em{font-style:normal;font-weight:400;font-size:11px;color:#98A0BA;margin-left:8px;}
.off-fold .mx-wrap{margin-top:9px;}

/* 场景实时同步预览 */
.sec-divider{border-top:1px solid var(--line);margin:18px 0 16px;}
.scene-preview{margin-top:13px;background:#FAFBFE;border:1px solid var(--line);
  border-radius:12px;padding:12px 16px;animation:fadein .2s ease;}
.sp-row{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:12px;}
.sp-row + .sp-row{margin-top:9px;}
.sp-k{font-size:11.5px;color:var(--sub);font-weight:600;}
.stats-inline span{margin-right:16px;color:var(--sub);}
.stats-inline b{color:var(--pri-dark);font-size:14px;font-variant-numeric:tabular-nums;}
.sp-trace summary{cursor:pointer;font-size:11.5px;color:var(--sub);}
.sp-trace .trace{margin-top:7px;}
.sec-title{font-size:13px;font-weight:700;color:var(--ink);margin:16px 0 9px;
  display:flex;align-items:center;gap:7px;}
.sec-title small{font-weight:400;font-size:11.5px;color:var(--sub);}
.chips{display:flex;flex-wrap:wrap;gap:7px;}

/* ───────── 打印 ───────── */
@media print{
  body{background:#fff;}
  .top,.stepper,.toast,.print-btn,.tabbar{display:none !important;}
  .panel{display:none !important;}
  #panel-5{display:block !important;}
  #panel-5 .card{display:none !important;}
  #card-products{display:block !important;border:0;box-shadow:none;border-radius:0;}
  #tab-brief,#tab-org,#tab-onepager,#tab-checklist{display:block !important;}
  #briefEmpty,#orgReportEmpty{display:none !important;}
  .tabpane{margin-bottom:10mm;}
  .tbl-wrap{max-height:none;overflow:visible;box-shadow:none;}
  table{font-size:10.5px;}
}

@media (max-width:960px){
  .frm-grid,.rule-pick,.duo,.cc-form{grid-template-columns:1fr;}
  .span2{grid-column:auto;}
  .stat-row{grid-template-columns:repeat(3,1fr);}
  .stepper{flex-wrap:wrap;}
  .stp{min-width:46%;}
  .top-meta{grid-template-columns:1fr;}
  .ev-dims,.org-units{grid-template-columns:1fr;}
}
