* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif; background: #f4f6fa; color: #1f2d3d; font-size: 14px; }
.hidden { display: none !important; }

/* 顶栏 */
.topbar { display: flex; align-items: stretch; gap: 24px; padding: 0 24px; min-height: 72px;
  background: #1f3a5f; color: #fff; box-shadow: 0 2px 8px rgba(0,0,0,.12); }
.brand { display:flex; flex-direction:column; justify-content:center; min-width:112px; font-size:17px; font-weight:700; letter-spacing:.5px; }
.brand small { margin-top:3px; color:#9fb3ca; font-size:10px; font-weight:500; letter-spacing:.14em; }
.tabs { display:flex; align-items:stretch; gap:10px; flex:1; overflow-x:auto; }
.nav-group { display:flex; flex-direction:column; justify-content:center; flex:none; padding:7px 9px; border-left:1px solid rgba(255,255,255,.1); }
.nav-group:first-child { border-left:0; }
.nav-group>span { margin:0 0 4px 8px; color:#8fa7c1; font-size:9px; letter-spacing:.13em; }
.nav-group>div { display:flex; gap:3px; }
.nav-group.primary-flow { background:rgba(255,255,255,.035); }
.tab { background: transparent; border: none; color: #c5d3e6; padding: 7px 11px; cursor: pointer; font-size: 13px; border-radius: 6px; white-space:nowrap; }
.tab:hover { background: rgba(255,255,255,.08); color: #fff; }
.tab.active { background: rgba(255,255,255,.16); color: #fff; font-weight: 600; }
.env-badge { align-self:center; flex:none; font-size:11px; background:rgba(255,255,255,.12); padding:4px 10px; border-radius:20px; }

/* 面板 */
.tab-panel { display: none; padding: 20px 24px; max-width: 1200px; margin: 0 auto; }
.tab-panel.active { display: block; }

/* 工具栏 */
.toolbar { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 16px; align-items: center; }
.search { flex: 1; min-width: 240px; padding: 9px 12px; border: 1px solid #d9dee7; border-radius: 8px; font-size: 14px; }
.toolbar select { padding: 9px 10px; border: 1px solid #d9dee7; border-radius: 8px; background: #fff; }

.btn { padding: 9px 16px; border: 1px solid #d9dee7; background: #fff; border-radius: 8px; cursor: pointer; font-size: 14px; }
.btn:hover { border-color: #1f3a5f; color: #1f3a5f; }
.btn.primary { background: #1f3a5f; color: #fff; border-color: #1f3a5f; }
.btn.primary:hover { background: #274b78; color: #fff; }
.btn.danger { background: #fff; color: #c0392b; border-color: #f0c9c2; }
.btn.danger:hover { background: #fdeceb; color: #c0392b; border-color: #e0a89f; }
.btn.small { padding: 5px 12px; font-size: 13px; }

/* 报告与提升计划：把生成、审核、发布的责任交接放在页面首屏 */
.result-page-head { display:flex; justify-content:space-between; align-items:flex-end; gap:20px; margin-bottom:16px; }
.result-page-head h2 { margin:4px 0 6px; color:#1d2f43; font-size:23px; }
.result-page-head p { max-width:760px; color:#718093; font-size:13px; line-height:1.7; }
.eyebrow { color:#4c789f; font-size:11px; font-weight:700; letter-spacing:.08em; }
.handoff-flow { display:grid; grid-template-columns:1fr auto 1fr auto 1fr auto 1fr; align-items:center; gap:10px; padding:14px; margin-bottom:16px; border:1px solid #dfe7ee; border-radius:12px; background:#fff; box-shadow:0 1px 4px rgba(31,58,95,.05); }
.handoff-flow>div { display:grid; grid-template-columns:30px 1fr; column-gap:10px; align-items:center; min-width:0; }
.handoff-flow>div>span { grid-row:1/3; display:grid; place-items:center; width:28px; height:28px; border-radius:50%; background:#e7f0f7; color:#315f8b; font-size:12px; font-weight:700; }
.handoff-flow b { color:#31475d; font-size:13px; }
.handoff-flow small { margin-top:3px; overflow:hidden; color:#8290a0; font-size:10.5px; text-overflow:ellipsis; white-space:nowrap; }
.handoff-flow>i { color:#a4b1be; font-style:normal; }
.handoff-flow.six { grid-template-columns:repeat(5,minmax(110px,1fr) auto) minmax(110px,1fr); }
.handoff-flow.six>div { grid-template-columns:26px 1fr; column-gap:7px; }
.handoff-flow.six>div>span { width:24px; height:24px; }
.handoff-flow.six b { font-size:12px; }
.handoff-flow.six small { font-size:9.5px; }
.result-toolbar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; padding:12px 14px; margin-bottom:14px; border-radius:10px; background:#edf3f7; }
.result-toolbar select { min-width:220px; padding:9px 10px; border:1px solid #ccd8e2; border-radius:8px; background:#fff; }
.flow-summary { margin-left:auto; color:#52697e; font-size:12px; font-weight:600; }
.next-action { display:block; margin-top:4px; color:#315f8b; font-size:11px; font-weight:600; }

/* 个人评价成果包工作台 */
.outcome-workspace { display:grid; grid-template-columns:360px minmax(0,1fr); gap:14px; min-height:500px; }
.outcome-list-pane,.outcome-detail-pane { overflow:hidden; border:1px solid #e1e8ef; border-radius:12px; background:#fff; box-shadow:0 2px 8px rgba(31,58,95,.05); }
.outcome-list-head { display:flex; justify-content:space-between; align-items:center; padding:15px 16px; border-bottom:1px solid #e8edf2; }
.outcome-list-head b { color:#263c52; font-size:15px; }
.outcome-list-head small { color:#8996a5; }
#outcome-list { max-height:680px; overflow:auto; }
.outcome-person { display:grid; grid-template-columns:18px 1fr auto; gap:6px 10px; width:100%; padding:14px 16px; border:0; border-bottom:1px solid #edf1f4; background:#fff; color:inherit; text-align:left; cursor:pointer; }
.outcome-person:hover,.outcome-person.active { background:#f3f7fb; }
.outcome-person.active { box-shadow:inset 3px 0 #4b78a5; }
.outcome-person div { display:flex; flex-direction:column; gap:4px; min-width:0; }
.outcome-person b { color:#273d53; font-size:14px; }
.outcome-person small { overflow:hidden; color:#8492a2; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.outcome-person .outcome-check { align-self:center; }
.outcome-person em { grid-column:2/-1; color:#6b7c8e; font-size:11px; font-style:normal; }
.outcome-state { align-self:start; padding:3px 8px; border-radius:999px; background:#edf1f4; color:#667789; font-size:10px; font-weight:700; white-space:nowrap; }
.state-submitted,.state-employee_feedback { background:#fff0df; color:#a96313; }
.state-employee_pending { background:#e8f0fa; color:#35699a; }
.state-completed { background:#e5f3eb; color:#34734f; }
.state-rejected { background:#fdeceb; color:#ad4b41; }
.outcome-detail-pane { padding:20px; }
.outcome-detail-head { display:flex; justify-content:space-between; gap:18px; padding-bottom:16px; border-bottom:1px solid #e8edf2; }
.outcome-detail-head span,.outcome-detail-head p { color:#7e8d9d; font-size:11px; }
.outcome-detail-head h3 { margin:5px 0; color:#20364d; font-size:19px; }
.outcome-summary-cards { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:16px 0; }
.outcome-summary-cards section { display:flex; flex-direction:column; gap:5px; padding:14px; border:1px solid #e3e9ef; border-radius:10px; background:#fafcfd; }
.outcome-summary-cards small,.outcome-summary-cards span { color:#8190a0; font-size:10px; }
.outcome-summary-cards strong { color:#315f8b; font-size:24px; }
.outcome-summary-cards input { padding:6px 7px; border:1px solid #d7e0e8; border-radius:6px; color:#44586c; }
.outcome-next,.outcome-rejection { display:flex; gap:12px; padding:12px 14px; margin:12px 0; border-left:3px solid #6c93b7; background:#f2f7fa; color:#50677c; font-size:12px; }
.outcome-rejection { border-left-color:#c76156; background:#fff4f2; color:#8d4038; }
.outcome-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:18px; padding-top:16px; border-top:1px solid #e7ecf1; }
.outcome-inline-form { margin-top:14px; padding:12px; border:1px solid #e1e8ee; border-radius:9px; background:#fafcfd; }
.outcome-inline-form.two { display:grid; grid-template-columns:180px 1fr; gap:12px; }
.outcome-inline-form label { display:flex; flex-direction:column; gap:6px; color:#566b7f; font-size:11px; font-weight:600; }
.outcome-inline-form textarea,.outcome-inline-form select { width:100%; padding:8px 9px; border:1px solid #d5dfe7; border-radius:7px; background:#fff; color:#3f5367; font:inherit; resize:vertical; }
.outcome-empty { display:flex; min-height:220px; align-items:center; justify-content:center; flex-direction:column; gap:8px; color:#8996a5; text-align:center; }
.outcome-empty b { color:#5d7084; }
.outcome-feedback { margin-top:16px; }
.outcome-feedback.preview-focus { border-radius:10px; box-shadow:0 0 0 4px rgba(58,118,169,.18); transition:box-shadow .2s; }
.outcome-feedback h4 { margin-bottom:10px; color:#31475d; }
.outcome-feedback>div { display:grid; grid-template-columns:1fr auto 1fr; gap:10px; align-items:center; margin-bottom:8px; }
.outcome-feedback article { display:flex; flex-direction:column; gap:5px; padding:11px; border:1px solid #e2e8ee; border-radius:9px; background:#fafbfc; }
.outcome-feedback article.changed { border-color:#d5e6d9; background:#f6fbf7; }
.outcome-feedback small,.outcome-feedback em { color:#8290a0; font-size:10px; font-style:normal; }
.outcome-feedback p { color:#53677b; font-size:11px; line-height:1.55; }

@media(max-width:900px){.topbar{padding:0 14px}.env-badge{display:none}.handoff-flow,.handoff-flow.six{grid-template-columns:1fr 1fr}.handoff-flow>i{display:none}.result-page-head{align-items:flex-start;flex-direction:column}.flow-summary{width:100%;margin-left:0}.nav-group>span{display:none}.outcome-workspace{grid-template-columns:1fr}.outcome-summary-cards{grid-template-columns:1fr}}

/* 表格 */
.table-wrap { background: #fff; border-radius: 10px; overflow-x: auto; overflow-y: hidden; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 11px 14px; text-align: left; border-bottom: 1px solid #eef1f5; white-space: nowrap; }
th { background: #f7f9fc; font-weight: 600; color: #4a5b70; font-size: 13px; }
tbody tr:hover { background: #f9fbfe; }
td .op { color: #1f3a5f; cursor: pointer; margin-right: 10px; }
td .op.del { color: #c0392b; }

/* 操作列固定在右侧，保证删除按钮始终可见 */
#people-table .col-ops {
  position: sticky; right: 0; z-index: 2;
  background: #fff;
  box-shadow: inset 6px 0 8px -8px rgba(0,0,0,.18);
}
#people-table thead .col-ops { background: #f7f9fc; z-index: 3; }
.tag { padding: 2px 9px; border-radius: 20px; font-size: 12px; }
.tag.兼 { background: #e8f0fe; color: #1f3a5f; }
.tag.被评价人 { background: #e6f7ee; color: #1e7e4f; }
.tag.评价人 { background: #fef3e0; color: #b9750a; }
.tag.在职 { background: #e6f7ee; color: #1e7e4f; }
.tag.离职 { background: #fdecec; color: #c0392b; }

.pager { margin-top: 14px; display: flex; gap: 8px; align-items: center; }
.pager button { padding: 6px 12px; border: 1px solid #d9dee7; background: #fff; border-radius: 6px; cursor: pointer; }
.pager button:disabled { color: #bcc4cf; cursor: not-allowed; }

/* 统计 */
.stat-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px,1fr)); gap: 14px; margin-bottom: 20px; }
.stat-card { background: #fff; border-radius: 10px; padding: 18px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.stat-card .num { font-size: 30px; font-weight: 700; color: #1f3a5f; }
.stat-card .lbl { color: #6b7888; margin-top: 4px; }
.charts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.chart-card { background: #fff; border-radius: 10px; padding: 16px 18px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.chart-card h3 { font-size: 14px; color: #4a5b70; margin-bottom: 12px; }
.bars-v { display: flex; align-items: flex-end; gap: 6px; height: 178px; padding-top: 4px; overflow-x: auto; }
.vcol { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; flex: 1 1 0; min-width: 22px; }
.vbar { width: 64%; max-width: 30px; background: #667f91; border-radius: 4px 4px 0 0; transition: height .2s; }
.vv { font-size: 11px; color: #6b7888; margin-bottom: 3px; font-variant-numeric: tabular-nums; }
.vl { font-size: 11px; color: #4a5b70; margin-top: 5px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 评价周期 */
.cycle-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px,1fr)); gap: 14px; }
.cycle-card { background: #fff; border-radius: 10px; padding: 16px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.cycle-card h4 { font-size: 15px; margin-bottom: 6px; }
.cycle-card .cc-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.cycle-card .cc-ops { display: flex; gap: 6px; flex-shrink: 0; }
.cycle-card .cc-ops .op { font-size: 12px; padding: 3px 10px; border-radius: 6px; cursor: pointer; border: 1px solid #d9dee7; background: #fff; color: #3a4760; }
.cycle-card .cc-ops .op:hover { background: #f2f5f9; }
.cycle-card .cc-ops .op.del { color: #c0392b; border-color: #f0c9c2; }
.cycle-card .cc-ops .op.del:hover { background: #fdeceb; }
.cycle-card .meta { color: #6b7888; font-size: 13px; line-height: 1.7; margin-top: 8px; }

/* 弹窗 */
.modal-mask { position: fixed; inset: 0; background: rgba(20,30,45,.45); display: flex; align-items: center; justify-content: center; z-index: 50; }
.modal { background: #fff; border-radius: 12px; width: 640px; max-width: 94vw; max-height: 90vh; overflow: auto; box-shadow: 0 12px 40px rgba(0,0,0,.25); }
.modal-head { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; border-bottom: 1px solid #eef1f5; font-weight: 600; font-size: 16px; }
.modal-head .close { background: none; border: none; font-size: 22px; cursor: pointer; color: #8a96a5; }
.modal-body { padding: 20px; }
.modal-foot { padding: 14px 20px; border-top: 1px solid #eef1f5; display: flex; justify-content: flex-end; gap: 10px; }
.grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 14px; }
label { display: flex; flex-direction: column; gap: 5px; font-size: 13px; color: #4a5b70; }
label.full { grid-column: 1 / -1; }
input, select, textarea { padding: 8px 10px; border: 1px solid #d9dee7; border-radius: 7px; font-size: 14px; font-family: inherit; color: #1f2d3d; }
input:focus, select:focus, textarea:focus { outline: none; border-color: #1f3a5f; }

/* 简历 */
.resume-box { margin-top: 16px; border-top: 1px solid #eef1f5; padding-top: 14px; }
.resume-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; font-weight: 600; color: #4a5b70; }
.resume-list { list-style: none; display: flex; flex-direction: column; gap: 6px; }
.resume-list li { display: flex; align-items: center; gap: 10px; background: #f7f9fc; padding: 8px 12px; border-radius: 7px; font-size: 13px; }
.resume-list .rn { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.resume-list .ra { color: #1f3a5f; cursor: pointer; }
.resume-list .rd { color: #c0392b; cursor: pointer; }

/* toast */
.toast { position: fixed; bottom: 28px; left: 50%; transform: translateX(-50%); background: #1f3a5f; color: #fff; padding: 11px 20px; border-radius: 8px; box-shadow: 0 6px 20px rgba(0,0,0,.2); z-index: 100; }

/* 填表页 / 任务面板用的 CSS 变量（与浅色主题对齐） */
:root {
  --color-background-primary: #ffffff;
  --color-background-secondary: #f4f6fa;
  --color-text-primary: #1f2d3d;
  --color-text-secondary: #4a5b70;
  --color-text-tertiary: #9aa5b1;
  --color-border-tertiary: #eef1f5;
  --color-border-secondary: #d9dee7;
}

/* 评价任务 */
.builder { background: #fff; border: 1px solid #eef1f5; border-radius: 10px; padding: 16px 18px; margin-bottom: 16px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.builder-row { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; }
.builder-row label { font-size: 13px; color: #4a5b70; }
.builder-row select { min-width: 160px; }
.note { font-size: 12px; color: #9aa5b1; margin-top: 10px; line-height: 1.5; }
.tag.pending { background: #fef3e0; color: #b9750a; }
.tag.submitted { background: #e6f7ee; color: #1e7e4f; }
.link-cell { display: flex; align-items: center; gap: 8px; }
.link-cell code { font-size: 12px; color: #4a5b70; background: #f4f6fa; padding: 3px 7px; border-radius: 6px; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pwd-tag { font-size: 11.5px; color: #c0392b; background: #fef0f0; border: 1px solid #f5c6c6; border-radius: 5px; padding: 2px 7px; margin-left: 4px; white-space: nowrap; font-weight: 600; }
.link-cell .op { margin-right: 0; }

/* 汇总报告 */
.modal.wide { width: 860px; }
.rep-plan-preview h4 { display: flex; align-items: center; gap: 10px; }
.rep-plan-state { padding: 3px 8px; border-radius: 999px; background: #eef2f5; color: #728092; font-size: 11px; font-weight: 600; }
.rep-plan-state.published { background: #fff4dc; color: #8a641f; }
.rep-plan-state.confirmed { background: #e9f6ee; color: #397250; }
.rep-plan-list { display: grid; gap: 10px; }
.rep-plan-item { padding: 13px 15px; border: 1px solid #e4eaf0; border-radius: 10px; background: #fbfcfd; }
.rep-plan-item-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.rep-plan-item-head b { color: #263746; font-size: 13px; }
.rep-plan-item-head span { flex: none; color: #778596; font-size: 11px; }
.rep-plan-item p { margin: 8px 0 0; color: #435466; font-size: 13px; line-height: 1.7; white-space: pre-wrap; }
.rep-plan-note { margin-top: 9px; padding: 8px 10px; border-left: 3px solid #9fb7cd; background: #f2f6f9; color: #5c6e7f; font-size: 12px; line-height: 1.6; }
.rep-plan-note b { margin-right: 8px; color: #405466; }
.rep-plan-empty { padding: 18px; border: 1px dashed #d6dee7; border-radius: 10px; color: #7b8998; text-align: center; font-size: 13px; }
@media(max-width:760px){.rep-plan-item-head{align-items:flex-start;flex-direction:column;gap:4px}}
.tag.优秀 { background: #e6f7ee; color: #1e7e4f; }
.tag.良好 { background: #e6f1fb; color: #185FA5; }
.tag.合格 { background: #fef3e0; color: #b9750a; }
.tag.待改进 { background: #fdecec; color: #c0392b; }
.tag.不合格 { background: #f5c6c6; color: #8a1f1f; }
.rep-head { border-bottom: 1px solid #eef1f5; padding-bottom: 12px; margin-bottom: 14px; }
.rep-score { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.rep-score .big { font-size: 42px; font-weight: 700; color: #1f3a5f; line-height: 1; }
.rep-score .rating { font-size: 16px; font-weight: 600; padding: 4px 14px; border-radius: 20px; background: #e6f1fb; color: #185FA5; }
.rep-score .rating.优秀 { background: #e6f7ee; color: #1e7e4f; }
.rep-score .rating.良好 { background: #e6f1fb; color: #185FA5; }
.rep-score .rating.合格 { background: #fef3e0; color: #b9750a; }
.rep-score .rating.待改进 { background: #fdecec; color: #c0392b; }
.rep-score .rating.不合格 { background: #f5c6c6; color: #8a1f1f; }
.rep-grid { display: grid; grid-template-columns: 300px 1fr; gap: 20px; align-items: start; }
.rep-grid h4 { font-size: 14px; color: #4a5b70; margin-bottom: 8px; }
.mini { width: 100%; border-collapse: collapse; margin-bottom: 8px; }
.mini th, .mini td { padding: 7px 10px; border-bottom: 1px solid #eef1f5; font-size: 13px; }
.mini th { background: #f7f9fc; font-weight: 600; color: #4a5b70; }
/* 维度明细能力条（拉长 + 浅蓝渐变 + 浅蓝轨道） */
.dim-bars { display: flex; flex-direction: column; gap: 10px; padding: 4px 2px; }
.bar-row { display: flex; align-items: center; gap: 12px; }
.bl { flex: 0 0 132px; text-align: right; font-size: 13px; color: #4a5b70; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bt-track { flex: 1 1 auto; height: 22px; background: #eef4fb; border-radius: 11px; overflow: hidden; box-shadow: inset 0 1px 3px rgba(31,58,95,.10); }
.bt { height: 100%; border-radius: 11px; background: linear-gradient(90deg,#4a90d9 0%,#9cc6ef 100%); box-shadow: 0 1px 3px rgba(74,144,217,.40); min-width: 4px; transition: width .55s ease; }
.bv { flex: 0 0 auto; font-size: 13.5px; font-weight: 700; color: #2f6fb0; min-width: 58px; text-align: right; }
.bv i { font-style: normal; font-weight: 400; font-size: 12px; color: #9aa5b1; margin-left: 1px; }
.rep-callout { display: flex; gap: 16px; margin: 16px 0; }
.rep-callout > div { flex: 1; padding: 10px 14px; border-radius: 8px; font-size: 14px; }
.rep-callout .up { background: #eaf3de; color: #27500a; }
.rep-callout .down { background: #fcebed; color: #712b13; }
.rep-open { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.rep-open .col { background: #f7f9fc; border-radius: 8px; padding: 12px 14px; }
.rep-open h4 { font-size: 13px; margin-bottom: 8px; }
.rep-open ul { margin: 0; padding-left: 18px; }
.rep-open li { font-size: 13px; line-height: 1.6; color: #1f2d3d; margin-bottom: 4px; }
.rep-open .cnt { color: #b9750a; font-weight: 600; }
.rep-open .muted { color: #9aa5b1; list-style: none; margin-left: -18px; }
.rep-action { background: #e6f1fb; border-radius: 8px; padding: 12px 14px; font-size: 13px; color: #1f3147; line-height: 1.6; }

/* 关系树 / 评价人身份 / 访谈 */
.rep-section { background: #fff; border: 1px solid #eef1f5; border-radius: 10px; padding: 14px 16px; margin-top: 16px; }
.rep-section h4 { font-size: 14px; color: #1f3a5f; margin-bottom: 10px; }
.rel-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 18px; }
.rel-grid > div { display: flex; gap: 8px; align-items: baseline; font-size: 13px; }
.rel-grid .k { color: #6b7888; min-width: 84px; }
.rel-grid span:last-child { color: #1f2d3d; }
.eval-list { display: flex; flex-direction: column; gap: 6px; }
.eval-lv { font-size: 13px; color: #1f2d3d; }
.eval-lv .muted { color: #9aa5b1; font-weight: 400; }
.itv-block { border: 1px solid #eef1f5; border-radius: 8px; padding: 10px 12px; margin-bottom: 12px; }
.itv-block:last-child { margin-bottom: 0; }
.itv-title { font-weight: 600; font-size: 13px; color: #1f3a5f; margin-bottom: 8px; }
.itv-title .op { font-weight: 400; font-size: 12px; margin-left: 6px; }
.itv-sec { display: flex; gap: 10px; padding: 6px 0; border-top: 1px dashed #eef1f5; font-size: 13px; line-height: 1.6; }
.itv-sec:first-of-type { border-top: none; }
.itv-sec .sp { flex: 0 0 130px; color: #185FA5; font-weight: 600; }
.itv-sec .txt { flex: 1; white-space: pre-wrap; color: #1f2d3d; }
.itv-title .itv-meta { font-weight: 400; font-size: 12px; color: #9aa5b1; margin-left: 8px; }
.itv-ops { float: right; }
.itv-ops .op { font-weight: 400; font-size: 12px; margin-left: 8px; }
.itv-ops .op.del { color: #c0392b; }
.itv-ops .op:hover { text-decoration: underline; cursor: pointer; }
.rep-section h4 { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.rep-section h4 .btn.small { font-weight: 600; }

/* 面谈记录录入弹窗 */
.itv-secs { margin-top: 14px; border-top: 1px solid #eef1f5; padding-top: 12px; }
.itv-secs-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; font-size: 13px; color: #4a5b70; font-weight: 600; }
.itv-sec-row { display: flex; gap: 8px; align-items: flex-start; margin-bottom: 8px; }
.itv-sec-row .itv-sec-sp { flex: 0 0 150px; border: 1px solid var(--color-border-secondary, #ccd3dd); border-radius: 8px; padding: 7px 9px; font-size: 13px; box-sizing: border-box; }
.itv-sec-row .itv-sec-tx { flex: 1; min-height: 56px; border: 1px solid var(--color-border-secondary, #ccd3dd); border-radius: 8px; padding: 7px 9px; font-size: 13px; font-family: inherit; resize: vertical; box-sizing: border-box; }
.itv-sec-row .itv-sec-del { flex: 0 0 auto; border: none; background: #fdecec; color: #c0392b; border-radius: 8px; width: 30px; font-size: 16px; cursor: pointer; }
.itv-sec-row .itv-sec-del:hover { background: #f7d4d4; }

/* Sites 浅色工作台视觉整合：保留原业务结构，仅统一评价人与管理员体验 */
.topbar { background: #ffffff; color: #27364a; border-bottom: 1px solid #e2e8f0; box-shadow: none; }
.topbar .brand { color: #345b87; }
.tab { color: #65758a; }
.tab:hover { background: #edf4fa; color: #345b87; }
.tab.active { background: #dfeaf5; color: #345b87; }
.env-badge { background: #edf4fa; color: #5c7692; }
.btn.primary { background: #6688b1; border-color: #6688b1; }
.btn.primary:hover { background: #52779f; border-color: #52779f; }
.stat-card .num, .rep-score .big { color: #52779f; }

.evaluator-page { background: #f8fafc; color: #253349; }
.evaluator-shell { min-height: 100vh; display: grid; grid-template-columns: 248px minmax(0, 1fr); }
.evaluator-side { position: sticky; top: 0; height: 100vh; padding: 30px 22px; background: #edf4fa; border-right: 1px solid #dfe8f1; display: flex; flex-direction: column; }
.evaluator-brand { display: flex; align-items: center; gap: 12px; padding: 0 6px; }
.evaluator-brand > span { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; background: #dceaf7; color: #4c6d94; font-size: 20px; font-weight: 700; }
.evaluator-brand > div { display: grid; gap: 3px; }
.evaluator-brand b { font-size: 15px; }
.evaluator-brand small { color: #8796a9; font-size: 11px; }
.evaluator-side nav { display: grid; gap: 7px; margin-top: 52px; }
.evaluator-side nav div { padding: 14px 16px; border-radius: 10px; color: #7a899b; font-weight: 700; }
.evaluator-side nav div.active { background: #dce9f5; color: #345b87; }
.evaluator-side nav div.disabled { opacity: .55; }
.evaluator-side nav i { margin-right: 13px; font-size: 10px; font-style: normal; opacity: .65; }
.evaluator-privacy { margin-top: auto; padding: 17px; border: 1px solid #d6e3ef; border-radius: 13px; background: #f8fbfe; }
.evaluator-privacy b { color: #52769f; font-size: 12px; }
.evaluator-privacy p { margin: 7px 0 0; color: #7a899d; font-size: 11px; line-height: 1.7; }
.evaluator-main { min-width: 0; }
.evaluator-page .eval-wrap { max-width: 980px; padding: 42px clamp(22px, 5vw, 64px) 80px; }
.evaluator-page .eval-head { padding-bottom: 20px; margin-bottom: 24px; border-bottom: 0; }
.evaluator-page .eval-kicker { color: #8090a3; font-size: 11px; font-weight: 700; letter-spacing: .12em; }
.evaluator-page .eval-head h1 { margin: 8px 0 7px; color: #253349; font-family: "Microsoft YaHei", "PingFang SC", "Heiti SC", sans-serif; font-size: 32px; font-weight: 700; }
.evaluator-page .eval-meta { margin: -8px 0 18px; padding: 13px 16px; border-radius: 10px; background: #eef4fa; color: #61758c; }
.evaluator-page .info-card, .evaluator-page .sel-card { padding: 20px 22px; border-color: #dfe7ef; border-radius: 15px; background: #eaf3fb; }
.evaluator-page .info-card .row .k { color: #6f8095; }
.evaluator-page .dim-block, .evaluator-page .open-block { padding: 22px 24px; border-color: #e2e8f0; border-radius: 15px; background: #fff; box-shadow: 0 6px 20px rgba(71, 88, 108, .04); }
.evaluator-page .dim-title { color: #253349; font-size: 16px; font-weight: 700; }
.evaluator-page .dim-weight { padding: 4px 9px; border-radius: 20px; background: #eef4fa; color: #6280a1; }
.evaluator-page .item-row { padding: 12px 0 16px; border-bottom: 1px solid #eef2f6; }
.evaluator-page .item-row:last-of-type { border-bottom: 0; }
.evaluator-page .item-text { color: #34455a; font-size: 14px; }
.evaluator-page .slider-line input[type=range] { accent-color: #6688b1; }
.evaluator-page .score-badge { background: #edf4fa; color: #4e7095; font-weight: 700; }
.evaluator-page .score-num:focus { outline-color: #6688b1; }
.evaluator-page .open-block label { color: #253349; font-weight: 700; }
.evaluator-page .open-block textarea { min-height: 105px; padding: 13px; border-color: #d9e1e9; }
.evaluator-page .submit-bar { padding: 16px 0 0; background: rgba(248, 250, 252, .96); border-color: #e3e8ee; }
.evaluator-page .submit-bar .btn-primary { background: #6688b1; border-color: #6688b1; min-width: 126px; font-weight: 700; }
.evaluator-page .receipt { padding: 52px 30px; border-color: #e2e8f0; border-radius: 18px; background: #fff; }
.evaluator-page .receipt .big { color: #52779f; }
.evaluator-page .sel-field select { border-color: #d5dfe9; }

@media (max-width: 760px) {
  .evaluator-shell { display: block; }
  .evaluator-side { position: relative; height: auto; padding: 18px 20px; }
  .evaluator-side nav { grid-template-columns: 1fr 1fr; margin-top: 18px; }
  .evaluator-privacy { display: none; }
  .evaluator-page .eval-wrap { padding: 28px 16px 64px; }
  .evaluator-page .eval-head h1 { font-size: 26px; }
  .evaluator-page .dim-block, .evaluator-page .open-block { padding: 18px 16px; }
  .evaluator-page .slider-line { gap: 7px; }
  .evaluator-page .score-num { width: 58px; }
  .evaluator-page .score-badge { min-width: 50px; }
  .evaluator-page .submit-bar { align-items: flex-end; gap: 12px; }
  .evaluator-page .total-preview { max-width: 180px; }
}

/* 评价人统一门户 */
.portal-page { background: #f8fafc; color: #253349; }
.portal-login { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: linear-gradient(135deg,#edf4fa 0%,#f8fafc 48%,#eef5fb 100%); }
.portal-login-card { width: min(430px,100%); padding: 34px; border: 1px solid #dfe7ef; border-radius: 22px; background: rgba(255,255,255,.96); box-shadow: 0 20px 60px rgba(65,84,107,.12); }
.portal-login-brand { display: flex; align-items: center; gap: 11px; }
.portal-login-brand > span { width: 40px; height: 40px; border-radius: 11px; display: grid; place-items: center; background: #dceaf7; color: #4d7097; font-size: 19px; font-weight: 700; }
.portal-login-brand > div { display: grid; gap: 2px; }
.portal-login-brand b { font-size: 14px; }
.portal-login-brand small { color: #8a97a7; font-size: 10px; }
.portal-login-copy { margin: 34px 0 26px; }
.portal-login-copy > span { color: #7c8c9f; font-size: 10px; font-weight: 700; letter-spacing: .13em; }
.portal-login-copy h1 { margin: 8px 0 10px; font-size: 28px; }
.portal-login-copy p { margin: 0; color: #78879a; font-size: 12px; line-height: 1.7; }
.portal-login form { display: grid; gap: 15px; }
.portal-login label { color: #53667c; font-size: 12px; font-weight: 700; }
.portal-login input { height: 44px; margin-top: 3px; border-color: #d7e0e9; background: #fbfcfd; }
.portal-login input:focus { border-color: #6688b1; box-shadow: 0 0 0 3px rgba(102,136,177,.12); }
.portal-primary { height: 45px; border: 0; border-radius: 9px; background: #6688b1; color: #fff; font-weight: 700; cursor: pointer; }
.portal-primary:disabled { opacity: .55; }
.portal-error { min-height: 16px; color: #b6574c; font-size: 11px; }
.portal-security { margin-top: 22px; padding-top: 17px; border-top: 1px solid #edf0f3; color: #8b97a6; font-size: 10px; line-height: 1.6; }
.portal-page .evaluator-side nav button { width: 100%; border: 0; padding: 14px 16px; border-radius: 10px; background: transparent; color: #718197; text-align: left; font-weight: 700; cursor: pointer; }
.portal-page .evaluator-side nav button.active { background: #dce9f5; color: #345b87; }
.portal-user { display: grid; grid-template-columns: 36px 1fr auto; gap: 10px; align-items: center; margin-top: 16px; padding: 17px 4px 0; border-top: 1px solid #d6e1ec; }
.portal-user > span { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: #d7e6f4; color: #466889; font-weight: 700; }
.portal-user > div { display: grid; gap: 3px; }
.portal-user b { font-size: 12px; }
.portal-user small { max-width: 110px; overflow: hidden; color: #8796a9; font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.portal-user button { border: 0; background: transparent; color: #7e8da0; font-size: 10px; cursor: pointer; }
.portal-content { width: 100%; max-width: 1250px; padding: 46px clamp(26px,6vw,80px); }
.portal-content header { margin-bottom: 28px; }
.portal-content header h1 { margin: 8px 0; font-size: 34px; }
.portal-content header p { margin: 0; color: #7d8b9d; font-size: 12px; }
.portal-progress { display: grid; grid-template-columns: 170px 1fr; gap: 18px; align-items: center; padding: 22px 26px; border-radius: 16px; background: #eaf3fb; }
.portal-progress > div:first-child { display: grid; gap: 6px; }
.portal-progress span { color: #697d94; font-size: 11px; }
.portal-progress strong { font-size: 30px; }
.portal-progress strong small { font-size: 12px; font-weight: 400; }
.portal-progress-bar { height: 7px; overflow: hidden; border-radius: 10px; background: #d7e5f1; }
.portal-progress-bar i { display: block; height: 100%; border-radius: 10px; background: #6688b1; }
.portal-progress p { grid-column: 2; margin: -9px 0 0; color: #72869c; font-size: 10px; }
.portal-section-title { display: flex; justify-content: space-between; margin: 30px 0 14px; }
.portal-section-title h2 { margin: 0; font-size: 16px; }
.portal-section-title p { margin: 6px 0 0; color: #8a96a5; font-size: 10px; }
.portal-task { display: flex; align-items: center; gap: 17px; margin-bottom: 11px; padding: 19px 21px; border: 1px solid #e2e8f0; border-left: 4px solid #8eabd0; border-radius: 14px; background: #fff; }
.portal-task.done { border-left-color: #cad5df; opacity: .8; }
.portal-task-avatar { width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center; background: #e4eef7; color: #52749a; font-weight: 700; }
.portal-task-main { flex: 1; }
.portal-task-main > span { padding: 3px 6px; border: 1px solid #d4dee8; border-radius: 4px; color: #718198; font-size: 9px; }
.portal-task-main h3 { display: inline; margin: 0 10px; font-size: 15px; }
.portal-task-main p { margin: 6px 0 4px; color: #718095; font-size: 11px; }
.portal-task-main small { color: #95a0ad; font-size: 9px; }
.portal-task > a { padding: 11px 16px; border-radius: 8px; background: #6688b1; color: #fff; font-size: 11px; font-weight: 700; text-decoration: none; }
.portal-done { padding: 7px 10px; border-radius: 20px; background: #edf4fa; color: #5d7e9f; font-size: 10px; }
.portal-empty { margin: 30px auto; padding: 58px 24px; border: 1px solid #e3e8ee; border-radius: 17px; background: #fff; text-align: center; }
.portal-empty > span { width: 58px; height: 58px; margin: auto; border-radius: 16px; display: grid; place-items: center; background: #e7f0f8; color: #6688b1; font-size: 22px; }
.portal-empty h2 { margin: 18px 0 8px; font-size: 19px; }
.portal-empty p { margin: 0; color: #8491a1; font-size: 11px; }
.portal-report-card { display: flex; align-items: center; justify-content: space-between; margin-bottom: 11px; padding: 22px; border: 1px solid #e2e8f0; border-radius: 14px; background: #fff; }
.portal-report-card span { color: #5e7fa3; font-size: 9px; font-weight: 700; letter-spacing: .08em; }
.portal-report-card h3 { margin: 7px 0; font-size: 15px; }
.portal-report-card p { margin: 0; color: #8995a4; font-size: 10px; }
.portal-report-card button,.portal-back { border: 0; background: transparent; color: #567da7; font-size: 11px; font-weight: 700; cursor: pointer; }
.portal-back { padding: 0 0 14px; }
.portal-report-detail { padding: 30px; border: 1px solid #e2e8f0; border-radius: 17px; background: #fff; }
.portal-report-head { display: flex; justify-content: space-between; align-items: center; padding-bottom: 24px; border-bottom: 1px solid #edf0f3; }
.portal-report-head span,.portal-report-head p { color: #8190a1; font-size: 10px; }
.portal-report-head h2 { margin: 7px 0; font-size: 20px; }
.portal-history-note { padding:10px 12px; margin:14px 0 0; border-left:3px solid #6f91ae; background:#f2f7fa; color:#60778b; font-size:11px; }
.portal-score { text-align: center; }
.portal-score strong { display: block; color: #52779f; font-size: 36px; }
.portal-score small { color: #6d7e92; font-size: 10px; }
.portal-dimensions { display: grid; gap: 13px; margin: 25px 0; }
.portal-dimensions > div { display: grid; grid-template-columns: 150px 1fr 40px; gap: 12px; align-items: center; font-size: 11px; }
.portal-dimensions i { height: 8px; overflow: hidden; border-radius: 10px; background: #edf2f6; }
.portal-dimensions i b { display: block; height: 100%; border-radius: 10px; background: #86a5c5; }
.portal-report-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.portal-report-columns article { padding: 20px; border-radius: 12px; background: #f6f9fb; }
.portal-report-columns h3 { margin: 0 0 12px; font-size: 13px; }
.portal-report-columns ul { margin: 0; padding-left: 18px; }
.portal-report-columns li { margin: 7px 0; color: #5e7085; font-size: 11px; line-height: 1.6; }
.portal-loading { padding: 50px; color: #8995a4; text-align: center; font-size: 11px; }
@media(max-width:760px){.portal-login-card{padding:28px 22px}.portal-content{padding:28px 16px}.portal-content header h1{font-size:26px}.portal-progress{grid-template-columns:110px 1fr;padding:19px}.portal-task{align-items:flex-start;flex-wrap:wrap}.portal-task-main{min-width:calc(100% - 65px)}.portal-task>a{width:100%;text-align:center}.portal-report-detail{padding:20px 15px}.portal-dimensions>div{grid-template-columns:100px 1fr 32px}.portal-report-columns{grid-template-columns:1fr}}

/* ============ 批量导入向导 ============ */
.imp-steps { display: flex; gap: 8px; margin-bottom: 18px; }
.imp-step { flex: 1; display: flex; align-items: center; gap: 8px; padding: 9px 12px; border-radius: 8px;
  background: #f4f6f9; color: #9aa5b1; font-size: 13px; font-weight: 600; }
.imp-step i { width: 20px; height: 20px; border-radius: 50%; background: #d9dee7; color: #fff;
  display: flex; align-items: center; justify-content: center; font-style: normal; font-size: 12px; }
.imp-step.active { background: #e8f0fe; color: #1f3a5f; }
.imp-step.active i { background: #1f3a5f; }

.drop-zone { border: 2px dashed #cfd8e3; border-radius: 12px; padding: 40px 20px; text-align: center;
  cursor: pointer; transition: .15s; background: #fbfcfe; }
.drop-zone:hover, .drop-zone.over { border-color: #1f3a5f; background: #f2f6fc; }
.drop-zone.loading { opacity: .6; pointer-events: none; }
.dz-icon { font-size: 34px; margin-bottom: 8px; }
.dz-main { font-size: 15px; color: #1f2d3d; font-weight: 600; }
.dz-sub { font-size: 12px; color: #9aa5b1; margin-top: 6px; }
.imp-tips { margin-top: 14px; font-size: 12.5px; color: #64748b; line-height: 1.7; background: #f7f9fc;
  border-radius: 8px; padding: 10px 12px; }
.link-dl { color: #185FA5; margin-left: 6px; }

.imp-summary { background: #f7f9fc; border-radius: 8px; padding: 12px 14px; margin-bottom: 14px; }
.sum-file { font-size: 13px; color: #1f2d3d; margin-bottom: 8px; }
.sum-nums { display: flex; gap: 18px; flex-wrap: wrap; }
.sum-nums .sn { font-size: 12px; color: #64748b; display: flex; align-items: baseline; gap: 5px; }
.sum-nums .sn b { font-size: 18px; color: #1f3a5f; }
.sum-nums .sn.ok b { color: #1e7e4f; }
.sum-nums .sn.warn b { color: #b9750a; }
.sum-nums .sn.bad b { color: #c0392b; }
.sum-nums.big .sn b { font-size: 26px; }
.sum-warn { margin-top: 8px; font-size: 12px; color: #b9750a; }

.imp-block { margin-top: 16px; }
.imp-block h4 { font-size: 13px; color: #1f3a5f; margin-bottom: 8px; font-weight: 700; }
.imp-block h4 .muted { font-weight: 400; color: #9aa5b1; font-size: 12px; }
.imp-mapping { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px 12px; }
.map-item { display: flex; align-items: center; gap: 6px; font-size: 12.5px; }
.map-lbl { flex: 0 0 66px; color: #64748b; text-align: right; }
.map-item.req .map-lbl { color: #c0392b; font-weight: 600; }
.map-item select { flex: 1; min-width: 0; padding: 5px 6px; border: 1px solid #d9dee7; border-radius: 6px; font-size: 12.5px; }

.imp-preview { max-height: 260px; overflow: auto; border: 1px solid #eef1f5; }
.imp-preview table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.imp-preview th { position: sticky; top: 0; background: #f4f6f9; padding: 7px 9px; text-align: left;
  color: #64748b; font-weight: 600; white-space: nowrap; z-index: 1; }
.imp-preview td { padding: 6px 9px; border-top: 1px solid #f1f4f8; white-space: nowrap; }
.imp-preview tr.row-bad { background: #fff6f6; }
.tag.new { background: #e6f7ee; color: #1e7e4f; }
.tag.exist { background: #fef3e0; color: #b9750a; }
.tag.bad { background: #fdecec; color: #c0392b; }

.imp-strategy { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.imp-strategy label { display: flex; align-items: baseline; gap: 6px; padding: 9px 11px; border: 1px solid #e6eaf0;
  border-radius: 8px; cursor: pointer; font-size: 12.5px; }
.imp-strategy label:hover { border-color: #1f3a5f; }
.imp-strategy label b { color: #1f2d3d; white-space: nowrap; }
.imp-strategy label span { color: #9aa5b1; font-size: 11.5px; line-height: 1.5; }
.imp-defaults { margin-top: 10px; font-size: 12.5px; color: #64748b; display: flex; align-items: center; gap: 8px; }
.imp-defaults select { padding: 5px 8px; border: 1px solid #d9dee7; border-radius: 6px; font-size: 12.5px; }

.res-hero { font-size: 20px; font-weight: 700; color: #1f3a5f; text-align: center; margin: 10px 0 18px; }
.fail-list { margin: 0; padding-left: 18px; font-size: 12.5px; color: #c0392b; line-height: 1.8; }

/* ============ 评价关系 ============ */
.rel-chip { display: inline-block; padding: 2px 7px; margin-right: 4px; border-radius: 10px;
  font-size: 11.5px; font-weight: 600; background: #eef1f5; color: #64748b; }
.rel-chip.r-上级 { background: #e8f0fe; color: #1f3a5f; }
.rel-chip.r-同级 { background: #e6f7ee; color: #1e7e4f; }
.rel-chip.r-下级 { background: #fef3e0; color: #b9750a; }
.rel-chip.r-自评 { background: #f3e8fd; color: #6b3fa0; }
.op.go { color: #1e7e4f; font-weight: 600; }

.p-chip { display: inline-block; padding: 2px 8px; margin: 2px 4px 2px 0; border-radius: 10px;
  background: #f1f4f8; color: #1f2d3d; font-size: 12px; }
.p-chip.new { background: #fff4e5; color: #b9750a; }

/* 发起评价弹窗 */
.lc-cycle { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 13px; }
.lc-cycle select { flex: 1; min-width: 220px; padding: 6px 8px; border: 1px solid #d9dee7; border-radius: 6px; }
.lc-newbox { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 8px; margin-top: 10px; }
.lc-newbox input { padding: 6px 9px; border: 1px solid #d9dee7; border-radius: 6px; font-size: 13px; }

.lc-rel-box { border: 1px solid #eef1f5; border-radius: 8px; padding: 4px 12px 10px; }
.lc-group { display: flex; align-items: flex-start; gap: 10px; padding: 9px 0; border-bottom: 1px solid #f4f6f9; }
.lc-group:last-child { border-bottom: none; }
.lc-gname { flex: 0 0 46px; margin-top: 4px; padding: 2px 8px; border-radius: 10px;
  font-size: 12px; font-weight: 700; text-align: center; }
.lc-gname.r-上级 { background: #e8f0fe; color: #1f3a5f; }
.lc-gname.r-同级 { background: #e6f7ee; color: #1e7e4f; }
.lc-gname.r-下级 { background: #fef3e0; color: #b9750a; }
.lc-chips { display: flex; flex-wrap: wrap; gap: 7px; }
.lc-item { display: inline-flex; align-items: center; gap: 5px; padding: 4px 9px; border: 1px solid #e6eaf0;
  border-radius: 16px; font-size: 12.5px; cursor: pointer; background: #fff; }
.lc-item:hover { border-color: #1f3a5f; }
.lc-item.off { opacity: .45; }
.lc-item em { font-style: normal; font-size: 11px; padding: 1px 5px; border-radius: 8px; }
.lc-item .lc-warn { background: #fdecec; color: #c0392b; }
.lc-item .lc-new { background: #fff4e5; color: #b9750a; }
.lc-item .lc-del { color: #c9d1da; font-weight: 700; margin-left: 2px; }
.lc-item .lc-del:hover { color: #c0392b; }

.lc-add { display: flex; align-items: center; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.lc-add select, .lc-add input { padding: 6px 9px; border: 1px solid #d9dee7; border-radius: 6px; font-size: 13px; }
.lc-add input { width: 180px; }
.lc-chk { font-size: 12.5px; color: #64748b; display: flex; align-items: center; gap: 4px; }
.btn.small { padding: 5px 12px; font-size: 12.5px; }
#lc-links td.lnk { font-family: Consolas, Menlo, monospace; font-size: 11.5px; color: #185FA5; }

/* ============ 评价任务 · 平铺模式 ============ */
.search-input { flex: 0 1 280px; min-width: 200px; padding: 9px 12px; border: 1px solid #d9dee7; border-radius: 8px; font-size: 14px; }
.search-input:focus { outline: none; border-color: #1f3a5f; }
.btn.ghost { background: #f4f6fa; border-color: #e2e7ee; color: #4a5b70; }
.btn.ghost:hover { background: #eef2f7; color: #1f3a5f; border-color: #1f3a5f; }

.eval-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 14px; margin-top: 4px; }
.eval-card { background: #fff; border: 1px solid #eef1f5; border-radius: 12px; padding: 14px 16px;
  box-shadow: 0 1px 4px rgba(0,0,0,.05); cursor: pointer; transition: .15s; }
.eval-card:hover { transform: translateY(-2px); box-shadow: 0 6px 18px rgba(31,58,95,.12); border-color: #cdd8e6; }
.eval-card.active { border-color: #1f3a5f; box-shadow: 0 0 0 2px rgba(31,58,95,.18); }
.ec-selected { margin:-4px -6px 10px; padding:7px 9px; border-radius:7px; background:#e8f3ee; color:#34704d; font-size:11px; font-weight:700; }
.ec-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.ec-name { font-size: 15px; font-weight: 700; color: #1f2d3d; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ec-status { font-size: 11.5px; padding: 2px 9px; border-radius: 20px; white-space: nowrap; flex: 0 0 auto; }
.ec-status.待开始 { background: #f1f4f8; color: #8a96a5; }
.ec-status.进行中 { background: #e8f0fe; color: #1f3a5f; }
.ec-status.已完成 { background: #e6f7ee; color: #1e7e4f; }
.ec-dept { font-size: 12px; color: #9aa5b1; margin: 4px 0 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ec-progress { margin-bottom: 10px; }
.ec-bar { height: 7px; background: #eef1f5; border-radius: 6px; overflow: hidden; }
.ec-bar > span { display: block; height: 100%; background: #4a90d9; border-radius: 6px; transition: width .3s; }
.ec-progress-text { font-size: 11.5px; color: #6b7888; margin-top: 5px; }
.ec-levels { display: flex; flex-wrap: wrap; gap: 5px; }
.ec-chip { font-size: 11px; font-weight: 600; padding: 2px 8px; border-radius: 10px; background: #eef1f5; color: #64748b; }
.ec-chip.r-上级 { background: #e8f0fe; color: #1f3a5f; }
.ec-chip.r-同级 { background: #e6f7ee; color: #1e7e4f; }
.ec-chip.r-下级 { background: #fef3e0; color: #b9750a; }
.ec-chip.r-自评 { background: #f3e8fd; color: #6b3fa0; }
.task-detail { margin-top: 18px; }
.task-selection-notice { display:flex; align-items:center; gap:12px; margin-bottom:12px; padding:11px 14px; border-left:4px solid #3d7b5a; border-radius:8px; background:#edf7f1; color:#526f60; font-size:12px; }
.task-selection-notice b { color:#2e6848; font-size:13px; }
.detail-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; gap: 10px; flex-wrap: wrap; }
.detail-title { font-size: 15px; font-weight: 600; color: #1f3a5f; }
.empty { color: #9aa5b1; text-align: center; padding: 32px 16px; font-size: 13.5px; }

/* 评价任务内的关系树视图 */
.rel-tree-panel { margin-top: 16px; }
.rel-tree-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; margin-top: 12px; }
.tree-card { background: #fff; border: 1px solid #eef1f5; border-radius: 10px; padding: 14px 16px; box-shadow: 0 1px 3px rgba(0,0,0,.04); }
.tree-card .tc-head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.tree-card .tc-head b { font-size: 15px; }
.tc-scope { font-size: 11.5px; padding: 2px 8px; border-radius: 10px; }
.tc-scope.cycle { background: #e7f3ff; color: #185fa5; }
.tc-scope.baseline { background: #eef1f5; color: #6b7888; }
.tc-scope + .op.go { margin-left: auto; }
.tc-body { display: flex; flex-direction: column; gap: 6px; }
.tc-group { display: flex; align-items: flex-start; gap: 8px; }
.tc-label { flex: 0 0 44px; padding: 2px 0; font-size: 12px; font-weight: 600; text-align: center; border-radius: 6px; margin-top: 2px; }
.tc-label.r-上级 { background: #e8f0ff; color: #2b6cb0; }
.tc-label.r-同级 { background: #e6f7ec; color: #2f8a55; }
.tc-label.r-下级 { background: #fff3e6; color: #c4761a; }
.tc-label.r-自评 { background: #f3e8fd; color: #6b3fa0; }
.tc-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.p-chip.off { opacity: .55; text-decoration: line-through; }

/* 关系导入弹窗中的周期提示条 */
.rel-cycle-hint { font-size: 13px; padding: 9px 12px; border-radius: 8px; margin-bottom: 12px; }
.rel-cycle-hint.cycle { background: #e7f3ff; color: #185fa5; }
.rel-cycle-hint.baseline { background: #fff7e6; color: #9a6b00; }

/* 工具栏按钮激活态 */
.btn.active { background: #185fa5; color: #fff; border-color: #185fa5; }

/* 评价任务内的访谈记录视图 */
.interview-panel { margin-top: 16px; }
.table-toolbar { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.table-toolbar .muted { color: #9aa5b1; font-size: 13px; }
#interview-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 10px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,.05); }
#interview-table th, #interview-table td { padding: 10px 12px; text-align: left; font-size: 13.5px; border-bottom: 1px solid #eef1f5; }
#interview-table th { background: #f7f9fc; color: #4a5b70; font-weight: 600; font-size: 12.5px; }
#interview-table tbody tr:hover { background: #fafbfd; }
.itv-detail-row td { background: #fbfcfe; padding: 0 !important; }
.itv-detail { padding: 12px 16px 14px 28px; display: flex; flex-direction: column; gap: 7px; }
.itv-detail .itv-sec { display: flex; gap: 10px; font-size: 13px; line-height: 1.6; }
.itv-detail .itv-sec .sp { flex: 0 0 120px; color: #185fa5; font-weight: 600; }
.itv-detail .itv-sec .txt { flex: 1; white-space: pre-wrap; color: #1f2d3d; }

/* 面谈记录录入弹窗：文件识别区 */
.itv-upload { border: 1px dashed #d3dae4; border-radius: 10px; padding: 12px 14px; margin: 4px 0 4px; background: #fafbfd; }
.itv-upload-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 13px; color: #4a5b70; }
.itv-upload-head input[type=file] { flex: 1 1 200px; min-width: 160px; font-size: 12.5px; }


/* ============ 人员档案：勾选 / 批量 / 字段管理 ============ */
#people-table .col-check { width: 34px; text-align: center; }
#people-table td.col-check { text-align: center; }
#people-table .col-cf { background: #f3f7fb; }

.batch-bar {
  display: flex; align-items: center; gap: 12px;
  background: #eef4fb; border: 1px solid #cfe0f2; border-radius: 8px;
  padding: 8px 14px; margin: 2px 0 12px;
}
.batch-count { font-size: 13.5px; font-weight: 600; color: #2f5496; }

#custom-fields { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px 14px; margin-top: 8px; padding-top: 10px; border-top: 1px dashed #e1e6ee; }
#custom-fields .cf-title { grid-column: 1 / -1; font-size: 12px; font-weight: 600; color: #8a97a8; letter-spacing: .5px; }

.field-add { display: flex; gap: 8px; flex-wrap: wrap; margin: 12px 0; align-items: center; }
.field-add input, .field-add select { padding: 7px 10px; border: 1px solid #d7dee8; border-radius: 7px; font-size: 13px; }
.field-add input.grow { flex: 1 1 220px; }
.field-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.field-table th, .field-table td { padding: 8px 10px; border-bottom: 1px solid #eef1f5; text-align: left; }
.field-table th { background: #f7f9fc; color: #4a5b70; font-weight: 600; font-size: 12.5px; }
.field-table .cf-opts { color: #6b7785; font-size: 12px; }

.batch-form { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 8px 0; }
.batch-form label { display: flex; flex-direction: column; gap: 5px; font-size: 12.5px; color: #4a5b70; font-weight: 600; }
.batch-form label.full { grid-column: 1 / -1; font-weight: 400; color: #8a97a8; }
.batch-form input, .batch-form select { padding: 8px 10px; border: 1px solid #d7dee8; border-radius: 7px; font-size: 13.5px; font-weight: 400; }

/* ============ 评估标准及分值 ============ */
.standards-layout { display: grid; grid-template-columns: 260px 1fr; gap: 18px; align-items: start; margin-top: 14px; }
.template-list { display: flex; flex-direction: column; gap: 10px; }
.tpl-card { background: #fff; border: 1px solid #e6eaf0; border-radius: 10px; padding: 12px 14px; cursor: pointer; box-shadow: 0 1px 3px rgba(0,0,0,.05); transition: .15s; }
.tpl-card:hover { border-color: #b9c9dd; }
.tpl-card.active { border-color: #2e75b6; box-shadow: 0 0 0 2px rgba(46,117,182,.15); }
.tpl-card .t-name { font-weight: 600; color: #1f3a5f; font-size: 14px; display: flex; align-items: center; gap: 6px; }
.tpl-card .t-desc { color: #6b7888; font-size: 12px; margin-top: 4px; line-height: 1.5; }
.tpl-card .t-meta { color: #9aa5b1; font-size: 11.5px; margin-top: 6px; }
.badge-default { font-size: 10.5px; padding: 1px 7px; border-radius: 10px; background: #e6f7ee; color: #1e7e4f; font-weight: 600; }
.template-detail { background: #fff; border: 1px solid #e6eaf0; border-radius: 12px; padding: 18px 20px; box-shadow: 0 1px 4px rgba(0,0,0,.05); }
.tpl-d-title { font-size: 18px; font-weight: 700; color: #1f3a5f; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.tpl-d-actions { margin: 12px 0 18px; display: flex; gap: 8px; flex-wrap: wrap; }
.std-block { margin-bottom: 22px; }
.std-block h4 { font-size: 14px; color: #2e75b6; margin-bottom: 10px; border-left: 3px solid #2e75b6; padding-left: 9px; }
.std-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.std-table th, .std-table td { padding: 9px 12px; border-bottom: 1px solid #eef1f5; text-align: left; vertical-align: top; }
.std-table th { background: #f7f9fc; color: #4a5b70; font-weight: 600; font-size: 12.5px; }
.std-table td .w { font-weight: 700; color: #1f3a5f; }
.std-table .items { margin: 0; padding-left: 18px; color: #3a4760; line-height: 1.7; }
.std-table .lv-tag { display: inline-block; padding: 2px 9px; border-radius: 6px; font-size: 12px; font-weight: 600; }
.lv-上级 { background: #e8f0ff; color: #2b6cb0; }
.lv-下级 { background: #fff3e6; color: #c4761a; }
.lv-同级 { background: #e6f7ec; color: #2f8a55; }
.lv-自评 { background: #f3e8fd; color: #6b3fa0; }
.dims-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(330px, 1fr)); gap: 16px; }
.dim-card { border: 1px solid #e6eaf0; border-radius: 10px; padding: 12px 14px; background: #fbfcfe; }
.dim-card .dim-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.scale-note { font-size: 12.5px; color: #6b7888; }
.rate-action { color: #6b7888; font-size: 12.5px; }
/* 模版编辑器 */
.tpl-subhead { font-size: 13px; font-weight: 600; color: #4a5b70; margin: 14px 0 8px; }
.tpl-weights { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px,1fr)); gap: 10px; }
.tpl-weights label { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; color: #4a5b70; font-weight: 600; }
.tpl-weights input { padding: 7px 10px; border: 1px solid #d7dee8; border-radius: 7px; font-size: 13.5px; font-weight: 400; }
.tpl-dims .lv-block { border: 1px solid #e6eaf0; border-radius: 10px; padding: 12px 14px; margin-bottom: 12px; }
.tpl-dims .lv-block > .lv-title { font-weight: 600; color: #1f3a5f; margin-bottom: 8px; }
.dim-edit-row { border-top: 1px dashed #e6eaf0; padding-top: 8px; margin-top: 8px; }
.dim-edit-row label { display: block; font-size: 12px; color: #6b7888; margin: 6px 0 3px; }
.dim-edit-row input, .dim-edit-row textarea { width: 100%; padding: 6px 9px; border: 1px solid #d7dee8; border-radius: 6px; font-size: 13px; font-weight: 400; box-sizing: border-box; }
.dim-edit-row textarea { resize: vertical; min-height: 54px; }
.row-inline { display: flex; gap: 8px; align-items: center; }
.row-inline .grow { flex: 1; }
.muted { color: #9aa5b1; }

/* ============ 评价任务 访谈内嵌 ============ */
.ec-itv { font-size: 11.5px; color: #1f3a5f; line-height: 1.5; margin: 6px 0 2px; background: #f5f7fb; border: 1px dashed #c8d2e0; border-radius: 6px; padding: 6px 9px; word-break: break-all; cursor: pointer; transition: .15s; }
.ec-itv:hover { background: #ebf1fa; border-color: #2e75b6; }
.ec-itv b { color: #2e75b6; }
.ec-itv-add { font-size: 12px; color: #6b7888; margin: 6px 0 2px; padding: 5px 9px; border: 1px dashed #d0d8e3; border-radius: 6px; cursor: pointer; text-align: center; transition: .15s; }
.ec-itv-add:hover { color: #2e75b6; border-color: #2e75b6; background: #f5f7fb; }
.itv-cell { font-size: 12px; color: #3a4760; max-width: 220px; word-break: break-all; line-height: 1.5; }
.itv-cell.muted { color: #bcc4cf; }
.iv-mini { display: block; padding: 4px 6px; border-radius: 5px; cursor: pointer; transition: .15s; }
.iv-mini:hover { background: #ebf1fa; }
.iv-mini.iv-add { color: #6b7888; text-align: center; border: 1px dashed #d0d8e3; }
.iv-mini.iv-add:hover { color: #2e75b6; border-color: #2e75b6; background: #f5f7fb; }
.iv-mini b { color: #2e75b6; }

/* 上传评价表附件列表 */
.upload-list { display: flex; flex-direction: column; gap: 8px; }
.upload-item { display: flex; align-items: center; gap: 12px; padding: 8px 10px; border: 1px solid #e3e8ef; border-radius: 8px; background: #fafbfd; font-size: 13px; }
.upload-item .up-name { font-weight: 600; color: #2e3a4d; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 260px; }
.upload-item .up-meta { color: #9aa5b1; font-size: 12px; }
.upload-item .op { color: #1f3a5f; cursor: pointer; margin-left: 4px; }
.upload-item .op.del { color: #c0392b; }
.upload-item .op:hover { text-decoration: underline; }


/* 关系树手动编辑 */
.rel-edit-list { display: flex; flex-direction: column; }
.rel-edit-row { display: flex; align-items: center; gap: 10px; padding: 9px 4px; border-bottom: 1px solid #f2f4f7; font-size: 14px; }
.rel-edit-row .muted { font-size: 12px; }
.rel-edit-row .op.del { font-size: 13px; }

/* ============ 自定义拖拽统计 ============ */
.custom-stats { background: #fff; border: 1px solid #eef1f5; border-radius: 10px; padding: 18px 20px; margin-top: 18px; box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.cs-title { font-size: 15px; color: #1f3a5f; margin-bottom: 4px; display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.cs-title .cs-hint { font-size: 12px; font-weight: 400; color: #9aa5b1; }
.cs-field-pool { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 16px; }
.cs-chip { padding: 6px 14px; border-radius: 16px; font-size: 13px; cursor: grab; user-select: none; border: 1px solid #d9dee7; background: #f4f6f9; color: #3a4760; transition: .12s; }
.cs-chip:hover { border-color: #1f3a5f; background: #eef3fb; }
.cs-chip:active { cursor: grabbing; }
.cs-chip.num { background: #fff3e6; border-color: #f0d8b0; color: #b9750a; }
.cs-chip.num:hover { border-color: #b9750a; background: #fdeccd; }
.cs-slots { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.cs-slot { border: 2px dashed #d3dae4; border-radius: 10px; padding: 12px 14px; background: #fafbfd; min-height: 70px; transition: .12s; }
.cs-slot.drag-over { border-color: #1f3a5f; background: #eef3fb; }
.cs-slot-h { font-size: 13px; font-weight: 600; color: #4a5b70; margin-bottom: 8px; display: flex; flex-direction: column; gap: 2px; }
.cs-slot-sub { font-size: 11.5px; font-weight: 400; color: #9aa5b1; }
.cs-slot-body { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.cs-pill { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 14px; font-size: 13px; background: #e8f0fe; color: #1f3a5f; border: 1px solid #cfe0f2; }
.cs-pill.num { background: #fff3e6; color: #b9750a; border-color: #f0d8b0; }
.cs-pill b { cursor: pointer; font-weight: 700; opacity: .6; }
.cs-pill b:hover { opacity: 1; color: #c0392b; }
.cs-empty { font-size: 12.5px; color: #9aa5b1; }
.cs-empty.big { font-size: 14px; padding: 24px 0; text-align: center; width: 100%; }
.cs-actions { display: flex; align-items: center; gap: 10px; margin: 16px 0 10px; }
.cs-tip { font-size: 12.5px; color: #b9750a; }
.cs-result { margin-top: 6px; }
.cs-table-wrap { overflow-x: auto; border: 1px solid #eef1f5; border-radius: 10px; }
.cs-table { border-collapse: collapse; width: 100%; font-size: 13.5px; }
.cs-table th, .cs-table td { padding: 9px 12px; border-bottom: 1px solid #eef1f5; text-align: left; white-space: nowrap; }
.cs-table th { background: #f7f9fc; color: #4a5b70; font-weight: 600; font-size: 12.5px; }
.cs-table tbody tr:hover { background: #fafbfd; }
.cs-table tr.cs-sum td { background: #f2f5f9; font-weight: 600; color: #1f3a5f; }

/* ---- 展示方式切换 ---- */
.cs-view { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; background: #f4f6f9; border: 1px solid #e3e8f0; border-radius: 8px; }
.cs-view-label { font-size: 12.5px; color: #6b7685; margin-right: 2px; }
.cs-view-btn { padding: 4px 12px; font-size: 13px; border-radius: 6px; border: 1px solid #d3dae4; background: #fff; color: #4a5b70; }
.cs-view-btn.active { background: #1f3a5f; border-color: #1f3a5f; color: #fff; }

/* ---- 图表 ---- */
.cs-chart { margin-top: 10px; background: #fff; border: 1px solid #eef1f5; border-radius: 10px; padding: 14px; overflow-x: auto; }
.cs-chart svg { display: block; }
.cs-chart-pie { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; }
.cs-pie-svg { flex: 0 0 auto; }
.cs-legend { flex: 1 1 200px; min-width: 180px; display: flex; flex-direction: column; gap: 7px; }
.cs-legend-row { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #33415c; }
.cs-legend-dot { width: 12px; height: 12px; border-radius: 3px; flex: 0 0 auto; }
.cs-legend-label { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cs-legend-val { color: #6b7685; font-variant-numeric: tabular-nums; white-space: nowrap; }

/* ---- 双维度图形样式切换 ---- */
.cs-matrix-bar { display: none; align-items: center; gap: 6px; margin: 4px 0 10px; }
.cs-matrix-bar:not(:empty) { display: inline-flex; }
.cs-mv-label { font-size: 12.5px; color: #6b7685; margin-right: 2px; }
.cs-mv-btn { padding: 4px 12px; font-size: 13px; border-radius: 6px; border: 1px solid #d3dae4; background: #fff; color: #4a5b70; cursor: pointer; }
.cs-mv-btn.active { background: #1f3a5f; border-color: #1f3a5f; color: #fff; }

/* ---- 分面图（小型多图） ---- */
.cs-facet { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 10px; }
.cs-facet-item { background: #fff; border: 1px solid #eef1f5; border-radius: 10px; padding: 10px; }
.cs-facet-item svg { display: block; }

/* ---- 横向图例 ---- */
.cs-legend-inline { flex-direction: row; flex-wrap: wrap; margin-top: 12px; gap: 10px 16px; }

/* 统计分析工作台：一屏完成字段配置、透视和图表查看 */
.stats-page { max-width:none; min-height:calc(100vh - 72px); height:auto; padding:14px 20px 24px; overflow:visible; }
.stats-page-head { display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:10px; }
.stats-page-head span { color:#758a9d; font-size:10px; letter-spacing:.12em; }
.stats-page-head h2 { margin-top:1px; color:#263c50; font-size:20px; }
.stats-page-head p { color:#8b98a4; font-size:11px; }
.stats-page .stat-cards { grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px; margin-bottom:10px; }
.stats-page .stat-card { display:flex; align-items:baseline; justify-content:space-between; padding:9px 13px; border:1px solid #e5eaee; border-radius:8px; box-shadow:none; }
.stats-page .stat-card .num { color:#3d586d; font-size:22px; }
.stats-page .stat-card .lbl { margin:0; color:#81909c; font-size:11px; }
.stats-workbench { display:grid; grid-template-columns:250px minmax(0,1fr); gap:10px; min-height:548px; }
.custom-stats.cs-builder { margin:0; padding:14px; min-height:0; overflow:auto; border-color:#e2e8ec; border-radius:9px; box-shadow:none; }
.cs-builder .cs-title { align-items:center; justify-content:space-between; margin:0 0 10px; }
.cs-builder .cs-title>div { display:grid; gap:1px; }
.cs-builder .cs-title small { color:#8d99a4; font-size:10px; font-weight:400; }
.cs-builder .cs-title .btn { padding:4px 9px; font-size:11px; }
.cs-builder .cs-field-pool { display:grid; grid-template-columns:1fr 1fr; gap:5px; margin:0 0 12px; }
.cs-builder .cs-chip { padding:5px 8px; border-radius:6px; font-size:11px; text-align:center; }
.cs-builder .cs-chip.num { background:#f1f3f2; border-color:#d8dfdc; color:#687c75; }
.cs-builder .cs-slots { display:grid; grid-template-columns:1fr; gap:7px; }
.cs-builder .cs-slot { min-height:58px; padding:8px 9px; border-width:1px; border-radius:7px; }
.cs-builder .cs-slot-h { margin-bottom:5px; font-size:11px; }
.cs-builder .cs-slot-sub { font-size:9px; }
.cs-builder .cs-pill { padding:3px 8px; border-radius:5px; font-size:11px; }
.cs-builder .cs-empty { font-size:10px; }
.stats-canvas { display:grid; grid-template-rows:276px auto minmax(0,1fr); min-width:0; min-height:0; overflow:hidden; background:#fff; border:1px solid #e2e8ec; border-radius:9px; }
.stats-canvas .charts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-rows:138px 138px; gap:0; border-bottom:1px solid #e8edf0; }
.stats-canvas .chart-card:first-child { grid-column:1 / -1; }
.stats-canvas .chart-card { min-width:0; padding:10px 12px; border-radius:0; border-right:1px solid #edf0f2; box-shadow:none; overflow:hidden; }
.stats-canvas .chart-card:first-child,.stats-canvas .chart-card:nth-child(2) { border-bottom:1px solid #edf0f2; }
.stats-canvas .chart-card:last-child { border-right:0; }
.stats-canvas .chart-card h3 { margin-bottom:3px; color:#647788; font-size:11px; }
.stats-canvas .bars-v { height:105px; gap:5px; overflow:visible; }
.stats-canvas .vbar { max-width:26px; opacity:.9; }
.stats-canvas .vv,.stats-canvas .vl { font-size:9px; }
.stats-canvas .vl { min-height:24px; line-height:12px; white-space:normal; overflow:hidden; text-overflow:clip; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.stats-canvas #chart-wh { overflow-x:auto; overflow-y:hidden; padding-bottom:4px; }
.stats-canvas #chart-wh .bars-v { min-width:max-content; }
.stats-canvas #chart-wh .vcol { flex:0 0 58px; min-width:58px; }
.stats-canvas .cs-actions { justify-content:space-between; margin:0; padding:8px 12px; border-bottom:1px solid #edf0f2; }
.stats-canvas .cs-actions>div:first-child { display:flex; align-items:center; gap:10px; }
.stats-canvas .cs-actions b { color:#40586c; font-size:12px; }
.stats-canvas .cs-action-right { display:flex; align-items:center; gap:7px; }
.stats-canvas .cs-view { padding:2px 4px; background:#f2f4f5; border:0; }
.stats-canvas .cs-view-btn { padding:4px 9px; border:0; font-size:11px; }
.stats-canvas .cs-view-btn.active,.stats-canvas .cs-mv-btn.active { background:#536f82; border-color:#536f82; }
.stats-canvas .cs-tip { color:#8b7761; font-size:10px; }
.stats-canvas .cs-matrix-bar { margin:6px 12px 0; }
.stats-canvas .cs-result { min-height:0; margin:0; padding:8px 12px 12px; overflow:auto; }
.stats-canvas .cs-table-wrap { border-radius:6px; }
.stats-canvas .cs-table { font-size:11px; }
.stats-canvas .cs-table th,.stats-canvas .cs-table td { padding:6px 8px; }
.stats-canvas .cs-chart { margin:0; padding:6px; border:0; }
.stats-canvas .cs-chart svg { max-height:300px; }
@media(max-width:1000px){.stats-page{height:auto;overflow:visible}.stats-workbench{grid-template-columns:1fr;height:auto}.custom-stats.cs-builder{overflow:visible}.cs-builder .cs-field-pool{grid-template-columns:repeat(4,1fr)}.stats-canvas{min-height:620px}.stats-page .stat-cards{grid-template-columns:repeat(3,1fr)}}

/* ==================== 新建评价计划 · 4 步向导（阶段 B） ==================== */
.wiz-stepper { display: flex; gap: 0; padding: 16px 8px; border-bottom: 1px solid #eef1f5; }
.wiz-step { flex: 1; display: flex; align-items: center; justify-content: center; gap: 8px; padding: 8px 6px; color: #9aa5b1; font-size: 13.5px; font-weight: 600; border-bottom: 3px solid transparent; }
.wiz-step .num { width: 22px; height: 22px; border-radius: 50%; background: #e6ebf2; color: #6b7685; display: inline-flex; align-items: center; justify-content: center; font-size: 12.5px; }
.wiz-step.active { color: #1f3a5f; border-bottom-color: #1f3a5f; }
.wiz-step.active .num { background: #1f3a5f; color: #fff; }
.wiz-body { padding: 20px 22px; max-height: 60vh; overflow-y: auto; }
.wiz-pane { display: flex; flex-direction: column; gap: 14px; }
.wiz-h { font-size: 14px; color: #1f2d3d; margin-bottom: 2px; }
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.grid-2 label, .wiz-pane label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: #4a5b70; }
.grid-2 label.full, .wiz-pane label.full { grid-column: 1 / -1; }
.wiz-pane input, .wiz-pane select, .wiz-pane textarea { padding: 9px 11px; border: 1px solid #d9dee7; border-radius: 8px; font-size: 14px; font-family: inherit; }
.wiz-pane textarea { resize: vertical; }
.wiz-err { background: #fdeceb; color: #c0392b; border: 1px solid #f0c9c2; border-radius: 8px; padding: 10px 12px; font-size: 13px; }

/* 人员多选 */
.people-multi { border: 1px solid #d9dee7; border-radius: 8px; padding: 8px; background: #fff; position: relative; }
.pm-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.p-chip { display: inline-flex; align-items: center; gap: 6px; background: #eaf0f8; color: #1f3a5f; border-radius: 16px; padding: 4px 10px; font-size: 13px; }
.p-chip .x { cursor: pointer; font-weight: 700; color: #1f3a5f; opacity: .6; }
.p-chip .x:hover { opacity: 1; }
.pm-search { width: 100%; border: none; outline: none; padding: 6px 4px; font-size: 14px; background: transparent; }
.pm-results { position: absolute; left: 0; right: 0; top: calc(100% + 2px); background: #fff; border: 1px solid #d9dee7; border-radius: 8px; box-shadow: 0 6px 20px rgba(0,0,0,.1); z-index: 20; max-height: 240px; overflow-y: auto; }
.pm-item { padding: 9px 12px; cursor: pointer; border-bottom: 1px solid #f1f4f8; font-size: 13.5px; }
.pm-item:hover { background: #f4f7fb; }
.pm-empty { padding: 10px 12px; color: #9aa5b1; font-size: 13px; }

/* 步骤 2 模板预览 */
.wiz-tpl-bar { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.tpl-preview { border: 1px solid #eef1f5; border-radius: 10px; padding: 14px; background: #fff; }
.tpl-prev-head { font-size: 14px; color: #1f2d3d; margin-bottom: 12px; }
.tpl-lv { margin-bottom: 14px; }
.lv-tag { display: inline-block; padding: 2px 10px; border-radius: 12px; font-size: 12px; font-weight: 600; color: #fff; margin-right: 8px; }
.lv-上级 { background: #2e7d5b; } .lv-下级 { background: #b5791f; } .lv-同级 { background: #3b6fb0; } .lv-自评 { background: #7a5bb0; }
.tpl-dim-table { width: 100%; border-collapse: collapse; margin-top: 6px; font-size: 13px; }
.tpl-dim-table th, .tpl-dim-table td { padding: 8px 10px; border-bottom: 1px solid #eef1f5; text-align: left; }
.tpl-dim-table th { background: #f7f9fc; color: #4a5b70; font-weight: 600; }
.tpl-dim-table tr.tpl-sum td { background: #f2f5f9; font-weight: 600; color: #1f3a5f; }

/* 步骤 3 关系布局 */
.wiz-rel-layout { display: grid; grid-template-columns: 280px 1fr; gap: 18px; align-items: start; }
.wiz-rel-rules { border: 1px solid #eef1f5; border-radius: 10px; padding: 14px; background: #fbfcfe; }
.rule-table { width: 100%; border-collapse: collapse; font-size: 12.5px; margin-bottom: 12px; }
.rule-table th, .rule-table td { padding: 7px 8px; border-bottom: 1px solid #eef1f5; text-align: left; }
.rule-table th { background: #f2f5f9; color: #4a5b70; }
.btn.block { width: 100%; margin-top: 4px; }
.wiz-rel-tree .rel-tree-grid { max-height: 46vh; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; }

/* 步骤 4 发布确认 */
.wiz-summary { border: 1px solid #eef1f5; border-radius: 10px; padding: 14px 16px; background: #fbfcfe; }
.sum-row { display: flex; justify-content: space-between; gap: 16px; padding: 5px 0; border-bottom: 1px dashed #eef1f5; font-size: 13.5px; }
.sum-row:last-child { border-bottom: none; }
.sum-row span { color: #6b7685; }
.sum-row b { color: #1f2d3d; text-align: right; }
.sum-row .warn { color: #b5791f; }
.wiz-checks { display: flex; flex-direction: column; gap: 6px; margin-bottom: 6px; }
.chk { padding: 8px 12px; border-radius: 8px; font-size: 13.5px; border: 1px solid #e3e8f0; }
.chk.ok { background: #eaf6ee; border-color: #bfe3cb; color: #2e7d5b; }
.chk.warn { background: #fdf6e3; border-color: #f0e2b0; color: #9a7b1f; }
.chk.bad { background: #fdecea; border-color: #f3c9c2; color: #c0392b; }
.chk-bad-note { padding: 8px 12px; background: #fdecea; color: #c0392b; border-radius: 8px; font-size: 13px; margin-top: 4px; }
.wiz-channels { display: flex; gap: 18px; flex-wrap: wrap; font-size: 13.5px; color: #33415c; }
.copy-box { border: 1px solid #eef1f5; border-radius: 10px; background: #fff; padding: 12px; position: relative; }
.copy-box pre { white-space: pre-wrap; word-break: break-all; font-size: 13px; color: #33415c; margin-bottom: 10px; font-family: inherit; }
.wiz-foot { display: flex; gap: 10px; align-items: center; }

/* ==================== 评价任务 · 进度看板（阶段 C） ==================== */
.view-toggle { display: inline-flex; gap: 4px; }
.btn.toggle { background: #f2f5f9; color: #5a6675; border: 1px solid #dce2ea; }
.btn.toggle.active { background: #1f3a5f; color: #fff; border-color: #1f3a5f; }

.task-dashboard { display: flex; flex-direction: column; gap: 16px; margin-top: 4px; }
.dash-toolbar { display: flex; align-items: flex-start; gap: 16px; }
.kpi-cards { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; flex: 1; }
.kpi-card { background: #fff; border: 1px solid #e8edf3; border-radius: 12px; padding: 14px 16px; text-align: center; }
.kpi-card .kpi-val { font-size: 26px; font-weight: 700; color: #1f3a5f; line-height: 1.1; }
.kpi-card .kpi-label { font-size: 13px; color: #6b7685; margin-top: 4px; }
.kpi-card .kpi-sub { font-size: 12px; color: #9aa5b1; margin-top: 2px; }
.kpi-card.done .kpi-val { color: #2e7d5b; }
.kpi-card.doing .kpi-val { color: #3b6fb0; }
.kpi-card.notstart .kpi-val { color: #9a7b1f; }
.kpi-card.overdue { border-color: #f0c9c2; background: #fdf0ee; }
.kpi-card.overdue .kpi-val { color: #c0392b; }
.kpi-card.overdue .kpi-sub { color: #c0392b; }
.btn.remind { background: #fff4e6; color: #9a5b1f; border: 1px solid #f0d9b0; white-space: nowrap; }
.btn.remind:hover { background: #ffe9cc; }

.dash-overall { display: flex; align-items: center; gap: 14px; background: #fbfcfe; border: 1px solid #e8edf3; border-radius: 12px; padding: 12px 16px; }
.dash-overall-label { font-size: 13px; color: #6b7685; white-space: nowrap; }
.dash-bar { flex: 1; height: 14px; background: #e8edf3; border-radius: 8px; overflow: hidden; }
.dash-bar span { display: block; height: 100%; background: linear-gradient(90deg,#3b6fb0,#2e7d5b); border-radius: 8px; transition: width .3s; }
.dash-overall-text { font-size: 13px; color: #33415c; white-space: nowrap; }

.dash-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.dash-box { background: #fff; border: 1px solid #e8edf3; border-radius: 12px; padding: 16px; }
.dash-box-title { font-size: 14px; font-weight: 600; color: #1f2d3d; margin-bottom: 12px; }
.lvl-bars, .dept-bars { display: flex; flex-direction: column; gap: 10px; }
.lvl-row, .dept-row { display: flex; align-items: center; gap: 10px; }
.lvl-name { font-size: 13px; font-weight: 600; min-width: 48px; }
.lvl-name.r-上级 { color: #2e7d5b; } .lvl-name.r-同级 { color: #3b6fb0; } .lvl-name.r-下级 { color: #b5791f; } .lvl-name.r-自评 { color: #7a5bb0; }
.lvl-bar, .dept-bar { flex: 1; height: 10px; background: #eef1f5; border-radius: 6px; overflow: hidden; }
.lvl-bar span, .dept-bar span { display: block; height: 100%; background: #3b6fb0; border-radius: 6px; }
.dept-bar span { background: #2e7d5b; }
.lvl-pct, .dept-pct { font-size: 13px; color: #33415c; min-width: 42px; text-align: right; }
.dept-name { font-size: 13px; color: #4a5b70; min-width: 72px; }

.people-box { margin-top: 0; }
.people-wall { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.pcard { background: #fff; border: 1px solid #e8edf3; border-radius: 10px; padding: 12px; cursor: pointer; transition: box-shadow .15s, border-color .15s; }
.pcard:hover { box-shadow: 0 4px 14px rgba(0,0,0,.08); }
.pcard.active { border-color: #1f3a5f; box-shadow: 0 4px 14px rgba(31,58,95,.18); }
.pcard.overdue { border-color: #f0c9c2; background: #fdf0ee; }
.pcard-name { font-size: 14px; font-weight: 600; color: #1f2d3d; }
.pcard-dept { font-size: 12px; color: #9aa5b1; margin-bottom: 8px; }
.pcard-bar { height: 8px; background: #eef1f5; border-radius: 5px; overflow: hidden; margin-bottom: 8px; }
.pcard-bar span { display: block; height: 100%; background: #3b6fb0; border-radius: 5px; }
.pcard-foot { display: flex; align-items: center; gap: 6px; font-size: 12px; }
.pcard-status { padding: 1px 8px; border-radius: 10px; font-weight: 600; }
.pcard-status.已完成 { background: #eaf6ee; color: #2e7d5b; }
.pcard-status.进行中 { background: #eaf1fb; color: #3b6fb0; }
.pcard-status.未开始 { background: #fdf6e3; color: #9a7b1f; }
.pcard-overdue { color: #c0392b; font-weight: 700; }


/* ---- 报告 · 汇总评价 ---- */
.rep-summary { margin: 14px 0; }
.rep-summary .sum-row { display: flex; gap: 12px; padding: 10px 12px; border: 1px solid #e3e9f0; border-radius: 8px; margin-top: 8px; background: #f8fafc; }
.rep-summary .sum-row b { flex: 0 0 96px; color: #1f3a5f; }
.rep-summary .sum-row p { margin: 0; line-height: 1.7; color: #2c3e50; }
.rep-summary .sum-row.up { background: #f4faf0; border-color: #d8ead0; }
.rep-summary .sum-row.up b { color: #3b6d11; }
.rep-summary .sum-row.down { background: #fdf3f3; border-color: #f0dada; }
.rep-summary .sum-row.down b { color: #a32d2d; }
.rep-summary .sum-row.sug ul { margin: 0; padding-left: 18px; line-height: 1.8; color: #2c3e50; }

/* ---- 报告 · 各层级评价得分 / 分层级开放性评价（浅绿表头 + 浅黄关键列） ---- */
.eval-score-table td.ev-lv { font-weight: 700; text-align: center; vertical-align: middle; background: #eef6e9; }
.eval-score-table td.ev-name { text-align: center; }
.eval-score-table td.ev-score { text-align: center; font-weight: 700; color: #3f6b2f; }
.open-lv-table { table-layout: fixed; width: 890px; max-width: 100%; }
.open-lv-table th { background: #eef6e9; color: #3f6b2f; font-weight: 700; border: 1px solid #d8e7c8; }
.open-lv-table th:nth-child(1), .open-lv-table td:nth-child(1) { width: 90px; }
.open-lv-table th:nth-child(2), .open-lv-table td:nth-child(2) { width: 400px; }
.open-lv-table th:nth-child(3), .open-lv-table td:nth-child(3) { width: 400px; }
.open-lv-table td { border: 1px solid #e3ecd9; padding: 7px 6px; }
.open-lv-table td.ev-lv { font-weight: 700; text-align: center; vertical-align: middle; background: #eef6e9; }
.open-lv-table td.open-cell { line-height: 1.8; vertical-align: top; word-wrap: break-word; word-break: break-all; white-space: normal; }
.rep-summary .sum-list { margin: 0; padding-left: 20px; line-height: 1.9; color: #2c3e50; }

/* ---- 各层级评价得分（网页版精致风格 · 浅绿） ---- */
.eval-score-table { border-collapse: collapse; width: 100%; }
.eval-score-table th { background: #eef6e9; color: #3f6b2f; font-weight: 700; text-align: center; padding: 8px 6px; border: 1px solid #d8e7c8; }
.eval-score-table td { border: 1px solid #e3ecd9; padding: 7px 6px; }
.eval-score-table td.ev-lv { font-weight: 700; text-align: center; vertical-align: middle; background: #eef6e9; }
.eval-score-table td.ev-w, .eval-score-table td.ev-cnt { text-align: center; vertical-align: middle; color: #5a6b7d; }
.eval-score-table td.ev-name { text-align: center; }
.eval-score-table td.ev-score { text-align: center; font-weight: 600; color: #3f6b2f; }
.eval-score-table td.ev-mean { text-align: center; vertical-align: middle; font-weight: 700; color: #b9750a; font-size: 15px; background: #fff7e0; }
.eval-score-table tbody tr:hover td { background: #f6fbef; }
.eval-score-table tbody tr:hover td.ev-lv, .eval-score-table tbody tr:hover td.ev-w, .eval-score-table tbody tr:hover td.ev-cnt, .eval-score-table tbody tr:hover td.ev-mean { background: #e7f3da; }
.open-lv-table tbody tr:hover td { background: #f6fbef; }

/* 各层级评价得分 - 合并列 */
.eval-score-table td.ev-who { text-align: left; line-height: 1.7; padding: 8px 12px; }

/* ---- 汇总评价编辑 ---- */
.rep-summary h4 .op { margin-left: 10px; font-weight: 400; font-size: 12.5px; cursor: pointer; color: #185FA5; }
.sum-override-tag { margin-left: 8px; font-size: 11.5px; color: #9a7b1f; background: #fdf6e3; border-radius: 4px; padding: 2px 8px; font-weight: 400; }
.sum-row textarea { flex: 1; width: 100%; border: 1px solid #cfd8e3; border-radius: 6px; padding: 8px 10px; font-size: 13.5px; line-height: 1.8; font-family: inherit; resize: vertical; }
.sum-ops { display: flex; gap: 10px; align-items: center; margin-top: 10px; flex-wrap: wrap; }

/* ---- 评价任务 · 手工调整分数明细 ---- */
.ts-dim { margin-bottom: 10px; }
.ts-dim-name { font-weight: 700; color: #1f3a5f; margin-bottom: 4px; font-size: 13px; }
.ts-w { font-weight: 400; color: #8a97a6; font-size: 12px; margin-left: 2px; }
.ts-item { display: flex; align-items: center; gap: 10px; padding: 4px 0; }
.ts-item-text { flex: 1; font-size: 12.5px; color: #4a5b70; line-height: 1.5; }
.ts-score { width: 70px; flex: 0 0 70px; padding: 4px 6px; border: 1px solid #d4dde7; border-radius: 6px; text-align: center; font-size: 13px; }
.ts-score:focus { border-color: #4a90d9; outline: none; }
.te-open-field { display: block; margin-top: 14px; color: #40546a; font-size: 13px; font-weight: 600; }
.te-open-field textarea { display: block; width: 100%; margin-top: 6px; padding: 9px 10px; border: 1px solid #d4dde7; border-radius: 7px; color: #2c3e50; font: inherit; line-height: 1.65; resize: vertical; box-sizing: border-box; }
.te-open-field textarea:focus { border-color: #6f93bb; box-shadow: 0 0 0 3px rgba(74, 125, 180, .12); outline: none; }

/* ---- 提升计划 ---- */
.plan-tpl-box { margin-top: 20px; border: 1px solid #e3e8ef; border-radius: 10px; padding: 14px 16px; }
.plan-tpl-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.plan-tpl-head b { font-size: 14px; color: #1f3a5f; }
.plan-tpl-head .note { margin: 0; flex: 1; min-width: 200px; }
.plan-item-row { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; }
.plan-item-row .pi-dim { width: 150px; flex: 0 0 150px; padding: 7px 8px; border: 1px solid #d4dde7; border-radius: 6px; font-size: 13px; }
.plan-item-row .pi-content { flex: 1; padding: 7px 10px; border: 1px solid #d4dde7; border-radius: 6px; font-size: 13px; }
.plan-item-row .pi-days { width: 92px; flex: 0 0 92px; padding: 7px 8px; border: 1px solid #d4dde7; border-radius: 6px; font-size: 13px; }
.plan-item-row .pi-del { width: 30px; height: 32px; flex: 0 0 30px; border: none; background: #fcebeb; color: #c0392b; border-radius: 6px; cursor: pointer; font-size: 14px; }

.plan-card { max-width: 100%; border: 1px solid #e3e8ef; border-radius: 10px; margin-bottom: 16px; overflow: hidden; background: #fff; }
.plan-card-head { padding: 10px 14px; background: #f5f8fc; border-bottom: 1px solid #e3e8ef; display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.plan-card-head > div:first-child { display: flex; align-items: baseline; gap: 10px; }
.plan-card-head b { color: #1f3a5f; font-size: 14px; }
.plan-card-head span { color: #8a97a6; font-size: 12.5px; }
.plan-publish-ops { display: flex; align-items: center; gap: 8px; }
.plan-publish-state { padding: 3px 9px; border-radius: 999px; background: #f4efe1; color: #8a6b20 !important; font-weight: 600; }
.plan-publish-state.published { background: #e8f3ec; color: #347250 !important; }
.plan-confirm-state { padding: 3px 9px; border-radius: 999px; background: #e7f1fb; color: #396b98 !important; font-weight: 600; }
.plan-scroll-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 12px; border-bottom: 1px solid #e8edf2; background: #fbfcfd; }
.plan-scroll-bar > span { color: #7d8998; font-size: 12px; }
.plan-scroll-bar > div { display: flex; gap: 7px; }
.plan-scroll-bar .btn:disabled { opacity: .38; cursor: not-allowed; }
.plan-table-scroll { width: 100%; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-color: #b8c6d5 #eef2f5; scrollbar-width: thin; }
.plan-table-scroll::-webkit-scrollbar { height: 10px; }
.plan-table-scroll::-webkit-scrollbar-track { background: #eef2f5; }
.plan-table-scroll::-webkit-scrollbar-thumb { border: 2px solid #eef2f5; border-radius: 999px; background: #aebfd0; }
.plan-table { width: 100%; min-width: 1180px; border-collapse: collapse; }
.plan-table th { background: #fafbfd; color: #5a6b7d; font-weight: 600; text-align: left; padding: 8px 12px; border-bottom: 1px solid #e3e8ef; font-size: 12.5px; }
.plan-table td { padding: 8px 12px; border-bottom: 1px solid #f0f3f7; font-size: 13px; color: #2c3e50; vertical-align: middle; }
.plan-table .plan-status { padding: 4px 6px; border: 1px solid #d4dde7; border-radius: 6px; font-size: 12.5px; }
.plan-content-edit { width: 100%; min-width: 260px; padding: 8px 9px; border: 1px solid #d4dde7; border-radius: 7px; color: #2c3e50; font: inherit; line-height: 1.6; resize: vertical; box-sizing: border-box; }
.plan-date-edit { width: 100%; padding: 7px 8px; border: 1px solid #d4dde7; border-radius: 7px; color: #40546a; box-sizing: border-box; }
.plan-content-edit:focus, .plan-date-edit:focus { border-color: #6f93bb; box-shadow: 0 0 0 3px rgba(74,125,180,.12); outline: none; }
.plan-employee-note { min-height: 54px; padding: 8px 9px; border-radius: 7px; background: #f5f8fb; color: #536a80; line-height: 1.6; }
.plan-employee-note.empty { color: #9aa5b1; }
.plan-table td:last-child .btn + .btn { margin-left: 6px; }
.plan-add-row { display: grid; grid-template-columns: 170px minmax(280px,1fr) 150px auto auto; gap: 8px; align-items: center; padding: 12px 14px; border-top: 1px dashed #d9e1e9; background: #fbfcfd; }
.plan-add-row textarea, .plan-add-row input { width: 100%; padding: 7px 9px; border: 1px solid #d4dde7; border-radius: 7px; color: #40546a; font: inherit; box-sizing: border-box; }
@media (max-width: 900px) { .plan-add-row { grid-template-columns: 1fr; } }
@media (max-width: 760px) {
  .plan-card-head { align-items: flex-start; flex-direction: column; }
  .plan-publish-ops { flex-wrap: wrap; }
  .plan-scroll-bar > span { font-size: 11px; }
}
.portal-plan { margin-top: 18px; padding: 20px; border-radius: 12px; background: #f7faf8; border: 1px solid #dce9df; }
.portal-plan-title { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.portal-plan-title h3 { margin: 0; color: #315f47; font-size: 14px; }
.portal-plan-title > div { display: flex; align-items: center; gap: 9px; }
.portal-plan-title span { color: #6e8b79; font-size: 10px; }
.portal-plan-title button { padding: 7px 11px; border: 0; border-radius: 7px; background: #5f8b70; color: #fff; font-size: 10px; font-weight: 700; cursor: pointer; }
.portal-plan > div { display: grid; gap: 10px; }
.portal-plan section { padding: 14px; border-radius: 9px; background: #fff; border: 1px solid #e1ebe4; }
.portal-plan header { display: flex; justify-content: space-between; gap: 12px; }
.portal-plan header b { color: #315f47; font-size: 12px; }
.portal-plan header span { color: #6e8b79; font-size: 10px; }
.portal-plan p { margin: 9px 0; color: #50675a; font-size: 11px; line-height: 1.7; }
.portal-plan em { display: block; margin: 8px 0; color: #6c7e72; font-size: 10px; font-style: normal; }
.portal-plan small { color: #87988d; font-size: 10px; }
.portal-plan-modal { position: fixed; z-index: 3000; inset: 0; display: grid; place-items: center; padding: 20px; background: rgba(27,42,55,.48); }
.portal-plan-dialog { width: min(920px,96vw); max-height: 90vh; overflow: auto; border-radius: 16px; background: #fff; box-shadow: 0 24px 70px rgba(19,34,45,.28); }
.portal-plan-dialog > header { display: flex; justify-content: space-between; gap: 16px; padding: 22px 24px; border-bottom: 1px solid #e7ece9; }
.portal-plan-dialog > header h2 { margin: 0 0 6px; font-size: 19px; }
.portal-plan-dialog > header p { margin: 0; color: #7d8d83; font-size: 11px; }
.portal-plan-dialog > header button { border: 0; background: transparent; color: #819087; font-size: 22px; cursor: pointer; }
.portal-plan-edit-list { display: grid; gap: 12px; padding: 20px 24px; }
.portal-plan-edit-list > section { display: grid; grid-template-columns: 170px 1fr 1fr; gap: 12px; padding: 14px; border: 1px solid #e1e9e3; border-radius: 10px; background: #fafcfb; }
.portal-plan-edit-list label { color: #53675a; font-size: 11px; font-weight: 700; }
.portal-plan-edit-list select, .portal-plan-edit-list textarea { display: block; width: 100%; margin-top: 5px; padding: 8px 9px; border: 1px solid #d6e0d9; border-radius: 7px; background: #fff; color: #405248; font: inherit; box-sizing: border-box; }
.portal-plan-dialog > footer { display: flex; align-items: center; justify-content: flex-end; gap: 9px; padding: 15px 24px; border-top: 1px solid #e7ece9; }
.portal-plan-dialog > footer span { flex: 1; color: #b6574c; font-size: 11px; }
.portal-plan-dialog > footer button { padding: 9px 14px; border: 1px solid #d5dfd8; border-radius: 8px; background: #fff; cursor: pointer; }
.portal-plan-dialog > footer .portal-primary { border: 0; background: #5f8b70; color: #fff; }
@media(max-width:760px){.portal-plan-edit-list>section{grid-template-columns:1fr}.portal-plan-dialog{max-height:94vh}.portal-plan-title{align-items:flex-start;flex-direction:column}}

/* ---- 评价任务 · 按工作阶段组织 ---- */
.task-page-head { margin-bottom: 14px; }
.task-page-head h2 { margin: 0 0 5px; color: #1d2f43; font-size: 22px; }
.task-page-head p { margin: 0; color: #7a8796; font-size: 13px; }
.task-page-filter { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:14px; }
.task-page-filter .search-input { width:min(420px,40vw); min-width:260px; }
.task-page-filter > .searchable-select { width:280px; min-width:220px; }
.task-page-filter>.btn { flex:none; }
.task-stage-shell { margin-bottom:14px; border:1px solid #dde5ec; border-radius:11px; background:#fff; overflow:hidden; }
.task-stage-shell>summary { display:flex; justify-content:space-between; align-items:center; gap:18px; padding:13px 16px; list-style:none; cursor:pointer; }
.task-stage-shell>summary::-webkit-details-marker { display:none; }
.task-stage-shell>summary>div { display:flex; align-items:center; gap:10px; }
.task-stage-shell>summary>div>span { display:grid; place-items:center; width:28px; height:28px; border-radius:50%; background:#315f8b; color:#fff; font-size:12px; font-weight:700; }
.task-stage-shell>summary p { display:flex; flex-direction:column; gap:2px; }
.task-stage-shell>summary b { color:#2b4157; font-size:13px; }
.task-stage-shell>summary small { color:#8492a1; font-size:10.5px; }
.task-stage-shell>summary em { color:#62778d; font-size:11px; font-style:normal; }
.task-stage-nav { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding: 6px; margin-bottom: 18px; border: 1px solid #e2e8ef; border-radius: 12px; background: #f6f8fa; }
.task-stage-shell .task-stage-nav { margin:0; border:0; border-top:1px solid #e7ecf1; border-radius:0; }
.task-stage { position: relative; display: grid; grid-template-columns: 30px 1fr; grid-template-rows: auto auto; column-gap: 10px; padding: 12px 14px; border: 1px solid transparent; border-radius: 9px; background: transparent; color: #536478; text-align: left; cursor: pointer; }
.task-stage > span { grid-row: 1 / 3; display: flex; width: 28px; height: 28px; align-items: center; justify-content: center; align-self: center; border-radius: 50%; background: #e5ebf1; color: #64758a; font-size: 12px; font-weight: 700; }
.task-stage b { font-size: 14px; color: #314459; }
.task-stage small { margin-top: 2px; color: #8a97a6; font-size: 11.5px; }
.task-stage:hover { background: #fff; }
.task-stage.active { border-color: #c9d9e8; background: #fff; box-shadow: 0 4px 12px rgba(31, 58, 95, .08); }
.task-stage.active > span { background: #315f8b; color: #fff; }
.task-stage.active b { color: #234f78; }
.task-action-bar, .stage-panel-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 14px 16px; margin-bottom: 14px; border: 1px solid #e3e8ef; border-radius: 10px; background: #fff; }
.task-action-bar > div:first-child, .stage-panel-head > div { display: flex; flex-direction: column; gap: 3px; }
.task-action-bar b, .stage-panel-head b { color: #263b51; font-size: 15px; }
.task-action-bar span, .stage-panel-head p { margin: 0; color: #8491a0; font-size: 12.5px; }
.task-actions { display: flex; align-items: center; gap: 8px; }
.task-more { position: relative; }
.task-more > summary { list-style: none; cursor: pointer; }
.task-more > summary::-webkit-details-marker { display: none; }
.task-more-menu { position: absolute; z-index: 30; top: calc(100% + 6px); right: 0; min-width: 160px; padding: 6px; border: 1px solid #dfe6ee; border-radius: 9px; background: #fff; box-shadow: 0 10px 24px rgba(31, 58, 95, .14); }
.task-more-menu .btn { width: 100%; border: 0; text-align: left; }
.entry-card { margin: 0 0 14px; border: 1px solid #dce7f1; border-radius: 9px; background: #f7fafc; }
.entry-card > summary { padding: 10px 14px; color: #476078; font-size: 13px; font-weight: 600; cursor: pointer; }
#entry-url-bar { display: grid; grid-template-columns: 1fr auto; gap: 8px 14px; padding: 0 14px 12px; }
#entry-url-bar > div { display: flex; align-items: center; gap: 10px; min-width: 0; }
#entry-url-bar code { color: #315f8b; word-break: break-all; }
#entry-url-bar p { grid-column: 1 / -1; margin: 0; color: #7a8796; font-size: 12px; }
.stage-tip { margin: -4px 0 14px; padding: 10px 12px; border-left: 3px solid #88a7c4; background: #f5f8fb; color: #617286; font-size: 12.5px; line-height: 1.7; }
.task-master-layout { display:grid; grid-template-columns:260px minmax(0,1fr); gap:14px; margin-top:14px; }
.task-cycle-rail,.task-cycle-content { border:1px solid #e1e7ed; border-radius:11px; background:#fff; overflow:hidden; }
.task-rail-title { padding:12px 14px; border-bottom:1px solid #e9edf1; color:#7d8b9a; font-size:10.5px; font-weight:700; letter-spacing:.08em; }
.task-cycle-item { display:flex; justify-content:space-between; align-items:center; gap:10px; width:100%; padding:15px 14px; border:0; border-bottom:1px solid #edf1f4; background:#fff; color:inherit; text-align:left; cursor:pointer; }
.task-cycle-item:hover,.task-cycle-item.active { background:#f1f6fb; }
.task-cycle-item.active { box-shadow:inset 3px 0 #3f74a5; }
.task-cycle-item div { display:flex; flex-direction:column; gap:5px; min-width:0; }
.task-cycle-item b { overflow:hidden; color:#263d53; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.task-cycle-item small { color:#8391a0; font-size:11px; }
.task-cycle-item>span { color:#537392; font-size:20px; }
.task-selected-cycle-head { display:flex; align-items:center; min-height:48px; padding:12px 16px; border-bottom:1px solid #e7ecf1; }
.task-selected-cycle-head>div { display:flex; align-items:center; gap:9px; }
.task-selected-cycle-head span { color:#5b7895; }
.task-selected-cycle-head b { color:#263c52; font-size:14px; }
.task-selected-cycle-head small { color:#8090a0; font-size:11px; }
.task-cycle-content>.eval-grid { grid-template-columns:1fr; gap:10px; padding:14px; margin:0; }
.task-cycle-content .eval-card { padding:16px 18px; box-shadow:none; }
.task-cycle-content .eval-card:hover { transform:none; box-shadow:0 3px 12px rgba(31,58,95,.08); }
.task-cycle-content .ec-actions { display:flex; justify-content:flex-end; margin-top:10px; padding-top:9px; border-top:1px solid #e7ecf1; }
.task-detail-link { font-weight:600; }

/* 报告审核沿用评价任务的页面层级 */
.report-page-filter { display:grid; grid-template-columns:minmax(220px,280px) minmax(220px,1fr) auto auto auto; gap:10px; padding:0; background:transparent; }
.report-page-filter .search { width:100%; min-width:0; }
.report-page-filter .flow-summary { grid-column:1/-1; margin:0; padding:9px 12px; border-radius:8px; background:#edf3f7; }
.report-flow-shell { margin-bottom:16px; }
.report-flow-shell .handoff-flow { margin:0; border:0; border-top:1px solid #e1e8ef; border-radius:0; box-shadow:none; }
.report-master-layout .task-cycle-content { min-width:0; }
.report-master-layout .task-cycle-item { display:grid; grid-template-columns:1fr auto; }
.report-master-layout .task-cycle-item>span { overflow:hidden; color:#263d53; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.report-master-layout .task-cycle-item>em { color:#537392; font-size:20px; font-style:normal; }
.report-master-layout .outcome-workspace { grid-template-columns:290px minmax(0,1fr); min-height:500px; padding:14px; }
.report-master-layout .outcome-list-pane,.report-master-layout .outcome-detail-pane { box-shadow:none; }
.report-master-layout .task-selected-cycle-head { justify-content:space-between; gap:16px; }
.report-master-layout .task-selected-cycle-head small { max-width:70%; text-align:right; }

@media(max-width:1050px){
  .report-page-filter { grid-template-columns:1fr 1fr; }
  .report-page-filter .btn { width:100%; }
  .report-master-layout .outcome-workspace { grid-template-columns:1fr; }
}

/* 历史汇总报告转换：原始材料与新版草稿始终并排核对 */
.history-report-head { align-items:center; }
.history-safety-note { display:flex; gap:12px; align-items:center; padding:11px 14px; margin-bottom:14px; border:1px solid #dbe9df; border-radius:10px; background:#f3f9f5; color:#587064; }
.history-safety-note b { color:#337052; }
.history-safety-note span { font-size:12px; }
.history-archive-bar { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:12px 14px; margin-bottom:14px; border:1px solid #dfe6ed; border-radius:10px; background:#fff; }
.history-archive-bar>div { display:flex; flex-direction:column; gap:4px; }
.history-archive-bar b { color:#304960; font-size:12px; }
.history-archive-bar span { color:#8290a0; font-size:10.5px; }
.history-archive-bar select { min-width:240px; }
.history-steps { display:grid; grid-template-columns:repeat(5,1fr); gap:8px; margin:0 0 14px; list-style:none; }
.history-steps li { display:grid; grid-template-columns:30px 1fr; gap:2px 9px; align-items:center; padding:12px; border:1px solid #e1e8ee; border-radius:10px; background:#fff; }
.history-steps li>span { grid-row:1/3; display:grid; place-items:center; width:28px; height:28px; border-radius:50%; background:#edf2f6; color:#718397; font-weight:700; }
.history-steps li.active { border-color:#c8dced; background:#f5f9fc; }
.history-steps li.active>span { background:#315f8b; color:#fff; }
.history-steps b { color:#33495f; font-size:12px; }
.history-steps small { color:#8895a3; font-size:10px; }
.history-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:14px; }
.history-kpis article { display:grid; grid-template-columns:1fr auto; gap:3px 12px; padding:14px 16px; border:1px solid #e2e8ee; border-radius:10px; background:#fff; }
.history-kpis small,.history-kpis span { color:#8190a0; font-size:10.5px; }
.history-kpis strong { grid-row:1/3; grid-column:2; align-self:center; color:#315f8b; font-size:25px; }
.history-workspace { display:grid; grid-template-columns:310px minmax(0,1fr); gap:14px; }
.history-list-card,.history-detail-card { overflow:hidden; border:1px solid #dfe6ed; border-radius:12px; background:#fff; box-shadow:0 2px 8px rgba(31,58,95,.05); }
.history-list-card>header { display:flex; justify-content:space-between; align-items:center; padding:15px 16px; border-bottom:1px solid #e8edf2; }
.history-list-card>header div { display:flex; flex-direction:column; gap:4px; }
.history-list-card>header b { color:#263d53; }
.history-list-card>header small { color:#8a97a5; }
.history-list-card>header>span { padding:3px 8px; border-radius:999px; background:#edf3f7; color:#59728a; font-size:10px; }
.history-person { display:grid; grid-template-columns:1fr auto; gap:7px 10px; width:100%; padding:14px 16px; border:0; border-bottom:1px solid #edf1f4; background:#fff; color:inherit; text-align:left; cursor:pointer; }
.history-person:hover,.history-person.active { background:#f3f7fb; }
.history-person.active { box-shadow:inset 3px 0 #4b78a5; }
.history-person div { display:flex; flex-direction:column; gap:4px; min-width:0; }
.history-person b { color:#273d53; }
.history-person small,.history-person p { color:#8190a0; font-size:10.5px; }
.history-person em { color:#557694; font-size:10px; font-style:normal; font-weight:600; }
.history-person p { grid-column:1/-1; line-height:1.5; }
.history-list-empty { padding:30px 16px; color:#8896a5; font-size:11px; text-align:center; }
.history-state { align-self:start; padding:3px 8px; border-radius:999px; font-size:10px; font-weight:700; white-space:nowrap; }
.history-state.ready { background:#e5f3eb; color:#34734f; }
.history-state.review { background:#fff0df; color:#a96313; }
.history-detail-card { padding:18px; }
.history-detail-head { display:flex; justify-content:space-between; gap:16px; padding-bottom:14px; border-bottom:1px solid #e8edf2; }
.history-detail-head span,.history-detail-head p { color:#8090a0; font-size:11px; }
.history-detail-head h3 { margin:4px 0; color:#20364d; font-size:18px; }
.history-check-strip { display:flex; gap:10px; align-items:center; padding:10px 12px; margin:14px 0; border-left:3px solid #d39a43; background:#fff8ed; color:#7d663f; font-size:11px; }
.history-check-strip b { color:#76531d; }
.history-confirm-panel { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:12px 14px; margin:-4px 0 14px; border:1px solid #ecd9b9; border-radius:9px; background:#fffbf3; }
.history-confirm-panel>div { display:flex; flex-direction:column; gap:4px; }
.history-confirm-panel b { color:#74531f; font-size:11.5px; }
.history-confirm-panel span,.history-confirm-panel small { color:#7e6a4b; font-size:10px; line-height:1.5; }
.history-confirm-panel .btn { flex:none; }
.history-compare { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.history-compare>section { padding:14px; border:1px solid #e2e8ee; border-radius:10px; background:#fafcfd; }
.history-compare>section>header { display:flex; justify-content:space-between; align-items:center; margin-bottom:13px; }
.history-compare>section>header b,.history-compare h4 { color:#31475d; }
.history-compare>section>header small { color:#8896a5; font-size:10px; }
.history-compare h4 { margin:14px 0 8px; font-size:12px; }
.history-compare p { color:#5a6d80; font-size:11px; line-height:1.7; }
.history-original-summary { display:grid; grid-template-columns:1fr auto; gap:3px 10px; padding:12px; border-radius:9px; background:#eef4f8; }
.history-original-summary span,.history-original-summary small { color:#728498; font-size:10.5px; }
.history-original-summary strong { grid-row:1/3; grid-column:2; color:#315f8b; font-size:24px; }
.history-score-note { display:grid; gap:4px; padding:9px 10px; margin-top:8px; border-left:3px solid #cf8d2c; background:#fff7e9; }
.history-score-note b { color:#76531d; font-size:10.5px; }
.history-score-note span { color:#7b6849; font-size:10px; line-height:1.5; }
.history-dim,.history-map-row { display:grid; grid-template-columns:1fr auto; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid #e8edf1; color:#566b7f; font-size:11px; }
.history-map-row { grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); }
.history-map-row i { color:#91a0af; font-style:normal; }
.history-map-row select { min-width:0; width:100%; padding:6px 8px; font-size:11px; }
.history-compare label { margin-top:12px; font-size:11px; }
.history-compare textarea,.history-compare label>select { width:100%; margin-top:5px; background:#fff; font-size:11px; line-height:1.6; }
.history-detail-actions { display:flex; justify-content:flex-end; align-items:center; gap:8px; margin-top:14px; padding-top:14px; border-top:1px solid #e5ebf0; }
.history-detail-actions span { margin-right:auto; color:#7b8998; font-size:10.5px; }
.history-detail-actions .btn:disabled { opacity:.45; cursor:not-allowed; }
.history-company-check { flex-direction:row; align-items:center; gap:6px; padding:8px 10px; border:1px solid #dbe5ed; border-radius:8px; background:#f7fafc; color:#526b82; font-size:10.5px; }
.history-company-check input { width:auto; margin:0; }
.history-plan-list { display:grid; gap:7px; }
.history-plan-list>div { display:grid; gap:4px; padding:9px 10px; border:1px solid #e5ebf0; border-radius:8px; background:#fff; }
.history-plan-list b { color:#3b5268; font-size:11px; }
.history-plan-list span { color:#5b6e80; font-size:10.5px; line-height:1.55; }
.history-plan-list small { color:#8a97a4; font-size:9.5px; }
.history-plan-list.editable>div { border-left:3px solid #6d94b7; }
.history-source-tag { margin-left:5px; padding:2px 6px; border-radius:999px; background:#eaf2f8; color:#52728f; font-size:9px; font-style:normal; font-weight:500; }
.history-compare label>span { color:#8795a4; font-size:9.5px; font-weight:400; }
.history-cycle-fields { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.history-archive-help { display:block; margin-top:7px; color:#8290a0; font-size:9.5px; line-height:1.5; }

/* 历史报告预览：以正式报告阅读顺序呈现，但持续标记为未发布草稿 */
.history-preview-modal { width:980px; }
.history-preview-content { padding:20px; background:#eef2f5; }
.history-preview-footnote { margin-right:auto; color:#7d8997; font-size:11px; }
.history-report-sheet { max-width:880px; margin:0 auto; padding:28px 32px; border:1px solid #dce4eb; border-radius:12px; background:#fff; box-shadow:0 5px 18px rgba(31,58,95,.08); }
.history-report-sheet>header { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; padding-bottom:20px; border-bottom:2px solid #315f8b; }
.history-report-sheet>header span { color:#5f7f9e; font-size:10px; font-weight:700; letter-spacing:.08em; }
.history-report-sheet>header h2 { margin:6px 0; color:#21384f; font-size:24px; }
.history-report-sheet>header p { color:#7b8997; font-size:12px; }
.history-report-score { display:flex; flex-direction:column; align-items:center; min-width:82px; padding:12px; border-radius:10px; background:#edf4f9; }
.history-report-score strong { color:#315f8b; font-size:30px; }
.history-report-score small { color:#68829a; }
.history-report-meta { display:flex; flex-wrap:wrap; gap:8px 20px; padding:12px 0; color:#66798c; font-size:10.5px; }
.history-report-warning { display:flex; gap:10px; padding:10px 12px; border-left:3px solid #cb8b31; background:#fff7e9; color:#745d3b; font-size:10.5px; }
.history-report-section { margin-top:22px; }
.history-report-title { display:flex; align-items:center; gap:8px; margin-bottom:11px; }
.history-report-title>b { display:grid; place-items:center; width:24px; height:24px; border-radius:50%; background:#315f8b; color:#fff; font-size:9px; }
.history-report-title h3 { color:#2f465c; font-size:14px; }
.history-report-title small { margin-left:auto; color:#83909e; font-size:9.5px; }
.history-report-dims { display:grid; grid-template-columns:1fr 1fr; gap:10px 18px; }
.history-report-dims>div { display:grid; grid-template-columns:120px 1fr 30px; gap:9px; align-items:center; color:#52677a; font-size:10.5px; }
.history-report-dims i { overflow:hidden; height:7px; border-radius:999px; background:#e7edf2; }
.history-report-dims i>b { display:block; height:100%; border-radius:999px; background:#6d91b1; }
.history-report-dims strong { color:#315f8b; text-align:right; }
.history-report-columns { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.history-report-columns section { padding:14px; border:1px solid #e2e8ed; border-radius:10px; background:#fafcfd; }
.history-report-columns ul { display:grid; gap:8px; padding-left:18px; color:#506477; font-size:10.5px; line-height:1.65; }
.history-report-plan { display:grid; grid-template-columns:1fr 1fr; gap:9px; }
.history-report-plan article { display:grid; grid-template-columns:24px 1fr; gap:9px; padding:11px; border:1px solid #e2e8ed; border-radius:9px; }
.history-report-plan article>span { display:grid; place-items:center; width:22px; height:22px; border-radius:50%; background:#edf3f7; color:#567590; font-size:9px; font-weight:700; }
.history-report-plan article div { display:grid; gap:4px; }
.history-report-plan b { color:#354c62; font-size:11px; }
.history-report-plan p { color:#5a6c7e; font-size:10px; line-height:1.55; }
.history-report-plan small { color:#8794a1; font-size:9px; }
.history-report-empty { color:#8794a1; font-size:10px; }
.history-report-sheet>footer { margin-top:24px; padding-top:12px; border-top:1px solid #e3e9ee; color:#8995a1; font-size:9.5px; text-align:center; }
@media(max-width:800px){.history-report-dims,.history-report-columns,.history-report-plan{grid-template-columns:1fr}.history-report-sheet{padding:20px}.history-report-sheet>header{flex-direction:column}}
@media(max-width:1050px){.history-steps{grid-template-columns:1fr 1fr}.history-kpis{grid-template-columns:1fr 1fr}.history-workspace{grid-template-columns:1fr}.history-compare{grid-template-columns:1fr}}

@media (max-width: 900px) {
  .task-page-head { align-items: stretch; flex-direction: column; }
  .task-page-filter { width: 100%; }
  .task-page-filter .search-input, .task-page-filter > .searchable-select { flex: 1; min-width: 200px; }
  .task-stage-nav { grid-template-columns: 1fr; }
  .task-master-layout { grid-template-columns:1fr; }
  .task-action-bar, .stage-panel-head { align-items: flex-start; flex-direction: column; }
  .task-actions { width: 100%; flex-wrap: wrap; }
}

/* ---- 可输入联想下拉框 ---- */
.searchable-select-native { position: absolute !important; width: 1px !important; height: 1px !important; opacity: 0 !important; pointer-events: none !important; }
.searchable-select { position: relative; display: inline-flex; align-items: center; min-width: 150px; vertical-align: middle; }
label > .searchable-select { width: 100%; }
.toolbar > .searchable-select { min-width: 180px; }
td > .searchable-select { min-width: 110px; }
.searchable-select-input { width: 100%; min-width: 0; height: 34px; padding: 7px 32px 7px 10px; border: 1px solid #d4dde7; border-radius: 7px; background: #fff; color: #26384a; font: inherit; box-sizing: border-box; outline: none; }
.searchable-select-input:hover { border-color: #aebdce; }
.searchable-select-input:focus { border-color: #6f93bb; box-shadow: 0 0 0 3px rgba(74, 125, 180, .12); }
.searchable-select-input:disabled { color: #9aa5b1; background: #f4f6f8; cursor: not-allowed; }
.searchable-select-arrow { position:absolute; right:0; top:0; display:grid; place-items:center; width:40px; height:100%; padding:0; border:0; border-radius:0 7px 7px 0; background:transparent; color:#748398; font-size:15px; cursor:pointer; }
.searchable-select-arrow:hover { background:rgba(74,125,180,.07); color:#456f9c; }
.searchable-select-arrow:focus-visible { outline:2px solid #6f93bb; outline-offset:-2px; }
.searchable-select-list { position: absolute; z-index: 1200; top: calc(100% + 5px); left: 0; right: 0; min-width: 100%; max-height: 240px; overflow-y: auto; padding: 5px; border: 1px solid #dbe3ec; border-radius: 9px; background: #fff; box-shadow: 0 12px 30px rgba(31, 58, 95, .16); box-sizing: border-box; }
.searchable-select-option { display: block; width: 100%; padding: 8px 10px; border: 0; border-radius: 6px; background: transparent; color: #2c3e50; font: inherit; text-align: left; white-space: nowrap; cursor: pointer; }
.searchable-select-option:hover, .searchable-select-option.active { background: #edf4fb; color: #1f568c; }
.searchable-select-option[aria-selected="true"] { font-weight: 600; color: #245f96; }
.searchable-select-option:disabled { color: #adb6c1; cursor: not-allowed; }
.searchable-select-empty { display: block; padding: 10px; color: #8a97a6; text-align: center; white-space: nowrap; }

/* ---- 人才评价词库 ---- */
.dictionary-head { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; margin-bottom:16px; }
.dictionary-head h2 { margin:0 0 6px; color:#1d2f43; font-size:22px; }
.dictionary-head p { margin:0; color:#728092; font-size:13px; line-height:1.7; }
.dictionary-version { padding:5px 11px; border-radius:999px; background:#e8f3ee; color:#397250; font-size:12px; font-weight:700; }
.dictionary-stats { display:grid; grid-template-columns:repeat(4,minmax(130px,1fr)); gap:12px; margin-bottom:14px; }
.dictionary-stats>div { display:flex; align-items:baseline; gap:9px; padding:15px 17px; border:1px solid #e3e9ef; border-radius:10px; background:#fff; }
.dictionary-stats b { color:#244f78; font-size:25px; }
.dictionary-stats span { color:#748395; font-size:12px; }
.dictionary-toolbar { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:16px; }
.dictionary-toolbar .search { min-width:280px; }
.dictionary-toolbar select { padding:9px 10px; border:1px solid #d9dee7; border-radius:8px; background:#fff; }
.dictionary-layout { display:grid; grid-template-columns:310px minmax(0,1fr); gap:16px; align-items:start; }
.dictionary-layout>aside,.dictionary-layout>main,.dictionary-rules>section { padding:16px; border:1px solid #e3e9ef; border-radius:12px; background:#fff; }
.dictionary-layout h3,.dictionary-rules h3 { margin:0 0 12px; color:#31465b; font-size:15px; }
.dictionary-dimensions { display:grid; gap:8px; max-height:820px; overflow:auto; }
.dictionary-dim { padding:11px 12px; border:1px solid #e7ecf1; border-radius:9px; background:#fafbfd; }
.dictionary-dim header { display:flex; justify-content:space-between; gap:10px; color:#294d70; font-size:13px; }
.dictionary-dim header span { color:#8291a1; font-size:11px; }
.dictionary-dim p { margin:7px 0; color:#536577; font-size:12px; line-height:1.6; }
.dictionary-dim small { color:#8a98a7; font-size:10.5px; }
.dictionary-section-title { display:flex; justify-content:space-between; align-items:center; }
.dictionary-section-title span { color:#8492a1; font-size:12px; }
.dictionary-tags { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.dictionary-tag { padding:14px; border:1px solid #e4eaf0; border-radius:10px; background:#fcfdfd; }
.dictionary-tag header { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; }
.dictionary-tag header div { display:flex; flex-direction:column; gap:3px; }
.dictionary-tag header b { color:#263f57; font-size:14px; }
.dictionary-tag header span { color:#8794a2; font-size:10.5px; }
.dictionary-tag header em { flex:none; padding:3px 7px; border-radius:999px; font-size:10px; font-style:normal; }
.dictionary-tag header em.score { background:#e8f3ee; color:#397250; }
.dictionary-tag header em.text { background:#eef3f8; color:#496b8a; }
.dictionary-tag>p { min-height:40px; margin:9px 0; color:#526476; font-size:12px; line-height:1.65; }
.dictionary-behavior { display:grid; grid-template-columns:58px 1fr; gap:7px; margin-top:6px; padding:7px 8px; border-radius:7px; font-size:11px; line-height:1.55; }
.dictionary-behavior.good { background:#f0f8f3; color:#3f6f51; }
.dictionary-behavior.risk { background:#fbf2f1; color:#85534e; }
.dictionary-tag footer { display:flex; justify-content:space-between; gap:8px; margin-top:9px; color:#8a98a7; font-size:10px; }
.dictionary-rules { display:grid; grid-template-columns:1.4fr 1fr; gap:16px; margin-top:16px; }
.dictionary-rules table { min-width:760px; }
.dictionary-scale { display:grid; gap:8px; }
.dictionary-scale>div { display:grid; grid-template-columns:90px 72px 1fr; gap:8px; align-items:center; padding:9px 10px; border-radius:8px; background:#f8fafb; }
.dictionary-scale p { margin:0; color:#5f7080; font-size:11px; line-height:1.5; }
.dictionary-scale span { padding:3px 7px; border-radius:999px; text-align:center; font-size:10px; }
.scale-green { background:#e5f4ea; color:#33704a; }.scale-yellow { background:#fff4da; color:#8b681b; }.scale-red { background:#fae7e5; color:#93483f; }
.dictionary-empty { grid-column:1/-1; padding:50px; color:#8492a1; text-align:center; }
@media(max-width:1000px){.dictionary-layout,.dictionary-rules{grid-template-columns:1fr}.dictionary-tags{grid-template-columns:1fr}.dictionary-stats{grid-template-columns:repeat(2,1fr)}}

/* ---- 长期人才发展报告 ---- */
.development-head { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; margin-bottom:16px; }
.development-head h2 { margin:0 0 6px; color:#1d2f43; font-size:22px; }.development-head p { margin:0; color:#728092; font-size:13px; }
.development-mode { padding:5px 10px; border-radius:999px; background:#eef3f8; color:#496b8a; font-size:11px; }
.development-actions { display:flex; gap:9px; flex-wrap:wrap; align-items:center; }.development-actions select { min-width:250px; }
.development-notice { margin:13px 0 16px; padding:10px 13px; border-left:3px solid #89a9c5; background:#f4f8fb; color:#627589; font-size:12px; }
.development-report { min-height:260px; padding:18px; border:1px solid #e2e8ee; border-radius:12px; background:#fff; }
.development-empty { padding:85px 20px; color:#8794a2; text-align:center; }
.development-title { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }.development-title h3 { margin:0 0 5px; color:#263f57; }.development-title p { margin:0; color:#7b8998; font-size:12px; }
.development-title>span { padding:4px 9px; border-radius:999px; background:#e8f3ee; color:#397250; font-size:10px; }
.development-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin:18px 0; }.development-kpis>div { display:flex; flex-direction:column; gap:4px; padding:14px; border-radius:9px; background:#f7f9fb; }.development-kpis b { color:#28577f; font-size:23px; }.development-kpis span { color:#7c8a99; font-size:11px; }
.development-grid { display:grid; grid-template-columns:1.3fr 1fr; gap:14px; }.development-grid>section { padding:14px; border:1px solid #e6ebf0; border-radius:10px; }.development-grid h4 { margin:0 0 10px; color:#40566b; }
.development-trend { display:grid; grid-template-columns:1fr 150px 90px; gap:8px; align-items:center; padding:9px 0; border-bottom:1px solid #eef1f4; font-size:12px; }.development-trend:last-child { border-bottom:0; }.development-trend span { color:#6f7f8f; }.development-trend em { padding:3px 7px; border-radius:999px; background:#edf1f4; color:#68798a; text-align:center; font-size:10px; font-style:normal; }.development-trend em.up { background:#e6f4eb; color:#36704c; }.development-trend em.risk { background:#f9e8e6; color:#904b43; }
.development-row { display:flex; justify-content:space-between; gap:12px; padding:9px 0; border-bottom:1px solid #eef1f4; color:#5a6c7e; font-size:12px; }.development-row b { color:#354d63; }.development-privacy { margin:12px 0 0; padding:9px; border-radius:7px; background:#f6f8fa; color:#7b8997; font-size:11px; line-height:1.6; }
.development-ai-draft { margin-top:16px; padding:16px; border:1px solid #cfe1db; border-radius:11px; background:#f7fbf9; color:#38504a; }.development-ai-draft>header { display:flex; justify-content:space-between; gap:12px; margin-bottom:10px; }.development-ai-draft header span { color:#39725e; font-size:11px; }.development-ai-draft header h4 { margin:3px 0 0; color:#294b40; }.development-ai-draft header em { align-self:flex-start; padding:4px 8px; border-radius:999px; background:#fff1d5; color:#8b6419; font-size:10px; font-style:normal; }.development-ai-draft>p,.development-ai-draft li { line-height:1.7; font-size:12px; }.development-ai-draft>small { display:block; margin-top:10px; color:#7a7162; }.development-ai-actions { display:grid; gap:8px; }.development-ai-actions section { padding:10px; border-radius:8px; background:#fff; }.development-ai-actions p { margin:5px 0; font-size:12px; }.development-ai-actions small { color:#718078; }
@media(max-width:900px){.development-grid{grid-template-columns:1fr}.development-kpis{grid-template-columns:repeat(2,1fr)}.development-trend{grid-template-columns:1fr}.development-head{flex-direction:column}}

/* 全屏填写窗口：消除可误点的弹窗外侧区域，并保留表头与操作区。 */
.modal-mask > .modal {
  width: 100vw !important;
  height: 100vh;
  max-width: none !important;
  max-height: none;
  border-radius: 0;
  box-shadow: none;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.modal-mask > .modal > .modal-body {
  flex: 1;
  min-height: 0;
  overflow: auto;
}
.modal-mask > .modal > iframe {
  flex: 1;
  min-height: 0;
}
.modal-mask > .modal > .modal-head,
.modal-mask > .modal > .modal-foot {
  flex: 0 0 auto;
}
.admin-login-gate{position:fixed;inset:0;z-index:10000;background:#f4f7fb;display:flex;align-items:center;justify-content:center;padding:24px}
.admin-login-card{width:min(420px,100%);background:#fff;border:1px solid #dbe4ee;border-radius:18px;padding:32px;box-shadow:0 20px 60px rgba(31,55,82,.12);display:flex;flex-direction:column;gap:16px}
.admin-login-card h1{margin:0;font-family:"Microsoft YaHei","SimHei",sans-serif;color:#1e2f43}
.admin-login-card p{margin:0;color:#718096}
.admin-login-card label{display:flex;flex-direction:column;gap:7px;color:#425466;font-size:14px}
.admin-login-card input{border:1px solid #cbd8e6;border-radius:10px;padding:11px 12px;font:inherit}
.admin-login-card a{text-align:center;color:#4778aa;text-decoration:none;font-size:14px}
.admin-session{margin-left:auto;display:flex;align-items:center;gap:10px;color:#52677d;font-size:13px}
