/* ══════════ 昌盛集团报价系统 · 样式 ══════════ */
:root{ --ink:#1d2733; --line:#d9dde2; --bg:#eef0f3; --brass:#a8823f; --brass-d:#8a6a2f; }
*{box-sizing:border-box}
body{
  margin:0; min-height:100vh; background:var(--bg); color:var(--ink);
  font-family:-apple-system,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
}
[hidden]{display:none !important}
.qt-toast{
  position:fixed; top:14px; left:50%; transform:translateX(-50%); z-index:99;
  background:var(--ink); color:#fff; padding:9px 18px; border-radius:20px; font-size:13px;
  box-shadow:0 4px 14px rgba(20,30,40,.25);
}
/* 登录 */
.qt-auth-wrap{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px}
.qt-auth{width:100%; max-width:380px; background:#fff; border:1px solid var(--line); border-radius:12px; overflow:hidden}
.qt-auth-tabs{display:flex; border-bottom:1px solid var(--line)}
.qt-seg-btn.wide{flex:1; padding:12px}
.qt-auth-form{padding:20px}
.qt-auth-note{font-size:11px; color:#8a94a0; text-align:center; margin-top:12px}
.qt-print.full{width:100%; margin-top:6px}
/* 顶栏 */
.qt-topbar{
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
  padding:14px 24px; background:#fff; border-bottom:1px solid var(--line);
}
.qt-userbox{display:flex; align-items:center; gap:10px; flex-wrap:wrap; justify-content:flex-end}
.qt-usertag{font-size:13px; color:var(--brass-d); font-weight:600}
.qt-brand{display:flex; flex-direction:column; line-height:1.15}
.qt-brand-cn{font-size:18px; font-weight:800; letter-spacing:.04em; color:#1F2733}
.qt-brand-en{font-size:10.5px; font-weight:600; letter-spacing:.08em; color:var(--brass-d); margin-top:1px}
.qt-sub{font-size:12px; color:#6b7480}
/* ══════════ 左侧分级菜单（侧边栏布局） ══════════ */
.qt-shell{display:flex; align-items:stretch; min-height:100vh}
.qt-sidebar{flex:0 0 208px; width:208px; background:#fff; border-right:1px solid var(--line);
  display:flex; flex-direction:column; position:sticky; top:0; height:100vh; overflow-y:auto; z-index:30}
.qt-side-head{display:flex; align-items:center; justify-content:space-between; gap:8px; padding:16px 14px 12px; border-bottom:1px solid var(--line)}
.qt-side-collapse{border:none; background:transparent; cursor:pointer; color:#9aa4b0; font-size:16px; line-height:1; padding:4px 7px; border-radius:5px}
.qt-side-collapse:hover{background:#f0f2f5; color:var(--ink)}
.qt-sidenav{display:flex; flex-direction:column; padding:8px 0 20px}
.qt-side-group{font-size:11px; color:#9aa4b0; font-weight:700; letter-spacing:.06em; padding:12px 18px 4px}
.qt-side-btn{display:flex; align-items:center; gap:11px; width:100%; border:none; background:transparent;
  padding:10px 18px; font-size:14px; cursor:pointer; color:#3a4552; text-align:left; border-left:3px solid transparent}
.qt-side-btn:hover{background:#f3f5f8}
.qt-side-btn.on{background:#eef2f7; color:var(--ink); font-weight:700; border-left-color:var(--brass)}
.qt-side-ico{flex:0 0 20px; width:20px; text-align:center; font-size:15px}
.qt-side-tx{flex:1 1 auto; white-space:nowrap; overflow:hidden}
.qt-main{flex:1 1 auto; min-width:0; display:flex; flex-direction:column}
.qt-topbar-slim{display:flex; align-items:center; justify-content:flex-end; gap:10px; flex-wrap:wrap;
  padding:10px 24px; background:#fff; border-bottom:1px solid var(--line); position:sticky; top:0; z-index:20}
.qt-hamb{display:none; border:1px solid var(--line); background:#fff; border-radius:6px; font-size:16px; padding:5px 11px; cursor:pointer; margin-right:auto}
.qt-side-backdrop{display:none}
/* 折叠态（窄条只留图标） */
.qt-shell.side-collapsed .qt-sidebar{flex-basis:58px; width:58px}
.qt-shell.side-collapsed .qt-side-tx,.qt-shell.side-collapsed .qt-side-group,.qt-shell.side-collapsed .qt-brand{display:none}
.qt-shell.side-collapsed .qt-side-btn{justify-content:center; padding:11px 0; gap:0; position:relative}
.qt-shell.side-collapsed .qt-side-head{justify-content:center; padding:14px 0}
.qt-shell.side-collapsed .qt-side-collapse{transform:rotate(180deg)}
.qt-shell.side-collapsed .qt-side-btn .nav-badge{position:absolute; top:5px; right:9px}
/* 布局 */
.qt-root{display:flex; gap:24px; align-items:flex-start; padding:24px}
.qt-form{flex:1 1 52%; max-width:640px}
.qt-preview{flex:1 1 48%; position:sticky; top:24px}
.qt-actionsbar{display:flex; gap:10px; align-items:flex-end; margin-bottom:14px; flex-wrap:wrap}
.qt-records{padding:24px; max-width:1100px}
.qt-field.inline{margin:0}
.qt-field.inline .qt-input{width:auto; min-width:150px}
/* 控件 */
button{font-family:inherit}
.qt-print{background:var(--ink); color:#fff; border:none; border-radius:6px; padding:9px 16px; font-size:13px; cursor:pointer}
.qt-print:hover{background:#2c3a4a}
.qt-print:disabled{opacity:.6; cursor:default}
.qt-lockbtn{background:#fff; border:1px solid var(--line); border-radius:6px; padding:9px 14px; font-size:13px; cursor:pointer; color:#5a6470}
.qt-lockbtn:hover{border-color:var(--brass)}
.qt-pin-err{font-size:12px; color:#a33; margin-bottom:8px}
.qt-section{background:#fff; border:1px solid var(--line); border-radius:10px; padding:16px; margin-bottom:14px}
.qt-sec-title{font-size:12px; font-weight:700; letter-spacing:.12em; color:var(--brass-d); margin-bottom:12px; text-transform:uppercase}
.qt-grid2{display:grid; grid-template-columns:1fr 1fr; gap:10px}
.qt-grid3{display:grid; grid-template-columns:1fr 1fr 1fr; gap:10px}
@media(max-width:560px){.qt-grid3{grid-template-columns:1fr 1fr}}
.qt-field{display:block; margin-bottom:10px}
.qt-label{display:block; font-size:12px; color:#5a6470; margin-bottom:4px}
.qt-label-row{display:flex; justify-content:space-between; align-items:center; margin:6px 0}
.qt-input{width:100%; border:1px solid var(--line); border-radius:6px; padding:8px 10px; font-size:14px; background:#fbfcfd; color:var(--ink)}
.qt-input:focus{outline:2px solid var(--brass); outline-offset:0; border-color:var(--brass)}
select.qt-input{appearance:auto}
.qt-proc-row{display:flex; gap:8px; align-items:center; margin-bottom:8px}
.qt-proc-n{flex:0 0 22px; height:22px; border-radius:50%; background:var(--ink); color:#fff; font-size:11px; display:flex; align-items:center; justify-content:center}
.qt-proc-color{flex:0 0 auto; display:flex; align-items:center; gap:3px}
.qt-proc-color-u{font-size:12px; color:#666}
.qt-mini{background:none; border:1px dashed var(--brass); color:var(--brass-d); border-radius:6px; padding:4px 10px; font-size:12px; cursor:pointer}
.qt-mini:hover{background:#faf6ec}
.attach-btn{display:inline-block}
.qt-x{flex:0 0 26px; height:26px; border:none; background:#f0f2f4; border-radius:6px; color:#8a94a0; cursor:pointer; font-size:14px}
.qt-x:hover{background:#e8d9d9; color:#a33}
.qt-seg{display:inline-flex; border:1px solid var(--line); border-radius:6px; overflow:hidden}
.qt-seg-btn{border:none; background:#fff; padding:6px 14px; font-size:12px; cursor:pointer; color:#5a6470}
.qt-seg-btn.on{background:var(--ink); color:#fff}
.qt-toolbar{display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; gap:8px; flex-wrap:wrap}
/* 图片 */
.qt-imgrow{display:grid; grid-template-columns:repeat(3,1fr); gap:10px}
.qt-imgslot{position:relative; aspect-ratio:4/3; border:1px solid var(--line); border-radius:8px; overflow:hidden; background:#fbfcfd}
.qt-imgslot img{width:100%; height:100%; object-fit:cover; display:block}
/* PDF 附件小卡片（图片框里显示可点开的 PDF） */
.media-pdf{width:100%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; cursor:pointer; background:#fdf3f2; color:#b23b32}
.media-pdf:hover{background:#fbe7e5}
.media-pdf-ic{font-size:26px; line-height:1}
.media-pdf-t{font-size:11px; font-weight:700; letter-spacing:.5px}
.dg-img .media-pdf-ic{font-size:22px}
.dg-img .media-pdf-t{font-size:10px}
.img-x{position:absolute; top:6px; right:6px; background:rgba(255,255,255,.9)}
.qt-imgadd{display:flex; flex-direction:column; align-items:center; justify-content:center; height:100%; cursor:pointer; color:#8a94a0; gap:2px}
.qt-imgadd span:first-child{font-size:22px; color:var(--brass)}
.qt-imgadd-t{font-size:11px}
.qt-imgadd:hover{background:#faf6ec}
/* 附件 */
.qt-attach-list{list-style:none; margin:10px 0 0; padding:0}
.qt-attach-list li{display:flex; align-items:center; gap:10px; font-size:13px; padding:6px 0; border-bottom:1px dashed var(--line)}
.qt-attach-list a{color:var(--brass-d)}
.qt-attach-size{color:#8a94a0; font-size:11px; margin-left:auto}
/* 内部 */
.internal-tbl{margin-top:6px}
.internal-tbl th{background:var(--brass-d) !important}
.low-margin{color:#a33; font-weight:700}
/* 记录 */
.qt-rec-tablewrap{overflow-x:auto; background:#fff; border:1px solid var(--line); border-radius:10px}
.qt-table.rec{font-size:12.5px}
.qt-table.rec td,.qt-table.rec th{white-space:normal; overflow-wrap:break-word; word-break:break-word}
.rec-actions{display:flex; gap:6px}
.qt-empty{background:#fff; border:1px dashed var(--line); border-radius:10px; padding:32px; text-align:center; color:#8a94a0; font-size:13px}
/* 报价单 */
.qt-sheet{background:#fff; border:1px solid var(--line); border-radius:4px; padding:32px 36px; box-shadow:0 2px 10px rgba(20,30,40,.06)}
.qt-plate{position:relative; text-align:center; padding:16px 12px 14px; border-radius:3px;
  background:linear-gradient(105deg,#c9a45c 0%,#e9d8a6 22%,#b58f45 48%,#e3cf97 74%,#c09a4e 100%); color:#2a2010}
.qt-plate-screw{position:absolute; top:50%; width:9px; height:9px; border-radius:50%;
  background:radial-gradient(circle at 35% 35%,#fdf6df,#7a5f28); transform:translateY(-50%)}
.qt-plate-screw.a{left:12px} .qt-plate-screw.b{right:12px}
.qt-co{font-size:19px; font-weight:800; letter-spacing:.22em}
.qt-tag{font-size:10px; letter-spacing:.14em; margin-top:3px; opacity:.85}
.qt-sheet-title{text-align:center; font-size:15px; font-weight:700; letter-spacing:.5em; margin:18px 0 14px}
.qt-meta{display:grid; grid-template-columns:repeat(3,1fr); border:1px solid var(--line)}
.qt-meta-cell{padding:8px 10px; border-right:1px solid var(--line); border-bottom:1px solid var(--line)}
.qt-meta-cell:nth-child(3n){border-right:none}
.qt-meta-cell:nth-last-child(-n+3){border-bottom:none}
.mk{font-size:10px; color:#7a8390; letter-spacing:.05em}
.mv{font-size:13px; margin-top:2px; font-variant-numeric:tabular-nums}
.qt-sec{font-size:11px; font-weight:700; letter-spacing:.14em; color:var(--brass-d); margin:18px 0 6px; text-transform:uppercase}
.qt-sheet-imgs{display:grid; grid-template-columns:repeat(3,1fr); gap:8px}
.qt-sheet-imgs img{width:100%; aspect-ratio:4/3; object-fit:cover; border:1px solid var(--line); border-radius:3px}
.qt-sheet-attach{font-size:12px; color:#5a6470; border:1px solid var(--line); padding:8px 10px}
.qt-table{width:100%; border-collapse:collapse; font-size:13px}
.qt-table td,.qt-table th{border:1px solid var(--line); padding:7px 10px; text-align:left; vertical-align:top}
.qt-table td.k{width:32%; color:#5a6470; background:#f7f8f9; font-size:12px}
.qt-table th{background:var(--ink); color:#fff; font-size:12px; font-weight:600}
.qt-table td.num{font-variant-numeric:tabular-nums}
.qt-table td.empty{color:#a7afba; text-align:center; font-size:12px; padding:14px}
.qt-foot{margin-top:20px; padding-top:10px; border-top:1px solid var(--line); font-size:10.5px; color:#7a8390; line-height:1.5}

@media (max-width:900px){
  .qt-root{flex-direction:column}
  .qt-preview{position:static; width:100%}
  .qt-form{max-width:none}
}
/* 打印预览模式 */
body.preview-mode .qt-form{display:none !important}
body.preview-mode .qt-topbar,body.preview-mode .qt-sidebar,body.preview-mode .qt-topbar-slim{display:none !important}
body.preview-mode .qt-root{display:block; background:#525659; padding:56px 16px 40px; min-height:100vh}
body.preview-mode .qt-preview{position:static; max-width:1123px; margin:0 auto}   /* 横向 A4(297mm≈1123px)：预览所见即打印，与横向PDF/打印一致 */
body.preview-mode .qt-toolbar{display:none !important}
body.preview-mode .qt-sheet{box-shadow:0 4px 24px rgba(0,0,0,.4)}
.preview-bar{
  position:fixed; top:0; left:0; right:0; z-index:70;
  display:flex; justify-content:space-between; align-items:center;
  background:#1d2733; color:#fff; padding:8px 20px; font-size:13px;
}
.preview-bar div{display:flex; gap:8px}
.preview-bar .qt-lockbtn{background:transparent; color:#fff; border-color:#5a6470}

@media print{
  @page{size:A4 landscape; margin:0}   /* 打印统一横向，与预览/存PDF 一致 */
  .no-print,.qt-topbar,.preview-bar{display:none !important}
  body{background:#fff}
  .qt-root{background:#fff; padding:0 !important; display:block; min-height:auto}
  .qt-preview{position:static; max-width:none; margin:0}
  .qt-sheet{border:none; box-shadow:none !important; border-radius:0; padding:10mm 10mm !important}
  /* 自动排版：内容/图片完整展示，跨页时整行整图不被切开 */
  .qt-sheet .items-tbl{width:100% !important; table-layout:fixed}
  .qt-sheet .items-tbl tr, .qt-sheet .sheet-parties, .qt-sheet .qt-meta, .qt-sheet .terms-block{page-break-inside:avoid; break-inside:avoid}
  .qt-sheet td, .qt-sheet th{overflow:visible; white-space:normal; overflow-wrap:anywhere; word-break:break-word}
  .qt-sheet img{max-width:100% !important; height:auto !important; page-break-inside:avoid; break-inside:avoid}
  .qt-sheet .pic-td img{width:auto; max-width:100%; max-height:34mm; object-fit:contain}
  .qt-sheet .gross-row{page-break-inside:avoid}
}

/* v2: 供应商卡片 */
.sup-card{border:1px solid #bcd3f0; border-radius:8px; padding:12px; margin-bottom:12px; background:#eaf2fc}
.proc-panel{border:1px solid #f2d488; border-radius:8px; padding:12px; background:#fffbe9}
.proc-panel .qt-label{color:#8a6a00}
.sup-title{font-size:12px; font-weight:700; color:var(--brass-d); margin-bottom:8px}

/* 报价单品牌抬头 */
.qt-logo{width:100%; display:block; margin-bottom:4px}

/* 镍贴纸自动报价面板 */
.nickel-panel{border:1px solid var(--brass); border-radius:8px; padding:12px; margin-bottom:12px; background:#fdfaf3}
.discount-low{border-color:#a33 !important; color:#a33; font-weight:700}
.discount-warn{color:#a33; font-size:12px; font-weight:700; margin-top:6px}

/* PET面板勾选项 */
.pet-checks{display:flex; flex-direction:column; gap:6px; font-size:13px; margin:8px 0; color:#3a4450}
.pet-checks label{display:flex; align-items:center; gap:6px}
.pet-mini{width:60px !important; padding:4px 6px !important}

/* AI 提取设置盒子 */
.ai-box{border:1px solid var(--line); background:#fbfcfd; border-radius:8px; padding:10px 12px; margin-bottom:12px}

/* C类不干胶阶梯面板 */
.stk-checks{display:flex; flex-direction:column; gap:6px; font-size:13px; margin:4px 0 10px; color:#3a4450}
.stk-checks label{display:flex; align-items:center; gap:6px}
.stk-ladder{width:100%; border-collapse:collapse; margin:8px 0 4px; font-size:12.5px}
.stk-ladder th,.stk-ladder td{border:1px solid var(--line); padding:5px 10px; text-align:center}
.stk-ladder th{background:#f4efe2; color:var(--brass-d); font-weight:700}
.stk-ladder td:last-child{font-weight:700; color:#1d2733}
.stk-ladder tr.stk-on td{background:#fff3d6}

/* 财务 / 毛利 */
.fin-margin{margin-top:8px; padding:8px 10px; background:#f6f8fa; border:1px solid var(--line); border-radius:8px; font-size:13px; color:#3a4450}
.fin-low{color:#a33; font-weight:700}
.fin-ok{color:#1e7e34; font-weight:700}
.fill-green{background:#1e7e34}

/* 概览仪表盘 */
.kpi-row{display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:12px}
.kpi-card{background:#fff; border:1px solid var(--line); border-radius:10px; padding:14px 16px}
.kpi-v{font-size:24px; font-weight:800; color:#1F2733; line-height:1.2}
.kpi-l{font-size:12px; color:#6a7480; margin-top:4px}
.kpi-s{font-size:11px; color:#9aa4b0; margin-top:2px}
.kpi-amber .kpi-v{color:#a8710f}
.kpi-green .kpi-v{color:#1e7e34}
.kpi-red .kpi-v{color:#a33}
.kpi-row.perf{grid-template-columns:repeat(6,1fr)}
.dash-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:12px}
.dash-panel{background:#fff; border:1px solid var(--line); border-radius:10px; padding:14px 16px}
.dash-panel-h{font-weight:700; color:var(--brass-d); margin-bottom:10px; font-size:13px}
.dbar{display:flex; align-items:center; gap:10px; margin-bottom:8px; font-size:12px}
.dbar-l{width:88px; flex:0 0 88px; color:#3a4450; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.dbar-track{flex:1; background:#eef1f4; border-radius:6px; height:16px; overflow:hidden}
.dbar-fill{height:100%; border-radius:6px; background:#2b5db0; min-width:2px}
.dbar-r{flex:0 0 auto; color:#5a6470; white-space:nowrap; font-size:11.5px}
.fill-blue{background:#2b5db0}.fill-brass{background:#c9a24b}
.fill-s0,.fill-s1,.fill-s2{background:#c9a24b}
.fill-s3,.fill-s4{background:#1e7e34}
.fill-s5{background:#9aa4b0}
@media(max-width:1400px){ .dash-grid{grid-template-columns:repeat(2,1fr)} .kpi-row.perf{grid-template-columns:repeat(3,1fr)} }
@media(max-width:900px){ .kpi-row,.kpi-row.perf{grid-template-columns:repeat(2,1fr)} .dash-grid{grid-template-columns:1fr} }
/* ══════ 窄屏/常见笔记本自适应压缩：避免 100% 时内容比屏幕宽 ══════ */
@media(max-width:1600px){
  .qt-topbar{padding:10px 16px; gap:8px}
  .qt-seg-btn{padding:6px 10px; font-size:11.5px}
  .qt-lockbtn{padding:5px 8px !important; font-size:12px}
  .qt-records{padding:16px}
  .stat-card{min-width:88px; padding:12px 16px}
  .stat-card .stat-n{font-size:20px}
}
@media(max-width:1280px){
  .kpi-row{grid-template-columns:repeat(2,1fr)}
  .qt-records{padding:12px}
}
/* ══════ 侧边栏：窄屏改为抽屉 ══════ */
@media(max-width:820px){
  .qt-sidebar{position:fixed; left:0; top:0; height:100vh; transform:translateX(-100%); transition:transform .22s ease; box-shadow:2px 0 14px rgba(20,30,40,.18)}
  .qt-shell.side-open .qt-sidebar{transform:none}
  .qt-shell.side-open .qt-side-backdrop{display:block; position:fixed; inset:0; background:rgba(20,30,40,.4); z-index:25}
  .qt-hamb{display:inline-block}
  /* 抽屉里忽略折叠态，始终全宽显示文字 */
  .qt-shell.side-collapsed .qt-sidebar{flex-basis:208px; width:208px}
  .qt-shell.side-collapsed .qt-side-tx{display:inline}
  .qt-shell.side-collapsed .qt-side-group{display:block}
  .qt-shell.side-collapsed .qt-brand{display:flex}
  .qt-shell.side-collapsed .qt-side-btn{justify-content:flex-start; padding:10px 18px; gap:11px}
}
/* ══════ 平板/手机端 ══════ */
@media(max-width:768px){
  .qt-topbar{padding:8px 10px; gap:6px}
  .qt-brand-cn{font-size:15px} .qt-brand-en{display:none}
  .qt-seg{max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch}
  .qt-seg-btn{padding:6px 9px; font-size:12px; white-space:nowrap}
  .kpi-row,.kpi-row.perf{grid-template-columns:repeat(2,1fr)}
  .dash-grid{grid-template-columns:1fr}
  .qt-records{padding:10px}
  .stats-row{gap:8px}
  .stat-card{min-width:0; flex:1 1 44%; padding:10px 8px}
  .stat-card .stat-n{font-size:18px}
  .stat-by{min-width:0; max-width:none; flex:1 1 100%}
  .opp-col{flex:0 0 82vw}            /* 手机看板：约一屏一列，横滑切换 */
  .rec-actions{width:auto; max-width:none}
  .qt-field.inline .qt-input{min-width:0}
}
@media(max-width:560px){
  .kpi-row,.kpi-row.perf{grid-template-columns:1fr 1fr}
  .qt-userbox{gap:6px}
  .qt-lockbtn{font-size:11.5px}
  .qt-brand{flex:1 1 100%}
}

/* 商机看板 */
.opp-board{display:flex; gap:12px; overflow-x:auto; padding:4px 2px 12px; align-items:flex-start}
.opp-col{flex:0 0 240px; background:#f4f6f8; border-radius:10px; padding:8px; min-height:120px; position:relative}
/* 看板列宽拖动手柄（落在列右缘的间隙里，不挡卡片点击） */
.opp-col-rz{position:absolute; top:0; right:-6px; width:11px; height:100%; cursor:col-resize; z-index:3; border-radius:6px}
.opp-col-rz:hover{background:rgba(43,93,176,.18)}
.opp-col-h{font-weight:700; font-size:13px; color:#2b3440; padding:4px 6px 8px; display:flex; align-items:center; gap:6px}
.opp-col-n{background:#dbe2ea; color:#4a5563; border-radius:10px; padding:0 8px; font-size:12px}
.opp-col-0 .opp-col-h,.opp-col-1 .opp-col-h,.opp-col-2 .opp-col-h{color:#a8710f}
.opp-col-3 .opp-col-h,.opp-col-4 .opp-col-h{color:#1e7e34}
.opp-col-5 .opp-col-h{color:#8a94a0}
.opp-card-detail{margin-top:5px; font-size:12px; color:#2b3440; line-height:1.5}
.opp-card.opp-overdue{border-color:#e0a3a3; box-shadow:0 0 0 1px #f0d3d3 inset}
.opp-stay{color:#8a94a0}
.opp-stay.over{color:#a33; font-weight:700}
.opp-log{max-height:22vh; overflow:auto; border:1px solid var(--line); border-radius:6px; padding:6px 8px; background:#fbfcfd}
.opp-log-row{font-size:12px; color:#3a4450; line-height:1.7}
.opp-log-t{color:#8a94a0; margin-right:6px}
/* 来源商机横幅 */
.opp-banner{background:#eef6ef; border:1px solid #cfe6d2; color:#22503a; border-radius:8px; padding:8px 12px; margin-bottom:10px; font-size:13px}
.opp-banner-tag{background:#1e7e34; color:#fff; border-radius:4px; padding:1px 7px; font-size:12px; margin-right:4px}
.opp-banner.has-warn,.opp-banner:has(.opp-banner-warn){background:#fbf3e3;border-color:#f0dcae;color:#7a5b1e}
.opp-banner-warn{background:#c8892b}
/* 客户档案三条链 */
.chain-list{display:flex; flex-wrap:wrap; gap:6px}
.chain-chip{background:#eef2f6; border:1px solid #dbe2ea; color:#3a4450; border-radius:6px; padding:2px 8px; font-size:12px; cursor:pointer; transition:background .12s,border-color .12s}
.chain-chip:hover{border-color:#c9a24b; background:#fbf3df}
.chain-go{color:#c9a24b; font-weight:700}
.chain-link{color:#2f6fed; text-decoration:none; cursor:pointer}
.chain-link:hover{text-decoration:underline}
.opp-col-body{display:flex; flex-direction:column; gap:8px}
.opp-card{position:relative; background:#fff; border:1px solid #e4e9ef; border-radius:8px; padding:9px 10px; cursor:pointer; box-shadow:0 1px 2px rgba(20,30,40,.04)}
.opp-card:hover{border-color:#c9a24b}
.opp-card.opp-fav{border-color:#e88; box-shadow:0 0 0 1px #f3c2c2}
/* OKKI 式卡片：标题 + 标签值行 + 红心 + ⋮ */
.opp-card-title{font-weight:700; color:#1668dc; font-size:13.5px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; min-width:0}
/* ho：三个图标放大 + 竖排固定在卡片右侧，好看好点 */
.opp-card-ctrl{position:absolute; top:8px; right:8px; display:flex; flex-direction:column; align-items:center; gap:6px; flex:0 0 auto; z-index:3}
.opp-card-ctrl > button{width:34px; height:34px; display:flex; align-items:center; justify-content:center; border-radius:9px; border:1px solid #e4e9ef; background:#fff; box-shadow:0 1px 3px rgba(20,30,40,.08); font-size:19px; line-height:1; padding:0; cursor:pointer}
.opp-card-ctrl > button:hover{border-color:#c9a24b; background:#fffdf5}
.opp-card .opp-card-title{padding-right:46px}
.opp-heart{color:#c2c9d2}
.opp-heart.on{color:#e5484d; border-color:#f3c2c2 !important; background:#fff5f5 !important}
/* gg 商机弹窗每行4类目 */
.qt-grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 12px}
@media(max-width:980px){.qt-grid4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.qt-grid4{grid-template-columns:1fr}#oppModal .qt-grid2{grid-template-columns:1fr !important}}
/* gd 跟进时间线：主账户=紫 主管=橙 业务=绿 一眼区分 */
.fl-adm{background:#f5edff;border-left:3px solid #8b5cf6;border-radius:7px;margin:3px 0}
.fl-mgr{background:#fff3e0;border-left:3px solid #d97706;border-radius:7px;margin:3px 0}
.fl-staff{background:#edf8f1;border-left:3px solid #1f6f43;border-radius:7px;margin:3px 0}
.fl-by{font-weight:700;color:#1f6f43}
.fl-by.adm{color:#6b3fb0}
.fl-by.mgr{color:#b45309}
.opp-log-mgr{background:#fff6e6; border-left:3px solid #d97706; border-radius:4px; padding:2px 6px; margin:2px -4px}
.opp-log-badge.mgr{background:#d97706}
/* gb 商机弹窗按钮悬浮：吸在弹窗底部，随时可点，不用拉到最下面 */
.opp-actions-sticky{position:sticky;bottom:-20px;background:#fff;padding:10px 0 14px;margin-bottom:-20px;
  border-top:1px solid var(--line);z-index:20;box-shadow:0 -6px 14px rgba(0,0,0,.05);flex-wrap:wrap}
/* fy 催款标记：灰=未标，亮金=要把钱催进来；卡片描金边一眼可见 */
.opp-urge{filter:grayscale(1); opacity:.45}
.opp-urge.on{filter:none; opacity:1; border-color:#e2c76f !important; background:#fff8e2 !important}
.opp-urge.on{filter:none; opacity:1; transform:scale(1.12)}
.opp-card.opp-urgepay{border:2px solid #d9a514; box-shadow:0 0 0 2px rgba(217,165,20,.18)}
.opp-card.opp-urgepay .opp-card-title::before{content:"💰催款 "; color:#a87b00; font-size:12px; font-weight:800}
.opp-urgebtn{color:#a87b00; border-color:#e2c76f !important}
.opp-urgebtn.on{background:#d9a514 !important; color:#fff !important; border-color:#d9a514 !important}
.opp-more{color:#7b8794; font-weight:700}
.opp-more:hover{color:#3a4450}
.opp-kv{margin-top:3px; font-size:12px; color:#2b3440; line-height:1.5; display:flex; gap:4px}
.opp-kv .k{color:#98a2ad; flex:0 0 auto}
.opp-v-clip{overflow:hidden; min-width:0; word-break:break-word; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical}
/* 商机「动态」高亮：最新动态绿色，今天更新的加浅绿底提醒 */
.opp-act .opp-v-clip{color:#1e7e34; font-weight:600}
.opp-act.opp-act-new{background:#e9f7ee; border-left:3px solid #1e7e34; border-radius:5px; padding:3px 6px; margin-left:-2px}
/* 主账户写的跟进：紫色高亮，与业务的绿色跟进区分 */
.opp-act.opp-act-admin{background:#efe7fb; border-left:3px solid #6b3fb0; border-radius:5px; padding:3px 6px; margin-left:-2px}
.opp-act.opp-act-admin .opp-v-clip{color:#6b3fb0; font-weight:700}
/* jc 主管写的跟进：橙色高亮（介于主账户紫、业务绿之间，一眼分得清是谁写的） */
.opp-act.opp-act-mgr{background:#fff2e0; border-left:3px solid #d97706; border-radius:5px; padding:3px 6px; margin-left:-2px}
.opp-act.opp-act-mgr .opp-v-clip{color:#b45309; font-weight:700}
.opp-log-admin{background:#f5f0fc; border-left:3px solid #6b3fb0; border-radius:4px; padding:2px 6px; margin:2px -4px}
/* jc 业务写的跟进：绿色（与紫/橙形成三色对比；系统动作无 by，保持素色不抢眼） */
.opp-log-staff{background:#edf8f1; border-left:3px solid #1f6f43; border-radius:4px; padding:2px 6px; margin:2px -4px}
.opp-log-badge{display:inline-block; background:#6b3fb0; color:#fff; font-size:10px; font-weight:700; border-radius:4px; padding:0 5px; margin-right:3px}
.opp-log-badge.staff{background:#1f6f43}
.opp-log-by{color:#8a6a2f; font-weight:600; margin-right:3px}
/* jc 动态日志色卡图例：一眼看懂三种颜色分别代表谁 */
.opp-log-legend{float:right; font-size:11px; font-weight:600; color:#8a94a0; display:inline-flex; align-items:center; gap:3px}
.opp-log-legend i{display:inline-block; width:9px; height:9px; border-radius:2px; margin-left:6px}
.opp-log-legend .lg-adm{background:#6b3fb0}
.opp-log-legend .lg-mgr{background:#d97706}
.opp-log-legend .lg-staff{background:#1f6f43}
/* 客户抽屉：可编辑背调 */
.cd-bg-edit{margin-top:12px; border-top:1px dashed var(--line); padding-top:10px}
.cd-bg-h{font-size:13px; font-weight:600; color:#6b3fb0; margin-bottom:5px}
/* 概览 · 月度对比/转化率看板 */
.cv-board{border:1px solid var(--line); border-radius:12px; background:#fff; padding:14px 16px; margin:0 0 16px}
.cv-h{font-size:15px; font-weight:700; color:#2a3138; margin-bottom:10px}
.cv-cards{display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:12px}
.cv-card{border:1px solid var(--line); border-radius:10px; padding:10px 12px; background:#fbfcfd}
.cv-card .cv-n{font-size:24px; font-weight:800; color:#2a3138}
.cv-card .cv-n small{font-size:12px; font-weight:700}
.cv-card .cv-l{font-size:12px; color:#5a6470; margin-top:2px}
.cv-card .cv-sub{font-size:11px; color:#8a94a0; margin-top:1px}
.cv-up{color:#1e7e34}.cv-down{color:#c0392b}.cv-flat{color:#8a94a0}
.cv-grid{display:grid; grid-template-columns:1.1fr 1fr 1fr; gap:12px}
@media(max-width:1000px){ .cv-cards{grid-template-columns:repeat(2,1fr)} .cv-grid{grid-template-columns:1fr} }
.cv-panel{border:1px solid var(--line); border-radius:10px; padding:10px 12px; background:#fff}
.cv-panel-h{font-size:13px; font-weight:700; color:#3a4450; margin-bottom:8px}
.cv-bar-row{display:flex; align-items:center; gap:8px; margin:5px 0; font-size:12.5px}
.cv-bar-l{width:118px; flex:0 0 auto; color:#5a6470}
.cv-bar-track{flex:1 1 auto; height:14px; background:#eef1f4; border-radius:7px; overflow:hidden}
.cv-bar-fill{display:block; height:100%; border-radius:7px}
.cv-bar-fill.fill-a{background:#e0a63c}.cv-bar-fill.fill-b{background:#c98a3a}.cv-bar-fill.fill-c{background:#c0603a}.cv-bar-fill.fill-w{background:#1e7e34}
.cv-bar-n{width:44px; flex:0 0 auto; text-align:right; font-weight:700; color:#2a3138}
.cv-note{font-size:11.5px; color:#8a6a2f; margin-top:8px; line-height:1.5}
.cv-tbl{width:100%; border-collapse:collapse; font-size:12.5px}
.cv-tbl th,.cv-tbl td{border-bottom:1px solid var(--line); padding:5px 6px; text-align:left}
.cv-tbl th{color:#8a94a0; font-weight:600}
.cv-tag{display:inline-block; padding:1px 7px; border-radius:10px; font-size:11px; font-weight:700}
.cv-tag.cv-new{background:#fde2e2; color:#c0392b}.cv-tag.cv-old{background:#e2f5e8; color:#1e7e34}
/* 转给他人：范围单选 */
.ho-radio{display:inline-flex; align-items:center; gap:4px; margin-right:14px; font-size:13px; color:#3a4450; cursor:pointer}
/* 跟进计划 / 提醒 编辑器 */
.fp-box{margin:10px 0}
.fp-h{font-size:14px; font-weight:700; color:#2a3138; margin-bottom:6px}
.fp-tpl{display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-bottom:8px}
.fp-list{display:flex; flex-direction:column; gap:6px}
.fp-row{display:flex; align-items:center; gap:6px; padding:5px 6px; border:1px solid var(--line); border-radius:8px; background:#fff}
.fp-row .fp-date{width:150px; flex:0 0 auto}
.fp-row .fp-note{flex:1 1 auto; min-width:120px}
.fp-donelab{display:inline-flex; align-items:center; gap:3px; font-size:12px; color:#5a6470; white-space:nowrap}
.fp-row.fp-due{border-color:#e0392b; background:#fdecec}
.fp-row.fp-due .fp-date{color:#c0392b; font-weight:700}
.fp-row.fp-done-row{opacity:.55; background:#f4f6f8}
.fp-foot{display:flex; align-items:center; gap:8px; margin-top:8px}
/* 商机卡片：跟进计划到期红色提醒 */
.opp-kv.opp-followdue{background:#fdecec; border-left:3px solid #e0392b; border-radius:5px; padding:3px 6px; margin-left:-2px}
.opp-kv.opp-followdue .k{color:#c0392b}
.opp-kv.opp-followdue .opp-v-clip{color:#c0392b; font-weight:600}
.opp-thumb{width:72px; height:52px; object-fit:cover; border-radius:5px; border:1px solid var(--line)}
/* 商机弹窗图片上传 */
.ord-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:8px}
.ord-card{border:1px solid var(--line,#e5e8ee);border-radius:12px;padding:12px;background:#fff;cursor:pointer;transition:box-shadow .15s}
.ord-card:hover{box-shadow:0 3px 12px rgba(0,0,0,.08)}
.ord-card.is-today{border-color:#c9a94f;box-shadow:0 0 0 2px rgba(201,169,79,.15)}
.ord-card .opp-kv{font-size:12px;margin-top:3px}
.ord-card-acts{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line,#e5e8ee)}
.dg-nos{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}
.dg-no{font-size:11px;background:#eef3fb;color:#345;border-radius:4px;padding:1px 6px}
.op-img-slot{margin-top:2px;border-radius:8px}
.op-img-slot.prod-active{outline:2px solid var(--brand,#2f6fed);outline-offset:2px}
.op-img-slot.drop-hot{outline:2px dashed #2f6fed;outline-offset:2px;background:#eef4ff}
/* iz：全站通用的拖拽落点高亮（没有更具体样式的地方用这个兜底，比 .op-img-slot/.od-dropzone 的专属样式优先级低，不会覆盖它们） */
.drop-hot{outline:2px dashed #2f6fed;outline-offset:-2px;background:#eef4ff;border-radius:8px;transition:background .1s}
.op-img-wrap{position:relative; display:inline-block}
.op-img-wrap img{max-width:160px; max-height:120px; border-radius:8px; border:1px solid var(--line); display:block}
.op-img-wrap .qt-x{position:absolute; top:-8px; right:-8px}
.opp-menu{position:absolute; top:30px; right:8px; z-index:20; background:#fff; border:1px solid var(--line); border-radius:8px; box-shadow:0 6px 20px rgba(20,30,40,.16); padding:4px; min-width:120px; display:flex; flex-direction:column}
.opp-menu button{border:none; background:none; text-align:left; padding:7px 12px; font-size:13px; color:#2b3440; cursor:pointer; border-radius:6px}
.opp-menu button:hover{background:#f2f5f8}
.opp-card-top{display:flex; justify-content:space-between; align-items:center; gap:6px; font-size:13.5px}

/* 商机筛选栏 */
.opp-filter{display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:2px 0 10px}
.opp-f-sel{width:auto; min-width:130px; padding:6px 10px; font-size:13px}
.opp-f-presets{display:inline-flex; border:1px solid var(--line); border-radius:8px; overflow:hidden}
.opp-f-btn{border:none; background:#fff; padding:6px 13px; font-size:13px; color:#5a6470; cursor:pointer; border-right:1px solid var(--line)}
.opp-f-btn:last-child{border-right:none}
.opp-f-btn.on{background:var(--ink); color:#fff}
.od-nocost .od-costcol{display:none}
/* 订单 PI 明细表：加宽弹窗后让每个输入框填满单元格、够大好点好改（业务反馈原来太小） */
.od-pi-tbl{border-collapse:separate;border-spacing:0}
.od-pi-tbl th,.od-pi-tbl td{padding:5px 6px;vertical-align:middle}
.od-pi-tbl td .qt-input{width:100%;min-width:0;box-sizing:border-box;padding:7px 8px;font-size:13px;min-height:34px}
.od-pi-tbl td.num{white-space:nowrap;font-weight:600}
.od-pi-tbl .qt-x{width:26px;height:26px;line-height:22px}
/* 外采明细：产品图/聊天截图 上传单元格 */
.pc-cell-img{display:flex;align-items:center;justify-content:center;width:100%;min-height:52px;border:1px dashed #cfd6de;border-radius:6px;cursor:pointer;overflow:hidden;background:#fafbfc}
.pc-cell-img:hover{border-color:var(--brass)}
.pc-cell-img img{max-width:100%;max-height:60px;display:block;border-radius:4px}
.pc-img-ph{font-size:12px;color:#8a94a0}
.chain-chip-pc{background:#eaf7f2;border-color:#bfe3d6;color:#0f766e}
.chain-chip-pc:hover{background:#d9f2ea;border-color:#0f766e}
/* 电话开发 */
.ph-card b{font-size:13.5px}
.ph-intent{display:inline-block;margin-left:6px;padding:0 7px;border-radius:9px;font-size:11px;font-weight:700;color:#fff}
.ph-intent-A{background:#1e7e34}.ph-intent-B{background:#c9a24b}.ph-intent-C{background:#8a94a0}
.ph-log-i{border-left:3px solid #0f766e;background:#f4fbf9;padding:5px 8px;margin-bottom:5px;border-radius:0 6px 6px 0;font-size:12px;color:#333}
.ph-log-note{color:#555;margin-top:2px}
.mail-cat{display:inline-block; border:1px solid #ccc; border-radius:10px; padding:1px 9px; font-size:12px; background:#fff}
.mail-att-chip{display:inline-flex; align-items:center; gap:4px; background:#eef2f7; border:1px solid var(--line); border-radius:6px; padding:2px 8px; font-size:12.5px; margin:2px 4px 2px 0}
.mail-att-chip .qt-x{border:none; background:none; cursor:pointer; color:#c0392b; font-size:14px; line-height:1}
.opp-f-sortgroup{align-items:center}
.opp-f-sortlab{padding:6px 8px; font-size:12px; color:#8a94a0; background:#f7f8fa; border-right:1px solid var(--line)}
.opp-f-custom{display:inline-flex; align-items:center; gap:4px; color:#8a94a0; font-size:13px}
.opp-f-date{width:auto; padding:5px 8px; font-size:12.5px}
#btnOppAnalytics.on{background:var(--ink); color:#fff; border-color:var(--ink)}

/* 商机统计分析面板 */
#oppAnalytics{display:flex; flex-wrap:wrap; gap:14px; margin:4px 0 14px}
.oa-panel{flex:1; min-width:320px; background:#fff; border:1px solid var(--line); border-radius:10px; padding:12px 14px}
.oa-title{font-weight:700; font-size:13px; color:var(--ink); margin-bottom:8px}
.oa-scroll{overflow-x:auto}
.oa-table{width:100%; border-collapse:collapse; font-size:12.5px}
.oa-table th,.oa-table td{border:1px solid var(--line); padding:5px 8px; text-align:center; white-space:nowrap}
.oa-table th{background:#f4f6f8; color:#5a6470; font-weight:600}
.oa-table td.oa-name{text-align:left; font-weight:600; color:#2b3440}
.oa-table td.has{background:#e8f0fb; color:#1668dc; font-weight:700}
.oa-table td.oa-tot{font-weight:700; background:#faf7ef}
.oa-empty{color:#a7afba; padding:12px}
.oa-bar{display:inline-block; width:52px; height:7px; border-radius:4px; background:#eef2f6; vertical-align:middle; margin-right:6px; overflow:hidden}
.oa-bar-f{display:block; height:100%; background:#1e7e34; border-radius:4px}
/* jh 业务员×来源交叉表：整行占满（来源列多，需要横向滚动），格子里带赢单小角标 */
.oa-panel.oa-wide{flex:1 1 100%; min-width:100%}
.oa-hint{font-weight:400; font-size:11.5px; color:#98a2ad; margin-left:8px}
.oa-mx td.has{position:relative}
.oa-mx .oa-w{position:absolute; top:1px; right:3px; font-size:9.5px; font-style:normal; font-weight:700; color:#1e7e34}
.oa-mx .oa-p{display:block; font-size:10px; font-style:normal; font-weight:600; color:#98a2ad; line-height:1.2}
.oa-mx tfoot td{background:#faf7ef; font-weight:700; border-top:2px solid #d9c9a3}
.oa-mx tfoot td.oa-name{background:#f4f0e4}
.opp-amt{color:#1e7e34; font-weight:700; white-space:nowrap}
.opp-card-tags{margin-top:4px; display:flex; flex-wrap:wrap; gap:4px}
.opp-tag{background:#eef2f6; color:#5a6470; border-radius:4px; padding:1px 6px; font-size:11px}
.opp-card-act{margin-top:5px; font-size:12px; color:#5a6470; line-height:1.5}
.opp-card-foot{margin-top:6px; font-size:11.5px; color:#8a94a0}
.opp-assist-tag{margin-top:4px; display:inline-block; font-size:11.5px; font-weight:700; color:#7c3aed; background:#f3e8ff; border:1px solid #d8b4fe; border-radius:6px; padding:1px 8px}
.opp-card-move{margin-top:6px; display:flex; justify-content:space-between; gap:6px}
.opp-card-move .qt-mini{padding:2px 10px}
.opp-empty{color:#c2cad3; text-align:center; font-size:12px; padding:8px 0}

/* 设计看板 — 图片 & 拖拽 */
.dg-card{cursor:grab}
.dg-card.dragging{opacity:.45; transform:scale(.98)}
.opp-col-body.dg-over{background:#fffbe9; outline:2px dashed var(--brass); outline-offset:-4px; border-radius:8px}

/* ix：设计单 紧急/重要 标记按钮 + 顶部横向业务卡片 */
.dg-card.dg-card-urgent{border-color:#e0554a; box-shadow:0 0 0 1px rgba(224,85,74,.35), 0 2px 8px rgba(224,85,74,.14)}
.dg-card.dg-card-important:not(.dg-card-urgent){border-color:#d6a018; box-shadow:0 0 0 1px rgba(214,160,24,.3)}
.dg-flagbar{display:flex; gap:5px; margin-bottom:5px}
.dg-flag{font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:20px; border:1px solid #dde3ea; background:#f7f8fa; color:#8a94a0; cursor:pointer; line-height:1.6; transition:.12s}
.dg-flag:hover{filter:brightness(.97)}
.dg-flag-u.on{background:#fdeceb; color:#c0392b; border-color:#e0554a}
.dg-flag-i.on{background:#fdf3da; color:#96720c; border-color:#d6a018}

.dgs-row{display:flex; gap:10px; overflow-x:auto; padding:2px 1px 6px}
.dgs-card{flex:0 0 auto; min-width:150px; background:#fff; border:1.5px solid #e3e8ee; border-radius:12px; padding:8px 11px; cursor:pointer; transition:.14s; box-shadow:0 1px 3px rgba(20,30,45,.05)}
.dgs-card:hover{border-color:#c7cfd9; transform:translateY(-1px)}
.dgs-card.dgs-on{border-color:var(--brass,#b8935a); background:#fffaf1; box-shadow:0 0 0 2px rgba(184,147,90,.18)}
.dgs-card.dgs-hot{border-color:#e0554a}
.dgs-card.dgs-hot.dgs-on{box-shadow:0 0 0 2px rgba(224,85,74,.22)}
.dgs-h{display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:6px}
.dgs-name{font-size:12.5px; font-weight:800; color:#33404d; white-space:nowrap}
.dgs-tot{font-size:12px; font-weight:800; color:#8a94a0; background:#f2f4f7; border-radius:10px; padding:0 7px}
.dgs-b{display:grid; grid-template-columns:repeat(3,1fr); gap:5px 10px}
.dgs-c{display:flex; flex-direction:column; align-items:center; gap:1px}
.dgs-c b{font-size:14px; font-weight:800; color:#33404d; line-height:1.1}
.dgs-c span{font-size:10px; color:#9aa4af; white-space:nowrap}
.dgs-c.dgs-u b{color:#c0392b}
.dgs-c.dgs-i b{color:#96720c}
.dgs-c.dgs-l b{color:#c0392b}
/* 商机看板：卡片自由拖到任意阶段列 */
.opp-card[draggable="true"]{cursor:grab}
.opp-card.opp-dragging{opacity:.45; transform:scale(.98); cursor:grabbing}
.opp-col-body.opp-drop-over{background:#fffbe9; outline:2px dashed var(--brass); outline-offset:-4px; border-radius:8px; min-height:40px}
.dg-thumb-wrap{position:relative; margin-top:7px}
.dg-thumb{display:block; width:100%; max-height:130px; object-fit:cover; border-radius:6px; border:1px solid var(--line)}
.dg-thumb-n{position:absolute; right:6px; bottom:6px; background:rgba(20,24,30,.78); color:#fff; font-size:11px; font-weight:700; padding:2px 7px; border-radius:10px}
/* 生产卡片：关键字段行 + 运费一眼可见 + 图片角标（生产单截图/成品图） */
.prod-kv{margin-top:4px; font-size:12px; color:#5a6470; line-height:1.5}
.prod-thumb-lbl{position:absolute; left:6px; top:6px; background:rgba(20,24,30,.72); color:#fff; font-size:10px; font-weight:700; padding:1px 6px; border-radius:9px}
.prod-chip{display:inline-block; margin-top:6px; padding:2px 9px; font-size:12px; font-weight:700; border-radius:11px}
.prod-chip-ok{background:#e9f7ee; color:#1e7e34; border:1px solid #bfe6cb}
.prod-chip-wait{background:#fff3e0; color:#c0392b; border:1px solid #f3d19b}
/* ji 列表视图里的「运费待填」标记：已发货却没填运费，一眼能扫出来 */
.prod-fr-wait{display:inline-block; background:#fff3e0; color:#c0392b; border:1px solid #f3d19b; border-radius:4px; padding:0 5px; font-size:11px; font-weight:700}
/* 客户列表：固定布局(OKKI式)——固定行高、单元格截断省略号、列宽可拖动 */
.cust-scroll{overflow-x:auto}
table.qt-table.cust-table{table-layout:fixed}   /* 盖过 .qt-table.rec 的 table-layout:auto */
.cust-table th, .cust-table td{box-sizing:border-box}
table.qt-table.cust-table td.cust-td{height:42px; max-height:42px; padding:6px 10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; word-break:normal; overflow-wrap:normal; vertical-align:middle}
table.qt-table.cust-table td.cust-td .qt-sub{display:inline}
table.qt-table.cust-table th{height:40px; padding:6px 10px; overflow:hidden; white-space:nowrap; vertical-align:middle}
.cust-th-tx{display:inline-block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:calc(100% - 8px); vertical-align:middle}
.cust-act-cell{overflow:visible !important; text-align:center}
/* 客户列表：可排序表头 + 列宽拖动 + 行内⋮菜单 + 选列面板 */
.cust-table th.cust-th{position:relative; cursor:pointer; user-select:none; white-space:nowrap}
.cust-table th.cust-th.sorted{color:#2b5db0}
.cust-sort-ar{font-size:10px; margin-left:3px}
.cust-col-rz{position:absolute; top:0; right:0; width:7px; height:100%; cursor:col-resize}
.cust-col-rz:hover{background:linear-gradient(to right,transparent,rgba(43,93,176,.35))}
/* 通用列宽拖动手柄（报价/订单列表） */
.col-rz{position:absolute; top:0; right:0; width:7px; height:100%; cursor:col-resize; user-select:none}
/* 报价单每行下边缘的行高拖动手柄（在序号格里） */
.row-rz{position:absolute; left:0; right:0; bottom:-3px; height:7px; cursor:row-resize; user-select:none; z-index:3}
.row-rz:hover{background:rgba(201,162,75,.5)}
.col-rz:hover{background:linear-gradient(to right,transparent,rgba(255,255,255,.5))}
.cust-menu-btn{font-size:16px; font-weight:700; line-height:1; padding:2px 8px}
.cust-row-menu{position:fixed; z-index:9999; background:#fff; border:1px solid var(--line); border-radius:8px; box-shadow:0 6px 24px rgba(20,24,30,.16); padding:5px; min-width:170px}
.cust-row-mi{padding:8px 12px; border-radius:6px; cursor:pointer; font-size:13px; white-space:nowrap}
.cust-row-mi:hover{background:#f1f5fb; color:#2b5db0}
.cust-cols-panel{position:absolute; z-index:9000; top:calc(100% + 4px); right:0; background:#fff; border:1px solid var(--line); border-radius:8px; box-shadow:0 6px 24px rgba(20,24,30,.16); padding:8px; min-width:230px}
.cust-col-ck{display:block; padding:5px 8px; font-size:13px; cursor:pointer; border-radius:5px}
.cust-col-ck:hover{background:#f1f5fb}
.cust-col-ck input{margin-right:6px}
/* 列表设置面板：行高段选 / 开关 / 字段 */
.cust-set-row{display:flex; justify-content:space-between; align-items:center; padding:6px 8px; font-size:13px; color:#3a4450}
.cust-seg-btn{border:1px solid var(--line); background:#fff; padding:2px 11px; font-size:12px; cursor:pointer}
.cust-seg-btn:first-of-type{border-radius:6px 0 0 6px}
.cust-seg-btn:last-of-type{border-radius:0 6px 6px 0; border-left:none}
.cust-seg-btn.on{background:#2b5db0; color:#fff; border-color:#2b5db0}
.cust-sw{display:inline-block; width:38px; height:20px; background:#cfd6df; border-radius:11px; position:relative; cursor:pointer; transition:background .15s; flex:0 0 auto}
.cust-sw.on{background:#2b5db0}
.cust-sw i{position:absolute; top:2px; left:2px; width:16px; height:16px; background:#fff; border-radius:50%; transition:left .15s}
.cust-sw.on i{left:20px}
.cust-set-title{font-size:12px; color:#8a94a0; padding:8px 8px 4px; margin-top:4px; border-top:1px solid var(--line)}
.cust-set-fields{max-height:250px; overflow:auto}
/* 公司名：可点开的链接 + 悬停复制/编辑图标 */
.cust-name-cell{position:relative; display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis}
.cust-name-link{color:#2b5db0; cursor:pointer; text-decoration:none}
.cust-name-link:hover{text-decoration:underline}
.cust-name-acts{position:absolute; right:0; top:0; height:100%; display:none; align-items:center; gap:1px; background:#fff; padding-left:8px}
tr:hover .cust-name-acts{display:inline-flex}
.cust-name-ic{border:none; background:none; cursor:pointer; color:#8a94a0; font-size:13px; padding:2px 5px; border-radius:4px; line-height:1}
.cust-name-ic:hover{background:#eef3fb; color:#2b5db0}
/* 行高 紧凑/宽松 · 斑马纹 · 竖向分割线 */
table.qt-table.cust-table.cust-rh-compact td.cust-td{height:32px; max-height:32px; padding:3px 10px}
table.qt-table.cust-table.cust-rh-compact th{height:32px; padding:3px 10px}
.cust-table.cust-zebra tbody tr:nth-child(even) td{background:#f8fafc}
.cust-table:not(.cust-vlines) td.cust-td, .cust-table:not(.cust-vlines) th{border-left:none; border-right:none}
/* 客户详情右侧滑出面板 */
.cust-drawer-mask{position:fixed; inset:0; background:rgba(20,24,30,.28); z-index:1200}
.cust-drawer{position:fixed; top:0; right:0; height:100vh; width:min(560px,94vw); background:#fff; z-index:1201; box-shadow:-8px 0 30px rgba(20,24,30,.16); transform:translateX(100%); transition:transform .22s ease; display:flex; flex-direction:column; overflow-y:auto}   /* 内容高过屏幕可滚动，底部按钮不会点不到 */
.cust-drawer.open{transform:translateX(0)}
.cd-head{display:flex; align-items:center; justify-content:space-between; padding:12px 16px; border-bottom:1px solid var(--line); flex:0 0 auto}
.cd-head-title{font-size:15px; font-weight:700}
.cd-head-acts{display:flex; gap:6px}
.cd-ic{border:1px solid var(--line); background:#fff; border-radius:7px; width:32px; height:32px; cursor:pointer; font-size:15px}
.cd-ic:hover{background:#f1f5fb; color:#2b5db0}
.cd-body{flex:1 1 auto; overflow-y:auto; padding:14px 16px}
.cd-company{border:1px solid var(--line); border-radius:10px; padding:12px 14px}
.cd-co-top{display:flex; align-items:center; gap:8px}
.cd-co-name{font-size:16px; color:#16232f}
.cd-badge{background:#eef3fb; color:#2b5db0; font-size:11px; font-weight:700; padding:1px 8px; border-radius:9px}
.cd-co-meta{color:#5a6470; font-size:12.5px; margin-top:5px}
.cd-stars{margin-top:6px; font-size:17px; letter-spacing:2px}
.cd-star{color:#d5d9df; cursor:pointer}
.cd-star.on{color:#f5a623}
.cd-tags{margin-top:8px; display:flex; flex-wrap:wrap; gap:6px}
.cd-tag{background:#eef7ef; color:#1e7e34; border:1px solid #bfe6cb; border-radius:11px; font-size:12px; padding:2px 8px}
.cd-tag-x{margin-left:4px; cursor:pointer; color:#8a94a0}
.cd-tag-add{border:1px dashed var(--line); color:#5a6470; border-radius:11px; font-size:12px; padding:2px 10px; cursor:pointer}
.cd-kpis{display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-top:12px}
.cd-kpi{background:#f7f8fa; border-radius:9px; padding:9px 6px; text-align:center}
.cd-kpi b{display:block; font-size:15px; color:#16232f}
.cd-kpi span{font-size:11px; color:#8a94a0}
.cd-sec{margin-top:16px}
.cd-sec-h{font-size:13px; font-weight:700; margin-bottom:8px}
.cd-sec-h2{font-size:12.5px; font-weight:700; color:#5a6470; margin:12px 0 6px}
.cd-opp{border:1px solid var(--line); border-radius:9px; padding:9px 11px; margin-bottom:8px; cursor:pointer}
.cd-opp:hover{border-color:#2b5db0}
.cd-opp-top{display:flex; justify-content:space-between; font-size:13px; margin-bottom:7px}
.cd-stepper{display:flex; gap:3px; overflow-x:auto}
.cd-step{flex:1 0 auto; font-size:10.5px; text-align:center; padding:3px 6px; border-radius:5px; background:#f1f2f4; color:#8a94a0; white-space:nowrap}
.cd-step.done{background:#e9f7ee; color:#1e7e34}
.cd-step.cur{background:#2b5db0; color:#fff; font-weight:700}
.cd-tabs{display:flex; gap:4px; border-bottom:1px solid var(--line); margin-top:16px; flex-wrap:wrap}
.cd-tab{border:none; background:none; padding:8px 12px; cursor:pointer; font-size:13px; color:#5a6470; border-bottom:2px solid transparent}
.cd-tab.on{color:#2b5db0; border-bottom-color:#2b5db0; font-weight:700}
.cd-tabpane{padding-top:12px}
/* ══ lb：客户档案 —— 文件 / 保密协议 ══ */
.cd-doc{border:1px solid var(--line); border-radius:10px; padding:9px 11px; margin-bottom:8px; background:#fafbfd}
.cd-doc-r{background:#fff8f2; border-color:#f0d9c2}          /* 外采：只有行政/跟单/主账号看得到 */
.cd-doc-h{font-size:12.5px; margin-bottom:6px}
.cd-fs{display:flex; flex-wrap:wrap; gap:6px}
.cd-fw{display:inline-flex; align-items:center; gap:4px}
.cd-f{display:inline-flex; align-items:center; gap:5px; max-width:270px; padding:4px 9px; border:1px solid var(--line);
      border-radius:8px; background:#fff; font-size:12px; text-decoration:none; color:inherit}
.cd-f:hover{border-color:#2b5db0; color:#2b5db0}
.cd-f-n{overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.cd-up{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin:8px 0 10px}
.cd-nda-top{font-size:14px; font-weight:700; display:flex; align-items:center; gap:8px}
.cd-nda-ok{font-size:12px; font-weight:600; color:#1e7e34; background:#e9f7ee; border-radius:8px; padding:2px 9px}
.cd-nda-soon{font-size:12px; font-weight:600; color:#a8600f; background:#fff4e0; border-radius:8px; padding:2px 9px}
.cd-nda-bad{font-size:12px; font-weight:600; color:#c0392b; background:#fdecea; border-radius:8px; padding:2px 9px}
.cd-nda-no{font-size:12px; font-weight:600; color:#7a8290; background:#f1f2f4; border-radius:8px; padding:2px 9px}
.cd-tl-i{border-left:2px solid #e3e7ee; padding:0 0 12px 12px; position:relative}
.cd-tl-i::before{content:""; position:absolute; left:-5px; top:3px; width:8px; height:8px; border-radius:50%; background:#2b5db0}
.cd-tl-t{font-size:12px; color:#8a94a0}
.cd-tl-b{font-size:13px; color:#16232f; margin-top:2px}
.cd-kv{display:flex; padding:7px 0; border-bottom:1px dashed var(--line); font-size:13px}
.cd-kv span{flex:0 0 96px; color:#8a94a0}
.cd-kv b{flex:1; color:#16232f; font-weight:600; word-break:break-word}
/* 设计单弹窗内的图片编辑区 */
.dg-imgs{display:flex; flex-wrap:wrap; gap:8px; margin-top:6px}
.dg-img{position:relative; width:84px; height:84px; border-radius:6px; overflow:hidden; border:1px solid var(--line); background:#f4f6f8}
.dg-img img{width:100%; height:100%; object-fit:cover; display:block}
.dg-img-x{position:absolute; top:2px; right:2px; width:20px; height:20px; line-height:18px; text-align:center; border:none; border-radius:50%; background:rgba(20,24,30,.72); color:#fff; font-size:14px; cursor:pointer; padding:0}
.dg-img-x:hover{background:#c0392b}
.dg-img-add{width:84px; height:84px; border:1.5px dashed var(--brass); border-radius:6px; background:#fffdf5; color:var(--brass-d); font-size:26px; cursor:pointer; line-height:1}
.dg-img-add:hover{background:#fff7e0}

/* PI 收款账户块 */
.pi-bank{margin-top:16px; border:1px solid var(--line); border-radius:6px; padding:12px 14px; background:#fbfcfd}
.pi-bank-h{font-weight:700; color:var(--brass-d); margin-bottom:6px; font-size:13px}
.pi-bank-l{font-size:12.5px; color:#222; line-height:1.7}

/* 订单 / 回款 */
.ord-badge{display:inline-block; padding:2px 8px; border-radius:10px; font-size:12px; font-weight:700; white-space:nowrap}
.ord-badge.st-ok{background:#e6f4ea; color:#1e7e34}
.ord-badge.st-pending{background:#fdf0e3; color:#a8710f}
.ord-badge.st-mid{background:#e8f0fb; color:#2b5db0}
.ord-badge.st-void{background:#eee; color:#888; text-decoration:line-through}
/* 订单状态标签页（对标 OKKI） */
.ord-tabs{display:flex; flex-wrap:wrap; gap:2px; border-bottom:1px solid var(--line); margin:6px 0 4px}
.ord-tab{appearance:none; border:none; background:none; padding:8px 14px; font-size:14px; color:#5a6675; cursor:pointer; border-bottom:2px solid transparent; display:flex; align-items:center; gap:5px}
.ord-tab:hover{color:#2b5db0}
.ord-tab.on{color:#2b5db0; font-weight:700; border-bottom-color:#2b5db0}
.ord-tab-n{display:inline-block; min-width:18px; padding:0 5px; font-size:11px; line-height:16px; text-align:center; background:#eef1f5; color:#67727f; border-radius:9px}
.ord-tab.on .ord-tab-n{background:#2b5db0; color:#fff}
/* 订单列表底部合计条 */
.ord-total-bar{margin-top:8px; padding:9px 14px; background:#f7f9fb; border:1px solid var(--line); border-radius:8px; font-size:13px; font-weight:600; color:#33414f; text-align:right}
/* 同一订单的多产品行：组内不画横线，组间加粗分隔（每产品一行但订单成组） */
table.qt-table.ord-okki tr.ord-grp-sub > td{border-top:1px dashed #eef0f3}
table.qt-table.ord-okki tr.ord-grp-top > td{border-top:2px solid #e3e8ee}
table.qt-table.ord-okki td{vertical-align:middle}
.pay-rate{font-weight:700}
.pay-rate.ok{color:#1e7e34}
.pay-rate.mid{color:#a8710f}
.pay-rate.no{color:#a33}

/* 设计工单（右侧预览） */
.dss-head{display:grid; grid-template-columns:1fr 1fr; gap:6px 18px; margin:10px 0 12px}
.dss-kv{display:flex; gap:8px; font-size:13px; align-items:center; border-bottom:1px solid #eef1f4; padding:5px 0}
.dss-k{color:#8a6a2f; font-weight:700; min-width:66px}
.dss-v{color:#222; flex:1}
.dss-inp{flex:1; border:none; border-bottom:1px dashed #c9a24b; background:transparent; font:inherit; padding:2px 2px; outline:none}
.dss-line{display:flex; align-items:flex-start; gap:10px; padding:8px 0; border-bottom:1px solid #eef1f4}
.dss-line .dss-k{padding-top:2px}
.dss-chks{display:flex; flex-wrap:wrap; gap:14px}
.dss-chk{display:flex; align-items:center; gap:5px; font-size:13px; color:#3a4450}
.dss-table{width:100%; border-collapse:collapse; margin:12px 0; font-size:12.5px}
.dss-table th,.dss-table td{border:1px solid #d8dee5; padding:6px 7px; text-align:left; vertical-align:top}
.dss-table th{background:#1F2733; color:#fff; font-weight:700; font-size:12px}
.dss-foot{display:grid; grid-template-columns:1fr 1fr; gap:6px 18px; margin:6px 0 12px}
.dss-note-title{font-weight:700; color:#8a6a2f; margin:8px 0 4px}
.dss-note{font-size:12px; color:#3a4450; line-height:1.6; margin-bottom:3px}
@media print{ .dss-inp{border-bottom:1px solid #999} }

/* ═══ V6 ═══ */
.qt-textarea{resize:vertical; font-family:inherit; line-height:1.5}
.qt-modal{position:fixed; inset:0; background:rgba(20,30,40,.45); z-index:50; display:flex; align-items:center; justify-content:center; padding:20px}
.qt-modal-box{background:#fff; border-radius:12px; padding:20px; width:100%; max-width:440px; max-height:calc(100vh - 44px); overflow-y:auto}   /* 内容高过屏幕时可在弹窗内滚动，避免底部「保存/关闭」按钮被挤出屏幕点不到 */
/* 产品tabs */
.item-tabs{display:flex; gap:6px; flex-wrap:wrap; margin:8px 0 12px}
.item-tab{border:1px solid var(--line); background:#fff; border-radius:6px; padding:6px 10px; font-size:12px; cursor:pointer; color:#5a6470; display:flex; align-items:center; gap:6px}
.item-tab.on{background:var(--ink); color:#fff; border-color:var(--ink)}
.item-tab-x{opacity:.7; padding:0 2px}
.item-tab-x:hover{color:#f66; opacity:1}
.engine-line{font-size:12.5px; color:#3a4450; margin-top:8px; line-height:1.6}
/* 报价单:双方信息 */
.sheet-parties{display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:10px}
.sheet-party{border:1px solid var(--line); padding:8px 10px; font-size:12px}
.sheet-party-h{font-weight:700; letter-spacing:.1em; color:var(--brass-d); font-size:11px; margin-bottom:4px; text-transform:uppercase}
.sheet-kv{margin:2px 0; color:#3a4450}
.sheet-kv span{color:#7a8390}
/* 产品表：固定列宽 + 强制换行，保证 11 列都完整显示、不被右侧裁掉 */
.items-tbl{table-layout:fixed; width:100%}
.items-tbl th,.items-tbl td{white-space:normal; overflow-wrap:break-word; word-break:break-word}
.items-tbl th{font-size:11px; padding:6px 5px}
.items-tbl td{font-size:12px; padding:6px 5px}
.items-tbl .pic-td img{width:100%; max-width:64px; height:auto; aspect-ratio:4/3; object-fit:cover; border:1px solid var(--line); border-radius:2px}
.items-tbl .desc{color:#5a6470; font-size:11px; margin-top:3px; line-height:1.5}
.items-tbl .rmk{font-size:11px; color:#5a6470}
.gross-row td{background:#f7f4ec; font-weight:700}
.ship-row{background:#fbfcfd; color:#3a4450; font-size:12px}
.terms-block{font-size:11.5px; color:#3a4450; line-height:1.7; border:1px solid var(--line); padding:8px 12px}
/* 统计 */
.stats-row{display:flex; gap:12px; flex-wrap:wrap; margin-bottom:14px}
.stat-card{background:#fff; border:1px solid var(--line); border-radius:10px; padding:14px 22px; text-align:center; min-width:100px}
.stat-n{font-size:26px; font-weight:800; color:var(--brass-d)}
.stat-l{font-size:12px; color:#6b7480; margin-top:2px}
.stat-by{background:#fff; border:1px solid var(--line); border-radius:10px; padding:10px 14px; min-width:220px; flex:1; max-width:340px}
.stat-by-row{display:flex; justify-content:space-between; font-size:13px; padding:3px 0; border-bottom:1px dashed var(--line)}
.stat-by-row:last-child{border-bottom:none}

.user-row{border-bottom:1px dashed var(--line); padding:10px 0}
.user-row:last-child{border-bottom:none}
/* 图片点击放大灯箱 */
.lightbox{position:fixed; inset:0; background:rgba(10,14,18,.88); z-index:99; display:flex; align-items:center; justify-content:center; cursor:zoom-out}
.lightbox img{max-width:92vw; max-height:92vh; border-radius:6px; box-shadow:0 8px 40px rgba(0,0,0,.6)}
.qt-imgslot img, .pic-td img{cursor:zoom-in}

/* ═══════ V7 新增：审核状态 / 待审徽标 / 版本 ═══════ */
.st-badge{display:inline-block;padding:2px 9px;border-radius:11px;font-size:12px;font-weight:600;white-space:nowrap}
.st-pending{background:#fff3d6;color:#8a6a2f}
.st-reviewed{background:#efe7fb;color:#6b3fb0}
.st-approved{background:#e2f5e8;color:#1f8a4c}
.st-rejected{background:#fde2e2;color:#c0392b}
.st-won{background:#e6efff;color:#1746a2}
.st-deposit{background:#d9f2ee;color:#0f766e}
.st-void{background:#eceef1;color:#6b7480;text-decoration:line-through}
.st-note{font-size:11px;color:#c0392b;margin-top:3px;max-width:180px;line-height:1.3}
/* 已收定金金额小标 */
.dep-badge{display:inline-block;margin-top:4px;padding:2px 8px;border-radius:9px;font-size:12px;font-weight:700;background:#d9f2ee;color:#0f766e;border:1px solid #9fd7cf;white-space:nowrap}
/* 报价列表里的状态下拉选择器（可点改状态） */
.st-select{font-size:12px;font-weight:600;padding:3px 6px;border-radius:8px;border:1px solid var(--line);
  background:#fff;color:#2a3138;cursor:pointer;max-width:100px}
.st-select:hover{border-color:var(--brass)}
.st-select.st-sel-pending{background:#fff3d6;color:#8a6a2f;border-color:#e6c164}
.st-select.st-sel-reviewed{background:#efe7fb;color:#6b3fb0;border-color:#c6b0ec}
.st-select.st-sel-approved{background:#e2f5e8;color:#1f8a4c;border-color:#9fd7b3}
.st-select.st-sel-rejected{background:#fde2e2;color:#c0392b;border-color:#eeb0b0}
.st-select.st-sel-won{background:#e6efff;color:#1746a2;border-color:#a8c2ee}
.st-select.st-sel-deposit{background:#d9f2ee;color:#0f766e;border-color:#9fd7cf}
.st-select.st-sel-void{background:#eceef1;color:#6b7480;border-color:#cfd4da}
/* 操作列：按钮上下竖排（每个一行），窄列不撑宽表格 */
.rec-actions{white-space:normal; display:flex; flex-direction:column; flex-wrap:nowrap; gap:5px; width:112px; max-width:112px; align-items:stretch}
.rec-actions .qt-mini{margin:0; width:100%; text-align:center}
/* 报价单「不显示总价合计」勾选行：紫色高亮 */
.hidegross-hl{background:#efe7fb; border:1px solid #c6b0ec; border-radius:8px; padding:7px 10px; font-size:13px; font-weight:600; color:#6b3fb0}
.hidegross-hl input{accent-color:#6b3fb0}
.qt-mini.st-ok{background:#1f8a4c;color:#fff;border-color:#1f8a4c}
.qt-mini.st-no{background:#c0392b;color:#fff;border-color:#c0392b}
.nav-badge{display:inline-block;min-width:17px;height:17px;line-height:17px;padding:0 5px;margin-left:6px;
  border-radius:9px;background:#e5484d;color:#fff;font-size:11px;font-weight:700;text-align:center;vertical-align:middle}

/* ═══════ 记录表：占满窗口宽度 + 内容自动换行，避免右侧列被挤出屏幕、无需横向滚动 ═══════ */
/* 说明：不再用「第N列」这种写死列序的规则（列数会随功能增减而变化，写死很容易错位）。
   改用与列序无关的通用规则：表格占满 100% 宽 + 自适应列宽 + 单元格内容强制换行，
   浏览器会按屏幕宽度自动分配列宽并让长内容折行，任何列数都不会撑出横向滚动条。 */
.qt-records{max-width:none}
.qt-table.rec{width:100%; table-layout:auto}
.qt-table.rec td,.qt-table.rec th{white-space:normal; overflow-wrap:anywhere; word-break:break-word; vertical-align:top}
/* 单号 / 日期：允许自动换行（列被拉窄或表格定宽时，长单号会在连字符处折行，不再溢出压到旁边一列） */
.qt-table.rec td:nth-child(1),.qt-table.rec td:nth-child(2){white-space:normal; overflow-wrap:break-word; word-break:break-word}
.qt-table.rec td:nth-child(1){min-width:84px}
/* 定宽(列宽可调)时也强制数据单元格内容不溢出到相邻列（表头不加 overflow:hidden，避免裁掉拖宽手柄） */
.qt-table.rec{overflow-wrap:anywhere}
.qt-table.rec td{overflow:hidden}
/* 操作列（按钮）已在 .rec-actions 中限定为定宽并自动换行，不会把表格撑宽 */

/* ═══════ 报价状态筛选标签（表格上方，快速切到待审核审批）═══════ */
.status-tabs{display:flex; flex-wrap:wrap; gap:8px; margin:2px 0 12px}
.status-tab{display:inline-flex; align-items:center; gap:7px; padding:7px 15px; border:1px solid var(--line);
  background:#fff; border-radius:20px; font-size:13px; color:#5a6470; cursor:pointer; transition:all .12s}
.status-tab:hover{border-color:var(--brass); color:var(--brass-d)}
.status-tab-n{min-width:18px; height:18px; line-height:18px; padding:0 6px; border-radius:9px;
  background:#eef0f3; color:#5a6470; font-size:11.5px; font-weight:700; text-align:center}
.status-tab.on{background:var(--ink); border-color:var(--ink); color:#fff}
.status-tab.on .status-tab-n{background:rgba(255,255,255,.25); color:#fff}
/* 待审核标签：未选中时琥珀色描边提醒；有几单待审一眼看到 */
.status-tab.st-tab-pending{border-color:#e6c164; color:#8a6a2f}
.status-tab.st-tab-pending .status-tab-n{background:#fff3d6; color:#8a6a2f}
.status-tab.st-tab-pending.on{background:#8a6a2f; border-color:#8a6a2f; color:#fff}
.status-tab.st-tab-pending.on .status-tab-n{background:rgba(255,255,255,.25); color:#fff}
.status-tab.st-tab-reviewed.on{background:#6b3fb0; border-color:#6b3fb0}
.status-tab.st-tab-approved.on{background:#1f8a4c; border-color:#1f8a4c}
.status-tab.st-tab-rejected.on{background:#c0392b; border-color:#c0392b}
.status-tab.st-tab-won.on{background:#1746a2; border-color:#1746a2}
.status-tab.st-tab-deposit.on{background:#0f766e; border-color:#0f766e}
.status-tab.st-tab-void.on{background:#6b7480; border-color:#6b7480}

/* 报价编辑页：表单/单据预览 之间可拖拽的分隔条 */
.qt-splitter{flex:0 0 10px; align-self:stretch; cursor:col-resize; position:relative; touch-action:none}
.qt-splitter::before{content:""; position:absolute; left:4px; top:0; bottom:0; width:2px; background:var(--line); border-radius:2px; transition:background .12s}
.qt-splitter:hover::before,.qt-splitter:active::before{background:var(--brass); width:3px; left:3px}
@media (max-width:900px){ .qt-splitter{display:none} }

/* ═══════ 顶部操作按钮：自动换行不横向滚动；打印预览+打印 固定在最右 ═══════ */
.main-actions{flex-wrap:wrap; overflow-x:visible}
.main-actions button{flex:0 0 auto}
.main-actions .print-group{margin-left:auto; display:inline-flex; gap:10px; flex:0 0 auto}   /* 打印预览/打印 一组，靠最右，不被滚动条藏起来 */
@media (max-width:900px){
  .main-actions .print-group{margin-left:0}
}

/* ── 团队目标（概览面板 + 设置表格）── */
.goal-panel{grid-column:1/-1}
.goal-row{display:flex;align-items:center;gap:10px;padding:5px 0;border-bottom:1px dashed #eee;font-size:13px}
.goal-row:last-child{border-bottom:none}
.goal-name{width:88px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.goal-num{width:150px;text-align:right;white-space:nowrap}
.goal-cmp{width:96px;text-align:right;color:#8a6a00;white-space:nowrap}
.goal-cum{width:190px;text-align:right;color:#888;white-space:nowrap}
.goal-table{border-collapse:collapse;font-size:12px;white-space:nowrap}
.goal-table th,.goal-table td{border:1px solid #e5e8ee;padding:3px 4px;text-align:center}
.goal-table thead th{background:#f5f7fa;position:sticky;top:0;z-index:2}
.goal-sticky{position:sticky;left:0;background:#fff;text-align:left!important;font-weight:600;z-index:1}
.goal-table thead .goal-sticky{background:#f5f7fa;z-index:3}
.goal-in,.goal-deal{width:66px;padding:4px;border:1px solid #d5d9e0;border-radius:4px;font-size:12px;text-align:right}
.goal-deal{border-color:#c9b48a;background:#fffdf5}
.goal-yr{font-weight:700;background:#f0f6ff}
.goal-sum{background:#f0f6ff;font-weight:600;min-width:78px}
.goal-gapyr,.goal-gapmo,.goal-dyr{background:#fbfcff}
.goal-behind{color:#c0392b;font-weight:700}
.goal-ahead{color:#1e874b;font-weight:700}
.goal-back .goal-table thead th{background:#faf6ea}
.goal-back .goal-table thead .goal-sticky{background:#faf6ea}
@media (max-width:640px){.goal-cum{display:none}.goal-cmp{width:72px}.goal-num{width:120px}}

/* ── 今日新增提醒（高亮 + 导航红点 + 标签）── */
.today-badge{background:#e8890c!important}                 /* 今日新增红点：琥珀色，区别于待审核的红 */
.opp-card.is-today{border-left:4px solid #e8890c;background:#fffaf0;box-shadow:0 1px 4px rgba(232,137,12,.18)}
.opp-card.is-today .opp-card-top b,.opp-card.is-today b{font-weight:800}
.today-tag{display:inline-block;margin-left:6px;padding:0 6px;font-size:11px;line-height:17px;color:#fff;background:#e8890c;border-radius:9px;vertical-align:middle;font-weight:700}
tr.is-today-row>td{background:#fffaf0}
tr.is-today-row>td:first-child{box-shadow:inset 3px 0 0 #e8890c}

/* ── 提醒设置：分模块机器人行 ── */
.nf-row{display:flex;align-items:center;gap:8px;margin:6px 0}
.nf-ck{width:64px;flex:none;display:flex;align-items:center;gap:5px;font-size:13px}
.nf-row .qt-input{flex:1}
.nf-row .qt-lockbtn{flex:none}

/* ══════════ AI 业务员：接单分级徽章 + 商机AI面板 ══════════ */
.ai-grade{display:inline-block;font-weight:700;font-size:11px;line-height:1;padding:2px 6px;border-radius:5px;margin-right:5px;vertical-align:middle;color:#fff}
.ai-grade.big{font-size:12px;padding:4px 9px;border-radius:6px}
.ai-grade.gA{background:#e0392b}
.ai-grade.gB{background:#f08c00}
.ai-grade.gC{background:#1c7ed6}
.ai-grade.gD{background:#868e96}
.op-ai-panel{margin-top:12px;border:1px solid #e6e0d4;background:#fbf9f4;border-radius:8px;padding:10px 12px}
.op-ai-head{display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:13px;color:#5a4b2a}
.op-ai-actions{display:flex;gap:6px}
.op-ai-primary{background:#1e7e34;color:#fff;border-color:#1e7e34}
.op-ai-grade{margin-top:8px}
.op-ai-graderow{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.op-ai-note{white-space:normal;background:#fff;border:1px solid #ece6d8;border-radius:6px;padding:8px 10px;font-size:12.5px;line-height:1.6;color:#444}
.op-ai-out{margin-top:8px}
.op-ai-reply{margin-top:4px}
.op-ai-sub{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:#5a4b2a;margin:10px 0 4px}
.op-ai-en{width:100%;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.5}
.op-ai-cn,.op-ai-tips{background:#fff;border:1px solid #ece6d8;border-radius:6px;padding:8px 10px;font-size:12.5px;line-height:1.6;color:#444}
.op-ai-tips{background:#fffbea;border-color:#f3e6b3}

/* 报价列表：低毛利/亏本红标 */
.lm-badge{display:inline-block;margin-top:3px;font-size:11px;font-weight:700;color:#fff;background:#e0392b;border-radius:4px;padding:1px 6px;white-space:nowrap}

/* AI 军师 3-6 动作按钮行 */
.op-ai-actions2{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}

/* 看板/宽表 顶部同步横向拉动条（和底部联动，顶部也能拖） */
.board-topscroll{overflow-x:auto;overflow-y:hidden;height:14px;margin-bottom:2px}
.board-topscroll>div{height:1px}

/* ── 设计考核：卡片星级/留言徽章、满意度评分、沟通对话 ── */
.dg-card-meta{display:flex;gap:8px;align-items:center;margin:3px 0 1px;flex-wrap:wrap}
.dg-stars-mini{color:#f5a623;font-size:12px;letter-spacing:1px}
.dg-cmt-badge{font-size:11px;color:#2a6;background:#eaf7ef;border-radius:8px;padding:0 6px}
.dg-rate{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:2px 0 10px}
.dg-stars{display:inline-flex;gap:2px;font-size:22px;line-height:1;color:#f5a623;user-select:none}
.dg-star{color:#f5a623}
.dg-star.editable{cursor:pointer}
.dg-star:not(.on){color:#d8d8d8}
.dg-star.on{color:#f5a623}
#dgSatInfo{font-weight:400}
.dg-chat{max-height:230px;overflow:auto;background:#f7f8fa;border:1px solid #e6e8ec;border-radius:8px;padding:8px;display:flex;flex-direction:column;gap:8px}
.dg-msg{max-width:82%;background:#fff;border:1px solid #e6e8ec;border-radius:10px;padding:6px 9px;align-self:flex-start}
.dg-msg.mine{align-self:flex-end;background:#eef6ff;border-color:#cfe4ff}
.dg-msg-head{font-size:11px;color:#888;margin-bottom:2px}
.dg-msg-head b{color:#333;font-size:12px}
.dg-msg-role{background:#eee;border-radius:6px;padding:0 5px;margin:0 4px;color:#666}
.dg-msg.mine .dg-msg-role{background:#d6e9ff;color:#3572b0}
.dg-msg-body{font-size:13px;color:#222;white-space:normal;word-break:break-word}
.dg-chat-input{display:flex;gap:8px;align-items:flex-end;margin:8px 0 2px}
.dg-chat-input textarea{flex:1}

/* AI 沟通打分徽章 */
.op-comm-badge{display:inline-block;color:#fff;border-radius:10px;padding:2px 10px;font-size:13px;font-weight:600;margin-right:8px}

/* 通用高级筛选栏 */
.adv-filter-row{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:flex-end;background:#f7f8fa;border:1px solid #e6e8ec;border-radius:8px;padding:8px 10px;margin-bottom:8px}
.adv-filter-row .adv-f{min-width:120px}
.adv-filter-row .adv-f .qt-input{padding:5px 8px;font-size:13px}
.adv-filter-row .adv-f input[type=date]{min-width:130px}
.adv-reset{align-self:flex-end;white-space:nowrap}

/* 报价参考文件/附件列表 */
.qt-attach-list li{display:flex;align-items:center;gap:8px;padding:4px 0;border-bottom:1px dashed #eee}
.qt-attach-list a{color:#2563eb;text-decoration:none}
.qt-attach-size{color:#999;font-size:12px}
/* ══════════ 订单详情侧滑面板（详情 + 状态进度条 + 操作历史） ══════════ */
.qt-link{color:#2563eb;text-decoration:none;cursor:pointer;font-weight:600}
.qt-link:hover{text-decoration:underline}
.qt-drawer{position:fixed;inset:0;z-index:80}
.qt-drawer-mask{position:absolute;inset:0;background:rgba(20,30,40,.35)}
.qt-drawer-panel{position:absolute;top:0;right:0;height:100vh;width:min(720px,94vw);background:#f6f8fa;
  box-shadow:-4px 0 22px rgba(20,30,40,.22);display:flex;flex-direction:column;animation:odslide .22s ease}
@keyframes odslide{from{transform:translateX(30px);opacity:.4}to{transform:none;opacity:1}}
.qt-drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 20px;background:#fff;border-bottom:1px solid var(--line)}
.qt-drawer-title{font-size:16px;font-weight:800;color:var(--ink)}
.qt-drawer-tools{display:flex;align-items:center;gap:8px}
.qt-drawer-x{border:none;background:transparent;font-size:22px;line-height:1;cursor:pointer;color:#8a94a0;padding:2px 8px;border-radius:6px}
.qt-drawer-x:hover{background:#f0f2f5;color:var(--ink)}
.qt-drawer-body{flex:1;overflow-y:auto;padding:18px 20px}
.od-dt-head{margin-bottom:14px}
.od-dt-no{font-size:20px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:10px}
/* 状态进度条 */
.od-stepper{display:flex;align-items:center;margin:16px 0 20px;padding:14px 12px;background:#fff;border:1px solid var(--line);border-radius:10px}
.od-step{display:flex;flex-direction:column;align-items:center;gap:6px;flex:0 0 auto;min-width:56px}
.od-step-dot{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;background:#e4e8ee;color:#8a94a0}
.od-step-tx{font-size:12px;color:#8a94a0;white-space:nowrap}
.od-step.done .od-step-dot{background:#8fd0a6;color:#12633a}
.od-step.done .od-step-tx{color:#3a4552}
.od-step.cur .od-step-dot{background:var(--ink);color:#fff}
.od-step.cur .od-step-tx{color:var(--ink);font-weight:700}
.od-step-line{flex:1 1 auto;height:2px;background:#e4e8ee;margin:0 2px;position:relative;top:-9px}
/* 关键信息栅格 */
.od-kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.od-kv{background:#fff;padding:10px 14px;display:flex;flex-direction:column;gap:3px}
.od-kv-l{font-size:11.5px;color:#8a94a0}
.od-kv-v{font-size:14px;color:var(--ink);font-weight:600;word-break:break-all}
/* Tab */
.od-dt-tabs{display:flex;gap:4px;margin:18px 0 0;border-bottom:1px solid var(--line)}
.od-dt-tab{border:none;background:transparent;padding:10px 16px;font-size:14px;cursor:pointer;color:#5a6470;border-bottom:2px solid transparent;margin-bottom:-1px}
.od-dt-tab:hover{color:var(--ink)}
.od-dt-tab.on{color:var(--ink);font-weight:700;border-bottom-color:var(--brass)}
.od-dt-pane{padding:16px 0}
/* 操作历史时间线 */
.od-timeline{position:relative;padding-left:8px}
.od-tl-item{display:flex;gap:14px;padding:0 0 16px 0;position:relative}
.od-tl-item::before{content:"";position:absolute;left:70px;top:6px;bottom:-6px;width:2px;background:#e4e8ee}
.od-tl-item:last-child::before{display:none}
.od-tl-time{flex:0 0 62px;font-size:11.5px;color:#8a94a0;text-align:right;padding-top:2px;line-height:1.4}
.od-tl-card{flex:1;background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 14px;position:relative}
.od-tl-card::before{content:"";position:absolute;left:-15px;top:10px;width:9px;height:9px;border-radius:50%;background:#2b5db0;border:2px solid #fff;box-shadow:0 0 0 1px var(--line)}
.od-tl-act{font-size:13.5px;color:var(--ink)}
.od-tl-actor{font-size:12px;color:#8a94a0;margin-top:4px}
@media(max-width:560px){
  .od-kv-grid{grid-template-columns:1fr}
  .od-stepper{overflow-x:auto}
}
/* ══════════ 报价轮次 / 砍价记录 ══════════ */
.qr-rounds{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.qr-round{border:1px solid var(--line);border-left:3px solid #c9a24b;border-radius:8px;padding:9px 12px;background:#fff}
.qr-round.cur{border-left-color:var(--ink);background:#f6f8fb}
.qr-round.deal{border-left-color:#1e7e34;background:#eef8f1}
.qr-round-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.qr-round-label{font-weight:700;color:var(--ink);min-width:76px}
.qr-round-amt{font-size:17px;font-weight:800;color:var(--ink)}
.qr-delta{font-size:12px;font-weight:600;padding:1px 7px;border-radius:10px}
.qr-delta.down{color:#c0392b;background:#fdecea}
.qr-delta.up{color:#1e7e34;background:#e9f7ee}
.qr-delta.flat{color:#8a94a0;background:#f0f2f5}
/* el 运费货币符号选择（生产弹窗） */
.qt-cur-row{display:flex;gap:6px;align-items:stretch}
.qt-cur-row .qt-cur-sel{flex:0 0 92px;width:92px;padding-left:8px;padding-right:4px;font-weight:600;background:#f7f9fc}
.qt-cur-row .qt-input:not(.qt-cur-sel){flex:1 1 auto;min-width:0}
/* el 订单列表：行高拖动手柄 + 提示条 + 列宽手柄可见提示 */
.ord-rz-hint{display:flex;align-items:center;gap:4px;font-size:12px;color:#8a94a0;margin:2px 2px 6px;flex-wrap:wrap}
.ord-rz-hint b{color:#5a6675}
.ord-rowrz{position:absolute;left:0;right:0;bottom:-3px;height:8px;cursor:row-resize;user-select:none;z-index:4}
.ord-rowrz:hover{background:rgba(255,255,255,.55)}
table.ord-okki thead th .col-rz{background:linear-gradient(to right,transparent,rgba(255,255,255,.28))}
table.ord-okki thead th .col-rz:hover{background:linear-gradient(to right,transparent,rgba(255,255,255,.7))}
/* eq 报价按钮条精简：一行放下，按钮更小 */
.main-actions-slim{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.main-actions-slim button{padding:6px 10px;font-size:12.5px;line-height:1.2;white-space:nowrap}
.main-actions-slim .print-group{display:flex;gap:6px}
/* es 知识库：卡片网格 + MD 美化文档 */
.kb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.kb-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;cursor:pointer;transition:box-shadow .15s,transform .15s}
.kb-card:hover{box-shadow:0 4px 14px rgba(43,93,176,.12);transform:translateY(-1px)}
.kb-card-top{font-size:14px;display:flex;align-items:center;gap:4px;margin-bottom:6px}
.kb-pin{flex:0 0 auto}
.kb-card-prev{font-size:12px;color:#8a94a0;line-height:1.5;min-height:34px}
.kb-card-foot{display:flex;gap:8px;align-items:center;margin-top:8px;font-size:11.5px;color:#a7b0ba}
.kb-cat{background:#eef3fb;color:#2b5db0;border-radius:20px;padding:1px 9px;font-size:11px}
.kb-edit-tools{display:flex;align-items:center;gap:8px;margin:6px 0}
.kb-view-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}
.kb-doc{line-height:1.75;font-size:14px;color:#2c3540}
.kb-doc h2{font-size:19px;margin:14px 0 8px;padding-bottom:6px;border-bottom:2px solid #e8ba3a;color:#1e2732}
.kb-doc h3{font-size:16px;margin:14px 0 6px;color:#2b5db0}
.kb-doc h4,.kb-doc h5{font-size:14px;margin:12px 0 4px;color:#2c3540}
.kb-doc p{margin:6px 0}
.kb-doc ul,.kb-doc ol{margin:6px 0;padding-left:22px}
.kb-doc li{margin:3px 0}
.kb-doc blockquote{margin:8px 0;padding:8px 12px;background:#fbf6e8;border-left:3px solid #e8ba3a;border-radius:0 8px 8px 0;color:#6b5b21}
.kb-doc code{background:#f0f2f5;border-radius:4px;padding:1px 6px;font-size:12.5px}
.kb-doc pre{background:#1e2732;color:#e6edf5;border-radius:10px;padding:12px 14px;overflow:auto;font-size:12.5px}
.kb-doc pre code{background:none;color:inherit;padding:0}
.kb-doc table{border-collapse:collapse;margin:8px 0;width:100%;font-size:13px}
.kb-doc th{background:#1e2732;color:#fff;padding:6px 10px;text-align:left}
.kb-doc td{border:1px solid var(--line);padding:6px 10px}
.kb-doc tr:nth-child(even) td{background:#f8fafc}
.kb-doc hr{border:none;border-top:1px dashed var(--line);margin:12px 0}
.kb-doc a{color:#2b5db0}
.kb-share{background:#e9f7ee;color:#1e7e34;border-radius:20px;padding:1px 8px;font-size:11px;flex:0 0 auto}
.qt-mgrbiz{display:flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;color:#96720c;background:#fdf3da;border:1px solid #e6cd85;border-radius:20px;padding:3px 10px;white-space:nowrap;cursor:pointer}
.qt-mgrbiz input{margin:0;cursor:pointer}
/* eu 报价列表：顶部操作条 + 行勾选 */
.rec-actionbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 8px;padding:8px 12px;background:#e3efff;border:1px solid #a9c9f2;border-radius:10px}
.rec-actionbar .qt-sub{color:#2b5db0;font-weight:600}
.rec-actionbar .qt-mini{background:#fff;border-color:#a9c9f2}
.rec-actionbar .qt-mini:not([disabled]):hover{background:#2b5db0;color:#fff}
.rec-actionbar .qt-mini[disabled]{opacity:.45;cursor:not-allowed}
.rec-sel{width:16px;height:16px;cursor:pointer;accent-color:#2b5db0}
tr.rec-row-sel td{background:#eef4fd !important}
/* ew 订单页顶部紧凑排版：统计卡+状态标签同一行；搜索+筛选合成一行（字段标题改为行内小字） */
#pageOrders .ord-toprow{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:6px}
#pageOrders .ord-toprow .stats-row{margin:0;flex:0 0 auto}
#pageOrders .ord-toprow .ord-tabs{margin:0;flex:1 1 320px}
#pageOrders .ord-filterrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 8px}
#pageOrders #ordAdvBar{flex:0 1 auto}
#pageOrders #ordAdvBar .adv-filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0;padding:0;border:none;background:none}
#pageOrders #ordAdvBar .adv-f{display:flex;flex-direction:row;align-items:center;gap:5px;margin:0}
#pageOrders #ordAdvBar .adv-f .qt-label{margin:0;white-space:nowrap;font-size:12px}
#pageOrders #ordAdvBar .adv-f .qt-input{max-width:140px}
/* ey 报价页顶部紧凑排版：统计卡+操作/筛选面板同一行；筛选行内小标题；统计数字可点击 */
#pageRecords .rec-toprow2{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:8px}
#pageRecords .rec-toprow2 .stats-row{margin:0;flex:0 1 auto}
#pageRecords .rec-toppanel{flex:1 1 460px;display:flex;flex-direction:column;gap:6px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px}
#pageRecords .rec-toppanel .qt-actionsbar{flex-wrap:wrap;gap:8px}
#pageRecords .rec-mon{display:flex;flex-direction:row;align-items:center;gap:5px;margin:0}
#pageRecords .rec-mon .qt-label{margin:0;white-space:nowrap;font-size:12px}
#pageRecords #recAdvBar .adv-filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0;padding:0;border:none;background:none}
#pageRecords #recAdvBar .adv-f{display:flex;flex-direction:row;align-items:center;gap:5px;margin:0}
#pageRecords #recAdvBar .adv-f .qt-label{margin:0;white-space:nowrap;font-size:12px}
#pageRecords #recAdvBar .adv-f .qt-input{max-width:135px}
.stat-click{cursor:pointer;transition:box-shadow .15s,transform .15s}
.stat-click:hover{box-shadow:0 4px 14px rgba(43,93,176,.16);transform:translateY(-1px)}
.stat-click .stat-l::after{content:" ▾";color:#2b5db0;font-size:10px}
/* ez2 概览KPI带：14张小卡合成一条置顶，紧凑省屏 */
.kpi-strip{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.kpi-strip .kpi-card{flex:1 1 150px;min-width:132px;max-width:220px;padding:7px 12px;margin:0;border-radius:10px}
.kpi-strip .kpi-v{font-size:15.5px;line-height:1.25}
.kpi-strip .kpi-l{font-size:11px;margin-top:1px}
.kpi-strip .kpi-s{font-size:10px;margin-top:0;opacity:.75}
/* fb 手机端优化：勾选后操作条浮到屏幕底部；勾选框加大；操作条按钮加大好点 */
@media (max-width:820px){
  .rec-actionbar{position:sticky;top:0;z-index:30}
  .rec-actionbar.bar-float{position:fixed;left:8px;right:8px;bottom:calc(10px + env(safe-area-inset-bottom));top:auto;z-index:1000;box-shadow:0 8px 28px rgba(0,0,0,.28);background:#dcebff;max-height:46vh;overflow:auto}
  .rec-actionbar .qt-mini{padding:10px 13px;font-size:14px}
  .rec-actionbar .qt-x{padding:8px 12px !important;font-size:14px}
  .rec-sel,.ord-sel{width:22px;height:22px}
}
/* fd CS CENTER 团队目标置顶表 */
.goal-table{font-size:13px}
.goal-table .gt-name{font-weight:700}
.gt-barwrap{display:flex;align-items:center;gap:8px;min-width:160px}
.gt-barwrap .dbar-track{flex:1}
.goal-table tr.gt-total td{background:#1e2732;color:#fff;font-weight:600;border-color:#1e2732}
.goal-table tr.gt-total td.qt-sub{color:#cfd8e3}
.goal-table thead th{background:#1e2732;color:#fff;padding:8px 10px;white-space:nowrap}
/* ff2 目标结果看板：月/季/年 三组分隔线 + 季度月份小字 */
.goal-result td:nth-child(6),.goal-result th:nth-child(6),
.goal-result td:nth-child(9),.goal-result th:nth-child(9){border-left:2px solid #8ea0b5}
.goal-result .gr-sub{display:block;font-size:10px;font-weight:400;color:#cfd8e3}
.goal-result tr.gt-total td{font-size:13.5px}
/* fh 配色：本月完成=橙 月度=蓝 季度=绿 年度=棕（表头深色、内容浅色同系） */
.goal-result thead th:nth-child(n+2):nth-child(-n+2){background:#c2570a}
.goal-result thead th:nth-child(n+3):nth-child(-n+5){background:#1e3a5f}
.goal-result thead th:nth-child(n+6):nth-child(-n+8){background:#1c5c34}
.goal-result thead th:nth-child(n+9){background:#7c531e}
.goal-result td:nth-child(n+2):nth-child(-n+2){background:#fff1e2}
.goal-result td:nth-child(n+3):nth-child(-n+5){background:#eef5ff}
.goal-result td:nth-child(n+6):nth-child(-n+8){background:#edf8f0}
.goal-result td:nth-child(n+9){background:#fdf6e9}
/* 合计行（深色）也按组配色，保证白字可读 */
.goal-result tr.gt-total td:nth-child(n+2):nth-child(-n+2){background:#c2570a;border-color:#c2570a}
.goal-result tr.gt-total td:nth-child(n+3):nth-child(-n+5){background:#1e3a5f;border-color:#1e3a5f}
.goal-result tr.gt-total td:nth-child(n+6):nth-child(-n+8){background:#1c5c34;border-color:#1c5c34}
.goal-result tr.gt-total td:nth-child(n+9){background:#7c531e;border-color:#7c531e}
/* ft 笔记附件 chips + 思维导图全屏层 */
.kb-att-bar{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 12px}
.kb-att-chip{display:inline-flex;align-items:center;gap:5px;background:#f5f7fa;border:1px solid #dfe5ec;border-radius:999px;
  padding:4px 12px;font-size:12.5px;color:#22303e;text-decoration:none;margin:2px 4px 2px 0}
.kb-att-chip:hover{background:#eaf1fa;border-color:#a9c9f2}
.mm-modal{position:fixed;inset:0;z-index:3000;background:#f4f7fb;display:flex;flex-direction:column}
.mm-modal[hidden]{display:none}
.mm-bar{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#fff;border-bottom:1px solid var(--line);flex-wrap:wrap}
#mmSvg{flex:1;touch-action:none;user-select:none;background:
  radial-gradient(circle at 1px 1px, #dbe3ee 1px, transparent 1px);background-size:26px 26px}
.mm-node text{pointer-events:none}
/* fk CS BRAIN 知识星系首页：星空 + 星云 + 轨道 + 行星（分类=星球） */
.kb-galaxy{margin:6px 0 12px}
.kbg-space{position:relative;height:min(72vh,640px);min-height:420px;border-radius:16px;overflow:hidden;cursor:default;
  /* fl：服务器放一张 galaxy_bg.jpg 即换背景图；没有该文件则自动回落到深空渐变 */
  background:url('galaxy_bg.jpg?v=3') center/cover no-repeat,
    radial-gradient(ellipse 90% 70% at 50% 42%, #1b2450 0%, #131a3d 34%, #0b0f28 62%, #05071a 100%)}
.kbg-starlayer{position:absolute;top:0;left:0;width:1px;height:1px;border-radius:50%;background:transparent}
.kbg-starlayer.s1{animation:kbgTwinkle 4.5s ease-in-out infinite alternate}
.kbg-starlayer.s2{animation:kbgTwinkle 7s ease-in-out infinite alternate-reverse}
@keyframes kbgTwinkle{from{opacity:.55}to{opacity:1}}
.kbg-nebula{position:absolute;left:50%;top:46%;width:78%;height:64%;transform:translate(-50%,-50%);pointer-events:none;
  background:
    radial-gradient(ellipse 46% 26% at 50% 50%, rgba(255,170,220,.28), transparent 60%),
    radial-gradient(ellipse 70% 40% at 48% 52%, rgba(120,120,255,.22), transparent 65%),
    radial-gradient(ellipse 95% 55% at 52% 48%, rgba(80,180,255,.12), transparent 70%);
  filter:blur(6px);animation:kbgNebula 26s linear infinite}
@keyframes kbgNebula{from{transform:translate(-50%,-50%) rotate(0deg) }to{transform:translate(-50%,-50%) rotate(360deg)}}
.kbg-rings{position:absolute;inset:0;pointer-events:none}
.kbg-ring{position:absolute;left:50%;top:calc(50% - 6px);width:calc(var(--rw) * 2);aspect-ratio:1/0.4;transform:translate(-50%,-50%);
  border:1px dashed rgba(150,180,255,.20);border-radius:50%}
.kbg-core{position:absolute;left:50%;top:calc(50% - 6px);transform:translate(-50%,-50%);text-align:center;z-index:20;pointer-events:none}
.kbg-core-glow{position:absolute;left:50%;top:50%;width:130px;height:130px;transform:translate(-50%,-50%);border-radius:50%;
  background:radial-gradient(circle, rgba(255,236,180,.95) 0%, rgba(255,170,220,.55) 34%, rgba(140,120,255,.30) 58%, transparent 75%);
  filter:blur(2px);animation:kbgPulse 3.2s ease-in-out infinite}
/* fl：有自定义背景图时——粉色星云让位给图片本身，核心光晕改暖金色贴合星尘风 */
.kbg-space.has-bg .kbg-nebula{display:none}
.kbg-space.has-bg .kbg-ring{border-color:rgba(255,220,170,.14)}
.kbg-space.has-bg .kbg-core-glow{background:radial-gradient(circle, rgba(255,244,214,.75) 0%, rgba(255,205,130,.35) 42%, rgba(180,160,255,.14) 62%, transparent 78%)}
/* fw：太阳系背景版——标题大字移到太阳上方，太阳/行星/星星闪闪发光 */
.kbg-space.has-bg .kbg-core{top:20%}
.kbg-space.has-bg .kbg-core-t{font-size:clamp(24px,3.4vw,44px);letter-spacing:10px}
.kbg-space.has-bg .kbg-core-s{font-size:13px;letter-spacing:5px;margin-top:4px}
.kbg-space.has-bg .kbg-core-glow{width:210px;height:110px;border-radius:50%}
.kbg-sparks{display:none;position:absolute;inset:0;pointer-events:none;z-index:8}
.kbg-space.has-bg .kbg-sparks{display:block}
.kbg-sunspark{position:absolute;width:26vmin;height:26vmin;transform:translate(-50%,-50%);border-radius:50%;mix-blend-mode:screen;
  background:radial-gradient(circle, rgba(255,240,190,.85) 0%, rgba(255,190,80,.45) 40%, rgba(255,140,40,.18) 62%, transparent 75%);
  animation:kbgSunPulse 3.4s ease-in-out infinite}
@keyframes kbgSunPulse{0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.85}50%{transform:translate(-50%,-50%) scale(1.16);opacity:1}}
.kbg-glint{position:absolute;width:38px;height:38px;transform:translate(-50%,-50%);mix-blend-mode:screen;
  background:
    radial-gradient(circle, rgba(255,255,255,.95) 0%, rgba(255,240,200,.5) 22%, transparent 45%),
    linear-gradient(0deg, transparent 46%, rgba(255,255,255,.85) 50%, transparent 54%),
    linear-gradient(90deg, transparent 46%, rgba(255,255,255,.85) 50%, transparent 54%);
  animation:kbgGlint 2.6s ease-in-out infinite}
.kbg-glint.sm{width:20px;height:20px}
@keyframes kbgGlint{0%,100%{opacity:.15;transform:translate(-50%,-50%) scale(.7) rotate(0deg)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.15) rotate(20deg)}}
/* 第二种闪法：快速双闪 + 长暗场，混用后节奏不规则 */
.kbg-glint.alt{animation-name:kbgGlintB}
@keyframes kbgGlintB{0%,100%{opacity:.08;transform:translate(-50%,-50%) scale(.6)}12%{opacity:.95;transform:translate(-50%,-50%) scale(1.1) rotate(15deg)}22%{opacity:.2;transform:translate(-50%,-50%) scale(.75)}34%{opacity:1;transform:translate(-50%,-50%) scale(1.2) rotate(-12deg)}52%{opacity:.15;transform:translate(-50%,-50%) scale(.65)}}
/* fv：太阳系背景——标题大字放太阳上方；太阳/行星/部分星星 闪闪发光（仅有背景图时启用） */
.kbg-space.has-bg .kbg-core{top:24%}
.kbg-space.has-bg .kbg-core-t{font-size:clamp(26px,3.8vw,46px);letter-spacing:12px}
.kbg-space.has-bg .kbg-core-s{font-size:13px;letter-spacing:5px}
.kbg-sparks{position:absolute;inset:0;pointer-events:none;display:none;z-index:8}
.kbg-space.has-bg .kbg-sparks{display:block}
.kbg-sun-glow{position:absolute;width:230px;height:230px;transform:translate(-50%,-50%);border-radius:50%;mix-blend-mode:screen;
  background:radial-gradient(circle, rgba(255,225,150,.6) 0%, rgba(255,170,60,.28) 45%, transparent 70%);
  animation:kbgPulse 2.8s ease-in-out infinite}
.kbg-glint{position:absolute;border-radius:50%;mix-blend-mode:screen;
  background:radial-gradient(circle, rgba(255,255,255,.95) 0%, rgba(255,255,255,.28) 32%, transparent 62%);
  animation:kbgGlint 3.4s ease-in-out infinite}
.kbg-glint::before,.kbg-glint::after{content:"";position:absolute;left:50%;top:50%;width:120%;height:2px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.85),transparent);transform:translate(-50%,-50%)}
.kbg-glint::after{transform:translate(-50%,-50%) rotate(90deg)}
@keyframes kbgGlint{0%,100%{opacity:.12;transform:translate(-50%,-50%) scale(.55)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.12)}}
@keyframes kbgPulse{0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.95}50%{transform:translate(-50%,-50%) scale(1.18);opacity:.75}}
.kbg-core-t{position:relative;font-weight:800;letter-spacing:6px;font-size:clamp(16px,2.2vw,26px);color:#fff;text-shadow:0 0 18px rgba(255,220,160,.9),0 0 40px rgba(160,140,255,.8)}
.kbg-core-s{position:relative;font-size:11px;letter-spacing:3px;color:#cfd6ff;text-shadow:0 0 10px rgba(120,140,255,.9)}
.kbg-orb{position:absolute;left:0;top:0;z-index:10;cursor:pointer;text-align:center;transition:filter .15s;will-change:transform}
.kbg-orb:hover{filter:brightness(1.25) drop-shadow(0 0 14px rgba(255,255,255,.35))}
.kbg-planet{position:relative;width:clamp(40px,5.4vw,64px);height:clamp(40px,5.4vw,64px);border-radius:50%;margin:0 auto;overflow:hidden;
  background:radial-gradient(circle at 32% 30%, #ffffff 0%, var(--pc) 22%, var(--pd) 72%, #05071a 100%);
  box-shadow:0 0 18px 2px var(--pc),inset -8px -10px 22px rgba(0,0,0,.55)}
.kbg-tex{position:absolute;inset:0;border-radius:50%;opacity:.45;
  background:repeating-linear-gradient(100deg, transparent 0 6px, rgba(255,255,255,.16) 6px 9px, transparent 9px 18px, rgba(0,0,0,.25) 18px 22px);
  background-size:220% 100%;animation:kbgSpin 9s linear infinite}
@keyframes kbgSpin{from{background-position:0 0}to{background-position:220% 0}}
.kbg-planet.ring::after{content:"";position:absolute;left:50%;top:50%;width:170%;height:56%;transform:translate(-50%,-50%) rotate(-16deg);
  border:2px solid rgba(255,235,190,.65);border-radius:50%;box-shadow:0 0 8px rgba(255,220,160,.5)}
.kbg-planet.ring{overflow:visible}
.kbg-planet.ring .kbg-tex{overflow:hidden}
.kbg-lab{margin-top:6px;line-height:1.25;pointer-events:none}
.kbg-lab b{display:block;font-size:12.5px;letter-spacing:1px;text-shadow:0 0 8px rgba(0,0,0,.9),0 0 14px currentColor}
.kbg-lab span{font-size:10.5px;color:#c9d4f5;text-shadow:0 0 6px rgba(0,0,0,.9)}
.kbg-stats{position:absolute;left:12px;top:12px;z-index:40;background:rgba(10,16,40,.72);border:1px solid rgba(130,160,255,.35);
  border-radius:10px;padding:9px 12px;color:#dbe4ff;font-size:12px;backdrop-filter:blur(3px);min-width:132px}
.kbg-stats-h{font-size:11px;letter-spacing:2px;color:#9fb4ff;border-bottom:1px solid rgba(130,160,255,.3);padding-bottom:5px;margin-bottom:6px}
.kbg-stats div span{display:inline-block;min-width:64px;color:#9aa8d8}
.kbg-stats div b{color:#ffe9b8}
.kbg-hint{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);z-index:40;white-space:nowrap;
  font-size:12px;color:#cfd8ff;background:rgba(10,16,40,.65);border:1px solid rgba(130,160,255,.3);border-radius:999px;padding:5px 14px}
.kb-group-h{grid-column:1/-1;font-weight:800;font-size:14px;color:#12314f;border-bottom:2px solid #e5e8ee;padding:8px 2px 4px;margin-top:4px}
@media(max-width:820px){
  .kbg-space{height:64vh;min-height:380px}
  .kbg-stats{font-size:11px;min-width:110px;padding:7px 9px}
  .kbg-hint{white-space:normal;text-align:center;width:86%}
  .kbg-lab b{font-size:11px}
}
/* fj 月度过程看板：每业务小面板的统计行 */
.pv-stats{font-size:12.5px;color:#3a4450;background:#f5f7fa;border:1px solid #e5e8ee;border-radius:8px;padding:6px 9px;margin:2px 0 10px}
.pv-stats b{color:#12314f}
/* ff 每业务·新老客户结果看板（团队目标表下面）：新客户绿组 / 老客户棕组 */
.no-table thead th.no-h-new{background:#1c5c34;color:#fff}
.no-table thead th.no-h-old{background:#7c531e;color:#fff}
.no-table thead tr:nth-child(2) th:nth-child(-n+6){background:#25523a}
.no-table thead tr:nth-child(2) th:nth-child(n+7){background:#5e4a28}
.no-table td:nth-child(2),.no-table td:nth-child(8),
.no-table thead tr:nth-child(2) th:nth-child(1),.no-table thead tr:nth-child(2) th:nth-child(7){border-left:2px solid #8ea0b5}
.no-table tr.gt-total td:nth-child(2),.no-table tr.gt-total td:nth-child(8){border-left:2px solid #8ea0b5}

/* ── gl：设计单来源素材（商机/报价实时同步）── */
.dg-srcimg{cursor:zoom-in; border-color:#c9a24b}
.dg-src-dl{position:absolute; right:2px; bottom:2px; width:22px; height:22px; line-height:20px; text-align:center; border-radius:50%; background:rgba(20,24,30,.72); color:#ffd97a; font-size:13px; text-decoration:none}
.dg-src-dl:hover{background:#8a6b1f; color:#fff}
.dg-att-dl{font-size:12px; color:#8a6b1f; text-decoration:none; border:1px solid #d8c48a; border-radius:10px; padding:1px 7px; margin-left:4px; background:#fffdf5; white-space:nowrap}
.dg-att-dl:hover{background:#f5e7bd}

/* ── gp：设计单「生产单PDF」3个附件位 + 生产版块同步展示 ── */
.dg-prodsheets{display:flex; flex-direction:column; gap:6px; margin-top:6px}
.dg-ps-slot{display:flex; align-items:center; gap:8px; border:1px solid var(--line); border-radius:8px; padding:6px 10px; background:#fbfcfd; font-size:13px}
.dg-ps-full{border-color:#c9a24b; background:#fffdf5}
.dg-ps-name{flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:600; color:#5a4a1c}
.dg-ps-ops{display:flex; align-items:center; gap:6px; white-space:nowrap}
.dg-ps-ops a{color:#8a6b1f; text-decoration:none}
.dg-ps-ops a:hover{text-decoration:underline}
.dg-ps-slot .qt-attach-size{margin-left:auto}
.dg-ps-add{border:1.5px dashed var(--brass); background:#fffdf5; color:var(--brass-d); cursor:pointer; justify-content:center; font-size:13px}
.dg-ps-add:hover{background:#fff7e0}
#prodDesignSheets{margin:0 0 10px}

/* ── gs：生产快捷筛选chips + 列表视图 ── */
#prodQuickBar .prod-quick.on{background:#14181e; color:#fff; border-color:#14181e}
#prodQuickBar .prod-quick-abn.on{background:#a33; border-color:#a33}
.prod-row-abn td{background:#fff5f4}
.prod-abn-tag{color:#a33; font-weight:700; font-size:12px}
#prodList table{min-width:1100px}
#prodList th{position:sticky; top:0; z-index:1}
#prodList tr:hover td{background:#fffbe9}

/* ── gu：生产弹窗按钮移到右上并悬浮 ── */
.prod-modal-head{position:sticky; top:-20px; z-index:6; background:#fff; display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:12px 0 8px; margin:-20px 0 6px; border-bottom:1px solid var(--line)}
.prod-modal-head .qt-actionsbar{flex:0 0 auto}

/* ── gv：生产弹窗右侧栏（成品图+生产单缩略，跟随悬浮） ── */
.prod-body-grid{display:flex; gap:18px; align-items:flex-start}
.prod-body-main{flex:1 1 auto; min-width:0}
.prod-body-side{flex:0 0 320px; position:sticky; top:64px; display:flex; flex-direction:column; gap:12px; border-left:1px solid var(--line); padding-left:16px}
@media(max-width:960px){.prod-body-grid{flex-direction:column}.prod-body-side{position:static; flex:auto; width:100%; border-left:none; padding-left:0}}
.prod-sheet-thumbs{display:flex; flex-wrap:wrap; gap:8px; margin:6px 0}
.prod-sheet-thumb{width:calc(50% - 4px); height:185px; border:1px solid #d8c48a; border-radius:10px; background:#fffdf5; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; text-decoration:none; color:#5a4a1c; font-size:12px; padding:6px; overflow:hidden; text-align:center}
.prod-sheet-thumb:hover{border-color:var(--brass)}
.prod-sheet-thumb img{width:100%; height:100%; object-fit:cover; border-radius:6px}
.prod-sheet-thumb .ic{font-size:46px}
.prod-sheet-thumb .nm{max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}

/* ── gw：生产视图两个按钮选中态 ── */
#prodQuickBar .prod-view-btn.on{background:#14181e; color:#fff; border-color:#14181e}

/* gx：生产单缩略图放大（历史生产单截图同尺寸） */
#prodShotSlot .prod-imgrow{display:flex; flex-wrap:wrap; gap:8px}
#prodShotSlot .qt-imgslot{width:calc(50% - 4px); aspect-ratio:auto; height:185px}

/* ── gy：生产弹窗左右分栏拖动线 ── */
.prod-split{flex:0 0 6px; align-self:stretch; cursor:col-resize; border-radius:3px; background:#e6e9ee; transition:background .15s; touch-action:none}
.prod-split:hover,.prod-split.dragging{background:var(--brass)}
@media(max-width:960px){.prod-split{display:none}}
.prod-body-side{border-left:none}

/* ── gz：订单详情面板居中放大 + 左右拖动蓝线 + 右侧生产单/成品图栏 ── */
#orderDetail .qt-drawer-panel{top:3vh; bottom:3vh; height:auto; right:auto; left:50%; transform:translateX(-50%); width:min(1420px,96vw); border-radius:14px}
.od-body-wrap{flex:1; display:flex; overflow:hidden; min-height:0}
.od-body-wrap .qt-drawer-body{overflow-y:auto}
.od-body-side{flex:0 0 380px; overflow-y:auto; padding:16px; background:#fbfcfd}
.od-split{background:#dde6f5}
.od-split:hover,.od-split.dragging{background:#3b82f6}
.od-file-tile{position:relative; cursor:zoom-in}
.od-file-tile .dg-img-x{position:absolute; top:4px; right:4px}
.od-file-tile .dg-src-dl{position:absolute; right:4px; bottom:4px}
@media(max-width:960px){
  #orderDetail .qt-drawer-panel{top:0; bottom:0; left:0; transform:none; width:100vw; border-radius:0}
  .od-body-wrap{flex-direction:column}
  .od-body-side{flex:auto; width:100%}
  .od-split{display:none}
}

/* ── ha：编辑订单嵌入销售订单详情左栏 ── */
#odDetailBody .qt-modal-box.od-embedbox{max-width:none !important; width:100% !important; max-height:none !important; height:auto !important; box-shadow:none; border-radius:0; padding:0 2px; background:transparent; overflow:visible !important}

/* ── hb：编辑订单一行5项，随左右拖动条自动调节列数/大小（容器查询） ── */
.od-editbox{container-type:inline-size}
.od-editbox .qt-grid2{display:grid; grid-template-columns:repeat(6,1fr); gap:10px 12px}
@container (max-width: 950px){ .od-editbox .qt-grid2{grid-template-columns:repeat(5,1fr)} }
@container (max-width: 840px){ .od-editbox .qt-grid2{grid-template-columns:repeat(4,1fr)} }
@container (max-width: 760px){ .od-editbox .qt-grid2{grid-template-columns:repeat(3,1fr)} }
@container (max-width: 560px){ .od-editbox .qt-grid2{grid-template-columns:repeat(2,1fr)} }
@container (max-width: 380px){ .od-editbox .qt-grid2{grid-template-columns:1fr} }
/* hi：有效期|PI货值合计|PI备注|内部备注 一行 */
.od-editbox .od-gross-row{display:grid; grid-template-columns:130px 170px 1fr 1fr; gap:10px 12px; align-items:start; margin-top:6px}
.od-gross-row textarea{min-height:38px}
@container (max-width: 820px){ .od-editbox .od-gross-row{grid-template-columns:1fr 1fr} }
@container (max-width: 480px){ .od-editbox .od-gross-row{grid-template-columns:1fr} }

/* ── hc：嵌入编辑的按钮条置顶悬浮高亮 ── */
.od-embed-topbar{background:#fffdf5; border:1.5px solid var(--brass); border-radius:10px; padding:6px 10px; margin:0 !important; box-shadow:0 3px 12px rgba(180,140,40,.22); display:flex; gap:8px; flex-wrap:nowrap; white-space:nowrap}

/* ── he：PI 产品明细表下方明显的左右拖动条 ── */
#odPiWrap{overflow-x:auto; padding-bottom:4px; scrollbar-width:auto; scrollbar-color:#a9b4c2 #eef1f5}
#odPiWrap::-webkit-scrollbar{height:13px}
#odPiWrap::-webkit-scrollbar-track{background:#eef1f5; border-radius:7px}
#odPiWrap::-webkit-scrollbar-thumb{background:#a9b4c2; border-radius:7px; border:2px solid #eef1f5}
#odPiWrap::-webkit-scrollbar-thumb:hover{background:var(--brass)}

/* ── hf：「从商机/报价带入」高亮绿色（一键同步大项+供应商成本） ── */
#btnOrderPull{background:#1c5c34; color:#fff; border-color:#1c5c34; font-weight:700}
#btnOrderPull:hover{background:#247a45; border-color:#247a45}

/* ── hg：订单详情+编辑合并，头部页签（订单详情/回款/操作历史） ── */
.od-head-tabs{display:flex; gap:4px; background:#f0f2f6; border-radius:10px; padding:4px}
.od-htab{border:none; background:transparent; padding:7px 14px; border-radius:8px; font-size:13px; cursor:pointer; color:#5a6470; white-space:nowrap}
.od-htab.on{background:#14181e; color:#fff; font-weight:700}
.od-embed-meta{margin:0 0 8px}
#odTabPane{padding-top:4px}

/* ── hh：回款移到右栏 + 回款凭证/生产单 拖拽粘贴区 ── */
.od-pay-mini{display:grid; grid-template-columns:1fr 1fr; gap:6px 10px; background:#fbfcfd; border:1px solid var(--line); border-radius:10px; padding:10px 12px; font-size:13px}
.od-pay-mini div{display:flex; justify-content:space-between; gap:8px}
.od-pay-mini span{color:#8a94a0}
.od-dropzone{border:1.5px dashed var(--brass); border-radius:10px; background:#fffdf5; color:var(--brass-d); font-size:12.5px; text-align:center; padding:14px 10px; cursor:pointer; margin-top:6px}
.od-dropzone:hover{background:#fff7e0}
.od-dropzone.drop-hot{background:#fff2cc; border-color:#c2570a}

/* ── hj：收款渠道移到右栏回款下 ── */
#odPayChanSlot{margin-top:8px}
#odPayChanSlot .od-paychan-moved{width:100%}

/* ── hk：订单号整格红色可点 + 右侧4列固定 ── */
.ord-okki .ord-no-cell{cursor:pointer}
.ord-okki .ord-no-cell .qt-link, .ord-okki .ord-no-cell .qt-sub{color:#c2181f !important; font-weight:700}
.ord-okki .ord-no-cell:hover{background:#fff5f4}
/* hz：订单表格横向拖动条加粗好拖（不再钉列，避免合并行错位） */
#ordersBox .qt-rec-tablewrap{overflow-x:auto; padding-bottom:4px; scrollbar-width:auto; scrollbar-color:#a9b4c2 #eef1f5}
#ordersBox .qt-rec-tablewrap::-webkit-scrollbar{height:14px}
#ordersBox .qt-rec-tablewrap::-webkit-scrollbar-track{background:#eef1f5; border-radius:7px}
#ordersBox .qt-rec-tablewrap::-webkit-scrollbar-thumb{background:#a9b4c2; border-radius:7px; border:2px solid #eef1f5}
#ordersBox .qt-rec-tablewrap::-webkit-scrollbar-thumb:hover{background:var(--brass)}

/* ── hn：商机弹窗一行6列 + 按钮悬浮到标题行 ── */
.qt-grid6{display:grid; grid-template-columns:repeat(6,1fr); gap:10px 12px}
@media(max-width:1300px){.qt-grid6{grid-template-columns:repeat(4,1fr)} .qt-grid6 .qt-field[style*="span 5"]{grid-column:span 3 !important}}
@media(max-width:900px){.qt-grid6{grid-template-columns:repeat(2,1fr)} .qt-grid6 .qt-field[style*="span 5"]{grid-column:span 2 !important}}
@media(max-width:560px){.qt-grid6{grid-template-columns:1fr} .qt-grid6 .qt-field[style*="span 5"]{grid-column:span 1 !important}}
.opp-modal-head{align-items:flex-start}
.opp-modal-head .qt-actionsbar{flex-wrap:wrap; justify-content:flex-end; max-width:66%}

/* ── hp：商机弹窗紧密排版（标题左移留白 · 日志/备注并排 · 名下报价订单并排） ── */
.opp-linked-grid{display:grid; grid-template-columns:1fr 1fr; gap:10px 16px; align-items:start; margin-top:4px}
@media(max-width:900px){.opp-log-remark,.opp-linked-grid{grid-template-columns:1fr}}
#oppModal .op-log-box, #oppModal #opLogBox{max-height:none; overflow:visible}   /* hx：只保留 .opp-log 内层一个滚动条 */
#oppModal .fp-box{margin-top:6px}

/* ── hs：跟进区两列——左跟进动态/时间，右名下报价·订单+跟进计划（顶部对齐，无空档） ── */
.opp-follow-row{display:grid; grid-template-columns:1fr 1fr; gap:12px 18px; align-items:start; margin-top:8px}
.opp-follow-left{display:flex; flex-direction:column; gap:8px}
.opp-follow-left textarea{min-height:96px}
.opp-follow-right{border:1px solid var(--line); border-radius:10px; background:#fbfcfd; padding:10px 12px}
.opp-follow-right .opp-linked-grid{grid-template-columns:1fr 1fr; margin-top:0; gap:8px 16px}
.opp-follow-right .fp-box{margin-top:8px; border-top:1px dashed var(--line); padding-top:8px}
@media(max-width:1100px){.opp-follow-row{grid-template-columns:1fr}}
@media(max-width:700px){.opp-follow-right .opp-linked-grid{grid-template-columns:1fr}}

/* ── ht：AI 军师移到图片右侧，各占半边 ── */
.opp-img-ai-row{display:grid; grid-template-columns:1fr 1fr; gap:12px 18px; align-items:start; margin-top:4px}
.opp-img-ai-row > .qt-field{min-width:0}
.opp-img-ai-row .op-ai-panel{margin-top:0; max-height:520px; overflow-y:auto}
@media(max-width:1100px){.opp-img-ai-row{grid-template-columns:1fr}}

/* ── hu：动态日志宽度收到与左栏一致（不再拉满整宽） ── */
#oppModal #opLogBox .qt-sec-title{margin-top:2px !important; margin-bottom:4px}
#oppModal .opp-log{max-height:132px}
/* 跟进区与动态日志之间不留大空档：左栏跟随内容高度 */
.opp-follow-row{align-items:start}
.opp-follow-left{align-self:start}
@media(max-width:1100px){#oppModal .opp-log-narrow{width:100%}}

/* ── hv：客户源文件移到图片右侧，可拖可粘贴 ── */
.opp-img-file-col{display:grid; grid-template-columns:1fr 1fr; gap:10px 14px; align-items:start; min-width:0}
.opp-img-file-col .qt-field{min-width:0}
.opp-img-file-col #opFileZone{min-height:96px; display:flex; align-items:center; justify-content:center; text-align:center}
@media(max-width:820px){.opp-img-file-col{grid-template-columns:1fr}}

/* ── hy：商机弹窗主体左右分栏 + 蓝色拖动条 ── */
.opp-split-row{display:flex; align-items:flex-start; gap:0; margin-top:6px}
.opp-col-left{flex:0 0 56%; min-width:0; display:flex; flex-direction:column; gap:8px}
.opp-col-right{flex:1 1 0; min-width:0; display:flex; flex-direction:column; gap:10px; padding-left:14px}
.opp-splitter{margin:0 4px; align-self:stretch; min-height:260px}
.opp-col-right .opp-follow-right{margin-top:0}
.opp-col-right .op-ai-panel{margin-top:0; max-height:none}
.opp-col-left .opp-img-file-col{margin-top:2px}
@media(max-width:1100px){
  .opp-split-row{flex-direction:column}
  .opp-col-left,.opp-col-right{flex:auto; width:100%; padding-left:0}
  .opp-splitter{display:none}
}
.opp-assist-row{display:grid; grid-template-columns:1fr 2fr; gap:10px 12px; align-items:start}
.opp-assist-row .qt-field[style*="span 5"]{grid-column:auto !important}
@media(max-width:700px){.opp-assist-row{grid-template-columns:1fr}}

/* ── ia：商机卡片在动态下方显示最近跟进时间 ── */
.opp-kv.opp-lastat{color:#8a6a2f}
.opp-kv.opp-lastat span:not(.k){font-weight:600}

/* ── id：邮件查看窗加宽 + 关闭/删除右上角高亮 ── */
.mv-head{align-items:flex-start}
.mv-head .qt-actionsbar{flex:0 0 auto}
#btnMvDelete.mv-del{color:#c0392b; border-color:#e6b3ae; background:#fff6f5}
#btnMvDelete.mv-del:hover{background:#c0392b; color:#fff; border-color:#c0392b}

/* ── ie：行政财务（行政支出 + 绩效核算） ── */
.perf-tbl .perf-in{padding:4px 6px; font-size:12.5px}
.perf-tbl td{vertical-align:middle}
.perf-grade{display:inline-block; min-width:26px; text-align:center; border-radius:6px; padding:2px 8px; font-weight:800; color:#fff}
.perf-grade.pf-s{background:#6b3fb0}
.perf-grade.pf-a{background:#1e7e34}
.perf-grade.pf-b{background:#c2570a}
.perf-grade.pf-c{background:#a33}
#aeStatsBox{display:flex; gap:12px; flex-wrap:wrap; margin-bottom:10px}

/* ── if：行政页签 ── */
.adm-tabs{display:flex; gap:6px; background:#f0f2f6; border-radius:12px; padding:5px; margin-bottom:12px; width:fit-content}
.adm-tab{border:none; background:transparent; padding:9px 20px; border-radius:9px; font-size:14px; font-weight:600; color:#5a6470; cursor:pointer; white-space:nowrap}
.adm-tab:hover{color:var(--ink)}
.adm-tab.on{background:#14181e; color:#fff}

/* ── ig：行政支出审批流状态 ── */
.ae-st{display:inline-block; border-radius:6px; padding:2px 8px; font-size:12px; font-weight:700; white-space:nowrap}
.ae-st-wait{background:#fff3cd; color:#8a6a2f}
.ae-st-app{background:#e7dcfa; color:#5b34a1}
.ae-st-ok{background:#e9f7ee; color:#1e7e34}
.ae-st-no{background:#fdecea; color:#a33}
.ae-pass{background:#1e7e34 !important; color:#fff !important; border-color:#1e7e34 !important}
.ae-rej{background:#fff6f5 !important; color:#c0392b !important; border-color:#e6b3ae !important}
.stat-card.ae-card-todo{background:#fffbe9; border-color:#e2c76f}
.stat-card.ae-card-todo2{background:#f5f0fc; border-color:#c6b0ec}

/* ── ih：行政支出弹窗左右分栏（紫色拖动条）+ 左侧一行5项 ── */
.ae-split-row{display:flex; align-items:flex-start; margin-top:8px}
.ae-col-left{flex:0 0 62%; min-width:0}
.ae-col-right{flex:1 1 0; min-width:0; padding-left:14px}
.ae-splitter{margin:0 4px; align-self:stretch; min-height:240px; background:#e6dcf7}
.ae-splitter:hover,.ae-splitter.dragging{background:#6b46c1}
.ae-grid5{display:grid; grid-template-columns:repeat(5,1fr); gap:10px 12px}
.ae-col-right .prod-sheet-thumbs{margin:0 0 8px}
.ae-col-right .prod-sheet-thumb{width:calc(50% - 4px); height:150px}
@media(max-width:1200px){.ae-grid5{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){
  .ae-split-row{flex-direction:column}
  .ae-col-left,.ae-col-right{flex:auto; width:100%; padding-left:0}
  .ae-splitter{display:none}
  .ae-grid5{grid-template-columns:repeat(2,1fr)}
}

/* ── ii：弹窗可自由拖动 + 右下角拉伸 ── */
.qt-modal-box.qt-draggable{resize:both; overflow:auto; will-change:transform}
.qt-modal-box.qt-dragging{box-shadow:0 18px 50px rgba(20,30,40,.28); transition:none}
.qt-draghandle{cursor:move; user-select:none}
.qt-draghandle button, .qt-draghandle input, .qt-draghandle select{cursor:auto}
.qt-draghandle::after{content:"⠿ 可拖动窗口 · 双击复位"; font-size:11px; color:#b3bcc6; margin-left:8px; align-self:center; white-space:nowrap}
@media(max-width:900px){ .qt-modal-box.qt-draggable{resize:none} .qt-draghandle{cursor:auto} .qt-draghandle::after{display:none} }

/* ══════════ ij：外采单弹窗 —— 第一行悬浮高亮 + 按钮移到右上角 ══════════ */
.pc-modal-head{
  background:linear-gradient(180deg,#fffdf3 0%,#fff9e6 100%);
  border:1.5px solid var(--brass);
  border-radius:12px;
  padding:12px 14px;
  margin:-20px -20px 12px;
  box-shadow:0 6px 16px rgba(180,140,40,.22);
  align-items:center;
  top:-20px;
  border-radius:12px 12px 10px 10px;
  border-width:0 0 1.5px 0;
}
.pc-modal-head .qt-sec-title{font-size:16px; color:#5a4a1c}
.pc-modal-head .qt-sub{color:#8a7742}
.pc-modal-head .qt-actionsbar{display:flex; flex-wrap:wrap; gap:8px; align-items:center; justify-content:flex-end}
.pc-modal-head .qt-actionsbar button{white-space:nowrap}
@media(max-width:820px){
  .pc-modal-head{flex-direction:column; align-items:stretch; gap:8px}
  .pc-modal-head .qt-actionsbar{justify-content:flex-start}
}
.pc-modal-head .od-embed-topbar{background:transparent; border:none; box-shadow:none; padding:0; flex-wrap:wrap; white-space:normal}
.pc-modal-head.qt-draghandle::after{display:none}

/* ══════════ ij-2：外采单弹窗 —— 每行 6 列 · 简洁界面 ══════════ */
#procureModal .qt-modal-box{container-type:inline-size}
.pc-grid6{display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:8px 10px; margin:6px 0 10px; align-items:end}
.pc-grid6 .qt-field{min-width:0; margin:0; display:flex; flex-direction:column; justify-content:flex-end}
.pc-grid6 .sp2{grid-column:span 2}
.pc-grid6 .sp3{grid-column:span 3}
.pc-grid6 .spall{grid-column:1/-1}
.pc-grid6 .qt-label{display:block; font-size:11px; line-height:1.35; color:#6b7785; margin-bottom:3px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.pc-grid6 .qt-input{width:100%; font-size:13px; padding:6px 8px}
.pc-grid6 textarea.qt-input{min-height:34px}
.pc-grid6 .pc-upbtn{align-self:flex-start; display:inline-block; padding:4px 10px; font-size:12px}
.pc-grid6 #pcPayShotList{align-self:flex-start}
.pc-sec{font-weight:700; font-size:13px; color:#2f3b46; margin:12px 0 2px; padding-bottom:3px; border-bottom:1px solid var(--line)}
.pc-sec-tip{font-weight:400; font-size:11px; color:#93a0ad; margin-left:8px}
@container (max-width:1000px){ .pc-grid6{grid-template-columns:repeat(4,minmax(0,1fr))} }
@container (max-width:780px){ .pc-grid6{grid-template-columns:repeat(3,minmax(0,1fr))} .pc-grid6 .sp3{grid-column:span 3} }
@container (max-width:540px){ .pc-grid6{grid-template-columns:repeat(2,minmax(0,1fr))} .pc-grid6 .sp2,.pc-grid6 .sp3{grid-column:1/-1} }

/* ══════════ ik：外采列表 —— 可点统计 / 筛选条 / 拖动列宽 / 行选中 ══════════ */
.pc-stats{display:flex; flex-wrap:wrap; gap:10px}
.pc-stat{cursor:pointer; transition:transform .12s, box-shadow .12s, border-color .12s; min-width:118px}
.pc-stat:hover{transform:translateY(-2px); box-shadow:0 6px 16px rgba(30,45,60,.14); border-color:var(--brass)}
.pc-stat.pc-stat-on{border:1.5px solid var(--brass); background:linear-gradient(180deg,#fffdf3,#fff7e2); box-shadow:0 4px 14px rgba(180,140,40,.22)}
.pc-stat .stat-n{white-space:nowrap}
.pc-stat-sub2{font-size:12px; color:#8a7742; font-weight:600}

.pc-toolbar{display:flex; flex-wrap:wrap; align-items:flex-end; gap:8px}
.pc-toolbar .pc-search{flex:1 1 220px; min-width:190px}
.pc-toolbar .pc-fl{flex:0 0 auto}
.pc-toolbar .pc-fl .qt-input{min-width:104px; max-width:170px; font-size:12px; padding:5px 7px}
.pc-toolbar .pc-fl .qt-label{font-size:11px; color:#6b7785}
.pc-tb-gap{flex:1 1 12px}
.pc-rowacts{display:inline-flex; align-items:center; gap:6px; padding:5px 9px; border:1.5px solid var(--brass); border-radius:10px; background:#fffdf5; box-shadow:0 3px 12px rgba(180,140,40,.20)}
.pc-rowacts button[disabled]{opacity:.42; cursor:not-allowed}
.pc-sel-tip{font-size:11px; color:#8a7742; white-space:nowrap; margin-right:2px}

.pc-tablewrap{overflow:auto}
.pc-table{table-layout:fixed; width:max-content; min-width:100%}
.pc-table thead th{position:relative; user-select:none; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.pc-table td{overflow:hidden; text-overflow:ellipsis; word-break:break-word}
.pc-table .col-grip{position:absolute; top:0; right:-3px; width:8px; height:100%; cursor:col-resize; z-index:3}
.pc-table .col-grip::before{content:""; position:absolute; top:6px; bottom:6px; left:3px; width:2px; background:rgba(255,255,255,.30); border-radius:2px}
.pc-table .col-grip:hover::before{background:var(--brass); top:2px; bottom:2px; width:3px}
.pc-table.col-resizing{cursor:col-resize; user-select:none}
.pc-table tbody tr{cursor:pointer}
.pc-table tbody tr:hover{background:#fbf7ea}
.pc-table tbody tr.pc-row-on{background:#fff4d6; box-shadow:inset 3px 0 0 var(--brass)}

.pc-no-link{display:inline-block; white-space:nowrap; font-weight:800; color:#8a6a12; text-decoration:none; border-bottom:2px solid rgba(180,140,40,.45); padding:1px 3px; border-radius:4px; background:linear-gradient(180deg,#fffdf3,#fff5dd)}
.pc-no-link:hover{color:#5a4a1c; background:#ffeeba; border-bottom-color:var(--brass)}
@media(max-width:900px){ .pc-toolbar .pc-search{flex:1 1 100%} .pc-tb-gap{display:none} }

/* ══════════ il：商机顶部统计 —— 总 / 新客户 / 老客户 三大列 ══════════ */
.opp-stat-groups{display:flex; flex-wrap:wrap; gap:12px; align-items:stretch; width:100%}
.osg{flex:1 1 300px; min-width:288px; display:flex; flex-direction:column;
  border-radius:14px; overflow:hidden; background:#fff;
  border:1.5px solid var(--osg-bd); box-shadow:0 4px 14px var(--osg-sh)}
.osg-h{display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:7px 13px; background:var(--osg-bg); border-bottom:1.5px solid var(--osg-bd)}
.osg-t{font-weight:800; font-size:14px; color:var(--osg-tx); letter-spacing:.5px; white-space:nowrap}
.osg-x{font-size:11.5px; font-weight:700; color:var(--osg-tx); opacity:.78; white-space:nowrap}
.osg-b{flex:1; display:grid; grid-template-columns:repeat(auto-fit,minmax(0,1fr)); gap:0; padding:0}
.osg-c{padding:11px 8px 12px; text-align:center; border-left:1px dashed var(--osg-bd)}
.osg-c:first-child{border-left:none}
.osg-n{font-size:25px; font-weight:800; line-height:1.15; color:var(--osg-nm); white-space:nowrap}
.osg-n.osg-money{font-size:16px; letter-spacing:-.2px; white-space:normal; word-break:break-word}
.osg-l{margin-top:4px; font-size:11.5px; color:#6b7785; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}

.osg-all{--osg-bd:#dcbc6a; --osg-bg:linear-gradient(180deg,#fffdf3 0%,#fff5db 100%); --osg-tx:#8a6a12; --osg-nm:#6b5310; --osg-sh:rgba(180,140,40,.22)}
.osg-new{--osg-bd:#e9a98e; --osg-bg:linear-gradient(180deg,#fff9f6 0%,#ffeade 100%); --osg-tx:#b5502a; --osg-nm:#c0392b; --osg-sh:rgba(200,90,50,.18)}
.osg-old{--osg-bd:#8cc79c; --osg-bg:linear-gradient(180deg,#f7fcf9 0%,#e7f6ec 100%); --osg-tx:#1e7e34; --osg-nm:#1e7e34; --osg-sh:rgba(40,140,70,.18)}
.osg:hover{box-shadow:0 7px 20px var(--osg-sh)}

@media(max-width:1180px){ .osg{flex:1 1 100%} .osg-n{font-size:23px} }
@media(max-width:560px){ .osg-b{grid-template-columns:repeat(2,1fr)} .osg-c{border-left:none; border-top:1px dashed var(--osg-bd)} .osg-c:nth-child(-n+2){border-top:none} }

/* ══════════ im：报价页顶部 —— 与商机一致的分组面板 ══════════ */
#pageRecords .rec-toprow2{align-items:stretch; gap:12px}
#pageRecords .rec-toprow2 .stats-row{flex:1 1 620px; min-width:0; display:block}
.qs-groups{display:flex; flex-wrap:wrap; gap:12px; align-items:stretch; height:100%}
.qs-groups .osg{flex:1 1 300px; min-width:270px}
.osg-who{--osg-bd:#8fb6e4; --osg-bg:linear-gradient(180deg,#f8fbff 0%,#e9f2fd 100%); --osg-tx:#22598f; --osg-nm:#22598f; --osg-sh:rgba(40,90,150,.16)}
.osg-tool{--osg-bd:#c9b8e6; --osg-bg:linear-gradient(180deg,#fbf9ff 0%,#f0eafc 100%); --osg-tx:#5b3fa0; --osg-nm:#5b3fa0; --osg-sh:rgba(107,70,193,.16)}

.qs-click{cursor:pointer; transition:background .12s}
.qs-click:hover{background:#fffaee}
.qs-amt{margin-top:3px; font-size:11.5px; font-weight:700; color:#8a7742; white-space:nowrap}

.qs-who-b{flex:1; padding:6px 12px 8px; display:flex; flex-direction:column; gap:2px; max-height:186px; overflow-y:auto}
.qs-who-row{display:grid; grid-template-columns:78px 1fr auto; align-items:center; gap:8px;
  padding:4px 6px; border-radius:7px; cursor:pointer; font-size:12.5px}
.qs-who-row:hover{background:#eef5fd}
.qs-who-n{font-weight:700; color:#22598f; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.qs-who-bar{height:7px; border-radius:5px; background:#dfeafa; overflow:hidden}
.qs-who-bar i{display:block; height:100%; border-radius:5px; background:linear-gradient(90deg,#7aa9e0,#3d7cc4)}
.qs-who-v{white-space:nowrap; color:#44525f; font-size:12px}
.qs-who-v b{color:#1e7e34}

#pageRecords .rec-toppanel{flex:1 1 470px; background:#fff; border:1.5px solid var(--osg-bd); border-radius:14px; padding:0; gap:0; box-shadow:0 4px 14px var(--osg-sh); overflow:hidden}
#pageRecords .rec-toppanel-b{display:flex; flex-direction:column; gap:7px; padding:10px 12px 11px}

/* 状态标签条：跟面板同一套圆角/描边风格 */
#pageRecords .status-tabs{gap:7px; margin:10px 0 12px}
.qs-groups .osg-b{align-items:center}
.qs-who-b{justify-content:center}

/* ══════════ in：订单页顶部 —— 与商机/报价一致的分组面板 ══════════ */
#pageOrders .ord-toprow{display:flex; align-items:stretch; gap:12px; flex-wrap:wrap; margin-bottom:8px}
#pageOrders .ord-toprow .stats-row{flex:1 1 560px; min-width:0; margin:0; display:block}
#pageOrders .ord-toolpanel{flex:1 1 470px; min-width:320px; background:#fff; border:1.5px solid var(--osg-bd);
  border-radius:14px; box-shadow:0 4px 14px var(--osg-sh); overflow:hidden; display:flex; flex-direction:column}
#pageOrders .ord-toolpanel-b{flex:1; display:flex; flex-direction:column; justify-content:center; padding:10px 12px 11px}
#pageOrders .ord-filterrow{margin:0}
.osg-owe{--osg-bd:#e9a98e; --osg-bg:linear-gradient(180deg,#fff9f6 0%,#ffeade 100%); --osg-tx:#b5502a; --osg-nm:#c0392b; --osg-sh:rgba(200,90,50,.18)}
.ord-payline{position:relative; height:16px; margin:0 12px 11px; border-radius:9px; background:#eef1f4; overflow:hidden}
.ord-payline i{display:block; height:100%; border-radius:9px; background:linear-gradient(90deg,#5cba76,#1e7e34)}
.ord-payline span{position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-size:10.5px; font-weight:800; color:#33414d; letter-spacing:.4px}
#pageOrders .ord-tabs{margin:0 0 10px; border-bottom:1.5px solid var(--line)}
@media(max-width:1180px){ #pageOrders .ord-toprow .stats-row, #pageOrders .ord-toolpanel{flex:1 1 100%} }

/* ══════════ io：设计页顶部 —— 与其他版块一致的分组面板 ══════════ */
#pageDesign .dg-toprow{display:flex; align-items:stretch; gap:12px; flex-wrap:wrap; margin-bottom:10px}
#pageDesign .dg-toprow .stats-row{flex:1 1 520px; min-width:0; margin:0; display:block}
#pageDesign .dg-toolpanel{flex:1 1 500px; min-width:330px; background:#fff; border:1.5px solid var(--osg-bd);
  border-radius:14px; box-shadow:0 4px 14px var(--osg-sh); overflow:hidden; display:flex; flex-direction:column}
#pageDesign .dg-toolpanel-b{flex:1; display:flex; flex-direction:column; justify-content:center; gap:8px; padding:10px 12px 11px}
.dg-late{color:#c0392b !important}
.dg-stars{font-size:19px; letter-spacing:2px; color:#e8a33d}
@media(max-width:1180px){ #pageDesign .dg-toprow .stats-row, #pageDesign .dg-toolpanel{flex:1 1 100%} }

/* ══════════ ip：设计单去重 / 提交设计需求 ══════════ */
.dg-nos{display:flex; flex-wrap:wrap; gap:5px; margin:4px 0 2px}
.dg-kind{font-size:10.5px; font-weight:800; padding:1px 7px; border-radius:20px; white-space:nowrap}
.dg-kind-pre{background:#fff2dd; color:#8a6a12; border:1px solid #e0c384}
.dg-kind-ord{background:#e6f6ec; color:#1e7e34; border:1px solid #8cc79c}
.dg-no-ord{background:#eaf4ff !important; color:#22598f !important; border-color:#a8c8ea !important; font-weight:700}
.dg-no-wait{background:#f3f5f7 !important; color:#9aa5b0 !important; border-color:#dde3e9 !important}
.dgr-dup{margin-top:12px; padding:11px 13px; border-radius:11px; background:linear-gradient(180deg,#fff8f2,#ffeee0); border:1.5px solid #e9a98e; color:#a04426; font-size:13px; line-height:1.6}
.dgm-list{display:flex; flex-direction:column; gap:6px; max-height:46vh; overflow-y:auto}
.dgm-row{display:grid; grid-template-columns:20px 1fr auto auto auto; gap:9px; align-items:center;
  padding:8px 10px; border:1px solid var(--line); border-radius:10px; cursor:pointer; font-size:13px}
.dgm-row:hover{background:#f7fafd; border-color:#8fb6e4}
.dgm-t{font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.dgm-s{font-size:11.5px; padding:1px 8px; border-radius:20px; background:#eef2f6; color:#44525f; white-space:nowrap}
.dgm-n{font-size:11.5px; color:#22598f; white-space:nowrap}

/* ══════════ iq：供应（供应商管理）/ 战略 / 交付页签 ══════════ */
#pageSupplier .sup-toprow{display:flex; align-items:stretch; gap:12px; flex-wrap:wrap; margin-bottom:12px}
#pageSupplier .sup-toprow .stats-row{flex:1 1 470px; min-width:0; margin:0; display:block}
#pageSupplier .sup-toolpanel{flex:1 1 470px; min-width:320px; background:#fff; border:1.5px solid var(--osg-bd);
  border-radius:14px; box-shadow:0 4px 14px var(--osg-sh); overflow:hidden; display:flex; flex-direction:column}
#pageSupplier .sup-toolpanel-b{flex:1; display:flex; align-items:center; padding:10px 12px 11px}
#pageSupplier #supplierList{background:#fff; border:1px solid var(--line); border-radius:12px; overflow:hidden}
#pageSupplier .sup-row{padding:10px 14px}
#pageSupplier .sup-row:nth-child(odd){background:#fbfcfd}
#pageSupplier .sup-form{background:#fff; border:1px solid var(--line); border-radius:12px; padding:12px 14px}
@media(max-width:1180px){ #pageSupplier .sup-toprow .stats-row, #pageSupplier .sup-toolpanel{flex:1 1 100%} }

.strat-hero{display:flex; align-items:center; gap:16px; padding:18px 20px; border-radius:14px;
  background:linear-gradient(135deg,#f4f0ff 0%,#eaf2fd 100%); border:1.5px solid #c9b8e6; box-shadow:0 4px 14px rgba(107,70,193,.14)}
.strat-ico{font-size:44px; line-height:1}
.strat-ideas{display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:12px; margin-top:14px}
.strat-card{background:#fff; border:1px solid var(--line); border-radius:12px; padding:13px 15px; transition:box-shadow .15s, border-color .15s}
.strat-card:hover{border-color:#c9b8e6; box-shadow:0 5px 16px rgba(107,70,193,.14)}
.strat-card b{display:block; font-size:14px; margin-bottom:4px; color:#3a2c5c}

#deliverTabs{margin-bottom:10px}
#pageSupplier .sup-toolpanel-b .qt-actionsbar{flex-wrap:wrap; gap:8px; width:100%}
#pageSupplier .sup-toolpanel-b .qt-field.inline{flex:1 1 150px; min-width:140px}
#pageSupplier .sup-row{display:flex; align-items:center; justify-content:space-between; gap:12px}
#pageSupplier .sup-row > div:first-child{min-width:0}
#pageSupplier #prodRoleBox{margin:0 0 12px; border-radius:12px}

/* ══════════ ir：生产排期顶部面板 ══════════ */
#pageProduction .prd-toprow{display:flex; align-items:stretch; gap:12px; flex-wrap:wrap; margin-bottom:10px}
#pageProduction .prd-toprow .stats-row{flex:1 1 560px; min-width:0; margin:0; display:block}
#pageProduction .prd-toolpanel{flex:1 1 480px; min-width:330px; background:#fff; border:1.5px solid var(--osg-bd);
  border-radius:14px; box-shadow:0 4px 14px var(--osg-sh); overflow:hidden; display:flex; flex-direction:column}
#pageProduction .prd-toolpanel-b{flex:1; display:flex; flex-direction:column; justify-content:center; gap:8px; padding:10px 12px 11px}
#pageProduction .prd-toolpanel-b #prodAdvBar > *{margin:0}
@media(max-width:1180px){ #pageProduction .prd-toprow .stats-row, #pageProduction .prd-toolpanel{flex:1 1 100%} }
#pageProduction .prd-toprow .stats-row{flex:1 1 700px}
#pageProduction .prd-toolpanel{flex:1 1 430px}
#pageProduction .qs-groups .osg-all{flex:1.45 1 340px}
#pageProduction .qs-groups .osg-owe,#pageProduction .qs-groups .osg-old{flex:1 1 260px}
#pageProduction .prd-toolpanel-b .qt-actionsbar{gap:6px}
#pageProduction .prd-toolpanel-b .qt-lockbtn,#pageProduction .prd-toolpanel-b .qt-print{padding:5px 9px; font-size:12px}
#pageProduction .prd-toolpanel-b #prodAdvBar .qt-actionsbar,#pageProduction .prd-toolpanel-b #prodAdvBar > div{display:flex; flex-wrap:wrap; gap:6px; margin:0}
#pageProduction .prd-toolpanel-b #prodAdvBar .qt-field{flex:0 1 auto; margin:0}
#pageProduction .prd-toolpanel-b #prodAdvBar .qt-input{max-width:150px; font-size:12px; padding:5px 7px}
#pageProduction .prd-toolpanel-b #prodAdvBar .qt-label{font-size:11px}

/* ══════════ is：供应商卡片看板（参考商机） ══════════ */
#pageSupplier #supplierList{background:transparent; border:none; border-radius:0; overflow:visible}
.spv-board{display:flex; gap:12px; align-items:flex-start; overflow-x:auto; padding-bottom:6px}
.spv-col{flex:0 0 290px; min-width:290px}
.spv-card{position:relative; cursor:pointer}
.spv-card.spv-off{opacity:.55}
.spv-name{font-size:14.5px}
.spv-tagoff{margin-left:6px; font-size:10.5px; padding:1px 7px; border-radius:20px; background:#eef1f4; color:#8a949e}
.spv-kv{font-size:12px; color:#44525f; margin:3px 0}
.spv-miss{color:#c0392b; font-weight:700}
.spv-chips{display:flex; flex-wrap:wrap; gap:4px; margin:5px 0 2px}
.spv-chip{font-size:10.5px; padding:1px 7px; border-radius:20px; background:#eef4fb; color:#22598f; border:1px solid #cfe0f2; white-space:nowrap}
.spv-act{display:flex; justify-content:flex-end; gap:6px; margin-top:7px; padding-top:6px; border-top:1px dashed var(--line)}
#pageSupplier #prodRoleBox{display:none}
#usersModal #prodRoleBox{display:block}

/* ══════════ it：生产顶部 —— 3列2排 / 2列2排 + 可拖宽度 ══════════ */
#pageProduction .prd-toprow{align-items:stretch}
#pageProduction .prd-groups{gap:12px}
#pageProduction .prd-p1{flex:1.5 1 300px}
#pageProduction .prd-p2{flex:1 1 210px}
.prd-g3{grid-template-columns:repeat(3,minmax(0,1fr)) !important}
.prd-g2{grid-template-columns:repeat(2,minmax(0,1fr)) !important}
.prd-c{padding:8px 6px 9px; border-top:1px dashed var(--osg-bd); position:relative; border-radius:8px; transition:background .12s}
.prd-g3 .prd-c:nth-child(-n+3),.prd-g2 .prd-c:nth-child(-n+2){border-top:none}
.prd-c .osg-n{font-size:22px}
.prd-c .osg-l{font-size:11px; margin-top:2px}
.prd-c.qs-click{cursor:pointer}
.prd-c.qs-click:hover{background:rgba(0,0,0,.035)}
.prd-c-on{background:var(--osg-bg) !important; box-shadow:inset 0 0 0 1.5px var(--osg-bd); font-weight:800}
.prd-c-on::after{content:"✓"; position:absolute; top:3px; right:6px; font-size:10px; color:var(--osg-tx); font-weight:900}
.prd-bar-c{display:flex; align-items:center; justify-content:center; padding:8px 10px}
.prd-payline{margin:0; width:100%; height:15px}
#pageProduction .prd-p1 .osg-b,#pageProduction .prd-p2 .osg-b{align-items:stretch; padding:0 6px 6px}

.prd-splitter{flex:0 0 8px; align-self:stretch; border-radius:6px; cursor:col-resize;
  background:linear-gradient(180deg,#e6dcf7,#d6c8ef); border:1px solid #c9b8e6; position:relative}
.prd-splitter:hover{background:linear-gradient(180deg,#c9b8e6,#a98fd8); border-color:#8f6fd0}
.prd-splitter::after{content:"⋮⋮"; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%) rotate(90deg);
  font-size:10px; color:#6b46c1; letter-spacing:-1px; white-space:nowrap}
.prd-dragging{user-select:none; cursor:col-resize}
@media(max-width:1180px){ .prd-splitter{display:none} }
#pageProduction .prd-p1 .osg-b,#pageProduction .prd-p2 .osg-b{grid-auto-rows:minmax(0,1fr); align-content:stretch}
#pageProduction .prd-toprow .stats-row{flex:0 1 calc(56% - 8px); min-width:420px}
#pageProduction .prd-toolpanel{flex:1 1 380px; min-width:300px}
#pageProduction .prd-toolpanel-b{padding:8px 10px 9px; gap:6px}
#pageProduction .prd-toolpanel-b .qt-actionsbar{gap:5px}
#pageProduction .prd-toolpanel-b .qt-lockbtn,#pageProduction .prd-toolpanel-b .qt-print{padding:4px 8px; font-size:11.5px}
#pageProduction .prd-toolpanel-b .qt-field.inline .qt-input{padding:5px 7px; font-size:12px}
#pageProduction .prd-toolpanel-b #prodAdvBar .qt-input{max-width:130px}
.prd-c{padding:7px 6px 8px}

/* ══════════ iu：报价顶部 —— 总览 + 状态行 + 操作行 合成一块 ══════════ */
#pageRecords .rec-toprow2{align-items:stretch}
#pageRecords .rec-groups .rec-p1{flex:1 1 100%}
.rec-g3{grid-template-columns:repeat(3,minmax(0,1fr)) !important}
.rec-g3 .prd-c{border-top:none; border-left:1px dashed var(--osg-bd)}
.rec-g3 .prd-c:first-child{border-left:none}
.rec-rowbox{padding:2px 12px 11px; display:flex; flex-direction:column; gap:3px}
.rec-row-lab{font-size:10.5px; color:#9aa5b0; letter-spacing:.5px; margin-top:5px}
.rec-row-host{display:flex; flex-wrap:wrap; gap:6px}
#pageRecords #statusTabs{margin:0 !important; gap:6px; border-bottom:none}
#pageRecords #recActionBar{margin:0 !important; background:transparent; border:none; padding:0; display:flex; flex-wrap:wrap; gap:6px; align-items:center; box-shadow:none}
#pageRecords #recActionBar .qt-sub{font-size:11px; color:#8a7742}
.rec-who-line{margin-top:7px; padding-top:7px; border-top:1px dashed var(--osg-bd); display:flex; flex-wrap:wrap; gap:6px; align-items:center; font-size:11px; color:#9aa5b0}
.rec-who-chip{cursor:pointer; font-size:11.5px; padding:2px 9px; border-radius:20px; background:#eef4fb; color:#22598f; border:1px solid #cfe0f2; white-space:nowrap}
.rec-who-chip:hover{background:#dcebfa; border-color:#8fb6e4}
.rec-who-chip b{color:#1e7e34}
#pageRecords .rec-toppanel{flex:1 1 430px; min-width:320px}
#pageRecords .rec-toprow2 .stats-row{flex:1 1 640px; min-width:400px}
@media(max-width:1180px){ #pageRecords .rec-toprow2 .stats-row,#pageRecords .rec-toppanel{flex:1 1 100%} }

/* ══════════ iv：报价顶部 —— 只剩两行按钮，整齐排列 ══════════ */
#pageRecords .rec-rowbox{padding:10px 12px 12px; gap:8px}
.rec-line{display:grid; grid-template-columns:38px 1fr; align-items:start; gap:10px}
.rec-line-lab{font-size:11px; font-weight:700; color:#9a8f7a; letter-spacing:1px; padding-top:6px; white-space:nowrap}
#pageRecords .rec-row-host{display:flex; flex-wrap:wrap; gap:6px; align-items:center; min-width:0}
#pageRecords #statusTabs{margin:0 !important; gap:6px; border-bottom:none; display:flex; flex-wrap:wrap}
#pageRecords #statusTabs .status-tab{padding:5px 12px; font-size:12.5px}
#pageRecords #recActionBar{margin:0 !important; background:transparent; border:none; padding:0; display:flex; flex-wrap:wrap; gap:6px; align-items:center; box-shadow:none}
#pageRecords #recActionBar .qt-sub{font-size:11px; color:#8a7742; margin-right:2px; white-space:nowrap}
#pageRecords #recActionBar .rec-act{padding:5px 11px; font-size:12.5px}
#pageRecords .rec-line + .rec-line{padding-top:8px; border-top:1px dashed var(--osg-bd)}
#pageRecords .rec-toprow2{align-items:flex-start}
#pageRecords .rec-toprow2 .stats-row,#pageRecords .rec-toppanel{align-self:flex-start}
#pageRecords .prd-splitter{align-self:stretch; min-height:120px}
#pageRecords #statusTabs .status-tab{padding:5px 10px; font-size:12px}
#pageRecords #statusTabs .status-tab-n{margin-left:5px}

/* ══════════ iw：爆单海报（模板可编辑，html2canvas 渲染成图发企微） ══════════ */
#posterStage{position:fixed; left:-99999px; top:0; width:0; height:0; overflow:hidden}
.ps-wrap{width:640px; padding:0; background:transparent; font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
.ps-card{width:640px; box-sizing:border-box; padding:34px 38px 26px;
  background:linear-gradient(155deg,#1f2a44 0%,#2f3f66 45%,#4a3a74 100%); color:#fff; border-radius:22px;
  box-shadow:0 18px 50px rgba(20,30,50,.35); position:relative; overflow:hidden}
.ps-card::after{content:""; position:absolute; right:-70px; top:-70px; width:230px; height:230px; border-radius:50%;
  background:radial-gradient(circle,rgba(255,214,120,.35),transparent 70%)}
.ps-top{display:flex; align-items:center; gap:12px; margin-bottom:14px}
.ps-emo{font-size:38px; line-height:1}
.ps-tt{font-size:28px; font-weight:900; letter-spacing:6px; color:#ffd978}
.ps-amt{font-size:56px; font-weight:900; line-height:1.1; color:#ffd978; text-shadow:0 3px 14px rgba(0,0,0,.3); margin:6px 0 2px}
.ps-cust{font-size:22px; font-weight:800; margin:10px 0 18px; color:#fff; word-break:break-word}
.ps-kv{display:flex; justify-content:space-between; align-items:baseline; gap:14px;
  padding:8px 0; border-bottom:1px dashed rgba(255,255,255,.22); font-size:15px}
.ps-kv span{color:rgba(255,255,255,.66); white-space:nowrap}
.ps-kv b{font-weight:700; text-align:right; word-break:break-word}
.ps-foot{margin-top:16px; font-size:12.5px; color:rgba(255,255,255,.55); letter-spacing:1px; text-align:center}
/* ══ kq：海报设计器（左边调，右边就是群里将来收到的那张图）══ */
/* ══ la：公司制度（CS BRAIN 顶部独立一栏）══ */
.pol-box{margin:0 0 14px}
.pol-hd{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 8px; font-size:14px}
.pol-badge{background:#e23b3b; color:#fff; border-radius:999px; padding:2px 10px; font-size:11.5px; font-weight:700}
.pol-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:10px}
.pol-card{border:1px solid var(--line); border-radius:12px; padding:11px 13px; background:#fff; cursor:pointer;
  transition:box-shadow .15s, border-color .15s}
.pol-card:hover{border-color:#9db4d8; box-shadow:0 4px 14px rgba(20,26,38,.10)}
.pol-card.is-unread{border-color:#f0b4b4; background:#fffafa}
.pol-card-t{font-size:13.5px; font-weight:700; line-height:1.45; margin-bottom:4px}
.pol-card-m{font-size:11.5px; color:#7a8590; line-height:1.6}
.pol-card-f{display:flex; align-items:center; gap:8px; margin-top:7px; font-size:11.5px}
.pol-ok{color:#2b6b45; font-weight:600}
.pol-no{color:#c0392b; font-weight:700}
.pol-readers{padding:10px 12px; border-radius:10px; background:#f4f6f9; border:1px solid var(--line); font-size:12.5px}
.pol-unread{margin-top:4px; color:#a8600f; line-height:1.7}
/* ══ ky：财务 —— 年度营收/支出 + 工资表 ══ */
.fy-top{margin:0 0 12px}
.fy-sec{margin:0 0 18px}
.fy-hd{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 8px; font-size:13px}
.fy-hd b{font-size:14px}
.fy-hd .qt-sub{flex:1; min-width:220px}
table.fy-tbl{min-width:1900px}
.qt-table.rec.fy-tbl td, .qt-table.rec.fy-tbl th{white-space:nowrap; font-size:12px; padding:5px 8px}
.qt-table.rec.fy-tbl tr.pf-grp th{background:#8d7b63; color:#fff}
.fy-tbl .fy-q{background:#f1ece4; font-weight:600}
.fy-tbl .fy-tot{background:#fffaf0; font-weight:700}
.fy-tbl .fy-auto{background:#f4f6f9; color:#5c6673}
.fy-tbl .fy-cell{cursor:cell}
.fy-tbl .fy-cell:hover{outline:2px solid #2f6fed; outline-offset:-2px}
.fy-tbl .fy-st-paid{background:#fff3b0}       /* 已收/已付 */
.fy-tbl .fy-st-part{background:#ffe0b2}       /* 部分付款 */
.fy-tbl .fy-st-unpaid{background:#e3f2e6}     /* 未收/未付 */
.fy-tbl tr.fy-sum td{background:#8bc34a; color:#1b3b0a; font-weight:700}
.fy-tbl tr.fy-sum td.pf-sticky{background:#8bc34a}
/* ══ la：供应商月结对账单 ══ */
.fy-tagm{display:inline-block; padding:0 6px; border-radius:8px; background:#e8f0ff; color:#2f5bbd; font-size:11px; font-weight:600}
/* 名字那一列要放得下「对照系统 X · 差 Y」这行小字，不然被 nowrap 切掉，
   差额是这块最该被看见的数，切掉就白做了 */
.qt-table.rec.fy-tbl td.pf-sticky{min-width:180px; white-space:normal}
.fy-diff{font-size:11px; color:#7a8290; white-space:normal; line-height:1.5}
.fy-diff.on{color:#c0392b}
.fy-tbl .fy-stmt{cursor:pointer}
.fy-clip{font-size:11px; opacity:.8}
.fy-ref{opacity:.86}
.fy-ref .fy-hd b{color:#6b7480}
.fy-ref table.fy-tbl td{background:#f7f8fa; color:#5c6673}
.fc-up{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:12px 0 8px}
.fc-files{display:flex; flex-direction:column; gap:6px}
.fc-f{display:flex; align-items:center; gap:10px; padding:6px 10px; border:1px solid var(--line); border-radius:9px; background:#fafbfd}
.fc-f a{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.fc-parse{margin-top:10px; padding:10px 12px; border:1px solid #cfe0ff; border-radius:10px; background:#f4f8ff}
.fc-p{font-size:13px; line-height:1.9}
.fc-cmp{margin-top:2px}
.fc-ok{color:#1e7e34}
.fc-bad{color:#c0392b; font-weight:600}
.fc-cols{margin-top:8px; display:flex; align-items:center; gap:10px; flex-wrap:wrap}
/* 工资表 */
.py-cfg,.py-prof{margin:0 0 12px; padding:12px 14px; border:1px solid var(--line); border-radius:12px; background:#fafbfd}
.py-prof-hd{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:8px; font-size:13px; font-weight:600}
.py-prof-hd span{font-weight:400; font-size:12px; color:#5c6673; flex:1; min-width:200px}
.py-cfg-b{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:14px}
.py-cfg-g{padding:10px 12px; border:1px solid var(--line); border-radius:10px; background:#fff}
.py-cfg-g b{display:block; margin-bottom:2px; font-size:12.5px}
.py-cfg-g .qt-sub{display:block; margin-bottom:6px}
table.py-tbl{min-width:2400px}
.py-tbl td.py-edited{background:#fff6e8; box-shadow:inset 0 0 0 1px #f0d3a4}
.py-tbl td.py-edited::after{content:"改"; font-size:9px; color:#a8600f; margin-left:3px; vertical-align:top}
.py-tbl tr.py-locked td{opacity:.72}
.py-tbl .py-total{background:#eef8f1}
/* ku：绩效表的口径条 / 兜底告警 / 只读格 */
.ord-datebasis{min-width:190px}
.ord-datebasis .qt-input{font-size:12.5px}
/* ══ kw：绩效表排版 ══
   核心是给表一个够用的最小宽度，让它【横向滚动】而不是被压扁——
   之前 20 多列硬塞进屏幕，浏览器把每列压到十几像素，表头竖排、数字折成竖条。 */
.pf-viewbar{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 10px}
.pf-tabs{display:flex; gap:6px}
.pf-vt{border:1px solid var(--line); background:#fff; color:#3a4450; border-radius:9px;
  padding:7px 14px; font-size:12.5px; cursor:pointer; white-space:nowrap}
.pf-vt:hover{border-color:#9db4d8}
.pf-vt.on{background:#1f2937; border-color:#1f2937; color:#fff; font-weight:600}
.pf-pickbar{display:flex; gap:14px; align-items:flex-end; margin:0 0 10px; flex-wrap:wrap}

.pf-wrap{overflow:auto; max-height:none}
table.perf-tbl{min-width:2050px; table-layout:auto}
/* ⚠ 特异性要压过 .qt-table.rec td{white-space:normal}（style.css 上面那条），
   否则「100.00」会被拆成竖着的一串字符 —— 这正是之前那张截图的样子 */
.qt-table.rec.perf-tbl th, .qt-table.rec.perf-tbl td{white-space:nowrap; overflow-wrap:normal; word-break:normal; vertical-align:middle}

.qt-table.rec.perf-tbl th{font-size:12.5px; line-height:1.4; padding:8px 10px; text-align:left}
.qt-table.rec.perf-tbl td{font-size:12.5px; padding:7px 10px}
.qt-table.rec.perf-tbl td .qt-sub{font-size:10.5px; line-height:1.4; margin-top:2px; white-space:nowrap}
.qt-table.rec.perf-tbl .num{text-align:right}
/* 分组表头 */
table.perf-tbl tr.pf-grp th{text-align:center; font-size:11.5px; letter-spacing:1px; padding:5px 8px;
  background:#111827; color:#f2d08a; border-right:1px solid rgba(255,255,255,.14)}
table.perf-tbl tr.pf-grp th.pf-grp-blank{background:#111827}
/* 首列冻结：滚到最右边也知道这行是谁/哪个月 */
table.perf-tbl th.pf-sticky, table.perf-tbl td.pf-sticky{position:sticky; left:0; z-index:3; min-width:96px}
table.perf-tbl td.pf-sticky{background:#fff; box-shadow:1px 0 0 var(--line)}
table.perf-tbl tbody tr:nth-child(even) td.pf-sticky{background:#fafbfd}
table.perf-tbl tr.pf-empty-row td{opacity:.5}
table.perf-tbl tr.pf-empty-row td.pf-sticky{opacity:1}
.perf-in{font-size:12.5px; padding:4px 7px}
.pf-basis{margin:0 0 8px; padding:8px 12px; border-radius:9px; font-size:12.5px; line-height:1.7;
  background:#eef3fb; border:1px solid #cfe0f5; color:#2c568f}
.pf-warn{margin:0 0 10px; padding:9px 12px; border-radius:9px; font-size:12.5px; line-height:1.75;
  background:#fff6e8; border:1px solid #f0d3a4; color:#8a5a12}
.pf-ro{display:inline-block; min-width:60px; color:#3a4450; font-size:12.5px}
.ps-health{margin:0 0 10px; padding:10px 12px; border-radius:10px; font-size:12.5px; line-height:1.75;
  background:#fff6e8; border:1px solid #f0d3a4; color:#8a5a12}
.ps-health.ok{background:#eef8f1; border-color:#bfe3cb; color:#2b6b45}
.ps-health code{background:#fff; border:1px solid #e8d6b6; border-radius:6px; padding:1px 6px; font-size:11.5px; word-break:break-all}
.ps-design{display:grid; grid-template-columns:minmax(0,1fr) 320px; gap:16px; align-items:start; margin-top:6px}
@media (max-width:1080px){ .ps-design{grid-template-columns:1fr} }
.ps-dl{min-width:0}
.ps-dr{position:sticky; top:8px}
.ps-themes{display:flex; gap:8px; flex-wrap:wrap; margin-top:4px}
.ps-th{position:relative; width:104px; height:60px; border-radius:10px; border:2px solid transparent; cursor:pointer;
  color:#fff; font-size:12px; display:flex; align-items:flex-end; padding:6px 8px; box-shadow:0 2px 8px rgba(20,26,38,.14)}
.ps-th.on{border-color:#2f6fed; box-shadow:0 0 0 3px rgba(47,111,237,.18)}
.ps-th i{position:absolute; top:8px; right:8px; width:14px; height:14px; border-radius:50%; box-shadow:0 0 0 2px rgba(255,255,255,.35)}
.ps-th span{font-weight:600}
.ps-knob{display:flex; align-items:center; gap:10px; font-size:12.5px; color:#5c6673; margin:8px 0}
.ps-knob input[type=range]{flex:1; min-width:0}
.ps-knob b{min-width:44px; text-align:right; color:#2b3440}
.ps-checks{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:6px 0}
.ps-bgthumb{display:flex; align-items:center; gap:10px; margin:4px 0 6px; font-size:12px; color:#5c6673}
.ps-bgthumb img{width:76px; height:48px; object-fit:cover; border-radius:8px; border:1px solid var(--line)}
.ps-t{font-size:12.5px}
.ps-prev-hd{font-size:12px; color:#8a94a0; margin-bottom:6px; line-height:1.5}
.ps-prev-wrap{position:relative; border:1px solid var(--line); border-radius:12px; background:#f4f6f9; padding:10px;
  max-height:640px; overflow:auto}
.ps-prev-wrap img{width:100%; display:block; border-radius:8px; box-shadow:0 6px 20px rgba(20,26,38,.18)}
.ps-prev-msg{position:absolute; inset:10px; display:flex; align-items:center; justify-content:center; text-align:center;
  background:rgba(244,246,249,.92); border-radius:8px; font-size:12.5px; color:#5c6673; padding:16px; line-height:1.7}
.ps-preview{margin-top:12px; padding:14px; background:#f4f6f9; border:1px solid var(--line); border-radius:12px; overflow:auto}
.ps-preview .ps-wrap{transform:scale(.72); transform-origin:top left; width:640px; height:auto}
.ps-preview{max-height:420px}
#notifyModal code{background:#eef2f6; padding:1px 5px; border-radius:4px; font-size:11px; color:#3a5a7a}
/* jj 本单无运费（EXW/客户自理）确认勾：就放在两个运费输入框下面 */
.qt-frnone{display:inline-flex; align-items:center; gap:6px; margin:2px 0 4px; font-size:12.5px; color:#5a6470; cursor:pointer;
  background:#f7f9fb; border:1px solid var(--line); border-radius:8px; padding:5px 10px}
.qt-frnone input{margin:0; cursor:pointer}
.qt-frnone:hover{background:#eef4ff; border-color:#bcd2f5; color:#2f6fed}

/* ══════════ jk：销售战报海报（竖版）══════════
   .ps-wrap 是渲染舞台（640宽），.ps2 是海报本体。文案在模板里改，样式在这里改。 */
.ps2{width:640px; box-sizing:border-box; padding:26px 30px 34px; position:relative; overflow:hidden;
  background:linear-gradient(160deg,#4b1fa8 0%,#7b1fd0 26%,#c01ea8 55%,#8e1fc4 78%,#4a1aa0 100%);
  font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif; color:#fff}
/* 背景光斑：让纯色渐变不那么平 */
.ps2::before{content:""; position:absolute; left:-120px; top:60px; width:340px; height:340px; border-radius:50%;
  background:radial-gradient(circle,rgba(255,90,220,.55),transparent 68%)}
.ps2::after{content:""; position:absolute; right:-110px; top:-60px; width:320px; height:320px; border-radius:50%;
  background:radial-gradient(circle,rgba(90,180,255,.5),transparent 68%)}
.ps2 > *{position:relative; z-index:1}
.ps2-co{text-align:center; font-size:19px; font-weight:800; letter-spacing:2px; color:#fff; text-shadow:0 2px 8px rgba(0,0,0,.35)}
/* 圆形徽章（放 logo；换成业务照片也行：把模板里 img 的 src 换掉即可） */
.ps2-medal{width:150px; height:150px; margin:20px auto 6px; border-radius:50%; overflow:hidden;
  background:#fff; border:5px solid #f3d07a; padding:14px; box-sizing:border-box;
  box-shadow:0 0 0 4px rgba(255,255,255,.18), 0 10px 26px rgba(0,0,0,.35); display:flex; align-items:center; justify-content:center}
.ps2-medal img{max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain}
/* 战报大标题：金色渐变字 */
.ps2-title{text-align:center; font-size:76px; font-weight:900; letter-spacing:8px; line-height:1.15; margin:12px 0 2px;
  background:linear-gradient(180deg,#fff3c4 6%,#ffd75e 38%,#f0a81e 68%,#c97a08 100%);
  -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; color:#ffd75e;
  filter:drop-shadow(0 4px 10px rgba(0,0,0,.4))}
.ps2-en{text-align:center; font-size:12.5px; letter-spacing:5px; color:rgba(255,255,255,.82); margin-bottom:22px}
/* 白卡片：所有数据都在这里 */
.ps2-card{background:#fff; border-radius:16px; padding:26px 30px 28px; box-shadow:0 14px 34px rgba(0,0,0,.28); color:#2b3440}
.ps2-slogan{text-align:center; font-size:20px; font-weight:800; color:#e0342b; letter-spacing:1px}
.ps2-amt{text-align:center; font-size:62px; font-weight:900; color:#f26a1b; line-height:1.15; margin:12px 0 0;
  text-shadow:0 2px 0 rgba(242,106,27,.18)}
.ps2-amtl{text-align:center; font-size:17px; font-weight:800; color:#2b3440; margin-top:2px}
.ps2-hr{height:1px; background:#e6e9ee; margin:20px 0 16px}
.ps2-line{font-size:17px; line-height:2.05; color:#3a4450; word-break:break-word}
.ps2-lead{font-weight:700; color:#2b3440; margin-bottom:2px}

/* ══════════════════════════════════════════════════════════════════════
   jn：CS OMNI —— 每个人自己养的 AI 军师
   Leocat 的暗黑黑金只落在 Omni 自己的地盘（英雄区/悬浮球），
   列表卡片保持浅色 —— 系统里大量是数据表格，深色底看久了伤眼。
   ══════════════════════════════════════════════════════════════════════ */
/* jw：黑框 + 调教面板并排一行。面板 hidden 的时候黑框自己撑满 */
.omni-top{display:flex; align-items:flex-start; gap:12px; margin-bottom:12px}
.omni-top > .omni-hero{flex:1 1 460px; min-width:340px; margin-bottom:0}
.omni-top > .omni-setup{flex:1 1 420px; min-width:320px; margin-top:0}
@media(max-width:900px){ .omni-top{flex-wrap:wrap} .omni-top > .omni-hero, .omni-top > .omni-setup{flex:1 1 100%} }
.omni-hero{display:flex; align-items:center; gap:16px; flex-wrap:wrap; padding:20px 22px; border-radius:14px; margin-bottom:12px;
  background:linear-gradient(120deg,#12131a 0%,#1c1a2e 42%,#2a1f3d 72%,#151622 100%);
  border:1px solid #3a3550; box-shadow:0 8px 26px rgba(0,0,0,.22); position:relative; overflow:hidden}
.omni-hero::after{content:""; position:absolute; right:-60px; top:-70px; width:220px; height:220px; border-radius:50%;
  background:radial-gradient(circle,rgba(226,178,74,.20),transparent 68%)}
.omni-hero>*{position:relative; z-index:1}
.omni-avatar{width:62px; height:62px; flex:0 0 62px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:32px; background:radial-gradient(circle at 34% 30%,#3a3350,#191826); border:2px solid #e2b24a;
  box-shadow:0 0 0 4px rgba(226,178,74,.13), 0 0 18px rgba(226,178,74,.28)}
.omni-hero-tx{flex:1; min-width:0}
.omni-hero-t{font-size:19px; font-weight:800; color:#f0e2bd; letter-spacing:.5px}
.omni-tag{font-size:11.5px; font-weight:600; color:#0f1017; background:linear-gradient(180deg,#f0d493,#dca93c);
  border-radius:20px; padding:2px 9px; margin-left:8px; vertical-align:2px}
.omni-hero-s{font-size:13.5px; color:#b9b2cc; margin-top:5px; line-height:1.6}
.omni-hero-acts{display:flex; flex-direction:column; gap:6px; flex:0 0 auto}
.omni-hero-acts .qt-mini{background:rgba(255,255,255,.07); border-color:#4a4363; color:#e8dfc8; white-space:nowrap}
.omni-hero-acts .qt-mini:hover{background:rgba(226,178,74,.18); border-color:#e2b24a; color:#f5e6c0}
/* 隐私声明：这功能的信任地基，必须显眼 */
.omni-privacy{font-size:12.5px; color:#5a6470; background:#f4f7fb; border:1px solid #dde5ee;
  border-left:3px solid #2f6fed; border-radius:8px; padding:8px 12px; margin-bottom:14px; line-height:1.65}
/* jq：三个数字搬进黑框里，做成能点的高亮按钮。点哪个下面出哪一堆卡片 */
.omni-hero-stats{flex:1 0 100%; display:flex; gap:10px; flex-wrap:wrap}
.omni-hs{flex:1; min-width:120px; cursor:pointer; text-align:left; padding:11px 15px; border-radius:11px;
  background:rgba(255,255,255,.06); border:1px solid #4a4363; color:#e8dfc8;
  display:flex; align-items:baseline; gap:9px; transition:all .14s}
.omni-hs b{font-size:25px; font-weight:800; line-height:1}
.omni-hs span{font-size:12.5px; color:#b9b2cc}
.omni-hs:hover{background:rgba(255,255,255,.13); transform:translateY(-1px)}
.omni-hs-hot b{color:#ff8a7a}
.omni-hs-warm b{color:#f0c469}
.omni-hs-all b{color:#e9e3f3}
.omni-hs-zero{opacity:.55}
.omni-hs.on{border-color:#e2b24a; background:rgba(226,178,74,.20); box-shadow:0 0 0 3px rgba(226,178,74,.16)}
.omni-hs.on span{color:#f5e6c0}
.omni-hs-hot.on{border-color:#e0705f; background:rgba(224,112,95,.22); box-shadow:0 0 0 3px rgba(224,112,95,.16)}
/* 还没点数字之前，下面这块占位（不再默认铺一长条列表） */
.omni-pick{text-align:center; padding:34px 16px; background:#fff; border:1px dashed var(--line); border-radius:12px}
.omni-pick-t{font-size:15px; font-weight:700; color:#2b3440; margin-bottom:4px}
.omni-list-hd{display:flex; align-items:center; gap:4px; font-size:14px; font-weight:700; color:#2b3440; padding:0 2px 2px}
.omni-list-x{margin-left:auto}
/* js：版块可以拖右下角改大小。.omni-hero 本来就是 overflow:hidden（挡住那圈光晕），
   resize 只要 overflow 不是 visible 就能用，所以这里不去改它的 overflow —— 改成 auto 光晕会撑出滚动条 */
/* 高度用原生右下角小三角；宽度用右边那根竖条（见 app.js omniAddWidthGrip 的注释） */
.omni-pane{resize:vertical; min-width:300px; max-width:100%; position:relative}
.omni-rz{position:absolute; top:0; right:0; width:12px; height:100%; cursor:col-resize; z-index:5;
  border-radius:0 8px 8px 0; touch-action:none; transition:background .12s}
.omni-rz::after{content:""; position:absolute; top:50%; right:4px; width:3px; height:34px; margin-top:-17px;
  border-radius:2px; background:rgba(140,150,165,.45); transition:background .12s}
.omni-rz:hover{background:rgba(226,178,74,.16)}
.omni-rz:hover::after{background:#e2b24a}
.omni-hero .omni-rz::after{background:rgba(226,178,74,.5)}
#omniList.omni-pane{overflow:auto; min-height:120px}
#omniSetup.omni-pane{overflow:auto; min-height:180px}
/* js：卡片上的动作按钮 */
/* jw：卡片高矮不一时，动作条一律贴底对齐，一排卡看起来才整齐 */
.omni-card-acts{display:flex; flex-wrap:wrap; gap:6px; margin-top:auto; padding-top:9px}
/* 表头 / 占位 / 空状态 都要横跨整行，不能被当成一张卡片挤在格子里 */
.omni-list > .omni-list-hd, .omni-list > .omni-pick, .omni-list > .omni-clear, .omni-list > .qt-empty{grid-column:1 / -1}
.omni-ca{font-size:12px; padding:4px 10px; border-radius:7px; cursor:pointer; white-space:nowrap;
  background:#f7f9fb; border:1px solid var(--line); color:#4a5563; transition:all .12s}
.omni-ca:hover{background:#eef4ff; border-color:#bcd2f5; color:#2f6fed}
.omni-ca:disabled{opacity:.5; cursor:default}
.omni-ca-done{background:#f2faf4; border-color:#cbe8d4; color:#2f7d46; font-weight:600}
.omni-ca-done:hover{background:#e2f5e9; border-color:#8fd0a8; color:#1f6b37}
.omni-ca-go{border-color:#e2cfa6; color:#8a6a2f; background:#fdf9f0}
.omni-ca-go:hover{background:#f8eed8; border-color:#dcb45f; color:#6d5017}
.omni-card-note{margin-top:8px; background:#fbfcfd; border:1px solid var(--line); border-radius:8px; padding:8px}
.omni-note-tx{width:100%; font-size:13px; resize:vertical}
.omni-note-row{display:flex; align-items:center; gap:7px; margin-top:6px}
.omni-note-row .qt-sub{flex:1; min-width:0}
.omni-note-ok{padding:5px 14px; font-size:12.5px}
/* 事项卡 —— jw：改成和商机看板一样的卡片砖块（一行铺几张，按宽度自动排） */
.omni-list{display:grid; grid-template-columns:repeat(auto-fill, minmax(288px, 1fr)); gap:10px; align-content:start}
.omni-card{display:flex; flex-direction:column; background:#fff; border:1px solid #e4e9ef;
  border-left:4px solid #cfd6de; border-radius:8px; padding:10px 11px;
  box-shadow:0 1px 2px rgba(20,30,40,.04); transition:box-shadow .12s,transform .12s,border-color .12s}
.omni-card:hover{border-color:#c9a24b; box-shadow:0 4px 14px rgba(0,0,0,.08); transform:translateY(-1px)}
.omni-card.omni-sev3{border-left-color:#c0392b; background:#fffaf9}
.omni-card.omni-sev2{border-left-color:#d97706; background:#fffdf7}
.omni-card-ico{font-size:17px; flex:0 0 auto; line-height:1.2}
.omni-card-main{min-width:0}
.omni-card-t{font-size:13.5px; font-weight:700; color:#1668dc; display:flex; align-items:center; gap:7px; flex-wrap:wrap; line-height:1.35}
.omni-sev3 .omni-card-t{color:#c0392b}
.omni-no{font-size:11px; font-weight:600; color:#8a94a0; background:#f2f5f8; border-radius:4px; padding:1px 6px}
.omni-card-s{font-size:12.5px; color:#5a6470; margin-top:4px; line-height:1.55; word-break:break-word}
.omni-go{white-space:nowrap}
.omni-sev3 .omni-go{border-color:#e8b4ad; color:#c0392b}
/* 手上干净时 */
.omni-clear{text-align:center; padding:38px 16px; background:#fff; border:1px dashed var(--line); border-radius:12px}
.omni-clear-ico{font-size:44px; opacity:.5}
.omni-clear-t{font-size:16px; font-weight:700; color:#2b3440; margin:8px 0 4px}
/* 调教面板 */
.omni-setup{margin-top:16px; background:#fff; border:1px solid var(--line); border-radius:12px; padding:16px 18px}
.omni-faces{display:flex; flex-wrap:wrap; gap:6px}
.omni-face{width:38px; height:38px; font-size:20px; line-height:1; cursor:pointer; background:#f7f9fb;
  border:1px solid var(--line); border-radius:9px; transition:all .12s}
.omni-face:hover{background:#eef4ff; border-color:#bcd2f5}
.omni-face.on{background:#151622; border-color:#e2b24a; box-shadow:0 0 0 3px rgba(226,178,74,.2)}
/* jp：自己上传的头像 —— 圆头像位置裁成圆，选择器方格里裁成圆角方 */
.omni-face-img{display:block; width:100%; height:100%; object-fit:cover; border-radius:50%}
#omniDockFace{display:flex; align-items:center; justify-content:center; width:100%; height:100%; border-radius:50%; overflow:hidden}
.omni-clear-ico .omni-face-img{width:56px; height:56px; margin:0 auto}
.omni-face-up{display:flex; align-items:center; justify-content:center; overflow:hidden; padding:0;
  color:#8a94a0; font-size:19px; font-weight:700}
.omni-face-up .omni-face-img{border-radius:8px}
.omni-face-tip{font-size:11.5px; color:#8a94a0; margin-top:6px; line-height:1.5}

/* ── 悬浮球：全站常驻，可拖动 ── */
.omni-dock{position:fixed; right:22px; bottom:88px; z-index:900}
.omni-dock-ball{position:relative; width:54px; height:54px; border-radius:50%; cursor:grab;
  display:flex; align-items:center; justify-content:center; font-size:27px; user-select:none; touch-action:none;
  background:radial-gradient(circle at 34% 28%,#3a3350,#141522); border:2px solid #e2b24a;
  box-shadow:0 0 0 4px rgba(226,178,74,.13), 0 6px 20px rgba(0,0,0,.3); transition:transform .14s}
.omni-dock-ball:hover{transform:scale(1.07)}
.omni-dock-ball:active{cursor:grabbing}
.omni-dock-badge{position:absolute; top:-4px; right:-4px; min-width:20px; height:20px; padding:0 5px; border-radius:11px;
  background:#8a94a0; color:#fff; font-size:11.5px; font-weight:800; line-height:20px; text-align:center; border:2px solid #fff}
.omni-dock-badge.omni-badge-hot{background:#c0392b}
.omni-dock-pop{position:absolute; right:0; bottom:64px; width:322px; max-width:calc(100vw - 40px);
  background:#fff; border:1px solid var(--line); border-radius:12px; box-shadow:0 12px 34px rgba(0,0,0,.2); overflow:hidden}
.omni-dock-head{display:flex; align-items:center; gap:8px; padding:10px 12px; background:#151622; color:#f0e2bd}
.omni-dock-head b{font-size:14px}
.omni-dock-head .qt-sub{flex:1; color:#a89f8a; font-size:11.5px}
.omni-dock-x{background:none; border:none; color:#a89f8a; font-size:19px; cursor:pointer; line-height:1; padding:0 2px}
.omni-dock-x:hover{color:#fff}
.omni-dock-body{max-height:300px; overflow:auto; padding:6px}
.omni-dk{display:flex; gap:9px; align-items:flex-start; padding:8px 9px; border-radius:8px; cursor:pointer;
  border-left:3px solid #cfd6de; margin-bottom:4px}
.omni-dk:hover{background:#f4f7fb}
.omni-dk.omni-sev3{border-left-color:#c0392b}
.omni-dk.omni-sev2{border-left-color:#d97706}
.omni-dk-ico{font-size:15px; flex:0 0 auto}
.omni-dk-tx{min-width:0; font-size:12.5px; line-height:1.5}
.omni-dk-tx b{display:block; color:#2b3440; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.omni-dk-tx i{display:block; color:#7b8794; font-style:normal; font-size:11.5px; margin-top:1px}
.omni-dock-foot{padding:8px 10px; border-top:1px solid var(--line); text-align:right; background:#fbfcfd}
@media(max-width:560px){ .omni-dock{right:12px; bottom:74px} .omni-hero{flex-wrap:wrap} .omni-hero-acts{flex-direction:row; width:100%} }

/* ══════════ jo：Omni 助理对话框 —— 随叫随到，给能直接复制的成品 ══════════ */
.omni-ask-mask{position:fixed; inset:0; z-index:1200; background:rgba(16,17,24,.5); backdrop-filter:blur(2px);
  display:flex; align-items:center; justify-content:center; padding:20px}
.omni-ask{width:min(720px,100%); max-height:88vh; overflow:auto; background:#fff; border-radius:14px;
  box-shadow:0 22px 60px rgba(0,0,0,.32)}
.omni-ask-head{display:flex; align-items:center; gap:12px; padding:16px 18px;
  background:linear-gradient(120deg,#12131a,#221f36 60%,#151622); color:#f0e2bd; border-radius:14px 14px 0 0}
.omni-ask-face{width:44px; height:44px; flex:0 0 44px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  font-size:23px; background:radial-gradient(circle at 34% 30%,#3a3350,#191826); border:2px solid #e2b24a;
  box-shadow:0 0 0 3px rgba(226,178,74,.14)}
.omni-ask-hd{flex:1; min-width:0}
.omni-ask-hd b{font-size:16px; letter-spacing:.5px}
.omni-ask-what{font-size:12.5px; color:#b9b2cc; margin-top:3px; line-height:1.55}
.omni-ask-x{background:none; border:none; color:#a89f8a; font-size:24px; cursor:pointer; line-height:1; padding:0 4px}
.omni-ask-x:hover{color:#fff}
/* jr：盘一整批时的范围条 */
.omni-ask-scope{display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:14px 18px 0}
.omni-sc-lab{font-size:12.5px; font-weight:700; color:#8a6a2f; background:#fdf6e6; border:1px solid #ecdcb4;
  border-radius:6px; padding:4px 9px; white-space:nowrap}
.omni-sc-fix{font-size:13px; color:#5a6470; background:#f4f7fb; border:1px solid #dde5ee; border-radius:6px; padding:5px 10px}
.omni-sc-sel{width:auto; min-width:120px; padding:5px 9px; font-size:13px}
/* jx：品类沉淀弹窗里的提醒条 + 结果区 */
.kb-omni-note{margin:12px 18px 0; font-size:12.5px; line-height:1.7; color:#5a6470;
  background:#fdf6e6; border:1px solid #ecdcb4; border-left:3px solid #dca93c; border-radius:8px; padding:9px 12px}
.kb-omni-msg{font-size:13.5px; line-height:1.75; color:#2b3440; padding:2px 2px 4px}
/* jt：赢单价格带表 —— 刻意做得像一张报表，跟 AI 那段话在视觉上分开 */
.omni-ask-band{margin:10px 0 12px; background:#fbfcfe; border:1px solid #dbe4ef; border-left:3px solid #2f6fed; border-radius:9px; padding:10px 12px}
.omni-bd-hd{font-size:13.5px; font-weight:700; color:#2b3440; margin-bottom:8px}
.omni-bd-hd .qt-sub{font-weight:400; margin-left:6px}
.omni-bd-wrap{overflow-x:auto}
.omni-bd-tb{width:100%; border-collapse:collapse; font-size:12.5px; white-space:nowrap}
.omni-bd-tb th{text-align:left; font-weight:600; color:#7b8794; padding:5px 9px 5px 0; border-bottom:1px solid #e3eaf3}
.omni-bd-tb td{padding:7px 9px 7px 0; border-bottom:1px solid #eef2f7; color:#2b3440; vertical-align:top}
.omni-bd-tb tr:last-child td{border-bottom:none}
.omni-bd-cat{display:block; font-style:normal; font-size:11px; color:#8a94a0}
.omni-bd-hi{color:#c0392b; font-weight:600; font-size:11.5px; margin-left:4px}
.omni-bd-lo{color:#8a6a2f; font-weight:600; font-size:11.5px; margin-left:4px}
.omni-bd-ok{color:#2f7d46; font-weight:600; font-size:11.5px; margin-left:4px}
.omni-bd-foot{font-size:12px; color:#5a6470; margin-top:8px; line-height:1.6}
.omni-bd-weak td{background:#fffaf3}
.omni-bd-warn{color:#a8600f; display:inline-block; margin-bottom:4px}
.omni-ask-acts{display:flex; flex-wrap:wrap; gap:7px; padding:14px 18px 0}
.omni-ia{border-color:#d9c9a3; background:#fffdf6; color:#7a5c14; font-weight:600}
.omni-ia:hover{background:#fff6e0; border-color:#e2b24a; color:#5d4409}
.omni-ia:disabled{opacity:.45; cursor:default}
.omni-ask-inrow{display:flex; gap:8px; padding:12px 18px 4px; align-items:center}
.omni-ask-inrow .qt-input{flex:1; min-width:0}
.omni-ask-inrow .qt-print{flex:0 0 auto; white-space:nowrap}
.omni-ask-out{padding:10px 18px 18px}
.omni-ask-outhd{display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:6px;
  font-size:12.5px; font-weight:700; color:#5a6470}
.omni-ask-tx{width:100%; font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif; font-size:13.5px;
  line-height:1.75; resize:vertical; background:#fbfcfd}
@media(max-width:560px){ .omni-ask-inrow{flex-wrap:wrap} .omni-ask-inrow .qt-print{width:100%} }

/* ══════════ kd：打样单 ↔ 大货单 关联 ══════════ */
.od-splink{border:1px solid #e2e8f0; border-radius:8px; background:#fbfcfd; padding:8px 10px; margin:8px 0}
.od-splink-head{display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:13px}
.od-splink-head b{color:#2c3e50}
.od-splink-head .qt-sub{font-size:11.5px; color:#8a94a0}
.od-splink-chips{display:flex; flex-wrap:wrap; gap:7px; margin-top:7px}
.od-splink-chips:empty{display:none}
.od-spchip{display:inline-flex; align-items:center; gap:6px; border:1px solid #cfe0f5; background:#f2f7fe;
  border-radius:14px; padding:3px 6px 3px 11px; font-size:12px; color:#2b4a6f; max-width:100%}
.od-spchip.is-bulk{border-color:#d7e8d2; background:#f3faf1; color:#2f6b3a}
.od-spchip-no{font-weight:700; cursor:pointer; text-decoration:underline dotted}
.od-spchip-no:hover{color:#0f62c4}
.od-spchip-meta{color:#7a8899; font-size:11px}
.od-spchip-x{border:0; background:transparent; color:#a0aab6; cursor:pointer; font-size:14px; line-height:1; padding:0 3px}
.od-spchip-x:hover{color:#c0392b}
.od-splink-pick{display:flex; align-items:center; gap:8px; margin-top:8px; flex-wrap:wrap}
.od-splink-empty{font-size:12px; color:#98a2ae; margin-top:6px}
.od-linktag{display:inline-block; font-size:10.5px; font-weight:600; border-radius:9px; padding:1px 7px;
  vertical-align:middle; border:1px solid transparent; white-space:nowrap}
.od-linktag.is-sp{background:#f2f7fe; border-color:#cfe0f5; color:#2b4a6f}
.od-linktag.is-done{background:#f3faf1; border-color:#d7e8d2; color:#2f6b3a}

/* ══════════ kh：Omni 人设三层 ══════════ */
.omni-charter{border:1px solid #e2e8f0; border-radius:9px; background:#fbfcfd; padding:9px 11px; margin-top:12px}
.omni-charter-hd{display:flex; align-items:center; gap:9px; flex-wrap:wrap; font-size:13.5px}
.omni-charter-hd b{color:#2c3e50}
.omni-charter-hd .qt-sub{font-size:11.5px; color:#8a94a0}
.omni-ch-tx{font-size:13px; line-height:1.7}
.omni-ch-tx[readonly]{background:#f3f5f8; color:#5a6470; cursor:default}
.omni-ch-tx::placeholder{color:#a8b2bd; font-size:12px; line-height:1.65}
.omni-charter-live{font-size:12px; color:#5a6470; line-height:1.75; background:#f2f7fe;
  border:1px solid #cfe0f5; border-radius:7px; padding:9px 11px; margin-top:4px}
.omni-charter-live:empty{display:none}

/* ══════════ ki：Omni 语音面板 ══════════ */
.ov-mask{position:fixed; inset:0; z-index:9600; background:rgba(10,14,20,.62);
  backdrop-filter:blur(3px); display:flex; align-items:center; justify-content:center; padding:16px}
.ov-box{width:min(560px,96vw); max-height:94vh; overflow:auto; border-radius:18px;
  background:#141a21; border:1px solid #2a3542; box-shadow:0 24px 60px -20px rgba(0,0,0,.7);
  display:flex; flex-direction:column}
.ov-top{display:flex; align-items:center; gap:10px; padding:12px 16px; border-bottom:1px solid #232e3a}
.ov-nick{color:#d6a35c; font-weight:700; font-size:15px}
.ov-sw{display:flex; align-items:center; gap:5px; color:#8b96a2; font-size:12.5px; cursor:pointer}
.ov-sw input{accent-color:#d6a35c}
.ov-x{border:0; background:transparent; color:#6f7a85; font-size:17px; cursor:pointer; padding:2px 4px}
.ov-x:hover{color:#e8e3da}
.ov-stage{display:flex; flex-direction:column; align-items:center; padding:14px 0 4px;
  background:radial-gradient(120% 90% at 50% 16%, #26333f 0%, #141a21 66%)}
#ovOrb{display:block; max-width:100%}
.ov-state{font-size:11.5px; letter-spacing:.16em; color:#d6a35c; margin-top:12px; min-height:1.3em}
.ov-cap{color:#e8e3da; font-size:15.5px; line-height:1.7; text-align:center; padding:10px 22px 2px;
  min-height:2.6em; max-width:36ch}
.ov-hud{display:flex; justify-content:space-between; padding:6px 16px 10px; font-size:11px; color:#6f7a85}
.ov-out{border-top:1px solid #232e3a; padding:12px 16px}
.ov-out-hd{display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:6px;
  font-size:12.5px; font-weight:700; color:#8fb3d9}
.ov-out-hd .qt-mini{background:#1f2935; border-color:#33414f; color:#a9b5c1}
.ov-out-hd .qt-mini:hover{background:#2a3542; color:#e8e3da}
.ov-out-tx{width:100%; background:#0f151b; color:#dbe3ee; border:1px solid #2a3542; border-radius:9px;
  padding:10px 12px; font-size:13.5px; line-height:1.75; resize:vertical;
  font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif}
.ov-bar{display:flex; gap:10px; align-items:center; padding:12px 16px 4px; border-top:1px solid #232e3a}
.ov-talk{flex:1; border:0; border-radius:26px; padding:14px 18px; cursor:pointer;
  background:linear-gradient(180deg,#d6a35c,#b7873f); color:#141a21; font-weight:700; font-size:15px;
  touch-action:none; user-select:none; -webkit-user-select:none; transition:transform .08s, filter .12s}
.ov-talk:active{transform:scale(.975); filter:brightness(1.12)}
.ov-bar .qt-mini{background:#1f2935; border-color:#33414f; color:#a9b5c1; padding:9px 14px; border-radius:20px}
.ov-bar .qt-mini:hover{background:#2a3542; color:#e8e3da}
.ov-tip{padding:8px 16px 16px; font-size:11.5px; color:#6f7a85; line-height:1.65}
@media(max-width:480px){ .ov-cap{font-size:15px} .ov-talk{padding:16px} }
/* kj：语音面板里的错误条——留着不消失，业务才说得清是哪一步坏了 */
.ov-err{margin:0 16px 12px; padding:10px 12px; border-radius:9px;
  background:#3a1f1a; border:1px solid #6b3327; color:#f0c4b6; font-size:12.5px; line-height:1.7}
.ov-err b{display:block; color:#ffb59d; font-size:13px; margin-bottom:2px}
.ov-err span{display:block; color:#d3a596}
.ov-talk:disabled{filter:grayscale(.7) brightness(.7); cursor:not-allowed}

/* ══════════ kk：Omni 回答分段展示，每段单独复制 ══════════ */
.omni-blocks{display:flex; flex-direction:column; gap:10px}
.omni-blocks:empty{display:none}
.omni-blk{border:1px solid var(--line,#e2e8f0); border-radius:10px; overflow:hidden; background:#fff}
.omni-blk-hd{display:flex; align-items:center; gap:8px; padding:7px 10px 7px 12px;
  background:#f5f7fa; border-bottom:1px solid #e8edf3}
.omni-blk-t{font-weight:700; font-size:12.5px; color:#2c3e50; flex:1; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.omni-blk-tag{font-size:10.5px; color:#2f6b3a; background:#eaf6ec; border:1px solid #cfe6d4;
  border-radius:9px; padding:1px 7px; white-space:nowrap}
.omni-blk-c{border:1px solid #cfd8e3; background:#fff; color:#4a6f8f; border-radius:6px;
  font-size:11.5px; padding:3px 10px; cursor:pointer; white-space:nowrap}
.omni-blk-c:hover{background:#eef4fb; border-color:#8fb3d9}
.omni-blk-b{padding:10px 12px; font-size:13.5px; line-height:1.8; white-space:pre-wrap;
  word-break:break-word; max-height:340px; overflow:auto; color:#2c3e50}
.omni-blk-en .omni-blk-b{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:12.5px; background:#fcfdfe}
/* 语音面板是深色底 */
.ov-blocks .omni-blk{background:#0f151b; border-color:#2a3542}
.ov-blocks .omni-blk-hd{background:#1b2430; border-bottom-color:#2a3542}
.ov-blocks .omni-blk-t{color:#cfd8e3}
.ov-blocks .omni-blk-b{color:#dbe3ee}
.ov-blocks .omni-blk-en .omni-blk-b{background:#0c1116}
.ov-blocks .omni-blk-c{background:#1f2935; border-color:#33414f; color:#a9b5c1}
.ov-blocks .omni-blk-c:hover{background:#2a3542; color:#e8e3da}
.ov-blocks .omni-blk-tag{background:#1b2f22; border-color:#2f5138; color:#8fd0a0}

/* ══════════ kl：爆单推送设置 —— 占位符点选 + 文案预览 ══════════ */
.ps-vars{display:flex; flex-direction:column; gap:5px; margin-top:2px}
.ps-vargrp{display:flex; flex-wrap:wrap; align-items:center; gap:4px}
.ps-varg{font-size:11px; color:#8a94a0; min-width:52px; font-weight:600}
.ps-var{border:1px solid #d7e0ea; background:#f6f9fc; color:#3f6482; border-radius:5px;
  font-size:11.5px; padding:1px 7px; cursor:pointer; font-family:ui-monospace,Consolas,monospace}
.ps-var:hover{background:#e8f1fb; border-color:#8fb3d9; color:#1f4e79}
.ps-textprev{margin-top:8px; border:1px solid #d9e2ec; border-radius:9px; overflow:hidden; background:#fff}
.ps-tp-hd{background:#f2f6fa; border-bottom:1px solid #e3ebf2; padding:6px 11px;
  font-size:11.5px; font-weight:700; color:#4a6f8f}
.ps-tp-hd span{font-weight:400; color:#8a94a0}
.ps-tp-body{padding:11px 13px; white-space:pre-wrap; word-break:break-word;
  font-size:13.5px; line-height:1.75; color:#2c3e50; background:#eef7ee}

/* ══════════ km：消息抽屉 ══════════ */
.msg-btn{position:relative}
.msg-btn.has-new{border-color:#e2b24a; background:#fff9ec; color:#8a6a14; font-weight:600}
.msg-dot{position:absolute; top:-6px; right:-6px; min-width:17px; height:17px; padding:0 5px;
  border-radius:9px; background:#d64545; color:#fff; font-size:10.5px; line-height:17px;
  font-weight:700; text-align:center; box-shadow:0 0 0 2px #fff}
@keyframes mgPop{0%{transform:scale(.6)}60%{transform:scale(1.15)}100%{transform:scale(1)}}
.msg-btn.has-new .msg-dot{animation:mgPop .28s ease-out}

.mg-mask{position:fixed; inset:0; z-index:9500; background:rgba(15,20,28,.34); display:flex; justify-content:flex-end}
.mg-box{width:min(420px,100vw); height:100%; background:#fff; display:flex; flex-direction:column;
  box-shadow:-14px 0 40px -18px rgba(20,26,34,.5); animation:mgSlide .18s ease-out}
@keyframes mgSlide{from{transform:translateX(24px); opacity:.6}to{transform:none; opacity:1}}
.mg-head{display:flex; align-items:center; gap:9px; padding:13px 15px; border-bottom:1px solid #e8edf3; flex:0 0 auto}
.mg-head b{font-size:15px; color:#2c3e50}
.mg-sub{font-size:11.5px; color:#d64545; font-weight:600}
.mg-x{border:0; background:transparent; color:#98a2ae; font-size:17px; cursor:pointer; padding:2px 4px}
.mg-x:hover{color:#2c3e50}

.mg-list{flex:1; overflow:auto}
.mg-empty{padding:34px 22px; text-align:center; color:#98a2ae; font-size:13px; line-height:1.8}
.mg-row{display:flex; gap:10px; width:100%; text-align:left; border:0; border-bottom:1px solid #f0f3f7;
  background:#fff; padding:11px 14px; cursor:pointer; align-items:flex-start; font:inherit}
.mg-row:hover{background:#f7fafd}
.mg-row.unread{background:#fffdf6}
.mg-row.unread:hover{background:#fff9ea}
.mg-av{flex:0 0 auto; width:32px; height:32px; border-radius:50%; background:#e3ecf3; color:#3f6482;
  font-weight:700; font-size:13px; display:flex; align-items:center; justify-content:center; margin-top:2px}
.mg-col{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px}
.mg-r1{display:flex; align-items:center; gap:6px}
.mg-r1 b{font-size:13.5px; color:#2c3e50; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.mg-n{flex:0 0 auto; background:#d64545; color:#fff; border-radius:9px; font-size:10px; font-style:normal;
  font-weight:700; padding:0 6px; line-height:15px}
.mg-r2{font-size:11.5px; color:#8a94a0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.mg-r3{font-size:12.5px; color:#5a6470; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.mg-t{flex:0 0 auto; font-size:11px; color:#a8b2bd; margin-top:2px}

.mg-chat-wrap{flex:1; display:flex; flex-direction:column; min-height:0}
.mg-chat-wrap.drop{outline:2px dashed #8fb3d9; outline-offset:-6px; background:#f4f9ff}
.mg-chat-top{display:flex; align-items:center; gap:9px; padding:9px 13px; border-bottom:1px solid #e8edf3; flex:0 0 auto}
.mg-back{border:0; background:transparent; color:#3f6482; font-size:13px; cursor:pointer; padding:2px 4px; font-weight:600}
.mg-back:hover{color:#1f4e79}
.mg-chat-title{flex:1; min-width:0; display:flex; flex-direction:column}
.mg-chat-title b{font-size:13.5px; color:#2c3e50; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.mg-chat-title span{font-size:11px; color:#8a94a0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.mg-chat{flex:1; overflow:auto; padding:12px 13px; background:#f6f8fb; display:flex; flex-direction:column; gap:10px}
.mg-msg{max-width:88%; align-self:flex-start; background:#fff; border:1px solid #e6ecf3;
  border-radius:10px 10px 10px 3px; padding:8px 11px}
.mg-msg.mine{align-self:flex-end; background:#e9f3ff; border-color:#cfe0f5; border-radius:10px 10px 3px 10px}
.mg-msg-h{display:flex; align-items:center; gap:6px; margin-bottom:3px; font-size:11px; color:#8a94a0}
.mg-msg-h b{font-size:12px; color:#2c3e50}
.mg-msg-h span{background:#eef2f7; border-radius:7px; padding:0 6px; font-size:10px}
.mg-msg-h i{font-style:normal; margin-left:auto}
.mg-msg-b{font-size:13.5px; line-height:1.72; color:#2c3e50; word-break:break-word}
.mg-msg-imgs{display:flex; flex-wrap:wrap; gap:5px; margin-top:6px}
.mg-msg-imgs img{width:88px; height:88px; object-fit:cover; border-radius:7px; cursor:zoom-in;
  border:1px solid #e0e7ef; background:#fff}
.mg-lightbox{position:fixed; inset:0; z-index:9999; background:rgba(8,12,18,.88);
  display:flex; align-items:center; justify-content:center; cursor:zoom-out; padding:20px}
.mg-lightbox img{max-width:100%; max-height:100%; border-radius:6px}

.mg-imgs{display:flex; flex-wrap:wrap; gap:6px; padding:0 13px}
.mg-imgs:empty{display:none}
.mg-imgs{padding-top:8px}
.mg-thumb{position:relative; display:inline-block}
.mg-thumb img{width:54px; height:54px; object-fit:cover; border-radius:6px; border:1px solid #dfe6ee}
.mg-thumb.up img{opacity:.45}
.mg-thumb button{position:absolute; top:-5px; right:-5px; width:17px; height:17px; border-radius:50%;
  border:0; background:#4a5560; color:#fff; font-size:10px; line-height:17px; cursor:pointer; padding:0}
.mg-uping{position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-style:normal; font-size:11px; color:#3f6482; font-weight:700}
.mg-send{display:flex; gap:7px; align-items:flex-end; padding:10px 13px 13px; border-top:1px solid #e8edf3; flex:0 0 auto}
.mg-pic{border:1px solid #dfe6ee; background:#fff; border-radius:8px; height:34px; padding:0 9px;
  font-size:12.5px; color:#4a6f8f; cursor:pointer; flex:0 0 auto; white-space:nowrap; font-weight:600}
.mg-pic:hover{background:#f2f7fc; border-color:#8fb3d9}
#mgInput{flex:1; min-width:0; resize:none; border:1px solid #dfe6ee; border-radius:8px; padding:8px 10px;
  font:inherit; font-size:13.5px; line-height:1.6; max-height:120px; font-family:inherit}
#mgInput:focus{outline:0; border-color:#8fb3d9; box-shadow:0 0 0 3px rgba(143,179,217,.18)}
.mg-go{border:0; background:#3f6482; color:#fff; border-radius:8px; padding:9px 16px; font-weight:600;
  font-size:13.5px; cursor:pointer; flex:0 0 auto}
.mg-go:hover{background:#33536c}
.mg-go:disabled{opacity:.5; cursor:default}
@media(max-width:520px){ .mg-box{width:100vw} .mg-msg{max-width:94%} }

/* ══════════ kn：企微 @ 到人 —— 号码名单 ══════════ */
.at-roster{display:flex; flex-direction:column; gap:1px; background:#e6ecf3;
  border:1px solid #e6ecf3; border-radius:8px; overflow:hidden}
.at-roster:empty{display:none}
.at-row{display:grid; grid-template-columns:110px 1fr 150px; gap:9px; align-items:center;
  background:#fff; padding:7px 11px}
.at-row.bad{background:#fffaf5}
.at-n{font-size:13px; font-weight:600; color:#2c3e50; display:flex; flex-direction:column}
.at-n i{font-style:normal; font-size:10.5px; color:#8a94a0; font-weight:400}
.at-tel{font-size:12.5px; padding:4px 8px; font-family:ui-monospace,Consolas,monospace}
.at-s{font-size:11.5px; text-align:right}
.at-s .ok{color:#2f7d46; font-family:ui-monospace,Consolas,monospace}
.at-s .no{color:#c0392b; font-weight:400}
@media(max-width:640px){ .at-row{grid-template-columns:1fr; gap:4px} .at-s{text-align:left} }

/* ══════════ ko：订单编辑弹窗里的回款凭证 ══════════ */
.od-proof{border:1px solid #e2e8f0; border-radius:9px; background:#fbfcfd; padding:9px 11px; margin:8px 0}
.od-proof-hd{display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:13px; margin-bottom:7px}
.od-proof-hd b{color:#2c3e50}
.od-proof-hd .qt-sub{font-size:11px; color:#a8600f; background:#fff6e6; border:1px solid #f0dfc0;
  border-radius:8px; padding:0 7px}
.od-push-state i{font-style:normal; font-size:11.5px; border-radius:8px; padding:1px 8px; font-weight:600}
.od-push-state .st-ok{background:#eaf6ec; border:1px solid #cfe6d4; color:#2f6b3a}
.od-push-state .st-wait{background:#fdf1e7; border:1px solid #f0d6bd; color:#a8600f}
.od-proof .od-dropzone.is-off{opacity:.5; cursor:not-allowed}
.od-proof-tip{font-size:11.5px; color:#8a6a2f; line-height:1.65; margin-top:6px}
.od-proof-tip:empty{display:none}
.od-proof-tip b{color:#a8600f}
/* ko：编辑弹窗里的凭证缩略图要固定尺寸——不然一张小图会被拉满整行 */
.od-proof #odmProofThumbs{display:flex; flex-wrap:wrap; gap:7px; margin-bottom:7px}
.od-proof #odmProofThumbs:empty{display:none}
.od-proof #odmProofThumbs .prod-sheet-thumb{position:relative; width:82px; height:82px; flex:0 0 auto;
  border:1px solid #dfe6ee; border-radius:7px; overflow:hidden; background:#fff; cursor:zoom-in;
  display:flex; align-items:center; justify-content:center; padding:0}
.od-proof #odmProofThumbs .prod-sheet-thumb img{width:100%; height:100%; object-fit:cover}
.od-proof #odmProofThumbs .prod-sheet-thumb .ic{font-size:22px}
.od-proof #odmProofThumbs .prod-sheet-thumb .nm{position:absolute; left:0; right:0; bottom:0;
  background:rgba(20,26,34,.72); color:#fff; font-size:9.5px; padding:2px 4px; line-height:1.3;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.od-proof #odmProofThumbs .dg-img-x{position:absolute; top:2px; right:2px; width:17px; height:17px;
  border-radius:50%; border:0; background:rgba(20,26,34,.66); color:#fff; font-size:11px;
  line-height:17px; padding:0; cursor:pointer; text-align:center}
.od-proof #odmProofThumbs .dg-img-x:hover{background:#c0392b}

/* ══════════ kp：新消息主动提醒 ══════════ */
.mg-pref{border-bottom:1px solid #e8edf3; background:#fbfcfd; padding:11px 15px; flex:0 0 auto}
.mg-pref-hd{font-size:12.5px; font-weight:700; color:#2c3e50; margin-bottom:8px}
.mg-pref-hd span{font-weight:400; color:#98a2ae; margin-left:6px; font-size:11px}
.mg-pref label{display:grid; grid-template-columns:auto 1fr; gap:2px 7px; align-items:start;
  font-size:13px; color:#2c3e50; margin-bottom:9px; cursor:pointer}
.mg-pref label input{margin-top:3px}
.mg-pref label i{grid-column:2; font-style:normal; font-size:11px; color:#8a94a0; line-height:1.6}
.mg-pref label i b{color:#c0392b; font-weight:600}
.mg-pref-note{font-size:11px; color:#8a6a2f; background:#fff8ec; border:1px solid #f0e0c4;
  border-radius:7px; padding:7px 9px; line-height:1.65}
.mg-pref-note b{color:#a8600f}

/* 右下角轻提示 */
.mg-pop{position:fixed; right:18px; bottom:18px; z-index:9700; width:min(330px,calc(100vw - 36px));
  display:flex; gap:10px; align-items:flex-start; background:#fff; border:1px solid #dfe6ee;
  border-left:3px solid #3f6482; border-radius:10px; padding:11px 12px; cursor:pointer;
  box-shadow:0 12px 34px -12px rgba(20,26,34,.34); animation:mgPopIn .22s ease-out}
@keyframes mgPopIn{from{transform:translateY(10px); opacity:0}to{transform:none; opacity:1}}
.mg-pop.out{opacity:0; transform:translateY(8px); transition:all .24s ease-in}
.mg-pop:hover{border-color:#8fb3d9; background:#fafcff}
.mg-pop-av{flex:0 0 auto; width:30px; height:30px; border-radius:50%; background:#e3ecf3; color:#3f6482;
  font-weight:700; font-size:13px; display:flex; align-items:center; justify-content:center}
.mg-pop-c{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px}
.mg-pop-c b{font-size:12.5px; color:#2c3e50; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.mg-pop-c i{font-style:normal; font-size:12.5px; color:#5a6470; line-height:1.55;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden}
.mg-pop-n{flex:0 0 auto; background:#d64545; color:#fff; border-radius:9px; font-size:10.5px;
  font-weight:700; padding:1px 7px; line-height:15px}
.mg-pop-x{flex:0 0 auto; border:0; background:transparent; color:#a8b2bd; font-size:12px;
  cursor:pointer; padding:0 2px; line-height:1}
.mg-pop-x:hover{color:#2c3e50}
@media(max-width:520px){ .mg-pop{right:10px; left:10px; bottom:10px; width:auto} }

/* ══ lc：薪酬标准（附表一）══ */
.pg-tbl th{white-space:nowrap; font-size:12px}
.pg-tbl td{font-size:12px}
.pg-tbl .pg-total{background:#fffaf0; font-weight:700}
.pg-neg{text-align:center; color:#6b7480; background:#eef2fb; font-weight:600}
.py-tbl .py-minus input{color:#c0392b}
.py-tbl .py-minus{background:#fdf3f2}
.pg-tbl .pg-net{background:#eef7ee; font-weight:700}

/* ══ ld：员工基本信息 ══ */
.emp-tbl th, .emp-tbl td{white-space:nowrap; font-size:12.5px}
.emp-tbl tr.emp-left td{opacity:.55}
.emp-st{display:inline-block; padding:1px 8px; border-radius:8px; font-size:11.5px; font-weight:600}
.emp-on{background:#e9f7ee; color:#1e7e34}
.emp-prob{background:#fff4e0; color:#a8600f}
.emp-off{background:#f1f2f4; color:#7a8290}
.emp-soon{color:#a8600f; font-weight:600; font-size:12px}
.emp-bad{color:#c0392b; font-weight:700; font-size:12px}

/* ld：员工信息统计卡 —— 四组横排，比商机那三组再紧一点，给下面的名册留地方 */
.emp-groups{margin-bottom:10px}
.emp-groups .osg{flex:1 1 200px; min-width:190px}
.emp-groups .osg-n{font-size:22px}
.emp-groups .osg-c{padding:8px 6px 9px}
.emp-groups .osg-h{padding:6px 10px}

/* ══ le：绩效核算 · 审核条 ══ */
.pf-audit{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 10px;
  padding:9px 12px; border:1px solid #cfe0ff; border-radius:10px; background:#f4f8ff; font-size:13px}
.pf-audit.is-locked{border-color:#bfe3c8; background:#f2fbf5}
.pfa-steps{display:flex; align-items:center; gap:6px; font-size:12px}
.pfa-steps i{color:#b3bcc6; font-style:normal}
.pfa-step{padding:2px 10px; border-radius:9px; background:#eef0f4; color:#8a94a0; font-weight:600}
.pfa-step.on{background:#2b5db0; color:#fff}
.pfa-step.done{background:#e9f7ee; color:#1e7e34}

/* ══ lf：交期紧急度 —— 跟单员点名要「交期快到的置顶」，光排序不够，还要一眼看得出 ══ */
.eta-badge{display:inline-block; padding:1px 8px; border-radius:8px; font-size:11px; font-weight:700; white-space:nowrap}
.eta-over{background:#fdecea; color:#c0392b}
.eta-today{background:#ffe0b2; color:#8a4b00}
.eta-soon{background:#fff4e0; color:#a8600f}
.eta-warm{background:#eef4ff; color:#2f5bbd}
td.eta-over{background:#fdecea}
td.eta-today{background:#fff1e0}
td.eta-soon{background:#fffaf0}
.opp-card-foot{display:flex; align-items:center; justify-content:space-between; gap:6px; flex-wrap:wrap}
.prod-sort-btn.on{background:#2b5db0; color:#fff; border-color:#2b5db0}
/* 生产单文件：每份都配一个下载按钮 */
.prod-sheet-wrap{position:relative; display:inline-flex; align-items:center}
.pst-dl{margin-left:-6px; margin-right:6px; padding:2px 6px; border:1px solid var(--line); border-radius:7px;
  background:#fff; font-size:12px; text-decoration:none; color:#2b5db0; align-self:center}
.pst-dl:hover{background:#2b5db0; color:#fff}
.kb-att-dl{padding:2px 6px; border:1px solid var(--line); border-radius:7px; background:#fff; text-decoration:none; font-size:12px}

/* ══ lf：分票发货 ══ */
.prod-ship{border:1px solid var(--line); border-radius:10px; padding:8px 10px; margin-bottom:8px; background:#fafbfd}
.ps-hd{display:flex; align-items:center; justify-content:space-between; font-size:12.5px; margin-bottom:4px}
.ps-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:8px}
.ps-grid .ps-no{grid-column:span 2}
.ps-grid .ps-note{grid-column:1/-1}

/* ══ lf：进账认领 ══ */
.rc-card{border:1px solid var(--line); border-radius:11px; padding:10px 12px; margin-bottom:10px; background:#fff}
.rc-card.is-wait{border-color:#e9a98e; background:#fffaf7}
.rc-hd{display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.rc-amt{font-size:19px; font-weight:800; color:#1e7e34}
.rc-st{padding:1px 9px; border-radius:8px; font-size:11.5px; font-weight:700}
.rc-wait{background:#fdecea; color:#c0392b}
.rc-ok{background:#e9f7ee; color:#1e7e34}
.rc-ig{background:#f1f2f4; color:#7a8290}
.rc-linked{margin-top:6px; padding:6px 10px; border-radius:8px; background:#f2fbf5; font-size:12.5px;
  display:flex; align-items:center; gap:8px; flex-wrap:wrap}
.rc-cands{margin-top:8px}
.rc-cand{display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:7px 10px; margin-top:6px;
  border:1px solid var(--line); border-radius:9px; background:#fafbfd; font-size:12.5px}
.rc-cand:first-of-type{border-color:#8bc34a; background:#f6fbf1}
.rc-score{min-width:30px; text-align:center; padding:1px 6px; border-radius:7px; background:#2b5db0; color:#fff; font-weight:700; font-size:11.5px}
.rc-why{color:#6b7785}
.rc-claim{padding:3px 10px !important; font-size:12px !important}
.gt-histtag{display:inline-block; margin-left:6px; padding:1px 8px; border-radius:8px; background:#eef4ff; color:#2f5bbd; font-size:11.5px; font-weight:700}

/* lg：外采单没挂订单 —— 有订单才需要外采，挂不上的要有人去看 */
.pc-ord-link{font-size:12.5px}
.pc-noord{display:inline-block; padding:1px 8px; border-radius:8px; background:#fdecea; color:#c0392b; font-size:11.5px; font-weight:700}
tr.pc-row-noord td{background:#fffaf8}

/* lg：外采单上的关联单据 —— 可点跳转 + 金额一眼看得到 */
.pc-jump{margin-left:6px; font-size:11.5px; color:#2b5db0; text-decoration:none; font-weight:600}
.pc-jump:hover{text-decoration:underline}
.pc-ordmoney{display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin:6px 0 2px;
  padding:8px 12px; border:1px solid #cfe0ff; border-radius:10px; background:#f4f8ff; font-size:12.5px}
.pcm-t{font-weight:700}
.pcm-i b{font-size:14px}

/* ══════════════════════════════════════════════════════════════════════
   lj：Omni 目标抓手
   浅色，跟下面的事项卡一条线；黑金只留给英雄区和悬浮球（jn 定的）。
   ══════════════════════════════════════════════════════════════════════ */
.omni-goals{margin:10px 0 12px;border:1px solid #e3e8ef;border-radius:10px;background:#fff;padding:12px 14px}
.og-hd{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.og-hd b{font-size:14px}
.og-none{font-size:12px;color:#a8620a;background:#fbeedd;border:1px solid #f0d7b4;border-radius:12px;padding:1px 9px}
.og-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:10px}
.og-c{border:1px solid #e6ebf1;border-radius:8px;padding:9px 11px;background:#fbfcfd}
.og-t{font-size:12px;color:#6b7681;display:flex;align-items:center;gap:3px}
.og-dn{font-size:10px;color:#8a94a0}
.og-v{margin:2px 0 6px;line-height:1.25}
.og-v b{font-size:19px;font-variant-numeric:tabular-nums}
.og-g{font-size:12px;color:#8a94a0;font-variant-numeric:tabular-nums}
.og-bar{height:5px;border-radius:3px;background:#e9edf1;overflow:hidden}
.og-bar>i{display:block;height:100%;border-radius:3px;background:#adb6c0;transition:width .3s}
.og-s{margin-top:5px;font-size:11.5px;color:#6b7681;display:flex;gap:7px;flex-wrap:wrap}
.og-pace{color:#8a94a0}
.og-ok  .og-bar>i{background:#1e7e34}  .og-ok  .og-s{color:#1e7e34}
.og-near .og-bar>i{background:#d97706} .og-near .og-s{color:#a8620a}
.og-far .og-bar>i{background:#c0392b}  .og-far .og-s{color:#c0392b}
.og-over .og-bar>i{background:#c0392b} .og-over .og-s{color:#c0392b}
.og-idle{opacity:.62}
/* lj：新加的低优先级事项（交期还有几天这种），黑框列表里也要有个左边框色 */
.omni-card.omni-sev1{border-left:3px solid #7a8fa6}
.omni-dk.omni-sev1{border-left-color:#7a8fa6}
.og-set .og-in{max-width:130px;text-align:right;font-variant-numeric:tabular-nums}
.og-set .og-now{font-variant-numeric:tabular-nums;color:#3d454e}

/* ══ lk：爆单两项必备的红字提醒（收款渠道 / 回款凭证）══
   Anna：「必须上传，红字高亮做提示，少了就不会爆单。」
   空着＝整块描红，填上/传上立刻恢复正常，不用等保存。 */
.od-must{color:#c0392b;font-weight:600;font-size:11.5px;background:#fbe6e3;
  border:1px solid #f2c4bd;border-radius:10px;padding:0 7px;margin-left:6px;white-space:nowrap}
#odPayChanField.od-miss .qt-input,
#odPayChanField.od-miss input{border-color:#c0392b;background:#fff6f5;box-shadow:0 0 0 2px rgba(192,57,43,.10)}
#odPayChanField.od-miss .qt-label{color:#c0392b}
#odProofBox.od-miss{border-color:#c0392b;background:#fff8f7}
#odProofBox.od-miss .od-dropzone{border-color:#c0392b;color:#c0392b;background:#fff}
/* lk：右栏「收款渠道」是 JS 从表单挪过来的，挪过来之后跟下面的「回款凭证」标题贴在一起、
   标题那行长说明文字换行后压到输入框上（Anna 截图里看到的重叠）。给它自己的上下留白，
   并把说明文字从同一行拆到下一行，不再跟标题抢宽度。 */
#odPayChanSlot{margin:10px 0 4px}
#odPayChanSlot .od-paychan-moved{width:100%;margin:0}
.od-sec-must{margin-top:14px;display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.od-sec-sub{flex-basis:100%;font-weight:400;margin-top:2px}
/* lk：合并视图下左栏的「回款凭证」收成一行状态 —— 右栏已经有上传区，这里不重复摆。
   独立弹窗（商机转订单 / 新建订单）里没有右栏，所以那时不加这个 class，上传区照常在。 */
.od-proof.od-proof-slim{padding:7px 11px;background:#fbfcfd;border-color:#e3e8ef}
.od-proof-slim .prod-sheet-thumbs,
.od-proof-slim .od-dropzone,
.od-proof-slim .od-must{display:none}
.od-proof-slim .od-proof-hd{margin:0}
.od-proof-slim .od-proof-tip{margin-top:3px}
.od-goright{font-style:normal;color:#c0392b;font-weight:600}

/* ═══ xa：国内/海外板块条 + 品质/仓库 ═══ */
.xyh-market-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 10px;padding:8px 12px;border-radius:10px;font-size:13px;background:#eef3ff;border:1px solid #c9d7ff;color:#2b3f78}
.xyh-market-bar.cn{background:#fff1ec;border-color:#ffc9b8;color:#8a3a1f}
.xyh-market-bar b{font-size:14px}
.xyh-market-bar .qt-seg-btn{padding:4px 12px;font-size:12.5px}
.qc-bad{color:#c0392b;font-weight:700}
.qc-ok{color:#1e8449;font-weight:700}
.wh-low td{background:#fff3f3}
.wh-low .wh-qty{color:#c0392b;font-weight:700}
.qt-side-group span{white-space:nowrap}

.qt-grid6 .sp2{grid-column:span 2}
.qt-grid6 .sp3{grid-column:span 3}
.qt-grid6 .sp6{grid-column:1/-1}
@media(max-width:900px){.qt-grid6 .sp3{grid-column:span 2}}
@media(max-width:560px){.qt-grid6 .sp2,.qt-grid6 .sp3{grid-column:span 1}}

/* xf：Anna 圈掉的板块 —— 邮件开发 / 设计 / 供应 / 战略。只藏入口不删代码，以后要开回来删掉这几行就行 */
#navDev,#navDesign,#navSupplier,#navStrategy,#devChannelSeg [data-devchan="mail"]{display:none !important}

/* xg：设计相关入口全部藏掉（Anna：设计相关的内容都去掉，设计工单也去掉）—— 只藏不删，恢复删这段即可 */
[data-doc="design"],#btnMsg,#btnOrderToDesign,[data-todesign],[data-oppact="design"],#btnDesignStats,#btnDesignNew2,
#nfDesign,#nfWhDesign,[data-nftest="design"],#cfgDesigners,#todayDesign,#msgDrawer{display:none !important}

/* xg：铁罐引擎面板 + 月度台账 */
.can-panel{border:1px solid #cfe3d3;background:#f4faf5;border-radius:10px;padding:10px 12px;margin-top:8px}
.can-panel .qt-grid6{gap:6px 10px}
.can-parts{font-size:12px;color:#3a4552;margin-top:6px;line-height:1.7}
.wh-month{font-size:11.5px}
.wh-month th,.wh-month td{padding:3px 5px !important;text-align:center;white-space:nowrap}
.wh-month td.nm{text-align:left;min-width:160px}
.wh-month td.in{color:#1e8449}.wh-month td.out{color:#c0392b}
.wh-month tr.wk td{background:#fffbea}

/* xl：侧栏英文名去掉 Grow Together，XYH CAN 放大到和中文同宽对齐 */
.qt-brand-en{font-size:17px;font-weight:800;letter-spacing:.14em;margin-top:2px;color:#1e8c46;white-space:nowrap}

/* xm：国内报价单（鑫誉恒现用格式） */
.cn-sheet{font-family:"Microsoft YaHei","PingFang SC","Noto Sans CJK SC",sans-serif;color:#111;font-size:13px}
.cn-sheet .cn-co{text-align:center;font-size:22px;font-weight:800;letter-spacing:.08em;margin-top:6px}
.cn-sheet .cn-addr{text-align:center;font-size:12.5px;color:#333;margin-top:2px}
.cn-sheet .cn-tel{text-align:center;font-size:12.5px;color:#1a4fb4;margin-top:2px}
.cn-sheet .cn-title{text-align:center;font-size:20px;font-weight:800;letter-spacing:.5em;margin:8px 0 4px}
.cn-sheet .cn-meta{display:flex;justify-content:space-between;font-weight:700;margin:4px 0 4px}
.cn-sheet table{width:100%;border-collapse:collapse;table-layout:fixed}
.cn-sheet td{border:1px solid #111;padding:6px 8px;vertical-align:middle;word-break:break-all}
.cn-sheet td.k{width:92px;font-weight:700;background:#fff;white-space:nowrap}
.cn-sheet td.v{font-weight:700;color:#1a4fb4;text-align:center}
.cn-sheet td.v.l{text-align:left}
.cn-sheet td.img{text-align:center;vertical-align:middle;padding:4px}
.cn-sheet td.img img{max-width:100%;max-height:220px;object-fit:contain}
.cn-sheet .cn-ps{margin-top:16px;line-height:1.9;font-size:12.5px}
.cn-sheet .cn-ps b{color:#1a4fb4}
.cn-sheet .cn-sign{display:flex;justify-content:space-between;margin-top:26px;padding:0 40px;font-weight:700}

/* xo：国内报价单左上角 logo */
.cn-sheet{position:relative}
.cn-sheet .cn-logo{position:absolute;left:0;top:0;width:96px;height:auto}
.cn-sheet .cn-co{margin-top:4px}
@media print{.cn-sheet .cn-logo{width:96px}}

.cn-sheet .cn-sign{flex-wrap:wrap;gap:10px 40px;padding:0 20px}
