/* v0.5.289：商品管理「列显示/恢复列序」挪入常显工具栏（外包徐玉妮/徐玉荣只读页可用）——复用既有按钮样式，无新增 */
/* v0.5.288：交货清单定制 Tab 成本对账列补「总成本」列；利润按 成交金额−二次成本−运费 公式自动（无新增样式） */
/* v0.5.287：定制订单成交金额输入 + 交货清单定制 Tab 成本对账列（温厂成本/二次成本/运费/成交金额/利润）——复用既有 badge/table/dt-row/fc-note 样式，无新增样式 */
/* v0.5.258 店铺中心 */
.chip { display:inline-block; padding:3px 12px; border-radius:999px; background:#f0f1f4; font-size:12px; user-select:none; }
.chip.on { background:#4c6ef5; color:#fff; }
.pill { display:inline-block; padding:2px 10px; border-radius:999px; background:#eef2ff; color:#4c6ef5; font-size:12px; }
.pill.red { background:#fdecec; color:#d83931; }
.pill.green { background:#e6f7f0; color:#14a05f; }
.warn-bar { background:#fff7e6; border:1px solid #ffd591; color:#ad6800; font-size:12.5px; border-radius:10px; padding:8px 14px; }
/* ========== 订单生产通 v0.5.283 样式（飞书商务风：浅灰底·白卡片·飞书蓝主色） ==========
 * v0.5.241：按店目标统筹表（红线标红/周月达标标记）
 * v0.5.194：无样式改动（产品金额取整在 server.js）
 * v0.5.193：无样式改动（店铺改名在前端 app.js/server.js）
 * v0.5.192：无样式改动（OZON 定价在前端 app.js/index.html）
 * v0.5.191：无样式改动（日志已完成收起在前端 app.js）
 * v0.5.190：无样式改动（店铺与人员页面在前端 app.js/index.html）
 * v0.5.189：无样式改动（虾皮中心内填报在前端 app.js）
 * v0.5.188：新增 .sc-kpi 虾皮运营中心 KPI 卡样式
 * v0.5.174：去掉 .main 的 max-width:1120px，让主区域随浏览器窗口宽度拉宽（侧边栏固定 210px，main flex:1 自动占满右侧空间），版本号同步
 * v0.5.174：.main 去掉 max-width:1120px 随窗口拉宽（CSS 端），版本号同步
 * v0.5.173：无样式改动（新增产品多行密度别名兼容在前端 app.js），版本号同步
 * v0.5.172：无样式改动（报销流程升级：发票/收款信息/编辑/审批意见在前端 app.js），版本号同步
 * v0.5.171：分销功能复用现有样式体系（metric-card/badge/chip/data-table），无新增样式；版本号同步
 * v0.5.170：无样式改动（刻字方式不需要刻字/刻字内容缩小/订单备注在前端 app.js/index.html），版本号同步
 * v0.5.169：无样式改动（材质/造型/工艺三清单后台化+管理弹层扩展在前端 app.js/index.html），版本号同步
 * v0.5.247：业绩管理页面排版优化——.goal-card-v2 新卡片布局（隐藏红线、月实际/月目标大数字、进度突出）+ .goal-summary 顶部月度汇总 4 卡片（总目标/总实际/达成率/达标店数）
 * 调整样式：.goal-card-v2 白底圆角阴影、.gc-main flex 布局（月实际/分隔/月目标大数字）、.gc-head 顶部店名+运营+达标徽章、.gc-sub 底部辅助行（周进度+上月）*/
 * v0.5.168：无样式改动（定制项目整块默认隐藏+入口按钮、全系统表单草稿在前端 app.js/index.html），版本号同步
 * v0.5.167：无样式改动（定制项目默认无空行+显式空白类型在前端 app.js），版本号同步
 * v0.5.166：无样式改动（工作出错记录老板登记/编辑权限在前端 app.js + 服务端），版本号同步
 * v0.5.165：产品/木材目录权限修复（前端 canManageWoods 跟进服务端 admin||finance）
 * v0.5.164：产品目录调整——.pn-td/.pw-td 货品编码/商品编码列拉宽（180px/150px 一行看全不截断）；删除尺寸列样式（.sz3）
 * v0.5.163：日志点阅样式——.boss-read-bar 老板点阅条（今/昨两日）、.br-day/.br-ok/.br-btn/.br-tip、.bcock-w-hot 驾驶舱未点阅红色高亮行
 * v0.5.162：催单样式——.oc-urge 订单卡片催单按钮（hot 未读红）、.chip-urge 厂长「被催」标记、.urge-row/.urge-main/.urge-id/.urge-name/.urge-sub/.urge-ops 工作台催单提醒行、.urge-txt 催单记录红字
 * v0.5.161：考勤打卡样式——.att-today 今日打卡卡、.att-clock-row/.att-clock-cell/.att-clock-btns 上下班时间行与按钮组、.att-month 月度汇总月份选择器
 * v0.5.160：花名册字段扩展样式——.tab-dot 花名册 Tab 提醒红点、.alert-bar/.alert-item/.alert-date 到期提醒警示区（合同30天/转正7天）、.st-probation 试用蓝徽章、.st-left 离职灰徽章、.detail-table/.dt-row/.dt-k/.dt-v 花名册详情弹窗两列表格
 * v0.5.159：行政中心新增 .hr-table 花名册表格样式（#prod-table 同款紧凑布局）、.cert-expire 证件过期红色高亮、.policy-content 制度正文换行保留、.hr-ops 操作列不换行
 * v0.5.158：无样式改动（刻字定制输入/仓库显隐修复在前端 app.js），版本号同步
 * v0.5.157：称重工具行内每列新增 .wt-row-kg（G 下方 KG 小字，均两位小数；合计列白色）
 * v0.5.156：附加工艺卡片改两行网格布局（首行开关+名称、次行¥价×数量+合计右对齐），彻底解决名称被操作区挤到只剩一个字的问题
 * v0.5.153：无样式改动（目标利润模式联动在前端 app.js），版本号同步
 * v0.5.151：无样式改动（跨境定价小数精简在前端 app.js），版本号同步
 * v0.5.150：称重工具 KG 换算——.wt-result-kg（G 重量下方小字 KG 换算，合计格白色文字）
 * v0.5.149：跨境定价——站点选择改格子布局 .xp-site-grid/.xp-site-btn（四站常驻可见：国旗+站点名+佣金率，选中高亮不遮挡）+ 免佣期勾选 .xp-free-com + 结果区免佣提示行 .xp-row-free
 * v0.5.148：跨境定价双币改色——.xp-cny 人民币黑色加粗大字 / .xp-cur2 外币红色稍小；新增新加坡站点
 * v0.5.147：无样式改动（多产品明细入口移除在前端 app.js，样式文件仅版本号同步）
 * v0.5.146：①店铺勾选组件紧凑化——tk-multi-list（任务协同指派）minmax 150→118/降高 220→168/缩内距；shop-picker 系列（业绩目标/电商日志/上新记录店铺勾选）sp-chip 内距 8×14→4×10、字号 13→12.5、边框 1.5→1，sp-grid 降高 280→190，sp-search 缩内距，shop-picker 外内距 12→8 ②订单店铺小标 chip-shop（青底）
 * v0.5.145：跨境定价双币显示 .xp-cur2（人民币在前、当地货币小字在后）
 * v0.5.144：老板驾驶舱 bcock-*（运营排行条/财务格子/状态分布条/待处理清单）+ bcock-quick 快捷键 3+2 两行加大间距 + badge.st-overdue 超期徽章
 * v0.5.143：无新增样式，仅版本号变更（陈世铭只看自己/张嘉琦新账号为服务端数据，日期手输+回复粘贴为交互改动）
 * v0.5.142：运营驾驶舱全套 cock-*（KPI卡/目标环/今日概览/近7日柱图/待办清单/订单小表/快捷键）
 * v0.5.141：任务附件文件条 task-file-chip / 回复附件 tk-reply-file-chip / 业绩目标店铺 goal-shops / 上新记录人 cs-by-name / 木材材质管理 wood-chip
 * v0.5.140：算价白色/粉色改红胡桃木上漆算法、产品目录编辑弹窗（无新样式，仅版本号变更）
 * v0.5.138：视觉企划「全年节点」独立标签页（无新样式，仅版本号变更；holiday-node-box 折叠样式保留以兼容旧折叠版，但新 Tab 下已不展开）
 * v0.5.137：视觉企划(visual)开放运营日志（无新样式，仅版本号变更）
 * v0.5.136：岗位工作台「我的待办」样式——dash-todo 网格 + todo-card 卡片（左侧色条按状态区分：红=需处理/绿=无待办，含 tc-red/tc-amber/tc-blue/tc-green/tc-purple/tc-danger 六色）
 * v0.5.135：损耗统一 12%→18%（纯数值变更，无新样式）
 * v0.5.134：①视觉企划每日工作计划加 plan-img-list/plan-thumb-wrap/plan-thumb/plan-img-del（上传/粘贴/重试缩略图区）+ plan-imgs-cell（表格图片单元格）+ cchip-n（chip 计数）+ badge-st-daily/badge-st-holiday（日常/节假日节点分类标签）
 * v0.5.133：①跨境定价样式不变；任务插入图片加 task-img-row（卡片缩略图）+ tk-img-list/tk-thumb/tk-img-del（表单缩略图/删除按钮）+ tk-img-loading（上传中提示）+ tk-img-tip（说明文字）
 * v0.5.130：跨境定价重做——新增 xp-advanced（折叠运费参数 details/summary）；删包装/损耗/免运补贴相关行
 * v0.5.128：跨境定价样式——xp-grid 输入栅格 / xp-result-big 售价大字 / xp-detail 费用拆解表 / xp-row 明细行 / xp-hide-note 藏价提示 / chip-on 站点选中态（复用现有 chip 系列）
 * v0.5.127：运营日志四要素样式——ol-content 沟通内容 / ol-reply 回复+回复人时间 / ol-done 已完成标签 / ol-pending 未完成 / ol-done-box 完成勾选 / ol-card-done 已完成卡片淡化
 * v0.5.126：日志查看范围控制——scope-sel 范围切换下拉（电商日报/客服日报「仅看自己/看全部人」）
 * v0.5.125：售后订单下单人 chip-orderby 青色小标（卡片展示）
 * v0.5.124：登录失败锁定（纯服务端改动，样式仅版本号变更）
 * v0.5.123：流转耗时样式——his-dur 步骤耗时 / his-total 总耗时行 / flow-concl 结论条 / flow-stat-box 面板
 * v0.5.122：超期订单预警样式——chip-overdue 红标（脉冲动画）/ order-card.overdue 红边框 / dc-overdue 工作台红卡 / od-text 详情红字 */
/* v0.5.119 新增：产品研发表格备注列（多行文本可读）+ 全年节假日节点面板（活动申报底部） + 手机端算价明细面板铺满底部 */
.rd-note-cell { max-width:260px; white-space:pre-wrap; word-break:break-all; color:#4e5769; }
/* v0.5.119：任务协同多选指派名单 */
.tk-multi-bar { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.tk-multi-count { font-size:12.5px; color:#6b7280; font-weight:600; margin-left:auto; }
/* v0.5.285：全站勾选统一 chip 视觉（朱影审美拍板：白底/留白/胶囊/选中蓝勾）——列表容器去灰格改流式，条目=胶囊 */
.tk-multi-list { display:flex; flex-wrap:wrap; gap:8px; max-height:190px; overflow-y:auto; padding:2px; }
/* 平台小徽标（虾皮绿/京东红/拼多多粉/阿里橙） */
.sp-plat { font-style:normal; font-size:11px; line-height:15px; padding:0 6px; border-radius:4px; flex-shrink:0; }
/* 勾选分组标题（宋式留白：细字+分隔线） */
.sp-grp { display:flex; align-items:center; gap:8px; font-size:12px; color:#8a94a6; margin:12px 0 8px; letter-spacing:.5px; }
.sp-grp::after { content:''; flex:1; height:.5px; background:#e9edf4; }
/* v0.5.146：订单店铺小标；v0.5.285 升级白底蓝字胶囊 */
.chip-shop { display:inline-flex; align-items:center; gap:4px; padding:1px 10px; border-radius:999px; background:#fff; color:#3370ff; border:.5px solid #bcd2f5; font-size:12px; margin-left:6px; line-height:18px; }
@media (max-width:768px) { .tk-multi-list { max-height:none; } }
.holiday-node-box summary { cursor:pointer; font-weight:700; font-size:15px; padding:4px 2px; color:#1f2329; user-select:none; }
.holiday-node-box summary:hover { color:#3370ff; }
.holiday-node-box[open] summary { margin-bottom:6px; }
.holiday-node-table td { line-height:1.9; }
:root {
  --bg:#f2f3f5;            /* 浅灰底 */
  --panel:#ffffff;         /* 白卡片 */
  --line:#e5e6eb;          /* 细线 */
  --line-strong:#d0d3d9;
  --ink:#1f2329;           /* 主文字 */
  --ink-2:#646a73;         /* 次级文字 */
  --ink-3:#8f959e;         /* 弱文字 */
  --wood:#3370ff;          /* 飞书蓝主色 */
  --wood-d:#2b5cd9;
  --wood-l:#6690ff;
  --gold:#ffa940;          /* 橙黄点缀 */
  --serif:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
}
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html,body { height:100%; }
body {
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--bg); color:var(--ink); font-size:15px;
}
::-webkit-scrollbar { width:9px; height:9px; }
::-webkit-scrollbar-thumb { background:#c9cdd4; border-radius:5px; border:2px solid var(--bg); }
::-webkit-scrollbar-thumb:hover { background:#a9aeb8; }
::-webkit-scrollbar-track { background:transparent; }
.hidden { display:none !important; }
b.req { color:#f53f3f; }

/* ---------- 登录页（飞书商务：浅蓝渐变 + 白卡片 + 蓝主按钮） ---------- */
.login-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px;
  background:linear-gradient(150deg,#eef3ff 0%,#e6eeff 48%,#d8e4ff 100%); }
.login-card { background:#fff; border-radius:16px; padding:36px 30px; width:100%; max-width:380px;
  box-shadow:0 16px 48px rgba(31,35,41,.12), 0 2px 8px rgba(31,35,41,.05); border:1px solid #e5e6eb; }
.login-logo { width:60px; height:60px; margin:0 auto; background:linear-gradient(135deg,#3370ff,#2b5cd9); border-radius:16px;
  display:flex; align-items:center; justify-content:center; font-size:30px; box-shadow:0 6px 16px rgba(51,112,255,.35); }
.login-title { text-align:center; font-size:24px; font-weight:700; margin-top:14px; letter-spacing:1px; color:#1f2329; }
.login-sub { text-align:center; font-size:12.5px; color:#8f959e; margin:6px 0 24px; letter-spacing:.4px; }
.login-err { background:#fff1f0; color:#f53f3f; border:1px solid #ffccc7; border-radius:8px; padding:8px 10px; font-size:13px; margin-bottom:10px; }
.btn-link { background:none; border:none; color:#3370ff; font-size:13px; margin-top:12px; cursor:pointer; }
.btn-link:hover { text-decoration:underline; }
.pwd-box { margin-top:14px; border-top:1px dashed var(--line-strong); padding-top:14px; }
.pwd-box-title { font-size:14px; font-weight:600; margin-bottom:8px; color:var(--ink-2); }

/* ---------- 表单通用 ---------- */
.form-group { margin-bottom:12px; }
.form-group label { display:block; font-size:13px; color:var(--ink-2); margin-bottom:5px; font-weight:500; }
.form-group input,.form-group select,.form-group textarea {
  width:100%; padding:10px 12px; border:1px solid var(--line-strong); border-radius:9px; font-size:15px; background:var(--panel);
  transition:border-color .15s ease, box-shadow .15s ease;
}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus { outline:none; border-color:var(--wood-l); box-shadow:0 0 0 3px rgba(51,112,255,.14); }
.form-group textarea { resize:vertical; min-height:80px; font-family:inherit; }
.form-group textarea.engrave-text { min-height:240px; line-height:1.6; }
/* v0.5.17 交货清单表格 */
.dlv-prod { font-size:12.5px; color:var(--ink-2); }
.dlv-note { font-size:12.5px; color:var(--ink-2); max-width:200px; }
.check-label { display:flex; align-items:center; gap:6px; font-size:14px; color:var(--ink); cursor:pointer; }
.check-label input { width:18px; height:18px; }
/* v0.5.238：自定义 chips 下拉（替换 datalist，手机端可点） */
.dd-wrap { position:relative; display:inline-block; }
.dd-chips { position:absolute; top:calc(100% + 4px); left:0; z-index:1000; background:#fff; border:1px solid var(--line); border-radius:8px; padding:6px; box-shadow:0 4px 16px rgba(0,0,0,.12); display:flex; flex-wrap:wrap; gap:4px; max-height:220px; overflow-y:auto; min-width:160px; max-width:360px; }
.dd-chip { padding:4px 10px; background:#f0f2f5; border-radius:14px; cursor:pointer; font-size:12px; color:var(--ink); transition:background .12s; user-select:none; }
.dd-chip:hover, .dd-chip:focus { background:#e2e8f0; outline:none; }
.dd-chip.active { background:var(--brand); color:#fff; }
/* v0.5.101 急发单+发货日期 并排一行 */
.form-group.fg-row { display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.fg-row .fg-field { display:flex; align-items:center; gap:6px; flex:1; min-width:200px; }
.fg-row .fg-field label { font-size:13px; color:var(--ink-2); font-weight:500; white-space:nowrap; margin-bottom:0; }
.fg-row .fg-field input { flex:1; max-width:220px; }
/* v0.5.37 多产品明细行 */
.item-row { display:flex; align-items:center; gap:6px; margin-bottom:6px; }
.item-row input { flex:1; padding:8px 10px; border:1px solid var(--line-strong); border-radius:9px; font-size:14px; box-sizing:border-box; }
.item-row input:focus { outline:none; border-color:var(--wood-l); box-shadow:0 0 0 3px rgba(51,112,255,.14); }
.fg-tip { font-size:12px; color:var(--ink-3); font-weight:normal; }
/* v0.5.38 刻字定制并排分类 */
.eng-subcat { display:flex; flex-wrap:wrap; gap:8px; }
.eng-subcat button { flex:1; min-width:100px; padding:9px 10px; border:1px solid var(--line-strong); border-radius:9px; background:#f7f8fa; color:var(--ink-2); font-size:14px; cursor:pointer; transition:all .15s; }
.eng-subcat button:hover { border-color:var(--wood-l); color:var(--wood); }
.eng-subcat button.active { background:var(--wood); border-color:var(--wood); color:#fff; font-weight:600; box-shadow:0 2px 8px rgba(51,112,255,.3); }

/* ---------- 按钮（v0.5.94 飞书蓝主色 + 中性灰次按钮） ---------- */
.btn-primary,.btn-green,.btn-blue,.btn-purple,.btn-danger,.btn-ghost {
  display:inline-block; border:none; border-radius:8px; padding:10px 16px; font-size:15px; cursor:pointer; color:#fff; font-weight:500;
  box-shadow:0 1px 2px rgba(31,35,41,.06); transition:background .15s ease, box-shadow .15s ease, transform .05s ease;
}
.btn-primary { background:#3370ff; }
.btn-primary:hover { background:#2b5cd9; box-shadow:0 4px 12px rgba(51,112,255,.35); }
.btn-green { background:#00b42a; } .btn-green:hover { background:#009a22; }
.btn-blue { background:#3370ff; } .btn-blue:hover { background:#2b5cd9; }
.btn-purple { background:#722ed1; } .btn-purple:hover { background:#531dab; }
.btn-danger { background:#f53f3f; } .btn-danger:hover { background:#d4380d; }
.btn-ghost { background:#fff; color:#646a73; border:1px solid #d0d3d9; box-shadow:none; }
.btn-ghost:hover { background:#f2f3f5; border-color:#c9cdd4; color:#1f2329; }
.btn-block { display:block; width:100%; margin-top:10px; }
.btn-sm { padding:5px 10px; font-size:13px; border-radius:8px; }

/* ---------- 布局：侧边栏 + 主区（飞书：白侧边栏 + 浅蓝选中） ---------- */
.app { display:flex; min-height:100vh; }
.sidebar {
  width:210px; background:#fff; color:#646a73; display:flex; flex-direction:column;
  position:fixed; top:0; left:0; bottom:0; z-index:50; transition:transform .25s;
  border-right:1px solid #e5e6eb;
}
.brand { font-size:17px; font-weight:700; padding:20px 16px 16px; color:#1f2329; border-bottom:1px solid #e5e6eb; letter-spacing:.5px; display:flex; align-items:center; gap:8px; }
#side-nav { flex:1; padding:10px 0; overflow-y:auto; }
.nav-item { display:flex; align-items:center; gap:10px; padding:10px 18px; color:#646a73; cursor:pointer; font-size:14.5px; border-left:3px solid transparent; border-radius:0 8px 8px 0; margin:1px 0; }
.nav-item:hover { background:#f2f3f5; color:#1f2329; }
.nav-item.active { background:#e8f0ff; color:#3370ff; border-left-color:#3370ff; font-weight:600; }
.nav-item .ni { font-size:16px; }
.nav-dept { font-size:11px; font-weight:600; color:#8f959e; padding:14px 18px 4px; letter-spacing:.4px; }
.nav-dept.hidden { display:none; }
.nav-sub { padding-left:34px; font-size:13.5px; }
/* v0.5.51 导航红点：任务协同未读任务数 */
.nav-item { position:relative; }
.nav-badge { position:absolute; right:14px; top:50%; transform:translateY(-50%); min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:#f53f3f; color:#fff; font-size:11px; font-weight:700; line-height:18px; text-align:center; box-shadow:0 0 0 2px #fff; }
/* v0.5.108 任务协同未读大号红叹号：更大更醒目 + 脉冲动画 */
#nav-task-badge { min-width:24px; height:24px; line-height:24px; font-size:17px; font-weight:900; right:10px; animation: taskBadgePulse 1.2s ease-out infinite; }
@keyframes taskBadgePulse {
  0%, 100% { box-shadow:0 0 0 2px #fff, 0 0 0 0 rgba(245,63,63,.55); transform:translateY(-50%) scale(1); }
  50% { box-shadow:0 0 0 2px #fff, 0 0 0 8px rgba(245,63,63,0); transform:translateY(-50%) scale(1.08); }
}
/* v0.5.108 任务未读自动弹窗 */
.task-pop { text-align:center; padding:6px 4px 2px; }
.task-pop-icon { font-size:44px; line-height:1; margin:6px 0 10px; animation: taskBadgePulse 1.2s ease-out infinite; border-radius:50%; display:inline-block; }
.task-pop-title { font-size:17px; font-weight:700; color:#1f2329; margin-bottom:10px; }
.task-pop-title b { color:#f53f3f; font-size:20px; }
.task-pop-row { font-size:14px; color:#4b5563; padding:5px 0; }
.task-pop-row b { color:#d93900; font-size:16px; }
.task-pop-note { font-size:12px; color:#8f959e; margin:8px 0 14px; }
/* v0.5.108 任务卡片「💬 新回复」标记 */
.task-reply-new { background:#e8f3ff !important; color:#3370ff !important; border:1px solid #b8d4ff !important; }
.proj-pick { display:flex; gap:6px; padding:4px 18px 8px; flex-wrap:wrap; }
.proj-chip { background:#f2f3f5; color:#646a73; border:1px solid #e5e6eb; border-radius:14px; padding:4px 12px; font-size:12px; cursor:pointer; white-space:nowrap; transition:all .15s; }
.proj-chip:hover { background:#e5e6eb; color:#1f2329; }
.proj-chip.active { background:#3370ff; color:#fff; border-color:#3370ff; }
.proj-chip.proj-locked { cursor:default; opacity:.85; }
.sidebar-foot { padding:14px 16px; border-top:1px solid #e5e6eb; }
.sf-name { font-weight:600; color:#1f2329; }
.sf-role { font-size:12px; color:#8f959e; margin:2px 0 10px; }
.sidebar-foot .btn-ghost { background:#f2f3f5; color:#646a73; border-color:#e5e6eb; }
.sidebar-foot .btn-ghost:hover { background:#e5e6eb; color:#1f2329; }

.main { flex:1; margin-left:210px; padding:18px; padding-top:66px; min-width:0; }  /* v0.5.174 去掉 max-width:1120px，让主区域随窗口拉宽（侧边栏固定 210px，main flex:1 自动占满） */
.topbar {
  position:fixed; top:0; left:210px; right:0; height:50px; background:rgba(255,255,255,.92); backdrop-filter:blur(8px);
  border-bottom:1px solid #e5e6eb; display:flex; align-items:center; padding:0 18px; z-index:40;
}
.topbar h1 { font-size:17px; font-weight:600; letter-spacing:.3px; color:#1f2329; }
.menu-btn { display:none; background:none; border:none; font-size:20px; margin-right:10px; cursor:pointer; }
.proj-tabs { margin-left:auto; display:flex; gap:6px; align-items:center; }
.proj-tab {
  background:#f2f3f5; color:var(--ink-2); border:1px solid var(--line); border-radius:18px;
  padding:5px 14px; font-size:13px; cursor:pointer; transition:all .15s;
  white-space:nowrap;
}
.proj-tab:hover { background:#e5e6eb; }
.proj-tab.active { background:var(--wood); color:#fff; border-color:var(--wood); box-shadow:0 1px 4px rgba(51,112,255,.35); }
.proj-empty { color:var(--ink-3); font-size:12px; }
.proj-locked { cursor:default !important; opacity:.85; }
.side-mask { display:none; position:fixed; inset:0; background:rgba(31,35,41,.45); z-index:45; }
.side-mask.show { display:block; }

/* ---------- 面板 ---------- */
.page { animation:fadeIn .2s; }
@keyframes fadeIn { from{opacity:0; transform:translateY(4px);} to{opacity:1; transform:none;} }
.panel { background:var(--panel); border-radius:14px; padding:20px 22px; margin-bottom:16px; box-shadow:0 1px 2px rgba(31,35,41,.04), 0 6px 20px rgba(31,35,41,.06); border:1px solid var(--line); }
.panel-title { font-size:15px; font-weight:700; margin-bottom:12px; letter-spacing:.5px; color:#1f2329; display:flex; align-items:center; gap:6px; }
.panel-title-row { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
.panel-title-row .panel-title { margin-bottom:0; }

/* ---------- v0.5.109 工作台：急发/最新订单搜索 + 折叠；打榜比赛 ---------- */
.dash-fold-head { cursor:pointer; user-select:none; gap:10px; }
.dash-fold-head .panel-title { flex-shrink:0; }
.fold-arrow { display:inline-block; margin-left:4px; font-size:13px; color:#8f959e; transition:transform .15s; }
.dash-search { max-width:280px; min-width:180px; margin:0; padding:5px 10px; font-size:13px; }
.dlv-kw { max-width:260px; min-width:160px; margin:0; }  /* v0.5.111 交货清单搜索框 */
.ct-sales { color:#d83931; }
.ct-muted { color:#8f959e; font-weight:400; }
.ct-upd { font-size:12px; color:#8f959e; margin-top:2px; }
.ct-monday { font-size:12px; color:#d83931; margin-top:2px; font-weight:600; }
.ct-link { color:#3370ff; text-decoration:none; }
.ct-link:hover { text-decoration:underline; }
.ct-ended-row td { color:#8f959e; background:#fafafa; }
.contest-table td, .contest-table th { vertical-align:top; }
@media (max-width:768px) {
  .dash-fold-head { flex-wrap:wrap; }
  .dash-search { max-width:100%; min-width:0; width:100%; order:2; }
}
.filter-row { display:flex; align-items:center; gap:8px; margin-bottom:12px; flex-wrap:wrap; }
.filter-row select,.filter-row input { padding:8px 10px; border:1px solid var(--line-strong); border-radius:9px; font-size:14px; background:var(--panel); color:var(--ink); }
.filter-row input { flex:1; min-width:150px; }
.filter-row select:focus,.filter-row input:focus { outline:none; border-color:var(--wood-l); box-shadow:0 0 0 3px rgba(51,112,255,.13); }
/* v0.5.126 日志查看范围切换（电商日报/客服日报「仅看自己/看全部人」） */
.scope-sel { margin-left:auto; }
.scope-sel .cell-input { padding:8px 10px; border:1px solid var(--line-strong); border-radius:9px; font-size:14px; background:var(--panel); color:var(--ink); cursor:pointer; }
/* v0.5.127：运营日志四要素样式 */
.ol-content { font-size:14px; line-height:1.6; color:var(--ink); white-space:pre-wrap; word-break:break-word; }  /* v0.5.184 保留换行 */
.ol-reply { background:#eef6ff; border:1px solid #d3e7ff; border-radius:8px; padding:8px 10px; font-size:13.5px; color:#0e4d92; white-space:pre-wrap; word-break:break-word; }  /* v0.5.184 保留换行 */
.ol-reply-meta { font-size:12px; color:#8a94a6; margin-left:6px; }
.ol-done { color:#0d9f6e; font-weight:700; font-size:13px; }
.ol-pending { color:#b58900; font-weight:700; font-size:13px; }
.ol-done-box { display:inline-flex; align-items:center; gap:5px; font-size:13px; color:#4e5769; cursor:pointer; user-select:none; }
.ol-done-box input { width:15px; height:15px; accent-color:#0d9f6e; cursor:pointer; }
.ol-card-done { opacity:.72; }
.ol-card-done .ol-content { text-decoration:line-through; }
.fr-sep { color:var(--ink-2); font-size:13px; }

/* ---------- v0.5.33 交货清单分类 Tab ---------- */
.dlv-tabs { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.dlv-tab { padding:7px 14px; border-radius:999px; background:#f2f3f5; border:1px solid var(--line); font-size:13px; color:var(--ink-2); cursor:pointer; user-select:none; transition:all .15s; }
.dlv-tab:hover { background:#e5e6eb; }
.dlv-tab.active { background:var(--wood); border-color:var(--wood); color:#fff; font-weight:600; }
.dlv-tab-cnt { display:inline-block; min-width:18px; text-align:center; background:rgba(0,0,0,.08); border-radius:999px; font-size:11px; padding:1px 5px; margin-left:2px; }
.dlv-tab.active .dlv-tab-cnt { background:rgba(255,255,255,.25); }

/* ---------- 工作台卡片 ---------- */
.dash-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:10px; margin-bottom:14px; }
.dash-card { background:var(--panel); border-radius:14px; padding:16px 12px; text-align:center; border:1px solid var(--line); box-shadow:0 1px 3px rgba(31,35,41,.06); cursor:pointer; transition:transform .12s, box-shadow .12s; }
/* v0.5.51 工作台任务提醒条：有新指派任务时显示，点击直达任务协同 */
.dash-task-tip { background:#fff7e8; border:1px solid #ffd8a8; border-left:4px solid var(--gold); border-radius:10px; padding:10px 14px; margin-bottom:12px; font-size:13.5px; color:#ad6800; cursor:pointer; font-weight:600; }
.dash-task-tip:hover { background:#fff3dc; }
.dash-task-tip b { color:#d46b08; font-size:15px; }
.dash-card:hover { transform:translateY(-2px); box-shadow:0 6px 16px rgba(31,35,41,.12); }
.dc-num { font-size:24px; font-weight:700; font-variant-numeric:tabular-nums; }
.dc-label { font-size:12px; color:var(--ink-2); margin-top:2px; }
.dc-amber .dc-num { color:#d46b08; } .dc-blue .dc-num { color:#3370ff; }
.dc-purple .dc-num { color:#722ed1; } .dc-green .dc-num { color:#389e0d; }
.dc-red .dc-num { color:#f53f3f; font-size:18px; } .dc-teal .dc-num { color:#0f766e; font-size:18px; }

/* ---------- v0.5.136 岗位工作台：我的待办 ---------- */
.dash-todo { display:grid; grid-template-columns:repeat(auto-fill,minmax(132px,1fr)); gap:10px; }
.todo-card { position:relative; background:var(--panel); border:1px solid var(--line); border-left:4px solid #c9cdd4; border-radius:12px; padding:13px 12px 11px; cursor:pointer; box-shadow:0 1px 3px rgba(31,35,41,.05); transition:transform .12s, box-shadow .12s; }
.todo-card:hover { transform:translateY(-2px); box-shadow:0 6px 16px rgba(31,35,41,.12); }
.todo-num { font-size:22px; font-weight:700; font-variant-numeric:tabular-nums; line-height:1.2; color:var(--ink); }
.todo-label { font-size:12.5px; font-weight:600; color:var(--ink); margin-top:4px; }
.todo-tip { font-size:11px; color:var(--ink-3); margin-top:2px; }
.todo-card.tc-red { border-left-color:#f53f3f; } .todo-card.tc-red .todo-num { color:#f53f3f; }
.todo-card.tc-amber { border-left-color:#fa8c16; } .todo-card.tc-amber .todo-num { color:#d46b08; }
.todo-card.tc-blue { border-left-color:#3370ff; } .todo-card.tc-blue .todo-num { color:#3370ff; }
.todo-card.tc-green { border-left-color:#52c41a; } .todo-card.tc-green .todo-num { color:#389e0d; }
.todo-card.tc-purple { border-left-color:#722ed1; } .todo-card.tc-purple .todo-num { color:#722ed1; }
.todo-card.tc-danger { background:#fff5f4; border-color:#ffccc7; border-left:4px solid #f53f3f; }
.todo-card.tc-danger .todo-num { color:#f53f3f; }

/* ---------- 订单卡片 ---------- */
.order-list { display:flex; flex-direction:column; gap:8px; }
.order-card { background:#ffffff; border:1px solid #e5e6eb; border-radius:12px; padding:11px 14px; cursor:pointer; transition:border-color .12s, background .12s, box-shadow .12s; }
.order-card:hover { border-color:#c9cdd4; background:#f7f8fa; box-shadow:0 3px 10px rgba(31,35,41,.08); }
.order-card.urgent { border-left:4px solid #f53f3f; background:#fdf3f0; }
.order-card.overdue { border:1.5px solid #f53f3f; border-left:4px solid #f53f3f; background:#fff5f4; }  /* v0.5.122 超期红边框 */
.chip-overdue { background:#f53f3f; color:#fff; font-size:11px; font-weight:700; border-radius:4px; padding:1px 6px; animation:odPulse 1.6s ease-in-out infinite; }  /* v0.5.122 超期红标 */
.od-text { color:#f53f3f; }  /* v0.5.122 详情超期红字 */
.dash-card.dc-overdue { background:#fff5f4; }  /* v0.5.122 工作台超期卡 */
.dash-card.dc-overdue .dc-num { color:#f53f3f; }
.dash-card.dc-overdue.has-overdue { border:1.5px solid #f53f3f; animation:odPulse 1.6s ease-in-out infinite; }
@keyframes odPulse { 0%,100% { box-shadow:0 0 0 0 rgba(245,63,63,.35); } 50% { box-shadow:0 0 0 4px rgba(245,63,63,.12); } }
.oc-top { display:flex; align-items:center; gap:6px; }
.oc-id { font-size:12px; color:var(--ink-3); flex:1; }
.oc-title { font-size:15px; font-weight:600; margin-top:4px; color:var(--ink); }
.oc-qty { color:var(--wood); font-weight:700; }
.oc-text { font-size:13px; color:var(--ink-2); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.oc-bottom { display:flex; align-items:center; gap:8px; margin-top:6px; flex-wrap:wrap; }
.oc-cust { font-size:12px; color:var(--ink-2); }
.oc-date { font-size:12px; color:var(--ink-3); margin-left:auto; }
.oc-amt { font-size:13px; color:#f53f3f; font-weight:600; }
.chip-urgent { background:#f53f3f; color:#fff; font-size:11px; border-radius:4px; padding:1px 5px; }
/* v0.5.38+ 打样标记：橙色醒目徽标，方便生产识别打样单 */
.chip-sample { background:#f97316; color:#fff; font-size:11px; font-weight:700; border-radius:4px; padding:1px 6px; box-shadow:0 0 0 1px rgba(249,115,22,.4); }
.chip-aft { background:#dc2626; color:#fff; font-size:11px; font-weight:700; border-radius:4px; padding:1px 6px; box-shadow:0 0 0 1px rgba(220,38,38,.4); }  /* v0.5.92 售后原因 */
.chip-orderby { background:#0e7490; color:#fff; font-size:11px; font-weight:700; border-radius:4px; padding:1px 6px; }  /* v0.5.125 下单人（售后订单） */
.check-sample { color:#c2410c; font-weight:700; }
.check-sample input { accent-color:#f97316; }
/* v0.5.52 定制项目徽标：紫色，卡片/详情通用 */
.chip-craft { background:#722ed1; color:#fff; font-size:11px; font-weight:700; border-radius:4px; padding:1px 6px; }
/* ---------- v0.5.52 定制项目（普通刻字/开方槽/开圆槽/打孔/金属片刻字） ---------- */
.craft-row { border:1px dashed #d0d3d9; border-radius:10px; padding:10px; margin-bottom:10px; background:#ffffff; }
.craft-head { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.craft-head select { flex:1; padding:8px 10px; border:1px solid var(--line-strong); border-radius:8px; font-size:14px; background:var(--panel); }
.craft-row textarea { width:100%; box-sizing:border-box; padding:8px 10px; border:1px solid var(--line-strong); border-radius:8px; font-size:14px; resize:vertical; font-family:inherit; background:var(--panel); }
.craft-row textarea:focus { outline:none; border-color:#722ed1; box-shadow:0 0 0 3px rgba(114,46,209,.12); }
.craft-acts { display:flex; gap:8px; margin-top:8px; flex-wrap:wrap; }
.craft-upload { position:relative; overflow:hidden; cursor:pointer; margin-bottom:0; }
.craft-upload input[type=file] { position:absolute; left:0; top:0; opacity:0; width:100%; height:100%; cursor:pointer; }
.craft-imgs { display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }
.craft-img { position:relative; display:inline-block; }
.craft-img img { width:64px; height:64px; object-fit:cover; border-radius:8px; border:1px solid var(--line); display:block; }
.craft-img .file-del { position:absolute; top:-6px; right:-6px; background:#f53f3f; color:#fff; border-radius:50%; width:18px; height:18px; font-size:11px; line-height:18px; text-align:center; padding:0; }
.craft-row .file-item { background:var(--panel); }
/* 详情页定制项目 */
.craft-item-detail { border:1px solid var(--line); border-left:3px solid #722ed1; border-radius:8px; padding:10px 12px; margin-bottom:8px; background:var(--panel); }
.craft-item-head { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
.craft-item-no { font-size:11px; color:var(--ink-3); }
.craft-item-text { font-size:14px; color:var(--ink-2); white-space:normal; word-break:break-word; margin-bottom:6px; }
.craft-detail-img { width:72px; height:72px; object-fit:cover; border-radius:8px; border:1px solid var(--line); margin-right:6px; margin-bottom:4px; cursor:zoom-in; }
/* ---------- v0.5.47 批量接单/批量交货 ---------- */
.batch-bar { display:flex; align-items:center; gap:8px; margin-bottom:12px; flex-wrap:wrap; padding:9px 12px; background:#f7f8fa; border:1px dashed var(--line-strong); border-radius:10px; }
.batch-selall { display:inline-flex; align-items:center; gap:5px; font-size:13px; color:var(--ink-2); cursor:pointer; user-select:none; }
.batch-selall input { accent-color:var(--wood); cursor:pointer; }
.batch-count { font-size:12px; color:var(--wood); font-weight:600; }
.oc-ck { display:inline-flex; align-items:center; margin-right:6px; vertical-align:middle; }
.oc-ck input { width:15px; height:15px; cursor:pointer; accent-color:var(--wood); }

.badge { font-size:12px; border-radius:6px; padding:2px 9px; white-space:nowrap; font-weight:600; }
.st-pending { background:#fffbe6; color:#ad6800; }
.st-accepted { background:#e8f3ff; color:#0958d9; }
.st-producing { background:#f9f0ff; color:#531dab; }
.st-delivered { background:#f6ffed; color:#389e0d; }
.td-sub { font-size:11px; color:var(--ink-3); }

/* v0.5.38+ 工作台公告 */
.notice-item { background:#fff7e8; border:1px solid #ffd8a8; border-left:4px solid var(--gold); border-radius:10px; padding:10px 12px; margin-bottom:8px; }
.notice-title { font-size:14px; font-weight:700; color:var(--ink); margin-bottom:4px; }
.notice-content { font-size:13px; color:var(--ink-2); line-height:1.6; word-break:break-word; white-space:normal; }
.notice-meta { font-size:11px; color:var(--ink-3); margin-top:6px; display:flex; align-items:center; gap:6px; }
.notice-meta .btn-red { margin-left:auto; }
/* v0.5.51 公告已读确认：应读名单 chips + 标记我已读 + 已读计数 */
.ntc-reads { display:flex; flex-wrap:wrap; gap:4px; margin-top:8px; }
.ntc-chip { display:inline-flex; align-items:center; font-size:11.5px; color:var(--ink-3); background:#f7f8fa; border:1px solid var(--line); border-radius:999px; padding:1px 9px; line-height:18px; }
.ntc-chip.on { color:#d46b08; background:#fff3dc; border-color:#ffd8a8; font-weight:600; }
.ntc-foot { display:flex; align-items:center; gap:10px; margin-top:8px; }
.ntc-count { font-size:11px; color:var(--ink-3); }
.ntc-btn { font-size:12px; color:#d46b08; background:#fff3dc; border:1px solid #ffd8a8; border-radius:6px; padding:3px 12px; cursor:pointer; }
.ntc-btn:hover { background:#ffe8c0; }
/* v0.5.115 公告折叠状态 */
.notice-folded { padding:5px 12px; }
.notice-fold-bar { display:flex; align-items:center; gap:8px; cursor:pointer; }
.notice-fold-title { font-size:13px; font-weight:600; color:var(--ink); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ntc-badge-ack { font-size:11px; color:#389e0d; background:#f6ffed; border:1px solid #d9f0d0; border-radius:999px; padding:1px 8px; line-height:18px; white-space:nowrap; }
.fold-arrow { font-size:11px; color:var(--ink-3); white-space:nowrap; }

/* v0.5.38+ 设置页木材材质清单 */
/* v0.5.82 运费设置：区域选择卡片（6 分区单选） */
.fr-zones { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:4px; }
.fr-zone { display:flex; align-items:center; gap:6px; border:1px solid var(--line-strong); border-radius:10px; padding:8px 10px; font-size:13px; color:var(--ink-2); cursor:pointer; background:var(--panel); transition:all .12s ease; }
.fr-zone:hover { border-color:var(--wood-l); background:#f7f8fa; }
.fr-zone.on { border-color:var(--wood); background:#e8f0ff; color:var(--wood-d); font-weight:600; box-shadow:0 0 0 1px var(--wood) inset; }
.fr-zone input { accent-color:var(--wood); }
.freight-panel { max-width:560px; border-radius:16px; }

.empty-tip { text-align:center; color:var(--ink-3); font-size:14px; padding:26px 0; }

/* ---------- 弹层 ---------- */
.mask { position:fixed; inset:0; background:rgba(31,35,41,.5); z-index:100; display:flex; align-items:flex-end; justify-content:center; }
.modal-panel { background:var(--panel); width:100%; max-width:520px; max-height:88vh; overflow-y:auto; border-radius:16px 16px 0 0; padding:18px; box-shadow:0 -8px 40px rgba(31,35,41,.18); position:relative; }
.modal-title { font-size:17px; font-weight:700; margin-bottom:12px; font-family:var(--serif); letter-spacing:.5px; color:#1f2329; }
/* v0.5.236：弹层右上角统一关闭键（点 × = 点遮罩，有填写内容先确认防误关丢内容） */
.modal-close-btn { position:absolute; top:8px; right:8px; width:30px; height:30px; border:none; background:rgba(31,35,41,.06); color:#666; border-radius:50%; font-size:19px; line-height:1; cursor:pointer; z-index:20; display:flex; align-items:center; justify-content:center; padding:0; }
.modal-close-btn:hover { background:rgba(31,35,41,.14); color:#d83931; }
.cat-chip { background:#e8f3ff; color:var(--wood-d); font-size:12px; border-radius:6px; padding:2px 9px; vertical-align:middle; font-weight:600; }
.price-preview { background:#f7f8fa; border:1px dashed #d0d3d9; color:var(--wood-d); border-radius:9px; padding:8px 10px; font-size:13px; margin-bottom:8px; }

.file-list { margin-top:6px; }
.file-item { display:flex; align-items:center; justify-content:space-between; background:#f2f3f5; border-radius:8px; padding:6px 9px; font-size:13px; margin-bottom:4px; }
.file-item a { color:var(--wood); text-decoration:none; word-break:break-all; }
.file-item.uploading { color:var(--ink-2); justify-content:center; }
.file-del { background:none; border:none; color:#f53f3f; font-size:14px; cursor:pointer; padding:0 4px; }

/* v0.5.32 原创厂产品报备：缩略图 */
.baobei-thumb { width:44px; height:44px; object-fit:cover; border-radius:6px; vertical-align:middle; border:1px solid #e2e8f0; }
.baobei-imgs { min-width:120px; }
.baobei-content { max-width:260px; word-break:break-all; white-space:normal; }

/* v0.5.34 公司新品：上新店铺逐店勾选 + 多选网格 */
.npd-shops { min-width:200px; }
.npd-name { font-weight:600; white-space:normal; word-break:break-all; }
.npd-sample { white-space:nowrap; }
.npd-remark { max-width:200px; white-space:normal; word-break:break-all; font-size:13px; color:#646a73; }
.npd-check { display:inline-flex; align-items:center; gap:6px; font-size:13px; cursor:pointer; color:#1f2329; }
.npd-check input { width:16px; height:16px; accent-color:#3370ff; cursor:pointer; }
.npu-row { display:flex; align-items:center; gap:6px; padding:3px 0; font-size:13px; }
.npu-shop { white-space:nowrap; }
.npu-up { display:inline-flex; align-items:center; gap:3px; white-space:nowrap; font-size:13px; cursor:pointer; }
.npu-date { width:118px; padding:2px 4px; font-size:12px; border:1px solid #cbd5e1; border-radius:4px; }
.chk-grid { display:flex; flex-wrap:wrap; gap:6px 14px; max-height:180px; overflow-y:auto; padding:4px 2px; }
.chk-inline { display:inline-flex; align-items:center; gap:4px; font-size:13px; cursor:pointer; white-space:nowrap; }
/* v0.5.50 店铺勾选器：搜索+计数+全选清空+大块选中态（解决店铺多、易点错） */
/* v0.5.96：增高度+间距改善拥挤，选中色改飞书蓝 */
/* v0.5.146：紧凑化——外内距/搜索框/格子高度/chip 内距字号全面收紧（朱影要求别拉那么高） */
/* v0.5.285：整体视觉升级（朱影审美：白底留白/胶囊/选中蓝勾/平台徽标），checkbox 隐藏由伪元素圆点勾替代 */
.shop-picker { border:.5px solid #e3e8f0; border-radius:12px; padding:10px 12px; background:#fff; }
.sp-head { display:flex; align-items:center; gap:8px; margin-bottom:8px; flex-wrap:wrap; }
.sp-search { flex:1; min-width:130px; padding:6px 10px; border:.5px solid #dce2ec; border-radius:8px; font-size:13px; background:#fff; }
.sp-search:focus { outline:none; border-color:#3370ff; box-shadow:0 0 0 3px rgba(51,112,255,.12); }
.sp-count { font-size:12px; color:#8a94a6; white-space:nowrap; }
.sp-tools { display:flex; gap:6px; }
.sp-tools button { font-size:12px; padding:4px 10px; border:.5px solid #dce2ec; border-radius:999px; background:#fff; color:#39424f; cursor:pointer; }
.sp-tools button:hover { border-color:#8fb3ec; color:#1c56c7; background:#f4f8ff; }
.sp-grid { display:flex; flex-wrap:wrap; gap:8px; max-height:196px; overflow-y:auto; padding:2px 1px; }
.sp-chip, .tk-multi-item { position:relative; display:inline-flex; align-items:center; gap:7px; padding:5px 13px; border-radius:999px; background:#fff; border:.5px solid #d6dde8; color:#39424f; font-size:13px; cursor:pointer; user-select:none; line-height:1.4; }
.sp-chip:hover, .tk-multi-item:hover { border-color:#8fb3ec; background:#f8fbff; }
.sp-chip input, .tk-multi-item input { position:absolute; opacity:0; width:1px; height:1px; pointer-events:none; }
.sp-chip::before, .tk-multi-item::before { content:''; display:inline-block; width:15px; height:15px; border-radius:50%; border:.5px solid #c4ccd9; background:#fff; flex-shrink:0; box-sizing:border-box; font-size:10px; line-height:14px; text-align:center; color:#fff; }
.sp-chip.on, .sp-chip:has(input:checked), .tk-multi-item:has(input:checked) { border-color:#3370ff; background:#edf4ff; color:#1c56c7; }
.sp-chip.on::before, .sp-chip:has(input:checked)::before, .tk-multi-item:has(input:checked)::before { content:'✓'; background:#3370ff; border-color:#3370ff; }
.sp-chip.hide { display:none; }
.sp-row-count { font-size:12px; color:#8a94a6; margin-left:8px; }
.npu-up input { width:16px; height:16px; accent-color:#3370ff; cursor:pointer; }

/* ---------- 详情 ---------- */
.detail-status { display:inline-block; margin-bottom:12px; font-size:13px; }
.dt-row { display:flex; padding:7px 0; border-bottom:1px dashed var(--line); font-size:14px; gap:10px; }
.dt-k { width:88px; color:var(--ink-2); flex-shrink:0; }
.dt-v { flex:1; word-break:break-all; color:var(--ink); }
.oc-text { word-break:break-all; }
.money { color:#f53f3f; }
.money.loss { color:#389e0d; }
.detail-actions { margin-top:14px; }
.his-box { background:#f7f8fa; border-radius:9px; padding:8px 10px; }
.his-row { display:flex; gap:8px; font-size:13px; padding:3px 0; }
.his-st { color:var(--ink); font-weight:500; width:64px; }
.his-by { color:var(--wood); flex:1; }
.his-at { color:var(--ink-3); font-size:12px; }
.his-dur { color:#3370ff; font-size:12px; font-weight:600; }  /* v0.5.123 步骤耗时 */
.his-total { margin-top:6px; padding-top:6px; border-top:1px dashed #d5d9e0; font-size:13px; color:var(--ink-2); }  /* v0.5.123 总耗时行 */
.his-total b { color:var(--ink); font-size:14px; }
.flow-stat-box { display:flex; flex-direction:column; gap:8px; }  /* v0.5.123 流转耗时面板 */
.flow-concl { background:#eef3ff; border-left:3px solid #3370ff; border-radius:8px; padding:8px 12px; font-size:13px; color:var(--ink-2); }
.flow-concl b { color:#3370ff; }

/* ---------- 表格 ---------- */
.table-wrap { overflow-x:auto; border-radius:12px; border:1px solid var(--line); }
.data-table { width:100%; border-collapse:collapse; font-size:13.5px; }
.data-table th { background:#f7f8fa; color:var(--ink-2); font-size:12.5px; font-weight:600; letter-spacing:.4px; text-align:left; padding:10px 8px; white-space:nowrap; border-bottom:1px solid var(--line); }
.data-table td { padding:8px; border-bottom:1px solid #f2f3f5; vertical-align:middle; color:var(--ink); }
.data-table tbody tr:hover { background:#f7f8fa; }
.data-table .cell-sub { font-size:12px; color:var(--ink-3); margin-top:2px; }
.plan-table { margin-top:12px; }
.plan-table .num { text-align:center; font-variant-numeric:tabular-nums; }
.plan-table .actions { white-space:nowrap; text-align:right; }
.plan-table .actions button { margin-left:4px; }
.plan-done-note { margin-top:4px; font-size:12px; color:#389e0d; }
.cell-input { width:110px; padding:6px 8px; border:1px solid var(--line-strong); border-radius:8px; font-size:13px; background:var(--panel); transition:border-color .15s ease, box-shadow .15s ease; }
.cell-input:focus { outline:none; border-color:var(--wood-l); box-shadow:0 0 0 3px rgba(51,112,255,.12); }
.cell-input.num { width:82px; font-variant-numeric:tabular-nums; }
/* v0.5.87 产品目录排密：表头/单元格内边距收窄，成本/二次成本/重量/业务线列宽收窄 */
#prod-table th, #prod-table td { padding:6px 6px; }
#prod-table .cell-input { width:74px; padding:5px 6px; font-size:12.5px; }
#prod-table .cell-input.num { width:64px; }
#prod-table select.cell-input { width:86px; padding:5px 4px; }
#prod-table .td-sub { font-size:10.5px; }
/* v0.5.97 尺寸列（长×宽×厚 三输入） */
#prod-table .sz3 { white-space: nowrap; }  /* v0.5.164 尺寸列已删，样式保留兼容 */
/* v0.5.164 货品编码/商品编码列拉宽：一行看全名称不截断
   v0.5.178 改为自动换行：编辑态 textarea 随内容自动长高（taAutoH），非编辑态文本 word-break 换行 */
#prod-table .pn-td, #prod-table .pw-td { max-width:240px; }
#prod-table .pn-td .cell-input { width:100%; min-width:170px; }
#prod-table .pw-td .cell-input { width:100%; min-width:140px; }
#prod-table .pn-ta { resize:none; overflow:hidden; display:block; height:30px; line-height:1.45; padding:5px 8px; box-sizing:border-box; }
#prod-table .pn-txt { word-break:break-all; white-space:normal; }
#prod-table .sz3 input { width:46px; padding:5px 4px; font-size:12px; }
/* v0.5.237：产品目录表头列宽可手动拉（拖表头右下角） */
#prod-table th { resize:horizontal; overflow:hidden; min-width:56px; }
#prod-table .sz3 .sz-x { color:var(--ink-3); padding:0 1px; font-size:11px; }
#prod-table .badge { padding:2px 8px; font-size:11.5px; }
/* v0.5.93 产品目录「是否已上ERP」列：窄列居中，勾选框加大 */
#prod-table .erp-td { text-align:center; white-space:nowrap; font-size:12.5px; color:var(--text-2); }
#prod-table .erp-td input[type=checkbox] { width:17px; height:17px; cursor:pointer; accent-color:#3370ff; vertical-align:middle; }
/* v0.5.159 行政中心花名册表格（紧凑版） */
.hr-table { width:100%; border-collapse:collapse; font-size:13px; }
.hr-table th { background:#f7f8fa; color:var(--ink-2); font-size:12px; font-weight:600; letter-spacing:.4px; text-align:left; padding:7px 8px; white-space:nowrap; border-bottom:1px solid var(--line); }
.hr-table td { padding:7px 8px; border-bottom:1px solid #f2f3f5; vertical-align:middle; color:var(--ink); }
.hr-table tbody tr:hover { background:#f7f8fa; }
.hr-table .hr-ops { white-space:nowrap; text-align:right; }
.hr-table .hr-ops button { margin-left:4px; }
/* v0.5.159 证件过期红色高亮 */
.cert-expire { color:#dc2626; font-weight:600; }
/* v0.5.159 制度正文保留换行 */
.policy-content { white-space:pre-line; }
/* v0.5.160 花名册 Tab 提醒红点 */
.tab-dot { display:inline-block; width:8px; height:8px; border-radius:50%; background:#e5484d; margin-left:4px; vertical-align:middle; }
/* v0.5.160 花名册到期提醒警示区 */
.alert-bar { background:#fff8e6; border:1px solid #f5d98a; border-radius:8px; padding:10px 12px; margin:10px 0; }
.alert-item { font-size:13px; color:#7a5b1e; line-height:1.9; }
.alert-date { margin-left:8px; color:#b08a3a; font-size:12px; }
/* v0.5.160 花名册状态徽章：试用蓝 / 离职灰 */
.st-probation { background:#e8f1ff; color:#3370ff; }
.st-left { background:#f0f0f0; color:#8a8f99; }
/* v0.5.160 花名册详情两列表格 */
.detail-table { margin:10px 0 4px; }
.dt-row { display:flex; padding:8px 4px; border-bottom:1px solid #f2f3f5; font-size:14px; }
.dt-row:last-child { border-bottom:none; }
.dt-k { width:110px; flex-shrink:0; color:var(--ink-2); font-size:13px; }
.dt-v { flex:1; color:var(--ink); word-break:break-all; }
.form-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:0 12px; }
/* v0.5.161 考勤打卡：今日打卡卡 + 上下班时间行 + 月份选择器 */
.att-today { background:#fff; border:1px solid var(--line); border-radius:12px; padding:12px 14px; margin:10px 0; }
.att-clock-row { display:flex; align-items:center; gap:18px; margin-top:10px; flex-wrap:wrap; }
.att-clock-cell { display:flex; flex-direction:column; gap:2px; }
.att-clock-cell span { font-size:12px; color:var(--ink-2); }
.att-clock-cell b { font-size:20px; color:var(--ink); font-variant-numeric:tabular-nums; }
.att-clock-btns { margin-left:auto; display:flex; gap:8px; }
.att-month { border:1px solid var(--line); border-radius:8px; padding:4px 8px; font-size:13px; color:var(--ink); background:#fff; }
@media (max-width:768px) { .att-clock-btns { margin-left:0; width:100%; } .att-clock-btns button { flex:1; } }
/* v0.5.162 催单：卡片催单按钮 + 厂长被催标记 + 工作台催单提醒行 */
.oc-urge { border:1px solid #ff8800; background:#fff7e8; color:#d25f00; border-radius:6px; padding:2px 8px; font-size:12px; cursor:pointer; }
.oc-urge.hot { background:#ffece8; border-color:#f53f3f; color:#d83931; font-weight:600; }
.chip-urge { background:#ffece8; color:#d83931; font-size:11px; border-radius:4px; padding:1px 6px; font-weight:600; }
.btn-warn { background:#ff8800; color:#fff; border:none; border-radius:10px; padding:12px 16px; font-size:15px; cursor:pointer; width:100%; }
.btn-warn:active { opacity:.85; }
.urge-row { border:1px solid #ffd6c4; background:#fff7f5; border-radius:10px; padding:10px 12px; margin:8px 0; display:flex; flex-direction:column; gap:6px; }
.urge-main { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.urge-id { color:#3370ff; font-weight:600; font-size:13px; cursor:pointer; }
.urge-name { color:var(--ink); font-size:14px; }
.urge-sub { font-size:12.5px; color:var(--ink-2); }
.urge-ops { display:flex; gap:8px; }
.urge-txt { color:#d83931; font-weight:600; }
@media (max-width:768px) { .urge-ops button { flex:1; } }
/* v0.5.163 日志点阅：老板点阅条 + 驾驶舱未点阅高亮行 */
.boss-read-bar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; background:#eef4ff; border:1px solid #c9dcff; border-radius:8px; padding:8px 12px; margin-bottom:10px; font-size:13px; color:var(--ink); }
.boss-read-bar > b { color:#3370ff; font-size:12px; }
.br-day { display:inline-flex; align-items:center; gap:6px; background:#fff; border:1px solid var(--line); border-radius:6px; padding:2px 8px; }
.br-ok { color:#2ea121; font-size:12px; }
.br-btn { border:none; background:#3370ff; color:#fff; border-radius:5px; padding:2px 10px; font-size:12px; cursor:pointer; }
.br-btn:active { opacity:.85; }
.br-tip { margin-left:auto; font-size:11.5px; color:var(--ink-2); }
.bcock-w-hot { background:#fff2f0 !important; }
.bcock-w-hot .bcock-due b { color:#d83931; }
@media (max-width:768px) { .br-tip { display:none; } }

/* ---------- 汇总 ---------- */
.stat-summary { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:6px; }
.ss { background:#f7f8fa; border:1px solid var(--line); border-radius:12px; padding:10px 16px; text-align:center; min-width:86px; flex:1; }
.ss b { display:block; font-size:17px; color:var(--ink); }
.ss span { font-size:12px; color:var(--ink-2); }
.ss-money b { color:#f53f3f; }

/* ---------- 移动端 ---------- */
@media (max-width:768px) {
  .sidebar { transform:translateX(-100%); width:230px; }
  .sidebar.open { transform:none; }
  .main { margin-left:0; padding:12px; padding-top:60px; }
  .topbar { left:0; }
  .menu-btn { display:block; }
  .mask { align-items:flex-end; }
  .modal-panel { border-radius:14px 14px 0 0; }
  .dash-cards { grid-template-columns:repeat(3,1fr); }
  .dt-k { width:76px; }
  /* v0.5.86 算价工具订单设置：手机端单列横排卡片（标签左、输入右） */
  .calc-settings-grid { grid-template-columns:1fr; }
  .cs-card { display:flex; align-items:center; justify-content:space-between; text-align:left; gap:10px; padding:10px 12px; }
  .cs-card .cs-label { margin-bottom:0; text-align:left; flex:1; align-items:flex-start; }
  .cs-card .cs-input { width:110px; flex-shrink:0; }
  .cs-card #calc-region { flex:1; width:auto; min-width:0; }
  .cs-card .cs-ship { flex-shrink:0; padding:0; }
  /* v0.5.86 称重工具：手机端每行拆两段（尺寸一行、三种重量一行），不再横向挤压 */
  .wt-head-cols { display:none; }
  .wt-row { flex-wrap:wrap; }
  .wt-row-idx { order:1; }
  .wt-row-dims { order:2; flex:1; min-width:0; }
  .wt-row-cols { order:4; flex:1 1 auto; min-width:0; gap:8px; padding-top:8px; margin-top:8px; border-top:1px dashed var(--cbd); }
  #page-weight .wt-row-dims .dim-box { flex:0 1 74px; }
  .wt-col-sum { padding:5px 0; }
  /* v0.5.88 称重工具手机端：尺寸铺满一行、删除按钮挪第二行(与重量同行)、材质+形状同屏、添加行加大 */
  #page-weight .panel { padding:14px 12px; }
  #page-weight .wt-row-dims .dim-box { flex:1 1 0; min-width:0; padding:8px 4px; }
  #page-weight .wt-row-dims .dim-box input { font-size:20px; }
  .wt-row-del { order:4; }
  .wt-top { display:grid; grid-template-columns:1fr 1fr; gap:10px; align-items:start; }
  #page-weight .wt-top .wt-col { text-align:left; }
  #page-weight .wt-top .wood-grid { grid-template-columns:repeat(2,1fr); gap:7px; }
  #page-weight .wt-top .cwood { min-height:44px; font-size:13.5px; padding:8px 3px; border-radius:10px; }
  #page-weight .wt-top .chip-row { gap:6px; }
  #page-weight .wt-top .cchip { flex:1; padding:8px 4px; font-size:12.5px; border-radius:18px; text-align:center; }
  .wt-step-add { flex-wrap:wrap; gap:8px; }
  .wt-add-btn { flex:1 1 100%; padding:12px 16px; font-size:15px; border-radius:24px; }
  /* v0.5.88 算价工具手机端：标题压扁、材质2列大格子、面板留白收紧、附加工艺2列紧凑、报价栏去偏移 */
  #page-calc .calc-hero { padding:6px 10px 2px; }
  #page-calc .calc-hero-title { font-size:18px; letter-spacing:.5px; }
  #page-calc .calc-hero-sub { font-size:11px; margin-top:2px; }
  #page-calc .panel { padding:13px 12px; }
  #page-calc .calc-panel { margin-bottom:10px; }
  #page-calc .dim-row { gap:8px; }
  #page-calc .dim-box { padding:10px 4px; border-radius:12px; }
  #page-calc .dim-box input { font-size:20px; }
  #page-calc .wood-grid { grid-template-columns:repeat(2,1fr); gap:8px; }
  #page-calc .cwood { min-height:50px; font-size:15px; padding:8px 4px; border-radius:12px; }
  #page-calc .cwood-tag { font-size:10px; margin-top:3px; }
  /* v0.5.93 附加工艺手机端：单列整行；v0.5.156 卡片本身已是两行布局 */
  #page-calc .cproc-grid { grid-template-columns:1fr; gap:8px; }
  #page-calc .cproc { padding:10px 12px; }
  #page-calc .cproc-set input { width:58px; padding:6px 4px; font-size:13px; }
  .calc-quote-card { margin-left:0; max-width:100%; padding:10px 14px; gap:10px; padding-bottom:calc(10px + env(safe-area-inset-bottom)); }
  .calc-total { font-size:24px; }
  .calc-bar-btn { padding:12px 20px; font-size:15px; border-radius:12px; }
}
@media (min-width:769px) {
  .mask { align-items:center; }
  .modal-panel { border-radius:14px; }
  /* v0.5.86 算价工具：电脑端 4 个面板两列排布（尺寸|材质 / 工艺|订单设置），减少纵向滚动 */
  #page-calc { display:grid; grid-template-columns:1fr 1fr; gap:14px; align-items:start; }
  #page-calc .calc-hero { grid-column:1 / -1; }
  /* v0.5.90：附加工艺、订单设置面板跨整行，内容更宽松精致 */
  #page-calc .calc-panel-wide { grid-column:1 / -1; }
  /* v0.5.90：木材材质格子排字收窄（只影响算价工具） */
  #page-calc .wood-grid { grid-template-columns:repeat(auto-fill,minmax(92px,1fr)); gap:8px; }
  #page-calc .cwood { min-height:46px; font-size:14px; padding:10px 6px; border-radius:12px; }
  /* v0.5.90：订单设置 定制数量/利润率/发货区域/运费 四项并排一行 */
  #page-calc .calc-settings-grid { grid-template-columns:repeat(4,1fr); }
  #page-calc .cs-card { padding:10px; }
  #page-calc .cs-label { margin-bottom:6px; font-size:12.5px; }
  /* v0.5.86 称重工具：电脑端 材质+形状 并排 */
  .wt-top { display:grid; grid-template-columns:1fr 1fr; gap:18px; align-items:start; }
}

/* ---------- 算价工具（淡米色高档主题 v0.5.60）---------- */
#page-calc { --cp:#3370ff; --cpl:#6690ff; --cpd:#1f2329; --cbg:#f7f8fa; --cbd:#e5e6eb; --ctxt:#1f2329; --clight:#8f959e; --caccent:#ff7d00; --csuccess:#00b42a; --calc-paper:#ffffff; padding-bottom:100px; }
#page-calc .panel { background:var(--calc-paper); border:1px solid var(--cbd); border-radius:18px; box-shadow:0 2px 10px rgba(51,112,255,.05); }
.calc-hero { text-align:center; padding:18px 12px 6px; }
.calc-hero-title { font-size:26px; font-weight:700; color:var(--cp); letter-spacing:1px; }
.calc-hero-sub { font-size:13px; color:var(--clight); margin-top:6px; }
.calc-panel { margin-bottom:14px; }
#page-calc .panel-title-row { margin-bottom:12px; }
.calc-step { font-size:15px; font-weight:700; margin:0; display:flex; align-items:center; gap:8px; color:var(--cp); }
.calc-step .num { background:var(--cp); color:#fff; width:24px; height:24px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:13px; box-shadow:0 2px 6px rgba(51,112,255,.25); }
.calc-step-hint { font-size:11px; color:var(--clight); font-weight:400; }
.calc-sub-title { font-size:13px; font-weight:700; margin:16px 0 8px; color:var(--clight); text-transform:uppercase; letter-spacing:1px; }
/* 按钮（算价页专用，适配米色主题） */
.btn-calc-primary { background:var(--cp); color:#fff; border:none; border-radius:8px; padding:7px 14px; font-size:13px; cursor:pointer; font-weight:600; }
.btn-calc-primary:hover { background:var(--cpd); }
.btn-calc-ghost { background:#fff; color:var(--cp); border:1.5px solid var(--cbd); border-radius:8px; padding:7px 14px; font-size:13px; cursor:pointer; font-weight:600; }
.btn-calc-ghost:hover { background:var(--cbg); border-color:var(--cpl); }
/* 尺寸输入 */
.dim-row { display:flex; gap:12px; }
.dim-box { flex:1; background:var(--cbg); border:1.5px solid var(--cbd); border-radius:16px; padding:14px 8px; text-align:center; transition:all .2s; }
.dim-box:focus-within { border-color:var(--cpl); background:#fff; box-shadow:0 0 0 4px rgba(102,144,255,.10); }
.dim-label { font-size:12px; color:var(--clight); font-weight:700; margin-bottom:6px; letter-spacing:1px; }
.dim-box input { width:100%; border:none; background:transparent; font-size:24px; font-weight:700; color:var(--cp); outline:none; padding:0; }
.dim-unit { font-size:11px; color:var(--clight); margin-top:2px; }
/* 造型/倒角 chips */
.chip-row { display:flex; flex-wrap:wrap; gap:10px; }
.cchip { padding:10px 18px; background:#fff; border:1.5px solid var(--cbd); border-radius:24px; font-size:14px; cursor:pointer; color:var(--ctxt); font-weight:500; transition:all .15s; }
.cchip:hover { border-color:var(--cpl); color:var(--cp); }
.cchip.active { background:var(--cp); border-color:var(--cp); color:#fff; font-weight:600; box-shadow:0 3px 10px rgba(51,112,255,.25); }
.cchip .cchip-n { display:inline-block; min-width:18px; padding:0 5px; margin-left:4px; background:rgba(0,0,0,.07); color:inherit; border-radius:9px; font-size:12px; line-height:1.4; vertical-align:middle; }
.cchip.active .cchip-n { background:rgba(255,255,255,.25); }
/* 木材按钮 */
.wood-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(110px,1fr)); gap:10px; }
.cwood { background:#fff; border:1.5px solid var(--cbd); border-radius:14px; padding:12px 8px; cursor:pointer; font-size:15px; color:var(--ctxt); line-height:1.35; font-weight:700; display:flex; align-items:center; justify-content:center; text-align:center; min-height:50px; transition:all .15s; }
.cwood:hover { border-color:var(--cpl); }
.cwood.active { background:var(--cp); border-color:var(--cp); color:#fff; font-weight:700; box-shadow:0 3px 10px rgba(51,112,255,.22); }
.cwood-tag { display:block; font-size:10px; margin-top:3px; opacity:.75; font-weight:400; }
/* 附加工艺 - v0.5.93 内容+价格+数量并排一行 */
.cproc-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:10px; }
.cproc { background:#fff; border:1.5px solid var(--cbd); border-radius:14px; padding:10px 12px; display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto; gap:6px 10px; align-items:center; transition:all .2s; }
.cproc.on { border-color:var(--csuccess); box-shadow:0 3px 12px rgba(0,180,42,.12); background:#f6ffed; }
.cproc-check { width:40px; height:24px; background:var(--cbd); border-radius:12px; flex-shrink:0; cursor:pointer; position:relative; transition:background .2s; border-width:0; }
.cproc-check::after { content:''; position:absolute; width:20px; height:20px; background:#fff; border-radius:50%; top:2px; left:2px; transition:transform .2s; box-shadow:0 1px 4px rgba(0,0,0,.15); }
.cproc.on .cproc-check { background:var(--csuccess); }
.cproc.on .cproc-check::after { transform:translateX(16px); }
.cproc-name { grid-column:2; grid-row:1; min-width:0; font-size:15px; font-weight:700; color:var(--cp); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cproc-set { grid-column:1 / -1; grid-row:2; display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:5px; font-size:13px; color:var(--ctxt); }
.cproc.on .cproc-set { color:var(--ctxt); }
.cproc-set input { width:56px; padding:6px 4px; border:1.5px solid var(--cbd); border-radius:10px; font-size:14px; font-weight:700; text-align:center; background:#fff; color:var(--ctxt); outline:none; }
.cproc-set input:focus { border-color:var(--cpl); }
.cproc-sum { font-size:15px; font-weight:800; color:var(--caccent); }
/* v0.5.156：附加工艺卡片两行布局（名称独占首行、¥价×数量+合计第二行），手机端同样适用，字不再被挤住 */
@media (max-width:768px) {
  .cproc-grid { grid-template-columns:1fr; }
  .cproc { padding:10px 12px; }
  .cproc-set input { width:58px; }
}
/* 订单设置（v0.5.86：定制数量/利润率/发货区域/运费 2×2 并排卡片，手机端单列横排） */
.calc-settings-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.cs-card { background:var(--cbg); border:1.5px solid var(--cbd); border-radius:14px; padding:12px 12px; text-align:center; transition:all .2s; }
.cs-card:focus-within { border-color:var(--cpl); background:#fff; box-shadow:0 0 0 4px rgba(102,144,255,.10); }
.cs-label { font-size:13px; font-weight:700; color:var(--cp); display:flex; flex-direction:column; gap:3px; align-items:center; margin-bottom:8px; line-height:1.3; }
.cs-hint { font-size:10px; color:var(--clight); font-weight:500; }
.cs-input { width:100%; box-sizing:border-box; padding:9px 8px; border:1.5px solid var(--cbd); border-radius:10px; font-size:17px; font-weight:700; text-align:center; background:#fff; color:var(--ctxt); outline:none; }
.cs-input:focus { border-color:var(--cpl); box-shadow:0 0 0 3px rgba(102,144,255,.12); }
#calc-region { width:100%; box-sizing:border-box; padding:9px 8px; border:1.5px solid var(--cbd); border-radius:10px; font-size:14px; background:#fff; color:var(--ctxt); outline:none; }
#calc-region:focus { border-color:var(--cpl); box-shadow:0 0 0 3px rgba(102,144,255,.12); }
.cs-ship { font-size:22px; font-weight:800; color:var(--caccent); padding:2px 0 6px; line-height:1.2; }
.calc-ship-val { font-size:20px; font-weight:800; color:var(--caccent); }
.calc-alert { background:#fffbe6; color:#ad6800; border-radius:10px; padding:9px 13px; font-size:12px; margin-top:10px; border:1px solid #ffe58f; }
/* v0.5.97 产品带入下拉 */
.calc-prod-row { margin-bottom:10px; }
.calc-prod-row select { width:100%; padding:9px 12px; border:1.5px solid var(--cbd); border-radius:12px; background:var(--cbg); font-size:13px; color:var(--cp); outline:none; }
.calc-bar-actions { display:flex; gap:8px; flex-shrink:0; }
.calc-bar-btn.ghost { background:var(--cbg); color:var(--cp); border:1.5px solid var(--cpl); box-shadow:none; }
.calc-info-strip { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:14px; }
.cic { background:var(--cbg); border:1px solid var(--cbd); border-radius:12px; padding:10px; text-align:center; }
.cic-l { font-size:11px; color:var(--clight); font-weight:600; }
.cic-v { font-size:15px; font-weight:700; margin-top:3px; color:var(--cp); }
.cic-v.t { font-weight:500; font-size:13px; }
/* v0.5.155：参考数据折叠面板（算价工具） */
.calc-ref-panel { margin-top:12px; border:1.5px solid var(--cbd); border-radius:12px; background:#fff; overflow:hidden; }
.calc-ref-hd { display:flex; align-items:center; justify-content:space-between; padding:10px 14px; cursor:pointer; font-size:14px; font-weight:700; color:var(--cp); user-select:none; }
.calc-ref-hd:hover { background:var(--cbg); }
.calc-ref-hint { font-size:11px; font-weight:500; color:var(--clight); margin-left:4px; }
.calc-ref-arrow { font-size:12px; color:var(--clight); transition:transform .2s; }
.calc-ref-panel.open .calc-ref-arrow { transform:rotate(90deg); }
.calc-ref-body { padding:2px 14px 14px; }
.calc-ref-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.co-card { background:var(--cbg); border:1px solid var(--cbd); border-radius:10px; padding:8px 8px 9px; text-align:center; }
.co-label { font-size:12px; font-weight:700; color:var(--cp); margin-bottom:6px; }
.co-hint { font-size:10px; color:var(--clight); font-weight:500; margin-left:2px; }
.co-input { width:100%; box-sizing:border-box; padding:8px 4px; border:1.5px solid var(--cbd); border-radius:8px; font-size:15px; font-weight:700; text-align:center; background:#fff; color:var(--ctxt); outline:none; }
.co-input:focus { border-color:var(--cpl); box-shadow:0 0 0 3px rgba(102,144,255,.12); }
.co-input::placeholder { color:var(--clight); font-weight:600; }
.co-card.ovr .co-input { border-color:var(--caccent); background:#fff7e8; }
.co-note { font-size:11px; color:var(--clight); line-height:1.6; margin:8px 0; }
@media (max-width:768px) {
  .calc-ref-grid { grid-template-columns:1fr 1fr; }
}
/* 底部固定价格栏 */
.calc-quote-card { position:fixed; bottom:0; left:0; right:0; background:var(--calc-paper); border-top:1px solid var(--cbd); box-shadow:0 -4px 24px rgba(51,112,255,.10); padding:14px 18px; z-index:50; display:flex; align-items:center; gap:14px; margin:0; max-width:1100px; margin-left:210px; }
.calc-bar-price { flex:1; cursor:pointer; border-radius:10px; padding:2px 6px 2px 2px; transition:background .15s; }
.calc-bar-price:hover { background:rgba(51,112,255,.07); }
.calc-bar-price:active { background:rgba(51,112,255,.12); }
.calc-bar-label { font-size:11px; color:var(--clight); font-weight:600; }
.calc-price-hint { font-size:10px; font-weight:500; opacity:.6; margin-left:6px; }
.calc-total { font-size:30px; font-weight:800; color:var(--caccent); line-height:1.15; }
.calc-quote-sub { font-size:11px; color:var(--clight); }
.calc-bar-btn { background:var(--cp); color:#fff; border:none; padding:13px 24px; border-radius:14px; font-size:15px; font-weight:700; cursor:pointer; flex-shrink:0; box-shadow:0 3px 12px rgba(51,112,255,.25); }
.calc-bar-btn:active { background:var(--cpd); transform:translateY(1px); }
/* 明细弹窗 → 居中窄卡片（v0.5.74：不再全宽贴底，收窄到 480px 内） */
#calc-sheet { --cp:#3370ff; --cpl:#6690ff; --cpd:#1f2329; --cbg:#f7f8fa; --cbd:#e5e6eb; --ctxt:#1a1a1a; --clight:#666; --caccent:#ff7d00; --csuccess:#00b42a; --calc-paper:#FFFFFF; position:fixed; bottom:5vh; left:50%; width:min(480px, 92vw); background:#FFFFFF; color:#1a1a1a; border-radius:18px; max-height:74vh; overflow-y:auto; z-index:201; transform:translate(-50%, 130%); opacity:0; transition:transform .3s cubic-bezier(.32,.72,0,1), opacity .25s; box-shadow:0 18px 52px rgba(31,35,41,.28); margin:0; top:auto; padding:0 18px 16px; }
#calc-sheet .modal-title { font-size:16px; font-weight:700; text-align:center; padding:4px 0 10px; color:var(--cp); }
#calc-sheet.show { transform:translate(-50%, 0); opacity:1; }
#calc-sheet-mask.show { opacity:1; pointer-events:auto; }
#calc-sheet-mask { background:rgba(31,35,41,.45); z-index:200; opacity:0; pointer-events:none; transition:opacity .25s; }
.calc-sheet-handle { width:44px; height:4px; background:#d0d3d9; border-radius:3px; margin:10px auto 6px; cursor:pointer; }
.calc-sheet-header { display:flex; align-items:center; justify-content:space-between; padding:0 0 6px; }
.calc-sheet-header .modal-title { flex:1; text-align:center; padding:4px 0; margin:0; }
.calc-sheet-close { width:30px; height:30px; border:none; background:var(--cbg); color:var(--clight); border-radius:50%; font-size:20px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.calc-sheet-close:hover { background:var(--cbd); color:var(--cp); }
#calc-sheet .bd-row { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; padding:8px 0; border-bottom:1px solid var(--cbd); }
#calc-sheet .bd-row.sub { background:var(--cbg); margin:6px -10px 0; padding:10px 10px; border-radius:10px; border:none; }
#calc-sheet .sheet-note { margin-top:10px; padding:9px 11px; }
/* v0.5.232：报价话术预览卡片（桌面+手机都显示，算完价自动生成） */
.calc-quote-box { margin-top:14px; border:1.5px solid var(--cbd); border-radius:14px; background:#fff; padding:12px 14px 14px; }
.calc-quote-hd { font-size:14px; font-weight:800; color:var(--cp); display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.calc-quote-hint { font-size:11px; font-weight:500; color:var(--clight); }
.calc-quote-text { margin-top:8px; background:var(--cbg); border:1px dashed var(--cbd); border-radius:10px; padding:10px 12px; font-size:13px; line-height:1.8; color:var(--ctxt); white-space:pre-line; word-break:break-word; }
.calc-quote-text { cursor:pointer; -webkit-user-select:all; user-select:all; transition:border-color .15s; }
.calc-quote-text:hover, .calc-quote-text:active { border-color:var(--cp); background:#f3f7ff; }
/* v0.5.260 轻提示条（复制反馈等，2.2s 自动消失，不打断操作） */
.gd-toast { position:fixed; left:50%; bottom:88px; transform:translateX(-50%); z-index:9999; background:rgba(30,41,59,.94); color:#fff; font-size:13.5px; padding:10px 18px; border-radius:999px; box-shadow:0 6px 20px rgba(0,0,0,.18); max-width:82vw; text-align:center; animation:gd-toast-in .18s ease-out; }
.gd-toast.err { background:rgba(216,57,49,.95); }
@keyframes gd-toast-in { from { opacity:0; transform:translate(-50%,8px); } to { opacity:1; transform:translate(-50%,0); } }
/* v0.5.232：手机端内嵌费用明细（打开算价页直接看到，不用点弹层）——桌面端隐藏 */
.calc-detail-inline { display:none; }
@media (max-width:768px) {
  .calc-detail-inline { display:block; margin-top:14px; border:1.5px solid var(--cbd); border-radius:14px; background:#fff; padding:12px 14px; }
  .calc-detail-inline .cdi-head { font-size:14px; font-weight:800; color:var(--cp); cursor:pointer; user-select:none; display:flex; justify-content:space-between; align-items:center; padding:2px 0; }
  .calc-detail-inline .cdi-arrow { font-size:11px; color:var(--clight); font-weight:600; }
  .calc-detail-inline .cdi-head:active { opacity:.6; }
  .calc-detail-inline .bd-row { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; padding:8px 0; border-bottom:1px solid var(--cbd); }
  .calc-detail-inline .bd-label { font-size:13px; font-weight:700; }
  .calc-detail-inline .bd-detail { font-size:11px; color:var(--clight); line-height:1.55; margin-top:2px; }
  .calc-detail-inline .bd-value { font-size:13px; font-weight:800; white-space:nowrap; }
  .calc-detail-inline .bd-row.sub { background:var(--cbg); margin:5px -10px 0; padding:9px 10px; border-radius:9px; border:none; }
  .calc-detail-inline .bd-row.sub .bd-value { font-size:15px; }
  .calc-detail-inline .bd-row.profit-row .bd-value { color:var(--csuccess); }
  /* 明细已内嵌显示，手机端隐藏「查看明细」弹层按钮 */
  #calc-view-sheet-btn { display:none; }
}
/* v0.5.119：算价明细面板手机端优化——铺满底部、加高、字号加大，清单滚动看全（须置于桌面样式之后覆盖） */
@media (max-width:768px) {
  #calc-sheet { left:0; right:0; width:100%; transform:translate(0, 130%); border-radius:16px 16px 0 0; max-height:84vh; bottom:0; padding:0 14px calc(14px + env(safe-area-inset-bottom)); -webkit-overflow-scrolling:touch; }
  #calc-sheet.show { transform:translate(0, 0); }
  #calc-sheet .modal-title { font-size:17px; }
  #calc-sheet .bd-row { padding:11px 0; }
  #calc-sheet .bd-label { font-size:15px; font-weight:700; }
  #calc-sheet .bd-detail { font-size:13px; line-height:1.65; }
  #calc-sheet .bd-value { font-size:16px; font-weight:800; }
  #calc-sheet .bd-row.sub .bd-value { font-size:18px; }
  #calc-sheet .sheet-note { font-size:13px; line-height:1.7; }
}
/* 明细行 */
.bd-row { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; padding:11px 0; border-bottom:1px solid var(--cbd); }
.bd-row:last-child { border-bottom:none; }
.bd-label { font-size:14px; font-weight:700; color:var(--cp); }
.bd-detail { font-size:11px; color:var(--clight); margin-top:2px; line-height:1.5; }
.bd-value { font-size:15px; font-weight:700; white-space:nowrap; color:var(--ctxt); }
.bd-row.sub { background:var(--cbg); margin:8px -12px 0; padding:13px 12px; border-radius:12px; border:none; }
.bd-row.sub .bd-label { font-size:15px; font-weight:700; color:var(--cp); }
.bd-row.sub .bd-value { font-size:19px; color:var(--caccent); }
.bd-row.profit-row .bd-value { color:var(--csuccess); }
.sheet-note { font-size:11px; color:var(--clight); line-height:1.7; background:var(--cbg); border-radius:12px; padding:12px 14px; margin-top:14px; border:1px solid var(--cbd); }

/* ---------- 称重工具（v0.5.74：每行 产品+含包装×1.15，输入框改小）---------- */
#page-weight { --cp:#3370ff; --cpl:#6690ff; --cpd:#1f2329; --cbg:#f7f8fa; --cbd:#e5e6eb; --ctxt:#1f2329; --clight:#8f959e; --caccent:#ff7d00; --csuccess:#00b42a; --calc-paper:#ffffff; }
#page-weight .panel { background:var(--calc-paper); border:1px solid var(--cbd); border-radius:18px; box-shadow:0 2px 10px rgba(51,112,255,.05); }
.wt-panel { margin-top:12px; }
.wt-step-add { display:flex; align-items:center; justify-content:space-between; }
.wt-add-btn { background:var(--cp); color:#fff; border:none; padding:7px 16px; border-radius:20px; font-size:13px; font-weight:600; cursor:pointer; white-space:nowrap; }
.wt-add-btn:hover { background:var(--cpd); }
.wt-row { display:flex; align-items:center; gap:10px; background:#fff; border:1.5px solid var(--cbd); border-radius:14px; padding:9px 12px; margin-bottom:9px; transition:border-color .15s; }
.wt-row:focus-within { border-color:var(--cpl); }
.wt-row-idx { width:24px; height:24px; background:var(--cp); color:#fff; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:700; flex-shrink:0; }
.wt-row-dims { display:flex; align-items:center; gap:8px; flex:1; flex-wrap:wrap; }
/* v0.5.74 尺寸输入框收窄变矮：不再撑满整行 */
#page-weight .wt-row-dims .dim-box { flex:0 1 92px; padding:6px 6px; border-radius:10px; }
#page-weight .wt-row-dims .dim-box .dim-label { margin-bottom:1px; font-size:11px; letter-spacing:0; }
#page-weight .wt-row-dims .dim-box input { font-size:17px; }
#page-weight .wt-row-dims .dim-box .dim-unit { margin-top:0; font-size:10px; }
/* v0.5.75 每行三列：产品重量 / 包装重量 / 合计重量 */
.wt-head { display:flex; align-items:center; gap:10px; padding:0 12px; margin:2px 0 6px; }
.wt-head-cell { flex:1 1 auto; font-size:11px; color:var(--clight); font-weight:700; letter-spacing:.5px; }
.wt-head-idx { flex:0 0 24px; }
.wt-head-del { flex:0 0 26px; }
.wt-row-cols { display:flex; gap:4px; flex:0 0 176px; }
.wt-head-cols span { flex:1 1 0; text-align:center; }
.wt-col { flex:1 1 0; text-align:center; min-width:0; }
.wt-col span { font-size:15px; font-weight:800; color:var(--cp); }
.wt-col small { font-size:10px; color:var(--clight); margin-left:1px; }
.wt-col-sum { background:var(--cp); border-radius:9px; padding:3px 0; }
.wt-col-sum span { color:#fff; font-size:16px; }
.wt-col-sum small { color:rgba(255,255,255,.8); }
/* v0.5.157 称重工具：行内每列 G 下方 KG 小字（与合计区 .wt-result-kg 一致，均两位小数） */
.wt-row-kg { font-size:11px; font-weight:600; color:var(--clight); margin-top:2px; line-height:1.35; }
.wt-col-sum .wt-row-kg { color:rgba(255,255,255,.85); }
.wt-row-del { width:26px; height:26px; border:none; background:#f0f0f0; color:#999; border-radius:50%; font-size:17px; cursor:pointer; flex-shrink:0; display:flex; align-items:center; justify-content:center; line-height:1; }
.wt-row-del:hover { background:#f53f3f; color:#fff; }
.wt-result { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:14px; }
.wt-result-item { background:var(--cbg); border:1.5px solid var(--cbd); border-radius:12px; padding:14px 10px; text-align:center; }
.wt-result-total { background:var(--cp); border-color:var(--cp); }
.wt-result-total .wt-result-label, .wt-result-total .wt-result-value, .wt-result-total small { color:#fff; }
.wt-result-label { font-size:12px; color:var(--clight); font-weight:600; }
.wt-result-value { font-size:26px; font-weight:800; color:var(--cp); margin-top:6px; line-height:1.1; }
.wt-result-value small { font-size:13px; font-weight:600; color:var(--clight); }
/* v0.5.150 称重工具：G 重量下方 KG 换算小字 */
.wt-result-kg { font-size:12px; font-weight:600; color:var(--clight); margin-top:4px; }
.wt-result-total .wt-result-kg { color:rgba(255,255,255,.85); }
.wt-ref-hint { font-size:11px; color:var(--clight); margin-top:10px; line-height:1.6; background:var(--cbg); border-radius:8px; padding:8px 12px; }

/* ---------- v0.5.75 产品目录分页 ---------- */
.prod-pager { display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; margin-top:10px; }
.pager-info { font-size:12px; color:#8f959e; white-space:nowrap; }
.pager-btns { display:flex; align-items:center; gap:4px; flex-wrap:wrap; }
.pager-btns .btn-ghost[disabled] { opacity:.4; cursor:default; }
.pager-num { min-width:28px; height:28px; padding:0 6px; border:1px solid #e5e6eb; background:#fff; border-radius:8px; font-size:12px; cursor:pointer; color:#646a73; }
.pager-num:hover { border-color:#ff7d00; }
.pager-num.on { background:#3370ff; border-color:#3370ff; color:#fff; font-weight:700; }
.pager-ellipsis { color:#a9aeb8; padding:0 2px; font-size:12px; }
.pager-size { border:1px solid #e5e6eb; border-radius:8px; padding:5px 8px; font-size:12px; background:#fff; color:#646a73; cursor:pointer; }

/* ---------- v0.5.76 产品目录 包装/合计/预计运费 + 运费设置弹层 ---------- */
.freight-cell { color:#d46b08; font-weight:700; }
.freight-panel { max-width:460px; }
.freight-panel .form-grid { grid-template-columns:repeat(2,1fr); }
#fr-note-chip { margin-left:6px; }

/* ---------- 财务中心（v0.4.5）---------- */
.fin-tabs { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
.fin-tab { padding:8px 14px; background:var(--panel); border:1px solid var(--line-strong); border-radius:18px; font-size:13.5px; color:var(--ink-2); cursor:pointer; }
.fin-tab.active { background:#0f766e; border-color:#0f766e; color:#fff; font-weight:600; }
.fin-list { margin-top:6px; }
.fin-card { background:var(--panel); border:1px solid var(--line); border-radius:11px; padding:10px 12px; margin-bottom:8px; }
/* v0.5.51 任务提醒：NEW 徽标 + 被指派人查看状态 */
.task-new { background:#ef4444; color:#fff; }
.task-seen-tag { font-size:11px; border-radius:6px; padding:1px 7px; margin-left:2px; }
.task-seen { color:#16a34a; background:#f0fdf4; border:1px solid #bbf7d0; }
.task-unseen { color:#d97706; background:#fffbeb; border:1px solid #fde68a; }
/* v0.5.56 任务完成提醒：已完成任务显示「✅ 完成人」绿色标记 */
.task-done-tag { font-size:11px; color:#16a34a; background:#f0fdf4; border:1px solid #bbf7d0; border-radius:6px; padding:1px 7px; margin-left:2px; }
/* v0.5.80 任务回复：对话式回复列表 + 回复输入框 */
.task-reply-box { margin-top:8px; border-top:1px dashed var(--line); padding-top:8px; }
.task-replies { display:flex; flex-direction:column; gap:6px; margin-bottom:8px; max-height:220px; overflow-y:auto; }
.task-reply { background:#f7f8fa; border:1px solid var(--line); border-radius:9px; padding:6px 9px; }
.task-reply-name { font-size:11.5px; font-weight:700; color:var(--ink-2); }
.task-reply-time { font-size:10.5px; color:var(--ink-3); margin-left:6px; }
.task-reply-text { font-size:12.5px; color:var(--ink); margin-top:3px; line-height:1.5; word-break:break-all; white-space:pre-wrap; }
.task-reply-input { display:flex; gap:6px; align-items:center; }
.task-reply-input input { flex:1; min-width:0; border:1px solid var(--line-strong); border-radius:8px; padding:6px 10px; font-size:12.5px; outline:none; background:var(--panel); color:var(--ink); }
.task-reply-input input:focus { border-color:var(--gold); }
.fc-top { display:flex; align-items:center; gap:8px; }
.fc-date { font-size:12px; color:#64748b; min-width:64px; }
.fc-cat { font-size:12px; background:#f1f5f9; color:#475569; border-radius:10px; padding:2px 8px; flex:1; text-align:left; }
.fc-amt { font-size:16px; font-weight:800; white-space:nowrap; }
.fc-amt.fin-in { color:#16a34a; }
.fc-amt.fin-out { color:#dc2626; }
.fc-note { font-size:12.5px; color:#475569; margin-top:5px; line-height:1.5; }
/* v0.5.92 任务协同卡片标题/说明：加大加粗红色 */
.task-title-big { font-size:15.5px; font-weight:800; color:#d4380d; }
.task-desc-big { font-size:14px; font-weight:700; color:#f53f3f; }
.fc-bottom { display:flex; align-items:center; gap:10px; margin-top:6px; font-size:11.5px; color:#94a3b8; }
.fc-bottom .btn-danger { margin-left:auto; }
/* v0.5.258 客服追问 */
.cs-ask-box { margin-top:7px; background:#f8fafc; border:1px solid #e8edf5; border-radius:8px; padding:7px 10px; }
.cs-ask { font-size:12.5px; color:#1e293b; background:#eef2ff; border-radius:6px; padding:5px 9px; margin-bottom:4px; display:flex; align-items:center; gap:6px; }
.cs-ask-ans { background:#e6f7f0; color:#14532d; margin-top:4px; }
.inv-info-pre { background:#f8fafc; border:1px solid #e2e8f0; border-radius:8px; padding:10px 12px; margin:0; font-size:13px; line-height:1.6; white-space:pre-wrap; word-break:break-all; color:#334155; }
.badge.st-rejected { background:#fef2f2; color:#dc2626; }
.fin-cat-cell { font-size:11.5px; color:#64748b; }
.fin-factory { background:#fff; border:1px solid #e2e8f0; border-radius:12px; padding:12px; margin-bottom:10px; }
.ff-head { display:flex; justify-content:space-between; align-items:center; font-size:15px; font-weight:700; margin-bottom:8px; }
.ff-head span { font-size:12px; color:#64748b; font-weight:400; }
.ff-cats { border-top:1px dashed #e2e8f0; margin-top:8px; padding-top:6px; }

/* ---------- 视觉企划中心（v0.4.6）---------- */
.vs-stage-row { display:flex; flex-wrap:wrap; gap:6px; margin:8px 0 6px; }
.vs-stage-row .cchip { padding:4px 12px; font-size:12.5px; cursor:pointer; }
.vs-stage-row .cchip.vs-passed { background:#dcfce7; border-color:#86efac; color:#15803d; }
.vs-progress { height:8px; background:#f1f5f9; border-radius:4px; overflow:hidden; margin:4px 0 2px; }
.vs-progress-bar { height:100%; background:linear-gradient(90deg,#3370ff,#6690ff); border-radius:4px; transition:width .25s; }
.vs-prog-input { padding:4px 6px; border:1px solid #cbd5e1; border-radius:6px; font-size:13px; text-align:center; }
.vs-file-row { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.vs-file { display:inline-block; background:#f1f5f9; border:1px solid #e2e8f0; border-radius:8px; padding:5px 10px; font-size:12.5px; color:#3370ff; text-decoration:none; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
#vs-modal input[type=file] { width:100%; font-size:13px; }

/* ---------- 库存/进度/排班请假（v0.4.7）---------- */
.badge.st-approved { background:#dcfce7; color:#15803d; }
.badge.st-preok { background:#e0f2fe; color:#0369a1; }
.inv-stock-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px; }
.inv-item { background:#fff; border:1px solid #e2e8f0; border-radius:10px; padding:10px 12px; display:flex; align-items:center; justify-content:space-between; }
.inv-item.low { background:#fef2f2; border-color:#fecaca; }
.inv-name { font-size:13.5px; color:#0f172a; }
.inv-name span { font-size:11.5px; color:#64748b; }
.inv-qty { font-size:19px; font-weight:800; color:#3370ff; }
.inv-item.low .inv-qty { color:#dc2626; }
.prog-panel { margin-top:10px; }
.prog-nums { display:grid; grid-template-columns:repeat(auto-fill,minmax(96px,1fr)); gap:8px; }
.prog-num { background:#f8fafc; border:1px solid #e2e8f0; border-radius:10px; padding:10px 6px; text-align:center; }
.prog-num b { display:block; font-size:22px; color:#0f172a; line-height:1.2; }
.prog-num span { font-size:11px; color:#64748b; }
.prog-num.warn { background:#fff7ed; border-color:#fed7aa; }
.prog-num.warn b { color:#ea580c; }
.rd-mini { margin-top:10px; }
.rd-mini-row { display:flex; align-items:center; gap:8px; padding:7px 0; border-bottom:1px dashed #e2e8f0; }
.rd-mini-row:last-child { border-bottom:none; }
.rd-mini-name { font-size:13px; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rd-mini-p { font-size:12px; color:#64748b; min-width:34px; text-align:right; }

/* ---------- 知识库（v0.4.9）---------- */
.kb-search-wrap { margin:10px 0; }
.kb-search { width:100%; padding:10px 12px; border:1px solid var(--line-strong); border-radius:10px; font-size:15px; background:var(--panel); color:var(--ink); }
.kb-search:focus { outline:none; border-color:var(--wood-l); box-shadow:0 0 0 3px rgba(51,112,255,.13); }
.kb-cats { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.kb-cat-chip { padding:6px 12px; background:var(--panel); border:1px solid var(--line-strong); border-radius:16px; font-size:13px; color:var(--ink-2); cursor:pointer; }
.kb-cat-chip:hover { background:#f7f8fa; }
.kb-cat-chip.active { background:var(--wood); border-color:var(--wood); color:#fff; }
.kb-empty { text-align:center; color:var(--ink-3); padding:40px 10px; }
.kb-list { display:flex; flex-direction:column; gap:10px; }
.kb-card { background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:12px 14px; }
.kb-card-head { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.kb-card-title { font-size:16px; font-weight:700; color:var(--ink); flex:1; }
.kb-card-meta { font-size:12px; color:var(--ink-2); margin:4px 0 8px; }
.kb-card-content { font-size:14px; color:var(--ink-2); line-height:1.7; background:#f7f8fa; border-radius:8px; padding:10px; }
.kb-card-actions { display:flex; gap:8px; margin-top:10px; flex-wrap:wrap; }
.form-tip { font-size:12.5px; color:var(--ink-2); background:#f7f8fa; border-radius:6px; padding:8px; margin-bottom:10px; }
.form-hint { font-size:12px; color:#94a3b8; margin-top:4px; }
.cat-chip { background:#e8f3ff; color:var(--wood-d); font-size:12px; padding:2px 8px; border-radius:6px; font-weight:600; }
.wood-chip { display:inline-flex; align-items:center; gap:8px; background:#f5efe6; color:var(--wood-d); font-size:13px; padding:5px 10px; border-radius:8px; border:1px solid #e6dcc8; }
.wood-chip button { font-size:11px; padding:1px 6px; }
.rd-mini-row .vs-progress { flex:1.2; max-width:160px; }

/* ---------- 客服日报（v0.5.15）---------- */
.cs-date-head { display:flex; align-items:center; gap:8px; font-size:19px; font-weight:800; color:#dc2626; margin:16px 0 8px; padding-bottom:6px; border-bottom:2px solid #fca5a5; }
.cs-date-count { font-size:12.5px; font-weight:400; color:#64748b; background:#f1f5f9; border-radius:10px; padding:2px 10px; }
.cs-items { margin:8px 0 4px; }
.cs-item { display:flex; align-items:flex-start; gap:8px; padding:6px 0; border-bottom:1px dashed #e2e8f0; }
.cs-item:last-child { border-bottom:none; }
.cs-no { min-width:18px; font-size:12.5px; color:#94a3b8; text-align:right; }
.cs-type { flex-shrink:0; font-size:11.5px; padding:1px 8px; border-radius:9px; margin-top:1px; }
.cs-t-ask    { background:#e0f2fe; color:#0369a1; }
.cs-t-custom { background:#ede9fe; color:#6d28d9; }
.cs-t-aft    { background:#ffedd5; color:#c2410c; }
.cs-t-ret    { background:#fee2e2; color:#b91c1c; }
.cs-t-other  { background:#f1f5f9; color:#475569; }
.cs-content { font-size:13.5px; color:#334155; line-height:1.6; word-break:break-all; white-space:pre-wrap; }
/* v0.5.72 客服每条记录「是否成交」标记 */
.cs-deal { flex-shrink:0; font-size:11.5px; padding:1px 8px; border-radius:9px; margin-top:1px; font-weight:600; }
.cs-deal-yes    { background:#dcfce7; color:#15803d; }
.cs-deal-no     { background:#fee2e2; color:#b91c1c; }
.cs-deal-follow { background:#fef9c3; color:#a16207; }
.cs-deal-done   { background:#dbeafe; color:#1d4ed8; }
.cs-deal-closed { background:#e2e8f0; color:#475569; }
.cs-deal-yes-c    { color:#15803d; font-weight:700; }
.cs-deal-follow-c { color:#a16207; font-weight:700; }
.cs-form-row { display:flex; gap:6px; align-items:center; margin-bottom:6px; flex-wrap:nowrap; }
.cs-form-type { width:76px !important; flex-shrink:0; }
.cs-form-deal { width:84px !important; flex-shrink:0; font-size:12px; }
.cs-form-content { flex:1; min-width:0; width:auto !important; }
.cs-shop-name { flex:1; font-size:14px; color:#0f172a; min-width:80px; }
.cs-sel { width:96px !important; flex-shrink:0; padding:4px 6px; font-size:13px; border:1px solid #cbd5e1; border-radius:6px; background:#fff; color:#0f172a; }

/* ===== v0.5.20 运营店铺绑定 ===== */
.cs-bind-row { padding:8px 0; border-bottom:1px dashed #e2e8f0; }
.cs-bind-row:last-child { border-bottom:none; }
.cs-bind-user { font-size:14px; font-weight:600; color:#0f172a; margin-bottom:6px; }
.cs-bind-cnt { font-size:12px; font-weight:400; color:#64748b; margin-left:6px; }
.cs-bind-chips { display:flex; flex-wrap:wrap; gap:6px; }
.cs-chip { font-size:12.5px; padding:3px 12px; border-radius:12px; background:#f1f5f9; color:#475569; cursor:pointer; user-select:none; border:1px solid #e2e8f0; }
.cs-chip:hover { border-color:#94a3b8; }
.cs-chip.on { background:#dcfce7; color:#15803d; border-color:#86efac; font-weight:600; }

/* ===== v0.5.21 货款结算 ===== */
.dlv-ck { text-align:center; width:34px; }
.dlv-ck input[type=checkbox] { width:16px; height:16px; cursor:pointer; }
.dlv-ck-none { color:#cbd5e1; }
.dlv-settle-bar { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top:10px; padding:10px 14px; background:#eff6ff; border:1px solid #bfdbfe; border-radius:10px; font-size:13.5px; color:#1d4ed8; flex-wrap:wrap; }
.dlv-bar-tip { font-size:12.5px; color:#94a3b8; padding:6px 2px; display:inline-block; }
.fc-amt { font-weight:700; font-size:15px; color:#0f766e; }

/* ===== v0.5.23 人员名单与权限 ===== */
#user-table td { vertical-align:top; }
.perm-cell { font-size:12.5px; color:#334155; line-height:1.6; min-width:180px; }
.perm-cell.no { color:#b91c1c; }
#user-table th { white-space:nowrap; }

/* ===== v0.5.27 产品搜索联想输入 ===== */
.prod-search { position:relative; }
.prod-search #f-product-key { width:100%; padding:9px 10px; border:1px solid var(--line-strong); border-radius:9px; font-size:14px; background:var(--panel); color:var(--ink); }
.prod-search #f-product-key:focus { outline:none; border-color:var(--wood-l); box-shadow:0 0 0 2px rgba(51,112,255,.12); }
.prod-drop { position:absolute; top:calc(100% + 4px); left:0; right:0; max-height:250px; overflow-y:auto;
  background:var(--panel); border:1px solid var(--line-strong); border-radius:9px; box-shadow:0 12px 30px rgba(31,35,41,.18); z-index:60; }
.prod-drop .pd-group { padding:5px 12px 3px; font-size:11.5px; color:var(--ink-3); background:#f7f8fa; position:sticky; top:0; }
.prod-drop .pd-item { padding:8px 12px; cursor:pointer; font-size:13.5px; color:var(--ink); }
.prod-drop .pd-item:hover, .prod-drop .pd-item.pd-active { background:#f7f8fa; color:var(--wood-d); }
.prod-drop .pd-empty { padding:10px 12px; color:var(--ink-3); font-size:13px; }

/* ===== v0.5.27 今日日志：电商日报表 + 上新记录 ===== */
.todaylog-wrap { overflow-x:auto; }
.todaylog-table { min-width:1600px; font-size:12px; white-space:nowrap; }
.todaylog-table th, .todaylog-table td { padding:7px 8px; }
.todaylog-table th { background:#f7f8fa; position:sticky; top:0; z-index:5; color:var(--ink-2); }
.todaylog-table .sticky-col { position:sticky; left:0; background:var(--panel); z-index:6; box-shadow:1px 0 0 var(--line); font-weight:500; }
.todaylog-table .num { text-align:right; font-variant-numeric:tabular-nums; }
.todaylog-table tbody tr:hover td { background:#f7f8fa; }
.todaylog-table tbody tr:hover .sticky-col { background:#f7f8fa; }
/* v0.5.237：电商日志表头列宽可拉（拖右下角）+ 拖列样式 + 自动算列 + 合计行 */
.todaylog-table th { resize:horizontal; overflow:hidden; min-width:64px; cursor:grab; }
.todaylog-table th:active { cursor:grabbing; }
.todaylog-table .act-fixed, .todaylog-table .sticky-col { cursor:default; }
.todaylog-table .auto-tag { display:inline-block; margin-left:3px; font-size:9px; color:#3370ff; background:#e8f1ff; border-radius:3px; padding:0 4px; vertical-align:middle; }
.todaylog-table .auto-cell { color:#3370ff; }
.todaylog-table .dr-sum-row td { border-top:2px solid var(--line-strong); background:#fffbe6 !important; font-weight:700; }
.dr-auto-val { background:#f0f5ff; border:1px dashed #a8c5ff; border-radius:8px; padding:8px 10px; font-size:15px; font-weight:700; color:#3370ff; text-align:center; min-height:18px; }
.dr-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:10px; margin-top:6px; }
.dr-grid .form-group { margin-bottom:0; }
.dr-grid .form-group label { font-size:12px; }
.dr-grid .form-group input { padding:7px 8px; font-size:13px; }

/* ===== v0.5.28 业绩管理 ===== */
.goal-toolbar { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:10px; }
.goal-toolbar .goal-month { font-size:13px; color:#475569; font-weight:600; margin-right:auto; }
.goal-month-tip { font-size:12.5px; color:#64748b; background:#f8fafc; border:1px dashed #cbd5e1; border-radius:8px; padding:8px 12px; margin-bottom:10px; }
.goal-card { background:linear-gradient(135deg,#f7f8fa,#e8f3ff); border:1px solid #e5e6eb; border-radius:12px; padding:14px 16px; }
.goal-nums { display:flex; flex-wrap:wrap; gap:18px; margin-bottom:10px; }
.goal-nums .gn { font-size:13px; color:#475569; }
.goal-nums .gn b { font-size:16px; color:#0f172a; margin-left:2px; }
.goal-bar-row { display:flex; align-items:center; gap:10px; }
.goal-bar { flex:1; height:10px; background:#e2e8f0; border-radius:6px; overflow:hidden; }
.goal-bar-fill { height:100%; background:linear-gradient(90deg,#3370ff,#6690ff); border-radius:6px; transition:width .3s; }
.goal-bar-fill.done { background:linear-gradient(90deg,#389e0d,#5f8a5f); }
.goal-pct { font-size:13px; font-weight:700; color:#3370ff; min-width:52px; text-align:right; }
.goal-pct-cell { font-weight:700; color:#3370ff; }
.goal-hint { font-size:12px; color:#94a3b8; margin-top:8px; }
/* v0.5.241：按店目标统筹表——店铺名/红线标红/周月达标标记 */
.goal-shop-name { font-size:15px; font-weight:700; color:#0f172a; margin-bottom:8px; }
.goal-red { background:#fff1f0 !important; border-color:#ffa39e !important; }
.goal-red-tag { display:inline-block; font-size:11px; color:#b91c1c; background:#fee2e2; border-radius:4px; padding:1px 5px; margin-left:4px; }
/* v0.5.247：业绩管理 v2 卡片——隐藏红线，月实际/月目标大数字突出 */
.goal-card-v2 { background:#fff; border:1px solid #e5e6eb; border-radius:14px; padding:14px 16px; box-shadow:0 2px 6px rgba(15,23,42,.04); transition:box-shadow .2s, transform .15s; }
.goal-card-v2:hover { box-shadow:0 4px 14px rgba(15,23,42,.10); transform:translateY(-1px); }
.goal-card-v2.goal-red { background:linear-gradient(135deg,#fff5f5,#ffe7e5) !important; border-color:#ffa39e !important; }
.gc-head { display:flex; align-items:center; gap:8px; margin-bottom:10px; flex-wrap:wrap; }
.gc-shop { font-size:15px; font-weight:700; color:#0f172a; }
.gc-ops { font-size:12px; color:#94a3b8; }
.gc-ok-badge { margin-left:auto; display:inline-block; font-size:12px; font-weight:600; color:#15803d; background:#dcfce7; border-radius:6px; padding:3px 8px; }
.gc-ok-badge.gc-ok-no { color:#b91c1c; background:#fee2e2; }
.gc-main { display:flex; align-items:baseline; gap:10px; margin:6px 0 10px; }
.gc-achieved, .gc-target { flex:1; min-width:0; }
.gc-achieved .gc-num { font-size:26px; font-weight:800; color:#0f172a; line-height:1.1; }
.gc-target .gc-num { font-size:22px; font-weight:600; color:#64748b; line-height:1.1; }
.gc-achieved .gc-label, .gc-target .gc-label { font-size:12px; color:#94a3b8; margin-top:2px; }
.gc-arrow { font-size:18px; color:#cbd5e1; padding:0 4px; }
.gc-bar-row { display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.gc-pct { font-size:14px; font-weight:700; color:#3370ff; min-width:52px; text-align:right; }
.gc-sub { display:flex; gap:14px; flex-wrap:wrap; font-size:12px; color:#64748b; }
.gc-sub b { color:#0f172a; font-weight:600; }
/* v0.5.247：业绩管理顶部月度汇总 4 卡片 */
.goal-summary { display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; margin-bottom:16px; }
.goal-sum-card { background:#fff; border:1px solid #e5e6eb; border-radius:10px; padding:12px 14px; box-shadow:0 1px 4px rgba(15,23,42,.04); }
.goal-sum-card .sc-label { font-size:12px; color:#94a3b8; margin-bottom:4px; }
.goal-sum-card .sc-value { font-size:22px; font-weight:700; color:#0f172a; line-height:1.1; }
.goal-sum-card .sc-sub { font-size:11px; color:#94a3b8; margin-top:4px; }
.goal-sum-card.sc-ok .sc-value { color:#15803d; }
.goal-sum-card.sc-no .sc-value { color:#b91c1c; }
@media (max-width: 768px) { .goal-summary { grid-template-columns:repeat(2, 1fr); } .gc-achieved .gc-num { font-size:22px; } }

.goal-ok { color:#389e0d; font-weight:600; }
.goal-no { color:#b91c1c; font-weight:600; }
#goals-body tr.goal-red td { background:#fff1f0 !important; }
/* ===== v0.5.59 工作清单 ===== */
.worklog-card { background:#fff; border:1px solid #e2e8f0; border-radius:10px; padding:12px 14px; margin-bottom:10px; }
.wl-date { font-size:13px; font-weight:700; color:#334155; margin-bottom:6px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.wl-content { font-size:14px; color:#475569; line-height:1.55; white-space:pre-wrap; }
.wl-actions { margin-top:10px; display:flex; gap:8px; }
.wl-actions .btn-sm { padding:5px 10px; font-size:12px; }
.tag-gray { display:inline-block; background:#f1f5f9; color:#64748b; font-size:12px; padding:2px 8px; border-radius:99px; font-weight:400; }
.worklog-card + .empty-tip, #me-worklog-list .empty-tip, #worklog-list .empty-tip { margin-top:8px; }
/* v0.5.78：工作清单待办化——状态徽章 / 完成日期 / 已完成卡片 */
.wl-st { display:inline-block; font-size:12px; font-weight:700; padding:2px 10px; border-radius:99px; }
.wl-st-pending { background:#fef3c7; color:#b45309; }
.wl-st-done { background:#dcfce7; color:#15803d; }
.wl-doneat { font-size:12px; color:#64748b; margin-top:6px; }
.wl-doneat b { color:#15803d; }
.wl-done-card { background:#f8fafc; border-color:#d1d5db; }
.wl-done-card .wl-content { color:#94a3b8; text-decoration:line-through; }
.wl-done-chk { display:flex; align-items:center; gap:6px; font-weight:600; color:#334155; cursor:pointer; }
.wl-done-chk input { width:16px; height:16px; accent-color:#16a34a; }

/* ===== v0.5.59 人员权限表（我的页面） ===== */
#me-perm-table .data-table { font-size:13px; }
#me-perm-table .data-table td { line-height:1.5; }

/* ===== v0.5.77 新增产品多行批量表单 ===== */
.np-row { border:1px solid var(--line-strong); border-radius:12px; padding:10px 12px; margin-bottom:10px; background:var(--panel); }
.np-row-top { display:flex; gap:8px; align-items:center; margin-bottom:8px; }
.np-row-top .np-name { flex:1; }
.np-row-grid, .np-row-calc { display:flex; flex-wrap:wrap; gap:8px 10px; }
.np-row-grid .np-f, .np-row-calc .np-f { flex:1 1 100px; min-width:96px; display:flex; flex-direction:column; gap:3px; }
.np-f label { font-size:11px; color:var(--ink-3); font-weight:600; }
.np-row-code { margin:8px 0; font-size:13px; color:var(--ink-2); background:#f7f8fa; border-radius:8px; padding:6px 10px; }
.np-code { font-size:14px; color:#2f6f4f; word-break:break-all; }
.np-num { font-size:14px; font-weight:700; color:var(--wood); padding:6px 2px; }
.np-fr { color:#2f6f4f; }
.np-row-calc { border-top:1px dashed var(--line-strong); padding-top:8px; }

/* v0.5.104 算包装工具（老板/财务） */
.pk-input-row { display:flex; gap:16px; flex-wrap:wrap; margin:12px 0 16px; }
.pk-f { display:flex; align-items:center; gap:8px; }
.pk-f label { font-size:13px; color:var(--ink-2); font-weight:500; white-space:nowrap; }
.pk-f input { width:110px; }
.pk-f select { max-width:220px; }
.pk-empty { padding:30px 0; text-align:center; color:var(--ink-3); font-size:13px; background:#f7f8fa; border-radius:10px; }
.pk-card { background:#fff; border:1px solid var(--line); border-radius:12px; padding:14px 18px 6px; box-shadow:0 1px 4px rgba(31,35,41,.04); }
.pk-card-head { display:flex; align-items:center; justify-content:space-between; padding-bottom:10px; border-bottom:1px solid var(--line); margin-bottom:4px; }
.pk-badge { display:inline-block; padding:3px 12px; border-radius:14px; background:#eaf0ff; color:var(--wood-d); font-size:13px; font-weight:600; }
.pk-dim { font-size:12.5px; color:var(--ink-3); }
.pk-card-row { display:flex; align-items:center; justify-content:space-between; padding:9px 0; border-bottom:1px dashed var(--line); font-size:14px; color:var(--ink); }
.pk-card-row span:last-child { font-variant-numeric:tabular-nums; }
.pk-card-total { display:flex; align-items:center; justify-content:space-between; padding:12px 0; font-size:16px; font-weight:700; }
.pk-card-total span:last-child { color:var(--wood-d); font-size:22px; font-variant-numeric:tabular-nums; }
.pk-fallback { padding:8px 0 12px; font-size:12.5px; color:#c2622d; }
/* v0.5.128 跨境定价（虾皮版） */
.xp-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:10px 14px; margin:10px 0 14px; }
.xp-grid .pk-f { flex-direction:column; align-items:stretch; gap:4px; }
.xp-grid .pk-f label { white-space:normal; line-height:1.35; }
.xp-grid .pk-f input, .xp-grid .pk-f select { width:100%; }
.xp-hide-note { margin-bottom:12px; font-size:12.5px; }
.xp-big-row { margin-bottom:10px; }
.xp-result-big { font-size:32px; font-weight:700; color:#1a1a1a; line-height:1.2; }
.xp-result-big .xp-cur2 { font-size:18px; font-weight:400; color:#d9363e; }
.xp-result-sub { font-size:13px; color:var(--ink-2); margin-top:2px; }
.xp-strong { font-weight:700; color:#1a1a1a; }
.xp-cny { color:#1a1a1a; font-weight:700; }
.xp-row-disc { background:#f6ffed; border:1px solid #b7eb8f; border-radius:8px; padding:8px 12px; margin-bottom:8px; }
.xp-detail { border:1px solid var(--line); border-radius:12px; overflow:hidden; }
.xp-row { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:9px 14px; font-size:13.5px; border-bottom:1px solid var(--line); background:#fff; }
.xp-row:last-child { border-bottom:none; }
.xp-row-total { background:#f7f8fa; font-size:15px; font-weight:600; }
.xp-cur2 { display:inline-block; margin-left:6px; font-size:12px; font-weight:400; color:#d9363e; }
/* v0.5.149 跨境定价：站点格子选择（四站常驻可见不遮挡）+ 免佣期勾选 */
.xp-site-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin:10px 0 6px; }
.xp-site-btn { background:#fff; border:1.5px solid var(--cbd); border-radius:12px; padding:10px 6px 9px; text-align:center; cursor:pointer; transition:all .15s; display:flex; flex-direction:column; align-items:center; gap:2px; }
.xp-site-btn:hover { border-color:var(--cpl); transform:translateY(-1px); }
.xp-site-btn.active { background:var(--cp); border-color:var(--cp); box-shadow:0 3px 10px rgba(51,112,255,.25); }
.xp-site-flag { font-size:22px; line-height:1.25; }
.xp-site-name { font-size:14px; font-weight:600; color:var(--ctxt); }
.xp-site-com { font-size:11.5px; color:var(--ink-2); }
.xp-site-btn.active .xp-site-name { color:var(--ctxt); }
.xp-site-btn.active .xp-site-com { color:var(--ink-2); }
.xp-free-com { display:inline-flex; align-items:center; gap:7px; margin:2px 0 4px; font-size:13.5px; color:var(--ctxt); cursor:pointer; user-select:none; background:#fff; border:1.5px dashed var(--cbd); padding:7px 14px; border-radius:10px; transition:all .15s; }
.xp-free-com:hover { border-color:var(--cpl); }
.xp-free-com.active { border-style:solid; border-color:var(--cp); background:#f0f5ff; color:var(--cp); font-weight:600; }
.xp-free-com input { width:16px; height:16px; accent-color:var(--cp); cursor:pointer; margin:0; }
.xp-row-free { background:#f6ffed; color:#15803d; font-weight:600; }
.xp-row-profit { background:#f6ffed; border:1px solid #b7eb8f; color:#15803d; font-weight:700; }
.xp-row-profit .xp-cny { color:#15803d; font-size:17px; }
.xp-row-profit .xp-cur2 { color:#d9363e; }
.xp-row-profit.neg { background:#fff1f0; border-color:#ffa39e; color:#cf1322; }
.xp-row-profit.neg .xp-cny { color:#cf1322; }
.xp-profit-rate { display:inline-block; margin-left:8px; font-size:11px; font-weight:600; color:#15803d; background:rgba(21,128,61,.1); border-radius:10px; padding:1px 8px; }
.xp-row-profit.neg .xp-profit-rate { color:#cf1322; background:rgba(207,19,34,.08); }
@media (max-width:768px) { .xp-result-big { font-size:26px; } }
@media (max-width:640px) { .xp-site-grid { grid-template-columns:repeat(2,1fr); } }
.pk-note { font-size:13px; color:var(--ink-2); background:#f7f8fa; border-radius:10px; padding:10px 14px; margin:10px 0 4px; line-height:1.7; }
.pk-sub { font-size:14px; font-weight:600; margin:18px 0 8px; color:var(--ink); }
.pk-box-cols { max-height:340px; overflow:auto; }
/* v0.5.134 视觉企划每日工作计划图片 */
.plan-img-list { display:flex; flex-wrap:wrap; gap:8px; margin-top:6px; }
.plan-thumb-wrap { position:relative; width:78px; height:78px; border-radius:6px; overflow:hidden; background:#f7f8fa; }
.plan-thumb { width:100%; height:100%; object-fit:cover; display:block; }
.plan-img-del { position:absolute; top:2px; right:2px; width:20px; height:20px; line-height:18px; text-align:center; border:0; background:rgba(0,0,0,.55); color:#fff; border-radius:10px; font-size:11px; cursor:pointer; }
.plan-img-retry { display:inline-block; margin-left:4px; padding:0 6px; border:0; border-radius:8px; background:#dc2626; color:#fff; font-size:11px; cursor:pointer; }
.plan-imgs-cell { display:flex; align-items:center; gap:4px; flex-wrap:wrap; }
.plan-imgs-cell .plan-thumb { width:46px; height:46px; border-radius:4px; border:1px solid #e2e8f0; }
.plan-imgs-more { font-size:12px; color:var(--ink-2); padding:0 4px; }
.badge-st-daily { background:#e0f2fe; color:#0369a1; }
.badge-st-holiday { background:#fef3c7; color:#b45309; }
/* v0.5.133 任务插入图片：缩略图行 + 表单缩略图项 */
.task-img-row { display:flex; flex-wrap:wrap; gap:5px; margin-top:6px; padding:6px 0; }
.task-img-thumb { width:64px; height:64px; object-fit:cover; border-radius:6px; border:1px solid var(--line); cursor:pointer; }
.task-img-thumb:hover { border-color:var(--gold); }
.task-img-more { font-size:12px; color:var(--ink-3); align-self:center; padding:0 6px; }
.tk-img-list { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; min-height:8px; }
.tk-img-item { position:relative; width:64px; height:64px; }
.tk-img-item .tk-thumb { width:64px; height:64px; object-fit:cover; border-radius:6px; border:1px solid var(--line); }
.tk-img-del { position:absolute; top:-4px; right:-4px; width:18px; height:18px; border-radius:50%; background:#ef4444; color:#fff; border:none; font-size:11px; line-height:1; cursor:pointer; padding:0; }
.tk-img-del:hover { background:#dc2626; }
.tk-img-loading { display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--ink-3); background:#f7f8fa; border:1px dashed var(--line); border-radius:6px; }
.tk-img-tip { font-size:11px; color:var(--ink-3); margin-left:8px; }

/* v0.5.141 任务附件：文件条（图片缩略图以外的附件）+ 回复附件 */
.task-file-row { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; }
.task-file-chip { display:inline-flex; align-items:center; gap:4px; font-size:12px; color:#3370ff; background:#f0f6ff; border:1px solid #d4e5ff; border-radius:7px; padding:4px 9px; text-decoration:none; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.task-file-chip:hover { border-color:#3370ff; }
.task-file-size { font-size:10.5px; color:#94a3b8; }
.tk-img-item.tk-file-item { width:auto; height:auto; }
.tk-file-item .task-file-chip { padding:6px 26px 6px 9px; }
.tk-file-item .tk-img-del { top:50%; right:4px; margin-top:-9px; }
.tk-reply-files { display:flex; flex-wrap:wrap; gap:6px; margin-top:6px; min-height:4px; }
.tk-reply-file-chip { display:inline-flex; align-items:center; gap:4px; font-size:11.5px; color:var(--ink-2); background:#f7f8fa; border:1px solid var(--line); border-radius:7px; padding:3px 8px; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; position:relative; padding-right:24px; }
.tk-reply-file-chip .tk-img-del { position:absolute; top:50%; right:3px; margin-top:-9px; }
.task-reply-files { display:flex; flex-wrap:wrap; gap:5px; margin-top:4px; }
.task-reply-img { width:48px; height:48px; object-fit:cover; border-radius:5px; border:1px solid var(--line); cursor:pointer; }
.task-reply-img:hover { border-color:var(--gold); }
/* v0.5.141 业绩目标店铺列/展示 */
.goal-shops { font-size:12px; color:var(--ink-2); margin-top:6px; }
.goal-shop-cell { font-size:11.5px; color:var(--ink-2); }
/* v0.5.141 上新记录：记录人小字 */
.cs-by-name { font-size:11px; color:var(--ink-3); margin-left:4px; }

/* ========== v0.5.142 运营驾驶舱 ========== */
.cock-head { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:12px; flex-wrap:wrap; gap:6px; }
.cock-title { font-size:16px; font-weight:700; color:var(--ink-1); }
.cock-hello { font-size:12px; color:var(--ink-3); }
.cock-hello b { color:#3370ff; }
.cock-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px; margin-bottom:12px; }
.cock-kpi { background:#f7f8fa; border-radius:10px; padding:12px 14px; cursor:pointer; transition:background .15s; min-width:0; }
.cock-kpi:hover { background:#eef4ff; }
.cock-kpi-warn { background:#fdecec; }
.cock-kpi-warn:hover { background:#fbdddd; }
.ck-label { font-size:11px; color:var(--ink-3); margin-bottom:6px; }
.ck-val { font-size:22px; font-weight:700; color:var(--ink-1); line-height:1.1; }
.ck-val small { font-size:12px; font-weight:400; color:var(--ink-3); }
.cock-kpi-warn .ck-val { color:#d83931; }
.ck-sub { font-size:11px; color:var(--ink-3); margin-top:5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cock-row { display:flex; gap:12px; margin-bottom:12px; flex-wrap:wrap; }
.cock-card { background:#fbfcfd; border:1px solid var(--line); border-radius:10px; padding:12px 14px; flex:1; min-width:240px; }
.cock-wide { flex:1.7; }
.cock-goal-card { display:flex; align-items:center; gap:16px; }
.cock-ring { width:96px; height:96px; border-radius:50%; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.cock-ring-none { background:#e5e6eb; }
.cock-ring-in { width:70px; height:70px; border-radius:50%; background:#fff; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.cock-ring-in b { font-size:18px; color:#3370ff; }
.cock-ring-in span { font-size:9px; color:var(--ink-3); }
.cock-goal-meta { flex:1; min-width:0; }
.cock-goal-rows { margin-bottom:8px; }
.cgr { display:flex; justify-content:space-between; gap:8px; font-size:12px; padding:5px 0; border-bottom:1px dashed #eef0f3; color:var(--ink-1); }
.cgr span { color:var(--ink-3); flex-shrink:0; }
.cgr b { font-weight:600; text-align:right; }
.cock-week-bar { height:7px; background:#e5e6eb; border-radius:4px; overflow:hidden; }
.cock-week-bar i { display:block; height:100%; background:linear-gradient(90deg,#3370ff,#6aa1ff); border-radius:4px; }
.cock-sec { font-size:13px; font-weight:600; color:var(--ink-1); margin-bottom:8px; display:flex; align-items:center; gap:6px; }
.cock-sec-more { margin-left:auto; font-size:11px; font-weight:400; color:#3370ff; cursor:pointer; }
.cock-t-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.cock-t-item { background:#fff; border:1px solid var(--line); border-radius:8px; padding:9px 11px; cursor:pointer; }
.cock-t-item:hover { border-color:#3370ff; }
.cti-n { font-size:18px; font-weight:700; color:var(--ink-1); }
.cti-n.cti-red { color:#d83931; }
.cti-n.cti-blue { color:#3370ff; }
.cti-t { font-size:11px; color:var(--ink-3); margin-top:2px; }
.cock-bars { display:flex; align-items:flex-end; gap:8px; height:110px; }
.cock-b-col { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; gap:4px; height:100%; }
.cock-bar { width:100%; max-width:34px; border-radius:4px 4px 0 0; background:linear-gradient(180deg,#6aa1ff,#3370ff); }
.cock-b-today .cock-bar { background:linear-gradient(180deg,#ff9c6e,#e8684a); }
.cock-bv { font-size:10px; color:var(--ink-3); min-height:12px; }
.cock-bd { font-size:10px; color:var(--ink-3); }
.cock-todo-item { display:flex; align-items:center; gap:8px; padding:8px 2px; border-bottom:1px dashed #eef0f3; font-size:12px; color:var(--ink-1); cursor:pointer; }
.cock-todo-item:hover { color:#3370ff; }
.cock-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; }
.cock-todo-txt { flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cock-due { font-size:10px; color:var(--ink-3); flex-shrink:0; }
.cock-due.hot { color:#d83931; font-weight:600; }
.cock-ot { width:100%; border-collapse:collapse; }
.cock-ot th { text-align:left; font-size:11px; color:var(--ink-3); font-weight:500; padding:6px 8px; border-bottom:1px solid #eef0f3; }
.cock-ot td { font-size:12px; color:var(--ink-1); padding:7px 8px; border-bottom:1px solid #f2f3f5; }
.cock-or { cursor:pointer; }
.cock-or:hover td { color:#3370ff; }
.cock-od { color:#d83931; font-weight:600; }
.cock-quick { display:flex; gap:8px; flex-wrap:wrap; }
.cock-quick button { flex:1; min-width:110px; border:1px solid var(--line); background:#fff; border-radius:8px; padding:10px 0; font-size:12px; color:var(--ink-1); cursor:pointer; }
.cock-quick button:hover { border-color:#3370ff; color:#3370ff; }
.cock-quick .cq-main { background:#3370ff; border-color:#3370ff; color:#fff; }
.cock-quick .cq-main:hover { opacity:.9; color:#fff; }

/* ---------- v0.5.144 老板驾驶舱 bcock-*（全公司总览：运营排行/财务概况/状态分布/待处理/快捷键 3+2） ---------- */
.badge.st-overdue { background:#fef2f2; color:#dc2626; }
.bcock-rank-item { display:flex; align-items:center; gap:8px; padding:6px 0; font-size:12.5px; }
.bcock-rk { width:19px; height:19px; border-radius:50%; background:#eef0f3; color:var(--ink-2); font-size:11px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.bcock-rk.r1 { background:#3370ff; color:#fff; }
.bcock-rk.r2 { background:#6aa1ff; color:#fff; }
.bcock-rk.r3 { background:#95b8ff; color:#fff; }
.bcock-nm { width:50px; color:var(--ink-1); flex-shrink:0; }
.bcock-rk-bar { flex:1; height:7px; background:#f0f1f3; border-radius:4px; overflow:hidden; min-width:0; }
.bcock-rk-bar i { display:block; height:100%; border-radius:4px; background:linear-gradient(90deg,#3370ff,#6aa1ff); }
.bcock-rk-val { width:54px; text-align:right; font-weight:700; color:var(--ink-1); flex-shrink:0; }
.bcock-rk-pct { width:82px; text-align:right; font-size:11px; color:var(--ink-3); flex-shrink:0; }
.bcock-rk-pct b { color:#3370ff; font-size:12px; }
.bcock-fin-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:10px; }
.bcock-f-item { background:#f7f8fa; border-radius:8px; padding:9px 12px; min-width:0; }
.bcock-f-item .n { font-size:17px; font-weight:700; color:var(--ink-1); }
.bcock-f-item .n.blue { color:#3370ff; }
.bcock-f-item .n.red { color:#d83931; }
.bcock-f-item .t { font-size:11px; color:var(--ink-3); margin-top:2px; }
.bcock-fin-todo { margin-top:10px; padding-top:9px; border-top:1px dashed #eef0f3; font-size:12px; color:var(--ink-2); display:flex; gap:14px; flex-wrap:wrap; }
.bcock-fin-todo span { cursor:pointer; }
.bcock-fin-todo span:hover { color:#3370ff; }
.bcock-fin-todo b { color:#d83931; }
.bcock-st-bar { display:flex; height:9px; border-radius:5px; overflow:hidden; margin:12px 0 10px; background:#f0f1f3; }
.bcock-st-grid { display:grid; grid-template-columns:1fr 1fr; gap:7px; }
.bcock-st-item { display:flex; align-items:center; gap:7px; font-size:12px; color:var(--ink-2); }
.bcock-st-item b { color:var(--ink-1); margin-left:auto; font-size:13px; }
.bcock-st-item .sq { width:9px; height:9px; border-radius:2px; flex-shrink:0; }
.bcock-st-item .sq-ok { background:#2ea121; }
.bcock-st-item .sq-doing { background:#ff8800; }
.bcock-st-item .sq-wait { background:#3370ff; }
.bcock-st-item .sq-over { background:#d83931; }
.bcock-w-item { display:flex; align-items:center; gap:9px; padding:8px 2px; border-bottom:1px dashed #eef0f3; font-size:12.5px; color:var(--ink-1); cursor:pointer; }
.bcock-w-item:hover { color:#3370ff; }
.bcock-w-item:last-child { border-bottom:none; }
.bcock-dot { width:7px; height:7px; border-radius:50%; flex-shrink:0; }
.bcock-due { margin-left:auto; font-size:12px; color:var(--ink-3); }
.bcock-due b { color:#d83931; font-size:14px; }
.cock-quick.bcock-quick { gap:10px; }
.bcock-quick button { flex:1 1 26%; min-width:140px; border-radius:10px; padding:13px 10px; font-size:13.5px; box-shadow:0 1px 2px rgba(31,35,41,.04); }
/* v0.5.188 虾皮运营中心 KPI 卡 */
.sc-kpi { background:var(--panel, #fff); border:1px solid var(--line-strong, #ddd); border-radius:10px; padding:10px 12px; text-align:center; }
.sc-kpi-l { font-size:11.5px; color:var(--ink-3, #999); }
.sc-kpi-v { font-size:20px; font-weight:700; color:var(--ink, #333); margin:2px 0; }
.sc-kpi-s { font-size:11px; color:var(--ink-3, #999); min-height:14px; }

/* v0.5.228 产品目录列拖拽 */
#prod-table th { cursor: grab; user-select: none; }
#prod-table th:active { cursor: grabbing; }
#prod-table th.sortable-ghost { background: var(--color-background-info, #e6f1fb) !important; color: var(--color-text-info, #185fa5); }
#prod-table th.sortable-drag { opacity: 0.5; }

/* v0.5.229 批量录入手动模式 + Tab */
.pb-tab { border:1px solid var(--line-strong,#ddd); border-radius:8px 8px 0 0; padding:6px 14px; background:var(--bg-soft,#f7f7f7); cursor:pointer; }
.pb-tab-active { background:var(--bg,#fff); border-bottom-color:var(--bg,#fff); font-weight:600; color:var(--color-primary,#1f6feb); }
.pb-man-row { border:1px solid var(--line-strong,#ddd); border-radius:10px; padding:10px; margin-bottom:10px; background:var(--bg-soft,#fafafa); }
.pb-man-top { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; font-weight:600; color:var(--text-muted,#777); }
.pb-man-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px; margin-bottom:8px; }

/* v0.5.230 产品目录价格列加宽（原价/8折/分销三档价，字显示不全被挡） */
#prod-table th[data-col="list"], #prod-table th[data-col="discount"],
#prod-table th[data-col="dp1"], #prod-table th[data-col="dp2"], #prod-table th[data-col="dp3"] { min-width: 92px; white-space: nowrap; }
#prod-table input[id^="lp-"], #prod-table input[id^="dz8-"],
#prod-table input[id^="dp1-"], #prod-table input[id^="dp2-"], #prod-table input[id^="dp3-"] { width: 86px; }

/* v0.5.267 电商日志双币汇率条（跨境台湾/马来/新加坡店） */
#dr-fx-bar { font-size:12.5px; color:#1d39c4; background:#f0f5ff; border:1px solid #d6e4ff; border-radius:8px; padding:6px 10px; margin:2px 0 6px; line-height:1.9; }
#dr-fx-bar input { width:74px; border:1px solid #adc6ff; border-radius:6px; padding:2px 4px; font-size:12.5px; text-align:center; }
