:root{
  --surface:#F7F7F8; --surface-muted:#EFEFF2; --surface-card:#FFFFFF; --text:#171717; --text-muted:#52525B; --border:rgba(23,23,23,.12);
  --brand:#4B3FE3; --brand-soft:#F2F7FF; --brand-soft-strong:#E5EAFF; --brand-text:#1A1759; --brand-on:#FFFFFF;
  --success:#1DC981; --warning:#EFAA17; --danger:#E8463A;
  --success-bg:color-mix(in srgb, #1DC981 14%, transparent); --warning-bg:color-mix(in srgb, #EFAA17 14%, transparent); --danger-bg:color-mix(in srgb, #E8463A 14%, transparent);
  --radius:8px; --radius-card:12px; --radius-full:999px;
  --font-sans:"SF Pro Text","PingFang SC",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-metric:"Inter","SF Pro Text","PingFang SC",system-ui,-apple-system,Roboto,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --weight-regular:400; --weight-medium:500; --weight-strong:600;
  --text-caption:12px/18px; --text-body:14px/20px; --text-title:16px/24px;
  --tc:#52525B; /* caption color alias */
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{font:var(--weight-regular) var(--text-body) var(--font-sans); color:var(--text); background:var(--surface);}
.hidden{display:none!important;}

/* ---------- 登录 ---------- */
.login-wrap{min-height:100vh; display:flex; align-items:stretch;}
.login-hero{flex:1.2; background:var(--brand); color:var(--brand-on); padding:48px; display:flex; flex-direction:column; justify-content:center; gap:16px;}
.login-hero .mk{width:32px;height:32px;border-radius:8px;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-weight:600;}
.login-hero h1{font:var(--weight-strong) 22px/30px var(--font-sans); margin:0;}
.login-hero p{font:var(--weight-regular) var(--text-body) var(--font-sans); color:rgba(255,255,255,.85); margin:0; max-width:400px;}
.role-hint{display:flex; gap:8px; flex-wrap:wrap;}
.login-card{flex:1; display:flex; align-items:center; justify-content:center; padding:32px;}
.login-box{width:100%; max-width:360px; display:flex; flex-direction:column; gap:14px;}
.login-box h2{font:var(--weight-medium) var(--text-title) var(--font-sans); margin:0;}
.field{display:flex; flex-direction:column; gap:6px;}
.field label{font:var(--weight-medium) var(--text-caption) var(--font-sans); color:var(--text);}
.field input{border:1px solid var(--border);border-radius:var(--radius);padding:11px 12px;font:var(--weight-regular) var(--text-body) var(--font-sans);color:var(--text);background:var(--surface-muted);outline:none;}
.field input:focus{border-color:var(--brand); background:#fff;}
.btn{background:var(--brand);color:var(--brand-on);border:none;border-radius:var(--radius);padding:11px;font:var(--weight-medium) var(--text-body) var(--font-sans);cursor:pointer;text-align:center;}
.btn.ghost{background:transparent;color:var(--brand);border:1px solid var(--border);}
.btn.danger{background:var(--danger-bg);color:#A22C24;}
.btn.sm{padding:7px 12px;font:var(--weight-medium) var(--text-caption) var(--font-sans);}
.err{font:var(--weight-medium) var(--text-caption) var(--font-sans); color:#A22C24; min-height:18px;}
.hint{font:var(--weight-regular) var(--text-caption) var(--font-sans); color:var(--text-muted);}
[data-tip]{border-bottom:1px dashed currentColor; cursor:help; white-space:normal;}
[data-tip]:hover{filter:brightness(.85);}

/* ---------- 布局 ---------- */
.app{display:flex; flex-direction:column; min-height:100vh;}
.appbody{display:flex; flex:1; min-height:0; align-items:stretch;}
.side{width:216px; background:var(--surface-card); border-right:1px solid var(--border); padding:16px 12px; flex-shrink:0; display:flex; flex-direction:column;}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px;}
.brand .logo{width:30px;height:30px;border-radius:8px;background:var(--brand);color:var(--brand-on);display:flex;align-items:center;justify-content:center;font:var(--weight-strong) var(--text-body) var(--font-sans);}
.brand b{font:var(--weight-strong) var(--text-body) var(--font-sans); color:var(--text);}
.brand span{font:var(--weight-regular) var(--text-caption) var(--font-sans); color:var(--text-muted); display:block;}
.nav{display:flex;flex-direction:column;gap:4px;flex:1;}
.navbtn{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius);cursor:pointer;font:var(--weight-medium) var(--text-body) var(--font-sans);color:var(--text-muted);border:none;background:transparent;text-align:left;}
.navbtn.on{background:var(--brand-soft); color:var(--brand-text);}
.navbtn.on::before{content:"";width:3px;height:16px;background:var(--brand);border-radius:2px;margin-left:-12px;margin-right:2px;}
.userbox{margin-top:8px;border-top:1px solid var(--border);padding:12px 8px 0;display:flex;flex-direction:column;gap:8px;}
.userbox .un{font:var(--weight-medium) var(--text-body) var(--font-sans);color:var(--text);}
.userbox .ur{font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text-muted);}
.main{flex:1;padding:24px;overflow:auto;min-width:0;}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:20px;gap:16px;flex-wrap:wrap;}
.page-head h2{margin:0;font:var(--weight-strong) var(--text-title) var(--font-metric);color:var(--text);}
.page-head .sub{font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text-muted);margin-top:4px;}
.page-head .sub b{color:var(--weight-medium); color:var(--text);}

/* ---------- 卡片 ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px;margin-bottom:16px;}
.card{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-card);padding:16px;display:flex;flex-direction:column;gap:8px;}
.card.pri{border-color:var(--brand);}
.cl{font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text-muted);}
.cv{font:var(--weight-strong) var(--text-title) var(--font-metric);color:var(--text);}
.cv b{color:var(--brand);font-weight:var(--weight-strong);}
.cv .unit{color:var(--text-muted);font-weight:var(--weight-regular);font-size:13px;}
.pill{align-self:flex-start;font:var(--weight-medium) var(--text-caption) var(--font-sans);padding:4px 10px;border-radius:var(--radius-full);}
/* 销售来源：来源名与发货部门徽标 */
.src-name{font-weight:var(--weight-medium);}
.tag{display:inline-block;font:var(--weight-medium) var(--text-caption) var(--font-sans);padding:3px 9px;border-radius:var(--radius-full);background:var(--surface-muted);color:var(--brand);border:1px solid var(--border-soft, var(--border));}
.tag.sm{padding:1px 7px;font-size:11px;margin-top:2px;}
.tag.t-virtual{color:var(--ok);background:rgba(var(--ok-break,34,197,94),0.08);}
.tag.t-mixed{color:var(--warn);background:rgba(var(--warn-break,245,158,11),0.10);}
.tag.t-physical{color:var(--brand);background:rgba(var(--brand-break,124,58,237),0.08);}
.pill.ok{background:var(--success-bg);color:#0F766E;}
.pill.warn{background:var(--warning-bg);color:#7A5306;}
.pill.danger{background:var(--danger-bg);color:#A22C24;}
.pill.neutral{background:var(--surface-muted);color:var(--text-muted);}
.gbar{height:6px;border-radius:var(--radius-full);background:var(--surface-muted);overflow:hidden;}
.gbar i{display:block;height:100%;border-radius:var(--radius-full);background:var(--brand);}
.gbar i.warn{background:var(--warning);}
.gbar i.danger{background:var(--danger);}
.gbar i.ok{background:var(--success);}

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px;}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px;}
.panel{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-card);padding:16px;}
.pt{font:var(--weight-medium) var(--text-title) var(--font-sans);color:var(--text);margin:0 0 14px;display:flex;align-items:center;justify-content:space-between;}
.pt .more{font:var(--weight-medium) var(--text-caption) var(--font-sans);color:var(--brand);cursor:pointer;}

/* ---------- 表单 ---------- */
.fgroup{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;}
.fitem{display:flex;flex-direction:column;gap:6px;}
.fitem label{font:var(--weight-medium) var(--text-caption) var(--font-sans);color:var(--text);}
.fitem input,.fitem select,.fitem textarea{border:1px solid var(--border);border-radius:var(--radius);padding:9px 12px;font:var(--weight-regular) var(--text-body) var(--font-sans);color:var(--text);background:var(--surface-muted);outline:none;min-width:100px;}
.fitem input:focus,.fitem select:focus{border-color:var(--brand);background:#fff;}

/* ---------- 表格 ---------- */
.tbl{width:100%;border-collapse:collapse;font:var(--weight-regular) var(--text-body) var(--font-sans);}
.tbl th{font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text-muted);text-align:left;padding:8px;border-bottom:1px solid var(--border);}
.tbl td{padding:9px 8px;border-bottom:1px solid var(--border);color:var(--text);}
.tbl tr:last-child td{border-bottom:none;}
.num{font:var(--weight-medium) var(--text-code) var(--font-mono);}
.row-actions{display:flex;gap:6px;justify-content:flex-end;}
.mini{background:transparent;border:1px solid var(--border);border-radius:var(--radius);padding:3px 8px;font:var(--weight-medium) var(--text-caption) var(--font-sans);color:var(--text-muted);cursor:pointer;}
.mini:hover{color:var(--brand);border-color:var(--brand);}
.mini.del:hover{color:var(--danger);border-color:var(--danger);}

/* ---------- 销售来源 · 卡片式来源分项 ---------- */
.srcgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;}
.srccard{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-card);padding:14px 16px;display:flex;flex-direction:column;gap:12px;}
.srccard-h{display:flex;flex-direction:column;gap:8px;}
.srccard-h .src-name{font:var(--weight-strong) var(--text-body) var(--font-sans);color:var(--text);}
.srccard .misc{display:flex;gap:6px;flex-wrap:wrap;}
.srccard-kv{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px;}
.src-kv{display:flex;flex-direction:column;gap:2px;}
.src-kv label{font:var(--weight-medium) var(--text-caption) var(--font-sans);color:var(--text-muted);}
.src-kv .kv-line{font:var(--weight-medium) var(--text-code) var(--font-mono);color:var(--text);display:flex;align-items:center;gap:4px;min-height:30px;}
.src-kv .kv-line input.ed{width:100%;min-width:0;}
.src-kv .kv-line.ok{color:var(--ok);} .src-kv .kv-line.bad{color:var(--danger);}
.src-kv .kv-sub{font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text-muted);}
.srccard-f{display:flex;justify-content:flex-end;gap:6px;border-top:1px dashed var(--border);padding-top:10px;}

/* ---------- 订单→发货 状态流转 ---------- */
.flowbar{display:flex;align-items:stretch;gap:0;margin-bottom:16px;overflow-x:auto;}
.fstep{flex:1;min-width:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:12px 8px;background:var(--surface-card);border:1px solid var(--border);border-radius:var(--radius-card);text-align:center;position:relative;}
.fstep .fdot{width:26px;height:26px;border-radius:var(--radius-full);background:var(--surface-muted);color:var(--text-muted);display:flex;align-items:center;justify-content:center;font:var(--weight-strong) var(--text-caption) var(--font-sans);}
.fstep .fname{font:var(--weight-medium) var(--text-body) var(--font-sans);color:var(--text);}
.fstep .fcount{font:var(--weight-medium) var(--text-code) var(--font-mono);color:var(--text-muted);}
.fstep.act{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset;}
.fstep.act .fdot{background:var(--brand);color:#fff;}
.fstep.done{border-color:var(--border);} .fstep.done .fdot{background:var(--ok);color:#fff;}
.fstep.branch .fdot{background:var(--danger);color:#fff;}
.fstep .farrow{position:absolute;right:-9px;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:14px;z-index:2;}
.fstep:last-child .farrow{display:none;}
.kan-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;}
.kan-col{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-muted);padding:10px;display:flex;flex-direction:column;gap:8px;}
.kan-h{display:flex;align-items:center;justify-content:space-between;font:var(--weight-medium) var(--text-body) var(--font-sans);color:var(--text);padding:2px 2px 6px;}
.kan-h .pill{font-size:11px;padding:2px 8px;}
.kan-body{display:flex;flex-direction:column;gap:8px;}
.kcard{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card);padding:10px 12px;display:flex;flex-direction:column;gap:5px;}
.kcard .kno{font:var(--weight-medium) var(--text-body) var(--font-sans);color:var(--text);display:flex;justify-content:space-between;align-items:center;}
.kcard .kno .hint{font-size:11px;}
.kcard .kline{font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text);}
.kcard .kline.meta{color:var(--text-muted);}
.kcard .kline.amt{font:var(--weight-medium) var(--text-code) var(--font-mono);color:var(--text);}
.kcard .kactions{display:flex;gap:6px;margin-top:2px;flex-wrap:wrap;}

/* ---------- 预警/弹层 ---------- */
.warnbox{border:1px solid var(--border);border-top:2px solid var(--danger);border-radius:var(--radius-card);background:var(--surface-card);padding:16px;margin-bottom:16px;}
.wtitle{font:var(--weight-medium) var(--text-body) var(--font-sans);color:var(--text);margin:0 0 8px;}
.wtitle::before{content:"!";display:inline-block;width:16px;height:16px;line-height:16px;text-align:center;border-radius:var(--radius-full);background:var(--danger);color:#fff;font:var(--weight-strong) var(--text-caption) var(--font-sans);margin-right:6px;}
.rod{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--border);font:var(--weight-regular) var(--text-body) var(--font-sans);color:var(--text);}
.rod:last-child{border-bottom:none;}
.rod .dlabel{flex:0 0 220px;font:var(--weight-medium) var(--text-body) var(--font-sans);}
.rod .dlabel .hint{display:block;font-size:11px;}
.rod .dval{flex:1;color:var(--text-muted);}
/* 本周工作日志 · 自动汇总 */
.wl-line{flex:1;color:var(--text);line-height:1.7;}
.wl-line.dlabel{flex:0 0 220px;font:var(--weight-medium) var(--text-body) var(--font-sans);}
.owner{font:var(--weight-medium) var(--text-caption) var(--font-sans);color:var(--text-muted);}

/* ---------- 项目 ---------- */
.proj{border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface-card);padding:14px 16px;margin-bottom:10px;}
.proj .prow{display:flex;align-items:center;gap:12px;}
.proj .pname{flex:1;font:var(--weight-medium) var(--text-body) var(--font-sans);color:var(--text);}
.proj .pmeta{font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text-muted);}
.pst{font:var(--weight-medium) var(--text-caption) var(--font-sans);padding:4px 10px;border-radius:var(--radius-full);}

/* ---------- 排行榜 ---------- */
.rrow{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);}
.rrow:last-child{border-bottom:none;}
.rn{font:var(--weight-medium) var(--text-body) var(--font-sans);color:var(--text-muted);width:24px;flex-shrink:0;}
.rn.r1{color:var(--brand);font:var(--weight-strong) var(--text-body) var(--font-sans);}
.rname{flex:0 0 100px;font:var(--weight-medium) var(--text-body) var(--font-sans);}
.rtrack{flex:1;height:8px;border-radius:var(--radius-full);background:var(--surface-muted);overflow:hidden;}
.rtrack i{display:block;height:100%;border-radius:var(--radius-full);background:var(--brand);}
.rpct{flex:0 0 44px;text-align:right;font:var(--weight-medium) var(--text-code) var(--font-mono);}
.legend{display:flex;gap:16px;margin-bottom:8px;flex-wrap:wrap;}
.lg{display:flex;align-items:center;gap:6px;font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text-muted);}
.sw{width:10px;height:10px;border-radius:3px;}
.statrow{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px;}
.stat{background:var(--surface-muted);border-radius:var(--radius);padding:9px 11px;display:flex;flex-direction:column;gap:3px;min-width:0;}
.stat .k{font:var(--weight-medium) var(--text-caption) var(--font-sans);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.stat .v{font:var(--weight-strong) var(--text-body) var(--font-metric);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sub-tt{font:var(--weight-strong) var(--text-body) var(--font-sans);color:var(--text);margin-bottom:8px;}
.memcard{border:1px solid var(--border);border-radius:var(--radius-card);padding:16px;background:var(--surface-card);}
.mxslots{display:flex;flex-direction:column;gap:0;}
.mxplatform{display:flex;align-items:flex-start;gap:18px;padding:12px 0;border-top:1px solid var(--border);}
.mxplatform:first-child{border-top:none;}
.mphead{width:120px;flex-shrink:0;display:flex;flex-direction:column;gap:2px;}
.mpname{font:var(--weight-strong) var(--text-body) var(--font-sans);color:var(--text);}
.mpmeta{font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text-muted);}
.mxgrid{display:flex;flex-wrap:wrap;gap:8px;flex:1;min-width:0;}
.cn-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px;padding:7px 11px;border-radius:var(--radius);font:var(--weight-medium) var(--text-caption) var(--font-sans);border:1px solid transparent;}
.cn-cell.on{background:var(--success-bg);color:#0B7A45;border-color:rgba(29,201,129,.45);}
.cn-cell.off{background:var(--surface-muted);color:var(--text-muted);border:1px dashed var(--border);}

/* 网站与海外 · 海外站点矩阵 */
.sitegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;}
.site-cell{border:1px solid var(--border);border-radius:var(--radius-card);padding:10px;background:var(--surface-card);display:flex;flex-direction:column;gap:8px;}
.site-cell.done{border-color:rgba(29,201,129,.5);background:var(--success-bg);}
.sc-name{font:var(--weight-strong) var(--text-body) var(--font-metric);color:var(--text);}
.sc-ops{display:flex;flex-wrap:wrap;gap:6px;}
.sc{border:1px solid var(--border);border-radius:var(--radius-full);padding:4px 10px;font:var(--weight-medium) var(--text-caption) var(--font-sans);background:var(--surface-muted);color:var(--text-muted);cursor:default;}
button.sc{cursor:pointer;}
.sc.on{background:var(--success);color:#fff;border-color:transparent;}
.sc.launched.on{background:var(--brand);}
.sc.contentComplete.on{background:var(--success);}
.sc.gscBound.on{background:#0B7A45;}
/* 任务列表 */
.tasklist{display:flex;flex-direction:column;gap:8px;margin-top:10px;}
.stask{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-card);flex-wrap:wrap;}
.skind{padding:3px 8px;border-radius:var(--radius-full);font:var(--weight-medium) var(--text-caption) var(--font-sans);}
.stitle{flex:1;min-width:120px;font:var(--weight-medium) var(--text-body) var(--font-sans);}
.sowner{font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--brand);}
.spill{padding:3px 8px;border-radius:var(--radius-full);font:var(--weight-medium) var(--text-caption) var(--font-sans);background:var(--warning-bg);color:#8A650C;}
.spill.ok{background:var(--success-bg);color:#0B7A45;}
.taskadd{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}

/* 分段控 */ 
.seg{display:flex;gap:4px;background:var(--surface-muted);border-radius:var(--radius-full);padding:3px;}
.seg button{border:none;background:transparent;padding:6px 14px;border-radius:var(--radius-full);font:var(--weight-medium) var(--text-caption) var(--font-sans);color:var(--text-muted);cursor:pointer;}
.seg button.on{background:#fff;color:var(--brand);box-shadow:0 1px 2px rgba(0,0,0,.06);}

@media(max-width:960px){.side{display:none;} .grid3{grid-template-columns:1fr;} .grid2{grid-template-columns:1fr;} .login-hero{display:none;}}

/* ---------- 深色主题 ---------- */
html[data-theme="dark"]{
  --surface:#14151a; --surface-muted:#1e2027; --surface-card:#1b1d24; --text:#ecedf2; --text-muted:#a3a6b0; --border:rgba(236,237,242,.14);
  --brand:#6054F1; --brand-soft:#1a1759; --brand-soft-strong:#2f2b8a; --brand-text:#cfd8ff;
  --brand-on:#ffffff;
  --success-bg:color-mix(in srgb, #1DC981 16%, transparent); --warning-bg:color-mix(in srgb, #EFAA17 16%, transparent); --danger-bg:color-mix(in srgb, #E8463A 16%, transparent);
}
html[data-theme="dark"] .field input,
html[data-theme="dark"] .fitem input,
html[data-theme="dark"] .fitem select,
html[data-theme="dark"] .fitem textarea,
html[data-theme="dark"] .input{background:var(--surface-muted);}
html[data-theme="dark"] .field input:focus,
html[data-theme="dark"] .fitem input:focus{border-color:var(--brand); background:var(--surface-card);}
html[data-theme="dark"] .seg button.on{background:var(--surface-card); color:var(--brand);}
html[data-theme="dark"] .login-hero{background:#27244f;}

/* ---------- 移动端顶栏 ---------- */
.mobile-top{display:none; align-items:center; gap:10px; padding:10px 14px; background:var(--surface-card); border-bottom:1px solid var(--border); position:sticky; top:0; z-index:20;}
.mobile-top .brand{display:flex; align-items:center; gap:8px; padding:0;}
.mobile-top .brand b{font:var(--weight-strong) var(--text-body) var(--font-sans);}
.mnav-select{flex:1; border:1px solid var(--border); border-radius:var(--radius); padding:8px 10px; background:var(--surface-muted); color:var(--text); font:var(--weight-medium) var(--text-body) var(--font-sans);}
.icon-btn{border:1px solid var(--border); background:var(--surface-muted); color:var(--text); border-radius:var(--radius); width:34px; height:34px; font-size:15px; cursor:pointer;}

/* ---------- 页脚 ---------- */
.appfoot{padding:12px 24px; border-top:1px solid var(--border); background:var(--surface); font:var(--weight-regular) var(--text-caption) var(--font-sans); color:var(--text-muted); display:flex; gap:16px; flex-wrap:wrap;}

/* ---------- 看板对比条 ---------- */
.cmp{display:flex; align-items:center; gap:10px; padding:7px 0; font:var(--weight-regular) var(--text-caption) var(--font-sans); color:var(--text-muted);}
.cmp .cn{flex:0 0 76px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.cmp .track{flex:1; height:14px; border-radius:var(--radius); background:var(--surface-muted); overflow:hidden; position:relative;}
.cmp .track i{display:block; height:100%; background:var(--brand); border-radius:var(--radius);}
.cmp .track i.warn{background:var(--warning);}
.cmp .track i.danger{background:var(--danger);}
.cmp .track i.ok{background:var(--success);}
.cmp .num{flex:0 0 40px; text-align:right; font:var(--weight-medium) var(--text-code) var(--font-mono);}

/* ---------- 填报月表格 ---------- */
.mtable{width:100%; border-collapse:collapse; font:var(--weight-regular) var(--text-caption) var(--font-sans);}
.mtable th{position:sticky; top:0; background:var(--surface-card); font:var(--weight-medium) var(--text-caption) var(--font-sans); color:var(--text-muted); text-align:left; padding:7px 8px; border-bottom:1px solid var(--border); white-space:nowrap;}
.mtable td{padding:6px 8px; border-bottom:1px solid var(--border); white-space:nowrap;}
.mtable td.day{font:var(--weight-medium) var(--text-code) var(--font-mono); color:var(--text);}
.mtable td.today{background:var(--brand-soft);}
.mtable .wklabel{font:var(--weight-regular) var(--text-caption) var(--font-sans); color:var(--text-muted);}
.mtable .ed{border:1px solid var(--border); border-radius:6px; background:var(--surface-muted); padding:3px 6px; width:64px; font:var(--weight-regular) var(--text-body) var(--font-sans); color:var(--text);}
.s2{display:flex;gap:4px;}
.s2 input{border:1px solid var(--border);border-radius:6px;background:var(--surface-muted);padding:3px 5px;width:58px;font:var(--weight-regular) var(--text-body) var(--font-sans);color:var(--text);}
.s2 input:focus,.mtable .ed:focus{border-color:var(--brand);background:#fff;outline:none;}
.mtable input[data-note],.mtable input:not([class]){border:1px solid var(--border);border-radius:6px;background:var(--surface-muted);padding:3px 5px;width:72px;font:var(--weight-regular) var(--text-body) var(--font-sans);color:var(--text);}
/* 电商店铺填报：表格内窄输入框（复用 .ed 于 .tbl 表格） */
.tbl .ed{border:1px solid var(--border);border-radius:6px;background:var(--surface-muted);padding:3px 5px;width:64px;font:var(--weight-regular) var(--text-body) var(--font-sans);color:var(--text);text-align:right;}
.tbl .ed:focus{border-color:var(--brand);background:#fff;outline:none;}
.tblwrap{overflow-x:auto;}
/* 刷/剔刷 开关 */
.switch{position:relative;display:inline-block;width:38px;height:20px;vertical-align:middle;}
.switch input{opacity:0;width:0;height:0;}
.switch .slider{position:absolute;cursor:pointer;inset:0;background:var(--border);border-radius:20px;transition:.2s;}
.switch .slider:before{position:absolute;content:"";height:14px;width:14px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;}
.switch input:checked + .slider{background:var(--brand);}
.switch input:checked + .slider:before{transform:translateX(18px);}
.mtable .save-row button{background:transparent;border:none;color:var(--brand);cursor:pointer;font:var(--weight-medium) var(--text-caption) var(--font-sans);}
.done-tag{font:var(--weight-regular) var(--text-caption) var(--font-sans); color:var(--success);}

@media(max-width:960px){
  .mobile-top{display:flex;}
  .main{padding:14px;}
  .appfoot{padding:12px 14px;}
}
@media(max-width:640px){
  .mtable{font-size:12px;}
  .mtable th,.mtable td{padding:5px 4px;}
  .fitem input,.fitem select{min-width:0;}
}
/* 移动端增强：卡片单列、头部换行、操作可滚动、周报表格横向滚动 */
@media(max-width:960px){
  .cards{grid-template-columns:1fr;}
  .page-head{flex-wrap:wrap;gap:10px;}
  .grid2{grid-template-columns:1fr;}
  .cards .card{min-width:0;}
  .panel{overflow:auto;}
}
@media(max-width:640px){
  .page-head h2{font-size:18px;}
  .panel .pt{flex-wrap:wrap;gap:6px;}
  .statrow{flex-wrap:wrap;}
  .warnbox{font-size:12px;}
  .gbar{min-width:0;}
}
@media print{
  #chgPwd{display:none;}
}
/* ---------- 取数来源 / 截图证据 / 存疑 ---------- */
.srcsel{padding:4px 6px;border-radius:6px;border:1px solid var(--border);background:var(--surface-card);color:var(--text);font-size:12px;max-width:150px;}
.evthumb{display:inline-block;width:40px;height:28px;overflow:hidden;border-radius:5px;vertical-align:middle;border:1px solid var(--border);}
.evthumb img{width:100%;height:100%;object-fit:cover;display:block;}
.susrow{background:rgba(232,70,58,.12)!important;}
/* 导出 PDF：仅打印主内容区 */
@media print{
  .side,.appfoot,.page-head button,.page-head .fitem{display:none!important;}
  .app,.appbody{display:block!important;min-height:0!important;}
  .main{overflow:visible!important;padding:0!important;}
  .panel{break-inside:avoid;box-shadow:none!important;border:1px solid #ccc;}
}
/* 重点目标卡片：责任人小字 */
.cards .owner{display:block;margin-top:2px;font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text-muted);}
.nowrap{white-space:nowrap;}

/* ---------- 电商提成页 ---------- */
.stats4{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;}
.stats4 .stat.kind{border-color:var(--brand);}
.stats4 .stat .mm{font:var(--weight-medium) var(--text-caption) var(--font-sans);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.stats4 .stat .mm.kind{color:var(--brand);font-weight:600;}
.stats4 .stat .mv{font:var(--weight-strong) var(--text-body) var(--font-metric);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.stats4 .stat .mv.nonum{color:var(--brand);}
.stats4 .stat .ml{font:var(--weight-regular) var(--text-caption) var(--font-sans);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.importRow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:6px 0;}
.importRow .btn{white-space:nowrap;}
.tbl th,.tbl td{white-space:nowrap;}
.tbl .num{text-align:right;}