/* ============================================================
   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: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-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}

/* 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}
