/* ============================================================
   cockpit.css — AI驾驶舱缝合层样式
   与运营协作台 styles.css 并存；组件类统一 cp- 前缀，布局类
   仅在 body[data-shell="cockpit"]（驾驶舱风格）下生效。
   ============================================================ */

/* ---------- 双风格外壳切换 ---------- */
#shellCp{display:none}
body[data-shell="cockpit"] #shellErp{display:none}
body[data-shell="cockpit"] #shellCp{display:block}
body[data-shell="cockpit"] .cp-body{display:flex;align-items:flex-start;gap:0}
body[data-shell="cockpit"] .cp-sidebar{display:flex}
body[data-shell="cockpit"] .wrap{max-width:none;flex:1;min-width:0;margin:0;padding:18px 24px 48px}
.cp-body{display:block}
.cp-sidebar{display:none}

/* ---------- 驾驶舱顶栏 ---------- */
.cp-topbar{position:sticky;top:0;z-index:60;height:56px;background:var(--card);
  border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 20px}
.cp-logo{font-size:16px;font-weight:600;white-space:nowrap;color:var(--ink)}
.cp-logo b{background:linear-gradient(135deg,var(--brand),#12b5c9);-webkit-background-clip:text;background-clip:text;color:transparent;margin-left:2px}
.cp-ver{font-size:10px;background:var(--greenbg,#e9f8ee);color:var(--green,#16a34a);border:1px solid #b8e6cc;padding:1px 7px;border-radius:99px;font-weight:600;flex:none}
.cp-topmid{flex:1;font-size:12px;color:var(--sub);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-userbox{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink2,#374151);flex:none}
.cp-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,var(--brand),#12b5c9);
  color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;flex-shrink:0}

/* ---------- 驾驶舱侧边栏 ---------- */
.cp-sidebar{width:206px;background:var(--card);border-right:1px solid var(--line);
  position:sticky;top:0;height:100vh;overflow-y:auto;flex-shrink:0;
  flex-direction:column;padding:14px 10px;z-index:55}
.cp-nav{display:flex;flex-direction:column;gap:2px}
.cp-navgrp{font-size:11px;color:var(--sub);padding:10px 10px 4px;letter-spacing:.5px}
.cp-navi{display:flex;align-items:center;gap:9px;padding:9px 10px;border-radius:9px;font-size:13.5px;
  color:var(--ink2,#374151);text-align:left;width:100%;transition:all .15s;position:relative;border:none;background:none;cursor:pointer;font-family:inherit}
.cp-navi>span:not(.cp-nii):not(.cp-nib):not(.cp-navbadge){white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.cp-navgrp-t{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-navi:hover{background:var(--graybg,#f1f3f7)}
.cp-navi.active{background:var(--brand2,#eef3ff);color:var(--brand);font-weight:600}
.cp-navi.active::before{content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--brand)}
.cp-nii{font-size:15px;flex:none}
.cp-nib{margin-left:auto;font-size:10.5px;background:var(--red,#dc2626);color:#fff;border-radius:99px;padding:1px 6px;font-weight:600}
.cp-nib.ai{background:linear-gradient(135deg,#6938ef,var(--brand))}
.cp-sidefoot{margin-top:auto;padding:12px 10px 4px;border-top:1px solid var(--line)}
.cp-sftitle{font-size:11px;color:var(--sub);margin-bottom:8px}
.cp-sfitem{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink2,#374151);padding:3px 0}
.cp-sfitem i{margin-left:auto;font-style:normal;font-size:11px;color:var(--green,#16a34a)}
.cp-dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrone}
.cp-dot.green{background:var(--green,#16a34a);box-shadow:0 0 0 3px var(--greenbg,#e9f8ee)}

/* ---------- 通用组件 ---------- */
.cp-tab{display:none}
.cp-tab.active{display:block;animation:cpFade .25s ease}
@keyframes cpFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.cp-tabhead{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.cp-tabhead h2{font-size:20px;margin-bottom:4px;color:var(--ink)}
.cp-tabhead p{font-size:12.5px;color:var(--sub);max-width:760px}
.cp-spacer{flex:1}
.cp-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px}
.cp-cardhead{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.cp-cardhead h3{font-size:15px;color:var(--ink)}
.cp-hint{font-size:12px;color:var(--sub)}
.cp-empty{padding:26px;text-align:center;color:var(--sub);font-size:13px}

.cp-btn{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:var(--card);
  color:var(--ink2,#374151);border-radius:8px;padding:7px 13px;font-size:13px;cursor:pointer;font-family:inherit;transition:.15s;white-space:nowrap}
.cp-btn:hover{border-color:var(--brand);color:var(--brand)}
.cp-btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.cp-btn.primary:hover{filter:brightness(1.08);color:#fff}
.cp-btn.ghost{border-color:transparent;background:var(--graybg,#f1f3f7)}
.cp-btn.green{background:var(--green,#16a34a);border-color:var(--green,#16a34a);color:#fff}
.cp-btn.red{background:var(--red,#dc2626);border-color:var(--red,#dc2626);color:#fff}
.cp-btn.sm{padding:5px 10px;font-size:12px}
.cp-btn.xs{padding:3px 8px;font-size:11.5px;border-radius:6px}
.cp-btn:disabled{opacity:.5;cursor:not-allowed}

.cp-tag{font-size:11.5px;padding:2px 8px;border-radius:99px;font-weight:600;white-space:nowrap;flex:none}
.cp-tag.red{background:var(--redbg,#fdeaea);color:var(--red,#dc2626)}
.cp-tag.amber{background:var(--amberbg,#fef3e2);color:var(--amber,#d97706)}
.cp-tag.blue{background:var(--bluebg,#e0efff);color:var(--blue,#1d6fd6)}
.cp-tag.green{background:var(--greenbg,#e9f8ee);color:var(--green,#16a34a)}
.cp-tag.purple{background:#f4f3ff;color:#6938ef}
.cp-tag.gray{background:var(--graybg,#f1f3f7);color:var(--sub)}

.cp-tblwrap{overflow-x:auto;border:1px solid var(--line);border-radius:10px}
table.cp-tbl{width:100%;border-collapse:collapse;background:var(--card);min-width:820px}
table.cp-tbl th{background:var(--thead-bg,#f7f9fc);color:var(--sub);font-weight:600;font-size:12.5px;
  text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}
table.cp-tbl td{padding:10px 12px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle}
table.cp-tbl tr:last-child td{border-bottom:none}
table.cp-tbl tr.row-overdue td{background:var(--redbg,#fdeaea)}
.cp-opbtns{display:flex;gap:5px;flex-wrap:wrap}

.cp-avatar-sm{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,var(--brand),#12b5c9);
  color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:600;font-size:11px;flex-shrink:0}
.cp-tname{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cp-tid{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;background:var(--graybg,#f1f3f7);
  color:var(--ink2,#374151);border-radius:5px;padding:1px 6px;font-weight:600;flex:none}
.cp-towner{display:flex;align-items:center;gap:7px}
.cp-towner span{font-size:11px;color:var(--sub);display:block}
.cp-src s{display:block;text-decoration:none;font-size:11px;color:var(--sub)}
.cp-src span{font-size:12px}

.cp-stageflow{display:flex;flex-direction:column;gap:3px;min-width:96px}
.cp-segs{display:flex;gap:3px}
.cp-seg{flex:1;height:5px;border-radius:3px;background:var(--graybg,#f1f3f7)}
.cp-seg.done{background:var(--green,#16a34a)}
.cp-seg.cur{background:var(--brand)}
.cp-stageflow em{font-style:normal;font-size:11px;color:var(--sub)}

/* ---------- 早报 ---------- */
.cp-briefgrid{display:grid;grid-template-columns:minmax(300px,1.1fr) 1fr 1fr;gap:14px;margin-bottom:14px}
@media(max-width:1100px){.cp-briefgrid{grid-template-columns:1fr}}
.cp-healthring{position:relative;display:flex;justify-content:center;padding:8px 0 4px}
.cp-healthnum{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}
.cp-healthnum b{font-size:30px;color:var(--ink);display:block;line-height:1.1}
.cp-healthnum span{font-size:11px;color:var(--sub)}
.cp-hdelta{text-align:center;font-size:12.5px;color:var(--sub);margin-bottom:12px}
.cp-hdims{display:flex;flex-direction:column;gap:8px}
.cp-hd{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--sub)}
.cp-hd>span{width:60px;flex:none}
.cp-hdbar{flex:1;height:6px;border-radius:3px;background:var(--graybg,#f1f3f7);overflow:hidden}
.cp-hdbar i{display:block;height:100%;border-radius:3px;background:var(--brand)}
.cp-hdbar i.warn{background:var(--amber,#d97706)}
.cp-hd b{width:34px;text-align:right;color:var(--ink);flex:none}
.cp-hfoot{font-size:11px;color:var(--sub);text-align:center;margin-top:10px;padding-top:8px;border-top:1px dashed var(--line)}
.cp-watchcol,.cp-riskcol{display:flex;flex-direction:column;gap:10px}
.cp-watchcard{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--card)}
.cp-wchead{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.cp-wcid{flex:1;min-width:0}
.cp-wcid b{display:block;font-size:13.5px;color:var(--ink)}
.cp-wcid span{font-size:11px;color:var(--sub)}
.cp-wctask{display:flex;align-items:center;gap:7px;font-size:12.5px;padding:5px 0;border-top:1px dashed var(--line)}
.cp-wcfoot{display:flex;align-items:center;gap:8px;margin-top:9px;padding-top:8px;border-top:1px solid var(--line)}
.cp-wchint{font-size:11px;color:var(--sub)}
.cp-ttdot{width:7px;height:7px;border-radius:50%;flex-shrone;display:inline-block}
.cp-ttdot.overdue{background:var(--red,#dc2626)}
.cp-ttdot.today{background:var(--amber,#d97706)}
.cp-ttdot.soon{background:var(--amber,#d97706)}
.cp-ttdot.accept{background:var(--blue,#1d6fd6)}
.cp-ttdot.done{background:var(--green,#16a34a)}
.cp-ttdot.normal{background:var(--gray,#9ca3af)}
.cp-riskcard{border:1px solid var(--line);border-left:3px solid var(--red,#dc2626);border-radius:10px;padding:12px;background:var(--card)}
.cp-riskcard.sev-mid{border-left-color:var(--amber,#d97706)}
.cp-rchead{display:flex;align-items:center;gap:7px;margin-bottom:6px;flex-wrap:wrap}
.cp-rchead b{font-size:13.5px;color:var(--ink);flex:1;min-width:0}
.cp-riskcard p{font-size:12.5px;color:var(--ink2,#374151);line-height:1.6}
.cp-rcfoot{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:11px;color:var(--sub)}
.cp-feed{display:flex;flex-direction:column;gap:2px}
.cp-feeditem{display:flex;align-items:flex-start;gap:9px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:12.5px}
.cp-feeditem:last-child{border-bottom:none}
.cp-fitime{font-size:11px;color:var(--sub);width:44px;flex:none;padding-top:2px}
.cp-fidot{width:7px;height:7px;border-radius:50%;margin-top:6px;flex:none}
.cp-fidot.blue{background:var(--blue,#1d6fd6)}
.cp-fidot.amber{background:var(--amber,#d97706)}
.cp-fidot.green{background:var(--green,#16a34a)}
.cp-fidot.purple{background:#6938ef}
.cp-checklist{list-style:none;display:flex;flex-direction:column;gap:2px}
.cp-checklist li label{display:flex;align-items:flex-start;gap:9px;padding:8px 6px;border-radius:8px;cursor:pointer;font-size:13px}
.cp-checklist li label:hover{background:var(--graybg,#f1f3f7)}
.cp-checklist input[type=checkbox]{margin-top:3px;width:15px;height:15px;accent-color:var(--brand);flex:none;cursor:pointer}
.cp-checklist li label span{flex:1;line-height:1.5}
.cp-clmeta{font-size:11px;color:var(--sub);background:var(--graybg,#f1f3f7);border-radius:5px;padding:1px 6px;flex:none!important}
.cp-actionprog{font-size:12px;color:var(--sub);margin-top:10px;padding-top:9px;border-top:1px solid var(--line)}
.cp-actionprog b{color:var(--brand)}

/* ---------- 驾驶舱统计/树 ---------- */
.cp-statrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:14px}
.cp-statcard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.cp-statcard s{display:block;text-decoration:none;font-size:12px;color:var(--sub);margin-bottom:4px}
.cp-statcard b{font-size:26px;color:var(--ink);line-height:1.15;display:block}
.cp-statcard em{font-style:normal;font-size:11px;color:var(--sub)}
.cp-statcard.blue b{color:var(--blue,#1d6fd6)}
.cp-statcard.amber b{color:var(--amber,#d97706)}
.cp-statcard.red b{color:var(--red,#dc2626)}
.cp-statcard.green b{color:var(--green,#16a34a)}
.cp-sbbanner{background:linear-gradient(135deg,var(--brand),#12b5c9);border-radius:12px;padding:16px 20px;color:#fff;margin-bottom:14px}
.cp-sbbanner b{font-size:16px;display:block;margin:6px 0 8px}
.cp-sbtag{font-size:11px;background:rgba(255,255,255,.22);border-radius:99px;padding:2px 10px;font-weight:600}
.cp-sbmeta{display:flex;gap:18px;flex-wrap:wrap;font-size:12px;opacity:.92}
.cp-sbmeta i{font-style:normal}
.cp-treecard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}
.cp-tree{display:flex;flex-direction:column;gap:12px}
.cp-treroot{margin-bottom:4px}
.cp-trcard{border:1px solid var(--line);border-radius:10px;padding:14px;background:var(--brand2,#eef3ff)}
.cp-trcard b{font-size:15px;display:block;margin:6px 0 4px;color:var(--ink)}
.cp-trmeta{font-size:12px;color:var(--sub)}
.cp-trbar{height:6px;border-radius:3px;background:var(--graybg,#f1f3f7);margin-top:9px;overflow:hidden}
.cp-trbar i{display:block;height:100%;width:64%;border-radius:3px;background:linear-gradient(90deg,var(--brand),#12b5c9)}
.cp-treebranch{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.cp-treeplan{border:1px solid var(--line);border-radius:10px;padding:12px;background:var(--card)}
.cp-tpcard{display:flex;flex-direction:column;gap:4px;padding-bottom:9px;border-bottom:1px dashed var(--line);margin-bottom:9px}
.cp-tptag{font-size:11px;color:var(--brand);font-weight:600}
.cp-tpowner{font-size:11.5px;color:var(--sub)}
.cp-tpcard b{font-size:13.5px;color:var(--ink)}
.cp-tpgoal{font-size:11.5px;color:var(--sub)}
.cp-tptasks{display:flex;flex-direction:column;gap:5px}
.cp-ttchip{display:flex;align-items:center;gap:7px;font-size:12.5px;padding:6px 8px;border-radius:7px;
  background:var(--graybg,#f1f3f7);cursor:pointer;border:1px solid transparent;text-align:left;font-family:inherit;color:var(--ink2,#374151);width:100%}
.cp-ttchip:hover{border-color:var(--brand)}
.cp-ttchip.overdue{background:var(--redbg,#fdeaea)}
.cp-ttchip.today{background:var(--amberbg,#fef3e2)}
.cp-ttchip.accept{background:var(--bluebg,#e0efff)}
.cp-ttchip.done{opacity:.65}
.cp-ttchip b{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11px;flex:none}
.cp-ttchip span{margin-left:auto}
tr.cp-flash td{animation:cpFlash 1.4s ease}
@keyframes cpFlash{0%,60%{background:#fff6cc}100%{background:transparent}}

/* ---------- 清单 / 模板 / 督办 / 团队 / 文件 ---------- */
.cp-tplgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.cp-tplcard{border:1px solid var(--line);border-radius:12px;padding:15px;background:var(--card);display:flex;flex-direction:column;gap:9px}
.cp-tplhead{display:flex;align-items:center;gap:8px}
.cp-tplhead span:first-child{font-size:20px}
.cp-tplhead b{font-size:14px;color:var(--ink);flex:1}
.cp-tplcard p{font-size:12.5px;color:var(--sub);line-height:1.6}
.cp-tplmeta{display:flex;justify-content:space-between;gap:8px;font-size:11.5px;color:var(--sub);flex-wrap:wrap}
.cp-blockgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-bottom:14px}
.cp-blockcard{border:1px solid var(--line);border-radius:12px;padding:15px;background:var(--card)}
.cp-bchead{display:flex;align-items:center;gap:9px;margin-bottom:9px;flex-wrap:wrap}
.cp-bcid{flex:1;min-width:0}
.cp-bcid b{display:block;font-size:13.5px;color:var(--ink)}
.cp-bcid span{font-size:11px;color:var(--sub)}
.cp-bcreason{font-size:12.5px;color:var(--ink2,#374151);background:var(--note-bg,#fff8e6);
  border:1px solid var(--note-line,#ffe2a8);border-radius:8px;padding:8px 10px;margin-bottom:9px;line-height:1.6}
.cp-bcblocks{font-size:12px;color:var(--sub);margin-bottom:9px;display:flex;gap:5px;flex-wrap:wrap;align-items:center}
.cp-bcblocks span{font-family:ui-monospace,Menlo,Consolas,monospace;background:var(--graybg,#f1f3f7);border-radius:5px;padding:1px 6px}
.cp-bcfoot{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--sub);padding-top:9px;border-top:1px solid var(--line)}
.cp-aggcard{border:1px solid var(--line);border-radius:12px;padding:15px;margin-bottom:12px;background:var(--card);border-left:3px solid var(--red,#dc2626)}
.cp-aggcard.level-mid{border-left-color:var(--amber,#d97706)}
.cp-agghead{display:flex;align-items:center;gap:8px;margin-bottom:9px;flex-wrap:wrap}
.cp-agghead b{font-size:14px;color:var(--ink);flex:1;min-width:200px}
.cp-aibadge{font-size:11px;background:linear-gradient(135deg,#6938ef,var(--brand));color:#fff;border-radius:99px;padding:2px 9px;font-weight:600}
.cp-aggsignals{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.cp-aggsignals span{font-size:11.5px;background:var(--graybg,#f1f3f7);color:var(--ink2,#374151);border-radius:6px;padding:2px 8px}
.cp-aggbody{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:900px){.cp-aggbody{grid-template-columns:1fr}}
.cp-aggbody h5{font-size:12px;color:var(--sub);margin-bottom:4px}
.cp-aggbody p{font-size:12.5px;color:var(--ink2,#374151);line-height:1.65}
.cp-aggfoot{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:9px;border-top:1px solid var(--line);font-size:11.5px;color:var(--sub)}
.cp-teamgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:14px}
.cp-teamcard{border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--card)}
.cp-tchead{display:flex;align-items:center;gap:9px;margin-bottom:11px;flex-wrap:wrap}
.cp-tcid{flex:1;min-width:0}
.cp-tcid b{display:block;font-size:13.5px;color:var(--ink)}
.cp-tcid span{font-size:11px;color:var(--sub)}
.cp-tcstats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:11px}
.cp-tcstat{text-align:center;background:var(--graybg,#f1f3f7);border-radius:8px;padding:7px 3px}
.cp-tcstat b{display:block;font-size:16px;color:var(--ink)}
.cp-tcstat s{display:block;text-decoration:none;font-size:10.5px;color:var(--sub)}
.cp-mentorchain{border:1px solid var(--line);border-radius:10px;padding:14px;background:var(--card)}
.cp-mcnode{font-size:12.5px;background:var(--brand2,#eef3ff);color:var(--brand);border-radius:8px;padding:5px 11px;font-weight:600;display:inline-block}
.cp-mcnode.top{background:linear-gradient(135deg,var(--brand),#12b5c9);color:#fff}
.cp-mcnode.sub{background:var(--graybg,#f1f3f7);color:var(--ink2,#374151)}
.cp-mcarrow{color:var(--sub);font-size:13px}
.cp-mcsub{display:flex;gap:6px;flex-wrap:wrap}
.cp-uploadzone{border:2px dashed var(--line);border-radius:12px;padding:30px 20px;text-align:center;
  color:var(--sub);font-size:13px;cursor:pointer;transition:.15s;background:var(--card);line-height:1.7}
.cp-uploadzone:hover{border-color:var(--brand);color:var(--brand);background:var(--brand2,#eef3ff)}
.cp-uploadzone b{display:block;font-size:15px;color:var(--ink);margin-bottom:5px}
.cp-fileico{width:26px;height:26px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;color:#fff;flex-shrone}
.cp-fileico.xlsx{background:#1d6f42}
.cp-fileico.doc{background:#2b5bd7}
.cp-fileico.img{background:#b54708}
.cp-fileico.pdf{background:#d92d20}
.cp-fileico.other{background:#667085}
.cp-fileclip{font-size:11.5px;background:var(--graybg,#f1f3f7);color:var(--ink2,#374151);border:none;
  border-radius:6px;padding:2px 8px;cursor:pointer;font-family:inherit}
.cp-fileclip:hover{background:var(--brand2,#eef3ff);color:var(--brand)}
table.cp-filetbl{min-width:760px}

/* ---------- 决策参谋 ---------- */
.cp-chatwrap{display:flex;flex-direction:column;height:calc(100vh - 220px);min-height:460px;padding:0;overflow:hidden}
.cp-chathead{display:flex;align-items:center;gap:9px;padding:13px 16px;border-bottom:1px solid var(--line);font-size:13px;color:var(--sub);flex:none}
.cp-chathead b{color:var(--ink)}
.cp-chatbody{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}
.cp-msg{display:flex;gap:9px;align-items:flex-start}
.cp-msg.user{flex-direction:row-reverse}
.cp-msgbubble{background:var(--graybg,#f1f3f7);border-radius:10px;padding:9px 13px;font-size:13px;
  color:var(--ink);max-width:76%;line-height:1.65}
.cp-msg.user .cp-msgbubble{background:var(--brand);color:#fff}
.cp-msg .blk{margin-bottom:5px}
.cp-msg .blk:last-child{margin-bottom:0}
.cp-chatchips{display:flex;gap:7px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--line);flex:none}
.cp-chatchips button{font-size:12px;border:1px solid var(--line);background:var(--card);color:var(--ink2,#374151);
  border-radius:99px;padding:5px 12px;cursor:pointer;font-family:inherit}
.cp-chatchips button:hover{border-color:var(--brand);color:var(--brand)}
.cp-chatinput{display:flex;gap:9px;padding:12px 16px;border-top:1px solid var(--line);flex:none}
.cp-chatinput input{flex:1;height:38px;border:1px solid var(--line);border-radius:9px;padding:0 13px;
  font-size:13px;background:var(--input-bg,#fff);color:var(--ink);outline:none;font-family:inherit}
.cp-chatinput input:focus{border-color:var(--brand)}
.cp-typing{display:inline-flex;gap:4px;padding:3px 0}
.cp-typing i{width:6px;height:6px;border-radius:50%;background:var(--sub);animation:cpBlink 1.2s infinite}
.cp-typing i:nth-child(2){animation-delay:.2s}
.cp-typing i:nth-child(3){animation-delay:.4s}
@keyframes cpBlink{0%,60%,100%{opacity:.25}30%{opacity:1}}

/* ---------- 弹窗 ---------- */
.cp-modalmask{position:fixed;inset:0;background:var(--overlay-bg,rgba(20,28,48,.45));z-index:200;
  display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;overflow-y:auto}
.cp-modal{background:var(--card);border-radius:14px;width:520px;max-width:100%;box-shadow:0 20px 60px rgba(0,0,0,.22);animation:cpFade .2s ease}
.cp-modal.wide{width:760px}
.cp-modalhead{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}
.cp-modalhead b{font-size:15px;color:var(--ink);flex:1}
.cp-modalclose{border:none;background:none;font-size:16px;color:var(--sub);cursor:pointer;padding:2px 6px;border-radius:6px}
.cp-modalclose:hover{background:var(--graybg,#f1f3f7)}
.cp-modalbody{padding:18px}
.cp-modalfoot{display:flex;justify-content:flex-end;gap:9px;padding:13px 18px;border-top:1px solid var(--line)}
.cp-frmrow{margin-bottom:13px}
.cp-frmrow label{display:block;font-size:12.5px;color:var(--sub);margin-bottom:5px}
.cp-frmrow label i{color:var(--red,#dc2626);font-style:normal}
.cp-frmrow input,.cp-frmrow select,.cp-frmrow textarea{width:100%;border:1px solid var(--line);border-radius:8px;
  padding:8px 11px;font-size:13px;background:var(--input-bg,#fff);color:var(--ink);outline:none;font-family:inherit}
.cp-frmrow input:focus,.cp-frmrow select:focus,.cp-frmrow textarea:focus{border-color:var(--brand)}
.cp-frmrow textarea{min-height:74px;resize:vertical}
.cp-frm2col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:640px){.cp-frm2col{grid-template-columns:1fr}}
.cp-frmhint{font-size:12px;color:var(--sub);background:var(--graybg,#f1f3f7);border-radius:8px;padding:8px 11px;line-height:1.6}
.cp-plitem{font-size:12.5px;color:var(--ink2,#374151);padding:8px 0;border-bottom:1px dashed var(--line);line-height:1.6}
.cp-plitem:last-child{border-bottom:none}
.cp-plmeta{font-size:11px;color:var(--sub);margin-bottom:2px}
.cp-progresslog{max-height:280px;overflow-y:auto;border:1px solid var(--line);border-radius:9px;padding:10px 12px}
.cp-toolbar{display:flex;align-items:center;gap:9px;margin-bottom:12px;flex-wrap:wrap}
.cp-filterbar{display:flex;gap:8px;flex-wrap:wrap}
.cp-filterbar select,.cp-filterbar input{height:32px;border:1px solid var(--line);border-radius:8px;padding:0 9px;
  font-size:12.5px;background:var(--input-bg,#fff);color:var(--ink);outline:none;font-family:inherit}
.cp-filterbar input{width:180px}

/* ---------- ERP 风格下的驾驶舱容器（无侧边栏时全宽） ---------- */
body:not([data-shell="cockpit"]) .cp-chatwrap{height:calc(100vh - 260px)}

/* ---------- 每日清单：时段分组 ---------- */
.cp-checklist li.cp-clgroup{display:flex;align-items:center;gap:9px;padding:11px 6px 5px;
  border-top:1px solid var(--line);margin-top:6px;cursor:default}
.cp-checklist li.cp-clgroup:first-child{border-top:none;margin-top:0}
.cp-checklist li.cp-clgroup:hover{background:none}
.cp-checklist li.cp-clgroup b{font-size:12.5px;color:var(--brand);flex:1}
.cp-cltip{display:inline-block;font-style:normal;font-size:10.5px;background:var(--amberbg,#fef3e2);
  color:var(--amber,#d97706);border:1px solid var(--note-line,#ffe2a8);border-radius:5px;
  padding:0 6px;margin-right:6px;font-weight:600;vertical-align:1px}

/* ---------- 驾驶舱风格：所有浮层避开左侧 206px 侧边栏 ----------
   问题：.overlay/#appModal 等按整视口居中/铺满，左侧被侧边栏（z-index 更高）盖住。
   方案：全屏遮罩 left:206px（即侧边栏宽度）；视口居中元素改为「内容区居中」(+103px)。
   注意：只精确匹配 fixed 遮罩与 #appModal 弹窗，不碰 absolute 定位的子元素。 */
body[data-shell="cockpit"] .overlay{left:206px}
body[data-shell="cockpit"] .cp-modalmask{left:206px}
body[data-shell="cockpit"] [style*="inset:0"]{left:206px !important}
body[data-shell="cockpit"] #appModal > div[style*="left:50%"]{left:calc(50% + 103px) !important}
body[data-shell="cockpit"] #toast{left:calc(50% + 103px) !important}

/* ---------- 利润核算：新增/编辑表单横排布局 ----------
   原：字段竖排挤在左侧，右侧大片空白。
   现：顶部一行（编号+提交人+图片+拖拽框+预览），下方三个分组并排铺满全宽。 */
.pf-top{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-start}
.pf-imgrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pf-drop{width:104px;height:64px;border:2px dashed var(--line);border-radius:10px;display:flex;
  align-items:center;justify-content:center;text-align:center;font-size:11px;color:var(--sub);
  cursor:pointer;transition:.15s;flex-shrink:0;line-height:1.5;background:var(--soft-bg,#f8fafc)}
.pf-drop.on{border-color:var(--brand);color:var(--brand);background:var(--brand-soft,#eff4ff)}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;margin-top:12px}
.pf-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px}
.pf-fields .field input{width:100%!important}

/* ---------- 编号匹配：筛选框 / 添加框 明显分区 ---------- */
.map-tools{display:flex;gap:14px;flex-wrap:wrap;align-items:stretch;margin:10px 0}
.map-box{border:1.5px solid var(--line);border-radius:12px;padding:10px 14px;background:var(--card)}
.map-box.map-add{border-color:var(--brand);background:var(--brand-soft,#eff4ff);margin-left:auto}
.map-box-h{font-weight:700;font-size:12px;color:var(--ink3);margin-bottom:8px}
.map-filter-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.map-filter-row input{padding:7px 10px;border:1px solid var(--line);border-radius:8px;
  font-size:13px;background:var(--input-bg,#fff);color:var(--ink);outline:none;font-family:inherit}
.map-filter-row input:focus{border-color:var(--brand)}
.map-filter-row input[id="mapQ"]{width:280px}
.map-sel{height:34px;border:1px solid var(--line);border-radius:8px;padding:0 8px;font-size:12.5px;
  background:var(--input-bg,#fff);color:var(--ink);outline:none;font-family:inherit;max-width:170px}
.map-sep{width:1px;background:var(--line);align-self:stretch;margin:0 4px}

/* ---------- 利润核算：listing 编号多选行 + 列表徽标 ---------- */
.pf-listrow{margin-top:12px}
.pf-listrow-in{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pf-chips{display:flex;gap:4px;flex-wrap:wrap;align-items:center;min-height:30px;flex:1;min-width:220px;
  border:1px solid var(--line);border-radius:8px;padding:3px 8px;background:var(--soft-bg,#f8fafc)}
.pf-listrow-in input[id="pfListIn"]{width:190px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;
  font-size:13px;background:var(--input-bg,#fff);color:var(--ink);outline:none;font-family:inherit}
.pf-listdetails{position:relative}
.pf-listdetails summary{list-style:none;cursor:pointer;user-select:none}
.pf-listdetails summary::-webkit-details-marker{display:none}
.pf-listpop{position:absolute;right:0;top:110%;z-index:80;width:300px;max-height:300px;overflow:auto;
  background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px;
  box-shadow:0 12px 34px rgba(0,0,0,.18)}
.pf-listpop input[type=text],.pf-listpop > input{width:100%;margin-bottom:8px;padding:6px 9px;
  border:1px solid var(--line);border-radius:7px;font-size:12.5px;background:var(--input-bg,#fff);color:var(--ink);outline:none}
.pf-listpop label{display:flex;align-items:center;gap:7px;font-size:12.5px;padding:4px 3px;
  border-radius:6px;cursor:pointer;color:var(--ink)}
.pf-listpop label:hover{background:var(--graybg,#f1f3f7)}

/* ---------- 利润核算：listing 授权状态条 ---------- */
.pf-auth{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:8px 0;padding:9px 14px;
  border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:10px;
  background:var(--soft-bg,#f8fafc);font-size:12.5px;color:var(--ink2,#374151)}
.pf-auth b{color:var(--ink)}
.pf-strict{display:inline-flex;align-items:center;gap:6px;cursor:pointer;
  margin-left:auto;font-size:12.5px;color:var(--ink2,#374151)}
.pf-strict input{width:15px;height:15px;accent-color:var(--brand);cursor:pointer}

/* ============================================================
   看板统一退出按钮（右上角醒目，红色）
   ============================================================ */
.panel-exit{display:inline-flex;align-items:center;gap:6px;background:#ef4444;color:#fff;border:none;
  border-radius:9px;padding:7px 14px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;
  box-shadow:0 2px 8px rgba(239,68,68,.35);transition:.15s;white-space:nowrap;line-height:1.2}
.panel-exit:hover{background:#dc2626;transform:translateY(-1px)}
.panel-exit:active{transform:translateY(0)}
.ov-exitbar{display:flex;justify-content:flex-end;margin-bottom:8px}
.panel header .panel-exit{background:#ef4444;color:#fff}
.panel header .x{display:none}

/* ============================================================
   看板表头冻结修复
   .panel / .grid 的 overflow:hidden 会让 position:sticky 失效
   （sticky 会以「最近的滚动容器」为基准，而 overflow:hidden 也算滚动容器）
   ============================================================ */
.panel{overflow:visible}
.panel>header:first-child{border-radius:14px 14px 0 0}
.panel>header{position:sticky;top:0;z-index:7}
#overlay .panel>header,#editOverlay .panel>header{box-shadow:0 2px 10px rgba(15,23,42,.12)}
table.grid.daily-grid{overflow:visible}

/* ============================================================
   ASIN360 每日明细表：冻结表头 / 冻结首列 / 顶部汇总
   ============================================================ */
.daily-wrap{max-height:calc(100vh - 380px);min-height:260px;position:relative}
.daily-grid thead th{position:sticky;top:0;z-index:5;background:var(--thead-bg);white-space:nowrap}
.daily-grid thead th:first-child{left:0;z-index:8}
.daily-grid thead th.sortable{cursor:pointer;user-select:none}
.daily-grid thead th.sortable:hover{background:var(--hover-soft)}
.daily-grid thead th.sortable.on{color:var(--brand)}
.daily-grid thead th .arr{color:var(--brand);font-size:9px;margin-left:4px}
.daily-grid tbody td.daily-oplog{position:sticky;left:0;z-index:2;background:var(--card);
  min-width:162px;box-shadow:1px 0 0 var(--line)}
.daily-grid tbody tr:hover td.daily-oplog{background:var(--row-hover)}
.daily-grid tbody td{white-space:nowrap}
.daily-grid .na{color:var(--sub);font-weight:400}
.daily-sum{margin:10px 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;
  background:var(--card);box-shadow:0 1px 3px rgba(20,30,60,.05)}
.daily-sum-h{font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:8px;display:flex;
  align-items:center;gap:10px;flex-wrap:wrap}
.daily-sum-h .hint{font-weight:400}
.daily-sum .metrics{margin:0;grid-template-columns:repeat(auto-fill,minmax(118px,1fr))}
.daily-sum .metric{background:var(--bg-soft,var(--soft-bg,#f6f8fb))}
.daily-sum .metric .v{font-size:13.5px}

/* 驾驶舱风格下顶栏是 sticky(56px, z-index 60 > overlay 的 50)，
   看板若不避开会被顶栏盖住 —— 让看板从顶栏下方开始，粘住的头部才完整可见 */
body[data-shell="cockpit"] .overlay{left:206px;top:56px}
body[data-shell="cockpit"] #overlay .panel{margin-top:12px}

/* ---------- 利润核算：批量匹配 listing 编号面板 ---------- */
.pf-batch{margin:10px 0}
.pf-batch-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.pf-batch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:12px;margin-top:10px}
.pf-box{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--card)}
.pf-box-h{font-size:12.5px;font-weight:700;margin-bottom:8px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pf-batch-btns{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.pf-picks{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px;max-height:150px;overflow:auto}
.pf-pick{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;padding:2px 8px;
  border:1px solid var(--line);border-radius:99px;cursor:pointer;background:var(--soft-bg,#f8fafc);user-select:none}
.pf-pick i{font-style:normal;color:var(--sub);font-size:10.5px}
.pf-pick.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.pf-pick.on i{color:rgba(255,255,255,.82)}

/* ---------- 管理后台：③菜单 / ④权限 / 角色顺序 新版式 ---------- */
.menu-sec{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--card);margin-top:10px}
.menu-sec-h{font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:8px}
.menu-sec .grid{font-size:12.5px}
.menu-sec .grid th,.menu-sec .grid td{padding:6px 8px;vertical-align:middle}
tr.row-del{opacity:.55;background:var(--soft-bg,#f8fafc)}
.perm-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0;
  padding:10px 14px;border:1px solid var(--line);border-left:3px solid var(--brand);
  border-radius:10px;background:var(--soft-bg,#f8fafc);font-size:12.5px;color:var(--ink2,#374151)}
.role-orderbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:8px 0;padding:9px 12px;
  border:1px dashed var(--line);border-radius:10px;background:var(--soft-bg,#f8fafc);font-size:12.5px;color:var(--ink2,#374151)}
.role-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border:1px solid var(--line);
  border-radius:99px;background:var(--card);cursor:grab;user-select:none;font-weight:600;
  box-shadow:0 1px 2px rgba(20,30,60,.06)}
.role-chip:active{cursor:grabbing}
.role-chip i{font-style:normal;font-weight:400;color:var(--sub);font-size:10.5px}
.role-chip a{color:#c33;font-weight:700;text-decoration:none;padding:0 2px}
.role-chip:hover{border-color:var(--brand)}


/* ============================================================
   组织架构 / 计划管理 / 交付对象 / 任务中心冻结表头
   ============================================================ */
/* 组织架构树 */
.cp-orgtree{margin:12px 0}
.cp-orgnode{display:flex;align-items:center;gap:8px;padding:5px 10px;border:1px solid var(--line);
  border-radius:9px;background:var(--card);margin:4px 0;font-size:12.5px;box-shadow:0 1px 2px rgba(20,30,60,.05)}
.cp-orgnode b{font-size:12.5px}

/* 计划匹配徽标（全站） */
.cp-planbadge{display:inline-block;font-size:10.5px;font-weight:700;color:var(--brand);
  background:var(--brand-soft,#eff4ff);border:1px solid var(--brand-line,#c7d9ff);border-radius:6px;
  padding:0 6px;margin-left:5px;vertical-align:1px;cursor:default}
.cp-mchip{display:inline-block;font-size:10.5px;padding:1px 7px;margin:2px 3px 2px 0;border-radius:99px;
  background:var(--graybg,#f1f3f7);border:1px solid var(--line);color:var(--ink2,#374151)}
.cp-mchip.owner{background:#eef6ff;border-color:#cfe4ff;color:#1d4ed8}
.cp-mchip.shop{background:#f0fdf4;border-color:#c7f0d5;color:#15803d}
.cp-mchip.none{color:var(--sub);font-style:italic}
.cp-planmatch{border:1px dashed var(--line);border-radius:12px;padding:10px 12px;margin:8px 0;background:var(--soft-bg,#f8fafc)}
.cp-planmatch-h{font-size:12.5px;font-weight:700;margin-bottom:6px;color:var(--ink)}

/* 交付对象 */
.cp-dt{display:inline-block;font-size:11.5px;padding:1px 8px;border-radius:99px;font-weight:600;
  background:#eef6ff;border:1px solid #cfe4ff;color:#1d4ed8;white-space:nowrap}
.cp-dt.me{background:#fff7ed;border-color:#fed7aa;color:#c2410c}
.cp-dthint{font-size:11px;color:var(--sub)}
.cp-pendbar{margin:4px 0 10px;padding:9px 13px;border:1px solid #fde68a;border-left:3px solid #f59e0b;
  border-radius:10px;background:#fffbeb;font-size:12.5px;color:#92400e;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.cp-pendbar .cp-btn.xs{background:#fff}

/* 任务中心：筛选工具栏 + 表头冻结置顶 */
.cp-tasktbl thead th{position:sticky;top:0;z-index:4;background:var(--thead-bg,var(--soft-bg,#f6f8fb));
  box-shadow:0 1px 0 var(--line)}
.cp-tblwrap{max-height:calc(100vh - 300px);overflow:auto}
.cp-plantbl{min-width:820px}
.cp-dim{color:var(--sub);font-size:11.5px}

/* 任务中心：筛选工具栏随页面滚动时冻结置顶（需求3）
   驾驶舱风格下让出 56px 顶栏，避免被 z-index:60 的顶栏盖住 */
.cp-taskcard .cp-toolbar{position:sticky;top:0;z-index:6;background:var(--card);
  padding:8px 0 10px;border-bottom:1px solid var(--line);margin-bottom:0}
.cp-taskcard .cp-pendbar{position:sticky;top:52px;z-index:6}
body[data-shell="cockpit"] .cp-taskcard .cp-toolbar{top:56px}
body[data-shell="cockpit"] .cp-taskcard .cp-pendbar{top:108px}


/* ============================================================
   销售目标 · 目标跟踪表：工具栏置顶 + 冻结窗格 + 目标进度条 + 列配置
   ============================================================ */
.st-scroll{max-height:calc(100vh - 245px);overflow:auto;position:relative}
.st-scroll>table.grid{overflow:visible}                       /* 表格自身 overflow 会让 sticky 失效 */
.scroll.st-scroll table.grid thead th{position:sticky;top:var(--st-tb-h,46px);z-index:6;
  background:var(--thead-bg,#f6f8fb);box-shadow:0 1px 0 var(--line)}
.scroll.st-scroll .st-toolbar{position:sticky;top:0;z-index:20;background:var(--card);
  margin:0;padding:10px 12px;border-bottom:1px solid var(--line);border-radius:10px 10px 0 0;
  min-height:46px;box-sizing:border-box}
.scroll.st-scroll table.grid thead th.stfix{background:var(--thead-bg,#f6f8fb);
  box-shadow:0 1px 0 var(--line),1px 0 0 var(--line)}
.scroll.st-scroll table.grid tbody td.stfix{background:var(--card);box-shadow:1px 0 0 var(--line)}
.scroll.st-scroll table.grid tbody tr:hover td.stfix{background:var(--row-hover,#f7f9fc)}

/* 目标进度条 */
.st-pg{display:flex;align-items:center;gap:6px;min-width:104px}
.st-pg-t{flex:1;height:8px;min-width:52px;border-radius:99px;background:var(--graybg,#eef1f6);overflow:hidden}
.st-pg-t i{display:block;height:100%;border-radius:99px;background:#94a3b8;transition:width .3s}
.st-pg-t i.ok{background:#16a34a}
.st-pg-t i.mid{background:#f59e0b}
.st-pg-t i.low{background:#ef4444}
.st-pg-v{font-size:11px;font-weight:700;color:var(--ink)}
.st-pg-v.ok{color:#16a34a}.st-pg-v.mid{color:#d97706}.st-pg-v.low{color:#dc2626}
.st-pg-none{color:var(--sub)}
.st-pg-amt{font-size:10px;color:var(--sub);white-space:nowrap;border-left:1px solid var(--line);padding-left:5px}

/* 列配置弹层 */
.st-cfgmask{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:1200;display:flex;
  align-items:center;justify-content:center;padding:20px}
.st-cfg{background:var(--card);border-radius:14px;width:min(980px,96vw);max-height:88vh;
  display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.3);overflow:hidden}
.st-cfg-h{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid var(--line)}
.st-cfg-h b{font-size:14px}
.st-cfg-h .sp{flex:1}
.st-cfg-body{display:grid;grid-template-columns:1.35fr 1fr;gap:16px;padding:14px 18px;overflow:auto}
.st-cfg-sub{font-weight:700;font-size:12.5px;margin-bottom:8px;color:var(--ink)}
.st-cfg-tools{display:flex;gap:7px;flex-wrap:wrap;align-items:center;margin-bottom:8px}
.st-cfg-tools input{flex:1;min-width:130px;padding:7px 9px;border:1px solid var(--line);
  border-radius:8px;font-size:12.5px;background:var(--input-bg,#fff);color:var(--ink);outline:none;font-family:inherit}
.st-cfg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));gap:2px 10px;max-height:48vh;overflow:auto}
.st-cfg-tpls{max-height:44vh;overflow:auto}
.st-tplrow{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--line);
  border-radius:9px;margin-bottom:6px;font-size:12.5px}
.st-tplrow b{flex:0 0 auto}
.st-cfg-f{padding:10px 18px 14px;border-top:1px solid var(--line)}
@media (max-width:900px){.st-cfg-body{grid-template-columns:1fr}}


/* ============================================================
   管理后台 · 权限矩阵（角色为列 × 权限项为行）
   ============================================================ */
#adminView table.mx-perm, #adminView .menu-sec table{min-width:100%;white-space:nowrap}
#adminView .mx-h{text-align:center;font-size:12px;font-weight:700;min-width:74px;
  background:var(--thead-bg,#f6f8fb);position:sticky;top:0;z-index:4}
#adminView td.mx{text-align:center;padding:5px 6px}
#adminView td.mx input[type=checkbox]{width:16px;height:16px;accent-color:var(--brand);cursor:pointer}
#adminView td.mx input[type=checkbox]:disabled{opacity:.35;cursor:not-allowed}
#adminView .role-chip .role-rename{border:1px solid var(--brand);border-radius:6px;padding:1px 6px;
  font-size:12px;font-family:inherit;outline:none;background:var(--input-bg,#fff);color:var(--ink)}
#adminView .role-orderbar{overflow-x:auto}


/* ============================================================
   组织架构示意图（线条框架）
   ============================================================ */
.org-chartbox{border:1px solid var(--line);border-radius:12px;background:var(--card);padding:12px 16px;margin:12px 0}
.org-chart-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.org-chart-h h3{margin:0;font-size:14px}
.org-root{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 12px;border:2px solid var(--brand);
  border-radius:12px;background:var(--brand-soft,#eff4ff);margin-bottom:10px}
.org-root-label{font-weight:800;color:var(--brand);font-size:12.5px}
.org-node{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--line);
  border-radius:9px;background:var(--card);font-size:12.5px;box-shadow:0 1px 2px rgba(20,30,60,.05)}
.org-node.top{border-color:var(--brand);background:var(--brand-soft,#eff4ff)}
.org-av{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;border-radius:50%;
  background:var(--graybg,#eef1f6);font-size:11px;font-weight:700;color:var(--ink3)}
.org-role{font-size:11px;color:var(--sub);border-left:1px solid var(--line);padding-left:6px}
.org-tag{font-size:10.5px;padding:1px 7px;border-radius:99px;border:1px solid var(--line)}
.org-tag.asst{background:#fff7ed;border-color:#fed7aa;color:#c2410c}
.org-tag.sup{background:#eef6ff;border-color:#cfe4ff;color:#1d4ed8}
.org-hint{font-size:11.5px;color:var(--sub)}
.org-depts{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}
.org-dept{border:1px solid var(--line);border-radius:11px;padding:8px 10px;background:var(--soft-bg,#fafbfd)}
.org-dept-h{font-weight:800;font-size:12.5px;color:var(--ink);margin-bottom:6px;display:flex;gap:8px;align-items:center}
.org-tree,.org-tree ul{list-style:none;margin:0;padding-left:16px;border-left:1px dashed var(--line)}
.org-tree{padding-left:0;border-left:none}
.org-li{position:relative;padding:3px 0}
.org-tree ul>.org-li:before{content:"";position:absolute;left:-16px;top:15px;width:13px;height:1px;background:var(--line)}
.org-asstpick{display:flex;gap:4px 12px;flex-wrap:wrap}
.org-mask{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:1300;display:flex;align-items:center;justify-content:center;padding:20px}
.org-dlg{background:var(--card);border-radius:14px;width:min(880px,96vw);max-height:88vh;display:flex;flex-direction:column;
  box-shadow:0 20px 60px rgba(0,0,0,.3);overflow:hidden}
.org-dlg-h{display:flex;align-items:center;gap:10px;padding:13px 18px;border-bottom:1px solid var(--line)}
.org-dlg-b{padding:14px 18px;overflow:auto}
.org-dlg-f{padding:10px 18px 14px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end}

/* ============================================================
   一键同步 / 匹配数据按钮（显眼 + 用法标注）
   ============================================================ */
.sync-wrap{display:inline-flex;align-items:center;gap:9px;flex-wrap:wrap;margin-left:auto}
.btn.sync-btn{background:linear-gradient(120deg,#f97316,#ef4444);color:#fff;border:none;font-weight:800;
  padding:8px 15px;border-radius:10px;box-shadow:0 3px 12px rgba(239,68,68,.35);font-size:13px;white-space:nowrap}
.btn.sync-btn:hover{filter:brightness(1.06);transform:translateY(-1px)}
.btn.sync-btn:disabled{opacity:.75;cursor:progress;transform:none}
.sync-spin{display:inline-block;animation:syncspin 1s linear infinite}
@keyframes syncspin{to{transform:rotate(360deg)}}
.sync-usage{font-size:11.5px;line-height:1.45;color:var(--sub);max-width:330px}

/* 父目录框（驾驶舱侧边栏）：把父目录包含的子目录清晰框出来 */
.cp-navbox{border:1px solid var(--line);border-radius:11px;padding:6px 7px 7px;margin:8px 6px;
  background:var(--soft-bg,rgba(255,255,255,.03))}
.cp-navbox .cp-navgrp{display:flex;align-items:center;gap:7px;padding:4px 6px 6px;margin:0;
  border-bottom:1px dashed var(--line);font-size:11.5px;letter-spacing:.3px;text-transform:none;opacity:.9}
.cp-navbox .cp-navgrp-t{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cp-navbox .cp-navgrp-c{font-size:10px;font-weight:700;opacity:.7;border:1px solid currentColor;
  border-radius:99px;padding:0 6px;line-height:15px}
.cp-navbox .cp-navi{border-radius:8px}
/* 父目录折叠 / 展开（点击标题行切换，按账号记忆） */
.cp-navbox .cp-navgrp{cursor:pointer;user-select:none}
.cp-navbox .cp-navgrp:hover{opacity:1;background:var(--brand-soft,rgba(59,130,246,.08));border-radius:8px}
.cp-navcaret{font-size:10px;opacity:.55;transition:transform .15s;transform-origin:center}
.cp-navbox.folded .cp-navcaret{transform:rotate(-90deg)}
.cp-navbox.folded .cp-navi{display:none}

/* ERP 顶导：父目录（含下拉）整体加框 */
#nav .navgrp{border:1px solid var(--line);border-radius:10px;padding:1px 5px;background:var(--card)}
#nav .navgrp.on{border-color:var(--brand)}

/* ===== 每日清单 2.0：左右两栏（左「每日必做」/ 右「每周 + 每月必做」）===== */
.cp-checkgrid{display:grid;grid-template-columns:1.32fr 1fr;gap:14px;align-items:start}
.cp-checkcol{display:flex;flex-direction:column;gap:14px}
@media(max-width:1240px){.cp-checkgrid{grid-template-columns:1fr}}
table.cp-checktbl{min-width:600px}
table.cp-checktbl td{padding:8px 10px;font-size:12.5px}
.cp-min{color:var(--sub);white-space:nowrap}
tr.cp-rowdone td{background:var(--greenbg,#eefaf1)}
.cp-hishead{font-size:13px;color:var(--sub);margin-bottom:10px;line-height:1.7}
.cp-hisgrid{display:flex;flex-wrap:wrap;gap:6px}
.cp-hiscell{display:inline-flex;align-items:center;justify-content:center;min-width:46px;height:30px;padding:0 6px;border-radius:7px;background:var(--graybg,#f1f3f7);color:var(--sub);font-size:11.5px;border:1px solid var(--line)}
.cp-hiscell.on{background:var(--greenbg,#e6f7ec);color:var(--green,#1a9e5c);border-color:var(--green,#1a9e5c);font-weight:700}
.cp-hislegend{display:flex;gap:14px;margin-top:12px;font-size:12px;color:var(--sub);align-items:center}
.cp-hisdot{display:inline-block;width:11px;height:11px;border-radius:3px;background:var(--graybg,#f1f3f7);border:1px solid var(--line);margin-right:5px;vertical-align:-1px}
.cp-hisdot.on{background:var(--greenbg,#e6f7ec);border-color:var(--green,#1a9e5c)}
/* 必做清单操作列：打卡 / 编辑 / 删除 */
.cp-ckops{white-space:nowrap}
.cp-ckops .cp-btn{margin-right:3px;padding:3px 7px}
.cp-ckops .cp-btn:last-child{margin-right:0}

/* ============================================================
   手机端响应式适配（v2026-10-16）
   <820px：侧边栏 → 汉堡抽屉；两栏网格 → 单列；表格 → 容器内横滑；
   弹层铺满；按钮加大触控面积。桌面端完全不受影响。
   ============================================================ */
.cp-burger{display:none;flex:none;width:38px;height:38px;border:1px solid var(--line);
  background:var(--card);border-radius:9px;cursor:pointer;color:var(--ink2,#374151);
  font-size:17px;line-height:1;align-items:center;justify-content:center;padding:0}
.cp-burger:active{background:var(--graybg,#f1f3f7)}
.cp-sideback{display:none}

@media (max-width: 820px){
  /* —— 顶栏：露出汉堡，隐掉长说明与版本徽标 —— */
  .cp-burger{display:inline-flex}
  .cp-topbar{height:52px;padding:0 10px;gap:8px}
  .cp-topmid{display:none}
  .cp-ver{display:none}
  .cp-logo{font-size:15px}
  .cp-userbox{font-size:12px;gap:6px}
  .cp-avatar{width:27px;height:27px;font-size:12px}

  /* —— 主体：取消左右分栏，内容铺满 —— */
  body[data-shell="cockpit"] .cp-body{display:block}
  body[data-shell="cockpit"] .wrap{padding:12px 12px 72px}

  /* —— 侧边栏 → 左侧抽屉 —— */
  body[data-shell="cockpit"] .cp-sidebar{
    position:fixed;left:0;top:52px;bottom:0;height:auto;width:min(78vw,300px);
    transform:translateX(-108%);transition:transform .26s cubic-bezier(.4,0,.2,1);
    z-index:90;box-shadow:0 0 44px rgba(0,0,0,.35);padding:14px 10px 24px}
  body.cp-nav-open .cp-sidebar{transform:translateX(0)}
  body.cp-nav-open .cp-sideback{display:block}
  .cp-sideback{position:fixed;left:0;right:0;top:52px;bottom:0;
    background:rgba(15,20,35,.5);z-index:80}

  /* —— 所有多列网格 → 单列 —— */
  .cp-briefgrid,.cp-aggbody,.cp-checkgrid,.cp-teamgrid,.cp-blockgrid,.cp-treebranch,
  .cp-tplgrid,.pf-grid,.pf-batch-grid,.st-cfg-body,.frow,.chart-row,.okr-board,
  .org-depts,.cp-frm2col,#editForm{grid-template-columns:1fr !important}
  .cp-tcstats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cp-statrow,.metrics,.pf-fields{grid-template-columns:repeat(auto-fit,minmax(118px,1fr)) !important}
  .st-cfg-grid{grid-template-columns:repeat(auto-fill,minmax(138px,1fr))}
  .daily-sum .metrics{grid-template-columns:repeat(auto-fill,minmax(104px,1fr)) !important}

  /* —— 图表 / 卡片 —— */
  .chart-box{min-width:0}
  .chart-box,.cp-card{border-radius:10px}
  .cp-card{padding:12px}
  .cp-tabhead h2{font-size:17px}
  .cp-tabhead{margin-bottom:12px}

  /* —— 表格：容器内横滑，不再撑破页面 —— */
  .scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  table.cp-checktbl{min-width:520px}
  .grid{font-size:12px}

  /* —— 弹层：铺满、圆角收小 —— */
  .panel,.panel.small,#overlay .panel,#editOverlay .panel{
    max-width:calc(100% - 16px) !important;margin:8px auto;border-radius:12px}
  .panel .body,.panel header{padding-left:14px;padding-right:14px}
  #themePop{width:calc(100vw - 20px);right:10px;top:58px;padding:12px}
  .tp-grid{grid-template-columns:repeat(3,1fr)}
  .lxcal-pop{left:50% !important;right:auto !important;transform:translateX(-50%);width:min(94vw,360px);flex-direction:column;max-height:72vh;overflow:auto}
  .lxcal-rail{width:100%;display:flex;flex-wrap:wrap;border-right:none;border-bottom:1px solid var(--line);padding:4px}
  .lxcal-p{padding:6px 10px;font-size:12.5px}
  .lxcal-months{flex-direction:column;gap:12px}
  .lxcal-g,.lxcal-wk{grid-template-columns:repeat(7,minmax(30px,1fr))}
  .lxcal-tip{max-width:100%}

  /* —— 旧 ERP 外壳顶导：可横向滑动 —— */
  #shellErp header{padding:12px 14px}
  #shellErp nav{overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap}
  #shellErp nav button,#nav .navpar{white-space:nowrap}
  #userBox{position:static;margin-bottom:8px}

  /* —— 触摸友好 —— */
  .btn{padding:9px 15px}
  .btn.sm{padding:7px 12px}
  .chip{padding:4px 11px}
  #fbFab{right:12px;bottom:12px;padding:9px 14px;font-size:12.5px}
  #toast{width:calc(100vw - 40px);text-align:center;bottom:20px}
  .pimg:hover{transform:scale(2);z-index:999}
}

@media (max-width: 480px){
  body[data-shell="cockpit"] .wrap{padding:10px 10px 76px}
  .cp-topbar{height:50px}
  body[data-shell="cockpit"] .cp-sidebar{top:50px}
  .cp-sideback{top:50px}
  .tp-grid{grid-template-columns:repeat(2,1fr)}
  .metrics,.cp-statrow{grid-template-columns:repeat(auto-fit,minmax(104px,1fr)) !important}
  .cp-tcstats{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ============ 任务勾选 / 批量操作 / 分发（2026-10-19 第33轮） ============ */
.cp-ckh{width:34px;text-align:center;padding-left:8px!important;padding-right:0!important}
.cp-ckh input{width:15px;height:15px;cursor:pointer;accent-color:var(--brand)}
.cp-batchbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 10px;padding:9px 12px;
  border:1px solid var(--brand);border-radius:10px;background:var(--brand-soft)}
.cp-batchbar>b{font-size:12px;color:var(--brand);margin-right:4px}
.cp-batchbar .cp-hint{margin-left:auto}
.cp-dlggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:6px;padding:8px 10px;
  border:1px solid var(--line);border-radius:8px;max-height:210px;overflow:auto;background:var(--bg)}
.cp-dlgchk{display:flex;align-items:center;gap:6px;font-size:12px;padding:5px 7px;border-radius:6px;
  cursor:pointer;background:var(--card);border:1px solid var(--line)}
.cp-dlgchk:hover{border-color:var(--brand)}
.cp-dlgchk input{width:14px;height:14px;cursor:pointer;accent-color:var(--brand)}
.cp-dlgchk.cp-dis{opacity:.45;cursor:not-allowed;background:var(--bg)}
.cp-normal{font-size:13px;padding:7px 0;color:var(--ink);font-weight:600}

/* ============ 起止时间 + 日历浮层（2026-10-19 第35轮） ============ */
.cp-drwrap{display:flex;align-items:center;gap:6px}
.cp-drinput{flex:1;min-width:0;border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-size:13px;
  background:var(--card);color:var(--ink);cursor:pointer}
.cp-drinput:hover{border-color:var(--brand)}
.cp-drsep{color:var(--sub);font-size:12px}
.cp-drp{position:fixed;z-index:12000;display:none;width:296px;background:var(--card);border:1px solid var(--line);
  border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.18);padding:10px 10px 8px;user-select:none}
.cp-drphead{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 8px}
.cp-drphead b{font-size:13px}
.cp-drphead button{border:1px solid var(--line);background:var(--card);border-radius:6px;width:24px;height:24px;
  line-height:1;cursor:pointer;color:var(--ink);font-size:13px}
.cp-drphead button:hover{border-color:var(--brand);color:var(--brand)}
.cp-drpwk,.cp-drpgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.cp-drpwk i{font-style:normal;font-size:11px;color:var(--sub);text-align:center;padding:3px 0}
.cp-drpday{text-align:center;font-size:12.5px;padding:6px 0;border-radius:6px;cursor:pointer;color:var(--ink)}
.cp-drpday:hover{background:var(--brand-soft)}
.cp-drpday.is-today{color:var(--brand);font-weight:700}
.cp-drpday.in-range{background:var(--brand-soft);border-radius:0}
.cp-drpday.is-start,.cp-drpday.is-end{background:var(--brand);color:#fff;font-weight:700}
.cp-drpday.is-start{border-radius:6px 0 0 6px}
.cp-drpday.is-end{border-radius:0 6px 6px 0}
.cp-drpday.is-start.is-end{border-radius:6px}
.cp-drpfoot{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.cp-drptip{font-size:11px;color:var(--sub);flex:1;line-height:1.4}
.cp-drptip.ok{color:var(--brand);font-weight:600}
.cp-drptip b{color:var(--ink)}

/* ============ 表头列宽 / 列顺序拖拽 ============ */
.cp-tasktbl thead th{position:relative}
.cp-tasktbl thead th.cp-coldrag{opacity:.45;background:var(--brand-soft)}
.cp-colgrip{position:absolute;top:0;right:0;width:7px;height:100%;cursor:col-resize;z-index:2}
.cp-colgrip::after{content:'';position:absolute;top:18%;left:3px;width:1px;height:64%;background:var(--line)}
.cp-colgrip:hover::after{background:var(--brand);width:2px;left:2.5px}
.cp-colresize{cursor:col-resize!important;user-select:none}

/* ============ 姓名显示 / 拖动排序（2026-10-19 第36轮） ============ */
.cp-mini{border:1px solid var(--line);background:var(--card);border-radius:6px;font-size:11px;line-height:1;
  padding:3px 6px;cursor:pointer;color:var(--sub);margin-left:4px;font-weight:400}
.cp-mini:hover{border-color:var(--brand);color:var(--brand)}
.cp-nolist{max-height:330px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:6px;background:var(--bg)}
.cp-noitem{display:flex;align-items:center;gap:8px;padding:8px 10px;margin-bottom:4px;background:var(--card);
  border:1px solid var(--line);border-radius:8px;cursor:grab;font-size:13px}
.cp-noitem:last-child{margin-bottom:0}
.cp-noitem:active{cursor:grabbing}
.cp-noitem.cp-nodrag{opacity:.4;border-color:var(--brand);background:var(--brand-soft)}
.cp-nogrip{color:var(--gray);letter-spacing:-2px;font-size:15px;line-height:1}
.cp-noitem b{flex:1;font-weight:600}
.cp-fq{font-style:normal;font-size:10px;background:var(--brand);color:#fff;border-radius:8px;
  padding:1px 5px;margin-left:auto}

/* ============ 任务分级 / 关联项目 / 通知中心（2026-10-19 第39轮） ============ */
.cp-lv{display:inline-block;font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:5px;color:#fff;margin-right:4px;vertical-align:1px;letter-spacing:.3px}
.cp-lv-p0{background:#f5222d}
.cp-lv-p1{background:#fa8c16}
.cp-lv-p2{background:#fadb14;color:#614700}
.cp-lv-p3{background:#1677ff}
.cp-lv-p4{background:#8c8c8c}
.cp-lvrow{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.cp-lvlbl{font-size:11.5px;color:var(--sub)}
.cp-lvrow select{border:1px solid var(--line);border-radius:7px;padding:5px 8px;font-size:12.5px;background:var(--card);color:var(--ink)}
.cp-lvpreview{margin-left:auto;min-width:76px;text-align:right}
.cp-dailyck{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--sub);margin-top:6px;cursor:pointer}
.cp-prjbox{border:1px solid var(--line);border-radius:9px;padding:7px;background:var(--card)}
.cp-prjchips{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px}
.cp-prjchip{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;padding:2px 7px;border-radius:12px;background:var(--brand-soft);color:var(--brand)}
.cp-prjchip.t-model{background:#f3e8ff;color:#7c3aed}
.cp-prjchip.t-shop{background:#e6f4ff;color:#0958d9}
.cp-prjchip a{color:inherit;text-decoration:none;opacity:.6;font-size:11px}
.cp-prjchip a:hover{opacity:1}
.cp-prjhint{font-size:11.5px;color:var(--sub)}
.cp-prjsearch{width:100%;border:1px solid var(--line);border-radius:7px;padding:6px 9px;font-size:12.5px;margin-bottom:6px;background:var(--card);color:var(--ink)}
.cp-prjlist{max-height:180px;overflow:auto;border-top:1px dashed var(--line);padding-top:5px}
.cp-prjitem{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:6px;cursor:pointer;font-size:12px}
.cp-prjitem:hover{background:var(--bg)}
.cp-prjitem.on{background:var(--brand-soft)}
.cp-prjitem b{font-weight:600}
.cp-prjitem span{color:var(--sub);font-size:11px;margin-left:auto}
.cp-prjtag{font-style:normal;font-size:10px;padding:1px 5px;border-radius:4px;background:#f0f0f0;color:var(--sub)}
.cp-prjtag.t-code{background:#e6f4ff;color:#0958d9}
.cp-prjtag.t-model{background:#f3e8ff;color:#7c3aed}
.cp-prjtag.t-shop{background:#e8f5e9;color:#2e7d32}
tr.cp-daily-alert td{background:rgba(245,34,45,.06)}
tr.cp-daily-alert td:first-child{box-shadow:inset 3px 0 0 #f5222d}
.cp-owngrid{max-height:150px}
.cp-notify{position:relative;margin-left:10px}
.cp-bell{position:relative;border:1px solid var(--line);background:var(--card);border-radius:9px;width:36px;height:32px;cursor:pointer;font-size:16px;line-height:1}
.cp-bell:hover{border-color:var(--brand)}
.cp-badges{position:absolute;top:-6px;right:-8px;display:flex;gap:2px}
.cp-nb{font-style:normal;font-size:10.5px;line-height:16px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;color:#fff;text-align:center;font-weight:700}
.cp-nb.task{background:#F5222D}
.cp-nb.notice{background:#1677FF}
.cp-notify-panel{position:absolute;right:0;top:40px;width:360px;max-height:70vh;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(15,23,42,.18);z-index:13000;overflow:hidden}
.cp-np-head{display:flex;align-items:center;gap:4px;padding:8px 10px;border-bottom:1px solid var(--line)}
.cp-np-tab{border:none;background:none;font-size:12px;padding:4px 8px;border-radius:6px;cursor:pointer;color:var(--sub)}
.cp-np-tab.on{background:var(--brand-soft);color:var(--brand);font-weight:600}
.cp-np-list{max-height:44vh;overflow:auto}
.cp-np-empty{padding:24px;text-align:center;color:var(--sub);font-size:12px}
.cp-np-item{display:flex;gap:8px;padding:9px 12px;border-bottom:1px solid var(--line);cursor:pointer}
.cp-np-item:hover{background:var(--bg)}
.cp-np-item.unread{background:rgba(22,119,255,.04)}
.cp-np-dot{width:7px;height:7px;border-radius:50%;margin-top:6px;flex:none}
.cp-np-dot.task{background:#F5222D}
.cp-np-dot.notice{background:#1677FF}
.cp-np-body{flex:1;min-width:0}
.cp-np-title{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:5px}
.cp-np-tag{font-style:normal;font-size:9.5px;padding:0 4px;border-radius:3px;color:#fff;font-weight:500}
.cp-np-tag.task{background:#F5222D}
.cp-np-tag.notice{background:#1677FF}
.cp-np-content{font-size:11.5px;color:var(--sub);margin-top:2px;line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.cp-np-time{font-size:10.5px;color:var(--gray);margin-top:3px}
.cp-np-foot{display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid var(--line)}
.cp-ntoast{position:fixed;top:58px;right:18px;width:320px;display:none;gap:9px;padding:11px 12px;background:var(--card);
  border:1px solid var(--line);border-left:4px solid #1677FF;border-radius:10px;box-shadow:0 10px 28px rgba(15,23,42,.2);z-index:14000;font-size:12px}
.cp-ntoast.show{display:flex;animation:cpNtIn .22s ease-out}
.cp-ntoast.task{border-left-color:#F5222D}
.cp-nt-ico{font-size:16px;line-height:1}
.cp-nt-body{flex:1;min-width:0}
.cp-nt-title{font-weight:700;font-size:12.5px;margin-bottom:2px}
.cp-nt-content{color:var(--sub);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.cp-nt-time{font-size:10.5px;color:var(--gray);margin-top:4px}
.cp-nt-close{border:none;background:none;color:var(--sub);cursor:pointer;font-size:13px;line-height:1}
@keyframes cpNtIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* ============ 第40轮：宽版任务弹窗 / 等级阈值 / 分发框完整展开 ============ */
.cp-frmgrid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:12px 18px;align-items:start}
.cp-frm3col{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 14px}
.cp-lvhint{font-size:11px;color:var(--sub);line-height:1.65;margin-top:5px}
.cp-lvhint b{color:var(--ink);font-weight:600}
/* 任务分发：不锁高度，一次展开全部姓名 */
.cp-owngrid{max-height:none!important;overflow:visible!important;grid-template-columns:repeat(auto-fill,minmax(126px,1fr))}
/* 宽版弹窗 */
.cp-modal.wide{width:min(940px,94vw)}
@media (max-width:820px){
  .cp-frmgrid,.cp-frm3col{grid-template-columns:1fr}
  .cp-modal.wide{width:96vw}
  .cp-owngrid{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}
}

/* ============ 待办任务数字按钮（第41轮） ============ */
.cp-todobtn{position:relative;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);
  background:var(--card);border-radius:9px;height:32px;padding:0 9px;cursor:pointer;font-size:13px;
  color:var(--ink);margin-left:10px;white-space:nowrap}
.cp-todobtn:hover{border-color:var(--brand);color:var(--brand)}
.cp-todobtn:active{transform:translateY(1px)}
.cp-todoico{font-size:15px;line-height:1}
.cp-todobtn .cp-badges{position:absolute;top:-6px;right:-8px}
.cp-todo-dot{position:absolute;top:-2px;left:-2px;width:8px;height:8px;border-radius:50%;
  background:#fa8c16;border:1.5px solid var(--card);box-shadow:0 0 0 1px rgba(250,140,22,.25)}
.cp-todobtn.withtext{padding:0 11px;font-size:12px;height:30px;margin-left:0;margin-right:8px}
.cp-todobar{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:9px 12px;
  border:1px solid var(--brand);border-radius:10px;background:var(--brand-soft);font-size:12px}
.cp-todobar b{color:var(--brand)}
.cp-todobar .cp-hint{margin-left:auto;margin-right:6px}

/* ============ 每日清单筛选栏 + 关键词高亮（第42轮） ============ */
.cp-ckfilter{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px;padding:9px 12px;
  border:1px solid var(--line);border-radius:10px;background:var(--card)}
.cp-cksel{border:1px solid var(--line);border-radius:8px;padding:5px 8px;font-size:12.5px;
  background:var(--card);color:var(--ink);max-width:160px}
.cp-cksel:hover,.cp-ckq:hover{border-color:var(--brand)}
.cp-ckq{border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:12.5px;
  background:var(--card);color:var(--ink);min-width:200px;flex:1;max-width:300px}
.cp-cktotal{font-size:12px;color:var(--sub);margin-left:2px}
.cp-cktotal b{color:var(--brand);font-size:13px}
.cp-ckbiz{margin-left:auto;font-size:11px;color:var(--sub);background:var(--graybg);
  padding:3px 8px;border-radius:10px;white-space:nowrap}
.cp-ckbiz b{color:var(--ink)}
mark.cp-hl{background:#fff3b0;color:inherit;padding:0 1px;border-radius:2px;font-weight:600}
@media (max-width:820px){
  .cp-ckfilter{gap:6px;padding:8px}
  .cp-cksel{max-width:none;flex:1 1 40%}
  .cp-ckq{min-width:0;flex:1 1 100%;max-width:none}
  .cp-ckbiz{margin-left:0;flex:1 1 100%}
}

/* ============ 流程审批纳徽标 / 待审批按钮（第42轮） ============ */
.cp-navbadge{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:#F5222D;color:#fff;
  font-size:10px;line-height:15px;min-width:15px;height:15px;padding:0 4px;border-radius:8px;
  text-align:center;font-weight:700}
.cp-navi{position:relative}
.cp-navi .cp-navbadge{right:10px}

/* 领星实时销量：固定列 + 紧凑模式（第42轮） */
.lx-fixcol{background:var(--card)!important}
.lx-table thead th.lx-fixcol{background:var(--thead-bg,#f1f5f9)!important}
.lx-table tbody tr:hover td.lx-fixcol{background:var(--hover,#f8fafc)!important}
.lx-table th.lx-fixcol::after{content:'';position:absolute;right:0;top:0;width:1px;height:100%;
  background:var(--line);box-shadow:2px 0 5px -2px rgba(15,23,42,.28)}

/* ============================================================
   独立登录页（第42轮）
   ============================================================ */
.lp{position:fixed;inset:0;z-index:9500;display:none;align-items:center;justify-content:center;
  background:linear-gradient(160deg,#0f172a 0%,#1e293b 55%,#0b1220 100%)}
body:not(.authed) .lp{display:flex}
body:not(.authed) .cp-topbar,body:not(.authed) .cp-body,body:not(.authed) .cp-sideback{display:none!important}
.lp-card{width:min(380px,92vw);background:#fff;border-radius:18px;padding:30px 28px 22px;
  box-shadow:0 28px 70px rgba(2,6,23,.5)}
.lp-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.lp-logo{width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,#2563eb,#22d3ee);
  color:#fff;font-weight:800;font-size:20px;display:flex;align-items:center;justify-content:center;flex:none}
.lp-brand b{display:block;font-size:16.5px;color:#0f172a;letter-spacing:.2px}
.lp-brand small{display:block;font-size:11.5px;color:#64748b;margin-top:3px}
.lp-field{margin-bottom:13px}
.lp-field label{display:block;font-size:12px;color:#475569;margin-bottom:5px}
.lp-field input{width:100%;box-sizing:border-box;border:1px solid #dbe3ee;border-radius:10px;
  padding:11px 12px;font-size:14px;background:#f8fafc;color:#0f172a;outline:none;transition:.15s}
.lp-field input:focus{border-color:#2563eb;background:#fff;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.lp-err{min-height:18px;color:#dc2626;font-size:12px;margin:2px 0 8px}
.lp-btn{width:100%;border:none;border-radius:10px;padding:11px;font-size:14.5px;font-weight:600;
  color:#fff;background:linear-gradient(135deg,#2563eb,#1d4ed8);cursor:pointer}
.lp-btn:hover{filter:brightness(1.06)}
.lp-btn:active{transform:translateY(1px)}
.lp-foot{margin-top:14px;text-align:center;font-size:11px;color:#94a3b8}

/* ============================================================
   双主题：A=AI 驾驶舱（默认）· B=运营协作台（经典蓝）
   ============================================================ */
.cl-topnav{display:none}
body[data-shell="erp"] .cl-topnav{display:flex;align-items:center;gap:2px;width:100%;
  padding:4px 0 0;overflow-x:auto;scrollbar-width:none}
.cl-topnav::-webkit-scrollbar{display:none}
.cl-grp{position:relative}
.cl-grp>button{border:none;background:none;color:#dbeafe;font-size:13.5px;font-weight:600;
  padding:8px 13px;border-radius:8px 8px 0 0;cursor:pointer;white-space:nowrap}
.cl-grp>button:hover{background:rgba(255,255,255,.12);color:#fff}
.cl-grp.on>button{background:#fff;color:#1d4ed8}
.cl-menu{display:none;position:absolute;top:100%;left:0;min-width:210px;background:#fff;border-radius:0 10px 10px 10px;
  box-shadow:0 14px 34px rgba(2,6,23,.28);padding:6px;z-index:9000;max-height:70vh;overflow:auto}
.cl-grp.open .cl-menu{display:block}
.cl-menu button{display:block;width:100%;text-align:left;border:none;background:none;
  font-size:13px;color:#1e293b;padding:8px 10px;border-radius:7px;cursor:pointer;white-space:nowrap}
.cl-menu button:hover{background:#eff6ff;color:#1d4ed8}
.cl-menu button.on{background:#dbeafe;color:#1d4ed8;font-weight:600}

/* 经典主题：隐藏侧边栏，改用顶部导航 + 蓝色视觉 */
body[data-shell="erp"]{--brand:#2563eb;--brand-soft:#dbeafe;--bg:#eef2f7;--card:#ffffff;
  --line:#dbe3ee;--ink:#0f172a;--sub:#5b6b82;--graybg:#f1f5f9;--thead-bg:#eff6ff;--hover:#f5f9ff}
body[data-shell="erp"] .cp-sidebar{display:none!important}
body[data-shell="erp"] .cp-topbar{background:linear-gradient(135deg,#1e3a8a,#2563eb);
  flex-wrap:wrap;padding-bottom:0;border-bottom:none;box-shadow:0 2px 10px rgba(30,58,138,.28)}
body[data-shell="erp"] .cp-topbar .cp-logo,body[data-shell="erp"] .cp-topbar .cp-ver,
body[data-shell="erp"] .cp-topbar .cp-topmid{color:#e8f0ff}
body[data-shell="erp"] .cp-topbar .cp-logo b{color:#fff}
body[data-shell="erp"] .cp-userbox{color:#e8f0ff}
body[data-shell="erp"] .cp-userbox .cp-hint{color:#bfdbfe}
body[data-shell="erp"] .cp-bell,body[data-shell="erp"] .cp-todobtn{
  background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.28);color:#fff}
body[data-shell="erp"] .cp-body{padding-top:0}
body[data-shell="erp"] .cp-card{border-radius:10px;border-color:#dbe3ee;box-shadow:0 1px 2px rgba(15,23,42,.05)}
body[data-shell="erp"] .cp-tabhead h2{color:#1e3a8a}
body[data-shell="erp"] .cp-burger{display:none}

/* 主题切换按钮 */
.cp-theme{position:relative;display:inline-block;margin-left:8px}
.cp-theme-btn{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:var(--card);
  border-radius:9px;height:32px;padding:0 10px;font-size:12.5px;color:var(--ink);cursor:pointer}
.cp-theme-btn:hover{border-color:var(--brand);color:var(--brand)}
.cp-theme-pop{display:none;position:absolute;right:0;top:38px;width:230px;background:var(--card);
  border:1px solid var(--line);border-radius:11px;box-shadow:0 14px 34px rgba(15,23,42,.2);
  padding:6px;z-index:9200}
.cp-theme-pop.on{display:block}
.cp-theme-pop button{display:flex;align-items:center;gap:8px;width:100%;border:none;background:none;
  font-size:13px;color:var(--ink);padding:9px 10px;border-radius:8px;cursor:pointer;text-align:left}
.cp-theme-pop button:hover{background:var(--bg)}
.cp-theme-pop button.on{background:var(--brand-soft);color:var(--brand);font-weight:600}
.cp-theme-pop .sep{height:1px;background:var(--line);margin:5px 2px}
.cp-theme-pop small{display:block;font-size:10.5px;color:var(--sub);font-weight:400;margin-top:2px}

/* ============ 手机端：表格不再被压扁 / 不再被 vh 锁死（第43轮） ============ */
@media (max-width: 820px){
  html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
  /* 去掉按 100vh 计算的固定高度：缩放时内容区能跟着变大，而不是被锁死 */
  .cp-tblwrap{max-height:none!important;overflow:auto!important;-webkit-overflow-scrolling:touch}
  /* 任务表 11 列：给足宽度改为横向滑动，避免文字竖排挤压 */
  .cp-tasktbl{min-width:900px}
  .cp-tasktbl thead th,.cp-tasktbl tbody td{white-space:nowrap}
  .cp-checktbl{min-width:560px}
  /* 冻结表头在窄屏配合横向滚动仍可用 */
  .cp-tasktbl thead th{position:sticky;top:0;z-index:5}
}

/* 网格/卡片允许收缩到容器内（否则内部宽表会把整页撑出横向滚动） */
.cp-card,.cp-checkgrid>*,.cp-checkcol,.cp-checkcol>*,.cp-tblwrap{min-width:0}
@media (max-width: 820px){
  .cp-checkgrid,.cp-checkcol{grid-template-columns:minmax(0,1fr)!important}
  .cp-card{max-width:100%}
}

/* 手机端任务表：给「操作」列留够宽度，避免按钮竖排把整行撑高 */
@media (max-width: 820px){
  .cp-tasktbl{min-width:1140px}
  .cp-tasktbl th[data-col="ops"],.cp-tasktbl td[data-col="ops"]{min-width:196px}
  .cp-tasktbl td[data-col="ops"] .cp-btn{margin:0 5px 0 0;white-space:nowrap}
  .cp-tasktbl td[data-col="ops"] .cp-btn:last-child{margin-right:0}
  .cp-tasktbl tbody td{padding-top:8px;padding-bottom:8px;vertical-align:middle}
}

/* 手机端：⚠️ 预警标记放大成可点区域（原来只有 16×17px，手指很难点中） */
@media (max-width: 820px){
  .warn-tip{display:inline-flex;align-items:center;justify-content:center;
    min-width:32px;min-height:32px;font-size:15px;margin:-6px 0 -6px 2px;
    border-radius:8px;background:rgba(220,38,38,.10);vertical-align:middle}
}

/* ============ 手机端宽表：横向滚动 + 滑动提示（第44轮） ============ */
.cp-tscroll-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.cp-tscroll-wrap>table{width:max-content;min-width:100%}
.cp-swipehint{display:flex;align-items:center;gap:6px;margin:6px 0 4px;font-size:11px;color:var(--brand);
  background:var(--brand-soft);border-radius:8px;padding:4px 9px;width:max-content;max-width:100%}
.cp-swipehint::before{content:'⇄';font-size:13px;line-height:1}
/* 滚动条尽量可见（安卓 Chrome 为悬浮条，滚动时出现；桌面窄窗常显） */
.cp-tscroll-wrap::-webkit-scrollbar,.scroll::-webkit-scrollbar,.cp-tblwrap::-webkit-scrollbar{height:8px}
.cp-tscroll-wrap::-webkit-scrollbar-thumb,.scroll::-webkit-scrollbar-thumb,.cp-tblwrap::-webkit-scrollbar-thumb{
  background:rgba(100,116,139,.45);border-radius:4px}
.cp-tscroll-wrap,.scroll,.cp-tblwrap{scrollbar-width:thin}

@media (max-width: 820px){
  /* 手机上只固定表头首行，不再冻结任何列 */
  .lx-fixcol{position:static!important;left:auto!important}
  .daily-grid tbody td.daily-oplog{position:static!important;left:auto!important}
  td[style*="position:sticky"][style*="left:"],th[style*="position:sticky"][style*="left:"]{
    position:static!important;left:auto!important}
  /* 表格不再被外层裁切 */
  .cp-card{overflow:visible}
  .cp-card>.cp-tscroll-wrap,.cp-card .cp-tscroll-wrap{max-width:100%}
}

/* ============ 手机端：领星「列配置」全屏化（第45轮） ============ */
@media (max-width: 820px){
  .lxcfg-box{width:100vw!important;max-width:100vw!important;height:100vh!important;height:100dvh!important;
    max-height:100vh!important;max-height:100dvh!important;top:0!important;left:0!important;
    transform:none!important;border-radius:0!important;box-sizing:border-box;
    padding:10px 12px 0!important;overflow:hidden}
  .lxcfg-box>div:first-child{margin-bottom:6px!important}
  .lxcfg-cols{flex-direction:column!important;gap:8px!important;overflow-y:auto!important;overflow-x:hidden!important}
  .lxcfg-cols>div:first-child{flex:none!important;max-height:none!important;overflow:visible!important}
  /* 分组里的列勾选：两列排布，字号放大便于点 */
  .lxcfg-cols .tgl{font-size:13px!important;padding:7px 2px!important;min-height:34px}
  .lxcfg-cols [style*="grid-template-columns:repeat(auto-fill,minmax(180px"]{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 8px!important}
  /* 已选列表：占满宽度，不再固定 330px */
  .lxcfg-sel{width:100%!important;flex:1 1 auto!important;border-left:none!important;
    border-top:1px solid var(--line)!important;padding-left:0!important;padding-top:8px!important;min-height:180px}
  .lxcfg-sel>div:first-child{font-size:13px}
}


/* ============ 第46轮：手机卡片视图 + 顶栏更多 + 底部导航 ============ */
.cp-burger.cp-more{display:none;width:auto;padding:0 10px;gap:5px;font-size:12.5px}
.cp-mtab{display:none}

/* 手机：任务表 → 卡片 */
@media (max-width: 820px){
  .cp-tasktbl{display:block!important;min-width:0!important;width:100%!important}
  .cp-tasktbl thead{display:none!important}
  .cp-tasktbl tbody{display:block}
  .cp-tasktbl tbody tr{display:flex;flex-wrap:wrap;align-items:center;gap:5px 10px;
    background:var(--card);border:1px solid var(--line);border-left:3px solid transparent;
    border-radius:11px;padding:11px 12px 10px;margin:0 0 9px;position:relative}
  .cp-tasktbl tbody tr.row-overdue{border-left-color:#f5222d;background:#fffafa}
  .cp-tasktbl tbody tr.cp-daily-alert{border-left-color:#fa8c16;background:#fffdf7}
  .cp-tasktbl tbody td{display:block;border:0!important;padding:0!important;
    white-space:normal!important;text-align:left!important;font-size:11.5px;color:var(--sub)}
  .cp-tasktbl td[data-col="task"]{flex:1 0 100%;font-size:13.5px;font-weight:500;color:var(--ink);
    line-height:1.5;padding-right:30px!important;word-break:break-word}
  .cp-tasktbl td[data-col="ck"]{position:absolute;right:9px;top:9px;width:auto}
  .cp-tasktbl td[data-col="ck"] input{width:17px;height:17px}
  .cp-tasktbl td[data-col="owner"],
  .cp-tasktbl td[data-col="due"],
  .cp-tasktbl td[data-col="deliver"],
  .cp-tasktbl td[data-col="stage"]{flex:0 0 auto;display:flex;align-items:center;gap:3px}
  .cp-tasktbl td[data-col="status"]{flex:0 0 auto}
  .cp-tasktbl td[data-col="ops"]{flex:1 0 100%;display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}
  .cp-tasktbl td[data-col="ops"] .cp-btn{padding:5px 10px!important;font-size:11.5px!important;margin:0!important}
  .cp-tasktbl .cp-tid{display:inline-block;margin-right:4px}
  .cp-tblwrap{max-height:none!important;overflow:visible!important}

  /* 手机：每日清单表 → 卡片 */
  .cp-checktbl{display:block!important;min-width:0!important;width:100%!important}
  .cp-checktbl thead{display:none!important}
  .cp-checktbl tbody{display:block}
  .cp-checktbl tbody tr{display:flex;flex-wrap:wrap;align-items:center;gap:5px 10px;
    background:var(--card);border:1px solid var(--line);border-radius:11px;
    padding:10px 12px;margin:0 0 8px}
  .cp-checktbl tbody tr.cp-rowdone{background:var(--graybg)}
  .cp-checktbl tbody td{display:block;border:0!important;padding:0!important;
    white-space:normal!important;text-align:left!important;font-size:11.5px;color:var(--sub)}
  .cp-checktbl tbody td:nth-child(1){flex:1 0 100%;font-size:13.5px;font-weight:500;
    color:var(--ink);line-height:1.5;word-break:break-word}
  .cp-checktbl tbody td:nth-child(2),
  .cp-checktbl tbody td:nth-child(3),
  .cp-checktbl tbody td:nth-child(4),
  .cp-checktbl tbody td:nth-child(5),
  .cp-checktbl tbody td:nth-child(6){flex:0 0 auto}
  .cp-checktbl tbody td:nth-child(7){flex:1 0 100%;display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
  .cp-checktbl tbody td:nth-child(7) .cp-btn{padding:5px 10px!important;font-size:11.5px!important;margin:0!important}

  /* 顶栏「更多」 */
  .cp-burger.cp-more{display:inline-flex;align-items:center;justify-content:center}

  /* 底部导航 */
  .cp-mtab{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:8000;
    background:var(--card);border-top:1px solid var(--line);
    padding:5px 4px calc(4px + env(safe-area-inset-bottom))}
  .cp-mtab button{flex:1;border:0;background:none;display:flex;flex-direction:column;
    align-items:center;gap:2px;font-size:11px;color:var(--sub);padding:3px 0;cursor:pointer;line-height:1.3}
  .cp-mtab button.on{color:var(--brand);font-weight:500}
  .cp-mtab button:active{opacity:.6}
  .cp-body{padding-bottom:66px!important}
  body:not(.authed) .cp-mtab{display:none!important}
  body.cp-nav-open .cp-mtab{display:none}
}

/* 卡片字段设置弹窗 */
.cp-cfglist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px}
.cp-cfgitem{display:flex;align-items:center;gap:7px;font-size:13px;padding:7px 8px;
  border:1px solid var(--line);border-radius:8px;cursor:pointer}
.cp-cfgitem:hover{border-color:var(--brand);background:var(--brand-soft)}
.cp-cfgitem input{width:16px;height:16px}

/* 领星手机卡片 */
.lx-cards{padding:2px 0 8px}
.lx-card{background:var(--card);border:1px solid var(--line);border-radius:11px;
  padding:11px 12px 10px;margin:0 0 9px}
.lx-ck-top{display:flex;align-items:center;gap:8px}
.lx-rk{flex:none;min-width:20px;height:20px;border-radius:6px;background:var(--graybg);
  color:var(--sub);font-size:11px;display:flex;align-items:center;justify-content:center;padding:0 5px}
.lx-rk.r1{background:#fadb14;color:#614700}
.lx-rk.r2{background:#cbd5e1;color:#334155}
.lx-rk.r3{background:#f5c4b3;color:#712b13}
.lx-ck-asin{flex:1;min-width:0;font-size:13.5px;font-weight:500;color:var(--ink);letter-spacing:.2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lx-ck-vol{flex:none;font-size:17px;font-weight:500;color:var(--ink);line-height:1.1}
.lx-ck-sub{display:flex;align-items:center;gap:8px;margin-top:3px;font-size:11.5px;color:var(--sub)}
.lx-ck-shop{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lx-ck-amt{flex:none;color:var(--gray)}
.lx-ck-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:7px;
  font-size:11px;color:var(--sub)}
.lx-ck-meta>span{white-space:nowrap}
.lx-ck-code{background:var(--brand-soft);color:var(--brand);border-radius:5px;padding:1px 5px}
.lx-ck-morebtn{margin-left:auto;color:var(--brand);cursor:pointer}
.lx-ck-more{display:none;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}
.lx-card.on .lx-ck-more{display:block}
.lx-ck-more>div{display:flex;align-items:center;justify-content:space-between;gap:10px;
  font-size:11.5px;padding:3px 0}
.lx-ck-more i{font-style:normal;color:var(--sub);flex:none}
.lx-ck-more b{font-weight:400;color:var(--ink);text-align:right;word-break:break-all}


/* 手机顶栏收窄（第46轮）：加「更多」后原用户信息区会溢出屏幕 */
@media (max-width: 820px){
  .cp-topbar{overflow:hidden;gap:6px}
  .cp-logo b{display:none}
  .cp-userbox{max-width:72px;overflow:hidden;gap:4px}
  .cp-userbox .cp-btn{display:none}
  .cp-userbox .cp-hint{display:none}
  .cp-userbox b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
  .cp-burger.cp-more{padding:0 8px;font-size:11.5px}
  #cpSfLogout{display:block}
}
@media (min-width: 821px){ #cpSfLogout{display:none} }


/* 底栏定高（第46轮修复）：fixed flex 容器在移动端会被 align-items:stretch 拉满整屏 */
@media (max-width: 820px){
  .cp-mtab{top:auto!important;height:56px!important;align-items:center!important;box-sizing:border-box}
  .cp-mtab button{height:auto!important;min-height:0!important;align-self:center!important;flex:0 0 20%!important}
}
.cp-mtab{height:auto}
@media (max-width: 820px){ .cp-mtab{height:56px} }


/* ============ 第46轮 · 手机视图收尾 ============ */
@media (max-width: 820px){
  /* 页面顶部信息块瘦身：状态+标题一行，说明/数据源条收起 */
  .pt-bar{flex-wrap:nowrap;overflow:hidden}
  .pt-bar .hint{display:none}
  .pt-src{display:none}
  /* 主题按钮只留图标 */
  .cp-theme{margin-left:0}
  .cp-theme-btn{padding:0 8px;font-size:0;gap:0}
  .cp-theme-btn span{display:none}
  .cp-theme-btn::before{content:'🎨';font-size:15px;line-height:1}
  /* 领星数据说明折叠 */
  .lx-info{margin:0 0 10px;border:1px solid var(--line);border-radius:9px;background:var(--card)}
  .lx-info summary{padding:9px 11px;font-size:12px;color:var(--sub);cursor:pointer}
  /* 卡片配色更克制 */
  .cp-tasktbl tbody tr.row-overdue{background:#fffafa!important}
  .cp-tasktbl tbody tr.cp-daily-alert{background:#fffdf6!important}
  .cp-tasktbl td[data-col="ops"] .cp-btn{padding:4px 9px!important;font-size:11px!important}
  .cp-tasktbl td[data-col="owner"] .cp-avatar-sm{width:18px;height:18px;font-size:10px}
  .cp-tasktbl td[data-col="owner"]>div>div>span{font-size:10.5px}
}

@media (max-width: 820px){
  .lx-cards-more{padding:10px;text-align:center;font-size:11.5px;color:var(--sub)}
  /* 删除按钮在卡片上改为描边，避免整块红色抢注意力 */
  .cp-tasktbl td[data-col="ops"] .cp-btn[style*="#dc2626"],
  .cp-tasktbl td[data-col="ops"] .cp-btn.danger,
  .cp-tasktbl td[data-col="ops"] .cp-btn.red{background:transparent!important;color:#dc2626!important;
    border:1px solid #fecaca!important}
}

@media (max-width: 820px){
  /* 卡片底色统一，只靠左边色条区分超期/每日必做（td 上的旧背景要一起清掉） */
  .cp-tasktbl tbody tr.row-overdue>td,
  .cp-tasktbl tbody tr.cp-daily-alert>td{background:transparent!important;box-shadow:none!important}
  .cp-tasktbl tbody tr.row-overdue{background:#fffafa!important;border-left-color:#f5222d!important}
  .cp-tasktbl tbody tr.cp-daily-alert{background:#fffdf6!important;border-left-color:#fa8c16!important}
}

/* 手机端弹窗定位修复（第46轮）：桌面给侧栏让位的 left:206px 在手机上会把弹窗推到屏幕外 */
@media (max-width: 820px){
  body[data-shell="cockpit"] .cp-modalmask{left:0!important}
  .cp-modalmask{padding:12px!important}
  .cp-modal{width:96vw!important;max-width:96vw!important;max-height:88vh;display:flex;flex-direction:column}
  .cp-modalbody{overflow:auto}
  .cp-cfglist{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px 8px}
  .cp-cfgitem{padding:7px 6px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}


/* ============ 产品主图缩略图（第47轮） ============ */
.thumb{display:inline-flex;align-items:center;justify-content:center;flex:none;
  background:#f1f5f9;border:1px solid var(--line);border-radius:5px;overflow:hidden;vertical-align:middle}
.thumb img{width:100%;height:100%;object-fit:contain;display:block;background:#fff}
.thumb.noimg{background:#f1f5f9}
.thumb.noimg::after{content:'无图';font-size:10px;color:#94a3b8;line-height:1}
.lx-ascell{display:inline-flex;align-items:center;gap:7px;min-width:0;vertical-align:middle}
.lx-ascell>span:last-child{overflow:hidden;text-overflow:ellipsis}
.lx-ck-img{border-radius:6px}
.map-thumb{border-radius:6px}
.map-thumb img{border-radius:5px}
@media (max-width: 820px){
  .lx-ck-top{gap:7px}
  .lx-ck-img{width:44px!important;height:44px!important}
}

/* 紧凑模式：不显示主图缩略图，把宽度让给数据列（第47轮） */
.lx-table.lx-compact .lx-thumb{display:none!important}
.lx-table.lx-compact .lx-ascell{gap:0}


/* ============ 第49轮：月份选择器 / 冻结列背景 / 缩略图开关 ============ */
.stm{position:relative}
.stmbtn{width:100%;display:flex;justify-content:space-between;align-items:center;gap:6px;
  padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--card);
  color:var(--ink);font-size:13px;cursor:pointer}
.stmbtn:hover{border-color:var(--brand)}
.stmbtn i{font-style:normal;color:var(--sub);font-size:11px}
.stmp{display:none;position:absolute;z-index:60;top:calc(100% + 4px);left:0;width:258px;
  background:var(--card);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 12px 28px rgba(15,23,42,.18);padding:8px}
.stm.on .stmp{display:block}
.stmph{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 8px}
.stmph b{font-size:13px;font-weight:500}
.stmph button{border:1px solid var(--line);background:var(--card);border-radius:6px;
  width:26px;height:26px;line-height:1;cursor:pointer;color:var(--ink);font-size:14px}
.stmph button:hover{border-color:var(--brand);color:var(--brand)}
.stmg{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.stmc{border:0;background:var(--bg);border-radius:6px;padding:8px 0;font-size:12.5px;
  cursor:pointer;color:var(--ink)}
.stmc:hover{background:var(--brand-soft);color:var(--brand)}
.stmc.on{background:var(--brand);color:#fff;font-weight:500}
.stmf{display:flex;justify-content:space-between;padding:8px 4px 2px;font-size:12px}
.stmf a{color:var(--brand);text-decoration:none}

/* 冻结列：补齐背景，避免滑动时"镂空" */
.scroll.st-scroll table.grid thead th.stfix{background:var(--thead-bg,#f6f8fb)!important;
  box-shadow:1px 0 0 var(--line)}
.scroll.st-scroll table.grid tbody td.stfix{background:var(--card)!important}
.scroll.st-scroll table.grid tbody tr:nth-child(even) td.stfix{background:var(--stripe,#fafbfd)!important}
.scroll.st-scroll table.grid tbody tr:hover td.stfix{background:var(--row-hover,#f7f9fc)!important}
.scroll.st-scroll thead th.stfix-last{box-shadow:2px 0 7px -2px rgba(15,23,42,.28)!important}

/* ---------- 手机端复位：侧边栏变抽屉后不再占 206px，浮层必须按整视口居中 ----------
   （第51轮：三段下拉弹窗在手机上右溢出 25px，根因就是上面的 +103px 平移） */
@media (max-width:819px){
  body[data-shell="cockpit"] .overlay{left:0}
  body[data-shell="cockpit"] .cp-modalmask{left:0}
  body[data-shell="cockpit"] [style*="inset:0"]{left:0 !important}
  body[data-shell="cockpit"] #appModal > div[style*="left:50%"]{left:50% !important}
  body[data-shell="cockpit"] #toast{left:50% !important}
}

/* ---------- 产品简称三段：桌面三列并排（标签/下拉/新增输入三行对齐），窄屏退化单列 ---------- */
.sn-trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 12px;margin-bottom:10px}
@media(max-width:639px){.sn-trio{grid-template-columns:minmax(0,1fr);gap:12px}}
.sn-seg{display:flex;flex-direction:column;min-width:0}
.sn-seg .sn-hd{display:flex;align-items:baseline;justify-content:space-between;gap:6px;margin-bottom:5px}
.sn-seg .sn-lb{font-size:13px;font-weight:600;color:var(--ink,#1f2433)}
.sn-seg .sn-mgr{font-size:11px;white-space:nowrap;color:var(--brand,#2b6cb0)}
.sn-seg .sn-opt{width:100%;max-width:100%;min-width:0;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--card,#fff);font-size:13px;box-sizing:border-box}
.sn-seg .sn-add{display:flex;gap:5px;align-items:center;margin-top:5px}
.sn-seg .sn-add input{flex:1;min-width:0;padding:5px 8px;border:1px solid var(--line);border-radius:6px;font-size:12px;background:var(--graybg,#f6f7fa);box-sizing:border-box}
.sn-seg .sn-add button{flex:none;padding:3px 9px;font-size:12px}

/* ---------- 任务清单：归属层级 / 日志落点（第58轮） ---------- */
.cp-scope{display:flex;flex-direction:column;gap:2px;line-height:1.3}
.cp-scope-top{display:flex;align-items:center;gap:5px;flex-wrap:nowrap;min-width:0}
.cp-scope-top>.cp-tag{flex:none}
.cp-scope-obj{flex:1 1 auto;min-width:0;font-size:12px;font-weight:600;color:var(--ink,#1f2433);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-scope-log{font-size:11px;color:var(--sub,#8892a6)}
.cp-scopebar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:0 2px 10px}
.cp-scopechip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border:1px solid var(--line,#e3e7ef);border-radius:999px;background:var(--card,#fff);font-size:12px;color:var(--ink,#1f2433);cursor:pointer;line-height:1.4;transition:all .12s}
.cp-scopechip:hover{border-color:var(--brand,#2b6cb0)}
.cp-scopechip b{font-weight:700}
.cp-scopechip.on{background:var(--ink,#1f2433);border-color:var(--ink,#1f2433);color:#fff}
.cp-scopechip.on b{color:#fff}
.cp-tasktbl td[data-col="scope"]{min-width:172px;max-width:220px}

/* ---------- 任务表单：归属层级四选一（第60轮） ---------- */
.cp-scopepick{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:2px 0 10px}
@media(max-width:820px){.cp-scopepick{grid-template-columns:repeat(2,minmax(0,1fr))}}
.cp-scopebtn{display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:8px 10px;border:1px solid var(--line,#e3e7ef);border-radius:10px;background:var(--card,#fff);cursor:pointer;text-align:left;transition:all .12s;line-height:1.3}
.cp-scopebtn b{font-size:13px;color:var(--ink,#1f2433)}
.cp-scopebtn i{font-size:11px;font-style:normal;color:var(--sub,#8892a6)}
.cp-scopebtn:hover{border-color:var(--brand,#2b6cb0)}
.cp-scopebtn.on{border-color:var(--brand,#2b6cb0);background:var(--bluebg,#e0efff);box-shadow:0 0 0 2px rgba(43,108,176,.12)}
.cp-scopebtn.on b{color:var(--blue,#1d6fd6)}
.cp-scopebtn.on i{color:var(--blue,#1d6fd6)}
.cp-scopeobj{margin-top:2px}
.cp-scopeobj select,.cp-scopeobj input{width:100%;box-sizing:border-box}
#cpMAsin{text-transform:uppercase}
.cp-scopeLbl{display:block;font-size:12px;color:var(--sub,#8892a6);margin-bottom:4px}
.cp-scopeLbl i{color:var(--red,#dc2626);font-style:normal}
.cp-scopeempty{padding:9px 12px;border:1px dashed var(--line,#e3e7ef);border-radius:8px;font-size:12px;color:var(--sub,#8892a6);background:var(--graybg,#f6f7fa)}
.cp-loghint{margin-top:8px;padding:7px 10px;border-radius:8px;font-size:12px;background:var(--greenbg,#e9f8ee);color:var(--green,#16a34a)}
.cp-loghint b{font-weight:700}
.cp-loghint.bad{background:var(--amberbg,#fef3e2);color:var(--amber,#d97706)}
.cp-flowrow{display:flex;gap:8px;align-items:center;margin-top:8px}
.cp-flowrow .cp-scopeLbl{margin:0;white-space:nowrap}
.cp-flowrow select{flex:none;width:150px}
.cp-flowrow input{flex:1;min-width:0}
.cp-asinecho{margin-top:6px;font-size:12px;padding:6px 10px;border-radius:8px;background:var(--graybg,#f6f7fa);color:var(--sub,#8892a6)}
.cp-asinecho:empty{display:none}
.cp-asinecho.ok{background:var(--greenbg,#e9f8ee);color:var(--green,#16a34a)}
.cp-asinecho.warn{background:var(--amberbg,#fef3e2);color:var(--amber,#d97706)}
.cp-asinecho.bad{background:var(--redbg,#fdeaea);color:var(--red,#dc2626)}

/* ---------- 归属对象多选（第61轮） ---------- */
.cp-mp{border:1px solid var(--line,#e3e7ef);border-radius:10px;overflow:hidden;background:var(--card,#fff)}
.cp-mphead{display:flex;gap:8px;align-items:center;padding:8px;background:var(--graybg,#f6f7fa);border-bottom:1px solid var(--line,#e3e7ef)}
.cp-mpq{flex:1;min-width:0;padding:6px 9px;border:1px solid var(--line,#e3e7ef);border-radius:8px;font-size:12.5px;box-sizing:border-box}
.cp-mpcnt{font-size:12px;color:var(--sub,#8892a6);white-space:nowrap}
.cp-mpchips{display:flex;flex-wrap:wrap;gap:6px;padding:8px;min-height:36px;border-bottom:1px dashed var(--line,#e3e7ef)}
.cp-mpchip{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;background:var(--bluebg,#e0efff);color:var(--blue,#1d6fd6);font-size:12px;font-weight:600}
.cp-mpchip a{color:inherit;text-decoration:none;opacity:.65;font-size:11px}
.cp-mpchip a:hover{opacity:1}
.cp-mphint{font-size:12px;color:var(--sub,#8892a6)}
.cp-mplist{max-height:232px;overflow:auto;padding:4px}
.cp-mpitem{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:12.5px}
.cp-mpitem:hover{background:var(--graybg,#f6f7fa)}
.cp-mpitem.on{background:var(--bluebg,#e0efff)}
.cp-mpv{font-weight:600;min-width:60px;color:var(--ink,#1f2433)}
.cp-mpl{color:var(--sub,#8892a6);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-mpempty,.cp-mpmore{padding:10px;text-align:center;font-size:12px;color:var(--sub,#8892a6)}
.cp-loghint.ok{background:var(--greenbg,#e9f8ee);color:var(--green,#16a34a)}

/* 多选行：强制左对齐（全站 label 样式会把 checkbox 推到右侧） */
.cp-mpitem{display:flex!important;align-items:center;justify-content:flex-start!important;gap:8px!important;padding:6px 8px!important;line-height:1.35}
.cp-mpitem>input[type="checkbox"]{order:-1;flex:0 0 auto;margin:0!important;width:15px;height:15px}
.cp-mpitem>.cp-mpv{flex:0 0 auto;min-width:auto!important}
.cp-mpitem>.cp-mpl{flex:1 1 auto;margin-left:2px}
.cp-mpitem>span{display:inline}

/* ---------- 筛选多选 + 排序管理（第69轮） ---------- */
.map-ms{position:relative;display:inline-block}
.map-msbtn{display:inline-flex!important;align-items:center;gap:6px;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:var(--card,#fff)}
.map-msbtn.on{border-color:var(--brand,#2b6cb0);color:var(--brand,#2b6cb0);font-weight:600}
.map-msbtn i{font-style:normal;opacity:.55;font-size:10px}
.map-mspop{position:absolute;top:calc(100% + 4px);left:0;z-index:80;width:264px;background:var(--card,#fff);border:1px solid var(--line,#e3e7ef);border-radius:10px;box-shadow:0 14px 34px rgba(15,23,42,.2);padding:8px}
.map-msq{width:100%;padding:6px 8px;border:1px solid var(--line,#e3e7ef);border-radius:8px;font-size:12px;box-sizing:border-box;margin-bottom:6px}
.map-mslist{max-height:250px;overflow:auto}
.map-msitem{display:flex!important;align-items:center;justify-content:flex-start!important;gap:8px;padding:5px 6px;border-radius:6px;font-size:12.5px;cursor:pointer;margin:0;line-height:1.35}
.map-msitem:hover{background:var(--graybg,#f6f7fa)}
.map-msitem.on{background:var(--bluebg,#e0efff)}
.map-msitem>input{margin:0!important;order:-1;flex:0 0 auto;width:15px;height:15px}
.map-msitem>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.map-msnone{padding:10px;text-align:center;color:var(--sub,#8892a6);font-size:12px}
.map-msfoot{display:flex;justify-content:space-between;padding-top:6px;border-top:1px solid var(--line,#e3e7ef);margin-top:6px}
.map-msfoot a{font-size:12px;color:var(--brand,#2b6cb0);text-decoration:none}
.mo-tabs{display:flex;gap:8px;margin-bottom:8px}
.mo-tab{padding:6px 14px;border:1px solid var(--line,#e3e7ef);border-radius:999px;background:var(--card,#fff);font-size:13px;cursor:pointer}
.mo-tab b{opacity:.6;font-weight:600;margin-left:4px}
.mo-tab.on{background:var(--ink,#1f2433);border-color:var(--ink,#1f2433);color:#fff}
.mo-tab.on b{opacity:.8;color:#fff}
.mo-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.mo-q{flex:1;min-width:140px;padding:6px 9px;border:1px solid var(--line,#e3e7ef);border-radius:8px;font-size:12.5px}
.mo-cnt{font-size:12px;color:var(--sub,#8892a6)}
.mo-grid{max-height:52vh;overflow:auto}
.mo-grid tr.mo-on td{background:var(--bluebg,#e0efff)}
.mo-lnk{font-size:12px;color:var(--brand,#2b6cb0);text-decoration:none;padding:0 5px}

/* ---------- 批量勾选条（第71轮） ---------- */
.map-batchbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 12px;margin-bottom:8px;border:1px solid var(--brand,#2b6cb0);background:var(--bluebg,#e0efff);border-radius:10px;font-size:13px}
.map-batchbar b{font-weight:700}
.map-batchbar .hint{color:var(--sub,#8892a6);font-size:12px}
.mapSelBox,.snSelBox{width:15px;height:15px;cursor:pointer}

/* 选填标记 + 批量匹配汇总（第72轮） */
.map-opt{font-size:10px;font-weight:400;color:var(--sub,#8892a6);background:var(--graybg,#f6f7fa);border-radius:4px;padding:1px 4px;margin-left:2px}
.map-matchsum{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}

/* 人工锁标记（第73轮） */
.map-lock{font-size:11px;text-decoration:none;opacity:.75;cursor:pointer}
.map-lock:hover{opacity:1}

/* 店铺 / 姓名 下拉（第74轮） */
.mapMetaSel{width:126px;max-width:150px;padding:4px 6px;border:1px solid var(--line,#e3e7ef);border-radius:6px;background:var(--card,#fff);font-size:12.5px;box-sizing:border-box}
tr td .mapMetaSel[data-f="owner"]{width:92px}

/* 流程审批 批量条（第75轮） */
.fl-batchbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 12px;margin:0 0 8px;border:1px solid var(--brand,#2b6cb0);background:var(--bluebg,#e0efff);border-radius:10px;font-size:13px}
.fl-batchbar b{font-weight:700}
.fl-batchbar .hint{color:var(--sub,#8892a6);font-size:12px}
.flSel{width:15px;height:15px;cursor:pointer}
