:root{
  --bg:#060b16; --bg2:#0a1120; --panel:#0d1526; --panel2:#111c31; --line:#1b2b47; --line2:#152238;
  --acc:#3d7dff; --acc2:#6fa0ff; --gold:#d4b06a; --txt:#e6edf7; --dim:#7d8ca8; --dim2:#5b6b85;
  --ok:#3ecf8e; --warn:#ffb020; --bad:#ff5c5c; --purple:#a07fd4;
  --radius:10px; --shadow:0 6px 24px rgba(0,0,0,.35);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:
    radial-gradient(1200px 600px at 80% -10%,rgba(61,125,255,.10),transparent 60%),
    radial-gradient(900px 500px at 10% 110%,rgba(212,176,106,.06),transparent 60%),
    var(--bg);
  color:var(--txt);
  font-family:"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;
}
a{color:var(--acc2);text-decoration:none}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#1e3050;border-radius:4px}
::-webkit-scrollbar-track{background:transparent}

/* ============ 布局 ============ */
.wrap{max-width:1480px;margin:0 auto;padding:0 16px 40px}
.topbar{
  position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:14px;
  padding:12px 18px;background:rgba(8,14,26,.92);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:.5px}
.brand .logo{
  width:32px;height:32px;border-radius:8px;display:grid;place-items:center;font-size:16px;
  background:linear-gradient(135deg,var(--acc),#1d4fb8);box-shadow:0 4px 14px rgba(61,125,255,.35)
}
.brand h1{font-size:16px;font-weight:700}
.brand small{display:block;font-size:10px;color:var(--dim);letter-spacing:2px;font-weight:400}
.topbar .sp{flex:1}
.user-chip{
  display:flex;align-items:center;gap:8px;padding:5px 12px;border:1px solid var(--line);
  border-radius:20px;background:var(--panel);font-size:12px
}
.user-chip .av{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,var(--acc),#7a5cd6);display:grid;place-items:center;font-size:11px;font-weight:700}
.user-chip b{font-weight:600}
.user-chip span{color:var(--dim)}

.nav{display:flex;gap:4px;overflow-x:auto;padding:10px 18px;border-bottom:1px solid var(--line);background:rgba(10,17,31,.6);position:sticky;top:57px;z-index:49}
.nav a{
  padding:7px 15px;border-radius:20px;color:var(--dim);font-size:13px;white-space:nowrap;
  border:1px solid transparent;cursor:pointer;transition:.15s
}
.nav a:hover{color:var(--txt);background:var(--panel)}
.nav a.on{color:#fff;background:linear-gradient(135deg,var(--acc),#2a5fd0);border-color:transparent;box-shadow:0 3px 12px rgba(61,125,255,.3)}

/* ============ 卡片 ============ */
.grid{display:grid;gap:14px}
.g2{grid-template-columns:1fr 1fr}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.g5{grid-template-columns:repeat(5,1fr)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.panel.mt{margin-top:14px}
.p-title{font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.p-title:before{content:"";width:3px;height:14px;background:var(--acc);border-radius:2px}
.p-sub{font-size:11px;color:var(--dim);font-weight:400;margin-left:auto}

.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;position:relative;overflow:hidden}
.kpi:after{content:"";position:absolute;right:-30px;top:-30px;width:90px;height:90px;border-radius:50%;background:radial-gradient(circle,rgba(61,125,255,.14),transparent 70%)}
.k-lab{font-size:11px;color:var(--dim);letter-spacing:.5px}
.k-val{font-size:24px;font-weight:700;margin-top:4px;letter-spacing:.5px}
.k-val small{font-size:12px;color:var(--dim);font-weight:400;margin-left:3px}
.k-sub{font-size:11px;color:var(--dim);margin-top:3px}
.up{color:var(--ok)} .down{color:var(--bad)} .gold{color:var(--gold)} .muted{color:var(--dim)}

/* ============ 表单 ============ */
.fm{display:grid;gap:10px}
.fm-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.field{display:flex;flex-direction:column;gap:5px}
.field label{font-size:11px;color:var(--dim);letter-spacing:.5px}
.field label b{color:var(--acc2);font-weight:600}
input,select,textarea{
  background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  padding:9px 11px;border-radius:7px;font-size:13px;font-family:inherit;outline:none;transition:.15s;width:100%
}
input:focus,select:focus,textarea:focus{border-color:var(--acc);box-shadow:0 0 0 3px rgba(61,125,255,.12)}
input[type=number]{font-variant-numeric:tabular-nums}
textarea{resize:vertical;min-height:70px}
select option{background:#0d1526}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;
  padding:9px 18px;border-radius:7px;border:1px solid var(--line);background:var(--panel2);
  color:var(--txt);font-size:13px;font-family:inherit;transition:.15s;white-space:nowrap
}
.btn:hover{border-color:var(--acc);color:#fff}
.btn.primary{background:linear-gradient(135deg,var(--acc),#2a5fd0);border-color:transparent;color:#fff;font-weight:600;box-shadow:0 4px 14px rgba(61,125,255,.28)}
.btn.primary:hover{filter:brightness(1.1)}
.btn.gold{background:linear-gradient(135deg,#c9a05e,#a07c3c);border-color:transparent;color:#1a1206;font-weight:700}
.btn.danger{color:var(--bad);border-color:rgba(255,92,92,.35)}
.btn.danger:hover{background:rgba(255,92,92,.12)}
.btn.sm{padding:5px 12px;font-size:12px}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ============ 表格 ============ */
.tw{overflow:auto;border:1px solid var(--line);border-radius:8px}
table{width:100%;border-collapse:collapse;font-size:12.5px;min-width:520px}
th{
  background:var(--panel2);color:var(--dim);font-weight:600;text-align:left;padding:10px 12px;
  border-bottom:1px solid var(--line);white-space:nowrap;position:sticky;top:0;font-size:11.5px;letter-spacing:.5px
}
td{padding:9px 12px;border-bottom:1px solid var(--line2);white-space:nowrap}
tr:last-child td{border-bottom:none}
tbody tr:hover{background:rgba(61,125,255,.06)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;border:1px solid}
.tag.ok{color:var(--ok);border-color:rgba(62,207,142,.35);background:rgba(62,207,142,.1)}
.tag.warn{color:var(--warn);border-color:rgba(255,176,32,.35);background:rgba(255,176,32,.1)}
.tag.bad{color:var(--bad);border-color:rgba(255,92,92,.35);background:rgba(255,92,92,.1)}
.tag.info{color:var(--acc2);border-color:rgba(111,160,255,.35);background:rgba(61,125,255,.1)}
.tag.mute{color:var(--dim);border-color:var(--line)}

/* ============ 登录 ============ */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}
.login-box{width:100%;max-width:400px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:32px 28px;box-shadow:var(--shadow)}
.login-box .lg{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:24px}
.login-box .lg .logo{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font-size:24px;background:linear-gradient(135deg,var(--acc),#1d4fb8);box-shadow:0 8px 24px rgba(61,125,255,.4)}
.login-box h2{font-size:18px;letter-spacing:1px}
.login-box .sub{font-size:11px;color:var(--dim);letter-spacing:2px}
.login-box .err{color:var(--bad);font-size:12px;min-height:18px;margin-top:8px;text-align:center}
.login-box .tip{margin-top:18px;font-size:11px;color:var(--dim2);text-align:center;line-height:1.8;border-top:1px solid var(--line2);padding-top:14px}

/* ============ 报告 ============ */
.rep-sec{margin-bottom:20px}
.rep-sec h3{font-size:14px;color:var(--acc2);margin-bottom:10px;display:flex;align-items:center;gap:8px}
.rep-sec h3:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--acc)}
.rep-sec ul{padding-left:18px}
.rep-sec li{margin-bottom:6px;font-size:13px}
.issue{border:1px solid var(--line);border-left:3px solid var(--warn);border-radius:8px;padding:12px 14px;margin-bottom:10px;background:var(--panel2)}
.issue.lv高,.issue.lv-high{border-left-color:var(--bad)}
.issue.lv中{border-left-color:var(--warn)}
.issue.lv低{border-left-color:var(--acc)}
.issue .ih{font-weight:700;font-size:13px;margin-bottom:8px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.issue .il{font-size:12px;color:var(--dim);margin-bottom:4px;line-height:1.8}
.issue .il b{color:var(--dim);font-weight:600;display:inline-block;min-width:52px}
.issue .iv{color:var(--txt)}
.issue .ia{color:var(--ok);font-size:12.5px;line-height:1.8}
.adv{border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-bottom:10px;background:var(--panel2)}
.adv .at{color:var(--gold);font-weight:700;font-size:12.5px;margin-bottom:6px}
.adv .ac{font-size:13px;line-height:1.9;color:#cdd8ea}
.tier{border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-bottom:8px;background:var(--panel2)}
.tier .th{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.tier .tb{width:26px;height:26px;border-radius:6px;display:grid;place-items:center;font-weight:700;font-size:13px}
.tier.S .tb{background:rgba(212,176,106,.2);color:var(--gold)}
.tier.A .tb{background:rgba(62,207,142,.18);color:var(--ok)}
.tier.B .tb{background:rgba(61,125,255,.18);color:var(--acc2)}
.tier.C .tb{background:rgba(255,176,32,.16);color:var(--warn)}
.tier.D .tb{background:rgba(255,92,92,.16);color:var(--bad)}
.tier .tn{font-size:12.5px;color:var(--dim);line-height:1.8}
.llm-box{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:16px;font-size:13px;line-height:1.9;white-space:pre-wrap;color:#cdd8ea}

/* ============ 其他 ============ */
.empty{text-align:center;color:var(--dim);padding:36px 16px;font-size:13px}
.empty .ico{font-size:32px;display:block;margin-bottom:10px;opacity:.5}
.bar{height:6px;background:var(--panel2);border-radius:3px;overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--acc),#6fa0ff);border-radius:3px;transition:width .5s}
.funnel-row{display:grid;grid-template-columns:64px 1fr 92px;gap:10px;align-items:center;margin-bottom:8px;font-size:12.5px}
.funnel-row .fl{color:var(--dim)}
.funnel-row .fv{text-align:right;font-variant-numeric:tabular-nums}
.toast{
  position:fixed;left:50%;top:24px;transform:translateX(-50%);z-index:999;
  background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 20px;
  box-shadow:var(--shadow);font-size:13px;opacity:0;transition:.25s;pointer-events:none
}
.toast.show{opacity:1;top:32px}
.toast.ok{border-color:rgba(62,207,142,.5)}
.toast.err{border-color:rgba(255,92,92,.5)}
.modal{position:fixed;inset:0;z-index:200;background:rgba(3,7,14,.72);display:none;place-items:center;padding:16px}
.modal.show{display:grid}
.modal-box{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:22px;width:100%;max-width:520px;max-height:86vh;overflow:auto;box-shadow:var(--shadow)}
.modal-box h3{font-size:15px;margin-bottom:14px}
.row-actions{display:flex;gap:6px;flex-wrap:wrap}
.split{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.sec-title{font-size:12px;color:var(--dim);letter-spacing:1px;margin:18px 0 8px;text-transform:uppercase}
.hint{font-size:11.5px;color:var(--dim2);line-height:1.8}
.stat-line{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed var(--line2);font-size:12.5px}
.stat-line:last-child{border-bottom:none}
.stat-line b{font-variant-numeric:tabular-nums}
.foot{text-align:center;color:var(--dim2);font-size:11px;padding:24px 0 8px;letter-spacing:1px}

/* ============ 响应式 ============ */
/* ============ 出额 / 放款 联动录入 ============ */
.appr-box{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:12px}
.appr-head{display:grid;gap:8px;margin-bottom:8px;font-size:11px;color:var(--dim);letter-spacing:.5px}
.appr-head.appr-3{grid-template-columns:1.4fr 1fr 120px 36px}
.appr-head.appr-2{grid-template-columns:1fr 140px 36px}
.appr-head.appr-5{grid-template-columns:1.3fr 96px 90px 110px 1fr 36px}
.appr-row{display:grid;gap:8px;margin-bottom:8px;align-items:center}
.appr-row.appr-3{grid-template-columns:1.4fr 1fr 120px 36px}
.appr-row.appr-2{grid-template-columns:1fr 140px 36px}
.appr-row.appr-5{grid-template-columns:1.3fr 96px 90px 110px 1fr 36px}
.appr-row input,.appr-row select{padding:8px 10px;font-size:13px}
.appr-del{
  width:32px;height:32px;border-radius:6px;border:1px solid rgba(255,92,92,.3);
  background:rgba(255,92,92,.08);color:var(--bad);cursor:pointer;font-size:15px;line-height:1;
  display:grid;place-items:center;transition:.15s
}
.appr-del:hover{background:rgba(255,92,92,.2)}
.appr-empty{font-size:12px;color:var(--dim2);padding:6px 0}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.tabs a{
  padding:6px 14px;border-radius:18px;border:1px solid var(--line);background:var(--panel2);
  color:var(--dim);font-size:12.5px;cursor:pointer;transition:.15s
}
.tabs a:hover{color:var(--txt)}
.tabs a.on{background:linear-gradient(135deg,var(--acc),#2a5fd0);color:#fff;border-color:transparent}
.sec-note{font-size:11.5px;color:var(--dim2);line-height:1.8;margin-top:6px}
.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.mini-stat{background:var(--panel2);border:1px solid var(--line2);border-radius:8px;padding:10px 12px}
.mini-stat .ml{font-size:11px;color:var(--dim)}
.mini-stat .mv{font-size:17px;font-weight:700;margin-top:2px}

@media (max-width:1100px){ .g4,.g5{grid-template-columns:repeat(2,1fr)} .g3{grid-template-columns:1fr 1fr} }
@media (max-width:768px){
  body{font-size:13px}
  .wrap{padding:0 10px 30px}
  .topbar{padding:10px 12px}
  .brand h1{font-size:14px}
  .brand small{display:none}
  .nav{padding:8px 12px;top:53px}
  .g2,.g3,.g4,.g5,.split{grid-template-columns:1fr}
  .kpi{padding:12px}
  .k-val{font-size:20px}
  .panel{padding:13px}
  .funnel-row{grid-template-columns:56px 1fr 78px}
  .user-chip span{display:none}
  table{font-size:12px}
  th,td{padding:8px 9px}
  .modal-box{padding:16px}
  .appr-head{display:none}
  .appr-row.appr-3,.appr-row.appr-2{grid-template-columns:1fr 1fr}
  .appr-row .appr-del{width:100%;grid-column:span 2}
}

/* ===== 销售管理 Agent · 分层分析 ===== */
.cz-levels{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.cz-lv-chip{font-size:12px;color:var(--dim);background:var(--bg2,#1a1d26);border:1px solid var(--line,#2a2f3c);
  border-radius:20px;padding:3px 12px}
.cz-lv-chip b{color:var(--acc2);font-size:13px}
.cz-summary{margin-top:12px;padding:10px 14px;border-radius:8px;font-size:13px;line-height:1.7;
  background:linear-gradient(90deg,rgba(90,160,255,.10),transparent);border-left:3px solid var(--acc)}
.cz-sec{margin-top:16px}
.cz-sec-t{font-size:12px;color:var(--acc2);font-weight:600;margin-bottom:8px;letter-spacing:.3px}
.cz-grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:820px){.cz-grid2{grid-template-columns:1fr}}
.cz-list{margin:0;padding-left:18px;font-size:12.5px;line-height:1.95;color:var(--sub)}
.cz-card{border:1px solid var(--line,#2a2f3c);border-radius:10px;margin-bottom:10px;
  background:var(--bg2,#161922);overflow:hidden;transition:.15s}
.cz-card.open{border-color:var(--acc)}
.cz-head{display:flex;align-items:center;gap:12px;padding:11px 14px;cursor:pointer;user-select:none}
.cz-head:hover{background:rgba(90,160,255,.05)}
.cz-name{font-size:14px;font-weight:600;color:var(--txt,#e6e9f0);min-width:130px}
.cz-title{font-size:11px;color:var(--dim);font-weight:400;margin-left:6px}
.cz-lv{margin-left:auto;display:flex;align-items:center}
.cz-score{font-size:16px;color:var(--acc2);margin-left:6px}
.cz-score-u{font-size:11px;color:var(--dim)}
.cz-more{font-size:11.5px;color:var(--acc);margin-left:14px;white-space:nowrap}
.cz-diag{padding:0 14px 11px;font-size:12.5px;color:var(--sub);line-height:1.7}
.cz-card.open>.cz-diag{border-bottom:1px dashed var(--line,#2a2f3c);padding-bottom:11px}
.cz-funnel{display:grid;grid-template-columns:repeat(auto-fit,minmax(112px,1fr));gap:8px}
.cz-f{border:1px solid var(--line,#2a2f3c);border-radius:8px;padding:9px 10px;text-align:center;
  background:var(--bg3,#1b1f2a)}
.cz-f-n{font-size:12px;color:var(--sub);margin-bottom:4px}
.cz-f-v{font-size:16px;font-weight:600;color:var(--acc2)}
.cz-f-v span{font-size:10px;color:var(--dim);margin-left:2px;font-weight:400}
.cz-f-r{font-size:10.5px;color:var(--dim);margin-top:3px}
.cz-f-a{font-size:11.5px;margin-top:3px}
.cz-att{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--sub);margin-bottom:6px}
.cz-att b{color:var(--acc2);font-size:13px}
.cz-coach{border:1px solid var(--line,#2a2f3c);border-left:3px solid var(--acc);border-radius:8px;
  padding:11px 13px;margin-bottom:9px;background:rgba(90,160,255,.03)}
.cz-coach.p-high{border-left-color:var(--red,#ff6b6b);background:rgba(255,107,107,.05)}
.cz-coach-t{font-size:13px;font-weight:600;color:var(--txt,#e6e9f0);margin-bottom:6px;
  display:flex;align-items:center;gap:7px}
.cz-pri{font-size:10.5px;padding:1px 7px;border-radius:10px;font-weight:500}
.cz-pri.high{background:rgba(255,107,107,.18);color:var(--red,#ff6b6b)}
.cz-pri.mid{background:rgba(255,180,60,.16);color:var(--gold,#ffb43c)}
.cz-gap{font-size:11.5px;color:var(--dim);margin-bottom:7px;line-height:1.6}
.cz-act{margin:0;padding-left:18px;font-size:12.5px;line-height:1.9;color:var(--sub)}
.cz-exp{margin-top:7px;font-size:11.5px;color:var(--acc2)}
.cz-plan{margin:0;padding-left:18px;font-size:12.5px;line-height:2;color:var(--sub)}
/* ===== 考勤登记 ===== */
.att-rs,.att-rm{width:100%}
tr[data-uid] .att-st,tr[data-uid] .att-lt{width:100%}

/* ===== 员工人事档案：PDF 识别 + 档案排版 ===== */

/* 简历上传区 */
.pf-upload {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-top: 12px; padding: 12px 14px;
  border: 1px dashed var(--line); border-radius: var(--radius-lg, 10px);
  background: var(--bg2);
}
.pf-upload .btn { flex: 0 0 auto; }

/* 识别结果提示 */
.pf-msg {
  margin-top: 10px; padding: 10px 12px; border-radius: 8px;
  font-size: 13px; line-height: 1.6;
  background: var(--bg2); border: 1px solid var(--line); color: var(--dim);
}
.pf-msg.ok { background: rgba(34, 139, 87, .10); border-color: rgba(34, 139, 87, .35); color: var(--text); }
.pf-msg.bad { background: rgba(197, 48, 48, .10); border-color: rgba(197, 48, 48, .35); color: var(--text); }
.pf-msg .pf-warn { display: block; margin-top: 6px; color: #b7791f; }

/* 分组标签 */
.pf-tabs { display: flex; gap: 6px; margin-top: 14px; border-bottom: 1px solid var(--line); }
.pf-tab {
  padding: 8px 14px; font-size: 13px; cursor: pointer;
  background: none; border: none; border-bottom: 2px solid transparent;
  color: var(--dim); font-family: inherit;
}
.pf-tab:hover { color: var(--text); }
.pf-tab.on { color: var(--primary, #3b6ef0); border-bottom-color: var(--primary, #3b6ef0); font-weight: 500; }

/* 字段网格 */
.pf-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 14px; grid-column: 1 / -1; }
@media (max-width: 720px) { .pf-fields { grid-template-columns: 1fr; } }
.pf-insure-hint {
  font-size: 12px; color: var(--dim); padding: 8px 10px;
  background: var(--bg2); border-radius: 6px; line-height: 1.6;
}

/* 列表里的保险公司小字 */
.pf-sub { font-size: 11px; color: var(--dim); margin-top: 2px; max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ===== 档案预览（排版展示） ===== */
.pf-doc { font-size: 13px; line-height: 1.7; color: var(--text); }
.pf-doc-head {
  padding-bottom: 12px; margin-bottom: 14px; border-bottom: 2px solid var(--line);
}
.pf-doc-name { font-size: 20px; font-weight: 500; letter-spacing: 1px; }
.pf-doc-sub { font-size: 12px; color: var(--dim); margin-top: 4px; }

.pf-doc-sec { margin-bottom: 16px; }
.pf-doc-sec-t {
  font-size: 13px; font-weight: 500; color: var(--primary, #3b6ef0);
  padding-bottom: 6px; margin-bottom: 8px; border-bottom: 1px solid var(--line);
}
.pf-doc-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 18px; }
@media (max-width: 640px) { .pf-doc-grid { grid-template-columns: 1fr; } }

.pf-doc-row { display: flex; gap: 8px; padding: 3px 0; align-items: baseline; }
.pf-doc-k { flex: 0 0 96px; color: var(--dim); font-size: 12px; }
.pf-doc-v { flex: 1; word-break: break-all; }

.pf-doc-blk { grid-column: 1 / -1; padding: 2px 0; }
.pf-doc-blk-t { color: var(--dim); font-size: 12px; margin-bottom: 2px; }
.pf-doc-blk-b {
  padding: 8px 10px; background: var(--bg2); border-radius: 6px;
  white-space: normal; line-height: 1.75;
}

@media print {
  .pf-doc { font-size: 12px; }
  .pf-doc-sec { break-inside: avoid; }
}

/* ===== 渠道条线经营数据 ===== */
.ch-tip{
  margin-bottom:12px;padding:8px 12px;border-radius:8px;font-size:12px;
  background:rgba(255,176,32,.08);border:1px solid rgba(255,176,32,.3);color:var(--warn);
}
.ch-row{gap:10px}
.ch-row .field{flex:1;min-width:120px}
.ch-tb{width:100%;border-collapse:collapse;font-size:13px}
.ch-tb th,.ch-tb td{padding:9px 10px;text-align:left;border-bottom:1px solid var(--line2)}
.ch-tb th{color:var(--dim);font-weight:500;font-size:12px}
.ch-tb td{color:var(--txt)}
.ch-tb tr.hl td{background:rgba(61,125,255,.08);font-weight:600}
.ch-tb tr:hover td{background:rgba(255,255,255,.02)}
.ch-td-l{color:var(--dim);white-space:nowrap}
.ch-note{margin-top:10px;font-size:12px;color:var(--ok)}
.ch-empty{padding:26px 10px;text-align:center;color:var(--dim2);font-size:13px}

/* 年度任务进度条 */
.ch-pg-head{font-size:12px;color:var(--dim);margin-bottom:10px}
.ch-pg{margin-bottom:14px}
.ch-pg-t{display:flex;justify-content:space-between;font-size:13px;margin-bottom:5px}
.ch-pg-t span:first-child{color:var(--txt)}
.ch-pg-v{color:var(--dim);font-size:12px}
.ch-bar{height:8px;background:var(--line);border-radius:5px;overflow:hidden}
.ch-bar i{display:block;height:100%;border-radius:5px;transition:width .4s ease}
.ch-bar i.ok{background:linear-gradient(90deg,#2fa876,var(--ok))}
.ch-bar i.bad{background:linear-gradient(90deg,#c0392b,var(--bad))}
.ch-bar i.none{background:var(--line2)}
.ch-pg-f{display:flex;align-items:center;gap:10px;margin-top:4px;font-size:11px}
.ch-pct{font-weight:700}
.ch-pct.ok{color:var(--ok)}
.ch-pct.bad{color:var(--bad)}
.ch-pct.none{color:var(--dim2)}
.ch-warn{color:var(--warn)}
.ch-gap{color:var(--dim2)}
