*{box-sizing:border-box;margin:0;padding:0}
:root{
  --brand:#1f3a8a; --brand2:#2f6fed; --bg:#f0f2f5;
  --ink:#26303e; --ink2:#5a6577; --ink3:#8a93a6;
  --line:#e7ebf3; --card:#fff;
  --good:#16a34a; --warn:#e08a1e; --bad:#c0392b; --mid:#2f6fed;
}
body{font-family:"Microsoft YaHei","PingFang SC","Segoe UI",sans-serif;background:var(--bg);color:var(--ink);font-size:14px;-webkit-font-smoothing:antialiased}
.hidden{display:none !important}
button{cursor:pointer;font-family:inherit}
input,select,textarea{font-family:inherit;font-size:13px;border:1px solid #d4dae3;border-radius:6px;padding:6px 8px;background:#fff;color:var(--ink);outline:none}
input:focus,select:focus,textarea:focus{border-color:var(--brand2);box-shadow:0 0 0 3px #2f6fed14}

/* ===== 顶栏 ===== */
#topbar{background:linear-gradient(135deg,#1f3a8a,#2f6fed);color:#fff;padding:14px 22px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;position:sticky;top:0;z-index:30;box-shadow:0 2px 10px rgba(16,30,60,.12)}
#topbar h1{font-size:19px;font-weight:600;letter-spacing:.5px}
#topbar .sub{font-size:12px;opacity:.86;margin-top:2px}
#topbar .btns{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
.btn{border:1px solid #ffffff55;border-radius:6px;padding:7px 13px;font-size:13px;background:#ffffff1f;color:#fff}
.btn:hover{background:#ffffff33}
.btn.primary{background:#fff;color:var(--brand);border-color:#fff;font-weight:600}
.btn.primary:hover{background:#e8eefc}
.btn.small{padding:4px 10px;font-size:12px}
.btn.ghost{background:#fff;color:var(--ink2);border-color:#d4dae3}
.btn.ghost:hover{border-color:var(--brand2);color:var(--brand2)}
.btn.danger{background:#fdecec;color:#c0392b;border-color:#f5c6c6}

/* ===== 标签页 ===== */
#tabs{background:#fff;border-bottom:1px solid var(--line);padding:0 22px;display:flex;align-items:flex-end;gap:0;position:sticky;top:var(--tabsTop,63px);z-index:29;overflow-x:auto}
/* 页签分组：组名在上一行、组间一条竖线，组内才是可点的页签 */
.tabGrp{position:relative;display:flex;flex-direction:column;justify-content:flex-end;flex:0 0 auto;padding:0 16px}
#tabs>.tabGrp:first-child{padding-left:0}
#tabs>.tabGrp:last-child{padding-right:0}
#tabs>.tabGrp+.tabGrp::before{content:'';position:absolute;left:0;top:6px;bottom:9px;width:1px;background:#edf0f5}
.tabGrpName{font-size:10.5px;line-height:13px;color:#a4adbd;letter-spacing:.6px;padding:5px 0 0 14px;white-space:nowrap;user-select:none}
.tabSet{display:flex;gap:2px}
.tab{padding:7px 14px 9px;font-size:13.5px;color:var(--ink2);border-bottom:2px solid transparent;white-space:nowrap;user-select:none}
.tab:hover{color:var(--brand2)}
.tab.on{color:var(--brand);font-weight:600;border-bottom-color:var(--brand2)}
.tab .cnt{display:inline-block;margin-left:5px;background:#eef3fe;color:#2f5bd8;border-radius:9px;padding:0 6px;font-size:11px;vertical-align:1px}

#view{padding:16px 22px 60px;max-width:1800px;margin:0 auto}

/* ===== 卡片 ===== */
.card{background:var(--card);border-radius:10px;box-shadow:0 1px 4px rgba(16,30,60,.08);padding:16px 18px;margin-bottom:14px}
.card h2{font-size:14.5px;color:var(--brand);margin-bottom:12px;display:flex;align-items:center;gap:8px}
.card h2 .tip{font-size:11.5px;color:var(--ink3);font-weight:400}
.card h2::before{content:'';width:4px;height:14px;background:var(--brand2);border-radius:2px;display:inline-block}

/* ===== KPI 卡 ===== */
#kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:14px}
.kpi{background:#fff;border-radius:10px;padding:14px 16px;box-shadow:0 1px 4px rgba(16,30,60,.08);position:relative;overflow:hidden}
.kpi::after{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand2);opacity:.85}
.kpi .lab{font-size:12px;color:var(--ink3)}
.kpi .val{font-size:24px;font-weight:700;color:var(--brand);margin-top:4px;letter-spacing:-.5px}
.kpi .val small{font-size:12px;font-weight:400;color:var(--ink3);margin-left:3px}
.kpi .foot{font-size:11.5px;color:var(--ink3);margin-top:3px}
.kpi.g::after{background:var(--good)} .kpi.g .val{color:#12803c}
.kpi.w::after{background:var(--warn)} .kpi.w .val{color:#b8720f}
.kpi.b::after{background:var(--bad)} .kpi.b .val{color:#a93226}

/* ===== chips / 工具条 ===== */
#chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.chip{background:#fff;border:1px solid #dfe4ec;border-radius:18px;padding:5px 14px;font-size:13px;color:var(--ink2);cursor:pointer;user-select:none}
.chip b{margin-left:5px;font-size:13px}
.chip.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.chip.on b{color:#fff}
#toolbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
#toolbar input[type=search]{width:250px}
#toolbar .sp{color:var(--ink3);font-size:12px}

/* ===== 表格 ===== */
.tblWrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(16,30,60,.08);overflow:auto;max-height:calc(100vh - 300px)}
table{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}
thead th{background:#f5f7fb;color:#5a6577;font-weight:600;text-align:left;padding:9px 10px;font-size:12.5px;white-space:nowrap;position:sticky;top:0;z-index:2;border-bottom:1px solid var(--line)}
thead th.sortable{cursor:pointer;user-select:none}
thead th.sortable:hover{color:var(--brand2)}
thead th .ar{font-size:10px;color:#b7c0d0;margin-left:3px}
tbody td{padding:8px 10px;border-top:1px solid #f1f4f9;vertical-align:middle}
tbody tr.data{cursor:pointer}
tbody tr.data:hover{background:#f7faff}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
td.c,th.c{text-align:center}
.nm{font-weight:600;color:var(--ink)}
.nm:hover{color:var(--brand2)}
.sub2{font-size:11.5px;color:var(--ink3);margin-top:2px}
.tag{display:inline-block;background:#eef3fe;color:#2f5bd8;border-radius:4px;padding:1px 7px;font-size:11.5px;margin:1px 3px 1px 0;white-space:nowrap}
.tag.gray{background:#f2f4f8;color:#7c8699}
.tag.q{background:#fdf2e4;color:#b8720f}
.tag.g{background:#e9f7ee;color:#12803c}
.tag.r{background:#fdecec;color:#c0392b}
.badge{display:inline-block;border-radius:11px;padding:2px 9px;font-size:11.5px;color:#fff;white-space:nowrap}
.pill{display:inline-block;min-width:46px;text-align:center;border-radius:5px;padding:2px 7px;font-size:12.5px;font-variant-numeric:tabular-nums}
.p-hi{background:#e9f7ee;color:#12803c;font-weight:600}
.p-mid{background:#eef3fe;color:#2f5bd8}
.p-meh{background:#f6f7fa;color:#6b7688}
.p-lo{background:#fdf2e4;color:#b8720f;font-weight:600}
.p-bad{background:#fdecec;color:#c0392b;font-weight:600}
.p-na{background:#f6f7fa;color:#b7c0d0}
.bar{height:6px;background:#eef1f6;border-radius:3px;overflow:hidden;min-width:70px}
.bar>i{display:block;height:100%;background:linear-gradient(90deg,#2f6fed,#5b8cf5);border-radius:3px}
.bar>i.good{background:linear-gradient(90deg,#16a34a,#4ec27a)}
.bar>i.warn{background:linear-gradient(90deg,#e08a1e,#f0b45c)}
.bar>i.bad{background:linear-gradient(90deg,#c0392b,#e07a6e)}
.up{color:#12803c} .down{color:#c0392b} .flat{color:var(--ink3)}

/* ===== 分页 ===== */
#pager{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:12px;background:#fff;border-radius:10px;padding:9px 14px;box-shadow:0 1px 4px rgba(16,30,60,.08)}
.pgBtn,.pgNum{border:1px solid #d4dae3;background:#fff;color:var(--ink2);border-radius:6px;padding:4px 11px;font-size:13px}
.pgBtn:hover:not(:disabled),.pgNum:hover{border-color:var(--brand2);color:var(--brand2)}
.pgBtn:disabled{opacity:.4;cursor:not-allowed}
.pgNum{min-width:30px;text-align:center;padding:4px 0}
.pgNum.on{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:600}
.pgInfo{color:var(--ink3);font-size:12.5px;margin-left:auto}

/* ===== 详情抽屉 ===== */
.overlay{position:fixed;inset:0;background:rgba(15,25,50,.42);z-index:60;display:flex;align-items:center;justify-content:center;padding:18px}
.panel{background:#fff;border-radius:12px;width:96vw;max-width:1560px;height:94vh;display:flex;flex-direction:column;box-shadow:0 18px 60px rgba(0,0,0,.3);overflow:hidden}
.panelHead{padding:14px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff}
.panelHead .who{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.panelHead .who b{font-size:19px;color:var(--brand)}
.panelHead .who span{font-size:12.5px;color:var(--ink2)}
.panelHead .acts{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.panelTabs{display:flex;gap:2px;padding:0 20px;border-bottom:1px solid var(--line);background:#fbfcfe}
.ptab{padding:9px 15px;font-size:13px;color:var(--ink2);border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap}
.ptab:hover{color:var(--brand2)}
.ptab.on{color:var(--brand);font-weight:600;border-bottom-color:var(--brand2)}
.panelBody{flex:1;overflow:auto;padding:16px 20px 40px;background:#fbfcfe}

/* ===== 员工头部信息 ===== */
#empHead{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:14px}
.hcell{background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 12px}
.hcell .k{font-size:11.5px;color:var(--ink3)}
.hcell .v{font-size:13.5px;margin-top:3px;font-weight:600;color:var(--ink);word-break:break-all}
#monthStrip{display:flex;gap:8px;flex-wrap:wrap;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:14px;align-items:center}
.msItem{min-width:72px;text-align:center;border-radius:8px;padding:7px 9px;background:#f7f9fc}
.msItem .m{font-size:11.5px;color:var(--ink3)}
.msItem .s{font-size:16px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums}
.msItem.hi{background:#e9f7ee}.msItem.hi .s{color:#12803c}
.msItem.lo{background:#fdf2e4}.msItem.lo .s{color:#b8720f}
.msItem.bad{background:#fdecec}.msItem.bad .s{color:#c0392b}
.msItem.na .s{color:#c3cad6}

/* ===== 指标网格 ===== */
.gridWrap{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(16,30,60,.06);overflow:auto}
.mGrid{font-size:12px;min-width:1180px}
.mGrid th{padding:7px 6px;font-size:11.5px}
.mGrid td{padding:7px 6px;border-top:1px solid #f1f4f9;vertical-align:top}
.mGrid td.indName{min-width:230px;max-width:300px}
.mGrid .pair{display:flex;flex-direction:column;gap:1px;line-height:1.35;text-align:center}
.mGrid .pair .t{font-size:10.5px;color:#a6afc0}
.mGrid .pair .s{font-variant-numeric:tabular-nums;font-weight:600}
.mGrid .pair .s.hi{color:#12803c}.mGrid .pair .s.lo{color:#b8720f}.mGrid .pair .s.bad{color:#c0392b}
.mGrid .pair .s.na{color:#ccd3de;font-weight:400}
.mGrid tr.grp td{background:#f7f9fc;font-weight:600;color:var(--brand)}

/* 月度格：实际分 + 与目标差异 */
td.mc{text-align:center;padding:5px 3px !important;min-width:62px}
td.mc .v{display:block;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.25}
td.mc .v.hi{color:#12803c}td.mc .v.mid{color:#2f5bd8}td.mc .v.meh{color:#5a6577}
td.mc .v.lo{color:#b8720f}td.mc .v.bad{color:#c0392b}td.mc .v.na{color:#ccd3de;font-weight:400}
td.mc .d{display:block;font-size:10px;line-height:1.3;font-variant-numeric:tabular-nums}
td.mc .d.up{color:#12803c}td.mc .d.down{color:#c0392b}td.mc .d.flat{color:#b3bccb}
td.mc-empty{text-align:center;color:#dfe4ec}
th .thsub{display:block;font-size:9.5px;font-weight:400;color:#a6afc0;margin-top:1px}
tr.f-年 td:first-child{box-shadow:inset 3px 0 0 #2f5bd8}
tr.f-季 td:first-child{box-shadow:inset 3px 0 0 #e08a1e}
tr.f-月 td:first-child{box-shadow:inset 3px 0 0 #9aa7bd}
.wmini{display:flex;align-items:center;gap:5px;justify-content:flex-end}
.wmini i{display:block;height:5px;border-radius:3px;background:#9db3e8;min-width:2px;max-width:34px}
.wmini span{font-size:11.5px;color:#5a6577;font-variant-numeric:tabular-nums}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:#5a6577;margin:2px 0 8px 2px}
.legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px;vertical-align:-1px}
/* 考核周期标签（标在指标名右侧） */
.ptag{display:inline-block;font-size:10px;line-height:15px;padding:0 5px;border-radius:3px;margin-left:4px;vertical-align:1px;white-space:nowrap}
.ptag.y{background:#eef3fe;color:#2f5bd8;border:1px solid #dbe6fb}
.ptag.q{background:#fdf2e4;color:#b8720f;border:1px solid #f6e3c8}
.ptag.m{background:#f2f4f8;color:#6b7688;border:1px solid #e6eaf1}
.pcell{display:inline-block;font-size:11.5px;padding:2px 6px;border-radius:4px;white-space:nowrap}
.pcell.y{background:#eef3fe;color:#2f5bd8}
.pcell.q{background:#fdf2e4;color:#b8720f}
.pcell.m{background:#f2f4f8;color:#6b7688}
.pcell.both{background:#f3eeff;color:#6b45c9;font-weight:600}

/* 编辑区 */
.editTbl input[type=text],.editTbl input[type=number],.editTbl select{width:100%;padding:4px 6px;font-size:12.5px;border:1px solid #e3e8f1;background:#fffdf6}
.editTbl input:focus{background:#fff;border-color:var(--brand2)}
.editTbl td{padding:4px 5px}
.editTbl .del{color:#c0392b;background:none;border:none;font-size:15px;padding:0 4px}
/* 行操作 / 列操作 */
td.ops,th.opsCol{white-space:nowrap;text-align:center;background:#fbfcfe;min-width:84px;width:84px}
.rowbtn{border:1px solid #e3e8f1;background:#fff;color:#5a6577;border-radius:4px;width:20px;height:20px;line-height:1;font-size:11px;margin:0 1px;padding:0}
.rowbtn:hover{border-color:#2f6fed;color:#2f6fed;background:#f4f8ff}
.rowbtn.del:hover{border-color:#c0392b;color:#c0392b;background:#fdecec}
.colOps{display:inline-flex;gap:1px;margin-left:4px;vertical-align:1px}
.colOps button{border:none;background:none;color:#a6afc0;font-size:9.5px;padding:0 1px;cursor:pointer}
.colOps button:hover{color:#2f6fed}
.editTbl input.lock{background:#f6f7fa;color:#c3cad6}
.editTbl td input:disabled{background:#f6f7fa;color:#c3cad6}
.wsum{font-size:12.5px;color:var(--ink2)}
.wsum b{margin-left:4px}
.wsum.ok b{color:#12803c}.wsum.bad b{color:#c0392b}
#saveBar{position:sticky;bottom:0;background:#fff;border-top:1px solid var(--line);padding:10px 20px;display:flex;gap:10px;align-items:center;box-shadow:0 -2px 10px rgba(16,30,60,.06)}

/* 空状态 */
.empty{background:#fff;border:2px dashed #c4cee0;border-radius:12px;padding:50px 20px;text-align:center;color:var(--ink3)}
.empty .big{font-size:34px;margin-bottom:10px}

/* 说明块 */
.note{background:#fffbe8;border:1px solid #f2e3ae;border-radius:8px;padding:10px 14px;font-size:12.5px;color:#7a641e;line-height:1.85;margin-bottom:12px}
.helpList{font-size:13px;line-height:2;color:var(--ink2)}
.helpList b{color:var(--ink)}
.helpList code{background:#f3f5f9;border:1px solid #e3e8f1;border-radius:3px;padding:0 5px;font-family:Consolas,monospace;font-size:12px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:1400px){#kpis{grid-template-columns:repeat(3,1fr)}#empHead{grid-template-columns:repeat(3,1fr)}.two{grid-template-columns:1fr}}
@media(max-width:860px){#kpis{grid-template-columns:repeat(2,1fr)}}

#toast{position:fixed;top:18px;left:50%;transform:translateX(-50%);background:#26303e;color:#fff;padding:10px 22px;border-radius:8px;z-index:99;font-size:13px;box-shadow:0 6px 20px rgba(0,0,0,.28)}
#loading{position:fixed;inset:0;background:#f0f2f5;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;z-index:80;color:var(--ink2);font-size:13.5px}
.spin{width:30px;height:30px;border:3px solid #dbe3f0;border-top-color:var(--brand2);border-radius:50%;animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ============ 2027 定标表（一个部门一张表） ============ */
.sheetBar{display:flex;gap:6px;overflow-x:auto;padding:2px 0 10px;flex-wrap:nowrap}
.sheetBar::-webkit-scrollbar{height:6px}
.sheetBar::-webkit-scrollbar-thumb{background:#cdd6e6;border-radius:3px}
.shBtn{flex:0 0 auto;border:1px solid #d9e1ef;background:#fff;color:#33415c;border-radius:6px;padding:6px 12px;font-size:12.5px;cursor:pointer;line-height:1.2}
.shBtn i{display:block;font-style:normal;font-size:10px;color:#9aa7bd;margin-top:2px}
.shBtn:hover{border-color:#2f6fed;color:#2f6fed}
.shBtn.on{background:#1f3a8a;border-color:#1f3a8a;color:#fff}
.shBtn.on i{color:#b9c8ee}

.bidCard{padding:10px 12px 6px}
.bidTools{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap}
.bidTools #qBid{width:220px;padding:6px 10px;border:1px solid #dfe5f0;border-radius:6px;font-size:12.5px}
.bidTools .sp{flex:0 0 14px}
.bHint{font-size:11.5px;color:#8a93a6;line-height:1.5}
.bHint b{color:#2f5bd8}

.bidScroll{max-height:calc(100vh - 320px);overflow:auto;border:1px solid #e3e8f1;border-radius:8px}
.bidTbl{border-collapse:separate;border-spacing:0;width:max-content;font-size:12.5px}
.bidTbl th,.bidTbl td{border-bottom:1px solid #eef1f7;border-right:1px solid #f1f4f9;padding:5px 6px;vertical-align:middle;background:#fff}
.bidTbl thead th{position:sticky;z-index:6;background:#eef2f8;color:#33415c;font-weight:600;text-align:center;font-size:12px;border-bottom:1px solid #dbe3f0}
.bidTbl thead tr.h1 th{top:0}
.bidTbl thead tr.h2 th{top:31px;background:#f6f8fc;font-weight:500;font-size:11px;color:#5a6577}
.bidTbl thead tr.h1 th[rowspan]{z-index:7}
.bidTbl th.g26{background:#e5edf8;color:#1f4e8c;border-bottom:1px solid #cfdeef}
.bidTbl th.g26 i{font-style:normal;font-weight:400;font-size:10.5px;color:#6d87ab}
.bidTbl th.g27{background:#e2f1e6;color:#186a35;border-bottom:1px solid #c6e3cf}
.bidTbl th.g27 i{font-style:normal;font-weight:400;font-size:10.5px;color:#4d8a60}
.bidTbl th.gsc{background:#eef2f8}
.bidTbl th.tgtH{background:#fdf6d8;color:#7a641e}
.bidTbl th.pf{width:30px}.bidTbl th.wf{width:52px}
.bidTbl th.mh{padding:4px 2px;font-size:10.5px}

/* 冻结列 */
.bidTbl th.k1,.bidTbl th.k2,.bidTbl th.k3,.bidTbl th.k4,.bidTbl th.k5,
.bidTbl td.k1,.bidTbl td.k2,.bidTbl td.k3,.bidTbl td.k4,.bidTbl td.k5{position:sticky;z-index:4}
.bidTbl thead th.k1{left:0;z-index:8}.bidTbl thead th.k2{left:34px;z-index:8}.bidTbl thead th.k3{left:118px;z-index:8}
.bidTbl thead th.k4{left:222px;z-index:8}.bidTbl thead th.k5{left:308px;z-index:8}
.bidTbl td.k1{left:0}.bidTbl td.k2{left:34px}.bidTbl td.k3{left:118px}.bidTbl td.k4{left:222px}.bidTbl td.k5{left:308px}
.bidTbl td.k1,.bidTbl td.k2,.bidTbl td.k3,.bidTbl td.k4,.bidTbl td.k5{background:#fbfcfe;box-shadow:inset -1px 0 0 #eef1f7}
.bidTbl td.k5{font-weight:600;color:#1f2a44}
.bidTbl td.k2,td.k3{color:#5a6577}
.bidTbl td.k4{color:#8a93a6;font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}
.bidTbl td.k3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bidTbl td.k2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bidTbl tr.gtop td{border-top:2px solid #d7dfec}

.bidTbl td.kpiC{min-width:196px;max-width:196px;line-height:1.45}
.indTx{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.flg{display:inline-block;font-style:normal;font-size:9.5px;line-height:14px;padding:0 4px;border-radius:3px;margin-left:4px;vertical-align:1px}
.flg.g26f{background:#f2f4f8;color:#6b7688;border:1px solid #e6eaf1}
.flg.g27f{background:#e2f1e6;color:#186a35;border:1px solid #c6e3cf}

.bidTbl td.b26.p{background:#eef3fb;text-align:center;font-size:11.5px;color:#b9c6da;min-width:30px}
.bidTbl td.b26.p.on{color:#1f4e8c;font-weight:600;background:#dfeaf8}
.bidTbl td.b26.w{background:#f6f9fd;text-align:right;font-variant-numeric:tabular-nums;color:#33415c;min-width:52px}
.bidTbl td.b27.p{background:#eef8f0;text-align:center;font-size:11.5px;color:#d3e5d8;cursor:default;min-width:30px}
.bidTbl td.b27.p.on{color:#186a35;font-weight:700;background:#dff0e3}
.bidTbl td.b27.w{background:#f4faf6;padding:2px 4px;min-width:52px}
.bidTbl .win{width:100%;min-width:44px;border:1px solid transparent;background:transparent;text-align:right;font-size:12.5px;padding:3px 4px;border-radius:4px;font-variant-numeric:tabular-nums}
.bidTbl .win:focus{border-color:#2f8f4e;background:#fff;outline:none}
.bidTbl .win.has{color:#186a35;font-weight:600}
.bidTbl .win::placeholder{color:#d5dee9}

.bidTbl td.desc,.bidTbl td.std{font-size:11px;color:#5a6577;line-height:1.4;padding:4px 5px}
.cl3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.bidTbl td.tgt{background:#fffdf2;color:#7a641e;font-weight:500;max-width:126px}
.bidTbl td.src{color:#8a93a6;font-size:11.5px}
.bidTbl td.mn{text-align:center;font-variant-numeric:tabular-nums;color:#5a6577;padding:5px 2px}
.bidTbl td.mn.ok{color:#12803c;font-weight:600}
.bidTbl td.mn.low{color:#c0392b}
.bidTbl td.ratio{text-align:center;font-variant-numeric:tabular-nums;font-weight:600}
.bidTbl td.ratio.up{color:#12803c}.bidTbl td.ratio.down{color:#c0392b}
.bidTbl td.ratio i{display:block;font-style:normal;font-weight:400;font-size:10px;color:#9aa7bd}
.bidTbl td.ratio .dim{color:#d5dee9;font-weight:400}

.bidTbl .tin{width:100%;border:1px solid #e3e8f1;background:#fffdf6;font-size:11.5px;padding:3px 5px;border-radius:4px}
.bidTbl .tin:focus{border-color:#2f8f4e;background:#fff;outline:none}
.bidTbl td.ccv{padding:2px 4px}
.bidTbl th.cch{white-space:nowrap}
.bidTbl th.cch .cn{margin-right:3px}
.bidTbl .ci{font-style:normal;font-size:9.5px;color:#a6afc0;cursor:pointer;margin-left:2px}
.bidTbl .ci:hover{color:#2f6fed}
.bidTbl .ci.del:hover{color:#c0392b}

.bidTbl tr.bextra td{background:#fbfff9}
.bidTbl tr.bsum td{background:#f7f9fc;border-top:1px dashed #dbe3f0;font-size:11.5px;color:#5a6577;padding:4px 6px}
.bidTbl tr.bsum td.sumLab{color:#33415c;font-weight:600}
.bidTbl tr.bsum td.sum26{color:#6d87ab}
.bidTbl tr.bsum td.sum27c{color:#186a35;font-weight:600}
.bidTbl tr.bsum b.okk{color:#12803c}
.bidTbl tr.bsum em.okTag{font-style:normal;background:#12803c;color:#fff;border-radius:3px;padding:1px 6px;font-size:10.5px;margin-left:6px}
.emptyRow{text-align:center;color:#a6afc0;padding:24px}
.flg.hdf{background:#fff3d6;color:#9a6b00;border:1px solid #f0dca8;font-weight:600}

/* 可编辑文字单元格 / 2027年目标列 */
.bidTbl .ce{cursor:text;outline:none;min-height:15px}
.bidTbl .ce:hover{background:#f7fbff;box-shadow:inset 0 0 0 1px #cfe0f5;border-radius:3px}
.bidTbl .ce:focus{display:block;-webkit-line-clamp:unset;overflow:visible;background:#fff;
  box-shadow:0 0 0 2px #2f8f4e, 0 6px 18px rgba(0,0,0,.12);border-radius:4px;position:relative;z-index:9;
  padding:3px 4px;min-width:180px}
.bidTbl .ce:empty:before{content:attr(data-ph);color:#d5dee9}
.bidTbl th.t27H{background:#e2f1e6;color:#186a35}
.bidTbl th.t27H i{font-style:normal;font-size:10px;font-weight:400;color:#4d8a60}
.bidTbl td.t27{background:#f4faf6;padding:2px 4px}
.bidTbl .t27in{background:#fff;border:1px dashed #b7d6c0;color:#186a35;text-align:left;font-size:11.5px}
.bidTbl .t27in:focus{border:1px solid #2f8f4e;background:#fff;outline:none}
.bidTbl td.tgt{background:#fffdf2;padding:2px 4px}
.bidTbl .tgtin{background:transparent;border:1px solid transparent;color:#7a641e;text-align:left;font-size:11.5px;font-weight:500}
.bidTbl .tgtin:hover{border-color:#ecd98f;background:#fff}
.bidTbl .tgtin:focus{border-color:#d9b95a;background:#fff;outline:none}
.bidTbl td.src{padding:2px 4px}
.bidTbl .srcin{background:transparent;border:1px solid transparent;color:#8a93a6;text-align:left;font-size:11px}
.bidTbl .srcin:hover{border-color:#dfe5f0;background:#fff}
.bidTbl .srcin:focus{border-color:#2f6fed;background:#fff;outline:none}

/* 月均得分 / 与标准差异 */
.bidTbl td.ratio{min-width:94px;line-height:1.25;padding:4px 4px}
.bidTbl td.ratio b{display:block;font-size:13.5px;font-weight:700;letter-spacing:0}
.bidTbl td.ratio i{display:block;font-style:normal;font-weight:400;font-size:10px;color:#9aa7bd;margin-top:1px;white-space:nowrap}
.bidTbl td.gap{min-width:86px;text-align:center;font-variant-numeric:tabular-nums;background:#fcfdfe}
.bidTbl td.gap b{display:block;font-size:13px;font-weight:700}
.bidTbl td.gap i{display:block;font-style:normal;font-weight:400;font-size:10px;color:#9aa7bd;margin-top:1px}
.bidTbl td.gap.up b{color:#12803c}
.bidTbl td.gap.down b{color:#c0392b}
.bidTbl td.gap .dim{color:#d5dee9;font-weight:400}
.bidTbl th.rh{white-space:nowrap;font-size:10.5px;line-height:1.25}

/* ===== 2027 定标表：全字段可编辑 / 拖拽排序 / 并入部门 ===== */
.bidTbl td.k1{position:relative}
.bidTbl td.k1 em{font-style:normal}
.bidTbl .grip{display:block;font-size:10px;line-height:9px;color:#a9b8cf;cursor:grab;text-align:center;letter-spacing:-1px;margin-bottom:2px;user-select:none}
.bidTbl .grip:hover{color:#2f6fed}
.bidTbl .grip:active{cursor:grabbing}

.bidTbl .ce2{cursor:text;outline:none;min-height:16px;line-height:1.35;border-radius:3px;padding:1px 2px}
.bidTbl .ce2:hover{background:#f5f9ff;box-shadow:inset 0 0 0 1px #cfe0f5}
.bidTbl .ce2:focus{background:#fff;box-shadow:0 0 0 2px #2f6fed;position:relative;z-index:9;word-break:break-word;white-space:normal}
.bidTbl .ce2:empty:before{content:attr(data-ph);color:#ccd5e2}

.bidTbl .cin{width:100%;min-width:34px;border:1px solid transparent;background:transparent;text-align:right;
  font-size:11.5px;color:#33415c;padding:2px 3px;border-radius:3px;font-variant-numeric:tabular-nums;font-family:inherit}
.bidTbl .cin:hover{border-color:#cfdcef;background:#fff}
.bidTbl .cin:focus{border-color:#2f6fed;background:#fff;outline:none}
.bidTbl .cin::placeholder{color:#dfe6f0}

.bidTbl .sin{width:100%;min-width:30px;border:1px solid transparent;background:transparent;text-align:center;
  font-size:11.5px;padding:2px 0;border-radius:3px;font-variant-numeric:tabular-nums;color:inherit;font-family:inherit}
.bidTbl .sin:hover{border-color:#dbe3f0;background:#fff}
.bidTbl .sin:focus{border-color:#2f6fed;background:#fff;outline:none}
.bidTbl .sin::placeholder{color:#e2e8f2}

.bidTbl tr.dragging td{opacity:.42}
.bidTbl tr.dropT td{border-top:2px solid #2f6fed}
.bidTbl tr.dropB td{border-bottom:2px solid #2f6fed}

.pickOv{position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(15,23,42,.35);
  display:flex;align-items:center;justify-content:center;z-index:9999}
.pickBox{background:#fff;border-radius:12px;width:min(580px,92vw);max-height:76vh;display:flex;flex-direction:column;
  box-shadow:0 20px 60px rgba(0,0,0,.28);padding:16px 18px 12px}
.pickBox h3{font-size:14px;color:#1f2a44;margin:0 0 10px;font-weight:600}
.pickList{display:grid;grid-template-columns:repeat(auto-fill,minmax(122px,1fr));gap:6px;overflow:auto;padding:2px}
.pickIt{border:1px solid #d9e1ef;background:#fff;border-radius:6px;padding:8px 6px;font-size:12.5px;
  color:#33415c;cursor:pointer;text-align:center;font-family:inherit}
.pickIt:hover{border-color:#2f6fed;color:#2f6fed;background:#f5f9ff}
.pickFoot{display:flex;justify-content:flex-end;margin-top:10px}

/* ===== 每人 Σ 汇总行 / 离职隐藏 ===== */
.bidTbl tr.psum td{background:#f4f7fd;border-bottom:1px solid #d7e0ee}
.bidTbl tr.psum td.k1,.bidTbl tr.psum td.k2,.bidTbl tr.psum td.k3,
.bidTbl tr.psum td.k4,.bidTbl tr.psum td.k5{background:#e9eff9}
.bidTbl tr.psum td.k5{color:#12305e;font-weight:700;font-size:13px}
.bidTbl tr.psum .sig{font-style:normal;font-weight:700;color:#2f6fed;font-size:11px}
.bidTbl tr.psum td.sumLab{color:#12305e;font-weight:700;font-size:12px;background:#f4f7fd}
.bidTbl tr.psum td.sumLab .sumTip{display:block;font-style:normal;font-weight:400;font-size:10px;color:#8fa2bf;margin-top:1px}
.bidTbl tr.psum td.mn.psumM{background:#eef3fb;color:#1f4e8c;font-weight:700;font-size:12.5px}
.bidTbl tr.psum td.ratio{background:#f4f7fd}
.bidTbl tr.psum td.gap{background:#e9eff9}
.bidTbl tr.psum td.ratio b{font-size:14.5px}
.bidTbl tr.psum td.gap b{font-size:14px}
.bidTbl tr.psum td.sum26{color:#26528f;font-weight:600;font-size:11.5px;background:#f4f7fd}
.bidTbl tr.psum td.sum27c{color:#186a35;font-weight:600;font-size:11.5px;background:#f4f7fd}

.bidTbl tr.isoff td{background:#fdf7f6!important;color:#a39694}
.bidTbl tr.isoff td.k5{color:#b04a3a}
.bidTbl tr.isoff td.ratio b,.bidTbl tr.isoff td.mn.psumM{color:#b08a84}
.offTag{display:inline-block;font-style:normal;font-size:9.5px;line-height:14px;padding:0 4px;border-radius:3px;
  margin-left:4px;background:#fdecea;color:#c0392b;border:1px solid #f2c3bb;vertical-align:1px;font-weight:600}
/* 部门长（按 11 月个人信息表） */
.hdTag{display:inline-block;font-style:normal;font-size:9.5px;line-height:14px;padding:0 4px;border-radius:3px;
  margin-left:4px;vertical-align:1px;font-weight:600;white-space:nowrap}
.hdTag.hd1{background:#fdf1d8;color:#8a5b00;border:1px solid #efd8a6}
.hdTag.hd2{background:#fff8e8;color:#9a7220;border:1px solid #f3e3bd}
.hdTag.hd3{background:#f4f5f8;color:#6b7488;border:1px solid #e2e6ee}
/* 一人多份绩效：品牌/渠道份标（WCY / PH / 电商 / 经销） */
.partTag{display:inline-block;font-style:normal;font-size:9.5px;line-height:14px;padding:0 5px;border-radius:3px;
  margin-left:4px;background:#eaf2ff;color:#1f5fae;border:1px solid #c8dcf7;vertical-align:1px;font-weight:700;letter-spacing:.3px}
.bidTbl tr.hasPart td.psumM{font-weight:700}
.bidTbl tr.hasPart td.kpiC.sumLab{color:#1f5fae}
.bidTools .chip.offChip.on{background:#fdecea;border-color:#eeb4aa;color:#c0392b}
.rowbtn.offb:hover{border-color:#c0392b;color:#c0392b;background:#fdecec}
.rowbtn.back:hover{border-color:#2f8f4e;color:#2f8f4e;background:#eef8f0}
.bidTbl .ci.ins:hover{color:#12803c}

/* 描述/标准列限宽，避免整表被长文本撑开 */
.bidTbl td.desc{max-width:200px}
.bidTbl td.std{max-width:160px}


/* ===== 部门条：改名 / 新增 ===== */
.shBtn{position:relative;padding-right:20px}
.shEd{position:absolute;right:3px;top:1px;font-style:normal;font-size:10px;color:#b9c6da;opacity:0;padding:0 2px}
.shBtn:hover .shEd{opacity:1}
.shBtn.on .shEd{color:#b9c8ee}
.shEd:hover{color:#2f6fed}
.shBtn.addSh{padding-right:12px;border-style:dashed;color:#8a93a6}
.shBtn.addSh:hover{color:#2f6fed;border-color:#2f6fed;background:#f7faff}

/* ===== 指标行：隐藏 / 历史 ===== */
.bidTbl .rowbtn.hider:hover{border-color:#b98a1e;color:#a8760f;background:#fdf8ea}
.bidTbl tr.ishid td{background:#fbfbfc!important;color:#9aa3b2}
.bidTbl tr.ishid td.k1,.bidTbl tr.ishid td.k5{background:#f6f7f9!important}
.bidTbl tr.ishid .indTx{text-decoration:line-through;color:#9aa3b2}
.flg.ghis{background:#f3eefb;color:#6b4fa8;border:1px solid #ded2f0}
.flg.ghid{background:#f2f4f8;color:#7c8699;border:1px solid #e2e7ef}
.chip.histChip.on{background:#6b4fa8;border-color:#6b4fa8;color:#fff}
.chip.hidChip.on{background:#6b7789;border-color:#6b7789;color:#fff}

/* ===== 底部横向拖拽条 ===== */
#hBar{position:fixed;left:0;right:0;bottom:0;height:16px;overflow-x:auto;overflow-y:hidden;z-index:34;
  background:linear-gradient(180deg,#e8edf6,#dfe6f1);border-top:1px solid #cfd8e6;display:none;
  box-shadow:0 -2px 8px rgba(16,30,60,.08)}
#hBarIn{height:1px}
#hBar::-webkit-scrollbar{height:16px}
#hBar::-webkit-scrollbar-track{background:#e4eaf4}
#hBar::-webkit-scrollbar-thumb{background:#98a9c4;border-radius:8px;border:3px solid #e4eaf4}
#hBar::-webkit-scrollbar-thumb:hover{background:#6d84a8}
.bidScroll::-webkit-scrollbar{height:12px;width:12px}
.bidScroll::-webkit-scrollbar-thumb{background:#c3cddd;border-radius:6px;border:3px solid #fff}
.bidScroll::-webkit-scrollbar-thumb:hover{background:#9aa9c2}

/* ===== 单人绩效档案弹层 ===== */
.arcOv{position:fixed;inset:0;background:rgba(15,25,50,.45);z-index:70;display:flex;align-items:center;justify-content:center;padding:20px}
.arcBox{background:#fff;border-radius:12px;width:min(1240px,97vw);max-height:92vh;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.32);overflow:hidden}
.arcHead{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}
.arcWho b{font-size:16px;color:#1f2a44;margin-right:8px}
.arcWho span{font-size:12.5px;color:var(--ink2)}
.arcWho .arcCur{display:inline-block;font-style:normal;font-size:11.5px;color:#2f5bd8;background:#eef3fe;border-radius:4px;padding:1px 7px;margin-left:8px}
.arcActs{margin-left:auto;display:flex;align-items:center;gap:8px}
.arcCnt{font-size:12px;color:var(--ink3)}
.arcBody{overflow:auto;padding:0 18px 18px}
.arcSec h4{font-size:13px;color:#33415c;margin:14px 0 6px;font-weight:600}
.arcSec h4 span{font-size:11.5px;color:var(--ink3);font-weight:400;margin-left:4px}
.arcTbl{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}
.arcTbl th{position:sticky;top:0;background:#f5f7fb;color:#5a6577;font-weight:600;font-size:11.5px;padding:7px 8px;text-align:left;border-bottom:1px solid #e2e8f2;z-index:2}
.arcTbl td{padding:6px 8px;border-bottom:1px solid #f1f4f9;vertical-align:middle}
.arcTbl td.c,.arcTbl th.c{text-align:center}
.arcTbl tr.arcHid td{background:#fbfbfc;color:#9aa3b2}
.arcInd b{display:block;font-weight:600;color:#1f2a44;font-size:12.5px}
.arcInd .arcSheet{display:block;font-style:normal;font-size:10.5px;color:#9aa7bd;margin-top:1px}
.arcTbl tr.arcHid .arcInd b{color:#9aa3b2}
.arcMs{font-size:11.5px;color:#5a6577;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.arcU{display:block;font-style:normal;font-size:10px;color:#9aa7bd}
.arcTag{display:inline-block;font-style:normal;font-size:10.5px;line-height:16px;padding:0 6px;border-radius:3px;white-space:nowrap}
.arcTag.h{background:#f3eefb;color:#6b4fa8;border:1px solid #ded2f0}
.arcTag.x{background:#f2f4f8;color:#7c8699;border:1px solid #e2e7ef}
.arcTag.n{background:#e2f1e6;color:#186a35;border:1px solid #c6e3cf}
.arcTag.d{background:#eef3fb;color:#1f4e8c;border:1px solid #d6e3f5}
.arcTag.b{background:#fbf7e6;color:#8a6d12;border:1px solid #eee1b8}
.arcTag.m{background:#fdf2e4;color:#b8720f;border:1px solid #f3ddbe}
.arcTbl .btn.undo{background:#eef8f0;border-color:#bfe0c9;color:#12803c}

/* ===== 员工总表 ===== */
.rosTools{display:flex;gap:8px;align-items:center;margin-bottom:10px;flex-wrap:wrap}
.rosTools #qRos{width:240px;padding:6px 10px;border:1px solid #dfe5f0;border-radius:6px;font-size:12.5px}
.rosTools .sp{flex:0 0 10px}
/* 名册工具栏在白色卡片里：.btn 默认是给深色顶栏用的白字，这里单独给主按钮上色，否则看不见 */
.rosTools .btn.addEmp2{background:#2f6fed;color:#fff;border-color:#2f6fed;font-weight:600;box-shadow:0 1px 2px #2f6fed33}
.rosTools .btn.addEmp2:hover{background:#2559c9;border-color:#2559c9;color:#fff}
.rosWrap{max-height:calc(100vh - 230px);border:1px solid #e3e8f1}
.rosTbl{border-collapse:separate;border-spacing:0;width:100%;table-layout:fixed;font-size:12.5px}
.rosTbl th,.rosTbl td{border-bottom:1px solid #eef1f7;padding:6px 8px;vertical-align:middle;background:#fff}
.rosTbl thead th{background:#eef2f8;color:#33415c;font-size:12px;white-space:nowrap;position:sticky;top:0;z-index:3}
.rosTbl col{}
/* 12 列：序/姓名/中心/部门/同岗位/岗位/部门长/入职/状态/归入/指标/操作 */
.rosTbl th.cNo{width:38px}
.rosTbl th.cNm{width:94px}
.rosTbl th.cCtr{width:92px}
.rosTbl th.cDept{width:134px}
.rosTbl th.cPg{width:122px}
.rosTbl th.cPost{width:94px}
.rosTbl th.cLv{width:58px;white-space:nowrap}
.rosTbl th.cEnt{width:68px}
.rosTbl th.cSt{width:70px}
.rosTbl th.cAs{width:100px}
.rosTbl th.cN{width:48px}
.rosTbl th.cAct{width:76px}
.rosTbl tbody tr:hover td{background:#f8fbff}
.rosTbl tbody tr.isoff td{background:#fdf7f6;color:#a39694}
.rosTbl tbody tr.noind td{color:#aab2c0}
.rosTbl .rosNm b{font-weight:600;color:#1f2a44;cursor:pointer}
.rosTbl .rosNm b:hover{color:#2f6fed;text-decoration:underline}
.rosTbl .rosCtr,.rosTbl .rosDept,.rosTbl .rosPost{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rosTbl .rosEnt{font-variant-numeric:tabular-nums;color:#8a93a6;font-size:11.5px}
.rosTbl .rosN i{font-style:normal;color:#aab2c0;font-size:10.5px}
.rosTbl .deptSel{width:100%;padding:4px 6px;font-size:12px;border:1px solid #d8e0ec;border-radius:5px;background:#fff}
.rosTbl .deptSel:focus{border-color:#2f6fed}
.stBtn{border:1px solid #cfe3d6;background:#eef8f0;color:#12803c;border-radius:12px;padding:2px 10px;font-size:11.5px}
.stBtn.off{background:#fdecea;border-color:#f2c3bb;color:#c0392b}
.stBtn:hover{box-shadow:0 0 0 2px #2f6fed22}
.rosFoot{font-size:11.5px;color:var(--ink3);margin-top:8px}
.bidTbl .rowbtn.arc{font-weight:600;color:#6b4fa8;border-color:#ded2f0;background:#faf7ff}
.bidTbl .rowbtn.arc:hover{background:#f3eefb;border-color:#b9a3e0}
.shDel{position:absolute;right:14px;top:1px;font-style:normal;font-size:10px;color:#c9b3ae;opacity:0;padding:0 2px}
.shBtn:hover .shDel{opacity:1}
.shDel:hover{color:#c0392b}
.rosTbl th.cAct,.rosTbl td:last-child{padding-right:6px}

/* 无指标人员占位行 */
.bidTbl tr.bnone td{background:#fcfcfe}
.bidTbl tr.bnone td.kpiC{color:#8a93a6;font-size:11.5px}
.noneHint{color:#9aa3b2;font-size:11.5px}

/* EHR 核查标记：无指标但 EHR 里有 2026 考核 */
.ehrTag{display:inline-block;font-style:normal;font-size:9.5px;line-height:14px;padding:0 4px;border-radius:3px;
  margin-left:4px;vertical-align:1px;font-weight:600;white-space:nowrap;background:#f2f4f8;color:#7c8699;border:1px solid #e2e7ef}
.ehrTag.on{background:#fdeeee;color:#b04a3a;border-color:#f3cbc2}

/* ===== 内置确认 / 输入弹窗 ===== */
.pickBox.dlgBox{width:min(430px,92vw);padding:18px 20px}
.dlgBox h3{font-size:15px;margin-bottom:10px}
.dlgMsg{font-size:13px;color:#5a6577;line-height:1.75;margin-bottom:14px;white-space:normal}
.dlgHint{font-size:11.5px;color:#8a93a6;margin:-4px 0 10px;line-height:1.6}
.dlgIn{width:100%;padding:8px 10px;font-size:13px;border:1px solid #d4dae3;border-radius:6px;margin-bottom:14px}
.dlgIn:focus{border-color:#2f6fed;outline:none;box-shadow:0 0 0 3px #2f6fed18}
.dlgFoot{display:flex;justify-content:flex-end;gap:8px}
.dlgFoot .btn.danger{background:#c0392b;color:#fff;border-color:#c0392b}
.dlgFoot .btn.danger:hover{background:#a93226}

/* 加一列放最前，做成显眼一点 */
.bidTools .addCol{background:#eef3fe;border-color:#c9d8f8;color:#2f5bd8;font-weight:600;flex:0 0 auto}
.bidTools .addCol:hover{background:#e2ebff;border-color:#2f6fed;color:#2f6fed}

/* ===== 列管理 ===== */
.colBox{width:min(520px,94vw)}
.colBox h3 i{font-style:normal;font-size:11.5px;color:#8a93a6;font-weight:400;margin-left:6px}
.colTip{font-size:11.5px;color:#8a93a6;margin:-4px 0 10px;line-height:1.6}
.colList{max-height:52vh;overflow:auto;border:1px solid #eef1f7;border-radius:8px;padding:4px}
.colRow{display:flex;align-items:center;gap:6px;padding:6px 8px;border-bottom:1px solid #f3f6fa}
.colRow:last-child{border-bottom:0}
.colRow b{width:20px;color:#aab2c0;font-size:11px;font-weight:400;text-align:right}
.colRow .colNm{flex:1;font-size:12.5px;color:#1f2a44;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.colRow .btn{padding:2px 8px;font-size:11.5px}
.btn.ghost.small.danger{color:#c0392b;border-color:#f0cdc7}
.btn.ghost.small.danger:hover{background:#fdecea;border-color:#e0a49a}
.colEmpty{padding:22px;text-align:center;color:#aab2c0;font-size:12.5px}

/* ===== 岗位标准（按岗位定指标） ===== */
.plWrap{display:flex;gap:14px;align-items:flex-start}
.plLeft{width:272px;flex:none;padding:0;display:flex;flex-direction:column;max-height:calc(100vh - 150px);position:sticky;top:118px}
.plLHead{display:flex;align-items:baseline;gap:8px;padding:14px 14px 8px}
.plLHead b{font-size:14px;color:var(--brand)}
.plLHead span{font-size:11.5px;color:var(--ink3)}
.plSearch{margin:0 12px 8px;width:calc(100% - 24px)}
.plList{flex:1;overflow-y:auto;padding:0 8px 8px}
.plItem{padding:8px 10px;border-radius:7px;cursor:pointer;border:1px solid transparent;margin-bottom:2px}
.plItem:hover{background:#f5f8ff}
.plItem.on{background:#eef3fe;border-color:#c9d9fb}
.plIt1{display:flex;align-items:baseline;gap:6px}
.plIt1 b{font-size:13px;color:#1f2a44}
.plItem.on .plIt1 b{color:var(--brand)}
.plItem > i{display:block;font-style:normal;font-size:11.5px;color:var(--ink3);margin-top:2px}
.plVer{font-size:10px;color:#2f5bd8;background:#eef3fe;border-radius:8px;padding:0 5px;line-height:15px}
.plItem.on .plVer{background:#fff}
.plTags{margin-top:3px;display:flex;gap:4px}
.plSync{font-style:normal;font-size:10.5px;color:#b06a05;background:#fdf3e3;border:1px solid #f0d9ae;border-radius:4px;padding:0 4px}
.plNone{font-style:normal;font-size:10.5px;color:#8a93a6;background:#f2f4f8;border:1px solid #e2e6ee;border-radius:4px;padding:0 4px}
.plFoot{padding:8px 12px;border-top:1px solid var(--line);font-size:10.5px;color:#aab2c0;line-height:1.6}
.plRight{flex:1;min-width:0;margin-bottom:0}
.plEmpty{padding:40px 20px;text-align:center;color:#aab2c0;font-size:13px;line-height:2}
.plEmpty i{font-style:normal;font-size:12px;color:#c0c7d4}
.plTitle{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-bottom:10px;border-bottom:1px solid var(--line)}
.plTitle b{font-size:16px;color:var(--brand)}
.plMeta{font-size:12px;color:var(--ink3);margin-left:8px}
.plActs{margin-left:auto;display:flex;gap:6px}
.plSums{display:flex;gap:8px;flex-wrap:wrap;padding:10px 0}
.plSum{font-size:12px;color:var(--ink2);background:#f6f8fc;border:1px solid var(--line);border-radius:6px;padding:4px 9px}
.plSum b{font-family:"DIN Alternate",Consolas,monospace;font-size:13.5px;margin:0 3px}
.plSum i{font-style:normal;font-size:10.5px;color:var(--ink3)}
.plSum.ok{background:#eefaf2;border-color:#c6ecd5;color:#15803d}
.plSum.bad{background:#fdecea;border-color:#f3cfc9;color:#c0392b}
.plTblWrap{max-height:calc(100vh - 430px);min-height:120px}
.plTbl{width:100%;border-collapse:collapse;font-size:12.5px;table-layout:fixed}
.plTbl th{position:sticky;top:0;background:#f7f9fd;color:var(--ink2);font-weight:600;font-size:11.5px;
  padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;z-index:2}
.plTbl td{padding:4px 6px;border-bottom:1px solid #f0f3f8;vertical-align:middle}
.plTbl tr.plGrp td{background:#f5f8ff;padding:5px 8px}
.plTbl tr.plGrp b{font-size:12px;color:var(--brand)}
.plTbl tr.plGrp i{font-style:normal;font-size:11.5px;margin-left:8px}
.plTbl tr.plGrp i.ok{color:#15803d}
.plTbl tr.plGrp i.bad{color:#c0392b;font-weight:600}
.plIn{width:100%;border:1px solid transparent;background:transparent;padding:4px 6px;font-size:12.5px;border-radius:5px}
.plIn:hover{border-color:#dde3ec;background:#fbfcfe}
.plIn:focus{border-color:var(--brand2);background:#fff}
.plW{text-align:right;font-family:"DIN Alternate",Consolas,monospace;font-weight:600;max-width:66px}
.plW26{font-family:"DIN Alternate",Consolas,monospace;font-size:11.5px;color:#9aa4b5;background:#fafbfd}
.plN{font-size:11px;color:var(--ink3);white-space:nowrap}
.plStd .plIn{font-size:11.5px;color:var(--ink2)}
.cycTag{display:inline-block;width:20px;height:20px;line-height:20px;text-align:center;border-radius:5px;font-size:11px;font-weight:600}
.cycTag.cy{background:#eaf0fd;color:#2f5bd8}
.cycTag.cq{background:#eaf7f1;color:#15803d}
.cycTag.cm{background:#fdf3e3;color:#b06a05}
.rowbtn.del{color:#c0392b;border-color:#f0cdc7}
.rowbtn.del:hover{background:#fdecea}
.plOptBox{margin-top:12px;border:1px dashed #d9e0ec;border-radius:8px;padding:10px 12px;background:#fbfcfe}
.plOptH{font-size:12.5px;color:var(--ink2);margin-bottom:8px}
.plOptH i{font-style:normal;font-size:11px;color:var(--ink3);margin-left:6px}
.plOptList{display:flex;flex-wrap:wrap;gap:6px}
.plOptItem{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--line);
  border-radius:16px;padding:3px 4px 3px 9px;font-size:12px;color:#33405a}
.plOptItem em{font-style:normal;font-size:10px;color:#8a93a6;border-right:1px solid var(--line);padding-right:5px}
.plOptItem i{font-style:normal;font-size:10.5px;color:#a5adbd}
.plAdd{border:none;background:#eef3fe;color:#2f5bd8;width:18px;height:18px;line-height:1;border-radius:50%;font-size:12px}
.plAdd:hover{background:#2f6fed;color:#fff}
.plPplH{display:flex;align-items:center;gap:10px;margin:16px 0 8px;font-size:13px;color:var(--brand);font-weight:600}
.plPplH i{font-style:normal;font-size:11.5px;color:var(--ink3);font-weight:400}
.plChk{margin-left:auto;font-size:11.5px;color:var(--ink2);font-weight:400;display:flex;align-items:center;gap:4px;cursor:pointer}
.plPplWrap{max-height:300px}
.plPpl{width:100%;border-collapse:collapse;font-size:12.5px;table-layout:fixed}
.plPpl th{position:sticky;top:0;background:#f7f9fd;color:var(--ink2);font-weight:600;font-size:11.5px;
  padding:7px 8px;border-bottom:1px solid var(--line);text-align:left;z-index:2}
.plPpl td{padding:6px 8px;border-bottom:1px solid #f0f3f8}
.plPpl tr.isoff{opacity:.55}
.plPpl tr:hover td{background:#fbfcfe}
.plPd{font-size:11.5px;color:var(--ink2)}
.plPpl .rowbtn{width:auto;min-width:48px;height:22px;line-height:20px;padding:0 10px;font-size:11.5px;white-space:nowrap}
@media (max-width:1200px){.plWrap{flex-direction:column}.plLeft{width:100%;position:static;max-height:260px}}

/* ===== 部门岗位表（部门内按岗位分组） ===== */
.pvBar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 16px}
.pvBar b{font-size:13px;color:var(--brand)}
.pvBar select{min-width:220px;font-size:13px;padding:6px 10px}
.pvTip{margin-left:auto;font-size:11.5px;color:var(--ink3)}
.pvSum{display:flex;align-items:baseline;gap:12px;padding:12px 16px}
.pvSum b{font-size:16px;color:var(--brand)}
.pvSum span{font-size:12px;color:var(--ink3)}
.pvEmpty{padding:40px;text-align:center;color:#aab2c0}
.pvCard{padding:14px 16px}
.pvCard.noTpl{border-left:3px solid #e8b95f}
.pvH{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.pvH > b{font-size:14.5px;color:#1f2a44}
.pvMeta{font-size:11.5px;color:var(--ink3)}
.pvActs{margin-left:auto;display:flex;gap:6px}
.pvTblWrap{margin-bottom:10px}
.pvTbl{width:100%;border-collapse:collapse;font-size:12.5px}
.pvTbl th{background:#f7f9fd;color:var(--ink2);font-weight:600;font-size:11.5px;padding:6px 8px;
  border-bottom:1px solid var(--line);text-align:left}
.pvTbl td{padding:5px 8px;border-bottom:1px solid #f2f5fa;vertical-align:middle}
.pvInd{font-weight:500;color:#1f2a44}
.pvW{font-family:"DIN Alternate",Consolas,monospace;font-weight:600;color:var(--brand)}
.pvStd{font-size:11.5px;color:var(--ink2);max-width:520px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pvPplH{margin:12px 0 6px;font-size:12.5px;font-weight:600;color:var(--brand)}
.pvPplH i{font-style:normal;font-weight:400;font-size:11px;color:var(--ink3);margin-left:6px}
.pvMatWrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px}
.pvMat{width:100%;border-collapse:collapse;font-size:12px;min-width:520px}
.pvMat th{background:#fbfcfe;color:var(--ink2);font-weight:600;font-size:10.5px;padding:6px 8px;
  border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;min-width:96px}
.pvMat th i{display:block;font-style:normal;font-weight:400;color:#a5adbd;font-size:10px}
.pvMat td{padding:3px 6px;border-bottom:1px solid #f4f6fa}
.pvMat tr.isoff{opacity:.5}
.pvMat tr:hover td{background:#fbfcfe}
.pvNm{position:sticky;left:0;background:#fff;z-index:1;min-width:104px;font-size:12.5px}
.pvMat tr:hover .pvNm{background:#fbfcfe}
.pvIn{width:100%;border:1px solid #e4e9f2;background:#fff;border-radius:5px;padding:4px 6px;font-size:12px}
.pvIn:hover{border-color:#cfd8e6}
.pvIn:focus{border-color:var(--brand2);box-shadow:0 0 0 2px #2f6fed18}
.pvIn.saved{border-color:#16a34a;background:#f0fdf4}
.pvNoTplTag{font-style:normal;font-size:9.5px;color:#b06a05;background:#fdf3e3;border:1px solid #f0d9ae;
  border-radius:3px;padding:0 3px;margin-left:4px;vertical-align:1px}
.pvNoTpl{padding:14px 12px;background:#fffbf2;border:1px dashed #f0d9ae;border-radius:8px;
  font-size:12px;color:#9a6a10}
.pvNoTpl a{color:#b06a05;text-decoration:underline}
.pvHeadCard{padding:0;overflow:hidden;border:1px solid #cfdcf7}
.pvHeadT{background:linear-gradient(90deg,#eef3fe,#f7faff);padding:10px 16px;font-size:13px;
  font-weight:600;color:var(--brand);border-bottom:1px solid #dde7fa}
.pvHeadT i{font-style:normal;font-weight:400;font-size:11.5px;color:var(--ink3);margin-left:8px}
.pvHeads{display:flex;gap:0;overflow-x:auto}
.pvH1{flex:1;min-width:300px;padding:12px 16px;border-right:1px solid var(--line)}
.pvH1:last-child{border-right:none}
.pvH1top{display:flex;align-items:center;gap:7px;margin-bottom:8px}
.pvH1top b{font-size:14px;color:#1f2a44}
.pvH1top .btn{margin-left:auto;padding:2px 9px;font-size:11.5px}
.pvHPost{font-size:11.5px;color:var(--ink3)}
.pvHTbl{width:100%;border-collapse:collapse;font-size:12px}
.pvHTbl td{padding:4px 2px;border-bottom:1px dashed #eef1f7}
.pvHTbl td.num{text-align:right;font-family:"DIN Alternate",Consolas,monospace;font-weight:600;
  color:var(--brand);white-space:nowrap;padding-left:8px}
.pvHInd{margin-left:6px;color:#2c3648}
.pvHTgt{display:flex;align-items:center;gap:8px;margin-top:8px}
.pvHTgt span{font-size:11.5px;color:var(--ink3);white-space:nowrap}
.pvHInds{display:grid;grid-template-columns:1fr 1fr;gap:2px 16px}
.pvHInd{display:flex;align-items:center;gap:6px;font-size:12px;color:#2c3648;
  padding:3px 0;border-bottom:1px dashed #eef1f7;min-width:0}
.pvHInd em{font-style:normal;font-size:10px;width:16px;height:16px;line-height:16px;text-align:center;
  border-radius:4px;flex:none}
.pvHInd em.cy{background:#eaf0fd;color:#2f5bd8}
.pvHInd em.cq{background:#eaf7f1;color:#15803d}
.pvHInd em.cm{background:#fdf3e3;color:#b06a05}
.pvHInd span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pvHInd b{font-family:"DIN Alternate",Consolas,monospace;font-weight:600;color:var(--brand);font-size:12px}
.pvWideWrap{overflow:auto;border:1px solid var(--line);border-radius:8px;margin-bottom:4px}
.pvWide{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;min-width:1420px}
.pvWide th{background:#f7f9fd;color:var(--ink2);font-weight:600;font-size:11px;padding:6px 7px;
  border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;position:sticky;z-index:3}
.pvWide thead tr.h1 th{top:0;height:30px}
.pvWide thead tr.h2 th{top:30px;background:#f2f6fc;font-weight:500;font-size:10.5px;color:#5a6577;
  padding:4px 5px;text-align:center;border-bottom:1px solid #dbe4f1}
.pvWide thead tr.h1 th[rowspan]{z-index:5;vertical-align:middle}
.pvWide th.g26{background:#e5edf8;color:#1f4e8c;border-bottom:1px solid #cfdeef;text-align:center}
.pvWide th.g26 i{font-style:normal;font-weight:400;font-size:10.5px;color:#6d87ab}
.pvWide th.g27{background:#e2f1e6;color:#186a35;border-bottom:1px solid #c6e3cf;border-left:2px solid #bcdcc6;text-align:center}
.pvWide th.g27 i{font-style:normal;font-weight:400;font-size:10.5px;color:#4d8a60}
.pvWide th.th27{background:#f1faf3;color:#186a35}
.pvWide th.th27 i{font-style:normal;font-weight:400;font-size:10.5px;color:#4d8a60}
.pvWide td{padding:5px 7px;border-bottom:1px solid #f2f5fa;vertical-align:top}
.pvWide tbody tr:hover td{background:#fbfcfe}
.pvWide .pvNo{color:#aab2c0;font-size:11px;text-align:right;padding-top:7px}
.pvWide td.pvc{width:26px;text-align:center;color:#c4cad6;font-size:10.5px;padding:6px 0}
.pvWide td.pvc.on{color:#42506b;font-weight:600}
.pvWide td.pvW26{text-align:center;font-family:"DIN Alternate",Consolas,monospace;font-size:11.5px;color:#c4cad6}
.pvWide td.pvW26.on{color:#2c3648;font-weight:600;background:#f4f8ff}
.pvWide td.pvW27{text-align:center;padding:3px 4px;background:#fbfefc}
.pvWide td.pvW27.off{color:#dfe4ec;font-size:11px;padding:6px 0}
.pvWin{width:46px;padding:3px 2px;border:1px solid #d8e6dc;border-radius:5px;background:#fff;
  font-family:"DIN Alternate",Consolas,monospace;font-size:11.5px;color:#186a35;text-align:center;
  font-weight:600;transition:border-color .15s,box-shadow .15s}
.pvWin:hover{border-color:#8ec7a1}
.pvWin:focus{outline:none;border-color:#2f9e5b;box-shadow:0 0 0 3px rgba(47,158,91,.12)}
.pvTin{width:100%;min-width:96px;padding:3px 5px;border:1px solid #d8e6dc;border-radius:5px;background:#fbfefc;
  font-size:11px;color:#1f2a44;line-height:1.5}
.pvTin:focus{outline:none;border-color:#2f9e5b;background:#fff;box-shadow:0 0 0 3px rgba(47,158,91,.1)}
.pvWin.saved,.pvTin.saved{border-color:#2f9e5b;background:#eafaf0}
.pvWt{font-family:"DIN Alternate",Consolas,monospace;font-size:12px;color:#cdd3de;text-align:center}
.pvWt.on{color:var(--brand);font-weight:600;background:#f6f9ff}
.pvDesc{font-size:11px;color:#5a6577;line-height:1.55;max-width:340px}
.pvDesc span,.pvTgt span,.pvSrc span{color:#c4cad6}
.pvTgt{font-size:11.5px;color:#1f2a44;line-height:1.55;max-width:150px}
.pvTgt27{width:130px}
.pvSrc{font-size:11px;color:var(--ink3);max-width:86px}
.pvWide .pvInd{font-weight:500;color:#1f2a44;font-size:12px;min-width:150px}
.pvSumTag{font-size:11px;color:#186a35;background:#eaf7ee;border:1px solid #cfe8d8;border-radius:20px;
  padding:2px 9px;white-space:nowrap}
.pvSumTag.bad{color:#b42318;background:#fdecea;border-color:#f3c8c2}
.pvSecT{font-size:13px;font-weight:600;color:var(--brand);margin:16px 4px 8px;display:flex;align-items:baseline;gap:8px}
.pvSecT i{font-style:normal;font-weight:400;font-size:11.5px;color:var(--ink3)}
.pvCard.pvHeadOne{border-left:3px solid #2f6fed;background:#fcfdff}
.pvDesc{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}
.pvDesc.open{display:block;-webkit-line-clamp:unset}
.pvDesc.open::after{content:"";display:block}
.pvCard .pvWide td.pvDesc:hover{background:#f4f8ff}
.pvHeadOne .pvWideWrap{max-height:330px;overflow:auto}
.pvHeadOne .pvMatWrap{max-height:180px;overflow:auto}

/* ===== 员工总表：编辑 / 新增弹窗 ===== */
.pickBox.rosDlg{width:min(680px,95vw)}
.rosForm{display:grid;grid-template-columns:64px 1fr;gap:9px 12px;align-items:center;margin:4px 0 10px}
.rosForm label{font-size:12px;color:#5a6577;text-align:right}
.rosForm input,.rosForm select{width:100%;padding:6px 9px;font-size:12.5px;border:1px solid #d4dae3;
  border-radius:6px;background:#fff;color:#1f2a44}
.rosForm input:focus,.rosForm select:focus{border-color:#2f6fed;outline:none;box-shadow:0 0 0 3px #2f6fed18}
.rosForm input[readonly]{background:#f6f8fc;color:#8a93a6}
.rosDlg .dlgFoot{gap:8px;align-items:center}
.rosDlg .dlgFoot .btn.danger{background:#fff;color:#c0392b;border:1px solid #f0cfcb;
  padding:5px 11px;border-radius:6px;font-size:12px;white-space:nowrap}
.rosDlg .dlgFoot .btn.danger:hover{background:#fdecec;border-color:#c0392b}
.rosDlg .dlgFoot .btn.primary{background:#2f6fed;color:#fff;border:1px solid #2f6fed;
  padding:5px 16px;border-radius:6px;font-size:12px;white-space:nowrap}
.rosDlg .dlgFoot .btn.primary:hover{background:#2559c9;border-color:#2559c9}
.rosTbl .rosAct{white-space:nowrap}
.rosTbl .rowbtn.ed:hover{border-color:#2f6fed;color:#2f6fed;background:#f4f8ff}
.rosTbl .rowbtn.del:hover{border-color:#c0392b;color:#c0392b;background:#fdecec}

/* ===== 同岗位表 ===== */
.grBar{padding:12px 14px 10px}
.grDepts{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.gchip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px;
  border:1px solid #dde3ec;background:#fff;color:#41506b;font-size:12px;cursor:pointer;white-space:nowrap}
.gchip b{font-weight:500}
.gchip i{font-style:normal;font-size:10.5px;color:#8a93a6;background:#f2f5fa;border-radius:9px;padding:0 5px;line-height:15px}
.gchip:hover{border-color:#b9cdf0;background:#f7faff}
.gchip.on{background:#2f6fed;border-color:#2f6fed;color:#fff}
.gchip.on i{background:#ffffff2e;color:#fff}
.grTools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.grTools input[type=search]{width:250px;padding:5px 10px;font-size:12px;border:1px solid #d4dae3;border-radius:6px}
.grTip{font-size:11.5px;color:#8a93a6;flex:1;min-width:240px}

.grCard{padding:0 0 6px;overflow:hidden}
.grHead{display:flex;align-items:baseline;gap:12px;padding:13px 16px 11px;border-bottom:1px solid #eef1f6;flex-wrap:wrap}
.grHead>b{font-size:15px;color:#1f2a44}
.grMeta{font-size:12px;color:#7c869a}
.grUng{font-size:11.5px;color:#a0742c;background:#fff8e8;border:1px solid #f3e2bd;border-radius:12px;padding:1px 9px}

/* 同岗位表：把表格本身做成滚动区，横向滚动条常驻在窗口底部，不用先滚到底才看得见 */
.grWrap{overflow:auto;max-height:calc(100vh - 330px);border-bottom:1px solid #eef1f6}
.grTbl{width:100%;border-collapse:collapse;font-size:12.5px;min-width:1120px}
.grTbl th{background:#f7f9fd;color:#5a6577;font-weight:600;font-size:11.5px;padding:8px 10px;
  border-bottom:1px solid #e7ecf4;text-align:left;white-space:nowrap;position:sticky;top:0;z-index:6;
  box-shadow:0 1px 0 #e7ecf4}
/* 展开的指标宽表跟着外层一起滚，表头压在分组表头下面，避免两层表头重叠 */
.grWrap .pvWide thead tr.h1 th{top:33px;z-index:5}
.grWrap .pvWide thead tr.h2 th{top:63px;z-index:5}
.grWrap .pvWideWrap{overflow:visible}
.grTbl td{padding:8px 10px;border-bottom:1px solid #f2f5fa;vertical-align:middle}
.grRow:hover>td{background:#fbfcfe}
.grRow.open>td{background:#f6f9ff;border-bottom-color:#dfe8f8}
.grRow.open>td:first-child{box-shadow:inset 3px 0 0 #2f6fed}
.grName>b{font-size:13px;color:#1f2a44;font-weight:600}
.grName .hdTag{margin-left:6px}
.grPpl{margin-top:3px;font-size:11px;color:#8a93a6;line-height:1.6;max-width:250px}
.grPpl i{font-style:normal;margin-left:2px;font-size:10px;color:#2f6fed;background:#eef4ff;
  border-radius:3px;padding:0 3px}
.grPpl i.off{color:#a8b0be;background:#f3f5f8}
.grPosts{font-size:11.5px;color:#5a6577;line-height:1.7}
.grPosts i{font-style:normal;color:#c4cad6;margin:0 3px}
.grN{font-family:"DIN Alternate",Consolas,monospace;font-size:13px;color:#1f2a44}
.grN i{font-style:normal;font-size:10.5px;color:#a8b0be;font-family:inherit}
.grSum{display:inline-block;font-size:11px;color:#186a35;background:#eaf7ee;border:1px solid #cfe8d8;
  border-radius:20px;padding:1px 8px;white-space:nowrap}
.grSum.bad{color:#c0392b;background:#fdecec;border-color:#f3cfcb}
.grBadge{display:inline-block;font-size:11px;color:#8a93a6;background:#f2f5fa;border-radius:10px;padding:1px 8px}
.grBadge.ok{color:#186a35;background:#eaf7ee}
.grDone{font-size:10.5px;color:#a8b0be;margin-top:3px}
.grAct{white-space:nowrap}
.grAct .rowbtn+.rowbtn{margin-left:8px}
.grAct .rowbtn.gb{border-color:#b9cdf0;color:#2f6fed;background:#f4f8ff}
.grAct .rowbtn.gb:hover{background:#2f6fed;color:#fff;border-color:#2f6fed}
.grAct .rowbtn.ga{border-color:#cfe8d8;color:#186a35;background:#f3fbf5}
.grAct .rowbtn.ga:hover{background:#186a35;color:#fff;border-color:#186a35}

.grPanel>td{padding:0;background:#f8fafd;border-bottom:2px solid #dfe8f8}
.grPanelIn{padding:12px 14px 14px}
.grPanelBar{display:flex;align-items:center;gap:10px;margin-bottom:9px;flex-wrap:wrap}
.grPanelT{font-size:12.5px;font-weight:600;color:#1f2a44}
.grPanelM{font-size:11.5px;color:#8a93a6}
.grPanelBar .sp{flex:1}
.grNoTpl{padding:16px;font-size:12.5px;color:#7c869a;text-align:center;line-height:1.9}

.grWideWrap{background:#fff;margin-bottom:0}
.grWide{min-width:1330px;table-layout:fixed}
.grWide th,.grWide td{word-break:break-word}
.grTh1 th{text-align:center;font-size:11.5px;padding:6px 8px}
.grTh1 th.g26{background:#eef3fb;color:#2c4f86;border-bottom:1px solid #d8e3f5}
.grTh1 th.g27{background:#e2f1e6;color:#186a35;border-bottom:1px solid #c6e3cf}
.grTh2 th{font-size:11px;padding:5px 6px;text-align:center;font-weight:500}
.grTh2 th.g26{background:#f4f7fd;color:#5a7aa8;border-bottom:1px solid #e2e9f5}
.grTh2 th.g27{background:#eef8f1;color:#2f7a4a;border-bottom:1px solid #d5ecdc}
.pvWt26{text-align:center;font-family:"DIN Alternate",Consolas,monospace;font-size:12px;color:#7f93b3;background:#fafbfe}
.pvWt27{text-align:center;background:#fbfefc}
.pvWt27 .pvIn{width:44px;text-align:center;font-family:"DIN Alternate",Consolas,monospace;font-size:12px;
  padding:2px 3px;border:1px solid #cfe0d6;border-radius:5px;background:#fff;color:#186a35}
.pvWt27 .pvIn:focus{outline:none;border-color:#2f8f56;box-shadow:0 0 0 3px #2f8f5618}
.pvWt27 .pvIn.saved{border-color:#2f8f56;background:#eaf7ee}
.pvWt27 .pvIn.saving{border-color:#e0b64a}
.grWide .pvTin{width:100%;font-size:11.5px;padding:3px 6px;border:1px solid #dfe5ee;border-radius:5px;background:#fff}
.grWide .pvTin:focus{outline:none;border-color:#2f6fed;box-shadow:0 0 0 3px #2f6fed14}
.grWide .pvTin.saved{border-color:#2f8f56;background:#f2fbf5}
.grWide .pvDesc{max-height:64px;overflow:hidden;cursor:pointer;position:relative}
.grWide .pvDesc::after{content:"";position:absolute;left:0;right:0;bottom:0;height:14px;
  background:linear-gradient(#fff0,#fff)}
.grWide .pvDesc.open{max-height:none}
.grWide .pvDesc.open::after{display:none}

/* —— 全部可改：2026 权重 / 指标名 / 描述 / 评分标准 / 目标 / 来源 —— */
.pvWt26 .pvIn{width:44px;text-align:center;font-family:"DIN Alternate",Consolas,monospace;font-size:12px;
  padding:2px 3px;border:1px solid #dde5f2;border-radius:5px;background:#fff;color:#3d5170}
.pvWt26 .pvIn:focus{outline:none;border-color:#2f6fed;box-shadow:0 0 0 3px #2f6fed14}
.pvWt26 .pvIn.saved{border-color:#2f8f56;background:#f2fbf5}
.pvWt26 .pvIn.saving{border-color:#e0b64a}
.grWide .pvInd{padding:4px 5px}
.grIndIn{width:100%;border:1px solid transparent;background:transparent;border-radius:5px;
  padding:4px 5px;font:inherit;font-weight:500;font-size:12px;color:#1f2a44;line-height:1.5}
.grIndIn:hover{border-color:#e2e8f3;background:#fff}
.grIndIn:focus{outline:none;border-color:#2f6fed;background:#fff;box-shadow:0 0 0 3px #2f6fed14}
.grIndIn.saved{border-color:#2f8f56;background:#f2fbf5}
.grIndIn.saving{border-color:#e0b64a}
.grWide td.pvEdit{padding:3px 5px}
.grTA{display:block;width:100%;min-height:32px;max-height:220px;resize:vertical;overflow:auto;
  border:1px solid #e6ebf4;border-radius:5px;background:#fff;padding:4px 6px;
  font:inherit;font-size:11px;line-height:1.55;color:#48546b}
.grTA:hover{border-color:#cfd8e6}
.grTA:focus{outline:none;border-color:#2f6fed;box-shadow:0 0 0 3px #2f6fed14}
.grTA.saved{border-color:#2f8f56;background:#f2fbf5}
.grTA.saving{border-color:#e0b64a}
.grTA::placeholder,.grIndIn::placeholder{color:#c2c9d6}

.grOpts{margin-top:8px;font-size:11.5px;color:#7c869a;line-height:2}
.grOpts>b{color:#5a6577;margin-right:8px}
.grOpt{display:inline-flex;align-items:center;gap:4px;background:#fff;border:1px solid #e6ebf3;
  border-radius:14px;padding:1px 4px 1px 9px;margin:0 6px 4px 0;color:#41506b}
.grOpt i{font-style:normal;font-size:10px;color:#2f6fed;background:#eef4ff;border-radius:3px;padding:0 3px}
.grOpt .rowbtn{padding:0 6px;font-size:10.5px;line-height:16px;border-radius:8px}
.grFoot{padding:9px 16px 4px;font-size:11px;color:#a0a8b8;line-height:1.7}


/* ===== 员工总表：同岗位标注列 ===== */
.rosPg{font-size:11.5px;line-height:1.6}
.pgTag{display:inline-block;color:#2c4f86;background:#eef3fb;border:1px solid #dbe6f7;
  border-radius:4px;padding:0 5px;font-size:11px;white-space:nowrap}
.pgMul{font-style:normal;font-size:10px;color:#8a93a6;margin-left:3px}
.rosTbl td.rosPg{white-space:nowrap;overflow:hidden}
.rosTbl td.rosPg .pgTag{max-width:calc(100% - 6px);overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;vertical-align:bottom}
.rosTbl .stSel{width:100%;padding:2px 4px;font-size:11.5px;border-radius:5px;
  border:1px solid #cfe8d8;background:#eaf7ee;color:#186a35;font-weight:500}
.rosTbl .stSel:focus{border-color:#2f8f56;box-shadow:0 0 0 3px #2f8f5618}
.rosTbl .stSel.off{border-color:#f0cfcb;background:#fdecec;color:#c0392b}

/* 员工总表：部门单元格里的子部门小标签 */
.subTag{display:inline-block;margin-left:4px;padding:0 4px;border-radius:3px;background:#f3f5f9;
  color:#8a93a6;font-size:10.5px;font-style:normal;line-height:15px;vertical-align:middle;max-width:96px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 员工绩效：筛选状态提示条 */
#fltNote{margin:0 0 8px;padding:7px 12px;border-radius:7px;background:#fff7e8;border:1px solid #ffe0b0;
  color:#8a5a12;font-size:12.5px}
#fltNote b{color:#7a4a06}
#fltNote a{color:#2f6fed;text-decoration:none;margin-left:6px}
#fltNote a:hover{text-decoration:underline}

/* 加列弹框：位置下拉 */
.dlgSel{width:100%;padding:8px 10px;font-size:13px;border:1px solid #d4dae3;border-radius:6px;
  margin-bottom:14px;background:#fff;color:#1f2a44}
.dlgSel:focus{border-color:#2f6fed;outline:none;box-shadow:0 0 0 3px #2f6fed18}

/* 定标表：自定义列可拖动排序 */
.bidTbl th.cch{cursor:grab}
.bidTbl th.cch.colDragging{opacity:.45}
.bidTbl th.cch.colDropL{box-shadow:inset 3px 0 0 #2f6fed}
.bidTbl th.cch.colDropR{box-shadow:inset -3px 0 0 #2f6fed}
.bidTbl .ci.dragH{cursor:grab;color:#c3cbd9;margin-right:3px}
.bidTbl .ci.dragH:active{cursor:grabbing}

/* 定标表：点中的行（「＋ 加一行」插在它下面） */
.bidTbl tr.brow.selRow>td{background:#f0f6ff}
.bidTbl tr.brow.selRow>td.k1{box-shadow:inset 2px 0 0 #2f6fed}

/* 定标表操作列：5 个按钮（＋ ↑ ↓ 隐 ✕）放得下 */
.bidTbl td.ops,.bidTbl th.opsCol{min-width:132px;width:132px}

/* ---------- 一人多份绩效（WCY / PH、电商 / 经销）---------- */
.ptBadge{display:inline-block;padding:1px 6px;margin-left:2px;border-radius:4px;font-size:11px;font-weight:700;
  font-style:normal;color:#1f4fd8;background:#eaf0ff;border:1px solid #cddcff;letter-spacing:.3px;vertical-align:1px}
.ptSum{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:4px;font-size:11px;font-style:normal;
  color:#6b45c9;background:#f3efff;border:1px solid #e0d6ff;vertical-align:1px}
.ptNm{margin-left:6px;font-size:12px;font-style:normal;color:#8a93a6}
.ptU{margin-left:6px;font-size:11px;font-style:normal;color:#b7c0d0}
tr.partRow>td{background:#fbfcff;border-top:1px dashed #eef2f9}
tr.partRow>td.ptBlank{color:#b7c0d0;font-size:11.5px;padding-left:22px}
tr.partRow>td.ptBlank i{font-style:normal}
tr.sumRow>td{background:#f7faff}
tr.sumRow>td:first-child{box-shadow:inset 3px 0 0 #2f6fed}
tr.grp.grpPart>td{background:#eef4ff;color:#1f2b45;font-weight:700}
tr.grp.grpPart .ptBadge{margin-right:6px}
.ptMeta{font-weight:400;font-size:11.5px;color:#5a6577;margin-left:4px}
.ptag.sh{background:#eef1f6;color:#7b8494;border:1px solid #e2e7f0}
.ptBadge{margin-right:4px}
.ptBadge.sh{background:#f2f4f8;color:#6b7488;border-color:#e2e6ee}

/* 品牌：小菀绩效库 logo（机器人头像） */
#topbar h1{display:flex;align-items:center;gap:8px}
#topbar h1 .brandIco{width:30px;height:30px;border-radius:7px;display:block;box-shadow:0 1px 3px rgba(10,112,96,.28)}

/* 差异列只剩一个数，垂直居中，别贴着行顶 */
.bidTbl td.gap{vertical-align:middle}

/* 行上的「历史 / 已隐」标记可直接点：点一下收起，再点一下放回 */
.flg.tgFlg{cursor:pointer;user-select:none}
.flg.tgFlg:hover{text-decoration:underline;filter:brightness(.92)}

/* 行上的「历史 / 已隐」是可点的开关：虚线边框表明能点，悬停高亮 */
.flg.tgFlg{border-bottom-style:dashed;border-bottom-width:1px}
.flg.tgFlg:hover{background:#eae2f8;color:#4a2d86;text-decoration:none}
.flg.ghid.tgFlg{background:#fff3e0;color:#8a5300;border-color:#efd3a6}
.flg.ghid.tgFlg:hover{background:#ffe6c2;color:#6d3f00}
/* 已收起的行：压扁一点，读起来像「已移出本表」，但仍能点回来 */
.bidTbl tr.ishid td{padding-top:5px!important;padding-bottom:5px!important}

/* 已收起的行要一眼看出来：底色再压深一点、文字转灰 */
.bidTbl tr.ishid td{background:#f1f3f7!important;color:#98a2b3}
.bidTbl tr.ishid td.k1,.bidTbl tr.ishid td.k5{background:#eaedf3!important}

/* ================= 同岗位表：定标路线 + 按人编辑 ================= */
/* ① 三步路线：部门长 → 下属岗位 → 员工个人 */
.grRoute{display:flex;align-items:stretch;gap:0;padding:11px 16px 13px;background:linear-gradient(180deg,#fbfcff,#fff);
  border-bottom:1px solid #eef1f6;overflow-x:auto}
.grStep{display:flex;align-items:center;gap:9px;flex:1;min-width:220px;padding:8px 12px;border:1px solid #e3e9f3;
  border-radius:9px;background:#fff;cursor:pointer;text-align:left;font-family:inherit;transition:.15s}
.grStep:hover{border-color:#b9cdf0;box-shadow:0 2px 8px rgba(47,111,237,.09)}
.grStep>i{flex:0 0 20px;width:20px;height:20px;line-height:20px;border-radius:50%;background:#eef2f8;color:#8a93a6;
  font-style:normal;font-size:11.5px;font-weight:700;text-align:center}
.grStepIn{flex:1;min-width:0;display:block}
.grStepIn>b{display:block;font-size:12.5px;color:#1f2a44;font-weight:600;line-height:1.35}
.grStepIn>em{display:block;font-style:normal;font-size:11px;color:#8a93a6;line-height:1.5;margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grStepTag{flex:0 0 auto;font-style:normal;font-size:10.5px;color:#8a93a6;background:#f2f5fa;border-radius:9px;padding:1px 7px}
.grStep.done{border-color:#cfe8d8;background:#f7fdf9}
.grStep.done>i{background:#e3f5ea;color:#186a35}
.grStep.done .grStepTag{background:#eaf7ee;color:#186a35}
.grStep.cur{border-color:#f0d9a8;background:#fffdf6;box-shadow:0 2px 10px rgba(214,158,46,.13)}
.grStep.cur>i{background:#fdf1d8;color:#8a5b00}
.grStep.cur .grStepTag{background:#fdf1d8;color:#8a5b00}
.grArrow{flex:0 0 20px;text-align:center;color:#c4cad6;font-style:normal;font-size:13px;line-height:46px}

/* ② 部门长那一行：左侧色条 + 浅金底 + ★ */
.bidTbl tr.grRow.isHead>td,.grTbl tr.grRow.isHead>td{background:#fffcf3}
.grTbl tr.grRow.isHead>td:first-child{box-shadow:inset 3px 0 0 #e0a53c}
.grTbl tr.grRow.isHead:hover>td{background:#fff8e8}
.grTbl tr.grRow.isHead.open>td{background:#fff6e2}
.grTbl tr.grRow.headTodo>td{background:#fff8e8}
.grHeadDot{color:#e0a53c;font-size:10px;margin-right:3px}
.grBadge.todo{color:#8a5300;background:#fdf1d8;border:1px solid #efd8a6}

/* ③ 页签 */
.grTabs{display:flex;gap:4px;margin:2px 0 9px;border-bottom:1px solid #e3e9f3}
.grTab{position:relative;border:0;border-bottom:2px solid transparent;background:transparent;cursor:pointer;
  font-family:inherit;font-size:12.5px;color:#5a6577;padding:6px 12px 7px;display:flex;align-items:center;gap:5px}
.grTab:hover{color:#2f6fed}
.grTab.on{color:#2f6fed;font-weight:600;border-bottom-color:#2f6fed}
.grTab>i{font-style:normal;font-size:10.5px;color:#9aa4b6;font-weight:400}
.grTab.on>i{color:#7aa3f0}
.grTabDot{font-style:normal;font-size:10px;line-height:14px;min-width:15px;text-align:center;border-radius:8px;
  background:#fdecea;color:#c0392b;padding:0 4px}

/* ④ 员工个人 */
.grPplBar{font-size:12.5px;color:#5a6577;padding:2px 2px 9px}
.grPplBar>b{color:#1f2a44}
.grPplNote{color:#8a93a6;font-size:11.5px}
.grPplList{display:flex;flex-direction:column;gap:6px}
.grPplRow{border:1px solid #e6ebf4;border-radius:9px;background:#fff;overflow:hidden}
.grPplRow.open{border-color:#b9cdf0;box-shadow:0 3px 12px rgba(47,111,237,.08)}
.grPplRow.off{opacity:.62}
.grPplHead{width:100%;display:flex;align-items:center;gap:8px;padding:8px 11px;background:#fff;border:0;
  cursor:pointer;font-family:inherit;text-align:left;font-size:12.5px;color:#1f2a44}
.grPplHead:hover{background:#f7faff}
.grPplRow.open .grPplHead{background:#f2f7ff;border-bottom:1px solid #e3edfe}
.grPplArrow{font-style:normal;color:#a9b8cf;font-size:10px;width:10px;transition:.15s}
.grPplRow.open .grPplArrow{transform:rotate(90deg);color:#2f6fed}
.grPplHead>b{font-weight:600}
.grPplPost{color:#7c869a;font-size:11.5px}
.grPplSt{font-size:10.5px;color:#8a93a6;background:#f2f5fa;border-radius:9px;padding:1px 8px}
.grPplSt.ok{color:#186a35;background:#eaf7ee}
.grPplGo{margin-left:auto;font-size:11px;color:#2f6fed}
.offTag{font-style:normal;font-size:10px;color:#a8b0be;background:#f3f5f8;border-radius:8px;padding:0 5px}
.grMemBox{border-top:1px dashed #e3e9f3;background:#fbfcff}
.grMemLoad{padding:14px;text-align:center;color:#8a93a6;font-size:12px}
.grMemIn{padding:10px 11px 12px}
.grMemMeta{font-size:12px;color:#5a6577;display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.grMemMeta>b{color:#1f2a44;font-size:13px}
.grMemBadge{font-size:10.5px;color:#8a93a6;background:#f2f5fa;border-radius:9px;padding:1px 8px}
.grMemBadge.ok{color:#186a35;background:#eaf7ee}
.grMemTip{font-size:11px;color:#9aa4b6}
.grMemTbl{width:100%;border-collapse:collapse;font-size:12px;background:#fff;border:1px solid #e8edf5;border-radius:8px}
.grMemTbl th{background:#f7f9fd;color:#5a6577;font-weight:600;font-size:11px;padding:6px 8px;
  border-bottom:1px solid #e8edf5;text-align:left;white-space:nowrap}
.grMemTbl td{padding:5px 8px;border-bottom:1px solid #f2f5fa;vertical-align:middle}
.grMemTbl tr:last-child td{border-bottom:0}
.grMemInd{color:#1f2a44;line-height:1.55}
.grMemFl{font-style:normal;font-size:9.5px;color:#8a5300;background:#fdf1d8;border:1px solid #efd8a6;
  border-radius:3px;padding:0 3px;margin-left:5px}
.grMemW26{color:#7c869a;font-family:"DIN Alternate",Consolas,monospace}
.grMemW,.grMemT{width:100%;font-size:11.5px;padding:3px 6px;border:1px solid #dfe5ee;border-radius:5px;
  background:#fff;font-family:inherit}
.grMemW{text-align:center;font-family:"DIN Alternate",Consolas,monospace}
.grMemW:focus,.grMemT:focus{outline:none;border-color:#2f6fed;box-shadow:0 0 0 3px #2f6fed14}
.grMemW.saved,.grMemT.saved{border-color:#2f8f56;background:#f2fbf5}
.grMemW.saving,.grMemT.saving{border-color:#e0b64a;background:#fffdf3}
.grMemT26{color:#7c869a;font-size:11.5px;max-width:118px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grMemCyc{font-size:10.5px;color:#5a7aa8;background:#eef3fb;border-radius:8px;padding:1px 7px}
.grMemFoot{font-size:11px;color:#9aa4b6;margin-top:7px}

/* ⑤ 对标部门长 */
.grHeadPane{padding:2px 0 4px}
.grHeadPane.ok{background:#f7fdf9;border:1px solid #cfe8d8;border-radius:9px;padding:12px 14px}
.grHeadPaneT{font-size:12.5px;font-weight:600;color:#1f2a44;margin-bottom:5px}
.grHeadPaneD{font-size:11.5px;color:#6b7488;line-height:1.75;margin-bottom:6px}
.grHeadPaneMeta{font-size:11px;color:#186a35}
.grCmpGrp{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:9px 0;border-bottom:1px dashed #e8edf5}
.grCmpGrp:last-child{border-bottom:0}
.grCmpGrp>b{font-size:12px;color:#5a6577;min-width:88px}
.grCmpGrp>b.ok{color:#186a35}
.grCmpGrp>b.miss{color:#b3541e}
.grCmpGrp>b.extra{color:#5a7aa8}
.grCmpList{flex:1;display:flex;flex-wrap:wrap;gap:6px;min-width:240px}
.grCmpItem{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:#3c4a63;
  background:#fff;border:1px solid #e3e9f3;border-radius:14px;padding:3px 10px}
.grCmpItem>i{font-style:normal;font-size:10.5px;color:#9aa4b6}
.grCmpItem.ok{border-color:#cfe8d8;background:#f7fdf9;color:#186a35}
.grCmpItem.miss{border-color:#f3d6b8;background:#fffaf3;color:#8a5300}
.grCmpItem.extra{border-color:#dbe6f8;background:#f8fbff;color:#3c5d8f}
.grCmpItem .rowbtn{font-size:10.5px;padding:0 7px;line-height:16px;height:18px;border-radius:9px}

/* 面板里的主按钮：原来的 .btn 是给深色顶栏用的（白字半透明底），在白底里会看不见 */
.grPanelBar .btn.small{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:600}
.grPanelBar .btn.small:hover{background:var(--brand2);border-color:var(--brand2)}
.grPanelBar .btn.ghost.small{background:#fff;color:var(--ink2);border-color:#d4dae3;font-weight:400}
.grPanelBar .btn.ghost.small:hover{color:var(--brand2);border-color:var(--brand2)}
/* 个人面板头部 */
.grMemMeta .sp{flex:1}
.grMemProg{font-size:11px;color:#8a93a6;background:#f2f5fa;border-radius:9px;padding:1px 8px;font-family:"DIN Alternate",Consolas,monospace}
.grMemProg.ok{color:#186a35;background:#eaf7ee}
.grMemHint{font-size:11px;color:#9aa4b6;margin:-4px 0 8px}
.grMemCopy{font-size:10.5px;padding:2px 9px;border-radius:9px}
/* 人员行里的「套用标准」小按钮：别把行撑高 */
.grPplApply{font-size:10.5px;padding:1px 8px;border-radius:9px;margin-left:2px}
.grPplHead{cursor:pointer}

/* 行内小按钮 / 徽标不许被压扁换行（否则「套用标准」会竖成一列） */
.grPplHead{gap:7px}
.grPplHead>b,.grPplApply,.grPplSt,.grPplGo,.grPplHead .hdTag,.grPplHead .offTag{flex:0 0 auto;white-space:nowrap}
.grPplPost{flex:1 1 auto;min-width:0;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grMemCopy{flex:0 0 auto;white-space:nowrap}
.grMemMeta .sp{flex:1 1 auto;min-width:6px}
.grMemMeta{flex-wrap:nowrap}
.grCmpItem{white-space:nowrap}
.grAct .rowbtn{white-space:nowrap}

/* ============ 对标部门长：部门长详细指标对照表 ============ */
.grHeadPaneSub{font-weight:400;color:#8a93a6;font-size:11px;margin-left:8px}
.grRefLegend{display:inline-block;font-size:11px;border-radius:9px;padding:0 8px;margin-right:6px}
.grRefLegend.ok{color:#186a35;background:#eaf7ee}
.grRefLegend.miss{color:#b3541e;background:#fdf0e6}
.grRefWrap{overflow:auto;border:1px solid #e8edf5;border-radius:9px;background:#fff;margin-bottom:8px}
.grRefTbl{width:100%;border-collapse:collapse;font-size:11.5px;min-width:1000px}
.grRefTbl th{background:#f7f9fd;color:#5a6577;font-weight:600;font-size:11px;padding:6px 8px;
  border-bottom:1px solid #e8edf5;text-align:left;white-space:nowrap;position:sticky;top:0}
.grRefTbl td{padding:6px 8px;border-bottom:1px solid #f2f5fa;vertical-align:top;line-height:1.6}
.grRefTbl tr:last-child td{border-bottom:0}
.grRefTbl tr.miss td{background:#fffaf5}
.grRefTbl tr.miss td.grRefInd{color:#8a5300}
.grRefTbl tr.ok td{background:#fff}
.grRefInd{color:#1f2a44;font-weight:500}
.grRefW{font-family:"DIN Alternate",Consolas,monospace;white-space:nowrap;color:#3c4a63}
.grRefT{color:#5a6577;max-width:126px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grRefDesc{color:#7c869a;font-size:11px;max-width:280px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.grRefOk{color:#2f8f56;font-weight:700}
.grRefTbl tr.miss .rowbtn.gb{border-color:#eab26b;color:#8a5300;background:#fff7e8}
.grRefTbl tr.miss .rowbtn.gb:hover{background:#e0a53c;color:#fff;border-color:#e0a53c}

/* 对照表：固定列宽，最后一列（引入）不再被挤成竖条 */
.grRefTbl{table-layout:fixed;min-width:1120px}
.grRefTbl td,.grRefTbl th{word-break:break-word}
.grRefTbl td.c,.grRefTbl th.c{text-align:center}
.grRefTbl .grMemCyc{margin-right:2px;display:inline-block}
.grRefTbl .rowbtn{white-space:nowrap}
.grRefTbl td:last-child{white-space:nowrap}

/* .rowbtn 基础样式是 20x20 的图标按钮，带文字的要自己撑开宽度 */
.grPplApply,.grMemCopy,.grCmpItem .rowbtn,.grRefTbl .rowbtn{width:auto;height:20px;line-height:18px;white-space:nowrap}
.grPplApply{min-width:56px}
.grMemCopy{min-width:96px}
.grCmpItem .rowbtn{min-width:44px;height:19px;line-height:17px}
.grRefTbl .rowbtn{min-width:46px}

/* 行内文字动作：比图标按钮更好读，也不会被 flex 压扁 */
.grPplLink,.grMemLink{display:inline-block;font-size:11px;color:#2f6fed;cursor:pointer;
  white-space:nowrap;border-bottom:1px dashed #b9cdf0;line-height:1.5;flex:0 0 auto}
.grPplLink:hover,.grMemLink:hover{color:#1b55c0;border-bottom-color:#1b55c0}
.grMemLink{font-size:11px;margin-left:auto}

/* 路线条第 1 步：指标名允许两行，别一上来就省略号 */
.grStepIn>em{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.45}

/* 列表上的「缺 N」提示：不展开也能看出这个岗位还没接住部门长的指标 */
.grMissTag{display:inline-block;font-style:normal;font-size:10px;line-height:15px;margin-left:5px;
  color:#b3541e;background:#fdf0e6;border:1px solid #f2d4b8;border-radius:8px;padding:0 6px;vertical-align:1px}

/* 第 1 步（部门长）多给点宽度，指标名能多显示几个 */
.grRoute .grStep:first-child{flex:1.3}
.grRefOk.opt{color:#b8860b;font-weight:600}

/* ============ 2027 定标：一行进度 + 左右分栏（左改人 / 右看部门长） ============ */
.grProg{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin:0 0 10px;padding:6px 10px;
  background:#f7f9fd;border:1px solid #e8edf5;border-radius:9px}
.grProgI{display:inline-flex;align-items:center;gap:6px;border:0;background:transparent;
  padding:3px 6px;font-size:12px;color:#5a6577;border-radius:6px}
.grProgI:hover{background:#eef3fe;color:#2f6fed}
.grProgI>i{font-style:normal;color:#2f6fed;font-weight:600}
.grProgI>b{font-weight:600;color:#1f2a44;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grProgI>u{text-decoration:none;font-size:10.5px;color:#8a93a6;background:#eef1f6;border-radius:8px;padding:0 6px;white-space:nowrap}
.grProgI>u.ok{color:#186a35;background:#eaf7ee}
.grProg .grArrow{color:#b9c2d1;font-style:normal}

.grSplit{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(0,1fr);gap:12px;align-items:start}
.grSplit.solo{grid-template-columns:minmax(0,1fr)}
@media(max-width:1240px){.grSplit{grid-template-columns:minmax(0,1fr)}}
.grSideL,.grSideR{min-width:0;border:1px solid #e6ebf4;border-radius:9px;background:#fff;overflow:hidden}
.grSplitH{display:flex;align-items:center;gap:8px;padding:7px 10px;background:#f7f9fd;
  border-bottom:1px solid #e8edf5;font-size:12px}
.grSplitH>b{color:#1f2a44}
.grSplitSub{font-size:11px;color:#98a2b3}
.grSplitH .sp{flex:1}
.grMini{border:1px solid #cfdcf3;background:#fff;color:#2f6fed;border-radius:14px;font-size:11px;
  padding:2px 10px;white-space:nowrap}
.grMini:hover{background:#eef3fe}

.grChips{display:flex;flex-wrap:wrap;gap:5px;padding:8px 10px;border-bottom:1px solid #f0f3f9}
.grChip{display:inline-flex;align-items:center;gap:5px;border:1px solid #e1e7f1;background:#fff;
  color:#3c4a63;border-radius:14px;padding:3px 9px;font-size:12px;line-height:1.5}
.grChip:hover{border-color:#b9cdf0;color:#2f6fed}
.grChip.on{background:#eef3fe;border-color:#9dbcf5;color:#1b55c0;font-weight:600}
.grChip.off{opacity:.55}
.grChip>i{font-style:normal;font-size:10px;color:#98a2b3;background:#f2f5fa;border-radius:8px;padding:0 5px}
.grChip>i.ok{color:#186a35;background:#eaf7ee}
.grChip>.hdTag{font-size:9.5px;padding:0 4px}

.grMemIn{padding:0}
.grMemMeta{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid #f0f3f9}
.grMemTbl{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}
.grMemTbl th{background:#fafbfe;color:#6b7488;font-weight:600;font-size:10.5px;padding:5px 7px;
  border-bottom:1px solid #edf1f7;text-align:left;white-space:nowrap}
.grMemTbl td{padding:3px 7px;border-bottom:1px solid #f4f6fb;vertical-align:middle;word-break:break-word}
.grMemTbl tr:last-child td{border-bottom:0}
.grMemTbl tr:hover td{background:#fbfcff}
.grMemIndIn{width:100%;border:1px solid transparent;background:transparent;font-size:12px;
  padding:3px 5px;border-radius:5px;color:#1f2a44}
.grMemIndIn:hover{border-color:#e1e7f1;background:#fff}
.grMemIndIn:focus{border-color:#2f6fed;background:#fff}
.grMemTbl .grMemW{width:100%;padding:3px 5px;font-size:12px;text-align:center;border-color:#e1e7f1;background:#fff}
.grMemTbl .grMemT{width:100%;padding:3px 6px;font-size:12px;border-color:#e1e7f1}
.grDel{border:0;background:transparent;color:#c3cbd8;font-size:12px;line-height:1;padding:2px 4px;border-radius:4px}
.grDel:hover{color:#c0392b;background:#fdecec}
.grMemLoad{padding:14px;text-align:center;color:#98a2b3;font-size:12px}

.grRefBar{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:11.5px;color:#6b7488;
  border-bottom:1px solid #f0f3f9;background:#fffdf8}
.grRefBar>b{color:#8a5300}
.grRefCnt{margin-left:auto;white-space:nowrap}
.grRefCnt .miss{color:#b3541e}
.grRefCnt .ok{color:#2f8f56}
.grRefTbl2{width:100%;border-collapse:collapse;font-size:11.5px;table-layout:fixed}
.grRefTbl2 th{background:#fafbfe;color:#6b7488;font-weight:600;font-size:10.5px;padding:5px 7px;
  border-bottom:1px solid #edf1f7;text-align:left;white-space:nowrap}
.grRefTbl2 td{padding:5px 7px;border-bottom:1px solid #f4f6fb;vertical-align:top}
.grRefTbl2 tr:last-child td{border-bottom:0}
.grRefTbl2 tr.miss td{background:#fffcf6}
.grRefTbl2 .grRefInd>b{display:block;font-weight:500;color:#1f2a44;line-height:1.5}
.grRefTbl2 .grRefInd>i{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-style:normal;
  color:#9aa4b6;font-size:10.5px;line-height:1.5;overflow:hidden}
.grRefTbl2 .grRefW{font-family:"DIN Alternate",Consolas,monospace;color:#3c4a63;font-size:10.5px;line-height:1.5}
.grPlus{border:1px solid #eab26b;background:#fff7e8;color:#8a5300;border-radius:5px;width:22px;height:20px;
  line-height:1;font-size:13px;padding:0}
.grPlus:hover{background:#e0a53c;color:#fff;border-color:#e0a53c;font-weight:600}
.grPlus:disabled{opacity:.5;cursor:default}
.grRefOk{color:#2f8f56;font-weight:700;font-size:12px}
.grDone.ok{color:#186a35}

/* ============ 员工 2027 指标表：按公司原始模板的两行表头 ============ */
.grMemWrap{overflow-x:auto}
.grMemTbl{min-width:848px}
.grMemTbl th{padding:5px 6px}
.grMemTbl th.c{text-align:center}
.grMemTbl th.gF{text-align:center;background:#eef3fe;color:#1b55c0;border-bottom:1px solid #dbe6fa}
.grMemTbl th.gF .thSub{display:block;font-weight:400;font-size:9.5px;color:#8a93a6;line-height:1.5}
.grMemTbl tr.h2 th{background:#f5f8ff;color:#6b7488;font-size:10px;font-weight:600;padding:2px 4px}
.grMemTbl td{vertical-align:top;padding:3px 5px}
.grMemTbl tr:hover td{background:#fbfcff}
.grCycCell{color:#dfe5ee;font-size:8px;line-height:20px}
.grCycCell.on{color:#2f6fed;font-size:10px}
.grWc{padding:2px 3px!important}
.grMemTbl .grMemW{padding:2px 3px;font-size:11.5px;border-color:#e1e7f1;background:#fff}
.grW26{display:block;font-style:normal;font-size:9px;color:#a9b2c2;line-height:1.3;text-align:center;
  font-family:"DIN Alternate",Consolas,monospace}
.grMemLong{padding:3px 5px!important}
.grMemSml{padding:3px 5px!important}
.grMemTA{width:100%;border:1px solid #e6ebf4;border-radius:5px;font-size:11px;line-height:1.45;color:#3c4a63;
  padding:3px 5px;resize:vertical;font-family:inherit;background:#fff;min-height:28px;max-height:108px;overflow:auto}
.grMemF{width:100%;border:1px solid #e6ebf4;border-radius:5px;font-size:11px;padding:3px 5px;color:#3c4a63;background:#fff}
.grMemTA:hover,.grMemF:hover{border-color:#cdd8ea}
.grMemTA:focus,.grMemF:focus{outline:none;border-color:#2f6fed;box-shadow:0 0 0 3px #2f6fed14;background:#fff}
.grMemTA.saved,.grMemF.saved{border-color:#2f8f56;background:#f2fbf5}
.grMemTA.saving,.grMemF.saving{border-color:#e0b64a;background:#fffdf3}
.grMemTbl .grDel{margin-top:3px}

/* 展开面板时，外层列表表头不再吸顶，否则会盖住面板自己的表头 */
.grTbl.noStick thead th{position:static}
.grPanel>td{background:#fbfcfe;padding:0!important;border-bottom:1px solid #e6ebf4!important}
.grPanelIn{background:#fff;border-top:2px solid #e8edf5}

/* 左窄右宽：给员工指标表更多横向空间 */
.grSplit{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}
@media(max-width:1340px){.grSplit{grid-template-columns:minmax(0,1fr)}}

/* 权重格：上面是 2027 空框（填），下面是 2026 实数值（蓝字，只读参考） */
.grMemTbl td.grWc{padding:3px 3px 2px!important;text-align:center}
.grMemTbl .grMemW{width:100%;height:24px;padding:1px 3px;font-size:12px;font-weight:600;
  text-align:center;color:#1f2a44;border:1px solid #dde4ef;border-radius:5px;background:#fff}
.grMemTbl .grMemW:hover{border-color:#c2d2ea;background:#fdfefe}
.grMemTbl .grMemW:focus{outline:none;border-color:#2f6fed;background:#fff;box-shadow:0 0 0 3px #2f6fed1a}
.grMemTbl .grMemW:not(:placeholder-shown){background:#f6faff}
.grW26v{display:inline-block;font-style:normal;font-weight:600;font-size:10.5px;line-height:16px;
  color:#1b55c0;background:#eaf1ff;border-radius:5px;padding:0 4px;margin-top:3px;min-width:16px;
  font-family:"DIN Alternate",Consolas,monospace}
.grW26v:empty{background:transparent;display:block;height:16px;margin-top:3px}
.grSplit{grid-template-columns:minmax(0,1.85fr) minmax(0,1fr)}
.grMemTbl{min-width:802px}

/* ============ 2027 定标双向同步版：2026 打底 + 部门长索引换人 + 一键套用 ============ */
/* 权重格：2027 空 → 框里蓝色显示 2026 实际值（打底），输入后变深色即 2027 */
.grMemTbl .grMemW::placeholder{color:#2f6fed;opacity:.62;font-weight:600;font-family:"DIN Alternate",Consolas,monospace}
.grMemTbl .grMemW{height:26px}
.grMemNote{font-size:10.5px;color:#8a93a6}
.grMemRO{display:block;font-size:11px;color:#5a6577;line-height:1.5;word-break:break-word;
  padding:4px 5px;background:#f7f9fd;border-radius:5px;min-height:24px}
/* 右栏：部门长下拉 + 套用按钮 + 明细展开 */
.grHeadSel{max-width:190px;font-size:11.5px;color:#1f2a44;border:1px solid #dde4ef;border-radius:6px;
  padding:2px 4px;background:#fff}
.grHeadSel:focus{outline:none;border-color:#2f6fed}
.grRefSub{font-size:10.5px;color:#98a2b3}
.grRefCnt{margin-left:2px}
.grUse{border:1px solid #bfd4f2;background:#f2f7ff;color:#1b55c0;border-radius:5px;width:26px;height:22px;
  font-size:13px;line-height:1;padding:0;font-weight:600}
.grUse:hover{background:#2f6fed;border-color:#2f6fed;color:#fff}
.grUse:disabled{opacity:.5}
.grRefRow{cursor:pointer}
.grRefRow:hover td{background:#f6f9ff}
.w26tag{display:inline-block;font-style:normal;font-size:9px;color:#1b55c0;background:#eaf1ff;
  border-radius:4px;padding:0 3px;margin-left:3px;vertical-align:1px;font-weight:600}
.grRefMore td{background:#fbfcff;border-bottom:1px solid #f0f3f9}
.grRefMoreIn{padding:6px 10px}
.grRefMoreIn p{margin:0 0 4px;font-size:11px;line-height:1.55;color:#3c4a63;word-break:break-word}
.grRefMoreIn p:last-child{margin-bottom:0}
.grRefMoreIn p>b{display:inline-block;color:#6b7488;font-weight:600;margin-right:6px;white-space:nowrap}
.grRefMoreIn p>b::after{content:'：'}
.grMemTbl{min-width:724px}
.grMemTbl th{font-size:10px}
.grMemTbl th.gF{font-size:10px}
.grMemTbl tr.h2 th{font-size:9.5px;padding:2px 2px}
.grSplit{grid-template-columns:minmax(0,2.4fr) minmax(0,1fr)}
.grSplit{grid-template-columns:minmax(0,1fr) 322px}
.grMemTbl{min-width:724px}
.grMemTbl tr.h2 th{white-space:nowrap}
.grRefBar{flex-wrap:wrap;row-gap:4px}
.grRefBar .grMini{padding:1px 8px}

/* 面板顶部的「左/右」说明条 —— 对应附表里的说明文字 */
.grLead2{display:flex;gap:14px;flex-wrap:wrap;margin:0 0 9px;padding:6px 10px;background:#f7f9fd;
  border:1px solid #e8edf5;border-radius:8px;font-size:11.5px;color:#5a6577;line-height:1.65}
.grLead2>span{flex:1;min-width:280px}
.grLead2 b{color:#1f2a44}
.grLead2>span>b:first-child{display:inline-block;background:#2f6fed;color:#fff;border-radius:4px;
  padding:0 5px;margin-right:6px;font-size:10.5px}
.grSplitH>b{white-space:nowrap}
.grSplitH{flex-wrap:wrap;row-gap:3px}
.grSplitSub{font-size:10px}

/* ============ 右栏「调用人」选择器：默认一级部门长，可换成本部门任何有绩效的人 ============ */
.grSideR .grSplitSub{display:none}
.grPickBtn{display:inline-flex;align-items:center;gap:6px;max-width:214px;min-width:0;
  border:1px solid #dde4ef;background:#fff;border-radius:7px;padding:2px 8px;line-height:1.35;text-align:left}
.grPickBtn:hover{border-color:#9dbcf5;background:#f7faff}
.grPickBtn.open{border-color:#2f6fed;box-shadow:0 0 0 2px rgba(47,111,237,.12)}
.grPickBtn>b{font-size:12px;color:#1f2a44;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:92px}
.grPickBtn>em{font-style:normal;font-size:10px;color:#8a93a6;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;max-width:112px}
.grPickCaret{flex:0 0 auto;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;
  border-top:5px solid #8a93a6;margin-left:2px;transition:transform .12s}
.grPickBtn.open .grPickCaret{transform:rotate(180deg)}
.grPickPop{border-bottom:1px solid #e8edf5;background:#fbfcff}
.grPickQ{padding:6px 8px;border-bottom:1px solid #eef2f8}
.grPickInput{width:100%;box-sizing:border-box;height:26px;border:1px solid #dde4ef;border-radius:6px;
  padding:0 8px;font-size:12px;background:#fff}
.grPickInput:focus{outline:none;border-color:#2f6fed}
.grPickList{max-height:268px;overflow:auto;padding:2px 0}
.grPickGrp{position:sticky;top:0;background:#f2f5fb;color:#6b7488;font-size:10.5px;font-weight:600;
  padding:3px 9px;border-bottom:1px solid #e9eefa;z-index:1}
.grPickIt{display:flex;align-items:center;gap:6px;width:100%;border:0;background:transparent;
  padding:4px 9px;font-size:12px;text-align:left;border-bottom:1px solid #f5f7fc}
.grPickIt:hover{background:#eef3fe}
.grPickIt.on{background:#e8f0fe}
.grPickIt>b{color:#1f2a44;white-space:nowrap;max-width:78px;overflow:hidden;text-overflow:ellipsis}
.grPickIt.on>b{color:#1b55c0}
.grPickIt>em{font-style:normal;color:#8a93a6;font-size:10.5px;flex:1;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grPickIt>i{font-style:normal;font-size:10px;color:#2f6fed;background:#eef4ff;border-radius:8px;
  padding:0 5px;flex:0 0 auto}
.grPickNone{padding:10px;font-size:11.5px;color:#98a2b3;text-align:center}

/* ===== 2027 定标表：冻结列扩到「KPI 指标项」；部门 / 岗位 / 入职时间可收起 ===== */
.bidTbl th.k1,.bidTbl th.k2,.bidTbl th.k3,.bidTbl th.k4,.bidTbl th.k5,.bidTbl th.k6,
.bidTbl td.k1,.bidTbl td.k2,.bidTbl td.k3,.bidTbl td.k4,.bidTbl td.k5,.bidTbl td.k6{position:sticky;z-index:4}
.bidTbl thead th.k1,.bidTbl thead th.k2,.bidTbl thead th.k3,.bidTbl thead th.k4,
.bidTbl thead th.k5,.bidTbl thead th.k6{z-index:8}
.bidTbl th.k1,.bidTbl td.k1{left:var(--l1,0px)}
.bidTbl th.k2,.bidTbl td.k2{left:var(--l2,34px)}
.bidTbl th.k3,.bidTbl td.k3{left:var(--l3,118px)}
.bidTbl th.k4,.bidTbl td.k4{left:var(--l4,222px)}
.bidTbl th.k5,.bidTbl td.k5{left:var(--l5,308px)}
.bidTbl th.k6,.bidTbl td.k6{left:var(--l6,366px)}
.bidTbl td.k6{background:#fff}
.bidTbl th.k6,.bidTbl td.k6{box-shadow:inset -1px 0 0 #dbe3f0,2px 0 5px -3px rgba(16,30,60,.16)}

/* 列显示开关（工具条上）：点一下收起 / 再点显示 */
.bidColSw{display:inline-flex;align-items:center;gap:2px;padding:1px 4px 1px 7px;border:1px solid #e2e8f2;
  border-radius:14px;background:#fafbfe}
.bidColSw>b{font-size:10.5px;color:#98a2b3;font-weight:500;margin-right:2px}
.csw{border:0;background:transparent;color:#b0b8c6;font-size:11px;line-height:18px;padding:0 6px;
  border-radius:10px;text-decoration:line-through;text-decoration-thickness:1px}
.csw:hover{background:#eef3fe;color:#5a6577}
.csw.on{color:#2f6fed;background:#e9f0fe;text-decoration:none;font-weight:600}
/* 表头也要用实测的 left（原规则写死了 308 等），并且压在最上层，避免被普通表头盖住 */
.bidTbl thead th.k1{left:var(--l1,0px)}
.bidTbl thead th.k2{left:var(--l2,34px)}
.bidTbl thead th.k3{left:var(--l3,118px)}
.bidTbl thead th.k4{left:var(--l4,222px)}
.bidTbl thead th.k5{left:var(--l5,308px)}
.bidTbl thead th.k6{left:var(--l6,366px)}
.bidTbl thead th.k1,.bidTbl thead th.k2,.bidTbl thead th.k3,
.bidTbl thead th.k4,.bidTbl thead th.k5,.bidTbl thead th.k6{z-index:9}
.bidTbl td.k1,.bidTbl td.k2,.bidTbl td.k3,.bidTbl td.k4,.bidTbl td.k5{z-index:4}
.bidTbl td.k6{z-index:5}
/* 冻结表头压住普通表头（原 tr.h1 th[rowspan] 是 z-index:7，这里要更高） */
.bidTbl thead tr.h1 th.k1,.bidTbl thead tr.h1 th.k2,.bidTbl thead tr.h1 th.k3,
.bidTbl thead tr.h1 th.k4,.bidTbl thead tr.h1 th.k5,.bidTbl thead tr.h1 th.k6{z-index:9}

/* ============ 账号登录 / 权限 / 留痕 / 汇报 ============ */
#loginOv{position:fixed;inset:0;background:linear-gradient(160deg,#eef2f9,#e2e9f4);z-index:999;
  display:flex;align-items:center;justify-content:center}
#loginOv.hidden{display:none}
.loginBox{background:#fff;border:1px solid #e2e8f2;border-radius:14px;box-shadow:0 18px 48px rgba(30,50,90,.14);
  padding:30px 34px;width:330px;box-sizing:border-box}
.loginBox h1{font-size:19px;margin:0 0 4px;display:flex;align-items:center;gap:8px;color:#1f2a44}
.loginSub{font-size:12px;color:#8a93a6;margin-bottom:20px}
.loginRow{display:flex;align-items:center;gap:10px;font-size:13px;color:#3d4658;margin-bottom:12px}
.loginRow input{flex:1;height:34px;border:1px solid #d5ddeb;border-radius:8px;padding:0 10px;font-size:14px}
.loginRow input:focus{outline:none;border-color:#2f6fed;box-shadow:0 0 0 2px rgba(47,111,237,.12)}
.loginErr{color:#c0392b;font-size:12.5px;min-height:18px;margin:2px 0 6px}
.loginTip{font-size:11px;color:#98a2b3;margin-top:14px;text-align:center}
.authChip{display:inline-flex;align-items:center;gap:6px;margin-right:10px;align-self:center}
.authChip>b{font-size:12px;color:#1f2a44;background:#eef3fe;border:1px solid #d5e2fa;border-radius:14px;
  padding:3px 10px;font-weight:600;white-space:nowrap}
/* 改动标记：极小的橙点，默认在右上角；关掉开关就隐藏 */
.auDot{position:absolute;top:1px;right:1px;width:7px;height:7px;border-radius:50%;
  background:#e08a1e;border:1.5px solid #fff;box-shadow:0 0 0 1px rgba(224,138,30,.35);
  cursor:pointer;z-index:3;opacity:.85}
.auDot:hover{opacity:1;transform:scale(1.3);transition:transform .1s}
td.auTd,div.auTd{position:relative}
.bidTbl.noAu .auDot,.grMemTbl.noAu .auDot{display:none}
/* 改动记录弹窗 */
.auBox{max-width:620px;width:92vw}
.auBox h3{display:flex;align-items:center;gap:8px}
.auSub{font-size:12px;color:#8a93a6;font-weight:400}
.auList{max-height:56vh;overflow:auto}
.auIt{display:flex;align-items:baseline;gap:8px;padding:6px 4px;border-bottom:1px solid #f0f3f9;font-size:12px;flex-wrap:wrap}
.auT{color:#98a2b3;font-size:11px;flex:0 0 auto}
.auU{color:#1b55c0;flex:0 0 auto}
.auF{color:#3d4658;font-weight:600;flex:0 0 auto}
.auChg{display:inline-flex;align-items:baseline;gap:6px;min-width:0;flex:1}
.auChg em{font-style:normal;word-break:break-all}
.auChg .old{color:#b0453a;background:#fdf1ef;border-radius:4px;padding:0 4px;text-decoration:line-through}
.auChg .new{color:#1e7a3c;background:#eef8f0;border-radius:4px;padding:0 4px}
.auChg i{font-style:normal;color:#98a2b3}
/* 汇报按钮 / 页签角标 */
.repChip{color:#8a5a12}
.repChip.on{background:#fff6e6;border-color:#ecd9a8;color:#8a5a12}
.shRep{font-style:normal;font-size:10px;margin-left:2px}
/* 账号管理弹窗 */
.accBox{max-width:640px;width:92vw}
.accBox.accBig{max-width:760px}
.accBox h3{margin:0 0 10px}
.accBox h4{font-size:13px;color:#3d4658;margin:0 0 10px}
.accLoad{padding:24px;font-size:13px;color:#8a93a6}
.accLan{background:#eef3fe;border:1px solid #d5e2fa;border-radius:8px;padding:8px 10px;font-size:12.5px;
  color:#1f2a44;margin-bottom:12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.accLan b{font-family:Consolas,monospace}
.accLanTip{flex-basis:100%;font-size:11px;color:#8a93a6}
.accTbl{width:100%;border-collapse:collapse;font-size:12.5px;margin-bottom:14px}
.accTbl th{text-align:left;color:#8a93a6;font-weight:500;font-size:11px;padding:4px 6px;border-bottom:1px solid #e8edf5}
.accTbl td{padding:6px;border-bottom:1px solid #f2f5fa}
.accTime{color:#8a93a6;font-size:11.5px}
.accOps{white-space:nowrap;text-align:right}
.accOps .btn{margin-left:4px}
.accOps .btn.danger{color:#c0392b}
.accAdd{border-top:1px solid #e8edf5;padding-top:12px}
.accAddRow{display:flex;align-items:flex-end;gap:12px;margin-bottom:8px;flex-wrap:wrap}
.accAddRow label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:#8a93a6}
.accAddRow input,.accAddRow select{height:30px;border:1px solid #d5ddeb;border-radius:7px;padding:0 8px;font-size:13px;min-width:180px}
.accScopeRow{font-size:12px;color:#3d4658;display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center}
.accScopeRow2{display:flex;flex-wrap:wrap;gap:6px 14px;margin:8px 0 12px}
.accChk{font-size:12.5px;color:#3d4658;display:inline-flex;align-items:center;gap:4px}
.accErr{color:#c0392b;font-size:12.5px;min-height:16px}
.accTip{font-size:11.5px;color:#8a93a6;margin-bottom:4px}
.accRow{display:flex;align-items:center;gap:10px;font-size:13px;color:#3d4658;margin-bottom:10px}
.accRow input{flex:1;height:32px;border:1px solid #d5ddeb;border-radius:7px;padding:0 9px;font-size:13px}
/* 账号表格：姓名 / 范围不折行，避免挤成两行 */
.accTbl td:first-child,.accTbl th:first-child{white-space:nowrap;min-width:86px}
.accTbl td:nth-child(2){min-width:150px}
.accTbl td:last-child{text-align:right}
/* 登录卡片里的图标：固定小尺寸，别跟着原图放大 */
.loginBox h1 .brandIco{width:26px;height:26px;border-radius:6px;display:block;flex:0 0 auto;
  box-shadow:0 1px 3px rgba(10,112,96,.28)}
.loginBox h1{white-space:nowrap}

/* ===== 2027 定标表：衡量频率（2026 / 2027 各 6 列）冻结在 KPI 指标项右边 =====
   指标描述太长要往右滑时，仍然看得到这一行是年 / 季 / 月、权重多少 */
.bidTbl th.fz,.bidTbl td.fz{position:sticky;z-index:4}
.bidTbl thead th.fz{z-index:9}
.bidTbl th.fz1,.bidTbl td.fz1{left:var(--f1,0px)}
.bidTbl th.fz2,.bidTbl td.fz2{left:var(--f2,0px)}
.bidTbl th.fz3,.bidTbl td.fz3{left:var(--f3,0px)}
.bidTbl th.fz4,.bidTbl td.fz4{left:var(--f4,0px)}
.bidTbl th.fz5,.bidTbl td.fz5{left:var(--f5,0px)}
.bidTbl th.fz6,.bidTbl td.fz6{left:var(--f6,0px)}
.bidTbl th.fz7,.bidTbl td.fz7{left:var(--f7,0px)}
.bidTbl th.fz8,.bidTbl td.fz8{left:var(--f8,0px)}
.bidTbl th.fz9,.bidTbl td.fz9{left:var(--f9,0px)}
.bidTbl th.fz10,.bidTbl td.fz10{left:var(--f10,0px)}
.bidTbl th.fz11,.bidTbl td.fz11{left:var(--f11,0px)}
.bidTbl th.fz12,.bidTbl td.fz12{left:var(--f12,0px)}
/* 两个分组表头（colspan 6）当成一整块贴住：宽度正好等于下面 6 列 */
.bidTbl thead th.g26{position:sticky;left:var(--f1,0px);z-index:10}
.bidTbl thead th.g27{position:sticky;left:var(--f7,0px);z-index:10}
.bidTbl thead tr.h1 th.g26{border-right:1px solid #cfdeef}
.bidTbl thead tr.h1 th.g27{border-left:1px solid #bcdcc6;border-right:1px solid #bcdcc6}
/* 冻结区右边界画一条阴影，明确「这边才开始跟着滑」 */
.bidTbl th.fz12,.bidTbl td.fz12{box-shadow:inset -1px 0 0 #d6e2f1,2px 0 5px -3px rgba(16,30,60,.16)}
/* 频率筛选按钮：和「列」开关同一套样式 */
.bidCycSw{display:inline-flex;align-items:center;gap:2px;padding:1px 4px 1px 7px;border:1px solid #e2e8f2;
  border-radius:14px;background:#fafbfe}
.bidCycSw>b{font-size:10.5px;color:#98a2b3;font-weight:500;margin-right:2px}
/* 筛掉本周期指标之后，这个人剩下的提示行 */
.bidTbl tr.bfil td{background:#fcfcfe}
.bidTbl tr.bfil .noneHint{color:#98a2b3;font-size:11px}

/* ===== 2027 同岗位表（左：本人表）：序 / KPI 指标项 / 衡量频率 一起冻结 =====
   描述写得很长要往右滑时，仍能看清这一行是年 / 季 / 月、权重多少 ===== */
.grMemTbl th.gmS1,.grMemTbl th.gmS2,.grMemTbl th.gmF1,.grMemTbl th.gmF2,.grMemTbl th.gmF3,
.grMemTbl th.gmF4,.grMemTbl th.gmF5,.grMemTbl th.gmF6,.grMemTbl th.gmFg,
.grMemTbl td.gmS1,.grMemTbl td.gmS2,.grMemTbl td.gmF1,.grMemTbl td.gmF2,.grMemTbl td.gmF3,
.grMemTbl td.gmF4,.grMemTbl td.gmF5,.grMemTbl td.gmF6{position:sticky;z-index:3;background:#fff}
.grMemTbl thead th.gmS1,.grMemTbl thead th.gmS2,.grMemTbl thead th.gmF1,.grMemTbl thead th.gmF2,
.grMemTbl thead th.gmF3,.grMemTbl thead th.gmF4,.grMemTbl thead th.gmF5,.grMemTbl thead th.gmF6,
.grMemTbl thead th.gmFg{z-index:6}
.grMemTbl th.gmS1,.grMemTbl td.gmS1{left:0}
.grMemTbl th.gmS2,.grMemTbl td.gmS2{left:var(--gs2,24px)}
.grMemTbl th.gmF1,.grMemTbl td.gmF1{left:var(--g1,128px)}
.grMemTbl th.gmF2,.grMemTbl td.gmF2{left:var(--g2,150px)}
.grMemTbl th.gmF3,.grMemTbl td.gmF3{left:var(--g3,188px)}
.grMemTbl th.gmF4,.grMemTbl td.gmF4{left:var(--g4,210px)}
.grMemTbl th.gmF5,.grMemTbl td.gmF5{left:var(--g5,248px)}
.grMemTbl th.gmF6,.grMemTbl td.gmF6{left:var(--g6,270px)}
.grMemTbl thead th.gmFg{left:var(--g1,128px)}
/* 频率列底色：表头淡蓝，2026 打底数字保持原样式 */
.grMemTbl thead th.gmF1,.grMemTbl thead th.gmF2,.grMemTbl thead th.gmF3,
.grMemTbl thead th.gmF4,.grMemTbl thead th.gmF5,.grMemTbl thead th.gmF6{background:#f4f8ff}
.grMemTbl th.gmF6,.grMemTbl td.gmF6{box-shadow:inset -1px 0 0 #dbe4f2,2px 0 5px -3px rgba(16,30,60,.14)}
.grMemTbl th.gmS2,.grMemTbl td.gmS2{box-shadow:none}
/* 顶部「全部 / 年 / 季 / 月」分段按钮 */
.grCycSeg{display:inline-flex;align-items:center;border:1px solid #e2e8f2;border-radius:12px;overflow:hidden;background:#fafbfe}
.grCycSeg .gcs{border:0;background:transparent;font-size:11px;color:#7b8598;padding:2px 8px;line-height:16px;white-space:nowrap}
.grCycSeg .gcs+.gcs{border-left:1px solid #eef2f8}
.grCycSeg .gcs:hover{background:#eef3fe;color:#3d4658}
.grCycSeg .gcs.on{background:#e9f0fe;color:#1b55c0;font-weight:600}
/* 频率列表头必须有实底：否则横向滚动时右侧列头会从下面透出来 */
.bidTbl thead th.fz1,.bidTbl thead th.fz2,.bidTbl thead th.fz3,
.bidTbl thead th.fz4,.bidTbl thead th.fz5,.bidTbl thead th.fz6{background:#eaf1f9}
.bidTbl thead th.fz7,.bidTbl thead th.fz8,.bidTbl thead th.fz9,
.bidTbl thead th.fz10,.bidTbl thead th.fz11,.bidTbl thead th.fz12{background:#eaf6ee}
/* 第二行表头（年 / 权重%）的吸附位置跟着第一行实际高度走，避免中间留缝让右侧列头透出来 */
.bidTbl thead tr.h2 th{top:var(--h1h,31px)}
/* 冻结列必须 separate：border-collapse:collapse 下 Chrome 不支持单元格 sticky */
.grMemTbl{border-collapse:separate;border-spacing:0}
/* 关掉「频率冻结」时：频率列回到普通列，横向滚动一切照旧 */
.bidTbl.noFz th.fz,.bidTbl.noFz td.fz{position:static}
.bidTbl.noFz thead th.g26,.bidTbl.noFz thead th.g27{position:static}

/* ===== 2026-11-06：自动保存 / 撤回 / 周期口径提示 / 指标拖动排序 ===== */
.autoTag{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;color:#4b8a63;
  background:#f0f9f3;border:1px solid #d8ecdf;border-radius:10px;padding:2px 7px;white-space:nowrap}
.autoTag:before{content:"";width:5px;height:5px;border-radius:50%;background:#3fa568}
.autoTag.ok{color:#237a45;background:#e9f7ee;border-color:#c9e7d5}
.undoBtn{display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.undoBtn i{font-style:normal;font-size:9.5px;color:#8b96a8;background:#eef2f8;border-radius:8px;padding:0 4px;line-height:13px;min-width:0}
.undoBtn i:empty{display:none}
.undoBtn.ready{color:#1b55c0;border-color:#c9d9f5;background:#f5f9ff}
.undoBtn:disabled{opacity:.5;cursor:default}
.grMini.undoBtn{padding:2px 7px;border:1px solid #dfe7f3;border-radius:10px;background:#fff;font-size:10.5px;color:#5a6577;cursor:pointer}
.grMini.undoBtn.ready{color:#1b55c0;border-color:#c9d9f5;background:#f5f9ff}

/* 定标表：选了年 / 季 / 月 的口径说明条 */
.bidCycBar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 8px;padding:7px 11px;
  background:#f2f7ff;border:1px solid #dbe7fb;border-radius:8px;font-size:12px;color:#42506a;line-height:1.65}
.bidCycBar>b{color:#1b55c0}
.bidCycBar b{color:#1b55c0}
.bidCycBar.empty{background:#fffaf0;border-color:#f3e2bd;color:#7a5a1e}
.bidCycBar.empty>b,.bidCycBar.empty b{color:#b3541e}
.bidCycBar .sp{flex:1}
.bidCycBar .miniBtn{border:1px solid #cfdcf0;background:#fff;color:#31527f;border-radius:9px;
  font-size:11px;padding:1px 8px;cursor:pointer;white-space:nowrap}
.bidCycBar .miniBtn:hover{background:#eaf2ff;border-color:#a9c4ee}

/* 员工编辑区：每个周期几条 / 权重合计，合计不是 100% 标红 */
.grCycSum{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}
.grCycOne{display:inline-flex;align-items:baseline;gap:2px;font-size:10.5px;color:#6b7488;
  background:#f6f8fc;border:1px solid #e8eef7;border-radius:8px;padding:1px 6px;cursor:help}
.grCycOne b{color:#1f2a44;font-size:11px;margin-left:1px}
.grCycOne i{font-style:normal;color:#8a93a6;font-size:9.5px;margin-left:3px}
.grCycOne.bad{border-color:#f0c9c4;background:#fff6f5}
.grCycOne.bad b,.grCycOne.bad i{color:#c0392b}
.grCycNow{font-size:10.5px;color:#1b55c0;background:#eef4ff;border:1px solid #d9e5fb;border-radius:9px;padding:1px 7px;white-space:nowrap}
.grCycNow.bad{color:#b3541e;background:#fff7ec;border-color:#f2ddba}

/* 指标行拖动把手 */
.rowGrip{display:inline-block;cursor:grab;color:#c6cfdd;font-size:9px;letter-spacing:-1.5px;
  vertical-align:middle;margin-right:1px;user-select:none}
.bidTbl tbody tr:hover .rowGrip{color:#8b97a9}
.bidTbl tr.rdropT td{border-top:2px solid #2f6fed!important}
.bidTbl tr.rdropB td{border-bottom:2px solid #2f6fed!important}
.grMemIndRow{display:flex;align-items:flex-start;gap:2px}
.grMemGrip{flex:0 0 9px;cursor:grab;color:#c6cfdd;font-size:9px;letter-spacing:-1.5px;
  line-height:18px;user-select:none}
.grMemTbl tr:hover .grMemGrip{color:#8b97a9}
.grMemIndRow .grMemIndIn{flex:1;min-width:0}
.grMemTbl tr.gdropT td{border-top:2px solid #2f6fed!important}
.grMemTbl tr.gdropB td{border-bottom:2px solid #2f6fed!important}

/* 编辑某员工时：序 / KPI 指标项 固定在左边（收起编辑区就不存在这层冻结） */
.grMemTbl thead th.gmS1,.grMemTbl thead th.gmS2{background:#fafbfe}
.grMemTbl td.gmS1,.grMemTbl td.gmS2{background:#fff}
.grMemTbl tbody tr:hover td.gmS1,.grMemTbl tbody tr:hover td.gmS2{background:#fbfcff}
.grMemTbl th.gmS2,.grMemTbl td.gmS2{box-shadow:inset -1px 0 0 #e6edf7,2px 0 5px -3px rgba(16,30,60,.12)}
.grMemTbl thead th.gmS1,.grMemTbl thead th.gmS2{z-index:8}
.grPickHint{padding:5px 9px;font-size:10.5px;color:#6b7488;background:#f4f8ff;border-bottom:1px solid #e8eef7;line-height:1.5}
.grPickHint b{color:#1b55c0}

/* ================= 2026-11-06：小菀同学 · 操作指引机器人 ================= */
/* 悬浮球：与小菀人才库同款（54×54 白底圆形 + 小猴子），固定在右上角 */
#botToggle{position:fixed;right:26px;top:var(--botTop,120px);width:54px;height:54px;border-radius:50%;
  background:#fff;border:2px solid #fff;z-index:72;display:flex;align-items:center;justify-content:center;
  padding:0;overflow:visible;cursor:pointer;box-shadow:0 6px 18px rgba(38,168,120,.38),0 2px 6px rgba(16,30,60,.12);
  transition:transform .15s ease, box-shadow .15s ease}
#botToggle:hover{transform:translateY(-2px) scale(1.04);box-shadow:0 10px 26px rgba(38,168,120,.46)}
#botToggle img{width:86%;height:86%;border-radius:50%;display:block;object-fit:cover;pointer-events:none}
#botToggle.on{transform:scale(.94)}
#botToggle .botPing{position:absolute;right:0;top:0;width:10px;height:10px;border-radius:50%;
  background:#f6a723;border:2px solid #fff;animation:botPing 2.4s infinite}
#botToggle.seen .botPing{display:none}
@keyframes botPing{0%,100%{box-shadow:0 0 0 0 rgba(246,167,35,.55)}50%{box-shadow:0 0 0 6px rgba(246,167,35,0)}}

#botPanel{position:fixed;right:22px;top:112px;width:372px;max-width:calc(100vw - 24px);
  height:560px;max-height:calc(100vh - 130px);background:#fff;border-radius:14px;z-index:73;
  box-shadow:0 18px 52px rgba(16,30,60,.26),0 3px 10px rgba(16,30,60,.12);
  display:flex;flex-direction:column;overflow:hidden;border:1px solid #e6ecf7;
  animation:botIn .18s ease-out}
@keyframes botIn{from{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}
#botHead{background:linear-gradient(135deg,#1f3a8a,#2f6fed);color:#fff;padding:11px 14px;display:flex;align-items:center;gap:9px}
.botHeadAva{width:34px;height:34px;border-radius:11px;background:#fff6ef;border:1px solid #ffffff3d;
  overflow:hidden;display:flex;align-items:center;justify-content:center;flex:0 0 34px}
.botHeadAva img{width:100%;height:100%;object-fit:cover;display:block}
.botHeadTx{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.botHeadTx b{font-size:14px;letter-spacing:.3px}
.botHeadTx em{font-style:normal;font-size:10.5px;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#botClose{margin-left:auto;background:none;border:none;color:#fff;font-size:22px;line-height:1;padding:0 4px;opacity:.85}
#botClose:hover{opacity:1}
#botBody{flex:1;overflow-y:auto;padding:13px 12px 6px;background:#f6f8fc;scroll-behavior:smooth}
.botMsg{max-width:88%;padding:9px 12px;border-radius:11px;font-size:12.5px;line-height:1.75;margin-bottom:9px;
  white-space:normal;word-break:break-word;box-shadow:0 1px 2px rgba(16,30,60,.05)}
.botMsg.user{background:#2f6fed;color:#fff;margin-left:auto;border-bottom-right-radius:3px;white-space:pre-wrap}
.botMsg.bot{background:#fff;border:1px solid #e6ecf7;border-bottom-left-radius:3px;color:#26303e}
.botMsg.bot b,.botMsg.bot strong{color:#1f3a8a}
.botMsg.bot em{font-style:normal;background:#eef4ff;color:#1b55c0;border-radius:4px;padding:0 4px}
.botMsg kbd{background:#f3f5f9;border:1px solid #d8dee8;border-bottom-width:2px;border-radius:4px;
  padding:0 5px;font-size:11px;font-family:Consolas,monospace}
.botMsg hr{border:none;border-top:1px dashed #e6ecf7;margin:8px 0}
.botMsg ul,.botMsg ol{margin:4px 0 2px;padding-left:17px}
.botMsg li{margin:2px 0}
.botDots{display:inline-flex;gap:3px;align-items:center;height:14px}
.botDots i{width:5px;height:5px;border-radius:50%;background:#93a9d0;animation:botDot 1s infinite}
.botDots i:nth-child(2){animation-delay:.15s}.botDots i:nth-child(3){animation-delay:.3s}
@keyframes botDot{0%,60%,100%{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
.botMsChips{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px;padding-top:8px;border-top:1px dashed #e9eef7}
#botChips{display:flex;gap:6px;padding:8px 10px;background:#fff;border-top:1px solid #eef2f8;overflow-x:auto;
  flex-wrap:nowrap;scrollbar-width:none}
#botChips::-webkit-scrollbar{display:none}
.botChip{flex-shrink:0;background:#eef4ff;color:#2b5bd0;border:1px solid #dbe6fb;border-radius:14px;
  padding:5px 11px;font-size:11.5px;white-space:nowrap;cursor:pointer;font-family:inherit}
.botChip:hover{background:#e0ebff;border-color:#b9cff5}
.botMsChips .botChip{background:#fff}
.botActBtn{margin-top:9px;border:none;border-radius:8px;background:linear-gradient(135deg,#2f6fed,#1f3a8a);
  color:#fff;font-size:12px;padding:7px 13px;cursor:pointer;box-shadow:0 3px 10px rgba(47,111,237,.24);font-family:inherit}
.botActBtn:hover{filter:brightness(1.06)}
#botInputRow{display:flex;gap:6px;padding:9px 10px;background:#fff;border-top:1px solid #eef2f8}
#botInput{flex:1;font-size:12.5px;padding:8px 10px;border-radius:8px;border:1px solid #dfe6f1;background:#f8fafd}
#botInput:focus{background:#fff}
#botSend{border:none;border-radius:8px;background:#1f3a8a;color:#fff;font-size:12.5px;padding:0 14px;font-family:inherit}
#botSend:hover{background:#2f6fed}
/* 首次进入的招呼气泡 */
#botHello{position:fixed;right:22px;top:112px;max-width:276px;background:#fff;border:1px solid #dfe8f7;
  border-radius:12px;padding:10px 12px;font-size:12px;line-height:1.65;color:#3b475c;
  display:flex;gap:8px;align-items:flex-start;cursor:pointer;
  box-shadow:0 8px 24px rgba(16,30,60,.14);z-index:71;animation:botIn .2s ease-out}
#botHello .bhAva{width:26px;height:26px;border-radius:9px;flex:0 0 26px;margin-top:1px;
  border:1px solid #f3e2d4;background:#fff6ef;object-fit:cover}
#botHello .bhTx{min-width:0;padding-right:6px}
#botHello b{color:#1f3a8a}
#botHello i{position:absolute;right:20px;top:-6px;width:12px;height:12px;background:#fff;
  border-left:1px solid #dfe8f7;border-top:1px solid #dfe8f7;transform:rotate(45deg)}
#botHello .bhX{position:absolute;right:4px;top:3px;border:none;background:none;color:#aab4c6;font-size:14px;line-height:1;padding:2px}

/* ================= 使用手册（页内版） ================= */
#manualBox{position:fixed;inset:0;background:rgba(12,22,44,.5);z-index:99;display:flex;align-items:center;justify-content:center;padding:20px}
.mnPanel{width:1080px;max-width:100%;height:min(760px,calc(100vh - 40px));background:#fff;border-radius:14px;
  display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 70px rgba(8,18,40,.34);animation:botIn .18s ease-out}
.mnHead{background:linear-gradient(135deg,#1f3a8a,#2f6fed);color:#fff;padding:13px 16px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.mnHead h3{font-size:15.5px;font-weight:600;display:flex;align-items:center;gap:7px}
.mnHead .mnRole{font-size:10.5px;background:#ffffff26;border:1px solid #ffffff33;border-radius:10px;padding:1px 8px;opacity:.95}
#mnSearch{margin-left:auto;width:250px;max-width:44vw;font-size:12.5px;padding:6px 10px;border-radius:7px;
  border:1px solid #ffffff4d;background:#ffffff1f;color:#fff}
#mnSearch::placeholder{color:#ffffffb3}
#mnSearch:focus{background:#fff;color:#26303e;border-color:#fff}
.mnHead .btn.small{background:#ffffff1f;border-color:#ffffff4d;color:#fff}
.mnHead .btn.small:hover{background:#ffffff33}
.mnBody{flex:1;display:flex;min-height:0}
.mnNavWrap{width:236px;flex:0 0 236px;border-right:1px solid #eaeff7;background:#fafbfe;overflow-y:auto;padding:10px 8px}
.mnGrp{font-size:10.5px;color:#98a2b5;letter-spacing:.5px;padding:9px 10px 4px;font-weight:600}
.mnNav{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:none;
  padding:7px 10px;border-radius:7px;font-size:12.5px;color:#42506a;font-family:inherit;line-height:1.4}
.mnNav span{font-size:13px;flex:0 0 16px;text-align:center}
.mnNav:hover{background:#eef3fd;color:#1f3a8a}
.mnNav.on{background:#e6efff;color:#1f3a8a;font-weight:600}
.mnContent{flex:1;overflow-y:auto;padding:22px 30px 28px;font-size:13.5px;line-height:1.85;color:#33405a}
.mnCtHead{font-size:20px;font-weight:700;color:#1f3a8a;margin:0 0 4px;display:flex;align-items:center;gap:8px}
.mnCtSub{font-size:11.5px;color:#8a93a6;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #eef2f8}
.mnContent h3{font-size:14.5px;color:#1f3a8a;margin:22px 0 8px;padding-left:9px;border-left:3px solid #2f6fed;line-height:1.4}
.mnContent p{margin:7px 0}
.mnContent ul,.mnContent ol{margin:7px 0;padding-left:20px}
.mnContent li{margin:3px 0}
.mnContent b,.mnContent strong{color:#1f3a8a}
.mnContent em{font-style:normal;background:#eef4ff;color:#1b55c0;border-radius:4px;padding:0 4px}
.mnContent code,.mnContent kbd{background:#f3f5f9;border:1px solid #dbe1ea;border-bottom-width:2px;border-radius:4px;
  padding:0 5px;font-size:11.5px;font-family:Consolas,monospace}
.mnTb{width:100%;border-collapse:collapse;margin:10px 0;font-size:12.5px}
.mnTb th,.mnTb td{border:1px solid #e2e8f2;padding:7px 10px;text-align:left;vertical-align:top}
.mnTb th{background:#f2f6fd;color:#1f3a8a;font-weight:600}
.mnTb tr:nth-child(even) td{background:#fafcff}
.mnTip{background:#f2f7ff;border-left:3px solid #2f6fed;padding:9px 13px;border-radius:0 7px 7px 0;margin:12px 0;font-size:12.5px;line-height:1.75}
.mnTip.warn{background:#fff8ec;border-left-color:#e08a1e;color:#7a5a1e}
.mnTip.ok{background:#f1f9f3;border-left-color:#16a34a;color:#215c35}
.mnStep{display:flex;gap:11px;margin:10px 0;align-items:flex-start}
.mnStep>b{flex:0 0 23px;height:23px;border-radius:50%;background:#1f3a8a;color:#fff;text-align:center;
  line-height:23px;font-size:11.5px;margin-top:2px}
.mnFootNav{display:flex;justify-content:space-between;gap:10px;margin-top:28px;padding-top:14px;border-top:1px dashed #e6ecf7}
.mnFootNav .btn.small{margin:0}
.mnKey{display:inline-block;background:#f5f7fb;border:1px solid #e2e8f2;border-radius:5px;padding:1px 6px;font-size:11.5px;color:#5a6577}
.mnTag{display:inline-block;background:#eef4ff;color:#2b5bd0;border-radius:4px;padding:0 6px;font-size:11px;margin-right:4px}

/* ================= 一键导出弹窗 ================= */
#expBox{position:fixed;inset:0;background:rgba(12,22,44,.48);z-index:98;display:flex;align-items:center;justify-content:center;padding:20px}
.expPanel{width:628px;max-width:100%;background:#fff;border-radius:14px;overflow:hidden;box-shadow:0 24px 70px rgba(8,18,40,.3);animation:botIn .18s ease-out}
.expHead{background:linear-gradient(135deg,#1f3a8a,#2f6fed);color:#fff;padding:14px 18px;display:flex;align-items:center;gap:9px}
.expHead b{font-size:15px}
.expHead .expSub{font-size:11px;opacity:.85;margin-top:2px}
.expHead button{margin-left:auto;background:none;border:none;color:#fff;font-size:21px;line-height:1;opacity:.85}
.expBody{padding:16px 18px 6px;max-height:calc(100vh - 220px);overflow-y:auto}
.expLab{font-size:11.5px;color:#8a93a6;margin:2px 0 7px;letter-spacing:.3px}
.expCards{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:15px}
.expCard{border:1.5px solid #e2e8f2;border-radius:10px;padding:11px 12px;cursor:pointer;background:#fff;text-align:left;
  font-family:inherit;transition:all .14s}
.expCard:hover{border-color:#b9cff5;background:#fafcff}
.expCard.on{border-color:#2f6fed;background:#f3f8ff;box-shadow:0 0 0 3px #2f6fed1a}
.expCard b{display:flex;align-items:center;gap:6px;font-size:13px;color:#1f3a8a;margin-bottom:3px}
.expCard span{font-size:11.5px;color:#7b8699;line-height:1.55}
.expCard .expIco{width:22px;height:22px;border-radius:6px;background:#eef4ff;color:#2f6fed;
  display:inline-flex;align-items:center;justify-content:center;font-size:12px}
.expRow{display:flex;align-items:center;gap:10px;margin-bottom:13px;flex-wrap:wrap}
.expSeg{display:inline-flex;border:1px solid #dfe6f1;border-radius:8px;overflow:hidden}
.expSeg button{border:none;background:#fff;padding:7px 14px;font-size:12.5px;color:#5a6577;font-family:inherit}
.expSeg button+button{border-left:1px solid #e7ecf5}
.expSeg button.on{background:#1f3a8a;color:#fff}
.expSeg button:disabled{color:#c2c9d6;background:#f7f9fc}
.expHint{font-size:11.5px;color:#8a93a6;line-height:1.7;background:#f7f9fd;border:1px solid #eef2f8;border-radius:8px;padding:9px 11px}
.expHint b{color:#1f3a8a}
.expFoot{display:flex;gap:8px;align-items:center;padding:12px 18px;border-top:1px solid #eef2f8;background:#fafbfe}
.expFoot .sp{flex:1;font-size:11.5px;color:#8a93a6}
.expFoot .btn{font-family:inherit}
.expGo{background:#1f3a8a;color:#fff;border:none;border-radius:8px;padding:9px 20px;font-size:13px;
  box-shadow:0 4px 12px rgba(31,58,138,.22);font-family:inherit}
.expGo:hover{background:#2f6fed}
.expGo:disabled{background:#b7c2d6;box-shadow:none}

@media (max-width:640px){
  #botPanel{right:8px;left:8px;width:auto;top:auto;bottom:88px;height:calc(100vh - 150px);max-height:none}
  #botToggle{right:14px;top:auto;bottom:16px;width:46px;height:46px}
  #botHello{right:14px;left:14px;top:auto;bottom:16px;max-width:none}
  #botHello i{top:auto;bottom:12px}
  .mnNavWrap{width:168px;flex-basis:168px}
  .mnContent{padding:16px 16px 22px}
  .expCards{grid-template-columns:1fr}
}

/* ================= 导出弹窗 2.0（五类导出 + 权重校验） ================= */
.expPills{display:grid;grid-template-columns:repeat(auto-fit,minmax(176px,1fr));gap:8px;margin-bottom:14px}
.expPills button{border:1.5px solid #e2e8f2;border-radius:10px;padding:10px 10px 8px;cursor:pointer;background:#fff;
  text-align:left;font-family:inherit;transition:all .14s;line-height:1.3}
.expPills button:hover{border-color:#b9cff5;background:#fafcff}
.expPills button.on{border-color:#2f6fed;background:#f3f8ff;box-shadow:0 0 0 3px rgba(47,111,237,.1)}
.expPills button b{display:block;font-size:12.5px;color:#1f3a8a}
.expPills button span{display:block;font-size:10.5px;color:#7b8699;margin-top:3px;line-height:1.5}
.expPills button.on b{color:#2f6fed}
.expLabTip{margin-left:6px;color:#2f6fed;font-weight:normal}
.expCheck{border-radius:10px;padding:10px 12px;font-size:12px;line-height:1.7;margin:4px 0 12px;border:1px solid transparent}
.expCheck.loading{background:#f7f9fd;border-color:#e3ebf6;color:#8a93a6}
.expCheck.ok{background:#f2fbf5;border-color:#cdeeda;color:#1c7c3d}
.expCheck.bad{background:#fff8f2;border-color:#f5dcc3;color:#a05a1c}
.expCheck b{font-weight:600}
.expChkScope{display:inline-block;font-size:10.5px;color:#8a93a6;background:#fff;border:1px solid #eee;border-radius:6px;padding:1px 7px;margin-left:4px}
.expChkList{margin:7px 0 0;padding-left:18px;max-height:132px;overflow-y:auto}
.expChkList li{font-size:11.5px;color:#5a6577;margin-bottom:2px}
.expChkList b{color:#a05a1c}
.expChkMore{margin-top:6px;font-size:11px;color:#a05a1c}
@media (max-width:640px){
  .expPills{grid-template-columns:1fr 1fr}
}

/* ================= 绩效雷达 ================= */
.rdTop{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.rdTitle{font-size:17px;font-weight:700;color:#1f3a8a;display:flex;align-items:baseline;gap:9px}
.rdTitle span{font-size:11.5px;font-weight:400;color:#8a93a6}
.rdTools{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rdTools select{height:30px;border:1px solid #dfe6f1;border-radius:8px;background:#fff;font-family:inherit;
  font-size:12.5px;color:#3c4a63;padding:0 8px;max-width:260px}
.rdSeg2{display:inline-flex;border:1px solid #dfe6f1;border-radius:9px;overflow:hidden;background:#fff}
.rdSeg2 button{border:none;background:#fff;padding:6px 12px;font-size:12px;color:#5a6577;font-family:inherit;cursor:pointer}
.rdSeg2 button+button{border-left:1px solid #eef2f8}
.rdSeg2 button.on{background:#1f3a8a;color:#fff}
.rdSeg2 button:hover:not(.on){background:#f4f8ff;color:#2f6fed}
.rdHintTxt{font-size:11.5px;color:#8a93a6}

.rdFoot{margin-top:8px;font-size:11.5px;color:#8a93a6;line-height:1.9}
.rdFoot b{color:#1f3a8a}

.rdAlertCard h2{display:flex;align-items:center}
.rdSecT{font-size:11.5px;color:#8a93a6;margin:12px 0 6px;display:flex;align-items:center;gap:6px}
.rdSecT:first-of-type{margin-top:2px}
.rdSecT i{font-style:normal;background:#fdeaea;color:#c0392b;border-radius:9px;padding:0 7px;font-size:10.5px}
.rdSecT i.y{background:#fff4e5;color:#a05a1c}
.rdSecT i.b{background:#eef4ff;color:#2f6fed}
.rdItem{border:1px solid #eef2f8;border-radius:9px;padding:8px 10px;margin-bottom:6px;cursor:pointer;transition:all .13s;background:#fff}
.rdItem:hover{border-color:#c9dbf8;background:#fafcff}
.rdItem.hot{border-color:#f6d5d5;background:#fffafa}
.rdItemTop{display:flex;align-items:baseline;gap:7px}
.rdItemTop b{font-size:13px;color:#22304c}
.rdPost{font-size:10.5px;color:#93a0b5;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rdScore{font-family:Consolas,monospace;font-size:13px;font-weight:700;color:#c0392b}
.rdItemSub{font-size:11px;color:#7b8699;line-height:1.6;margin-top:3px}
.rdEmpty{font-size:12px;color:#8a93a6;padding:14px 2px;line-height:1.8}

.rdInds{display:flex;flex-direction:column;gap:9px}
.rdInd{border-bottom:1px dashed #f0f3f9;padding-bottom:8px}
.rdInd:last-child{border-bottom:none;padding-bottom:0}
.rdIndTop{display:flex;align-items:baseline;gap:8px}
.rdIndNm{font-size:12.5px;color:#22304c;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rdIndRt{font-family:Consolas,monospace;font-size:12.5px;font-weight:700}
.rdIndRt.good{color:#16a34a}
.rdIndRt.bad{color:#c0392b}
.rdBar{height:6px;border-radius:4px;background:#f1f4fa;overflow:hidden;margin:5px 0 3px}
.rdBar i{display:block;height:100%;border-radius:4px;background:#2f6fed;transition:width .4s}
.rdBar i.good{background:linear-gradient(90deg,#34c07a,#16a34a)}
.rdBar i.bad{background:linear-gradient(90deg,#f0a05a,#d9534f)}
.rdIndSub{font-size:10.5px;color:#9aa5b8}
.rdHint{margin-left:7px;color:#a05a1c;background:#fff6e9;border-radius:6px;padding:1px 6px}
.rdHint.bad{color:#c0392b;background:#fdeeee}

.rdEmps{display:flex;flex-direction:column}
.rdEmp{display:flex;align-items:center;gap:9px;padding:7px 4px;border-bottom:1px solid #f4f6fb;cursor:pointer}
.rdEmp:hover{background:#fafcff}
.rdEmp:last-child{border-bottom:none}
.rdRk{width:18px;height:18px;border-radius:6px;background:#eef3fd;color:#5a6b8c;font-size:10.5px;
  display:flex;align-items:center;justify-content:center;flex:0 0 18px}
.rdEmp:nth-child(1) .rdRk{background:#1f3a8a;color:#fff}
.rdNm{flex:1;font-size:12.5px;color:#22304c;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rdNm em{font-style:normal;font-size:10.5px;color:#9aa5b8;margin-left:6px}
.rdAvg{font-family:Consolas,monospace;font-size:12.5px;font-weight:700;color:#1f3a8a}
.rdDelta{width:66px;text-align:right;font-size:11px}
.rdUp{color:#16a34a}
.rdDn{color:#c0392b}
.rdFlat{color:#9aa5b8}

.rdNote{font-size:11.5px;color:#7b8699;line-height:1.9;background:#fbfcff}
.rdNote b{color:#1f3a8a}

.rdJobTbl td.nm{white-space:normal}
.rdJobRow{cursor:pointer}
.rdJobRow:hover td{background:#fafcff}
.rdJobSub td{background:#fafbfe;font-size:11.5px;color:#5a6577}
.goodTd{color:#16a34a}
.badTd{color:#c0392b}
.goodTd b,.badTd b{font-family:Consolas,monospace}

@media (max-width:900px){
  .rdTop{align-items:flex-start}
  .rdTools{margin-left:0;width:100%}
  .rdTools select{flex:1;max-width:none}
}

/* ================= 小菀助手 · 贴边悬浮条 2.0 =================
   闲置时只露 42px 一条，贴在右边框上；悬停才展开成「小菀 / 问我」，不压内容 */
#botToggle{right:0;top:var(--botTop,44%);width:42px;height:104px;padding:0;border:none;z-index:72;
  border-radius:16px 0 0 16px;background:rgba(255,255,255,.8);
  -webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);
  border:1px solid #e6edf9;border-right:none;
  box-shadow:-3px 8px 22px rgba(24,48,92,.10);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  overflow:hidden;cursor:pointer;
  transition:width .24s cubic-bezier(.2,.8,.2,1),box-shadow .24s,background .2s,transform .16s}
#botToggle:hover{width:116px;background:#fff;box-shadow:-8px 12px 32px rgba(24,48,92,.16);transform:none}
#botToggle:active{transform:scale(.985)}
#botToggle img{width:29px;height:29px;border-radius:50%;display:block;object-fit:cover;
  pointer-events:none;flex:0 0 29px;box-shadow:0 1px 3px rgba(30,120,80,.18)}
#botToggle .botLab{display:flex;flex-direction:column;align-items:center;transition:all .2s}
#botToggle .botLab b{writing-mode:vertical-rl;text-orientation:upright;letter-spacing:3px;
  font-size:11px;font-weight:600;color:#2b6b52;line-height:1;transition:all .2s}
#botToggle .botLab em{display:none;font-style:normal;font-size:9.5px;color:#93a0b5;letter-spacing:.5px}
#botToggle:hover .botLab{flex-direction:row;align-items:baseline;gap:6px}
#botToggle:hover .botLab b{writing-mode:horizontal-tb;letter-spacing:.8px;font-size:12px;color:#1f3a8a}
#botToggle:hover .botLab em{display:block}
#botToggle .botPing{position:absolute;right:6px;top:8px;width:7px;height:7px;border-radius:50%;
  background:#f6a723;border:1.5px solid #fff;animation:botPing 2.4s infinite}
#botToggle.seen .botPing{display:none}
#botToggle.on{width:116px;background:#fff;box-shadow:-8px 12px 32px rgba(24,48,92,.18)}
#botToggle.on .botLab{flex-direction:row;align-items:baseline;gap:6px}
#botToggle.on .botLab b{writing-mode:horizontal-tb;letter-spacing:.8px;font-size:12px;color:#1f3a8a}
#botToggle.on .botLab em{display:block}

#botPanel{right:50px}
#botHello{right:54px;left:auto;top:var(--botTop,44%);max-width:268px;border-radius:14px;
  padding:11px 13px;box-shadow:0 12px 34px rgba(16,30,60,.16)}
#botHello i{right:-7px;left:auto;top:22px;width:12px;height:12px;transform:rotate(45deg);
  border-right:1px solid #dfe8f7;border-top:1px solid #dfe8f7;border-left:none;border-bottom:none}

@media (max-width:640px){
  #botToggle{right:12px;top:auto;bottom:16px;width:46px;height:46px;border-radius:50%;
    border:1px solid #e6edf9;box-shadow:0 6px 20px rgba(24,48,92,.16)}
  #botToggle:hover{width:46px}
  #botToggle .botLab{display:none}
  #botToggle img{width:34px;height:34px;flex-basis:34px}
  #botPanel{right:8px}
  #botHello{right:12px;left:auto;top:auto;bottom:74px;max-width:calc(100vw - 24px)}
  #botHello i{right:16px;top:auto;bottom:-7px;transform:rotate(135deg)}
}

/* ================= 账号动态 ================= */
.actTbl td.nm{font-weight:600;color:#22304c}
.actTbl .roleTag{display:inline-block;font-size:10.5px;border-radius:6px;padding:1px 7px;
  background:#f1f4fa;color:#5a6b8c}
.actTbl .roleTag.m{background:#eef3fd;color:#1f3a8a}
.actTbl .onDot,.actTbl .offDot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px;vertical-align:1px}
.actTbl .onDot{background:#16a34a;box-shadow:0 0 0 3px #16a34a22}
.actTbl .offDot{background:#c9d2e0}

.actFeed{max-height:290px;overflow-y:auto;margin-top:2px}
.actFeedRow{display:flex;align-items:baseline;gap:8px;padding:6px 2px;border-bottom:1px solid #f4f6fb;font-size:11.5px}
.actFeedRow:last-child{border-bottom:none}
.afT{width:62px;flex:0 0 62px;color:#9aa5b8;font-size:10.5px}
.afNm{width:58px;flex:0 0 58px;color:#22304c;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.afK{flex:0 0 34px;text-align:center;border-radius:5px;font-size:10px;padding:0 4px;background:#f1f4fa;color:#5a6b8c}
.afK.kg{background:#eafaf0;color:#15803d}
.afK.kb{background:#fff4e5;color:#a05a1c}
.afX{flex:1;color:#7b8699;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 本部门岗位下钻 */
.rdJobs{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.rdJob{display:flex;align-items:center;gap:8px;border:1px solid #eef2f8;border-radius:9px;padding:8px 10px;
  cursor:pointer;background:#fff;transition:all .13s}
.rdJob:hover{border-color:#c9dbf8;background:#fafcff;transform:translateY(-1px)}
.rdJobNm{flex:1;font-size:12.5px;color:#22304c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rdJobN{font-size:10.5px;color:#9aa5b8}
.rdJobAvg{font-family:Consolas,monospace;font-size:12.5px;font-weight:700;color:#5a6b8c}
.rdJobAvg.g{color:#16a34a}
.rdJobAvg.b{color:#c0392b}
.rdJobGo{font-size:10.5px;color:#2f6fed;opacity:0;transition:opacity .13s}
.rdJob:hover .rdJobGo{opacity:1}

.rdOv{position:fixed;inset:0;background:rgba(12,22,44,.42);z-index:97;display:flex;align-items:center;justify-content:center;padding:20px}
.rdBox{width:520px;max-width:100%;max-height:calc(100vh - 60px);background:#fff;border-radius:14px;overflow:hidden;
  display:flex;flex-direction:column;box-shadow:0 24px 70px rgba(8,18,40,.3);animation:botIn .18s ease-out}
.rdBoxHead{background:linear-gradient(135deg,#1f3a8a,#2f6fed);color:#fff;padding:12px 16px;display:flex;align-items:baseline;gap:9px}
.rdBoxHead b{font-size:14.5px}
.rdBoxHead span{font-size:11px;opacity:.85;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rdBClose{margin-left:auto;background:none;border:none;color:#fff;font-size:20px;line-height:1;opacity:.85}
.rdBody{padding:12px 16px 16px;overflow-y:auto}
.rdBoxSum{font-size:11.5px;color:#8a93a6;padding-bottom:4px}
.rdBoxSum b{color:#1f3a8a;font-size:13px}

/* ================= 绩效雷达 · PDCA 跟进台 ================= */
.rdPdca{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 14px}
.rdStep{position:relative;display:flex;align-items:center;gap:9px;background:#fff;border:1px solid #e6ecf6;
  border-radius:11px;padding:9px 12px;cursor:pointer;font-family:inherit;text-align:left;transition:all .14s}
.rdStep:hover{border-color:#c9dbf8;background:#fafcff;transform:translateY(-1px)}
.rdStep b{width:24px;height:24px;flex:0 0 24px;border-radius:7px;background:#eef4ff;color:#2f6fed;
  display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:700}
.rdStep span{font-size:13px;font-weight:600;color:#22304c}
.rdStep em{font-style:normal;font-size:10.5px;color:#94a0b4;margin-left:auto;white-space:nowrap}
.rdStep i{position:absolute;top:-6px;right:-4px;min-width:17px;height:17px;border-radius:9px;background:#c0392b;
  color:#fff;font-style:normal;font-size:10px;line-height:17px;text-align:center;padding:0 5px;
  box-shadow:0 2px 6px rgba(192,57,43,.35)}
.rdStep.on{border-color:#1f3a8a;background:linear-gradient(135deg,#f4f8ff,#fff);box-shadow:0 4px 14px rgba(47,111,237,.12)}
.rdStep.on b{background:#1f3a8a;color:#fff}
.rdStep.on span{color:#1f3a8a}
.rdStep.on em{color:#5a6b8c}

.rdSteps{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:4px 0 2px}
.rdStepCard{border:1px solid #eef2f8;border-radius:10px;padding:10px 12px;background:#fbfcff}
.rdStepCard b{display:flex;align-items:center;gap:7px;font-size:12.5px;color:#22304c;margin-bottom:5px}
.rdStepCard b i{font-style:normal;width:18px;height:18px;border-radius:50%;background:#2f6fed;color:#fff;
  font-size:10.5px;line-height:18px;text-align:center;font-weight:700}
.rdStepCard span{font-size:11.5px;color:#7b8699;line-height:1.7;display:block}

.rdCta{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}
.dashNext .dnRows{display:flex;flex-direction:column;gap:7px;margin:2px 0 4px}
.dnRow{display:flex;align-items:center;gap:9px;font-size:12px;color:#5a6577;line-height:1.6}
.dnRow b{width:22px;height:22px;flex:0 0 22px;border-radius:6px;background:#eef4ff;color:#2f6fed;
  display:flex;align-items:center;justify-content:center;font-size:11.5px}
.dnRow em{font-style:normal;color:#22304c;font-weight:600;margin-right:6px}

/* 待面谈清单 */
.rdTodo{display:flex;flex-direction:column;gap:6px;margin:2px 0}
.rdTodoRow{display:flex;align-items:center;gap:10px;border:1px solid #eef2f8;border-radius:9px;
  padding:7px 10px;background:#fff;transition:all .13s}
.rdTodoRow:hover{border-color:#f6d5d5;background:#fffafa}
.rdTodoNm{font-size:12.5px;font-weight:600;color:#22304c;cursor:pointer;display:flex;align-items:baseline;gap:7px}
.rdTodoNm em{font-style:normal;font-size:10.5px;font-weight:400;color:#9aa5b8}
.rdTodoNm:hover{color:#2f6fed}
.rdTodoTag{font-size:10.5px;border-radius:8px;padding:1px 7px;background:#eef4ff;color:#2f6fed}
.rdTodoTag.y{background:#fff4e5;color:#a05a1c}
.rdTodoTag.b{background:#fdeaea;color:#c0392b}
.rdTodoV{font-family:Consolas,monospace;font-size:12px;color:#5a6b8c;min-width:58px}
.rdTodoRow .btn{margin-left:auto}

/* 面谈台账 */
.coachTbl{width:100%;border-collapse:collapse;font-size:11.5px}
.coachTbl th{position:sticky;top:0;background:#f7f9fd;color:#5a6b8c;font-weight:600;text-align:left;
  padding:7px 8px;border-bottom:1px solid #e6ecf6;white-space:nowrap;z-index:1}
.coachTbl td{padding:7px 8px;border-bottom:1px solid #f2f5fa;color:#3d4a63;vertical-align:top}
.coachTbl tr:hover td{background:#fafcff}
.coachTbl td.nm{font-weight:600;color:#22304c;white-space:nowrap}
.coachDept{display:block;font-style:normal;font-size:10px;font-weight:400;color:#9aa5b8;margin-top:2px}
.coachCause{color:#7b8699;max-width:120px}
.coachAct{max-width:280px;line-height:1.6}
.coachType{font-size:10.5px;border-radius:8px;padding:1px 7px;white-space:nowrap}
.coachType.t1{background:#fdeaea;color:#c0392b}
.coachType.t2{background:#fff4e5;color:#a05a1c}
.coachType.t3{background:#e9f8ee;color:#16a34a}
.stTag{font-size:10.5px;border-radius:8px;padding:1px 7px;white-space:nowrap}
.stTag.open{background:#fff4e5;color:#a05a1c}
.stTag.doing{background:#eef4ff;color:#2f6fed}
.stTag.done{background:#e9f8ee;color:#16a34a}
.coachOps{white-space:nowrap}
.coachOps button{border:1px solid #dfe6f1;background:#fff;color:#2f6fed;border-radius:6px;
  font-size:10.5px;padding:2px 7px;margin-right:4px;cursor:pointer;font-family:inherit}
.coachOps button:hover{background:#f4f8ff;border-color:#c9dbf8}
.coachOps button.danger{color:#c0392b}
.coachOps button.danger:hover{background:#fdeaea;border-color:#f6d5d5}

/* 面谈表单 */
.coachBox{width:580px}
.cfGrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cfGrid label{display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:#7b8699}
.cfGrid label.wide{grid-column:1/-1}
.cfGrid input,.cfGrid select,.cfGrid textarea{font-family:inherit;font-size:12.5px;color:#22304c;
  border:1px solid #dfe6f1;border-radius:8px;padding:7px 9px;background:#fff;outline:none;transition:all .13s}
.cfGrid input:focus,.cfGrid select:focus,.cfGrid textarea:focus{border-color:#2f6fed;box-shadow:0 0 0 3px rgba(47,111,237,.1)}
.cfGrid textarea{resize:vertical;line-height:1.6}
.cfFoot{display:flex;align-items:center;gap:8px;margin-top:14px;padding-top:12px;border-top:1px solid #f2f5fa}
.cfTip{font-size:11px;color:#9aa5b8;margin-left:auto}

@media(max-width:900px){
  .rdPdca{grid-template-columns:repeat(2,1fr)}
  .rdStep em{display:none}
  .rdSteps{grid-template-columns:1fr}
  .cfGrid{grid-template-columns:1fr}
}

/* 走势图限宽：雷达页卡片是全宽，不限宽会把图拉得过高 */
.rdChart{max-width:780px}
/* 待面谈清单：两列排，行高压紧 */
.rdTodo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.rdTodoRow{padding:5px 9px}
.rdTodoRow .btn{padding:2px 9px;font-size:11px}
.rdTodoNm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rdTodoV{min-width:52px;text-align:right}
/* 白底卡片上的主按钮：.btn 默认是顶栏用的浅色反白，这里要改成实心 */
.rdCta .btn:not(.ghost),.cfFoot .btn:not(.ghost){background:#1f3a8a;border-color:#1f3a8a;color:#fff}
.rdCta .btn:not(.ghost):hover,.cfFoot .btn:not(.ghost):hover{background:#2f6fed;border-color:#2f6fed}
@media(max-width:900px){ .rdTodo{grid-template-columns:1fr} }

/* ================= 人才盘点 · 十二宫格 + 两组跟进表 ================= */
.talTop{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.talTitle{font-size:15px;font-weight:700;color:#1f3a8a;display:flex;align-items:baseline;gap:9px}
.talTitle span{font-size:11.5px;font-weight:400;color:#8a93a6}
.talTools{margin-left:auto;display:flex;align-items:center;gap:7px}
.talSel{font-family:inherit;font-size:12px;color:#22304c;border:1px solid #dfe6f1;border-radius:8px;
  padding:5px 8px;background:#fff;outline:none;max-width:180px}
.talSel:focus{border-color:#2f6fed;box-shadow:0 0 0 3px rgba(47,111,237,.1)}
.talMeta{font-size:11.5px;color:#8a93a6;margin:-2px 0 12px}

.talKpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.talKpi{background:#fff;border:1px solid #e8edf6;border-radius:12px;padding:12px 14px;position:relative;overflow:hidden}
.talKpi::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:#2f6fed}
.talKpi.w::before{background:#c0392b}
.talKpi.g::before{background:#16a34a}
.talKpi .lab{font-size:11.5px;color:#7b8699}
.talKpi .val{font-size:22px;font-weight:700;color:#1f3a8a;line-height:1.35;font-family:Consolas,monospace}
.talKpi .val small{font-size:11px;font-weight:400;color:#8a93a6;margin-left:2px}
.talKpi .foot{font-size:10.5px;color:#9aa5b8;line-height:1.5}

/* 十二宫格 */
.talGridCard h2{margin-bottom:10px}
.talGrid{display:grid;grid-template-columns:68px repeat(4,minmax(0,1fr));gap:7px}
.talYLab{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  font-size:11px;color:#5a6b8c;line-height:1.35;background:#f4f7fc;border-radius:9px;padding:6px 2px}
.talYLab em{font-style:normal;font-size:10px;color:#9aa5b8}
.talCell{background:#fbfcff;border:1px solid #eef2f8;border-radius:10px;padding:8px 9px;min-height:118px;
  display:flex;flex-direction:column;gap:4px;transition:all .14s}
.talCell:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(31,58,138,.08)}
.talCell.empty{opacity:.55}
.talCell.tc1{background:#fff6f5;border-color:#f6d3ce}
.talCell.tc2{background:#fffaf1;border-color:#f3e2c2}
.talCell.tc3{background:#f4fbf7;border-color:#cfe9da}
.talCell.tc4{background:#f9f7ff;border-color:#ddd4f7}
.tcHead{display:flex;align-items:center;gap:6px}
.tcHead b{width:20px;height:20px;flex:0 0 20px;border-radius:6px;font-size:11px;line-height:20px;text-align:center;
  color:#fff;background:#9aa5b8}
.tc1 .tcHead b{background:#c0392b}
.tc2 .tcHead b{background:#d08a2c}
.tc3 .tcHead b{background:#16a34a}
.tc4 .tcHead b{background:#6d28d9}
.tcHead em{font-style:normal;font-size:11.5px;font-weight:600;color:#22304c}
.tcN{margin-left:auto;font-size:11px;font-weight:700;color:#5a6b8c;background:#fff;border:1px solid #e6ecf6;
  border-radius:9px;padding:0 6px;line-height:16px}
.tcN.zero{color:#c8cfdc;background:transparent;border-color:#eef2f8;font-weight:600}
.tcDesc{font-size:10.5px;color:#7b8699;line-height:1.55}
.tcAct{font-size:10px;color:#9aa5b8;line-height:1.5;border-top:1px dashed #eef2f8;padding-top:4px}
.tcNames{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px;max-height:132px;overflow:auto}
.tcNm{display:inline-flex;align-items:baseline;gap:3px;font-size:11px;color:#22304c;background:#fff;
  border:1px solid #e6ecf6;border-radius:7px;padding:1px 6px;cursor:pointer;white-space:nowrap}
.tcNm em{font-style:normal;font-size:9px;color:#a6afc0}
.tcNm:hover{border-color:#2f6fed;color:#2f6fed}
.tcNone{font-size:10.5px;color:#c3cad8;margin-top:auto}
.talXAxis{display:grid;grid-template-columns:68px repeat(4,minmax(0,1fr));gap:7px;margin-top:6px}
.talXAxis span{font-size:11px;color:#5a6b8c;text-align:center;font-weight:600}
.talAxisName{text-align:center;font-size:10.5px;color:#9aa5b8;margin-top:2px}
.talNote{margin-top:10px;font-size:11.5px;color:#a05a1c;background:#fff8ec;border:1px solid #f3e2c2;
  border-radius:9px;padding:8px 10px;line-height:1.7}
.talNoteGo{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
.talNoteGo .btn{margin-left:auto}

/* 跟进表 */
.talSum{font-size:11.5px;color:#7b8699;margin:-4px 0 9px}
.talSum b{color:#1f3a8a;font-size:13px}
.talTblWrap{overflow:auto;max-height:none;border:1px solid #f2f5fa;border-radius:10px}
.talTbl th,.talTbl td{padding:7px 8px}
.talTbl .nm{min-width:96px}
.talNm{font-weight:600;color:#22304c;cursor:pointer}
.talNm:hover{color:#2f6fed;text-decoration:underline}
.talMiss{display:inline-block;font-style:normal;font-size:9.5px;color:#c0392b;background:#fdeaea;
  border-radius:6px;padding:0 5px;margin-left:5px}
.talDate,.talSen{white-space:nowrap;color:#5a6b8c;font-size:11px}
.talSc{text-align:right;font-family:Consolas,monospace;font-size:12px}
.talNa{color:#c3cad8}
.talBoxSel{font-family:inherit;font-size:11px;border:1px solid #dfe6f1;border-radius:7px;padding:2px 4px;
  background:#fff;color:#22304c;outline:none;max-width:120px}
.talBoxSel:focus{border-color:#2f6fed}
.talGuess{display:inline-block;font-style:normal;font-size:9.5px;color:#a05a1c;background:#fff4e5;
  border-radius:6px;padding:0 5px;margin-left:4px}
.talDue{font-size:10px;color:#9aa5b8;margin-top:3px}
.talDue.late{color:#c0392b;font-weight:600}
.talActCell{max-width:300px;line-height:1.65;color:#3d4a63}
.talNote2{font-size:10.5px;color:#9aa5b8;margin-top:2px}
.talDlg{width:600px}
.talFoot .rdSteps{margin-top:8px}

@media(max-width:1100px){
  .talKpis{grid-template-columns:repeat(2,1fr)}
  .talGrid,.talXAxis{grid-template-columns:56px repeat(4,minmax(0,1fr))}
  .tcAct{display:none}
}
@media(max-width:760px){
  .talGrid,.talXAxis{grid-template-columns:1fr;}
  .talYLab{display:none}
  .talGrid{grid-template-columns:1fr}
  .talXAxis{display:none}
}

/* 待改进三维度 */
.rdDimBar{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 8px}
.rdDimX{font-size:10.5px;border-radius:8px;padding:2px 8px;border:1px solid transparent;white-space:nowrap}
.rdDimX.d1{background:#fdeaea;color:#c0392b;border-color:#f6d5d5}
.rdDimX.d2{background:#fff4e5;color:#a05a1c;border-color:#f3e2c2}
.rdDimX.d3{background:#eef4ff;color:#2f6fed;border-color:#d9e5fb}
.rdSubT{display:flex;align-items:center;gap:7px;font-size:11.5px;color:#5a6b8c;font-weight:600;margin:9px 0 4px}
.rdSubT i{font-style:normal;min-width:17px;height:17px;border-radius:9px;font-size:10px;line-height:17px;
  text-align:center;padding:0 5px;background:#eef4ff;color:#2f6fed;font-weight:700}
.rdSubT.d1 i{background:#fdeaea;color:#c0392b}
.rdSubT.d2 i{background:#fff4e5;color:#a05a1c}
.rdSubT.d3 i{background:#eef4ff;color:#2f6fed}
.rdDimTag{font-size:9.5px;border-radius:7px;padding:0 6px;background:#fdeaea;color:#c0392b;margin-left:6px}

/* 待面谈清单：两个分数列 + 标签 + 按钮，改成一列网格，避免挤在一起 */
.rdTodo{display:flex;flex-direction:column;gap:6px}
.rdTodoRow{display:grid;grid-template-columns:minmax(130px,1.3fr) 96px 88px 88px 84px;align-items:center;gap:8px}
.rdTodoNm{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rdTodoV{text-align:right;white-space:nowrap;font-size:11.5px}
.rdTodoRow .btn{margin-left:0;justify-self:end}
@media(max-width:900px){
  .rdTodoRow{grid-template-columns:1fr auto auto;row-gap:4px}
  .rdTodoV{display:none}
}

/* C 阶段：不在详细名单里的档位，只给数字提示 */
.rdMore{margin-top:10px;font-size:11.5px;color:#8a93a6;line-height:1.75;background:#f7f9fd;
  border:1px dashed #e2e9f4;border-radius:9px;padding:8px 10px}
.rdMore b{color:#5a6b8c}
.rdTodoRow .rdTodoTag{justify-self:start}

/* ================= 趋势卡组（总览 / 雷达共用） ================= */
.rdSpark{width:112px;height:26px;display:block}
.rdChg{font-family:Consolas,monospace;font-size:11.5px;font-weight:700}
.rdChg.up{color:#16a34a}
.rdChg.down{color:#c0392b}
.rdTrendTbl td{padding:5px 8px;vertical-align:middle}
.rdTrendTbl .num{text-align:right;white-space:nowrap}
.rdTrendTbl tr.talLink{cursor:pointer}
.rdTrendTbl tr.talLink:hover td{background:#f7faff}
.rdTblWrap{overflow:auto;max-height:620px;border:1px solid #f2f5fa;border-radius:10px}
.rdTrendCol{display:flex;flex-direction:column;gap:5px;min-width:0}
.rdTrendRow{display:grid;grid-template-columns:minmax(96px,1fr) 112px 46px 54px;align-items:center;gap:8px;
  padding:4px 8px;border:1px solid #eef2f8;border-radius:8px;background:#fff}
.rdTrendRow:hover{border-color:#d9e5fb;background:#fafcff}
.rdTrendNm{font-size:11.5px;color:#22304c;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rdTrendNm em{font-style:normal;font-weight:400;color:#9aa5b8;font-size:10px;margin-left:5px}
.rdTrendV{font-family:Consolas,monospace;font-size:11.5px;color:#5a6b8c;text-align:right}
.rdTrendRow[data-emp]{cursor:pointer}
@media(max-width:1100px){
  .rdTrendRow{grid-template-columns:minmax(80px,1fr) 90px 44px 50px}
  .rdSpark{width:90px}
}

/* 十二宫格：大格子的 +N 与中间格折叠名单 */
.tcMore{display:inline-block;font-size:10.5px;color:#5a6b8c;background:#eef3fb;border:1px dashed #cfdcf2;
  border-radius:9px;padding:1px 6px;cursor:help}
.talMid{padding:0}
.talMid>summary{cursor:pointer;list-style:none;padding:12px 14px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.talMid>summary::-webkit-details-marker{display:none}
.talMid>summary:before{content:'▸';color:#8a93a6;font-size:11px;margin-right:2px}
.talMid[open]>summary:before{content:'▾'}
.talMid>summary b{font-size:12.5px;color:#22304c}
.talMid>summary .tip{font-size:11px;color:#8a93a6;font-weight:400}
.talMid[open]>summary{border-bottom:1px solid #f2f5fa}
.talMid .talTblWrap{margin:10px 14px 14px}

/* 指标明细可点 + 岗位按中心分组 */
.rdIndClick{cursor:pointer;border-radius:8px;padding:6px 8px 7px;margin:0 -8px}
.rdIndClick:hover{background:#f7faff;border-bottom-color:transparent}
.rdIndGo{margin-left:7px;color:#2f6fed;background:#eef4ff;border-radius:6px;padding:1px 6px;font-weight:600}
.rdIndClick:hover .rdIndGo{background:#2f6fed;color:#fff}
.rdJobGrps{display:flex;flex-direction:column;gap:10px}
.rdJobGrp{border:1px dashed #e6ecf6;border-radius:10px;padding:8px 10px 10px;background:#fcfdff}
.rdJobGrpNm{font-size:11.5px;font-weight:700;color:#1f3a8a;margin-bottom:7px;display:flex;align-items:baseline;gap:7px}
.rdJobGrpNm em{font-style:normal;font-weight:400;font-size:10.5px;color:#9aa5b8}
.rdIndDlg{width:720px}
.rdIndDlg .num,.rdIndTbl th.num{text-align:right;white-space:nowrap}
.rdIndRate{font-family:Consolas,monospace;font-size:11.5px}
.rdIndRate.hi{color:#16a34a}
.rdIndRate.lo{color:#c0392b}
.rdIndRate.mid{color:#3d4a63}

/* 人才地图全名单：红绿标注 + 组筛选 */
.talTag{display:inline-block;font-style:normal;font-size:9.5px;font-weight:700;width:16px;height:16px;line-height:16px;
  text-align:center;border-radius:8px;margin-right:5px;vertical-align:middle}
.talTag.r{color:#fff;background:#c0392b}
.talTag.g{color:#fff;background:#16a34a}
.talTag.m{color:#5a6b8c;background:#eef1f7;border:1px solid #dfe5f0;line-height:14px}
.talAllTbl tr.tgLow td:first-child{box-shadow:inset 3px 0 0 #e8b3ad}
.talAllTbl tr.tgHigh td:first-child{box-shadow:inset 3px 0 0 #a9dcc0}
.talAllSum .talTag{margin-right:3px}
.talFlts{display:flex;gap:7px;margin:2px 0 10px;flex-wrap:wrap}
.talFlts button{font-size:11.5px;color:#44506a;background:#f4f7fc;border:1px solid #e2e9f4;border-radius:14px;
  padding:3px 12px;cursor:pointer}
.talFlts button:hover{border-color:#c3d4f0}
.talFlts button.on{color:#fff;background:#2f6fed;border-color:#2f6fed;font-weight:600}
.talAllTbl tr.tgOff td{opacity:.62}
.talAllTbl tr.tgOff .talNm{color:#6b7688}

/* 员工档案 · 绩效趋势页签 */
.etTop{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.etWhere{font-size:12.5px;color:#44506a;font-weight:600}
.etTools{display:flex;gap:8px}
.etChips{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}
.etChip{background:#fff;border:1px solid #e8eef7;border-radius:10px;padding:10px 12px}
.etChip .lab{font-size:11px;color:#8a93a6;margin-bottom:3px}
.etChip .val{font-size:20px;font-weight:700;color:#22304c;line-height:1.2}
.etChip .foot{font-size:10.5px;color:#a6afc0;margin-top:3px}
.etCard{margin-bottom:12px}
.etTools2{display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:12px;color:#5a6577}
.etNote{font-size:11.5px;color:#8a93a6;line-height:1.9;margin-top:10px}
.etTbl td.nm{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:900px){.etChips{grid-template-columns:repeat(2,1fr)}}
.etTbl .rdSpark{width:150px;height:30px}

/* 趋势页：对比线复选 */
.etCmps{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:2px 0 6px;font-size:11.5px;color:#5a6577}
.etCmpLab{color:#8a93a6}
.etCmp{display:inline-flex;align-items:center;gap:4px;cursor:pointer;border:1px solid #e6ecf6;border-radius:9px;padding:2px 9px;background:#fff;color:#5a6577;user-select:none}
.etCmp.on{border-color:#2f6fed;color:#1f3a8a;background:#f2f7ff}
.etCmp.off{opacity:.45;cursor:default}
.etCmp input{margin:0;accent-color:#2f6fed}
.etCmp i{display:inline-block;width:14px;height:3px;border-radius:2px}

/* ---------- 全局悬浮提示（接管 title） ---------- */
#gTip{position:fixed;z-index:9999;max-width:340px;padding:7px 11px;border-radius:9px;
  background:#23304a;color:#f2f6ff;font-size:12px;line-height:1.65;white-space:pre-wrap;
  border:1px solid rgba(255,255,255,.14);box-shadow:0 8px 24px rgba(20,40,80,.30);
  opacity:0;pointer-events:none;transition:opacity .14s ease}
#gTip.on{opacity:1}
#gTip.gTipBig{max-width:420px;font-size:12.5px}

/* ---------- EHR 导入中心 ---------- */
.ehrPanel{width:640px;max-width:96vw;max-height:92vh;display:flex;flex-direction:column}
.ehrPanel .expBody{overflow:auto}
.ehrScope{margin:6px 0 2px}
.ehrScope .talSel{min-width:280px}
.ehrNm{border:1px solid #e2e8f2;border-radius:9px;padding:6px 10px;font-size:12.5px;width:280px;outline:none}
.ehrNm:focus{border-color:#2f6fed}
.ehrPpl{columns:2;column-gap:18px}
.ehrPpl li{break-inside:avoid}
.ehrDup{font-size:10.5px;color:#a05a1c;background:#fff8ec;border:1px solid #f3e2c2;border-radius:8px;padding:0 6px}
.ehrAgain{font-size:10.5px;color:#5a6b8c;background:#f2f5fb;border:1px solid #e2e8f2;border-radius:8px;padding:0 6px;cursor:help}
.ehrWarn{margin-top:8px;font-size:11.5px;color:#a05a1c;line-height:1.7}
.ehrDone{margin-top:10px;border:1px solid #d7ecd9;background:#f4fbf5;border-radius:11px;padding:10px 12px;font-size:12.5px;line-height:1.8}
.ehrDone .mono{font-size:11.5px;color:#3c5a3f}
.ehrHow{margin-top:9px;border-top:1px dashed #cfe5d2;padding-top:8px}
.ehrHowTxt{margin:6px 0;background:#fff;border:1px solid #e2e8f2;border-radius:9px;padding:8px 10px;font-size:12px;line-height:1.8;color:#44506a}
.ehrRecsWrap{border-top:1px solid #eef1f6;padding:10px 16px 14px;background:#fbfcfe;border-radius:0 0 16px 16px}
.ehrRecsHead{font-size:12px;font-weight:700;color:#3b475c;margin-bottom:8px}
.ehrRecLoading{font-size:12px;color:#8a93a6;padding:6px 0}
.ehrRecTbl{width:100%;border-collapse:collapse;font-size:11.5px}
.ehrRecTbl th{text-align:left;color:#8a93a6;font-weight:600;padding:4px 8px;border-bottom:1px solid #e6ecf6;white-space:nowrap}
.ehrRecTbl td{padding:6px 8px;border-bottom:1px solid #f2f5fa;vertical-align:top}
.ehrFn{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:help}
.ehrSt{display:inline-block;font-size:10.5px;font-weight:700;border-radius:8px;padding:1px 8px;white-space:nowrap}
.ehrSt.st-amber{color:#a05a1c;background:#fff8ec;border:1px solid #f3e2c2}
.ehrSt.st-blue{color:#1f3a8a;background:#f2f7ff;border:1px solid #cfe0fb}
.ehrSt.st-green{color:#186a3b;background:#f0faf2;border:1px solid #cdead4}
#ehrBox{position:fixed;inset:0;background:rgba(12,22,44,.48);z-index:99;display:flex;align-items:center;justify-content:center;padding:20px}
.ehrPanel{width:720px}
.ehrRecTbl td:first-child{white-space:nowrap}
.ehrFn{max-width:190px}
.ehrRecTbl th:nth-child(3){white-space:nowrap}
.ehrDup,.ehrAgain{white-space:nowrap;display:inline-block}
.ehrRecTbl td:nth-child(2){white-space:nowrap}

/* ---------- 顶部整块冻结（标题栏 + 导航条一起吸顶） ---------- */
#hd{position:sticky;top:0;z-index:40;background:#fff;
  box-shadow:0 1px 0 rgba(16,30,60,.06);transition:box-shadow .18s ease}
#hd.stuck{box-shadow:0 6px 18px rgba(16,30,60,.16)}
#hd #topbar{position:static;z-index:auto}
#hd #tabs{position:static;z-index:auto}
#hd #tabs::-webkit-scrollbar{height:4px}
#hd #tabs::-webkit-scrollbar-thumb{background:#cbd5e6;border-radius:3px}
/* 页内吸顶元素按实际头部高度让位 */
.plLeft{top:calc(var(--hdh,110px) + 12px)!important;max-height:calc(100vh - var(--hdh,110px) - 34px)}

/* 滚过一屏后自动收紧成一行（滚动位置由脚本补偿，画面不跳） */
#hd.mini #topbar{padding:7px 22px;gap:12px;flex-wrap:nowrap}
#hd.mini #topbar h1{font-size:16px;letter-spacing:.3px}
#hd.mini #topbar h1 .brandIco{width:22px;height:22px;border-radius:6px}
#hd.mini #topbar .sub{font-size:11.5px;margin-top:1px;max-width:360px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
#hd.mini #topbar>div:first-child{min-width:0;flex:0 1 auto}
#hd.mini #topbar .btns{flex-wrap:nowrap;flex:0 0 auto}
#hd.mini #topbar .btn{padding:5px 10px;font-size:12px}
#hd.mini #topbar .authChip .btn{padding:4px 8px;font-size:11.5px}
#hd.mini #tabs{height:38px}
#hd.mini #tabs .tab{padding:10px 10px 9px;font-size:12.5px}

/* ---------- 数字穿透（点数字看背后明细） ---------- */
.drNu{cursor:pointer;border-bottom:1px dashed rgba(47,111,237,.45);transition:color .12s,border-color .12s;
  text-underline-offset:2px}
.drNu:hover{color:#2f6fed;border-bottom-color:#2f6fed}
.kpi .drNu{border-bottom-style:dotted}
.kpi:hover .drNu{color:#2f6fed}
.drDlg{width:880px;max-width:96vw}
.drDlg .rdBody{padding:10px 14px 14px}
.drTools{display:flex;align-items:center;gap:10px;margin:6px 0 8px}
.drFind{flex:1;max-width:300px;border:1px solid #e2e8f2;border-radius:9px;padding:6px 10px;font-size:12.5px;outline:none}
.drFind:focus{border-color:#2f6fed;box-shadow:0 0 0 3px rgba(47,111,237,.10)}
.drCnt{font-size:11.5px;color:#8a93a6}
.drCnt b{color:#1f3a8a}
.drWrap{max-height:58vh;overflow:auto}
.drTbl td{font-size:12px;padding:6px 8px}
.drTbl th{font-size:11.5px}
.drNm{color:#2f6fed;cursor:pointer}
.drNm:hover{text-decoration:underline}
.drG{color:#16a34a}
.drW{color:#d97706}
.drCellWarn{color:#c0392b}
.drEmpty{text-align:center;color:#8a93a6;padding:22px 0;font-size:12.5px}

/* KPI 大数字别加下划线，悬停才提示可点 */
.kpi .drNu{border-bottom:none}
.kpi .drNu:hover{border-bottom:1px dashed #2f6fed}

/* ================= 指标库（年份 × 周期 × 中心/部门/员工） ================= */
.libTop{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border-radius:10px;
  box-shadow:0 1px 4px rgba(16,30,60,.08);padding:10px 14px;margin-bottom:12px;
  position:sticky;top:calc(var(--hdh,110px) + 8px);z-index:6}
.libYrs{display:flex;gap:8px}
.libY{display:flex;flex-direction:column;gap:1px;border:1px solid #dfe4ec;background:#fff;border-radius:9px;
  padding:5px 12px;text-align:left;line-height:1.2;min-width:112px;transition:border-color .15s,box-shadow .15s}
.libY b{font-size:14px;color:#1f3a8a}
.libY i{font-size:10.5px;color:#8a93a6;font-style:normal}
.libY span{font-size:11px;color:#5a6577}
.libY:hover{border-color:#b9cdf5}
.libY.on{background:#eef3fe;border-color:#2f6fed;box-shadow:0 0 0 2px rgba(47,111,237,.12)}
.libCyc{display:flex;border:1px solid #e2e8f2;border-radius:8px;overflow:hidden;background:#fff}
.libCyc button{border:0;background:#fff;padding:6px 13px;font-size:12.5px;color:#5a6577}
.libCyc button+button{border-left:1px solid #eef1f7}
.libCyc button:hover{background:#f6f9ff;color:#2f6fed}
.libCyc button.on{background:#1f3a8a;color:#fff}
.libQ{width:210px}
.libActs{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.libSrc{font-size:11.5px;color:#8a93a6;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.libMain{display:grid;grid-template-columns:330px minmax(0,1fr);gap:12px;align-items:start}
.libTree{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(16,30,60,.08);padding:8px;
  position:sticky;top:calc(var(--hdh,110px) + 82px);max-height:calc(100vh - var(--hdh,110px) - 100px);overflow:auto}
.libDet{background:#fff;border-radius:10px;box-shadow:0 1px 4px rgba(16,30,60,.08);padding:14px 16px 22px;min-height:420px;min-width:0}
.ldEmpty{color:#8a93a6;text-align:center;padding:60px 10px;font-size:13px}
.ltC{margin-bottom:2px}
.ltCH{display:flex;align-items:center;gap:6px;padding:7px 9px;border-radius:7px;cursor:pointer;
  font-size:12.5px;color:#1f3a8a;font-weight:600;background:#f5f7fb;user-select:none}
.ltCH:hover{background:#eef3fe}
.ltCH i{font-style:normal;color:#8a93a6;font-size:10px;width:10px;flex:0 0 auto}
.ltCH span{margin-left:auto;font-weight:400;font-size:11px;color:#8a93a6}
.ltCs{padding:2px 0 4px 6px}
.ltD{margin-top:1px}
.ltDH{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:6px;cursor:pointer;
  font-size:12.5px;color:#26303e;user-select:none}
.ltDH:hover{background:#f5f7fb}
.ltDH.on{color:#1f3a8a}
.ltDH i{font-style:normal;color:#a6afc0;font-size:10px;width:10px;flex:0 0 auto}
.ltDH b{font-weight:600}
.ltDH span{color:#a6afc0;font-size:10.5px}
.ltDH em{margin-left:auto;font-style:normal;font-size:10px;color:#2f6fed;background:#eef3fe;border-radius:8px;padding:0 6px;white-space:nowrap}
.ltEs{padding:2px 0 6px 14px;border-left:1px dashed #e7ebf3;margin-left:9px}
.ltG{font-size:10px;color:#98a2b3;padding:5px 6px 2px;letter-spacing:.4px}
.ltG.head{color:#b8720f}
.ltE{display:flex;align-items:center;gap:5px;padding:4px 7px;border-radius:6px;cursor:pointer;font-size:12.5px;color:#26303e}
.ltE:hover{background:#f5f7fb}
.ltE.on{background:#eef3fe;color:#1f3a8a;font-weight:600}
.ltE b{font-weight:inherit}
.ltP{font-size:10.5px;color:#a6afc0;max-width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ltN{margin-left:auto;font-size:10.5px;color:#2f5bd8;background:#eef3fe;border-radius:8px;padding:0 5px}
.ltN.zero{color:#b7c0d0;background:#f4f6fa}
.ltHd{font-style:normal;font-size:9.5px;color:#b8720f;border:1px solid #f3d9ae;border-radius:3px;padding:0 3px;line-height:1.4}
.ltDot{width:5px;height:5px;border-radius:50%;background:#e2e7f0;flex:0 0 auto}
.ltDot.ed{background:#e08a1e}
.ltOk{font-style:normal;font-size:10px;color:#16a34a;font-weight:700;width:6px;flex:0 0 auto}
.ldTop{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;border-bottom:1px solid #eef1f7;padding-bottom:10px}
.ldNm{font-size:18px;font-weight:700;color:#1f3a8a;display:flex;align-items:center;gap:8px}
.ldHd{font-style:normal;font-size:11px;color:#b8720f;border:1px solid #f3d9ae;background:#fffaf0;
  border-radius:4px;padding:0 6px;font-weight:400}
.ldMeta{font-size:12px;color:#7a8699;margin-top:3px}
.ldState{display:flex;gap:6px;align-items:center;font-size:11.5px;padding-top:4px}
.ldOk{background:#e9f9ef;color:#12803c;border-radius:10px;padding:1px 9px}
.ldWait{background:#f4f6fa;color:#8a93a6;border-radius:10px;padding:1px 9px}
.ldEd{background:#fff5e6;color:#b8720f;border-radius:10px;padding:1px 9px;cursor:help}
.ldBtns{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ldRo{font-size:11.5px;color:#8a93a6}
#libSave{background:#1f3a8a;color:#fff;border-color:#1f3a8a}
#libSave:hover{background:#2f6fed;border-color:#2f6fed}
#libSave:disabled{opacity:.5;cursor:default;animation:none}
#libSave.hot{animation:libPulse 1.8s infinite}
@keyframes libPulse{0%,100%{box-shadow:0 0 0 3px rgba(31,58,138,.14)}50%{box-shadow:0 0 0 7px rgba(31,58,138,.06)}}
.ldSum{display:flex;gap:14px;align-items:center;font-size:12px;color:#5a6577;padding:9px 0;flex-wrap:wrap}
.ldSum b{color:#1f3a8a;font-size:13px}
.ldUpd{margin-left:auto;color:#a6afc0;font-size:11px}
.ldSec{margin-top:6px}
.ldSecH{display:flex;align-items:center;gap:10px;font-size:13px;color:#26303e;padding:7px 2px 6px}
.ldSecH b{color:#1f3a8a}
.ldSecH span{font-size:11.5px;color:#8a93a6}
.ldSecH .btn{margin-left:auto}
.ldWarn{font-style:normal;color:#c0392b;margin-left:6px}
.ldTbl{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;table-layout:fixed;margin-bottom:4px}
.ldTbl thead th{position:static;background:#f7f9fc;padding:6px 6px;font-size:11.5px;color:#5a6577;font-weight:600;white-space:nowrap}
.ldTbl td{padding:4px 6px;border-top:1px solid #f1f4f9;vertical-align:top;overflow:hidden}
.liNo{color:#b7c0d0;font-size:11px;padding-top:10px}
.liIn{width:100%;border:1px solid #e4e9f2;border-radius:5px;padding:4px 6px;font-size:12px;background:#fff}
.liIn:focus{border-color:#2f6fed;box-shadow:0 0 0 2px rgba(47,111,237,.10)}
.liW{text-align:right}
.liTa{width:100%;border:1px solid #e4e9f2;border-radius:5px;padding:4px 6px;font-size:11.5px;line-height:1.45;
  resize:vertical;min-height:56px;color:#4a5568;background:#fff}
.liTa:focus{border-color:#2f6fed;box-shadow:0 0 0 2px rgba(47,111,237,.10)}
.liInd{font-weight:600}
.liLong{color:#5a6577;font-size:11.5px;line-height:1.55;white-space:pre-wrap;max-height:120px;overflow:auto}
.ldNone{color:#a6afc0;font-size:12px;padding:8px 4px 14px}
.ldNew{border:1px dashed #cfd9ea;border-radius:10px;padding:26px 20px;text-align:center;color:#5a6577;background:#fbfcff;margin-top:12px}
.ldNew b{display:block;font-size:15px;color:#1f3a8a;margin-bottom:8px}
.ldNew p{font-size:12.5px;line-height:1.75;color:#7a8699}
.ldNewBtns{display:flex;gap:10px;justify-content:center;margin-top:14px;flex-wrap:wrap}
.accRoleTip{font-size:11.5px;color:#7a8699;line-height:1.6;margin-top:6px}
.accTbl .roleTag{display:inline-block;font-size:10.5px;border-radius:6px;padding:1px 7px;
  background:#eef1f6;color:#5a6577;white-space:nowrap}
.accTbl .roleTag.hr{background:#fff3e0;color:#b8720f}
@media(max-width:1180px){
  .libMain{grid-template-columns:1fr}
  .libTree{position:static;max-height:340px}
  .libTop{position:static}
}

/* 指标库：窄屏时表格自身横向滚动，不把输入框挤扁 */
#libBody2{overflow-x:auto;overflow-y:visible}
.ldTbl{min-width:980px}
.ldTbl td .liIn{min-width:0}
@media(max-width:1400px){.libMain{grid-template-columns:300px minmax(0,1fr)}}

/* 指标库：一键同步按钮 + 同步状态条 + 同步记录 */
.btn.sync{background:linear-gradient(180deg,#fff7ec,#ffefd9);color:#b8720f;border-color:#f0c98a;font-weight:600}
.btn.sync:hover{background:#ffe7c7}
.btn.sync:disabled{opacity:.6;cursor:default}
.libSyn{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:1px solid #e7ebf3;border-radius:8px;
  padding:7px 12px;margin:10px 0 2px;background:#fbfcff;font-size:12px;color:#5a6577}
.libSyn.open{border-color:#cfd9ea;background:#f7f9ff}
.libSynL{display:flex;align-items:center;gap:10px;flex-wrap:wrap;flex:1;min-width:0}
.libSynL b{color:#1f3a8a;font-size:12px}
.libSynL.none b{color:#b8720f}
.libSynL.none span{color:#8a93a6}
.libSynL .n{background:#fff;border:1px solid #e4e9f2;border-radius:12px;padding:1px 9px;color:#4a5568;font-size:11.5px}
.libSynList{border-top:1px dashed #dde5f2;margin-top:6px;padding-top:6px;width:100%}
.libSynRow{display:flex;align-items:center;gap:10px;padding:3px 0;font-size:11.5px;color:#7a8699;flex-wrap:wrap}
.libSynRow b{color:#26303e;font-weight:600}
.libSynRow em{font-style:normal;background:#eef2fb;color:#2f6fed;border-radius:5px;padding:0 6px}
.libSynRow .n{color:#9aa4b6}
.libSynRow.none{color:#a6afc0}

/* 修改记录弹窗 */
.libHisBox{width:760px;max-width:94vw}
.libHisBox .dlgMsg{max-height:60vh;overflow:auto;padding-right:4px}
.libHisTip{font-size:11.5px;color:#8a93a6;margin-bottom:8px}
.libHisNone{font-size:12.5px;color:#7a8699;line-height:1.8;padding:10px 2px}
.libHisTbl{width:100%;border-collapse:collapse;font-size:12px}
.libHisTbl th{background:#f5f7fb;color:#5a6577;font-weight:600;text-align:left;padding:6px 8px;
  border-bottom:1px solid #e7ebf3;position:static;white-space:nowrap}
.libHisTbl td{padding:6px 8px;border-bottom:1px solid #f1f4f9;vertical-align:top;line-height:1.5}
.libHisT{color:#8a93a6;font-size:11.5px;white-space:nowrap}
.libHisO{color:#9aa4b6;text-decoration:line-through;text-decoration-color:#d9b0b0}
.libHisN{color:#1f3a8a;font-weight:600}

/* 顶栏收紧（mini）时：组名收起，页签回到单行高度 */
#hd.mini .tabGrpName{display:none}
#hd.mini #tabs>.tabGrp+.tabGrp::before{top:9px;bottom:9px}
#hd.mini .tab{padding:9px 14px 8px}

/* 窄屏（≤1380）顶栏分组压缩：组间距与页签内边距收一档，保证 12 个页签一行放得下 */
@media (max-width:1380px){
  #tabs{padding:0 14px}
  .tabGrp{padding:0 9px}
  .tab{padding:7px 10px 9px}
  .tabGrpName{padding-left:10px}
  #hd.mini .tab{padding:9px 10px 8px}
}


/* 只读提示条：薪酬绩效主管 / 业务部门长在「定标表 / 目标设定 / 同岗标准 / 名册」上看到 */
.roBar{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;border:1px solid #f0dfc0;
  background:#fffaf0;color:#8a6a2f;border-radius:8px;padding:7px 12px;margin:0 0 10px;
  font-size:12px;line-height:1.65}
.roBar b{flex:0 0 auto;background:#f6c866;color:#5c3d05;border-radius:5px;padding:1px 8px;
  font-size:11px;letter-spacing:.5px;font-weight:700}
body.roPage #view [contenteditable="true"],body.roPage #view .plIn{cursor:not-allowed}
body.roPage #view [contenteditable="true"]:hover{background:#fbf7ee}

/* 账号管理里的三角色权限对照 */
.accPerm{margin:14px 0 4px;border:1px solid #e7ebf3;border-radius:8px;overflow:hidden}
.accPerm h4{margin:0;padding:8px 12px;background:#f7f9fd;border-bottom:1px solid #e7ebf3;
  font-size:12.5px;color:#3c4a5e;font-weight:600}
.permTbl{width:100%;border-collapse:collapse;font-size:12px}
.permTbl th{background:#fbfcff;color:#6a7688;font-weight:600;text-align:center;padding:6px 8px;
  border-bottom:1px solid #eef2f8;white-space:nowrap}
.permTbl th:first-child{text-align:left;width:46%}
.permTbl td{padding:6px 8px;border-bottom:1px solid #f3f6fb;color:#4a5568;text-align:center}
.permTbl td:first-child{text-align:left;color:#3c4a5e}
.permTbl tr:last-child td{border-bottom:0}
.permTbl td.y{color:#1f8a4c;font-weight:700}
.permTbl td.n{color:#a6afc0}
.permTbl td.p{color:#8a6a2f}
body.roPage select:disabled{color:#9aa4b6;background:#f8fafd;border-color:#e6ebf3;cursor:not-allowed}
body.roPage .bHint{display:none}

/* 账号管理弹窗：加了「角色」列与权限对照表后 430px 太窄，改成可滚动 + 不压缩子块 */
.pickBox.accBox{overflow:auto}
.pickBox.accBox.accBig{width:min(860px,94vw);max-width:860px}
.accBox>*{flex:0 0 auto}
.accBox .accTbl{table-layout:auto}
.accBox .accTbl th:nth-child(2),.accBox .accTbl td:nth-child(2){white-space:nowrap}
.accBox .accPerm{flex:0 0 auto}
.accTbl td .roleTag{white-space:nowrap;display:inline-block}

/* ===== 定标表「＋ 新增员工」 ===== */
.shBtn.addEmp{padding-right:12px;border-style:dashed;color:#7d8aa3;border-color:#cfdcef;background:#fbfdff}
.shBtn.addEmp:hover{color:#1f7a4c;border-color:#7fc7a2;background:#f4fcf7}
/* 手工新增的人：姓名后的「新增」小标 */
.npTag{display:inline-block;font-style:normal;font-size:9.5px;line-height:14px;padding:0 4px;border-radius:3px;
  margin-left:4px;vertical-align:1px;font-weight:600;white-space:nowrap;
  background:#eafaf0;color:#1f7a4c;border:1px solid #bde5cc}
/* 新增员工弹窗：字段带小标题 */
.dlgBox .dlgRow{margin-bottom:11px}
.dlgBox .dlgRow>b{display:block;font-size:11.5px;color:#5b6478;font-weight:600;margin-bottom:4px}
.dlgBox .dlgRow>.dlgIn{margin-bottom:0}
/* 刚加完的人：闪一下让人找到 */
.bidTbl tr.justAdd>td{animation:npFlash 1.6s ease-out 1}
@keyframes npFlash{0%{background:#dff3e6}100%{background:transparent}}
.bidTbl tr.bnone.justAdd>td{background:#f2fbf6}

/* ===== 权限设置弹窗（主账号） ===== */
.pickBox.pmBox{width:min(1040px,96vw);max-height:88vh;padding:18px 20px;overflow:auto}
.pmBox>*{flex:0 0 auto}
.pmSec{border-top:1px solid #eef1f7;padding:12px 0 4px}
.pmSec:first-of-type{border-top:0;padding-top:0}
.pmSec h4{font-size:13px;color:#1f2a44;margin-bottom:8px;font-weight:600}
.pmTip{font-weight:400;color:#8a93a6;font-size:11.5px;margin-left:6px}
.pmMode{display:flex;flex-direction:column;gap:6px}
.pmRd{font-size:12.5px;color:#3c4759;display:flex;align-items:center;gap:6px;cursor:pointer}
.pmRd input{accent-color:#2f6fed}
.pmTabs{display:flex;gap:6px;margin:10px 0 8px}
.pmTab{border:1px solid #dbe3ef;background:#fff;color:#5a6577;border-radius:6px;padding:4px 12px;font-size:12px}
.pmTab.on{background:#eef4ff;border-color:#9dbcf7;color:#1f3a8a;font-weight:600}
.pmQ{width:100%;margin-bottom:8px}
.pmList{max-height:228px;overflow:auto;border:1px solid #eef1f7;border-radius:8px;padding:8px;background:#fafcff}
.pmChks{display:flex;flex-wrap:wrap;gap:6px 8px}
.pmChk{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:#3c4759;background:#fff;
  border:1px solid #e6ebf4;border-radius:6px;padding:4px 8px;cursor:pointer}
.pmChk:hover{border-color:#bcd2f6}
.pmChk i{font-style:normal;color:#9aa3b5;font-size:10.5px}
.pmChk input{width:13px;height:13px;accent-color:#2f6fed;margin:0}
.pmGrp{margin-bottom:8px}
.pmGrpName{font-size:11px;color:#8a93a6;margin:2px 0 5px}
.pmGrpTitle{grid-column:1/-1;font-size:11px;color:#8a93a6;margin:8px 0 2px}
.pmRow{display:flex;align-items:center;gap:10px;padding:5px 0;border-bottom:1px dashed #f0f3f9}
.pmName{flex:1;font-size:12.5px}
.pmSeg{display:inline-flex;border:1px solid #dbe3ef;border-radius:6px;overflow:hidden}
.pmSeg button{border:0;background:#fff;padding:3px 12px;font-size:12px;color:#7a8496;border-left:1px solid #eef1f7}
.pmSeg button:first-child{border-left:0}
.pmSeg button.on{background:#2f6fed;color:#fff}
.pmGrid{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}
.pmEff{margin-top:8px;font-size:12px;color:#1f3a8a;background:#f2f7ff;border:1px solid #dbe8ff;border-radius:6px;padding:6px 10px}
.pmMore,.pmEmpty{font-size:11.5px;color:#9aa3b5;padding:6px 2px}
.pmNote{font-size:11.5px;color:#8a93a6;margin:10px 0}
.pmSpecial{margin-bottom:8px}
.accPermTip{font-size:12px;color:#5a6577;line-height:1.7;background:#f7f9fd;border-radius:6px;padding:8px 10px;margin-bottom:10px}
@media(max-width:820px){.pmGrid{grid-template-columns:1fr}}

/* ===== 外网访问弹窗 ===== */
.pickBox.netBox{width:min(580px,94vw)}
.netRow{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:12.5px;flex-wrap:wrap}
.netLb{color:#8a93a6;font-size:11.5px;min-width:38px}
.netRow b{font-weight:600;color:#1f2a44;word-break:break-all}
.netUrl{color:#1f7a4c !important}
.netWait{color:#e08a1e}
.netOff{color:#9aa3b5}
.netAct{display:flex;align-items:center;gap:12px;margin:12px 0 8px;flex-wrap:wrap}
.netAuto{background:#f7f9fd}
.netWarn{font-size:12px;color:#b4620f;background:#fff7e8;border:1px solid #f5dfb8;border-radius:6px;padding:6px 9px;margin-bottom:8px}
.netNote{font-size:11.5px;color:#6b7488;line-height:1.75;border-top:1px solid #eef1f7;padding-top:10px;margin-top:8px}
.netOk{font-size:12px;color:#186b45;background:#f0fbf5;border:1px solid #c6ecd7;border-radius:6px;padding:7px 10px;margin:8px 0}
.netFoot{font-size:11px;color:#98a1b3;margin-top:9px;text-align:right}
.authChip .btn.netCloud{background:#e8f2fe;color:#1d5fa8;border-color:#b9d6f7;font-weight:600}
.accTbl td:nth-child(3){min-width:148px;line-height:1.55;white-space:normal}
.accTbl td:nth-child(4){white-space:nowrap;color:#7a8496}
.authChip .btn.netOn{background:#fee2e2;color:#b91c1c;border-color:#fca5a5;font-weight:600}

/* ===== 数据体检（指标库） ===== */
.qcBox{width:min(940px,95vw);max-width:940px}
.qcCards{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 10px}
.qcCard{flex:1 1 88px;min-width:88px;border:1px solid #e7ebf3;border-radius:8px;padding:8px 10px;background:#f8fafd}
.qcCard b{display:block;font-size:19px;line-height:1.25;color:#26303e}
.qcCard span{font-size:11.5px;color:#8a93a6}
.qcCard.ok b{color:#16a34a}
.qcCard.warn b{color:#c0392b}
.qcCard.guess b{color:#e08a1e}
.qcNote{font-size:12px;color:#6b7488;line-height:1.75;margin:4px 0 8px}
.qcAllOk{background:#eefaf2;border:1px solid #bfe8cd;color:#1e7a45;border-radius:8px;padding:16px;text-align:center;font-size:13px}
.qcTblWrap{max-height:50vh;overflow:auto;border:1px solid #e7ebf3;border-radius:8px}
.qcTbl{width:100%;border-collapse:collapse;font-size:12.5px}
.qcTbl th{position:sticky;top:0;background:#f4f6fb;text-align:left;padding:7px 9px;border-bottom:1px solid #e7ebf3;font-weight:600;color:#5a6577;z-index:1}
.qcTbl td{padding:6px 9px;border-bottom:1px solid #f0f3f8;vertical-align:top}
.qcTbl tbody tr{cursor:pointer}
.qcTbl tbody tr:hover{background:#f3f7ff}
.qcMiss{color:#c0392b;white-space:nowrap}
.qcGuess{display:inline-block;margin-left:5px;padding:0 5px;border-radius:4px;background:#fdf3e3;color:#b4620f;font-size:10.5px;font-style:normal;vertical-align:middle}
.liIn.liGuess{background:#fffaf0;border-color:#f0d9b3}

/* ===== 员工名册：自定义列（每行直接填） ===== */
.rosTbl th.cExt{font-size:11.5px;color:#4a5670;background:#e9effa}
.rosTbl td.rosExt{padding:2px 5px}
.rosTbl .extIn{width:100%;border:1px solid transparent;background:transparent;border-radius:5px;
  padding:4px 6px;font-size:12px;color:#1f2a44;font-variant-numeric:tabular-nums}
.rosTbl .extIn::placeholder{color:#c8cfdc}
.rosTbl .extIn:hover{border-color:#dfe5f0;background:#fff}
.rosTbl .extIn:focus{border-color:#2f6fed;background:#fff;outline:none;box-shadow:0 0 0 2px #2f6fed22}
.rosTbl .extIn[readonly]{background:transparent;cursor:default}

/* ===== 员工名册：新增员工 · EHR 自动带出 ===== */
.ehrPick{border:1px solid #d7e4f8;background:linear-gradient(180deg,#f6faff,#fff);border-radius:9px;
  padding:10px 11px;margin-bottom:12px}
.ehrPickIn{display:flex;align-items:center;gap:8px}
.ehrBadge{flex:0 0 auto;font-size:10.5px;font-weight:600;letter-spacing:.4px;color:#fff;
  background:linear-gradient(135deg,#3b82f6,#2563eb);padding:3px 7px;border-radius:5px}
.ehrPickIn input{flex:1;padding:7px 10px;font-size:13px;border:1px solid #cddcf3;border-radius:6px;
  background:#fff;color:#1f2a44}
.ehrPickIn input:focus{border-color:#2f6fed;outline:none;box-shadow:0 0 0 3px #2f6fed18}
.ehrList{margin-top:8px;display:flex;flex-direction:column;gap:4px;max-height:196px;overflow:auto}
.ehrTip{font-size:11.5px;color:#7c879b;line-height:1.7}
.ehrTip.none{color:#b4620f;background:#fffaf0;border:1px solid #f3e3c4;border-radius:6px;padding:7px 9px}
.ehrIt{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;
  gap:1px 10px;align-items:baseline;text-align:left;padding:6px 9px;border:1px solid #e4ecf9;
  border-radius:7px;background:#fff;cursor:pointer;font-family:inherit}
.ehrIt:hover{border-color:#2f6fed;background:#f5f9ff;box-shadow:0 0 0 2px #2f6fed14}
.ehrIt b{font-size:13px;color:#1f2a44;grid-row:1;grid-column:1}
.ehrItJob{font-size:12px;color:#2f6fed;grid-row:1;grid-column:2;font-weight:500}
.ehrItDept{grid-row:2;grid-column:1 / span 2;font-size:11px;color:#8a93a6;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ehrItMeta{grid-row:1 / span 2;grid-column:3;font-size:10.5px;color:#9aa3b4;text-align:right;
  white-space:nowrap;align-self:center}
.ehrItOff{color:#c0392b;font-style:normal}
.ehrOk{font-size:11.5px;color:#7c879b;margin:-4px 0 10px;line-height:1.7}
.ehrOk.on{background:#f2fbf5;border:1px solid #cfe9d9;color:#12803c;border-radius:6px;padding:7px 10px}
.ehrOk b{color:#0d6b31}

/* ===== 员工名册：列管理弹窗 ===== */
.pickBox.rosColBox{width:min(600px,95vw)}
.rosColList{max-height:280px;overflow:auto;display:flex;flex-direction:column;gap:5px;margin:6px 0 10px}
.rosColRow{display:flex;align-items:center;gap:6px;border:1px solid #e4ecf9;border-radius:7px;
  padding:5px 7px;background:#fbfcff}
.rosColRow input.rcNm{flex:1;padding:5px 8px;font-size:12.5px;border:1px solid #d4dae3;border-radius:5px}
.rosColRow input.rcNm:focus{border-color:#2f6fed;outline:none}
.rosColRow .rcW{flex:0 0 68px}
.rosColRow .rcWidth{width:100%;padding:4px 6px;font-size:11.5px;border:1px solid #d4dae3;border-radius:5px}
.rosColEmpty{font-size:12px;color:#8a93a6;padding:10px 2px}
.rosColAdd{display:flex;flex-wrap:wrap;gap:6px;align-items:center;border-top:1px solid #eef1f7;padding-top:10px}
.rosColAdd input{flex:1 1 200px;padding:6px 9px;font-size:12.5px;border:1px solid #d4dae3;border-radius:6px}
.rosColAdd input:focus{border-color:#2f6fed;outline:none}
.rosColAdd input#rcOpts{flex:1 1 190px}
.rosColAdd .btn{flex:0 0 auto;white-space:nowrap}

/* ================= 关键目标复盘（部门长月度经营会） ================= */
.rvTop{padding:14px 18px 12px}
.rvHead{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rvTitle{font-size:16.5px;font-weight:700;color:var(--ink)}
.rvTitle .tip{font-size:12px;font-weight:400;color:var(--ink3);margin-left:10px}
.rvHead .sp{flex:1;min-width:8px}
.rvMonths{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.rvKpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:14px}
.rvKpis .kpi{box-shadow:none;background:#f8fafd;border:1px solid var(--line);padding:11px 14px}
.rvKpis .kpi .val{font-size:21px}
.rvFoot{font-size:11.5px;color:var(--ink3);margin-top:10px;line-height:1.6}
.rvPerson{padding:0;overflow:hidden}
.rvPHead{display:flex;align-items:center;gap:10px;padding:11px 16px;border-bottom:1px solid var(--line);background:#fbfcfe;flex-wrap:wrap}
.rvPHead b{font-size:15px;color:var(--ink)}
.rvScope{font-size:12px;color:var(--ink2);background:#eef2f9;border-radius:5px;padding:2px 8px}
.rvPHead .sp{flex:1;min-width:8px}
.rvTally{font-size:12.5px;color:var(--ink2)}
.rvTally b{font-size:15px;margin:0 2px}
.rvTally b.g,.rvRateBox b.g{color:#12803c}
.rvTally b.w,.rvRateBox b.w{color:var(--warn)}
.rvTally b.b,.rvRateBox b.b{color:var(--bad)}
.rvPerson .tblWrap{box-shadow:none;border-radius:0;max-height:none;overflow-x:auto;overflow-y:visible}
/* 表头要 sticky，必须用 separate：border-collapse:collapse 下 Chrome 的 sticky 单元格滚动时会重绘闪跳 */
.rvTbl{width:100%;border-collapse:separate;border-spacing:0;background:#fff}
.rvTbl thead th{position:static;background:#f5f7fb;border-bottom:1px solid var(--line)}
.rvTbl td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top;font-size:13px;color:var(--ink)}
.rvTbl tbody tr:hover td{background:#fafcff}
.rvTbl th.r,.rvTbl td.r{text-align:right}
.rvKpiTxt{font-weight:600;color:var(--ink);line-height:1.4}
.rvDesc{font-size:11.5px;color:var(--ink3);margin-top:3px;line-height:1.5;max-width:560px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rvGoal{color:var(--ink2);font-size:12.5px;line-height:1.5}
.rvRateBox{display:flex;flex-direction:column;gap:5px;align-items:flex-start}
.rvRateBox b{font-size:13px}
.rvBar{height:5px;border-radius:3px;background:#eef1f6;overflow:hidden;width:100%;max-width:104px}
.rvBar i{display:block;height:100%;border-radius:3px}
.rvBar.g i{background:var(--good)}
.rvBar.w i{background:var(--warn)}
.rvBar.b i{background:var(--bad)}
.rvMk{font-style:normal;font-size:11.5px;padding:2px 8px;border-radius:10px;background:#f0f2f5;color:var(--ink3);white-space:nowrap}
.rvMk.good{background:#e8f7ee;color:#12803c}
.rvMk.bad{background:#fdecea;color:#a93226}
.rvMk.warn{background:#fdf3e3;color:#a8701a}
.rvNote{font-size:12px;color:var(--ink2);line-height:1.5}
@media (max-width:1180px){ .rvKpis{grid-template-columns:repeat(3,minmax(0,1fr))} }
.rvScTag{font-style:normal;font-size:11px;color:#4a5875;background:#eaeefa;border-radius:4px;padding:1px 6px;margin-right:6px;vertical-align:1px;white-space:nowrap}
.rvMore{padding:9px 16px;border-top:1px dashed var(--line);background:#fcfdff;text-align:left}
.rvMore .lnk{border:0;background:transparent;padding:0;font-size:12.5px;color:#3b6fd4;cursor:pointer}
.rvMore .lnk:hover{text-decoration:underline}
.rvTbl tr.rvRowOff td{color:#9aa4b6;background:#fbfcfd}
.rvTbl tr.rvRowOff td .rvKpiTxt{font-weight:400;color:#7e8798}
.rvTbl tr.rvRowOff td .rvDesc{color:#a8b0bf}

/* --- 复盘页：整张列表共用一个吸顶表头 --- */
.rvPerson{overflow:visible}
.rvPerson .tblWrap{overflow:visible;border-radius:0}
/* 卡片里不再各带表头，列宽由 colgroup 固定，表头统一由 .rvHeadBar 吸顶 */
.rvTbl thead{display:none}
.rvList{position:relative}
.rvHeadBar{position:sticky;top:var(--rvTop,90px);z-index:9;display:flex;align-items:stretch;
  background:#f5f7fb;border-radius:0;box-shadow:0 1px 0 var(--line),0 2px 6px rgba(16,30,60,.07);
  box-sizing:border-box;transform:translateZ(0);will-change:transform}
.rvHeadBar .hC{box-sizing:border-box;padding:9px 10px;font-size:12.5px;font-weight:600;color:#5a6577;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}
.rvHeadBar .hC.r{text-align:right}
.rvHeadBar .hC.c{text-align:center}
.rvTbl{min-width:1000px}

/* --- 复盘页：文字层级（长文本收小、行距收紧、备注更轻） --- */
.rvTbl td{padding:7px 10px;line-height:1.5}
.rvKpiTxt{font-size:13px;line-height:1.45}
.rvDesc{font-size:11px;line-height:1.55;margin-top:3px;padding-left:10px;max-width:620px;color:#8b95a7}
.rvGoal{font-size:11.5px;line-height:1.5;color:#5b6675}
.rvNote{font-size:11.5px;line-height:1.5;color:#7b8394}
.rvTbl td.rvAvLong{font-size:11.5px;line-height:1.5;color:#4a5568;white-space:pre-line}
.rvTbl td b{font-size:13px}
.rvTbl td.rvAvLong b{font-size:11.5px}

/* --- 复盘页：固定列宽，每张卡片列位置完全一致（不再随内容多少变形） --- */
.rvTbl{table-layout:fixed;width:100%;min-width:1060px}
.rvTbl td{overflow-wrap:anywhere}
.rvTbl th:first-child,.rvTbl td:first-child{overflow:hidden;white-space:nowrap}
