/* 助贷业务系统 · 沿用内网培训系统同一套设计 token，保证挂上去视觉统一 */
:root{
  --bg:#f5f6f8;
  --panel:#ffffff;
  --panel-2:#fafbfc;
  --border:#e3e6ea;
  --border-2:#d5dae0;
  --text:#1c1f23;
  --text-2:#5b6470;
  --text-3:#8a939e;
  --brand:#185FA5;
  --brand-soft:#e8f1fa;
  --brand-line:#b5d4f4;
  --green:#0f6e56;
  --green-soft:#e1f5ee;
  --amber:#854f0b;
  --amber-soft:#faeeda;
  --red:#a32d2d;
  --red-soft:#fcebeb;
  --purple:#534ab7;
  --purple-soft:#eeedfe;
  --radius:10px;
  --radius-lg:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:-apple-system,"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif;
  background:var(--bg);color:var(--text);font-size:14px;line-height:1.65;
}

/* ===== 顶栏 ===== */
.topbar{
  display:flex;align-items:center;gap:20px;background:var(--panel);
  border-bottom:1px solid var(--border);padding:0 20px;height:60px;
  position:sticky;top:0;z-index:50;
}
.brand{display:flex;align-items:center;gap:10px}
.logo{width:34px;height:34px;border-radius:9px;background:var(--brand);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:500;font-size:15px}
.brand-name{font-size:15px;font-weight:500;line-height:1.2}
.brand-sub{font-size:11px;color:var(--text-3);line-height:1.3}
.tabs{display:flex;gap:4px;margin-left:8px}
.tab{
  border:1px solid transparent;background:transparent;color:var(--text-2);
  padding:7px 14px;border-radius:8px;font-size:13px;cursor:pointer;font-family:inherit;
}
.tab:hover{background:var(--panel-2);color:var(--text)}
.tab.active{background:var(--brand-soft);color:var(--brand);border-color:var(--brand-line);font-weight:500}
.spacer{flex:1}
.role-box{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-2)}
.role-sel{height:32px;border:1px solid var(--border-2);border-radius:8px;padding:0 8px;
  font-size:12px;font-family:inherit;background:var(--panel-2);color:var(--text);outline:none}
.role-sel:focus{border-color:var(--brand)}
.badge-super{background:var(--purple-soft);color:var(--purple);border-radius:6px;
  padding:2px 7px;font-size:11px;font-weight:600}

/* ===== 布局 ===== */
.wrap{max-width:1400px;margin:0 auto;padding:20px}
.grid2{display:grid;grid-template-columns:1fr 380px;gap:16px;align-items:start}
@media (max-width:1080px){.grid2{grid-template-columns:1fr}}

.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:16px 18px;margin-bottom:16px}
.panel h3{font-size:14px;font-weight:600;margin-bottom:12px;display:flex;align-items:center;
  gap:8px;justify-content:space-between}
.panel h3 .sub{font-size:11px;color:var(--text-3);font-weight:400}
.muted{color:var(--text-3);font-size:12px}

/* ===== 灯色 ===== */
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0}
.c-green{background:#16a34a} .c-yellow{background:#d97706} .c-red{background:#dc2626}
.pill{display:inline-block;padding:2px 9px;border-radius:11px;font-size:12px;font-weight:600}
.p-green{background:var(--green-soft);color:var(--green)}
.p-yellow{background:var(--amber-soft);color:var(--amber)}
.p-red{background:var(--red-soft);color:var(--red)}

/* ===== 绿/黄/红 大号灯色标（陈总 2026-10-11 定版）=====
   「不要只是边框标色，更大范围、更显眼，但颜色别太深」
   → 表格整行浅色底 + 左侧粗色条；卡片用大色块徽标 + 左侧渐变。 */
.lvtag{display:inline-flex;align-items:center;gap:6px;padding:3px 13px;border-radius:999px;
  font-size:13px;font-weight:800;letter-spacing:.5px;white-space:nowrap;border:1px solid transparent}
.lvtag::before{content:'';width:9px;height:9px;border-radius:50%;background:currentColor}
.lvtag.g{background:#dcf3e6;color:#0d6b43;border-color:#a9dec2}
.lvtag.y{background:#fcefd4;color:#8a5a06;border-color:#f0d79c}
.lvtag.r{background:#fbe0e0;color:#9e2727;border-color:#efbcbc}
.lvtag.g.big,.lvtag.y.big,.lvtag.r.big{padding:5px 16px;font-size:14px}

tr.lv-g>td{background:#f4fbf7}
tr.lv-y>td{background:#fefaf1}
tr.lv-r>td{background:#fdf3f3}
tr.lv-g>td:first-child{box-shadow:inset 5px 0 0 #34a853}
tr.lv-y>td:first-child{box-shadow:inset 5px 0 0 #e0a53a}
tr.lv-r>td:first-child{box-shadow:inset 5px 0 0 #d9544f}
tr.click{cursor:pointer}
tr.click:hover>td{filter:brightness(.985)}

/* ===== KPI ===== */
.kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.k{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:13px 15px}
.k .v{font-size:25px;font-weight:700;line-height:1.2}
.k .l{font-size:11px;color:var(--text-3)}
.k .l2{font-size:11px;color:var(--text-2);margin-top:2px}
/* KPI 卡点击筛选（2026-10-14）：可点卡片手型 + hover 反馈，选中态高亮 */
.kpi .k.kpi-click{cursor:pointer;transition:border-color .15s, box-shadow .15s}
.kpi .k.kpi-click:hover{border-color:var(--brand);}
.kpi .k.kpi-on{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-soft)}

/* ===== 表格 ===== */
table{width:100%;border-collapse:collapse;font-size:13px}
th{background:var(--panel-2);padding:9px 10px;text-align:left;font-weight:600;
  color:var(--text-2);border-bottom:1px solid var(--border);white-space:nowrap;font-size:12px}
td{padding:9px 10px;border-bottom:1px solid #f0f2f4;vertical-align:middle}
tr.click{cursor:pointer} tr.click:hover{background:var(--brand-soft)}

/* ===== 客户卡 ===== */
.clist{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}
.ccard{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);
  padding:14px 16px;cursor:pointer;transition:.15s;border-left:4px solid var(--border-2)}
.ccard:hover{box-shadow:0 3px 12px rgba(0,0,0,.07)}
.ccard.g{border-left-color:#16a34a} .ccard.y{border-left-color:#d97706} .ccard.r{border-left-color:#dc2626}
/* 大范围灯色（陈总 2026-10-11）：左侧 7px 粗色条 + 淡色渐变底，颜色浅不刺眼 */
.ccard.g{border-left-width:7px;background:linear-gradient(100deg,#eefaf3 0%,#fff 46%);border-color:#cbe9d8}
.ccard.y{border-left-width:7px;background:linear-gradient(100deg,#fdf6e7 0%,#fff 46%);border-color:#f2ddb4}
.ccard.r{border-left-width:7px;background:linear-gradient(100deg,#fdeeee 0%,#fff 46%);border-color:#f2cbcb}
.ccard .top .lvtag{margin-left:2px}
.ccard .top{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ccard .nm{font-size:15px;font-weight:600}
.ccard .kv{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--text-2);margin-top:6px}
.ccard .kv b{color:var(--text);font-weight:600}

/* ===== 判定明细 ===== */
.chk{list-style:none;font-size:12px}
.chk li{padding:5px 0;border-bottom:1px dashed #f0f2f4;display:flex;gap:8px;align-items:baseline}
.chk .tag{flex-shrink:0;min-width:50px;text-align:center;font-size:10px;font-weight:700;
  border-radius:3px;padding:1px 4px}
.chk .tag.PASS{background:var(--green-soft);color:var(--green)}
.chk .tag.FAIL{background:var(--red-soft);color:var(--red)}
.chk .tag.UNKNOWN{background:var(--amber-soft);color:var(--amber)}
.need{margin-top:8px;font-size:12px;background:var(--amber-soft);border-radius:6px;
  padding:7px 10px;color:var(--amber)}

/* ===== 表单 ===== */
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}
.f label{display:block;font-size:12px;color:var(--text-2);margin-bottom:4px}
.f label.req::after{content:" *";color:var(--red)}
.f input,.f select{width:100%;height:34px;border:1px solid var(--border-2);border-radius:8px;
  padding:0 10px;font-size:13px;font-family:inherit;background:var(--panel-2);color:var(--text);outline:none}
.f input:focus,.f select:focus{border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px var(--brand-soft)}
.f input.err{border-color:var(--red);background:var(--red-soft)}
.btn{border:1px solid var(--brand);background:var(--brand);color:#fff;padding:8px 18px;
  border-radius:8px;font-size:13px;cursor:pointer;font-family:inherit}
.btn:hover{filter:brightness(1.08)}
.btn.ghost{background:transparent;color:var(--brand)}
.btn.warn{background:var(--red);border-color:var(--red)}

/* 资质采集表分组小标题 + 字段下方提示 */
.grp{margin:16px 0 8px;font-size:12px;font-weight:600;color:var(--brand);
  padding:6px 10px;background:var(--brand-soft);border-left:3px solid var(--brand);border-radius:6px}
.ftip{margin-top:3px;font-size:11px;color:var(--text-3);line-height:1.4}

/* 材料上传 */
.up{border:1px dashed var(--border-2);border-radius:10px;padding:14px;background:var(--panel-2)}
.up input[type=file]{font-size:12px;font-family:inherit}
.up-list{margin-top:10px;font-size:12px}
.up-list th,.up-list td{border:1px solid var(--border);padding:5px 8px;text-align:left}
.up-list th{background:var(--panel-2);font-weight:500;color:var(--text-2)}
.thumb{width:34px;height:34px;object-fit:cover;border-radius:6px;
  border:1px solid var(--border-2);display:block}
.up-miss{margin-top:10px;font-size:12px;color:var(--text-2);background:#FAEEDA;
  border-left:3px solid #EF9F27;padding:7px 11px;border-radius:6px}
.up-ok{margin-top:10px;font-size:12px;color:#3B6D11;background:#EAF3DE;
  border-left:3px solid #639922;padding:7px 11px;border-radius:6px}
.pill.gray{background:#888780}
.btn:disabled{opacity:.45;cursor:not-allowed}

/* ===== 提醒 / 消息 ===== */
.msg{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid #f0f2f4;font-size:13px}
.msg .ic{flex-shrink:0;width:26px;height:26px;border-radius:7px;display:flex;
  align-items:center;justify-content:center;font-size:13px}
.msg .b{flex:1}
.msg .t{font-size:11px;color:var(--text-3)}

/* ===== 遮罩提示 ===== */
.locked{background:repeating-linear-gradient(45deg,#fafbfc,#fafbfc 6px,#f2f4f6 6px,#f2f4f6 12px);
  border-radius:8px;padding:14px;text-align:center;color:var(--text-3);font-size:12px}

.note{background:var(--brand-soft);border-left:3px solid var(--brand);border-radius:8px;
  padding:11px 14px;font-size:12.5px;color:#1e40af;margin-bottom:14px}
.note b{color:#1e3a8a}
.warnbar{background:var(--red-soft);border-left:3px solid var(--red);border-radius:8px;
  padding:11px 14px;font-size:12.5px;color:var(--red);margin-bottom:14px}

.hide{display:none!important}
.foot{text-align:center;color:var(--text-3);font-size:11.5px;padding:18px 0 30px}

/* ===== 客户资料 · 超链接材料库（biz-cloud.js，2026-10-10） ===== */
.bc-cust{border:1px solid #e5e7eb;border-radius:10px;margin-bottom:10px;background:#fff}
.bc-cust>summary{cursor:pointer;padding:11px 14px;font-size:13.5px;list-style:none;display:flex;
  flex-wrap:wrap;gap:6px 10px;align-items:center}
.bc-cust>summary::-webkit-details-marker{display:none}
.bc-cust>summary::before{content:'▸';color:var(--brand,#2b6cb0);margin-right:4px}
.bc-cust[open]>summary::before{content:'▾'}
.bc-body{padding:4px 14px 14px;border-top:1px dashed #eceef1}
.bc-mats{width:100%;border-collapse:collapse;margin-top:8px;font-size:12.5px}
.bc-mats th,.bc-mats td{border:1px solid #eceef1;padding:6px 8px;text-align:left}
.bc-mats th{background:#f7f8fa}
.bc-link{color:var(--brand,#2b6cb0);word-break:break-all}
.bc-err{background:#fcebeb;border:1px solid #f3c6c6;color:#a32d2d;border-radius:8px;
  padding:9px 12px;font-size:12.5px;margin-bottom:10px}
.bc-ok{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;border-radius:8px;
  padding:9px 12px;font-size:12.5px;margin-bottom:10px}

/* ---------- 工作日历（业务经理/产品经理） ---------- */
.cal-panel h3{display:flex;align-items:center;gap:8px}
.cal-panel h3 .sub{margin-left:10px}
.cal-tbl{width:100%;border-collapse:collapse;table-layout:fixed}
.cal-tbl th{font-size:11.5px;color:#8a93a3;font-weight:600;padding:6px 2px;border-bottom:1px solid #e7eaf0}
.cal-tbl td{border:1px solid #eef1f5;padding:4px 5px;vertical-align:top;height:52px}
.cal-pad{background:#fafbfc;border-color:#f3f5f8}
.cal-day{cursor:default}
.cal-today{background:#eef5ff;border-color:#9dc3ee}
.cal-has{background:#fffdf3}
.cal-d{font-size:13px;font-weight:600;color:#39424e}
.cal-today .cal-d{color:#2b6cb0}
.cal-n{font-size:10.5px;line-height:1.4;margin-top:2px;color:#b7791f;font-weight:600}
.cal-n0{color:transparent}

/* ---------- 材料单元卡（上传/录入 + 自动识别回填） ---------- */
.mu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-top:10px}
.mu-card{display:flex;align-items:center;gap:9px;border:1.5px solid #e2e7ef;border-radius:10px;
  padding:10px 11px;cursor:pointer;background:#fbfcfe;transition:border-color .15s,box-shadow .15s}
.mu-card:hover{border-color:#9db8d9;box-shadow:0 2px 8px rgba(45,90,150,.08)}
.mu-card.mu-open{border-color:#2e6fb7;background:#f2f7fd}
.mu-card.mu-has{border-color:#b8d8b6;background:#f6fbf5}
/* 识别失败 / 识别不完整：醒目但不刺眼（陈总 2026-10-12：颜色别太深） */
.mu-card.mu-warn{border-color:#e8b55a;background:#fffaf0}
.mu-card.mu-warn .mu-st{color:#a86a00;font-weight:600}
.mu-ic{font-size:22px;line-height:1}
.mu-body{flex:1;min-width:0}
.mu-name{font-size:13.5px;font-weight:700;color:#2a3646}
.mu-st{font-size:11px;color:#8a93a3;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mu-arrow{color:#9aa6b6;font-size:13px}
.mu-pop{grid-column:1/-1;border:1.5px solid #cfdcec;border-radius:10px;background:#fff;
  padding:12px 14px;margin-top:-2px;box-shadow:0 3px 12px rgba(45,90,150,.07)}
.mu-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.mu-file{display:flex;align-items:center;gap:8px;margin-top:8px;padding:6px 8px;
  border:1px solid #edf0f5;border-radius:8px;background:#fafbfd}
.mu-file img{width:34px;height:34px;object-fit:cover;border-radius:6px;border:1px solid #e3e8ef}
.mu-fic{font-size:20px}
.mu-fname{flex:1;min-width:0;font-size:12px;color:#414c5c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mu-form{margin-top:10px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}

/* 方案明细折叠区（陈总 2026-10-12：预审结果要能点开看「银行方案 / 消费金融方案」） */
.plan-fold{margin-top:10px;border:1px solid #e3e8ef;border-radius:10px;background:#fbfcfe}
.plan-fold>summary{cursor:pointer;list-style:none;padding:10px 12px;font-weight:600;color:#1d4e89;
  font-size:13px;display:flex;align-items:center;gap:6px}
.plan-fold>summary::-webkit-details-marker{display:none}
.plan-fold>summary::before{content:'▸';color:#94a3b8;font-size:12px;transition:transform .15s}
.plan-fold[open]>summary::before{content:'▾'}
.plan-fold>summary:hover{background:#f1f6fc}
.plan-fold>div{padding:2px 12px 12px}
.plan-fold .chk{margin:4px 0 0;padding-left:16px}
.plan-fold .chk li{font-size:12px;line-height:1.7;color:#414c5c}

/* 上传/识别进度条（陈总 2026-10-12：上传与识别过程都要看到百分比） */
.pbar{height:6px;border-radius:999px;background:rgba(29,78,137,.10);overflow:hidden;margin:6px 0 2px}
.pbar>i{display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,#3d8fd6,#1d4e89);transition:width .3s ease}
.mu-card.mu-run .mu-st{color:#1d4e89;font-weight:600}
