/* ================= 设计母版 tokens（来源 convoai-kit/tokens.css v0.1） ================= */
:root{
  --brand-5:#F4F3FE;--brand-10:#E2E0FB;--brand-20:#C7C5F8;--brand-30:#A7A4F4;--brand-40:#8A86F0;
  --brand-50:#6B67EB;--brand-60:#4F46E5;--brand-70:#433AC7;--brand-80:#372FAA;--brand-90:#2B248E;--brand-95:#1F1A72;
  --sec-5:#FFF8F3;--sec-10:#FEEEDD;--sec-20:#FDD9B5;--sec-30:#FCC185;--sec-40:#FAA04D;--sec-50:#F9841F;
  --sec-60:#F97316;--sec-70:#DA6513;
  --gray-0:#FFFFFF;--gray-5:#F8FBFC;--gray-10:#EDF0F7;--gray-20:#DEDEE8;--gray-30:#B6B6C2;--gray-40:#9DA4B1;
  --gray-50:#6E7386;--gray-60:#4A4959;--gray-70:#3D3C4A;--gray-80:#32313D;--gray-90:#25242E;--gray-100:#19181F;
  --success:#76F057;--warning:#FFD143;--destructive:#FF6565;--info:#53D5FF;
  --bg:var(--gray-5);--card:var(--gray-0);--line:var(--gray-10);--line-strong:var(--gray-20);
  --t1:var(--gray-100);--t2:var(--gray-60);--t3:var(--gray-50);
  --primary:var(--brand-60);--primary-hover:var(--brand-70);--primary-soft:var(--brand-5);
  --primary-border:var(--brand-20);--on-primary:var(--gray-0);
  --font-ui:"Rubik",-apple-system,"PingFang SC","HarmonyOS Sans SC","MiSans","Noto Sans SC","Microsoft YaHei",sans-serif;
  --fs-title-lg:24px;--fs-title:20px;--fs-body-lg:16px;--lh-body-lg:22px;--fs-body:14px;--lh-body:20px;--fs-caption:12px;--lh-caption:16px;
  --r-xs:4px;--r-sm:6px;--r-md:8px;--r-lg:12px;--r-xl:14px;--r-2xl:16px;--r-pill:360px;
  --sp-2:2px;--sp-4:4px;--sp-6:6px;--sp-8:8px;--sp-10:10px;--sp-12:12px;--sp-14:14px;--sp-16:16px;--sp-20:20px;--sp-24:24px;
  --shadow-card:0 0 4px rgba(174,188,220,.24);
  --shadow-primary:0 3px 4px -1px rgba(79,70,229,.95);
  --shadow-pop:0 8px 28px rgba(23,27,38,.16);
  --grad-brand:linear-gradient(135deg,var(--brand-50),var(--brand-80));
  /* 2610L 完成勾选框淡底：完成态 14% 同色（深色 22%），按优先级三档（white/dark card 混合预计算值） */
  --ck-soft-p0:#FFE9E9;--ck-soft-p1:#E6E5FB;--ck-soft-p2:#F5F5F6;
  /* 261030 数据表弱底色（table.css 页签条/分段轨/表头/文本胶囊/悬停行共用）：浅=白卡深一档、暗=深卡亮一档，
     两端与卡色的相对关系一致——原 --gray-10 固定浅灰在暗色下浅底+浅字=内容不可见（走查元素3-6 根因） */
  --lxt-sub:var(--gray-10);
}
:root[data-theme="dark"]{
  --bg:var(--gray-100);--card:var(--gray-80);--line:var(--gray-70);--line-strong:var(--gray-60);
  --t1:#EBEBF5;--t2:var(--gray-30);--t3:var(--gray-40);
  --primary:var(--brand-60);--primary-hover:var(--brand-50);
  --primary-soft:var(--gray-90);--primary-border:var(--brand-80);--on-primary:#FFFFFF;
  --lxt-sub:var(--gray-70);
  --shadow-card:none;--shadow-primary:0 4px 10px rgba(0,0,0,.5);
  --shadow-pop:0 10px 32px rgba(0,0,0,.55);
  /* 状态色在深底上的提亮字色（2026-09-14 批四）：这些值原本只出现在深色规则里，
     收进覆盖层后 base 保持浅色语义，规则体一律 var() 且随主题自动切换。 */
  --brand-bright:#A5B4FC;--good-bright:#4ADE80;--warn-bright:#FBBF24;--risk-bright:#F87171;
  --sec-bright:#F0A878;--gold-bright:#E7C24A;
  --ck-soft-p0:#5F3C46;--ck-soft-p1:#383662;--ck-soft-p2:#4F4E5A;
}

/* 深色模式：body 文字/背景跟随（修复继承自根作用域的浅色文字） */
:root[data-theme="dark"] body{color:var(--t1)}

/* 截图/自动化用：?noanim 禁用全部动画过渡 */
html.noanim *,html.noanim *::before,html.noanim *::after{animation:none!important;transition:none!important}

/* 图标：允许出_viewBox 的线条完整显示（Solar broken 风格需要） */
symbol{overflow:visible}

/* ================= 基础 ================= */
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
/* 全局 heading reset（2026-09-08 立）：本文件所有标题样式均为显式 margin（.dlg h3/.loginbox h2/
   .topbar h1/.hcard-hd h2），浏览器默认 margin 曾把首页卡头撑到 71px（老板反馈⑨）。
   新组件标题不再各自清 margin；规范 §5-R16 已登记 */
h1,h2,h3,h4{margin:0}
html,body{height:100%}
body{margin:0;background:var(--canvas);font-family:var(--font-ui);color:var(--t1);
  display:flex;align-items:center;justify-content:center}
.stage{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.themeBtn{position:fixed;top:18px;right:22px;z-index:99;width:44px;height:44px;border-radius:14px;border:1px solid var(--canvas-line);
  background:var(--canvas-panel);color:var(--canvas-tx);font-size:20px;cursor:pointer}
.themeBtn:hover{background:var(--canvas-hover)}
@media (max-width:520px){.themeBtn{display:none}}

.phone{width:430px;max-width:100vw;height:min(932px,100vh);background:var(--bg);position:relative;
  overflow:hidden;display:flex;flex-direction:column;transition:background .25s}
.page{flex:1;overflow-y:auto;overflow-x:hidden;display:none;padding-bottom:calc(76px + max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px)));scrollbar-width:none}
.page::-webkit-scrollbar{display:none}
/* 切页不做透明渐入动画：新页从透明开始会露出底色，底部导航快速切换时表现为闪白。
   即切即显，保证不闪。如需过渡后续可改交叉淡入（新旧页同时绘制）。 */
.page.on{display:block}
.ic{width:22px;height:22px;flex:none;display:block}

/* ================= 工作页 ================= */
.topbar{display:flex;align-items:center;justify-content:space-between;padding:calc(16px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 16px 8px}
.topbar h1{margin:0;font-size:var(--fs-title-lg);font-weight:700}
.topbar .sub2{font-size:var(--fs-caption);color:var(--t3);margin-top:2px}
.topbtns{display:flex;gap:8px}
.addbtn{width:38px;height:38px;border-radius:var(--r-pill);background:var(--gray-100);color:var(--on-primary);border:none;
  display:flex;align-items:center;justify-content:center;cursor:pointer}
:root[data-theme="dark"] .addbtn{background:var(--brand-60)}

.chips{display:flex;gap:var(--sp-8);overflow-x:auto;padding:var(--sp-6) var(--sp-16);scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;padding:var(--sp-8) var(--sp-14);border-radius:var(--r-pill);background:var(--card);border:1px solid var(--line);
  font-size:13px;font-weight:500;color:var(--t2);cursor:pointer;display:flex;align-items:center;gap:var(--sp-6);
  transition:all .15s;user-select:none;font-family:var(--font-ui)}
.chip.on{background:var(--primary-soft);border-color:var(--primary-border);color:var(--primary);font-weight:600}
:root[data-theme="dark"] .chip.on{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.chip .cnt{font-size:11px;color:var(--t3)}
.chip.on .cnt{color:var(--primary);opacity:.7}
:root[data-theme="dark"] .chip.on .cnt{color:var(--on-primary)}
/* 主题色通铺下页级 chip 组（dbody 直属：员工/部门/岗位/对账、审计分类、权限三页 tab）：
   原 .chip.on=primary-soft 底+primary 字，12% 同色叠在同色通铺背景上=底字同色文字隐形（0913 老板元素1）。
   深底：整组反白——未选中=白磨砂+白字（同 fsOn 白族），选中=纯白实底+主题色字（层级=最亮者选中）；
   浅底（#E3EDFB/#D3F1F0 两档）：选中走 bgmode 既有约定（.ts.on→t1 深字），白实底+深字+主题描边区分 */
.phone.bgmode-dark .dbody>.chips .chip{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.92)}
.phone.bgmode-dark .dbody>.chips .chip.on{background:var(--on-dark);border-color:var(--on-dark);color:var(--primary)}
.phone.bgmode-dark .dbody>.chips .chip.on .cnt{color:var(--primary);opacity:.8}
.phone.bgmode-light .dbody>.chips .chip{background:rgba(255,255,255,.72);border-color:rgba(0,0,0,.08);color:var(--t2)}
.phone.bgmode-light .dbody>.chips .chip.on{background:var(--on-dark);border-color:var(--primary-border);color:var(--t1)}
.phone.bgmode-light .dbody>.chips .chip.on .cnt{color:var(--t1);opacity:.7}
/* 2610f 元素10：明细页筛选摘要胶囊（.fchips2，直接躺在通铺底色上）同病同修——
   APP 端设主题色后 chip.on 的 12% 透明主题底叠绿底+绿字=「一片绿色内容不可见」；
   规则与 dbody>.chips 同族：深底白磨砂/白实底反选，浅底白实底深字 */
.phone.bgmode-dark .fchips2 .chip{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.25);color:rgba(255,255,255,.92)}
.phone.bgmode-dark .fchips2 .chip.on{background:var(--on-dark);border-color:var(--on-dark);color:var(--primary)}
.phone.bgmode-light .fchips2 .chip{background:rgba(255,255,255,.72);border-color:rgba(0,0,0,.08);color:var(--t2)}
.phone.bgmode-light .fchips2 .chip.on{background:var(--on-dark);border-color:var(--primary-border);color:var(--t1)}

.grp{margin-top:6px}
.grp-ttl{padding:12px 16px 6px;font-size:var(--fs-caption);font-weight:700;color:var(--t3);
  display:flex;align-items:center;gap:6px}
.grp-ttl .dot{width:8px;height:8px;border-radius:50%;background:var(--brand-60)}
.grp-ttl.weak .dot{background:var(--gray-30)}
/* U4 统一空态：图标+标题+提示+主操作居中，最小高度一致（.rp-empty 为右栏仅图标特例） */
.empty{margin:var(--sp-16);padding:36px var(--sp-16);text-align:center;color:var(--t3);font-size:var(--fs-body);
  display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:180px}
.empty b{font-size:var(--fs-body-lg);color:var(--t2);margin-bottom:var(--sp-6);font-weight:600}
.empty>.ic{width:36px;height:36px;opacity:.4;margin-bottom:var(--sp-10);flex:none}
.empty>.pbtn{width:auto;min-width:140px;flex:none;margin-top:var(--sp-14);padding:0 var(--sp-20);font-size:var(--fs-body)}
/* 2610L 修10：任务区空态=仅图标居中（老板口径同右栏 .rp-empty 仅图标空态）——撑满可视区真居中 */
#taskArea.is-empty{display:flex;flex-direction:column;min-height:100%}
#taskArea.is-empty>.empty{flex:1}
/* 修10b：图标与 .rp-empty 完全同款——色源 var(--t3) 直接声明（深色容器覆盖 rgba(255,255,255,.85) 不再生效）、
   浓淡 .55 同 rp-empty、去 margin-bottom 10px 令图标精确居中（原 margin 令图标偏上 5px） */
#taskArea.is-empty>.empty>.ic{color:var(--t3);opacity:.55;margin-bottom:0}
/* 修10c：ldesk 下两枚空态图标同一水平线——rp-empty 以整栏(全视口)高居中（中心=视口/2），
   任务区空态盒原顶在 wtop(68px) 下且 min-height:100% 相对 page 内容盒（含 padB 24px），中心恒偏下 56px；
   修=负 margin 上提 wtop 高度跨页头、min-height 锁 100vh，空态盒 [0,100vh] 与右栏同基准（68 须随 .wtop 高度同步改） */
#phone.ldesk #taskArea.is-empty{margin-top:-68px;min-height:100vh}
/* U4 空态统一图标：无显式图标时用同一枚托盘线稿（加载/纯文本态不出图标） */
.empty:has(>b):not(:has(>svg))::before,
.dempty:has(>b):not(:has(>svg))::before,
.rempty:has(>b):not(:has(>svg))::before{content:'';width:36px;height:36px;margin-bottom:10px;flex:none;
  background:currentColor;opacity:.38;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www%2Ew3%2Eorg/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 13h4l2 3h4l2-3h4'/%3E%3Cpath d='M5 13V6a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v7'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www%2Ew3%2Eorg/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 13h4l2 3h4l2-3h4'/%3E%3Cpath d='M5 13V6a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v7'/%3E%3C/svg%3E") center/contain no-repeat}

/* ---- 任务行 ----
   上下间距口径（2026-10-08 老板定稿：全部 -30% 四舍五入取整，两端统一）：
   tcard 14→10、trow 下距 10→7、tmeta 上距 6→4、orgline 7→5（首条 14→10）、
   listcard 上下衬 4→3、简态行 13→9。横向 gap/页边距不动。 */
.trow{position:relative;margin:0 var(--sp-16) 7px;border-radius:var(--r-2xl)}
.swbg{position:absolute;inset:0;border-radius:var(--r-2xl);display:flex;align-items:center;
  padding:0 22px;font-size:var(--fs-body);font-weight:600;opacity:0;transition:opacity .15s}
.swbg.done{background:var(--success);color:#0A3D12;justify-content:flex-start}
.swbg.del{background:var(--destructive);color:var(--on-primary);justify-content:flex-end}
.trow.show .swbg{opacity:1}
.tcard{position:relative;background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);
  padding:var(--sp-10) var(--sp-14);display:flex;gap:var(--sp-12);align-items:flex-start;cursor:pointer;user-select:none;
  touch-action:pan-y;transition:transform .2s,box-shadow .2s,background .15s}
/* 拖拽悬浮（2026-10-08 元素4 扩跨容器拖入清单）：跟随指针的是 body 下的 fixed 克隆 .dragghost
   （原卡被 .listcard overflow:hidden 裁剪，translate 方案一出卡片边界即不可见）；
   .dragging=原位占位态（半透明，仍参与 insertBefore 重排）。类由 startDrag 挂被拖元素本身。 */
.tcard.dragging,.orgline.dragging,.lrow.dragging,.flrow.dragging{opacity:.55}
/* 知识库拖拽落点（1011 元素6/7）：文件行悬到文件夹行的高亮档（.ditem.dropdst 同语义，行载体不同） */
.lrow.dropdst{background:var(--primary-soft);box-shadow:inset 0 0 0 1.5px var(--primary)}
:root[data-theme="dark"] .lrow.dropdst{background:var(--primary);color:var(--on-primary)}
/* 修6：拖入清单成功后的行级脉冲反馈——组织模式任务不离开组卡，用一次主题色脉冲补足位置感知 */
@keyframes tflash{0%,60%{background-color:var(--primary-soft)}100%{background-color:transparent}}
.tflash{animation:tflash 1.4s ease}
/* 拖拽中的行禁文本选中/长按弹出菜单（触摸端长按拖拽不被系统手势打断） */
.lrow[data-kb]{user-select:none;-webkit-touch-callout:none}
.dragghost{position:fixed;z-index:30;margin:0;background:var(--card);border-radius:var(--r-2xl);
  box-shadow:var(--shadow-pop);opacity:.95;pointer-events:none;transform:scale(1.03)}
/* 修8（2610M）：组织行长按浮起=任务视图同款（fixed/scale(1.03)/投影、原行半透明 .dragging）。
   position:fixed 必须在此重申——.orgline 本体 position:relative 与 .dragghost 基类同特异性(0,1,0)，
   基类在文件前部被后置的 .orgline 反杀：浮起卡曾因此坠到 body 流末尾（视口外=老板所见「没有悬浮效果」、
   撑高文档=真实浏览器经典滚动条出现挤压四栏=「L2/L3 页宽往左缩进一点点」；headless 探针 overlay
   滚动条不占位故历轮测不出）。左右内距由 startDrag 按行在卡内实际偏移内联注入=浮起内容与原行像素对齐 */
.orgline.dragghost{position:fixed;padding:var(--sp-10) 0;box-sizing:border-box;min-height:44px}
.tcard.dim{opacity:.55}
/* 完成勾选框（2610L 元素1-2）：附件1 描边方框图标体系——待完成=i-cksq 外框、完成=i-cksq-on 外框+对勾，
   颜色随 --pc（优先级）；完成态叠同色 14% 淡底（深色 22%，token --ck-soft-p*）。
   原边框盒/实底完成态退役（--lc 变量随之废止，hassub 刻线改 currentColor 直取）。 */
/* 2610L 修1：margin-top 1px→0——老板复核盒几何已对齐但视觉图标低于文字，整体上移 1px（光学修正） */
.ck{width:20px;height:20px;border:none;border-radius:6px;background-color:transparent;
  cursor:pointer;flex:none;margin-top:0;display:flex;align-items:center;justify-content:center;padding:0;
  transition:all .15s;color:var(--pc,var(--gray-30));position:relative;--soft:var(--ck-soft-p1)}
/* hassub 刻线（2610L 修5）：三条杠再缩 50%——单线 5×1.25px（粗细仍与图标描边一致），三线向中线收紧垂直居中 */
.ck.hassub::before,.ck.hassub::after{content:'';position:absolute;left:7.5px;right:7.5px;height:1.25px;
  border-radius:1px;background:currentColor}
.ck.hassub::before{top:7.5px}
.ck.hassub::after{bottom:7.5px}
.ck.hassub{background-image:linear-gradient(currentColor,currentColor);background-size:5px 1.25px;
  background-position:center;background-repeat:no-repeat}
.subitem .ck{width:18px;height:18px;border-radius:5px;margin-top:0}
.ck.p0{--soft:var(--ck-soft-p0)}
/* pn1 钉灰色（无优先级任务/组织组未完成态——组织行内联 --pc:var(--primary) 不抬色） */
.ck.p2,.ck.pn1{--soft:var(--ck-soft-p2);color:var(--gray-30)}
.ck svg{width:100%;height:100%;display:block}
.ck.on{background-color:var(--soft)}
.tmain{flex:1;min-width:0}
/* 标题行：完成方框+标题+标题右侧标签 同行垂直居中（任务/组织视图通用） */
.tthead{display:flex;align-items:center;gap:var(--sp-12);min-width:0;flex-wrap:wrap}
.tthead .tt{flex:none;max-width:100%}
.tmain .tmeta{margin-left:32px} /* 与标题文字左对齐（20px方框+12px间距） */
.trow.simple .tcard{align-items:center}
.orgbody{margin-left:32px}
.tt{font-size:var(--fs-body-lg);font-weight:600;line-height:var(--lh-body-lg);word-break:break-all}
.trow.done .tt{color:var(--t3);text-decoration:line-through}
.tmeta{display:flex;flex-wrap:wrap;gap:var(--sp-6);margin-top:var(--sp-4);align-items:center}
.mtag{font-size:11px;color:var(--t3);display:inline-flex;align-items:center;gap:var(--sp-2)}
.mtag .ic{width:13px;height:13px}
.etchip{font-size:11px;font-weight:500;padding:var(--sp-2) var(--sp-8);border-radius:var(--r-pill);
  background:var(--primary-soft);color:var(--primary)}
.tagchip{font-size:11px;font-weight:500;padding:2px 8px;border-radius:var(--r-pill);
  background:var(--gray-10);color:var(--gray-60)}
:root[data-theme="dark"] .tagchip{background:var(--gray-70);color:var(--gray-30)}
.fldchip{font-size:11px;font-weight:600;padding:2px 8px;border-radius:var(--r-pill);
  background:var(--sec-10);color:var(--sec-70)}
:root[data-theme="dark"] .fldchip{background:rgba(249,132,31,.18);color:var(--sec-40)}
.subchip{font-size:11px;color:var(--t3)}
/* 事项提醒胶囊（2610X-S6 类化，原 subRemChip 内联 display:block;margin-top:2px）：
   独立成行在标题下方（浏览 .st 与编辑 .sedcol 两态共用同源） */
.subchip.rem{display:block;margin-top:var(--sp-2)}
.tchev{color:var(--t3);align-self:center;margin-left:var(--sp-4)}
/* 组织视图行：org 合并卡，组内任务一行一条（行距为紧凑节奏 5px，不加行间分隔线）。
   排列规则：左=圆点|标题|优先级|事项数|对接人（紧随标题），右=清单|标签|执行人|外勤|日期。
   仅首尾对齐：标题到卡顶 与 末条任务到卡底 同为卡片内边距 10px */
.orgline{display:flex;align-items:center;gap:var(--sp-8);padding:5px 0;font-size:14px;color:var(--t2);
  cursor:pointer;min-width:0;position:relative}
.orgline .odot{width:5px;height:5px;border-radius:50%;background:var(--gray-30);flex:none}
.orgline.done .olx{color:var(--t3);text-decoration:line-through}
.orgline .olx{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.orgline .olL{display:flex;align-items:center;gap:var(--sp-4);flex:none}
.orgline .olR{display:flex;align-items:center;gap:var(--sp-4);flex:none;margin-left:auto}
.orgline:first-child{padding-top:var(--sp-10)} /* 标题→首条任务 = 任务与任务的间距（5+5=10） */
.orgline:last-child{padding-bottom:0}

/* ================= 底部导航 ================= */
/* 极简底栏（嘀嗒同款）：实心图标，激活着色 */
.tabbar .ntab .ntx{display:none}
.tabbar .ntab .ic{width:30px;height:30px}
.tabbar .ntab{padding-top:2px}
/* 背景色通铺模式 */
/* 背景色通铺模式：按背景亮度分深底(bgmode-dark 白色前景)/浅底(bgmode-light 深色前景)两套，
   避免主题色图标同色隐形、白字配浅底不可读两类问题 */
.phone.bgmode-dark .ntab{color:rgba(255,255,255,.55)}
.phone.bgmode-dark .ntab.on{color:var(--on-dark)}
.phone.bgmode-dark .wtop .tlt,.phone.bgmode-dark .subtop .pagettl,.phone.bgmode-dark .shead .pagettl{color:var(--on-dark)}
.phone.bgmode-dark .wtop .wicon,.phone.bgmode-dark .subtop .wicon,.phone.bgmode-dark .shead .wicon{color:rgba(255,255,255,.9)}
.phone.bgmode-dark .wtop .wicon:active,.phone.bgmode-dark .subtop .wicon:active,.phone.bgmode-dark .shead .wicon:active{background:rgba(255,255,255,.15)}
.phone.bgmode-dark #pg-work .empty,.phone.bgmode-dark .setbody .empty{color:rgba(255,255,255,.85)}
.phone.bgmode-dark #pg-work .empty b,.phone.bgmode-dark .setbody .empty b{color:var(--on-dark)}
.phone.bgmode-dark #pg-work .wtop .tlt{color:var(--on-dark)}
.phone.bgmode-dark #pg-work .wicon{color:rgba(255,255,255,.9)}
.phone.bgmode-dark #pg-work .wicon:active{background:rgba(255,255,255,.15)}
/* 深底/浅底：我的页配置项都在 .setcard 卡片表面内（卡片自带 --card 底色），
   文字/图标直接用标准前景色即可，白天黑夜与主题色通铺下都不需要额外覆盖 */
/* 明细页头部（.dtop 裸在通铺底色上，与 .subtop 同款深底转白规则） */
.phone.bgmode-dark .dtop .t{color:var(--on-dark)}
.phone.bgmode-dark .dtop .wicon{color:rgba(255,255,255,.9)}
.phone.bgmode-dark .dtop .wicon:active{background:rgba(255,255,255,.15)}
.phone.bgmode-dark .dtop .stchip{color:rgba(255,255,255,.85);border-color:rgba(255,255,255,.4)}
.phone.bgmode-dark .dtop .ts{color:rgba(255,255,255,.85)}
.phone.bgmode-dark .dtop .ts.on{color:var(--on-dark)}
/* 通铺下选中态：--primary 即底色（浅色主题）或与卡头 tint 同色系（绿色主题 2.97:1 撞色），
   统一改深色 --t1 保证任何主题色可读；纯亮/纯暗模式保留紫色选中态（实测 5.7:1 健康）。
   注意特异性=4 类，刻意低于 .dtop 深底白字规则(5 类)——明细页紫底不吃这条 */
.phone.bgmode .ts.on{color:var(--t1)}
.phone.bgmode-dark .dbody .empty{color:rgba(255,255,255,.85)}
.phone.bgmode-dark .dbody .empty b{color:var(--on-dark)}

/* 我的页：右指小箭头 + 行值文本（嘀嗒式配置行） */
.crarr{width:14px;height:14px;color:var(--t3);flex:none}
.setrow2 .valr{font-size:12px;color:var(--t3);flex:none;max-width:56%;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
/* 我的页两个同步状态位：信息性状态文字用 --t2（暗色下 --primary 紫字 2.03:1 近隐形，2026-09-03 P02） */
#entCount,#ddSync{color:var(--t2)}

/* 图标一律按 SVG 原始朝向渲染，不做 CSS 方向调整（需要转向请直接改 icons/ 素材） */

/* 手机全屏自适应 */
@media (max-width:540px){
  body{display:block;background:var(--bg)}
  .phone{width:100%;height:100dvh;max-width:none}
}

/* 底部安全区：APP 通铺模式下让底栏背景延伸进手势条/导航条区域。
   底栏不透明（--pagebg 恒等于所在页背景色，同色相接=无形分割线）：滚动内容从栏下穿过时被同色遮住，
   不再与图标叠字；主题色通铺时 --pagebg 由 applyThemeColor 同步为主题色 */
.tabbar{position:absolute;left:0;right:0;bottom:0;height:calc(64px + max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px)));background:var(--pagebg,var(--bg));
  display:flex;align-items:stretch;padding:0 6px max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px));z-index:99}
/* 层级总则（规范§2.2-2）：底栏=主页面专属——任一二级页/弹层/对话框打开即隐藏(.hide-tab 由 JS 统一切换)，
   退出=系统返回键(__nativeBack 全层注册)/点遮罩空白/WEB端轨道与ESC；底栏只服务主页面跳转 */
.phone.hide-tab .tabbar{display:none}
#mSheet{z-index:97}
#mOrg,#mExe,#mDate,#mKbCat{z-index:98}

/* 菜单(pmenu)最上：优先级/标签/更多等编辑页菜单压在编辑弹层之上（APP WebView 用 id 选择器兜底优先级） */
#pmenu{z-index:150}
.ntab{flex:1;position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;background:none;border:none;cursor:pointer;color:var(--t3);font-family:var(--font-ui);padding:0}
.ntab .ic{width:22px;height:22px}
.ntab .ntx{font-size:10.5px;font-weight:600;letter-spacing:.4px}
.ntab.on{color:var(--primary)}

/* ---------- 对话框 ---------- */
.dlgmask{position:absolute;inset:0;background:rgba(16,17,24,.45);z-index:99;display:none; /* 99=最顶层模态（老板 09-09 晚元素5：曾因同档98被分类管理面板遮住「新建分类」）；hide-tab 已藏底栏，与 99 档 tabbar 无共存 */
  align-items:center;justify-content:center;padding:var(--sp-24)}
.dlgmask.on{display:flex}
.dlg{position:relative;width:100%;max-width:360px;background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-pop);
  padding:var(--sp-20);animation:pmup .18s ease}
.dlg h3{margin:0 0 var(--sp-14);font-size:18px;font-weight:700;padding-right:32px}
.dlgx{position:absolute;top:10px;right:10px;width:32px;height:32px;border:none;background:none;color:var(--t3);border-radius:50%;
  display:flex;align-items:center;justify-content:center;cursor:pointer}
.dlgx .ic{width:18px;height:18px}
.dlgx:active{background:var(--gray-10)}
.dlg .dtitle2{padding-right:32px}
/* U3 弹窗动作行：右对齐主/次/危险三态；删除确认=红色实心。
   2610X-S7 按钮规范：弹窗内按钮统一 36px 高 + 16px 圆角（老板元素3：46 太占地方，32-36 取 36） */
.dlgact{display:flex;justify-content:flex-end;gap:var(--sp-10);margin-top:var(--sp-16)}
.dlgact .dlgbtn{flex:none;min-height:36px;padding:0 18px;border-radius:var(--r-2xl);background:var(--primary);color:var(--on-primary);border:1px solid var(--primary);font-weight:600}
.dlgact .dlgbtn.ghost{background:none;color:var(--t2);border:1px solid var(--line-strong)}
.dlgact .dlgbtn.danger,.dlgbtn.danger{background:var(--destructive);border:1px solid var(--destructive);color:var(--on-primary)}
.dlg .rowopt{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-12) var(--sp-6);cursor:pointer;font-size:14px;color:var(--t1)}
.dlg .rowopt .rdo{width:18px;height:18px;border-radius:50%;border:2px solid var(--gray-30);flex:none;
  display:flex;align-items:center;justify-content:center;transition:all .15s}
.dlg .rowopt.on .rdo{border-color:var(--primary);box-shadow:inset 0 0 0 4.5px var(--primary)}
.dlgbtns{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-10)}
.dlgbtn{border:none;background:none;color:var(--primary);font-weight:600;font-size:14px;padding:var(--sp-8) var(--sp-12);
  cursor:pointer;font-family:var(--font-ui);border-radius:var(--r-sm)}
.dlgbtn.ghost{color:var(--t3)}
.cdots{display:flex;gap:10px;margin:10px 0 2px;flex-wrap:wrap}
.cdot{width:26px;height:26px;border-radius:50%;cursor:pointer;border:2.5px solid transparent;flex:none}
.cdot.on{border-color:var(--primary);box-shadow:inset 0 0 0 3px var(--card)}

/* ===== 全局下拉刷新指示器 ===== */
#ptr{position:absolute;top:calc(max(env(safe-area-inset-top,0px),var(--sa-top,0px)) + 8px);left:50%;margin-left:-16px;width:32px;height:32px;
  border-radius:50%;background:var(--card);box-shadow:var(--shadow-card);display:flex;align-items:center;justify-content:center;
  z-index:95;opacity:0;transform:translateY(-44px);pointer-events:none;color:var(--t3)}
#ptr .ic{width:18px;height:18px}
#ptr.spin .ic{animation:ptrspin .8s linear infinite}
@keyframes ptrspin{to{transform:rotate(360deg)}}

/* 图标底座（侧边栏与设置页共用）：彩色圆角方块 + 白色 glyph */
.dic{display:flex;align-items:center;justify-content:center;width:26px;height:26px;
  border-radius:8px;color:var(--on-primary);flex:none}
.dic .ic{width:15px;height:15px}
.setrow2 .dic{width:26px;height:26px;border-radius:8px}
.setrow2 .dic .ic{width:15px;height:15px}

/* ---------- 标签/清单编辑页 ---------- */
.edpage{position:absolute;inset:0;background:var(--bg);z-index:88;display:none;flex-direction:column}
.edpage.on{display:flex}
/* ---------- 二级页面（搜索/清单设置/实体库/标签清单编辑）统一规范 ----------
   头部同款：同一 padding + 最左统一返回按钮(.wicon+i-back)；背景由 applyThemeColor 全局铺主题色 */
.edhd{display:flex;align-items:center;gap:2px;padding:calc(10px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 12px 8px 8px;
  background:var(--pagebg,var(--bg))}
.edhd .edt{flex:1;font-size:18px;font-weight:700}
.edbody{flex:1;overflow-y:auto;padding:2px 16px 30px}
#edIcon{display:flex;align-items:center;justify-content:center;width:30px;flex:none;margin-right:4px}

/* ---------- 清单设置页 ---------- */
.setpage{position:absolute;inset:0;background:var(--bg);z-index:85;display:none;flex-direction:column}
.setpage.on{display:flex}
.sethd{display:flex;align-items:center;gap:2px;padding:calc(10px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 12px 4px 8px;
  background:var(--pagebg,var(--bg))}
/* ===== 二级页头部固定模板（.subtop+.pagettl）=====
   与工作页头部（.wtop/.wicon/.tlt）大小/位置/间距/尺寸完全一致，新二级页直接套用；
   主题色/深浅模式下标题与图标的颜色由下方 bgmode 规则统一接管 */
.subtop{display:flex;align-items:center;gap:2px;min-height:68px;padding:calc(16px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 16px 12px 8px;
  background:var(--pagebg,var(--bg))}
.subtop .wicon{width:40px;height:40px}
.subtop .wicon .ic{width:24px;height:24px}
.pagettl{flex:1;min-width:0;font-size:20px;font-weight:700;line-height:24px;padding-left:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 二级页搜索框容器：与页面同色背景，列表滚动时行沉入其下缘，保持固定间隙不重叠 */
.searchwrap{background:inherit;padding:2px 16px 10px;position:relative;z-index:2} /* 页头→内容统一2px(09-10) */
/* 筛选/排序激活态：默认主题色；主题色通铺背景（bgmode-dark）下用白色+半透明底点 */
.subtop .wicon.fsOn{color:var(--primary)}
.phone.bgmode-dark .subtop .wicon.fsOn{color:var(--on-dark);background:rgba(255,255,255,.18)}
/* 二级页悬浮返回按钮：白色卡片底 + 主题色箭头（主题色通铺背景上清晰可见，全局一致） */
/* 数据表列表滚动区（250915 实体库侧栏已删，.entnavlist 由首页板块侧栏 boardnav 复用） */
.entnavlist{flex:1;overflow-y:auto;padding:2px 10px 8px;scrollbar-width:none}
.entnavlist::-webkit-scrollbar{display:none}
/* 卡内说明文字（在卡片白底上，任何背景主题下可读；全局规范：说明不放卡片外） */
.setnote{font-size:12px;color:var(--t3);line-height:1.7;padding:var(--sp-2) var(--sp-16) var(--sp-10)}
/* .srow 通用表浏览行 2610k P3 随旧数据管理面板退役 */
/* U5 Tabs 统一：.segcard 为唯一 36px 等宽分段控件（页头内也用它） */
.sethd .segcard{margin:0;flex:1;min-width:0;max-width:480px}
.setbody{flex:1;min-height:0;overflow-y:auto;padding:var(--sp-2) var(--sp-16) 40px;scrollbar-width:none}
.setbody::-webkit-scrollbar{display:none}
.setcard{background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);padding:3px 0;margin-bottom:var(--sp-14);overflow:hidden}
.setcard>.setrow2:only-child{min-height:40px;padding-top:0;padding-bottom:0} /* 单条动作卡=3+40+3=46 */
.setrow2{display:flex;align-items:center;gap:var(--sp-12);padding:var(--sp-12) var(--sp-16);cursor:pointer;position:relative;
  background:var(--card);user-select:none;touch-action:pan-y}
.setrow2 .sic3{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--on-primary);flex:none}
.setrow2 .flg{width:18px;height:18px;margin:0 var(--sp-4);flex:none}
.setrow2 .sic3 .ic{width:15px;height:15px}
.setrow2 .grow{flex:1;min-width:0;font-size:var(--fs-body);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.setrow2 .vis{font-size:13px;color:var(--primary);display:flex;align-items:center;gap:2px;flex:none}
.setrow2 .vis.hid{color:var(--t3)}
.setrow2 .cnt2{font-size:12px;color:var(--t3);flex:none}
.setrow2.dragging{background:var(--gray-10);box-shadow:var(--shadow-pop);z-index:5;border-radius:var(--r-lg)}
:root[data-theme="dark"] .setrow2.dragging{background:var(--gray-70)}
.seth2{font-size:12px;font-weight:700;color:var(--t3);margin:var(--sp-2) var(--sp-2) var(--sp-8)}
/* ================= 浮层 ================= */
.mask{position:absolute;inset:0;background:rgba(16,17,24,.5);z-index:50;opacity:0;pointer-events:none;
  transition:opacity .22s;display:flex;align-items:flex-end}
.mask.on{opacity:1;pointer-events:auto}
.sheet{width:100%;background:var(--bg);border-radius:20px 20px 0 0;max-height:94%;overflow-y:auto;
  transform:translateY(100%);transition:transform .26s cubic-bezier(.32,.72,.28,1),height .22s ease;padding:8px 16px calc(18px + max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px)));
  scrollbar-width:none;position:relative}
.sheet.full{height:min(94%,900px)}
.sheet::-webkit-scrollbar{display:none}
.mask.on .sheet{transform:none}
.grab{width:40px;height:4px;border-radius:2px;background:var(--line-strong);margin:var(--sp-4) auto var(--sp-6)}

/* ---- 极简快速录入（嘀嗒式） ---- */
.qarea{padding:6px 2px 2px}
/* 2610k C4：详情页头与 #dpage .dtop（L4 范本）逐像素同构——头盒已提为 sheet 直接子元素（原嵌 .qarea 内）。
   WEB 停靠：负 margin 抵消 sheet 16px 内距 → 贴面板顶(y=0)、占满全宽，自身标准内距 16/16/12/8
   → 勾选框按钮盒 x=8、勾选框视觉 24（=图标字形）、标题 50px 档、右钮右缘 16px；
   APP 底部弹层：margin-left -8（同 .sheet .dshd 口径），grab 之下轻量头 */
.phone.ldesk #mSheet .dtop{margin:-16px -16px 0;padding:var(--sp-16) var(--sp-16) var(--sp-12) var(--sp-8)}
#mSheet .dtop{background:transparent;padding:var(--sp-2) 0 var(--sp-8);margin-left:-8px}
#mSheet .dtop .qtitle{flex:1;min-width:0;width:auto;font-size:20px;font-weight:700;line-height:24px;padding:var(--sp-8) 0}
/* 勾选框=标准按钮几何：盒 40×40（与 .wicon 同位同寸）——2610L：伪元素描边框退役，
   改 i-cksq/i-cksq-on 图标字形 24×24（与 #fTitle 行高 24px 同轴居中，等高关系不变）；
   完成态淡底=命中区内的 24×24 ::before 层（先于 svg 绘制，不遮字形） */
#mSheet .dtop .ck{width:40px;height:40px;border:none;background:none;border-radius:0;margin-top:0;position:relative}
#mSheet .dtop .ck.on::before{content:'';position:absolute;left:8px;top:7px;width:24px;height:24px;box-sizing:border-box;
  border-radius:6px;background:var(--soft,transparent)}
/* 2610L 修1：字形/淡底同步上移 1px（top 8→7，与标题光学居中） */
#mSheet .dtop .ck svg{position:absolute;left:8px;top:7px;width:24px;height:24px}
#mSheet .dtop .wicon{width:40px;height:40px}
#mSheet .dtop .wicon .ic{width:24px;height:24px}
.qtitle{width:100%;border:none;background:transparent;outline:none;color:var(--t1);
  font-family:var(--font-ui);font-size:17px;font-weight:500;padding:var(--sp-10) 0 var(--sp-8)}
.qtitle::placeholder{color:var(--t3)}
.qdesc{width:100%;border:none;background:transparent;outline:none;color:var(--t1);resize:none;
  font-family:var(--font-ui);font-size:13px;padding:var(--sp-4) 0 var(--sp-2);min-height:26px;max-height:40vh}
.qdesc::placeholder{color:var(--t3)}
.qdesc{scrollbar-width:none;overflow-y:auto}
.qdesc::-webkit-scrollbar{display:none}
.qinfo{padding:var(--sp-6) 0 var(--sp-2)}
.qirow{display:flex;flex-wrap:wrap;gap:var(--sp-6);align-items:center}
.qirow+.qirow{margin-top:var(--sp-8)}
.qinfo:empty{display:none}

.qtools{position:relative;display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-8) 0 var(--sp-4);margin:var(--sp-4) 0 0 -6px}
/* 左移 -9px：图标在 38px 按钮内居中（两侧各约 8.5px 空白），使首个图标视觉左缘与标题文字对齐；
   间距 gap 4→2 + 按钮 40→37，图标视觉间距缩短约 20%（23px→18px） */
.qtools .ticon{width:37px;height:37px}
.ticon{width:40px;height:40px;border:none;background:transparent;border-radius:var(--r-md);color:var(--t3);
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.ticon:active{background:var(--gray-10)}
:root[data-theme="dark"] .ticon:active{background:var(--gray-70)}
.ticon.del{color:var(--destructive)}
.ticon .ic{width:21px;height:21px}
.ticon .dv{width:15px;height:15px}
.tspacer{flex:1}
.micb{width:40px;height:40px;border:none;background:transparent;color:var(--t3);cursor:pointer;
  display:flex;align-items:center;justify-content:center;flex:none;border-radius:50%}
.sendb{width:44px;height:44px;border-radius:50%;border:none;background:var(--primary);color:var(--on-primary);
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none;box-shadow:var(--shadow-primary)}
.sendb .ic{width:20px;height:20px}
/* 2610i 修4：无修订/已提交=置灰（不可点）；有修订恢复主色 */
.sendb:disabled{background:var(--gray-10);color:var(--t3);box-shadow:none;cursor:default}
:root[data-theme="dark"] .sendb:disabled{background:var(--gray-70);color:var(--gray-40)}

/* 弹出菜单（嘀嗒式，锚在工具栏上方） */
.pmenu{position:absolute;background:var(--card);border-radius:var(--r-lg);
  box-shadow:var(--shadow-pop);border:1px solid var(--line);min-width:190px;max-width:calc(100% - 16px);padding:var(--sp-6);z-index:92;
  display:none;animation:pmup .16s ease}
.pmenu.on{display:block}
@keyframes pmup{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.prow{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-10) var(--sp-12);border-radius:var(--r-sm);cursor:pointer;
  font-size:var(--fs-body);color:var(--t1);user-select:none}
.prow:active{background:var(--gray-10)}
:root[data-theme="dark"] .prow:active{background:var(--gray-70)}
.prow .flag{width:16px;height:16px;flex:none}
.prow .hash{color:var(--primary);font-weight:700;flex:none}
.prow .grow{flex:1}
.prow .pv{color:var(--t3);font-size:12px}
.pcheck{width:18px;height:18px;border-radius:50%;border:2px solid var(--gray-30);display:flex;
  align-items:center;justify-content:center;color:transparent;flex:none}
.prow.on .pcheck{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.pcheck svg{width:10px;height:10px;stroke-width:3}
.pmenu .phdr{font-size:11px;font-weight:700;color:var(--t3);padding:var(--sp-6) var(--sp-12) var(--sp-2)}

/* ---- 日期选择底部弹层（嘀嗒式，全宽约2/3屏高） ---- */
.dsmask{position:absolute;inset:0;background:rgba(16,17,24,.5);z-index:58;opacity:0;pointer-events:none;
  transition:opacity .22s;display:flex;align-items:flex-end}
.dsmask.on{opacity:1;pointer-events:auto}
.dsheet{width:100%;background:var(--bg);border-radius:20px 20px 0 0;height:min(72%,600px);padding-bottom:max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px));
  display:flex;flex-direction:column;transform:translateY(100%);
  transition:transform .26s cubic-bezier(.32,.72,.28,1)}
.dsmask.on .dsheet{transform:none}
/* 2610f 元素11：APP端弹窗页头与 WEB 端 L4 页面页头同规范（高68/顶距16/标题20·700/关闭钮40·图标24，
   标题不带 tab 下划线）；WEB 停靠态由 hmL4Heads/hmCHead 重建为 dback+pagettl，几何同源
   （原 .phone.ldesk .dshd 几何覆盖档随基础态升级废止） */
.dshd{display:flex;align-items:center;min-height:68px;box-sizing:border-box;padding:var(--sp-16) var(--sp-16) var(--sp-12) var(--sp-8);gap:var(--sp-2)}
.dsx,.dsok{width:40px;height:40px;border:none;background:none;color:var(--t2);display:flex;align-items:center;
  justify-content:center;cursor:pointer;border-radius:50%;flex:none}
.dsx .ic,.dsok .ic{width:24px;height:24px}
.dsok{color:var(--t1);font-family:var(--font-ui);font-size:13px}
.dshd .sp{flex:1}
.dstab{font-size:20px;font-weight:700;line-height:24px;color:var(--t1);padding:0;margin-left:var(--sp-4);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dswrap{display:flex;flex-direction:column;flex:1;min-height:0;width:100%;padding:0 var(--sp-16) var(--sp-12)}
/* 2610h U8修3：快捷区左端「今天」对齐首星期列、右端「清除日期」对齐末星期列，
   五个按钮在两端之间等距（1:2:1:2:1 跨列，占位与下方七列同轨） */
.dsquick{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--sp-2);padding:var(--sp-12) 0 var(--sp-4)}
.dsquick .dsq:nth-child(1){grid-column:1 / span 1}
.dsquick .dsq:nth-child(2){grid-column:2 / span 2}
.dsquick .dsq:nth-child(3){grid-column:4 / span 1}
.dsquick .dsq:nth-child(4){grid-column:5 / span 2}
.dsquick .dsq:nth-child(5){grid-column:7 / span 1}
.dsq{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--sp-4);padding:var(--sp-4) 0 var(--sp-2);
  border:none;background:none;cursor:pointer;color:var(--t1);font-family:var(--font-ui);min-width:0}
.dsq svg{width:28px;height:28px;color:var(--primary)}
.dsq span{font-size:12px;color:var(--t1);white-space:nowrap}
.dsq.on span{color:var(--primary);font-weight:700}
.dscal{flex:1;overflow-y:auto;padding:0;scrollbar-width:none}
.dscal::-webkit-scrollbar{display:none}
/* 2610h U8：月历头按任务日历七列模板——左右箭头占首末列、标题跨中五列（原左标题+右双箭头） */
.dscalhd{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--sp-2);align-items:center;padding:var(--sp-10) 0 var(--sp-2)}
.dscalhd .dsnv{grid-column:1;width:28px;height:28px;border:none;background:none;color:var(--t3);cursor:pointer;
  font-size:18px;line-height:1;padding:0;border-radius:50%;font-family:var(--font-ui);justify-self:center;
  display:flex;align-items:center;justify-content:center}
.dscalhd .dsnv:last-child{grid-column:7}
.dscalhd .dsnv:active{background:var(--gray-10)}
:root[data-theme="dark"] .dscalhd .dsnv:active{background:var(--gray-70)}
.dscalhd .dsmt{grid-column:2 / span 5;text-align:center;font-size:13px;font-weight:600;color:var(--t1);
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dscal .calgrid{padding-bottom:var(--sp-6)}
.dsrows{background:var(--card);border-radius:14px;margin:var(--sp-10) 0 0;padding:0 var(--sp-6);box-shadow:var(--shadow-card);flex:none}
.dsrow{display:flex;align-items:center;gap:var(--sp-12);padding:var(--sp-12) var(--sp-10);cursor:pointer;font-size:15px;color:var(--t1);user-select:none}
.dsrow+.dsrow{border-top:1px solid var(--line)}
.dsrow .ic{width:18px;height:18px;color:var(--t2)}
.dsrow .grow{flex:1}
.dsrow .pv{color:var(--t3);font-size:14px}
.dsrow .chev{color:var(--t3);font-size:20px;line-height:1;font-weight:600}
/* 月历格：周一起始，日期格 40px 触控面；今日软底与任务日历一致 */
.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--sp-2);text-align:center}
.calgrid .wd{font-size:11px;color:var(--t3);padding:var(--sp-8) 0 var(--sp-4)}
.calgrid .day{width:min(40px,100%);height:auto;aspect-ratio:1;padding:0;margin:0 auto;display:flex;align-items:center;justify-content:center;
  border-radius:50%;cursor:pointer;color:var(--t1);user-select:none}
.calgrid .day.today{background:var(--primary-soft);color:var(--primary);font-weight:700}
.calgrid .day.sel{background:var(--primary);color:var(--on-primary);font-weight:700}
.searchwrap .tinput{height:46px} /* 单条控件高度统一46（09-10 元素1-2） */
.tinput{width:100%;border:1.5px solid var(--line);background:var(--card);border-radius:var(--r-2xl);
  padding:10px 12px;font-size:var(--fs-body);font-family:var(--font-ui);color:var(--t1);outline:none}
.tinput:focus{border-color:var(--primary)}

/* ---- 滚轮选择器（时间/自定义提醒/自定义重复） ---- */
.wheels{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-8);position:relative;height:200px}
.wheel{flex:1;height:200px;overflow-y:auto;scroll-snap-type:y mandatory;scrollbar-width:none;position:relative;z-index:1}
.wheel::-webkit-scrollbar{display:none}
.wpad{height:80px;flex:none;pointer-events:none}
.wit{height:40px;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--t1);
  scroll-snap-align:center;opacity:.25;transition:opacity .12s,font-size .12s;user-select:none;
  font-variant-numeric:tabular-nums;cursor:grab;white-space:nowrap}
.wit.n2{opacity:.4}
.wit.n1{opacity:.6;font-size:16px}
.wit.on{opacity:1;font-size:22px;font-weight:700}
.wsep{font-size:22px;font-weight:700;color:var(--t1);flex:none;padding-bottom:var(--sp-2)}
.wfade{position:absolute;left:0;right:0;height:64px;pointer-events:none;z-index:2}
.wfade.t{top:0;background:linear-gradient(var(--card) 8%,transparent)}
.wfade.b{bottom:0;background:linear-gradient(transparent,var(--card) 92%)}
/* 弹窗选项行（提醒/重复） */
.dlg .rowopt{padding:var(--sp-12) var(--sp-6);font-size:15px}
.dlg .rowopt i{font-style:normal;color:var(--t3);font-size:13px;margin-left:var(--sp-4)}
.dlg .rowopt .grow{flex:1}
.dlg .rowopt .chev{color:var(--t3);font-size:20px;line-height:1;font-weight:600}
.dlg .rowopt.on .lbl{color:var(--primary)}
.dlg .rowopt .rchk{width:18px;height:18px;color:var(--primary);flex:none}
.dlg .remdiv{height:1px;background:var(--line);margin:var(--sp-8) -18px}
.dlg .whint{min-height:18px;font-size:12px;color:var(--destructive);padding:var(--sp-2) var(--sp-6) 0}

/* 编辑附加区（子任务/时间线）；2610h U8：小节头 12/700 正文色，时间线时间/动作分列、同缘对齐 */
.extras{padding:var(--sp-2) var(--sp-2) 0}
.extras .sechead{font-size:12px;font-weight:700;color:var(--t2);padding:var(--sp-12) 0 var(--sp-4) var(--sp-16);display:flex;justify-content:space-between;align-items:baseline}
.extras .sechead .secn{font-size:11px;font-weight:400;color:var(--t3);font-variant-numeric:tabular-nums}
/* 2610Q 元素2：行内全部顶对齐——多行事项时勾选框/序号/拖柄对齐首行文字（原 center 会落到
   文本块纵向中心）；单行视觉位不变的前提=各行内件与正文行高同高：拖柄 24→20（padding 4→2），
   18px 勾选框 margin-top 1px、19px 删除钮 margin-top .5px 光学归位 */
.subitem{display:flex;align-items:flex-start;gap:var(--sp-10);padding:9px var(--sp-2);touch-action:pan-y}
.subitem .ck{width:18px;height:18px;border-radius:5px;margin-top:1px}
.subitem .st{flex:1;font-size:var(--fs-body);line-height:var(--lh-body);min-width:0;word-break:break-all}
/* 2610Q：提醒 chip 行高钉 16px（caption 档）——.st 行高改显式 20px 后 chip 不随继承漂移，
   浏览态（.st 内）与编辑态（.sedcol 内）同源，无感切换零位移 */
.subitem .subchip{line-height:var(--lh-caption)}
/* 2610i：完成事项只降灰，不加删除线（老板 2610i-2 定稿） */
.subitem.done .st{color:var(--t3)}
.subitem .sx{color:var(--t3);cursor:pointer;background:none;border:none;padding:var(--sp-2);flex:none;margin-top:.5px}
/* 任务事项：右侧长按拖拽排序手柄 + 行内输入（嘀嗒式）；
   2610Q 元素2：padding 4→2px，柄盒 24→20 与正文行高同高（行内顶对齐后不再把单行行高撑出 4px）；
   2610X-S6：图标 #i-sort→#i-menu（三族归一收尾）+补 user-select（把手三属性缺一不可，§4-7） */
.subitem .sdrag{color:var(--gray-30);background:none;border:none;padding:var(--sp-2);cursor:grab;flex:none;touch-action:none;user-select:none;-webkit-user-select:none}
:root[data-theme="dark"] .subitem .sdrag{color:var(--gray-50)}
/* 2610i：新增/行内编辑共用多行自适应输入（textarea 随内容长高，长文本不再横向滚动）；
   顶对齐让勾选框/删除钮贴首行，多行时右缘仍齐（subnew 档；editing 档见 2610O 无感切换） */
.subitem.subnew{align-items:flex-start}
.subitem.subnew .ck{margin-top:3px}
.subitem .snew{flex:1;min-width:0;border:none;background:transparent;outline:none;color:var(--t1);
  font-family:var(--font-ui);font-size:var(--fs-body);padding:var(--sp-2) 0;line-height:1.5;
  resize:none;overflow:hidden;display:block;min-height:26px}
.subitem .snew::placeholder{color:var(--t3)}
.subitem.subnew .ck{opacity:.4;pointer-events:none}
.subitem.dragging{background:var(--primary-soft);border-radius:var(--r-md);position:relative;z-index:5}
:root[data-theme="dark"] .subitem.dragging{background:var(--gray-90)}
/* 2610O ①无感行内编辑：点击切换瞬间量取浏览态 .st 的盒宽/盒高/行高由 JS 钉进编辑盒——
   sedcol 定宽（右缘钮多寡不再改变换行宽度）+ min-height=原盒高（删字行高不塌），
   sedit 拷 .st 行高并同用 break-all 断行，多行文本切换前后逐像素同位；
   2610Q 元素2：editing 行随浏览态改顶对齐（多行时勾选框/删除钮贴首行，与 center 同为单行零位移），
   删除钮 margin-left:auto 靠右。
   ⚠ sedit 系列必须排在 .snew 之后：同权重 (0,2,0) 靠后者覆盖 padding/min-height/flex */
.subitem.editing{align-items:flex-start}
.subitem.editing .sx{margin-left:auto}
.subitem .sedcol{flex:none;display:flex;flex-direction:column;justify-content:flex-start;min-width:0}
.subitem .sedit{flex:0 0 auto;width:100%;padding:0;min-height:0;line-height:inherit;word-break:break-all}
/* 2610O ②序号模式：完成框后正文前的显示序号（renderExtras 按显示位次派发，拖拽/增删自动重排）。
   2610Q 元素6-7：格式「N.」、字号/颜色与正文一致（完成态随 .st 降灰）、行高同正文保证同线、
   与勾选框间距=行内标准 10px gap（同完成模式图标↔文字间距，元素2-3）；
   2610R 元素1-2：序号↔正文间距改 1px——margin-right:-9px 抵消 flex gap 10（R1：负 margin 补偿须注释） */
.subitem .snum{flex:none;font-size:var(--fs-body);line-height:var(--lh-body);font-variant-numeric:tabular-nums;margin-right:-9px}
.subitem.done .snum{color:var(--t3)}
.tl{position:relative;margin:var(--sp-2) 0 0;padding:0 0 0 var(--sp-16);list-style:none}
.tl.tlmulti::before{content:'';position:absolute;left:2.5px;top:14px;bottom:14px;width:1px;background:var(--line)}
.tl li{position:relative;list-style:none;font-size:var(--fs-caption);color:var(--t2);padding:var(--sp-8) 0;
  display:flex;flex-wrap:wrap;align-items:baseline;line-height:1.5}
.tl li::before{content:'';position:absolute;left:-16px;top:14px;width:6px;height:6px;border-radius:50%;
  background:var(--line-strong);flex:none}
.tl .tlt{font-size:11px;color:var(--t3);font-variant-numeric:tabular-nums;white-space:nowrap}
.tl .tld{font-size:11px;color:var(--t3);white-space:pre}
.tl .tlx{color:var(--t2);min-width:0;word-break:break-word}

/* 组织级联面板 */
.orow{display:flex;align-items:center;gap:var(--sp-12);padding:var(--sp-12) var(--sp-2);border-bottom:1px solid var(--line);cursor:pointer}
.orow .oic{width:36px;height:36px;border-radius:var(--r-md);background:var(--primary-soft);color:var(--primary);
  display:flex;align-items:center;justify-content:center;flex:none}
.orow .olt{flex:1;min-width:0}
.orow .olt b{display:block;font-size:var(--fs-body);font-weight:600}
.orow .olt span{font-size:11px;color:var(--t3)}
.orow .oval{font-size:13px;color:var(--t3);max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.orow .oval.set{color:var(--t1);font-weight:600}
.orow .ochev{color:var(--t3)}
/* 2610k C1：弹层标准头（dshd）入 .sheet 的就地覆写——（.dsheet 系如 #mDate 不带 .sheet 类不受影响）；
   停靠态由 hmL4Heads 重建为 dback+pagettl，容器仍是 .dshd。
   2610k C2 元素2：margin-left -8 抵消 sheet 页边距——返回/关闭钮字形落「页边框→字形 16px」口径、
   标题落 8+40+2=50px 档，与 #mDate/.dtop 逐像素同源（右侧动作右缘本就随 sheet 16px，不动）。
   2610k C3 元素6：负 margin-top 抵消 sheet 顶 padding（APP=8 / ldesk 停靠=16）+头自身 padding-top 16
   ——头盒贴弹层顶、内容行顶 16px，与 #mDate 头部节奏完全同构（无 grab 缝隙） */
.sheet .dshd{padding:var(--sp-16) 0 var(--sp-12);margin:-8px 0 0 -8px}
.phone.ldesk .sheet .dshd{margin-top:-16px}
.sheet .searchwrap{padding:var(--sp-2) 0 var(--sp-10)}
/* dshd 头右侧动作统一 40·24（与 dsx/dsok 同规格；wicon 基类 38px 就地升档） */
.dshd .wicon{width:40px;height:40px}
.dshd .wicon .ic{width:24px;height:24px}

/* 对接人快捷标签（2610k C1）：当前组织人员 chips，选中=主色描边+软底+勾 */
.wchips{display:flex;flex-wrap:wrap;gap:var(--sp-8);padding:var(--sp-2) 0 var(--sp-4)}
.wchip{display:inline-flex;align-items:center;gap:var(--sp-6);max-width:100%;padding:var(--sp-6) var(--sp-12) var(--sp-6) var(--sp-6);
  border:1.5px solid var(--line);border-radius:var(--r-pill);background:var(--card);color:var(--t1);
  font-family:var(--font-ui);font-size:var(--fs-body);font-weight:500;cursor:pointer}
.wchip .wav{width:24px;height:24px;border-radius:50%;background:var(--primary-soft);color:var(--primary);
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex:none}
.wchip .ic{width:14px;height:14px;stroke-width:3;color:var(--primary);flex:none;display:none}
.wchip.on{border-color:var(--primary);background:var(--primary-soft);color:var(--primary);font-weight:600}
.wchip.on .ic{display:block}

/* 组织&人员&合同选择列表。
   2610R 元素4：300px 限高退役——带搜索抽屉高度改由 pinSheetHeight 统一治理
   （min(内容自然高, 屏 60%) 钉死，列表随停靠 flex 列自动收缩铺满余高、内部滚动） */
.slist{overflow-y:auto;scrollbar-width:none}
.slist::-webkit-scrollbar{display:none}
.sitem{display:flex;align-items:center;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line);cursor:pointer}
.sitem .sic2{width:38px;height:38px;border-radius:var(--r-md);background:var(--primary-soft);color:var(--primary);
  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex:none}
.sitem .st2{flex:1;min-width:0}
.sitem .st2 b{display:block;font-size:var(--fs-body);font-weight:600}
.sitem .st2 span{font-size:11px;color:var(--t3)}
.scheck{width:20px;height:20px;border-radius:50%;border:2px solid var(--gray-30);display:flex;align-items:center;
  justify-content:center;color:transparent;flex:none}
.sitem.on .scheck{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.scheck svg{width:11px;height:11px;stroke-width:3}

/* 搜索 */
.searchpage{position:absolute;inset:0;background:var(--bg);z-index:60;display:none;flex-direction:column}
.searchpage.on{display:flex}
/* 页头模板与 .subtop 同款：高度68、顶距16(safe-area 叠加)、标题 .pagettl 20/700；搜索框独立 .searchwrap 行 */
.shead{display:flex;align-items:center;gap:var(--sp-2);min-height:68px;padding:calc(16px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 16px 12px 8px;
  background:var(--pagebg,var(--bg))}
.sres{flex:1;overflow-y:auto;padding:var(--sp-2) 0 40px}
/* 2610P 全局搜索：入口卡 #gsEntry 内 .gsbar（工作台经营分析上方）+ 搜索页范围行 .gschips
   （复用 .chip/.ts/.tseg 控件类，本两处为一次性布局类——已登记 smoke LEGACY_CLASSES） */
/* 2610X-S8 元素1：工作台全局搜索入口条归搜索栏铁律 46px（原 padding 撑出 48px） */
.gsbar{display:flex;align-items:center;gap:var(--sp-10);height:46px;padding:0 var(--sp-16);cursor:pointer;color:var(--t3)}
.gsbar .ic{width:18px;height:18px;flex:none}
.gsbar-ph{font-size:14px}
.gschips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-8);padding:var(--sp-10) var(--sp-16) var(--sp-4)}

/* 设置行（我的页已改用 .setcard+.setrow2，这里仅保留开关样式） */
.sw{width:44px;height:26px;border-radius:13px;background:var(--gray-20);position:relative;transition:background .2s;flex:none}
.sw::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--on-dark);
  transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.sw.on{background:var(--primary)}
.sw.on::after{left:21px}
/* .ver 版本行（2610X-S2 删）：1011 改版后版本行走 meRow（#meVerVal），本类零消费者（走查 DOM 证伪+全源 grep 零引用） */

/* ================= 通用按钮与列表行（搜索结果等） ================= */
.btn{border:none;border-radius:var(--r-pill);font-family:var(--font-ui);font-weight:600;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;gap:6px}
/* 2610X-S7 按钮规范：btn-p=页面级主按钮 42px + 16px 圆角（详情底栏/权限页新建/通知「去处理」） */
.btn-p{background:var(--primary);color:var(--on-primary);padding:10px 14px;font-size:13px;min-height:42px;
  border-radius:var(--r-2xl);box-shadow:var(--shadow-primary)}
.liferow{margin:0 16px 10px;background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);
  padding:14px 16px;display:flex;align-items:center;gap:12px;cursor:pointer}
.liferow .ltt{flex:1;min-width:0}
.liferow .ltt b{display:block;font-size:var(--fs-body);font-weight:600}
.liferow .ltt span{font-size:var(--fs-caption);color:var(--t3)}
.liferow .chev{color:var(--t3)}

/* ================= 个人中心 ================= */
.profile{margin:2px 16px 6px;background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-card); /* 09-10 老板试看：与 L2 我的→账号 2px 对齐 */
  padding:16px;display:flex;align-items:center;gap:14px}
.pavatar{width:56px;height:56px;border-radius:50%;background:var(--grad-brand);color:var(--on-primary);display:flex;
  align-items:center;justify-content:center;font-weight:700;font-size:20px;cursor:pointer;flex:none;
  background-size:cover;background-position:center;overflow:hidden}
.pinfo{flex:1;min-width:0}
.pname{font-size:17px;font-weight:700;cursor:pointer}
.porg{font-size:12px;color:var(--t3);margin-top:3px;cursor:pointer}

/* ================= 工作页：顶栏/侧边栏/极简任务行 ================= */
/* 页头吸顶：滚动时标题与操作钮固定，内容从下滑过；背景取页面底色（通铺时 --pagebg 已同步）防透字 */
/* 页头规范（老板 2026-09-09 晚）：L2-L4 顶距统一 16px、标题下间距统一 12px；标题 20px/700；图标统一 20×20；
   页头右侧功能性文字（时段切换/条件筛选等）统一 14px（.tseg）。APP/WEB 双端同规
   0913 间距修订（老板定稿，全局页头）：页边框→图标字形 16px（与卡片 16px 缘对齐）；
   图标字形→标题文字 可视 10px。结构分解=按钮(40px)内居中余白 8 + flex 间隙 2 + 标题内边距 0
   → 容器左内边距一律 8px、标题内边距归零。可视口径=字形盒边到文字起笔，不含不可见盒线 */
.wtop{display:flex;align-items:center;gap:2px;min-height:68px;padding:calc(16px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 16px 12px 8px;
  position:sticky;top:0;z-index:3;background:var(--pagebg,var(--bg))}
.wtop .tlt{flex:1;font-size:20px;font-weight:700;padding-left:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:24px}
.wtop .wicon{width:40px;height:40px}
.wtop .wicon .ic{width:24px;height:24px}
.wicon{width:38px;height:38px;border:none;background:transparent;color:var(--t2);border-radius:var(--r-md);
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
/* 通用禁用档（260912 KB 本地文件链接钮首用：无桌面桥=置灰不可点） */
.wicon.dis{opacity:.35;pointer-events:none}
.wicon:active{background:var(--gray-10)}
:root[data-theme="dark"] .wicon:active{background:var(--gray-70)}
:root[data-theme="dark"] .wicon{color:var(--gray-30)}

.listcard{margin:var(--sp-2) var(--sp-16) var(--sp-14);background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);
  padding:3px 0;overflow:hidden}
.listcard .trow{margin:0;border-radius:0}
.listcard .trow .swbg,.listcard .trow .tcard{border-radius:0}
/* 行卡并入组卡后去掉自身投影：逐行阴影会在卡片上下渲染出"多余的线条"，组卡只保留外框阴影 */
.listcard .trow .tcard{box-shadow:none}
/* 2610g 元素5：任务与任务之间分割线（原 ldesk 专属，APP 端同款） */
.listcard .trow+.trow .tcard{border-top:1px solid var(--line)}
.trow.simple{position:relative}
.trow.simple .tcard{padding:9px var(--sp-16);align-items:center;background:transparent;box-shadow:none}
.ttitle{flex:1;min-width:0;font-size:var(--fs-body-lg);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trow.done .ttitle{color:var(--t3);text-decoration:line-through}

/* 侧边栏抽屉（嘀嗒式）：上下满屏滑出、盖过底栏；未覆盖区为深色毛玻璃，点毛玻璃返回 */
.drawer{position:absolute;top:0;bottom:0;left:0;width:80%;max-width:330px;background:var(--card);z-index:110;
  transform:translateX(-103%);transition:transform .26s cubic-bezier(.32,.72,.28,1);display:flex;flex-direction:column;
  box-shadow:var(--shadow-pop)}
.drawer.on{transform:none}
.dmask{position:absolute;inset:0;background:rgba(16,17,24,.5);z-index:105;opacity:0;pointer-events:none;transition:opacity .22s;
  backdrop-filter:blur(12px) saturate(115%);-webkit-backdrop-filter:blur(12px) saturate(115%)}
.dmask.on{opacity:1;pointer-events:auto}
/* 标题左缘对齐行内彩色底座图标(.dic)左缘：dsec 10px + ditem 12px = 22px（非选中高亮底色的 10px） */
.dhd{display:flex;align-items:center;gap:var(--sp-12);min-height:68px;padding:calc(16px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 22px 12px}
.dhd .dname{flex:1;font-weight:700;font-size:20px;line-height:24px}
.dhd .wicon .ic{width:24px;height:24px}
.edhd .wicon .ic,.shead .wicon .ic{width:24px;height:24px} /* 页头图标统一 24（09-10 定稿） */
.dsec{flex:1;overflow-y:auto;padding:var(--sp-2) var(--sp-10) var(--sp-8);scrollbar-width:none}
/* 2610L 修2/修3：抽屉分组标题（标签/清单）——复用 .dsec2 小节标题语言，左距对齐 ditem 图标列（12px 行内距）；
   标题行整行可点=收起/展开（修3 应老板要求保留原机制），箭头 inline margin-left:auto 靠右。
   2610R 元素3：右距对齐 ditem 的 12px 内距——箭头右缘与行内计数徽标同一条右缘线
   （原 padding-right 2px 让箭头比计数凸出 10px，即老板「没有右对齐」） */
.dsec .dsec2{padding:var(--sp-12) var(--sp-12) var(--sp-4) var(--sp-12);display:flex;align-items:center;cursor:pointer}
.dsec::-webkit-scrollbar{display:none}
.ditem{display:flex;align-items:center;gap:var(--sp-12);padding:var(--sp-10) var(--sp-12);border-radius:var(--r-lg);cursor:pointer;
  font-size:14px;color:var(--t1);user-select:none;width:100%;border:none;background:none;font-family:var(--font-ui);text-align:left}
.ditem.on{background:var(--primary-soft);color:var(--primary);font-weight:600}
/* 清单行=任务拖拽落点（2026-10-08 老板元素4）：悬浮反馈=soft底+主题色描边圈；深底反白同 .chip.on 惯例。
   仅自定义清单行挂 .dropdst（JS data-drop="clist" 标记），智能清单/标签/状态行不可落 */
.ditem.dropdst{background:var(--primary-soft);color:var(--primary);box-shadow:inset 0 0 0 1.5px var(--primary)}
.ditem.dropdst .cnt{color:var(--primary)}
:root[data-theme="dark"] .ditem.dropdst{background:var(--primary);color:var(--on-primary)}
:root[data-theme="dark"] .ditem.dropdst .cnt{color:var(--on-primary)}
.ditem .dic{width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--on-primary);flex:none}
.ditem .dic .ic{width:15px;height:15px}
.ditem .flg{width:18px;height:18px;flex:none;margin:0 var(--sp-4)}
.ditem .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ditem .cnt{font-size:12px;color:var(--t3)}
.ditem.on .cnt{color:var(--primary)}
.ddiv{height:1px;background:var(--line-strong);margin:8px 14px}
/* 任务侧栏「添加」方块：.dic 默认白图标在浅灰底上看不见（260911 老板走查），随主题给底色；data 标记选择器免新增类名 */
.dsec .dic[data-dic="plus"]{background:var(--gray-10);color:var(--t2)}
:root[data-theme="dark"] .dsec .dic[data-dic="plus"]{background:var(--gray-70)}
.dfoot{display:flex;align-items:center;gap:6px;padding:8px 14px calc(14px + max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px)));border-top:1px solid var(--line)}
.dfoot .ditem{flex:1}

/* toast */
.toast{position:absolute;bottom:calc(78px + max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px)));left:50%;transform:translate(-50%,16px);background:var(--gray-100);
  color:var(--on-primary);font-size:var(--fs-body);padding:var(--sp-12) var(--sp-16);border-radius:var(--r-pill);opacity:0;pointer-events:none;
  transition:all .25s;z-index:120;white-space:nowrap;box-shadow:var(--shadow-pop)}
.toast.on{opacity:1;transform:translate(-50%,0)}
:root[data-theme="dark"] .toast{background:var(--gray-0);color:var(--gray-100)}
.toast button{background:none;border:none;color:var(--brand-30);font-weight:700;font-size:var(--fs-body);
  cursor:pointer;margin-left:8px;font-family:var(--font-ui)}

/* 应用内提醒卡（1011 嘀嗒式：APP 前台任务到点底部浮卡；z=120 与 .toast 同档轻提示层） */
.remcard{position:absolute;bottom:calc(16px + max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px)));left:50%;
  transform:translate(-50%,16px);width:calc(100% - 32px);max-width:420px;box-sizing:border-box;
  display:flex;align-items:center;gap:var(--sp-12);background:var(--card);border:1px solid var(--line);
  border-radius:var(--r-xl);box-shadow:var(--shadow-pop);padding:var(--sp-12) var(--sp-14);
  opacity:0;pointer-events:none;transition:all .25s;z-index:120}
.remcard.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.rcico{width:38px;height:38px;padding:var(--sp-8);box-sizing:border-box;color:var(--primary);
  background:var(--primary-soft);border-radius:var(--r-lg)}
.rcttl{font-size:var(--fs-body);font-weight:600;color:var(--t1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rcmeta{font-size:var(--fs-caption);color:var(--t3);margin-top:var(--sp-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rcbtns{display:flex;align-items:center;gap:var(--sp-6);flex:none}
.rcbtn{border:none;border-radius:var(--r-pill);background:var(--gray-10);color:var(--t1);font-size:var(--fs-caption);
  font-weight:600;padding:var(--sp-8) var(--sp-12);cursor:pointer;font-family:var(--font-ui);white-space:nowrap}
.rcbtn.pri{background:var(--primary);color:var(--on-primary)}
.rcclose{border:none;background:none;color:var(--t3);cursor:pointer;padding:var(--sp-4);display:flex;font-family:var(--font-ui)}
.rcclose .ic{width:16px;height:16px}

/* 桌面壳窗口条（1011 老板元素2：无框窗口，默认整条藏于窗口顶外，鼠标进顶部热区下滑出现；
   仅 Electron 新壳有此 DOM（dtitleInit 注入），浏览器/安卓/旧壳不存在。z=250=窗口级 chrome 档，
   高于登录遮罩 200——登录页也要能拖动/关闭窗口） */
.dtitle{position:fixed;top:0;left:0;right:0;height:40px;z-index:250;display:flex;align-items:center;
  background:var(--card);border-bottom:1px solid var(--line);box-shadow:var(--shadow-pop);
  transform:translateY(-100%);transition:transform .18s ease;pointer-events:none;
  -webkit-app-region:drag;user-select:none}
.dtitle.on{transform:none;pointer-events:auto}
.dtitlehot{position:fixed;top:0;left:0;right:0;height:8px;z-index:250;pointer-events:auto}
.dtdrag{flex:1;display:flex;align-items:center;gap:8px;height:100%;padding:0 14px;min-width:0;
  font-size:var(--fs-caption);font-weight:600;color:var(--t2)}
.dtdot{flex:none;width:10px;height:10px;border-radius:var(--r-pill);background:var(--grad-brand)}
.dtname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dtbtns{display:flex;align-self:stretch;-webkit-app-region:no-drag}
.dtbtn{width:44px;border:none;background:none;color:var(--t2);cursor:pointer;
  display:flex;align-items:center;justify-content:center;font-family:var(--font-ui)}
.dtbtn:hover{background:var(--gray-10);color:var(--t1)}
.dtbtn.dtclose:hover{background:var(--destructive);color:var(--gray-0)}

/* ================= 知识库 MD 编辑 + 一键启动（2026-09-07，新类已登记样式规范 §3） =================
   编辑器壳复用 .edpage/.edhd/.edbody（z-index 88 档，WEB端停靠规则自动生效）；
   弹层复用 .mask/.sheet；列表复用 .hcard/.hrows/.setrow2/.dlist；徽标复用 .dtag */
/* ===== L4 重构公共件（260911 老板定稿，知识库/一键启动同款）===== */
/* 卡头：.dlist 全宽卡头（标题+计数+右置下拉选择），下接合并卡行 */
.dlist>.cardhd{display:flex;align-items:center;gap:var(--sp-8);min-height:48px;margin:-3px -12px 0;
  padding:var(--sp-8) var(--sp-12);border-bottom:1px solid var(--line)}
.cardhd b{flex:1;min-width:0;font-size:var(--fs-body-lg);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cardhd .cnt{font-size:var(--fs-caption);color:var(--t3);font-weight:400;flex:none}
/* 下拉选择钮（卡头右置分类 / 编辑页属性行），点击弹选择弹窗 */
.ddsel{display:inline-flex;align-items:center;gap:4px;height:34px;padding:0 12px;border-radius:var(--r-pill);
  background:var(--gray-10);color:var(--t2);font-size:13px;font-weight:500;cursor:pointer;flex:none;user-select:none}
.ddsel:active{background:var(--gray-20)}
:root[data-theme="dark"] .ddsel{background:var(--gray-70)}
.ddsel .dv{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ddsel .ic{width:14px;height:14px;color:var(--t3);flex:none}
/* ===== 知识库（260911 重构：列表=卡头+文档行直达编辑；编辑=属性行两下拉；阅读=dots 菜单收编操作）===== */
/* MD 编辑器：标题行 + 属性行（分类/共享下拉）+ Vditor 容器 + 保存状态行 */
.kbedbar{display:flex;flex-direction:column;gap:8px;padding:10px 12px 8px;border-bottom:1px solid var(--line)}
.kbedvd{flex:1;min-height:0}
.kbedmeta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.kbstat{flex:1 1 100%;font-size:var(--fs-caption);color:var(--t3);text-align:right}
/* ===== KB 文档头（260920）：front matter（--- 包裹 YAML）渲染条，编辑面（.kbedbar 与编辑器之间）
   与阅读面（渲染容器上方）共用。260921：只显示 front matter 里实际存在的元数据（版本/作者/日期/
   摘要…），标题行去除——文档名由页面既有位置展示；元信息=正文字号 14px 灰阶 --t3、· 分隔 ===== */
.kbdochead{padding:10px 24px 10px 40px;border-bottom:1px solid var(--line)}
.kbdochead-m{font-size:14px;color:var(--t3);line-height:1.6}
/* 260921 二修：任务清单勾选框左缘=标题文字左缘——正向锚定（ul 缩进清零 + 勾选框 li 左缘 absolute），
   不再做负偏移（li 若带 Vditor 默认 margin 会多出去）；文字 1.4em 悬挂，嵌套 ul 1.2em 缩进 */
#kbEdVd .vditor-reset ul:has(>li[data-type="task"]){padding-left:0;margin-left:0}
#kbEdVd .vditor-reset li[data-type="task"]{list-style:none;position:relative;margin-left:0;padding-left:1.4em}
#kbEdVd .vditor-reset li[data-type="task"]>input[type="checkbox"]{position:absolute;left:0;top:3px;margin:0;width:14px;height:14px}
#kbEdVd .vditor-reset li[data-type="task"]>ul{padding-left:1.2em!important}
/* 260921：Vditor 大纲面板——字号统一正文 14px；自动编号 1/1.1/1.1.1/1.1.1.1 与正文标题计数器同口径
   （counter 逐级 reset，嵌套 ul 镜像标题层级） */
#kbEdVd .vditor-outline__content{font-size:14px}
#kbEdVd .vditor-outline__content ul{list-style:none;padding-left:12px}
#kbEdVd .vditor-outline__content>ul{padding-left:2px;counter-reset:ko1}
#kbEdVd .vditor-outline__content>ul>li{counter-increment:ko1;counter-reset:ko2}
#kbEdVd .vditor-outline__content>ul>li>ul{counter-reset:ko2}
#kbEdVd .vditor-outline__content>ul>li>ul>li{counter-increment:ko2;counter-reset:ko3}
#kbEdVd .vditor-outline__content>ul>li>ul>li>ul{counter-reset:ko3}
#kbEdVd .vditor-outline__content>ul>li>ul>li>ul>li{counter-increment:ko3;counter-reset:ko4}
#kbEdVd .vditor-outline__content>ul>li>ul>li>ul>li>ul{counter-reset:ko4}
#kbEdVd .vditor-outline__content>ul>li>ul>li>ul>li>ul>li{counter-increment:ko4}
#kbEdVd .vditor-outline__content>ul>li::before{content:counter(ko1) " ";color:var(--t3)}
#kbEdVd .vditor-outline__content>ul>li>ul>li::before{content:counter(ko1) "." counter(ko2) " ";color:var(--t3)}
#kbEdVd .vditor-outline__content>ul>li>ul>li>ul>li::before{content:counter(ko1) "." counter(ko2) "." counter(ko3) " ";color:var(--t3)}
#kbEdVd .vditor-outline__content>ul>li>ul>li>ul>li>ul>li::before{content:counter(ko1) "." counter(ko2) "." counter(ko3) "." counter(ko4) " ";color:var(--t3)}
/* ===== KB 编辑器版面定稿（260912 老板三条）：主题 CSS 只进阅读页不进编辑面，此处为编辑面唯一版式源。
   标题收敛 H1 20/H2 18/H3·H4 16/H5·H6 14 置灰（字重 600 沿用 Vditor 底层），正文/表格 14px
   （表格 th 加粗为 Vditor 底层 600 已满足）；块间距统一 12px。
   260920 三定：全元素行距统一 1.6；所有可见内容之间的间距（标题段前段后/块间距/分割线上下）
   全部统一 12px——先统一，按观感再反向增加；字族走 --kb-font（编辑器「字体」钮，applyKbFont 注入） ===== */
#kbEdVd .vditor-reset{font-size:14px;line-height:1.6;font-family:var(--kb-font,var(--font-ui))}
/* 七-5（260912）+四-4（260913）：只有 H1 有分割线——线=1px var(--line)；padding 补行盒内余差
   （.125em=2.5px），线距上方标题、下方内容=12px；线后紧邻元素段前归零，防不折叠元素叠加；
   H2 的主题分割线在编辑面关掉 */
/* 260921 定值：H1 段前 24px、H2–H3 段前 18px、其余段距统一 12px；分割线上下=12px */
#kbEdVd .vditor-reset h1{font-size:20px;margin:24px 0 12px;padding-bottom:calc(12px - .125em);border-bottom:1px solid var(--line)}
#kbEdVd .vditor-reset>h1+*{margin-top:0}
#kbEdVd .vditor-reset h2{font-size:18px;margin:18px 0 12px;border-bottom:0;padding-bottom:0}
#kbEdVd .vditor-reset h3{font-size:16px;margin:18px 0 12px}
#kbEdVd .vditor-reset h4{font-size:16px;margin:18px 0 12px}
#kbEdVd .vditor-reset h5,#kbEdVd .vditor-reset h6{font-size:14px;margin:12px 0;color:var(--t3)}
/* 七-4（260912）+四-2/3（260913）：表格文字固定 12px，全部单元格上下居中、左对齐；去 Vditor 首列
   24px 隐形占位符（::after 支撑行高，首列文字因此顶格不居中）；表格铺满内容区+列宽随内容自适应——
   display:table+auto 布局（多内容列分得宽、少内容列窄，放不下自动换行=最小总高），替掉 Vditor 的
   display:block+nowrap（原状内容少的列被均分、内容多的列挤成窄条狂换行） */
#kbEdVd .vditor-reset table{font-size:12px;display:table;table-layout:auto;width:100%}
#kbEdVd .vditor-reset th,#kbEdVd .vditor-reset td{text-align:left;vertical-align:middle;white-space:normal;word-break:break-word}
#kbEdVd .vditor-reset table td:first-child::after,#kbEdVd .vditor-reset table th:first-child::after{content:none}
/* 260920 老板排版四-3/4：空单元格撑起与有内容行等高；表头底色（--line 档）与数据错行底
   （--bg 档，从第 2 数据行起）错开——明暗两态都走令牌 */
#kbEdVd .vditor-reset td:empty::before{content:"\00a0"}
#kbEdVd .vditor-reset thead th{background:var(--line)}
#kbEdVd .vditor-reset tbody tr:nth-child(even){background:var(--bg)}
/* 七-7（260912）：有序/无序列表标记与标题文字左缘对齐（收窄默认缩进 ol=2em/ul=40px） */
#kbEdVd .vditor-reset ul,#kbEdVd .vditor-reset ol{padding-left:1.2em}
/* 七-6（260912）：编辑内容宽度自适应——Vditor 挂载按预览最大宽 800 居中留白，
   大屏两侧各 300px+ 全浪费；实例预览宽拉满后由此处接管版式（左 40 容装订线角标，右 24） */
#kbEdVd .vditor-wysiwyg>.vditor-reset,#kbEdVd .vditor-ir>.vditor-reset{padding:12px 24px 12px 40px!important}
#kbEdVd .vditor-reset p,#kbEdVd .vditor-reset ul,#kbEdVd .vditor-reset ol,
#kbEdVd .vditor-reset blockquote,#kbEdVd .vditor-reset pre,#kbEdVd .vditor-reset table,
#kbEdVd .vditor-reset hr{margin-top:12px;margin-bottom:12px;line-height:1.6}
/* KB 编辑器标题多级编号（260912 老板定稿）：行内 ::before=自动编号 1./1.1/1.1.1…，2px 间距跟随标题；
   纯显示层不写 MD 源文（导出 .md 不带、阅读/打印件另算）。Vditor 装订线 Hx 角标与行内编号同用 ::before
   冲突 → 角标迁 ::after 绝对定位原位复刻（left:-29px 同原生档，色 --second-color 深浅自适应）。
   仅桌面所见即所得模式；手机 IR 模式保持原生 # 标记不动。编号只认顶层标题（>h1，同 Vditor 角标口径） */
/* 注意（260913 修编号继承错误）：根节点不得再 counter-reset——实测祖先作用域的 reset 会使后代标题
   自己的 reset 全部失效（Chrome），编号跨章累计（5.1.4 后的 6.1 下级显示 6.1.5）；隐式计数从 0 起即正确 */
#kbEdVd .vditor-wysiwyg>.vditor-reset>h1{counter-increment:kbh1;counter-reset:kbh2 kbh3 kbh4 kbh5 kbh6;position:relative}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h2{counter-increment:kbh2;counter-reset:kbh3 kbh4 kbh5 kbh6;position:relative}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h3{counter-increment:kbh3;counter-reset:kbh4 kbh5 kbh6;position:relative}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h4{counter-increment:kbh4;counter-reset:kbh5 kbh6;position:relative}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h5{counter-increment:kbh5;counter-reset:kbh6;position:relative}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h6{counter-increment:kbh6;position:relative}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h1::before{content:counter(kbh1) "."}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h2::before{content:counter(kbh1) "." counter(kbh2)}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h3::before{content:counter(kbh1) "." counter(kbh2) "." counter(kbh3)}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h4::before{content:counter(kbh1) "." counter(kbh2) "." counter(kbh3) "." counter(kbh4)}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h5::before{content:counter(kbh1) "." counter(kbh2) "." counter(kbh3) "." counter(kbh4) "." counter(kbh5)}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h6::before{content:counter(kbh1) "." counter(kbh2) "." counter(kbh3) "." counter(kbh4) "." counter(kbh5) "." counter(kbh6)}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h1::before,
#kbEdVd .vditor-wysiwyg>.vditor-reset>h2::before,
#kbEdVd .vditor-wysiwyg>.vditor-reset>h3::before,
#kbEdVd .vditor-wysiwyg>.vditor-reset>h4::before,
#kbEdVd .vditor-wysiwyg>.vditor-reset>h5::before,
#kbEdVd .vditor-wysiwyg>.vditor-reset>h6::before{
  float:none;margin:0 2px 0 0;padding:0;font-size:inherit;font-weight:inherit;line-height:inherit;color:inherit}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h1::after{content:'H1'}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h2::after{content:'H2'}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h3::after{content:'H3'}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h4::after{content:'H4'}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h5::after{content:'H5'}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h6::after{content:'H6'}
#kbEdVd .vditor-wysiwyg>.vditor-reset>h1::after,
#kbEdVd .vditor-wysiwyg>.vditor-reset>h2::after,
#kbEdVd .vditor-wysiwyg>.vditor-reset>h3::after,
#kbEdVd .vditor-wysiwyg>.vditor-reset>h4::after,
#kbEdVd .vditor-wysiwyg>.vditor-reset>h5::after,
#kbEdVd .vditor-wysiwyg>.vditor-reset>h6::after{
  position:absolute;left:-29px;top:50%;transform:translateY(-50%);line-height:inherit;font-size:.85rem;font-weight:400;
  color:var(--second-color,var(--t3));white-space:nowrap}
/* 七-3（260912）：角标与标题文字垂直居中——h1 盒含分割线 padding12+border1，居中点回提半格 */
#kbEdVd .vditor-wysiwyg>.vditor-reset>h1::after{top:calc(50% - 6px)}
/* ===== KB 阅读页标题多级编号（260912 老板定稿「阅读生成文档均包含」）：与编辑器同口径 1./1.1…+2px；
   kami（自带 01 章节号+目录体系）/report（自带 rpt 多级编号）两主题不叠加，阅读页版式仍随主题 ===== */
#kbMdView:not(.kami):not(.report)>h1{counter-increment:kbh1;counter-reset:kbh2 kbh3 kbh4 kbh5 kbh6}
#kbMdView:not(.kami):not(.report)>h2{counter-increment:kbh2;counter-reset:kbh3 kbh4 kbh5 kbh6}
#kbMdView:not(.kami):not(.report)>h3{counter-increment:kbh3;counter-reset:kbh4 kbh5 kbh6}
#kbMdView:not(.kami):not(.report)>h4{counter-increment:kbh4;counter-reset:kbh5 kbh6}
#kbMdView:not(.kami):not(.report)>h5{counter-increment:kbh5;counter-reset:kbh6}
#kbMdView:not(.kami):not(.report)>h6{counter-increment:kbh6}
#kbMdView:not(.kami):not(.report)>h1::before{content:counter(kbh1) ".";margin-right:2px}
#kbMdView:not(.kami):not(.report)>h2::before{content:counter(kbh1) "." counter(kbh2);margin-right:2px}
#kbMdView:not(.kami):not(.report)>h3::before{content:counter(kbh1) "." counter(kbh2) "." counter(kbh3);margin-right:2px}
#kbMdView:not(.kami):not(.report)>h4::before{content:counter(kbh1) "." counter(kbh2) "." counter(kbh3) "." counter(kbh4);margin-right:2px}
#kbMdView:not(.kami):not(.report)>h5::before{content:counter(kbh1) "." counter(kbh2) "." counter(kbh3) "." counter(kbh4) "." counter(kbh5);margin-right:2px}
#kbMdView:not(.kami):not(.report)>h6::before{content:counter(kbh1) "." counter(kbh2) "." counter(kbh3) "." counter(kbh4) "." counter(kbh5) "." counter(kbh6);margin-right:2px}
/* L4 合并卡行（260911 重构：知识库文档/一键启动脚本/执行结果共用一个行类——先例=.dl 服务全部明细行；
   可点行加 .clk（同 .dl.clk 口径），内部 .n/.t1x/.t2x 复用全局骨架；标题一律 <b> 承载省略号） */
.lrow{display:flex;align-items:center;gap:8px;padding:11px 2px;min-height:56px;border-radius:var(--r-md)}
.lrow.clk{cursor:pointer}
.lrow.clk:active{background:var(--primary-soft)}
.lrow+.lrow{position:relative;border-top:none}
/* U4 分隔线内缩 16px：dlist 内距 12+4；dbody 内距 16+0 */
.lrow+.lrow::before{content:'';position:absolute;left:4px;right:4px;top:0;height:1px;background:var(--line)}
.dbody .dlist .lrow+.lrow::before{left:0;right:0}
.lrow .n{flex:1;min-width:0}
.lrow .t1x{display:flex;align-items:center;font-size:var(--fs-body);font-weight:600;color:var(--t1);min-width:0}
.lrow .t1x b{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 第二行胶囊标签（260911 老板：KB 行分类/私密从标题行迁到作者前+胶囊化；几何=qbadge 档 2/8+r-pill，
   分类=brand-5/brand-70、私密=gray-10/gray-50；dark=gray-70 底，亮字同 qbadge.url 例外档 var(--brand-bright)） */
.lrow .t2x .dtag{display:inline-block;padding:var(--sp-2) var(--sp-8);border-radius:var(--r-pill);background:var(--brand-5);
  color:var(--brand-70);font-weight:600;margin:0 var(--sp-6) 0 0;white-space:nowrap}
.lrow .t2x .dtag.gy{background:var(--gray-10);color:var(--gray-50)}
:root[data-theme="dark"] .lrow .t2x .dtag{background:var(--gray-70);color:var(--brand-bright)}
:root[data-theme="dark"] .lrow .t2x .dtag.gy{color:var(--gray-30)}
.lrow .t2x{display:block;font-size:var(--fs-caption);color:var(--t3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lrow .t2x.qerr{color:var(--risk)}
.lrow .chev{width:32px;height:32px;padding:9px;box-sizing:border-box;color:var(--gray-30);flex:none}
.lrow .ticon{width:32px;height:32px}
.lrow .ticon .ic{width:18px;height:18px}
.lrow .qbadge{min-width:44px}
.lrow .rdot{width:8px;height:8px;border-radius:50%;flex:none}
.lrow .rdot.ok{background:var(--good-tx)}
.lrow .rdot.no{background:var(--risk)}
.qplay{width:37px;height:37px;border:none;border-radius:50%;background:var(--primary);color:var(--on-primary);
  display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.qplay:active{background:var(--primary-hover)}
.qplay .ic{width:20px;height:20px}
/* 条目行（合并卡内扁平行：把手拖拽排序 / 点行弹菜单（上移下移·参数·删除）/ 叉快捷删） */
.qrow{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-10) var(--sp-2);cursor:pointer;border-radius:var(--r-md)}
.qrow+.qrow{border-top:1px solid var(--line)}
.qrow.dragging{opacity:.45}
.qrow .qtx{flex:1;min-width:0}
.qrow .qtx b{display:block;font-size:var(--fs-body);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qrow .qtx span{display:block;font-size:var(--fs-caption);color:var(--t3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qbadge{flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:var(--fs-caption);font-weight:600;
  padding:2px 8px;border-radius:var(--r-pill);background:var(--gray-10);color:var(--t2);white-space:nowrap}
:root[data-theme="dark"] .qbadge{background:var(--gray-70);color:var(--gray-30)}
.qbadge.url{background:var(--brand-5);color:var(--brand-70)}
.qbadge.app{background:var(--sec-10);color:var(--sec-70)}
.qbadge.folder{background:rgba(255,209,67,.22);color:#8A6D1A}
.qbadge.file{background:var(--good-soft);color:var(--good-tx)}
/* 服务条目徽标（svc，1008）：琥珀族与四类区分 */
.qbadge.svc{background:var(--warn-fill);color:var(--warn-tx)}
/* 启动页脚本行内服务状态（qlSvcStatus 回填）：●运行中=good / ○未运行=灰 */
.svcst{font-size:var(--fs-caption);font-weight:600;white-space:nowrap;margin-right:6px}
.svcst.on{color:var(--good-tx)}
.svcst.off{color:var(--t3)}
.qbadge.ok{background:var(--good-soft);color:var(--good-tx)}
.qbadge.no{background:rgba(220,38,38,.1);color:var(--risk)}
.qbadge.miss{background:none;border:1px solid var(--risk);color:var(--risk)}
:root[data-theme="dark"] .qbadge.url{background:var(--gray-70);color:var(--brand-bright)}
:root[data-theme="dark"] .qbadge.app{background:var(--gray-70);color:var(--sec-bright)}
:root[data-theme="dark"] .qbadge.folder{background:var(--gray-70);color:var(--gold-bright)}
:root[data-theme="dark"] .qbadge.file,:root[data-theme="dark"] .qbadge.ok{background:var(--gray-70);color:var(--good-bright)}
:root[data-theme="dark"] .qbadge.svc{background:var(--gray-70);color:var(--warn-bright)}
:root[data-theme="dark"] .qbadge.no{background:var(--gray-70);color:var(--risk-bright)}
/* 条目行删除钮复用 .ticon.del 标准件（40px→行内 32px 语境紧凑档） */
.qrow .ticon{width:32px;height:32px}
.qrow .ticon .ic{width:16px;height:16px}
/* 条目行单条启动钮复用 .qplay 标准件（1012：37px→32px 同删除钮语境紧凑档，语义同脚本行 ▶=执行） */
.qrow .qplay{width:32px;height:32px;flex:none}
.qrow .qplay .ic{width:16px;height:16px}
.qadd{display:flex;align-items:center;justify-content:center;gap:var(--sp-6);padding:var(--sp-12);color:var(--primary);
  font-size:var(--fs-body);font-weight:600;cursor:pointer;user-select:none}
.qadd:active{opacity:.65}
.qadd .ic{width:16px;height:16px}
.qhandle{cursor:grab;color:var(--t3);flex:none;display:flex;touch-action:none;user-select:none;-webkit-user-select:none}
/* 2610X-S7 元素1：拖入添加区与搜索栏同高 46px（原 padding 撑出 47px）；把手恒在行最右（CSS 不涉及，模板层已改） */
.qdrop{border:1.5px dashed var(--line-strong);border-radius:var(--r-lg);padding:var(--sp-6) var(--sp-14);text-align:center;
  color:var(--t3);font-size:var(--fs-caption);margin:6px 0;height:46px;display:flex;align-items:center;justify-content:center}
.qdrop.on{border-color:var(--primary);color:var(--primary)}
/* 条目弹窗三行栅（260927 二轮：名称行内改/路径换行/操作左对齐）——标签列统一 40px，
   三行同一左缘；路径 break-all 换行；操作钮 flex-start 左对齐可换行。
   2610X-S8 元素8（拍板一）：表单行距 12px（padding 10→6）+ 分割线全宽出血——编辑弹窗分割线唯一用途=
   区分输入类型，线左右与弹窗缘无缝（负 margin 抵消 .dlg 20px 内距，同 .remdiv 先例） */
.qimrow{display:flex;align-items:flex-start;gap:var(--sp-10);padding:var(--sp-6) var(--sp-20);margin:0 calc(var(--sp-20) * -1);border-bottom:1px solid var(--line)}
.qimrow:first-child{padding-top:var(--sp-2)}
.qimrow:last-child{border-bottom:none;padding-bottom:var(--sp-2)}
.qimk{width:40px;flex:none;font-size:13px;color:var(--t3);padding-top:var(--sp-8)}
.qimv{flex:1;min-width:0}
.qimpath{font-size:12px;color:var(--t2);line-height:1.7;word-break:break-all;padding-top:var(--sp-8)}
.qimpath .qbadge{margin-right:6px}
.qimacts{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:var(--sp-2);padding-top:1px}
/* 弹窗内小注（副标题/路径行）：.setnote 自带 16px 侧边距是页面级词条，进 18px 内边距弹窗会右缩进，
   弹窗内一律用本类（QL 各弹窗 260927 起） */
.dlgsub{font-size:12px;color:var(--t3);margin:-4px 0 var(--sp-10);line-height:1.7;word-break:break-all}

/* 执行结果（汇总条 + 状态点行；结果行=.lrow 无 .clk，状态点/错误色见 .lrow .rdot/.qerr） */
.runsum{display:flex;gap:var(--sp-14);align-items:center;font-size:var(--fs-caption);color:var(--t3);padding:var(--sp-2) var(--sp-2) var(--sp-10)}
.runsum .ok{color:var(--good-tx)}
.runsum .no{color:var(--risk)}

/* ================= 登录遮罩（2026-09-09 100%复刻 om mob/src/views/login.vue：Liquid Ether 流体背景 + 深色玻璃卡） =================
   主色固定 mob om 默认主题 #00A1FF（--lg-primary 局部变量，编译值=--om-primary/--om-primary-rgb）：
   主题色通铺已退出（老板指示），登录/忘记密码页不吃「我的→主题色」 */
.loginmask{position:absolute;inset:0;background:#0e0e16;z-index:200;display:none;
  align-items:center;justify-content:center;overflow:hidden;
  padding:24px 20px calc(24px + env(safe-area-inset-bottom));box-sizing:border-box}
.loginmask.on{display:flex}
.loginmask,.fpmask{--lg-primary:#00A1FF;--lg-primary-rgb:0,161,255}
/* Liquid Ether 流体背景层（three js GLSL 流体模拟，vendor 内 liquid ether 模块挂载；
   画布透明垫在近黑底上，鼠标划过可搅动；模块不可用时降级同色系静渐变；层级靠 DOM 顺序垫底） */
.liquid-bg{position:absolute;inset:0;touch-action:none}
.liquid-bg.liquid-fallback{background:
  radial-gradient(42vmax 42vmax at 18% 22%,rgba(82,39,255,.55),transparent 70%),
  radial-gradient(38vmax 38vmax at 82% 30%,rgba(255,159,252,.38),transparent 70%),
  radial-gradient(46vmax 46vmax at 55% 85%,rgba(180,151,207,.42),transparent 70%),#0e0e16}
@media (prefers-reduced-motion:reduce){.liquid-bg canvas{display:none}.liquid-bg{background:
  radial-gradient(42vmax 42vmax at 18% 22%,rgba(82,39,255,.55),transparent 70%),
  radial-gradient(38vmax 38vmax at 82% 30%,rgba(255,159,252,.38),transparent 70%),
  radial-gradient(46vmax 46vmax at 55% 85%,rgba(180,151,207,.42),transparent 70%),#0e0e16}}
/* 卡片：mob om-login-card 编译值——90% 宽上限 378px、16px 圆角、padding 24/20/22、
   深蓝黑半透 55% + backdrop blur24+saturate150 + 白 14% 发丝描边 + 近黑投影；老内核回退近实心 */
.loginbox,.fpbox{position:relative;z-index:1;width:90%;max-width:378px;box-sizing:border-box;
  border-radius:16px;padding:24px 20px 22px;background:rgba(31,42,61,.55);
  -webkit-backdrop-filter:blur(24px) saturate(150%);backdrop-filter:blur(24px) saturate(150%);
  border:1px solid rgba(255,255,255,.14);box-shadow:0 10px 40px rgba(14,14,22,.35)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .loginbox,.fpbox{background:rgba(31,42,61,.96)}}
/* 卡题/副题（mob：23/700 白 + 13 半透白 55%） */
.loginbox h2,.fptitle{margin:2px 0 0;font-size:23px;font-weight:700;color:#fff}
.lgsub,.fpsub{margin:8px 0 0;font-size:13px;color:rgba(255,255,255,.55)}
/* 三登录方式一行均分（mob om-method-btn：38px 高/10px 圆角/12px 字/白系描边微透底；选中=主色描边+微亮底） */
.lgmethods{display:flex;gap:8px;margin:15px 0 0}
.lgm{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:4px;height:38px;
  padding:0 2px;border-radius:10px;font-size:12px;font-family:var(--font-ui);white-space:nowrap;
  color:rgba(255,255,255,.85);background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.16);
  cursor:pointer;-webkit-tap-highlight-color:transparent}
.lgm svg{width:14px;height:14px;flex:none}
.lgm .lgmwx{width:15px;height:15px;color:#07c160}
.lgm.on{border-color:var(--lg-primary);background:rgba(255,255,255,.06);color:var(--lg-primary);font-weight:600}
/* 分隔横线（mob 定稿无文字：两端渐隐中央亮线，长 2/3 居中；线上距方式行 30px，线下首标签 10px） */
.lgdiv{height:1px;width:66.666%;margin:30px auto 0;background:linear-gradient(90deg,transparent 0%,
  rgba(255,255,255,.22) 22%,rgba(255,255,255,.22) 78%,transparent 100%)}
/* 字段：label 上置 + 透明描边输入框（mob om-field-label/om-field-box 编译值） */
.lgfld{display:block;font-size:13px;font-weight:600;color:#fff;margin:13px 0 0}
.lgdiv + .lgfld{margin-top:10px}
.lgfbox{margin-top:7px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);
  border-radius:10px;overflow:hidden;transition:border-color .2s}
.lgfbox:focus-within{border-color:var(--lg-primary)}
.lgin{display:block;width:100%;box-sizing:border-box;background:transparent;border:none;outline:none;
  padding:10px 12px;font-size:14.5px;font-family:var(--font-ui);color:var(--on-dark);caret-color:var(--on-dark)}
.lgin::placeholder{color:rgba(255,255,255,.35)}
/* 右槽（小眼睛/验证码钮）：容器相对定位腾出右侧 */
.lgpwd{position:relative}
.lgpwd .lgin{padding-right:44px}
.lgeye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px;height:32px;
  display:flex;align-items:center;justify-content:center;background:none;border:none;
  color:rgba(255,255,255,.5);cursor:pointer;padding:0}
.lgeye svg{width:18px;height:18px;display:block}
/* 验证码钮（mob om-code-btn：WEB4.0 tonal 胶囊——无框主色 15% 底；禁用变暗） */
.lgcode{position:absolute;right:8px;top:50%;transform:translateY(-50%);height:26px;line-height:26px;
  padding:0 12px;border:none;border-radius:999px;font-size:12px;font-weight:500;cursor:pointer;
  font-family:var(--font-ui);color:var(--lg-primary);background:rgba(var(--lg-primary-rgb),.15)}
.lgcode.off{color:rgba(255,255,255,.32);background:rgba(255,255,255,.07);cursor:default}
/* 30天免登录勾选 + 忘记密码（mob om-check 四段动效：底色淡入+打勾描画+缩放回弹+涟漪扩散） */
.lgops{display:flex;align-items:center;justify-content:space-between;margin:13px 0 4px;min-height:22px}
.lgck{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-tap-highlight-color:transparent;user-select:none}
.lgckbox{position:relative;width:17px;height:17px;flex:none;box-sizing:border-box;border-radius:5px;
  border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);
  display:flex;align-items:center;justify-content:center;transition:background-color .15s,border-color .15s}
.lgckbox svg{width:12px;height:12px;display:block}
.lgckbox path{fill:none;stroke:#fff;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:22;stroke-dashoffset:22;transition:stroke-dashoffset .18s ease .05s}
.lgck.on .lgckbox{background:var(--lg-primary);border-color:var(--lg-primary);
  animation:lgck-pop .22s ease,lgck-ripple .45s ease-out}
.lgck.on .lgckbox path{stroke-dashoffset:0}
.lgcklabel{font-size:12.5px;color:#fff}
@keyframes lgck-pop{0%{transform:scale(.78)}60%{transform:scale(1.1)}100%{transform:scale(1)}}
@keyframes lgck-ripple{0%{box-shadow:0 0 0 0 rgba(var(--lg-primary-rgb),.35)}100%{box-shadow:0 0 0 9px rgba(var(--lg-primary-rgb),0)}}
.lgforget{font-size:12.5px;color:var(--lg-primary);font-weight:500;cursor:pointer}
/* 登录钮（mob om-login-submit：实心主色，44px/15px 字/12px 圆角） */
.lgbtn{width:100%;height:44px;margin-top:15px;font-size:15px;font-weight:500;font-family:var(--font-ui);
  background:var(--lg-primary);color:var(--on-dark);border:none;border-radius:12px;cursor:pointer}
.lgbtn:disabled{opacity:.6;cursor:default}
.loginbox .lgerr{font-size:12px;color:var(--destructive);min-height:16px;margin-top:4px}
/* 无法登录（mob om-noaccount：12px 半透白 + 主色「请联系管理员」） */
.lgfoot{margin:17px 0 0;text-align:center;font-size:12px;color:rgba(255,255,255,.55)}
.lgfoot .lglink{padding-left:4px;color:var(--lg-primary);font-weight:500}
/* 备案号（工信部要求：底部标注并链工信部网站；2026-09-08 苏ICP备2026065336号 下发） */
.lgicp{margin:14px 0 0;text-align:center;font-size:11px;color:rgba(255,255,255,.4)}
.lgicp a{color:inherit;text-decoration:none}
/* .icpline 备案行（2610X-S2 删）：1011 后备案行走 meRow，本类零消费者（同 .ver 证伪口径） */

/* ================= 忘记密码/重设密码遮罩（mob src/views/uc/forgetPwd.vue 同风格三步流程） =================
   同款深色场景：近黑底 + 顶/底双径向微光（mob om-forget-glow），玻璃卡/字段/按钮同登录配方；
   流程：①手机号+短信验证码 → ②新密码/确认 → ③成功返回登录。z 同 200 档，与登录遮罩互斥显隐 */
.fpmask{position:absolute;inset:0;background:#0e0e16;z-index:200;display:none;
  align-items:center;justify-content:center;overflow:hidden;
  padding:24px 20px calc(24px + env(safe-area-inset-bottom));box-sizing:border-box}
.fpmask.on{display:flex}
.fpglow{position:absolute;inset:0;background:
  radial-gradient(ellipse 420px 300px at 85% -5%,rgba(82,39,255,.28) 0%,transparent 60%),
  radial-gradient(ellipse 380px 260px at 8% 105%,rgba(255,159,252,.16) 0%,transparent 55%)}
/* 密码规则提示（mob om-rule-tip：白 6% 底 8px 圆角 + info 图标） */
.fprule{display:flex;align-items:center;gap:6px;margin-top:15px;padding:8px 10px;border-radius:8px;
  background:rgba(255,255,255,.06);color:rgba(255,255,255,.75);font-size:12px}
.fprule svg{width:14px;height:14px;flex:none;color:#46CAEB}
/* 成功态（mob om-reset-success：56px success 圆勾 + 白句） */
.fpsuccess{text-align:center;padding:26px 0 10px}
.fpsuccess svg{width:56px;height:56px;color:#00CEB6}
.fpsuccess p{margin:14px 0 8px;font-size:14px;color:#fff}
.fpback{margin:17px 0 0;text-align:center;font-size:12.5px;color:var(--lg-primary);font-weight:500;cursor:pointer}

/* ================= 宽屏适配（电脑端）：侧边栏常驻 + 内容居中 =================
   放在样式表末尾以覆盖同名基础规则（同优先级后者胜） */
@media (min-width:541px){
  body{display:block;background:var(--bg)}
  .themeBtn{display:none} /* 宽屏全屏布局下会遮住工作页右上按钮，深色开关在「我的」页 */
  .phone{flex-direction:row;width:100%;height:100dvh;max-width:none;background:var(--bg)}
  .phone>main{flex:1;min-width:0;max-width:860px;width:100%;margin:0 auto}
  /* 抽屉变常驻侧栏 */
  .drawer{position:relative;order:-1;transform:none;width:300px;max-width:none;flex:none;
    box-shadow:none;border-right:1px solid var(--line);z-index:1}
  .dmask{display:none!important}
  /* 浮层只覆盖内容区，不盖住侧栏 */
  .mask,.dlgmask,.edpage,.setpage,.searchpage,.dsmask,.dpage{left:300px}
  .toast{left:calc(300px + (100% - 300px)/2)}
  .remcard{left:calc(300px + (100% - 300px)/2)}
  /* 底栏跟随内容区 */
  .tabbar{left:300px}
}

/* ================= WEB端任务页密度定稿（2026-10-08 老板四元素，仅 ≥541px）=================
   APP端保持原字号/勾选框（老板本轮 APP 端只要求间距收紧）。标题 16→14（组织+普通两态同源，
   搜索结果行=任务卡同款结构随动）；组内条目 .olx 14→12；勾选框 20→18 跟随标题等高
   （hassub 刻线与对勾同比缩小，meta/组体缩进 32→30 与新框宽对齐）；
   行卡悬停/点选浅灰底（.sel 由 markSelRow 按打开中的任务挂行）。 */
@media (min-width:541px){
  .tt{font-size:var(--fs-body);line-height:var(--lh-body)}
  .ttitle{font-size:var(--fs-body)}
  .orgline .olx{font-size:var(--fs-caption)}
  /* 2610L 元素3：勾选框 20×20 与标题行高 20px 等高（原 18px 追随旧口径退役；
     hassub 刻线/svg 覆盖档随 18px 盒废止，回基础 20px 口径） */
  .trow .ck{width:20px;height:20px}
  .tmain .tmeta{margin-left:32px} /* 20px框+12px间距，与标题文字左对齐 */
  .orgbody{margin-left:30px}
  .trow:not(.dragging) .tcard:hover{background:var(--gray-10)}
  .trow.sel .tcard{background:var(--gray-10)}
  /* 2610d 需求3+2610e/2610f 反馈：列表卡衬边 3px——首/末行**恒出血**（负 margin 出血+等量补回
     内边距，总高不变）。2610e 曾只在 sel/:hover 挂出血：移开瞬间几何先弹回、底色还在 .15s 渐隐，
     衬边处又露白线。改恒挂后几何恒定，底色进出过渡都在位，两端均无白边 */
  .listcard .trow:not(.dragging):first-child .tcard{margin-top:-3px;padding-top:13px}
  .listcard .trow:not(.dragging):last-child .tcard{margin-bottom:-3px;padding-bottom:13px}
  .listcard .trow.simple:not(.dragging):first-child .tcard{padding-top:var(--sp-12)}
  .listcard .trow.simple:not(.dragging):last-child .tcard{padding-bottom:var(--sp-12)}
  :root[data-theme="dark"] .trow:not(.dragging) .tcard:hover,
  :root[data-theme="dark"] .trow.sel .tcard{background:var(--gray-70)}
}

/* ================= 宽屏桌面模式（任务书 docs/宽屏桌面模式任务书.md） =================
   ≥1200px 或手动强制时 #phone 挂 .ldesk；全部桌面样式收在本域，去掉开关即原应用 */
.rail{display:none}
.rpanel{display:none}
.phone.ldesk .tabbar{display:none}
.phone.ldesk .rail{display:flex;position:relative;order:-2;flex:none;width:var(--railw,56px);flex-direction:column;align-items:center;
  gap:14.4px;padding:16px 0 14px;background:var(--primary);border-right:none;z-index:41}
/* 轨道顶部头像（老板 09-10 元素3，09-10晚补勘）：42px 方形小圆角固定顶部；头像→首页间距按
   图标字形测量=50（上轮误按色块测量），块距=20.4=gap14.4+margin6（09-10晚再缩40%，字形距50→30）；
   菜单间距 14.4（12 的 +20%）；图标字形 +30%（盒22→28.6，40px底色不变） */
.ravatar{display:none}
.phone.ldesk .ravatar{display:flex;width:42px;height:42px;border-radius:12px;background:var(--grad-brand);color:var(--on-dark);
  align-items:center;justify-content:center;font-size:17px;font-weight:700;cursor:pointer;flex:none;margin-bottom:6px;
  background-size:cover;background-position:center;overflow:hidden}
.phone.ldesk>main{max-width:none;margin:0}
.phone.ldesk .page{padding-bottom:24px}
/* 浮层让开轨道+侧栏（默认 56+300，栏宽设置可调），只盖主区与右栏（#dpage 例外，见下方停靠规则） */
.phone.ldesk .mask,.phone.ldesk .dlgmask,.phone.ldesk .edpage,.phone.ldesk .setpage,
.phone.ldesk .searchpage,.phone.ldesk .dsmask{left:calc(var(--railw,56px) + var(--navw,300px))}
.phone.ldesk .toast{left:calc(var(--railw,56px) + var(--navw,300px) + (100% - var(--railw,56px) - var(--navw,300px))/2)}
.phone.ldesk .remcard{left:calc(var(--railw,56px) + var(--navw,300px) + (100% - var(--railw,56px) - var(--navw,300px))/2)}
/* 轨道按钮 */
.rbtn{width:40px;height:40px;border:none;background:none;border-radius:12px;color:var(--t3);cursor:pointer;flex:none;
  display:flex;align-items:center;justify-content:center;position:relative;font-family:var(--font-ui)}
.rbtn .ic{width:28.6px;height:28.6px} /* 老板 09-09 晚元素7：字形+30%（16→20.8），40px 按钮底色范围不变 */
.rbtn:hover{background:var(--gray-10)}
.rbtn.on{color:var(--primary);background:var(--primary-soft)}
/* 宽屏三层主题配色（轨道=主题色，白系图标）：轨道底已是 --primary，悬停/激活改白色半透明 */
.phone.ldesk .rbtn{color:rgba(255,255,255,.72)}
.phone.ldesk .rbtn:hover{background:rgba(255,255,255,.14);color:var(--on-dark)}
.phone.ldesk .rbtn.on{color:var(--on-dark);background:rgba(255,255,255,.18)}
.rbadge{position:absolute;top:0;right:0;min-width:15px;height:15px;padding:0 4px;border-radius:8px;
  background:var(--risk);color:var(--on-dark);font-size:9.5px;font-weight:700;display:flex;align-items:center;justify-content:center}
/* 右栏工作面板：任务页常驻空态；新建/任务明细(#mSheet)在桌面模式下改道为右栏面板。
   宽度走 --rpw（栏宽设置按比例分配，拖拽分割线或默认 400） */
.phone.ldesk .rpanel{display:flex;flex:none;width:var(--rpw,400px);background:var(--bg);border-left:1px solid var(--line);flex-direction:column}
/* R2 WEB 固化：任务抽屉头部的通知/我的图标在 WEB 冗余（rail 与五 tab 已覆盖），隐藏 */
.phone.ldesk #drawer .dhd .wicon{display:none}
/* R2 WEB 固化：rpanel 四栏长驻（上方 .phone.ldesk .rpanel 已 display:flex），此规则退役 */
/*.phone.ldesk.rp-task:not(.sheet-open) .rpanel{display:flex}*/
/* R2.3 修复（老板 09-06 反馈①）：右栏常驻后，编辑面板(mSheet)停靠时右栏必须让位——
   否则 main 的 margin-right 预留与常驻右栏叠加，主页区与编辑区之间出现 --rpw 宽的空白带，窄屏主区被挤没 */
.phone.ldesk.sheet-open .rpanel{display:none}
/* 右栏空态：只留图标（2026-09-08 老板反馈11-12：说明文字删除，图标保留） */
.rp-empty{margin:auto;display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--t3);padding:24px;text-align:center}
.rp-empty .ic{width:36px;height:36px;opacity:.55}
/* 新建/编辑任务：底部弹层 → 右栏面板（复用全部既有逻辑，仅重排版）。
   面板宽 --rpw 可拖拽分割线调整（320–640），主区 margin-right 同步让位，互不遮挡 */
.phone.ldesk #mSheet.on{left:auto;right:0;top:0;bottom:0;width:var(--rpw,400px);background:transparent;
  display:flex;align-items:stretch;justify-content:flex-end;padding:0;z-index:60}
.phone.ldesk.sheet-open>main{margin-right:var(--rpw,400px)}
.phone.ldesk #mSheet.on .sheet{width:100%;max-height:none;height:100%;border-radius:0;border-left:1px solid var(--line);
  box-shadow:none;transform:none;transition:none;background:var(--card);display:flex;flex-direction:column;overflow-y:auto;padding:var(--sp-16) var(--sp-16) var(--sp-16)}
.phone.ldesk #mSheet.on .grab{display:none}
/* 分割线拖拽手柄：悬停/拖动显主题色细线 */
/* 右栏宽度拖拽条（2610L 修5）：完全收进面板内缘（原 left:-4px 探进任务区 4px——长按行尾/行框右缘
   会命中拖拽条=「L4 页宽变动、拖拽/落清单无响应」根因），视觉线随之居中 */
.phone.ldesk #mSheet.on .rph{display:block;position:absolute;left:0;top:0;bottom:0;width:10px;cursor:col-resize;z-index:5}
.phone.ldesk #mSheet.on .rph::before{content:'';position:absolute;left:4px;top:0;bottom:0;width:2px;border-radius:1px;
  background:transparent;transition:background .15s}
.phone.ldesk #mSheet.on .rph:hover::before,.phone.ldesk #mSheet.on .rph.drag::before{background:var(--primary)}
/* 旧钉钉数据管理面板（.entmain/.entnav/.entdetail 右栏）2610k P3 退役：
   浏览编辑统一走 LXTable（应用·数据）；.entdetail 排版类（kv 详情行）保留给组织 chip 弹窗 */
/* 侧栏可见性（宽屏默认模式）：默认无侧栏主区铺满；有侧栏的板块各自接管槽位 */
.phone.ldesk .drawer{display:none}
.phone.ldesk.rp-task .drawer{display:flex}
/* 侧栏宽度走 --navw（栏宽设置：侧栏/主页/编辑区按剩余宽比例分配；默认 300） */
.phone.ldesk .drawer{width:var(--navw,300px)}
/* 首页板块侧栏（标题=导航菜单名，选项=板块列表，后续新增页面往 boardNavList 追加） */
/* R2 固化：侧栏列表撑满、foot 沉底（通知设置的右下角按钮位） */
.boardnav .entnavlist{flex:1 1 auto;min-height:0;overflow-y:auto}
/* 首页板块侧栏：手机=抽屉（首页左上按钮呼出），宽屏=接管侧栏槽位 */
.boardnav{position:absolute;top:0;bottom:0;left:0;width:80%;max-width:330px;background:var(--card);z-index:110;
  transform:translateX(-103%);transition:transform .26s cubic-bezier(.32,.72,.28,1);box-shadow:var(--shadow-pop);
  display:flex;flex-direction:column}
.boardnav.on{transform:none}
/* APP端所有 L2 侧栏以任务清单抽屉为准：共用 .dmask 遮罩、.dhd 标题动作、.dsec 列表；
   WEB端常驻侧栏隐藏头部动作（轨道已承载通知/我的），避免与 APP 抽屉混淆 */
.phone.ldesk .boardnav .dhd .wicon{display:none}
.phone.ldesk.homeboard .boardnav{position:relative;order:-1;flex:none;width:var(--navw,300px);max-width:none;transform:none;
  box-shadow:none;border-right:1px solid var(--line);transition:none}
/* WEB L2 收起（老板 09-09 晚交互规则）：默认展开四栏，L3 页头呼出钮切换；
   收起=L1+L3+L4，主区/浮层坐标走 --navw:0 自动让位（L3/L4 自然分配剩余宽，无需额外开发） */
.phone.ldesk.l2hide{--navw:0px!important}
.phone.ldesk.l2hide .boardnav,.phone.ldesk.l2hide .drawer{display:none!important}
/* 数据管理面板已改 L4 目录下钻（250915），原板内 .entnav 抽屉规则随之删除 */
/* 桌面模式侧栏=在流槽位件，不与二级整页比层级（2026-09-08 老板反馈①"页面跨区超出工作区"根因：
   APP端抽屉档 z=110 残留到桌面，板块侧栏盖住 z85 二级页与其自带侧栏——数据管理页的数据表侧栏
   被「配置中心」侧栏整条盖住）。APP端抽屉/遮罩档位不受影响（仅 .ldesk 域内改写） */
.phone.ldesk .drawer,.phone.ldesk .boardnav{z-index:auto}
/* WEB四栏规则（2026-09-09 P1）：二级功能页/编辑器/搜索一律停靠4级编辑区（与 #dpage/#kbedpage 同位同宽），
   1级轨道与2级侧栏全程可见不再被覆盖；手机端 inset:0 全屏不变 */
.phone.ldesk .setpage,.phone.ldesk .searchpage,.phone.ldesk .edpage{left:auto;right:0;width:var(--rpw,400px);
  border-left:1px solid var(--line-strong);box-shadow:none}
/* 实体详情右栏面板（.entdetail 定位档）随 #entDetail 退役（2610k P3）；
   任务组织 chip 详情改轻量弹窗（entity.js openOrgFromTask），排版档见下方 .entdetail 字号块 */
/* 日期/组织编辑弹层：宽屏停靠右栏（0921 老板：改右栏底部上浮菜单——原全屏高但内容只有半幅，
   与 APP 端上浮一致；手机仍为底部弹层） */
.phone.ldesk #mDate.on{left:auto;right:0;width:var(--rpw,400px);background:transparent;align-items:flex-end;padding:0;z-index:62}
.phone.ldesk #mDate.on .dsheet{width:100%;height:auto;max-height:100%;border-radius:var(--r-2xl) var(--r-2xl) 0 0;
  border:1px solid var(--line);border-bottom:none;box-shadow:var(--shadow-pop);transform:none;transition:none;background:var(--card)}
.phone.ldesk #mOrg.on{left:auto;right:0;width:var(--rpw,400px);background:transparent;align-items:flex-end;justify-content:flex-end;padding:0;z-index:62}
.phone.ldesk #mOrg.on .sheet{width:100%;max-height:100%;height:auto;border-radius:var(--r-2xl) var(--r-2xl) 0 0;
  border:1px solid var(--line);border-bottom:none;box-shadow:var(--shadow-pop);transform:none;transition:none;background:var(--card);display:flex;flex-direction:column;overflow-y:auto;padding:var(--sp-16) var(--sp-16) var(--sp-16)}
/* 交办对象/执行人弹层：宽屏同改右栏底部上浮（0921 老板；手机仍为底部弹层） */
.phone.ldesk #mExe.on{left:auto;right:0;width:var(--rpw,400px);background:transparent;align-items:flex-end;justify-content:flex-end;padding:0;z-index:62}
.phone.ldesk #mExe.on .sheet{width:100%;max-height:100%;height:auto;border-radius:var(--r-2xl) var(--r-2xl) 0 0;
  border:1px solid var(--line);border-bottom:none;box-shadow:var(--shadow-pop);transform:none;transition:none;background:var(--card);display:flex;flex-direction:column;overflow-y:auto;padding:var(--sp-16) var(--sp-16) var(--sp-16)}
/* 员工日报/客服日报弹层：宽屏停靠右栏编辑区（老板 09-06 反馈①；手机仍为底部弹层） */
.phone.ldesk #mDaily.on,.phone.ldesk #mSvc.on{left:auto;right:0;top:0;bottom:0;width:var(--rpw,400px);background:transparent;
  display:flex;align-items:stretch;justify-content:flex-end;padding:0;z-index:60}
.phone.ldesk #mDaily.on .sheet,.phone.ldesk #mSvc.on .sheet{width:100%;max-height:none;height:100%;border-radius:0;border-left:1px solid var(--line);
  box-shadow:none;transform:none;transition:none;background:var(--card);display:flex;flex-direction:column;overflow-y:auto;padding:var(--sp-16) var(--sp-16) var(--sp-16)}
/* 知识库 MD 编辑页（#kbedpage）：WEB端停靠编辑区（右栏同宽同位，2026-09-08 老板反馈④：
   编辑页原先全屏铺开"占两屏扩展到工作区"，应仅在编辑区）；手机仍全屏 */
.phone.ldesk #kbedpage.on{left:auto;right:0;width:var(--rpw,400px);border-left:1px solid var(--line-strong);transition:none}
/* L4 内上升弹窗一律限 4 级区域（老板 09-09 晚元素4：派任务弹窗超出编辑区横跨主区）——
   同族审计：#hmAssign/#hmCustom(派任务/自定义期间) #mFb/#mCam/#mAddr/#mMs/#mKb(反馈/相机/地址/里程碑/KB表单，
   均从 dpage 面板内呼出）；#mDate/#mOrg/#mExe/#mSheet/#mDaily/#mSvc/#mKbCat/#mAppCfg/#mLeave/#mRbac 早已停靠 */
.phone.ldesk #hmAssign.on,.phone.ldesk #hmCustom.on{left:auto;right:0;width:var(--rpw,400px);background:transparent;
  align-items:stretch;justify-content:flex-end;padding:0}
/* 2610d 需求1：停靠几何不随 .on 翻转+关动画消除——此前 .on 摘掉即回全屏遮罩底样式，
   关面板的 0.3s 过渡里整个 L3/L4 被暗遮罩罩一下（闪屏） */
.phone.ldesk #hmAssign,.phone.ldesk #hmCustom{left:auto;right:0;top:0;bottom:0;width:var(--rpw,400px);background:transparent;
  align-items:stretch;justify-content:flex-end;padding:0;transition:none}
.phone.ldesk #hmAssign .dsheet,.phone.ldesk #hmCustom .dsheet{width:100%;max-width:none;height:100%;max-height:none;
  border-radius:0;border-left:1px solid var(--line);box-shadow:none;transform:none;transition:none;background:var(--card);
  display:flex;flex-direction:column;overflow-y:auto;padding:16px 16px 16px}
.phone.ldesk #mFb.on,.phone.ldesk #mCam.on,.phone.ldesk #mAddr.on,.phone.ldesk #mMs.on,.phone.ldesk #mKb.on{left:auto;right:0;
  width:var(--rpw,400px);background:transparent;align-items:stretch;justify-content:flex-end;padding:0}
.phone.ldesk #mFb .sheet,.phone.ldesk #mCam .sheet,.phone.ldesk #mAddr .sheet,.phone.ldesk #mMs .sheet,.phone.ldesk #mKb .sheet{
  width:100%;max-height:none;height:100%;border-radius:0;border-left:1px solid var(--line);box-shadow:none;transform:none;
  transition:none;background:var(--card);display:flex;flex-direction:column;overflow-y:auto;padding:var(--sp-16) var(--sp-16) var(--sp-16)}
.phone.ldesk #mFb .grab,.phone.ldesk #mCam .grab,.phone.ldesk #mAddr .grab,.phone.ldesk #mMs .grab,.phone.ldesk #mKb .grab{display:none}
/* 知识库分类管理弹层（#mKbCat）：WEB端停靠编辑区（反馈⑤：编辑区的弹窗只在编辑区弹起，
   原先盖满工作区）；z=98 档（从编辑页呼出可点层，APP端也要盖过 dpage=85） */
.phone.ldesk #mKbCat{left:auto;right:0;top:0;bottom:0;width:var(--rpw,400px);background:transparent;
  align-items:stretch;justify-content:flex-end;padding:0;transition:none}
.phone.ldesk #mKbCat .sheet{width:100%;max-height:none;height:100%;border-radius:0;border-left:1px solid var(--line-strong);
  box-shadow:none;transform:none;transition:none;background:var(--card);display:flex;flex-direction:column;overflow-y:auto;padding:var(--sp-16) var(--sp-16) var(--sp-16)}
.phone.ldesk #mKbCat .grab{display:none}
/* sheet-open（任务编辑/日报停靠）z=97 高于二级页 z=85 / 实体详情 z=87，同区自然覆盖，无需再让位 */
.ravatar{display:none}
.phone.ldesk .ravatar{border:2px solid rgba(255,255,255,.55)}
   color-mix 不支持时回退原 --bg/--card（优雅降级）。手机端通铺配色不受影响。 */
.phone.ldesk .drawer,.phone.ldesk .boardnav{background:var(--card)}
@supports (background:color-mix(in srgb,red 10%,blue)){
  .phone.ldesk .drawer,.phone.ldesk .boardnav{background:color-mix(in srgb,var(--primary) 10%,var(--bg))}
  .phone.ldesk>main,.phone.ldesk .dpage,.phone.ldesk .setpage,.phone.ldesk .searchpage,.phone.ldesk .edpage,
  .phone.ldesk #entpage,.phone.ldesk #syncpage,.phone.ldesk .rpanel{background:color-mix(in srgb,var(--primary) 3%,var(--bg))}
  /* 停靠弹层面板同吃 3% 混色（2610c 需求2：弹层=与 #dpage 同一款 L4 面板观感，页头透明无接缝） */
  .phone.ldesk #hmAssign .dsheet,.phone.ldesk #hmCustom .dsheet,
  .phone.ldesk #mOrg.on .sheet,.phone.ldesk #mExe.on .sheet,.phone.ldesk #mDate.on .dsheet{
    background:color-mix(in srgb,var(--primary) 3%,var(--bg))}
  /* 页头底色与所在页面同源（1011 老板元素3定稿：参考 .dhd 透明继承 L2 底色的方式）——
     六页头原吃 --pagebg(灰-5) 与停靠面板的 3% 混色相差一档灰；现同吃 3% 混色，接缝消失。
     .wtop 仍吸顶防透字（同色即可）；手机端不受影响（规则圈定 .phone.ldesk）；不支持 color-mix 时随面板一起回退 */
  .phone.ldesk .wtop,.phone.ldesk .dtop,.phone.ldesk .subtop,
  .phone.ldesk .edhd,.phone.ldesk .sethd,.phone.ldesk .shead{background:color-mix(in srgb,var(--primary) 3%,var(--bg))}
}
/* WEB端结构分隔线统一加强档（规范 §1.3：--line → --line-strong，仍 1px 不加粗）：
   板块侧栏右缘 / 右栏工作面板与停靠弹层左缘（主区↔编辑区边界太淡） */
.phone.ldesk .drawer,.phone.ldesk .boardnav{border-right-color:var(--line-strong)}
.phone.ldesk .rpanel,.phone.ldesk .dpage,
.phone.ldesk #mSheet.on .sheet,.phone.ldesk #mOrg.on .sheet,.phone.ldesk #mExe.on .sheet,.phone.ldesk #mDate.on .dsheet{border-left-color:var(--line-strong)}
/* 宽屏停靠弹层关闭动画消除：停靠弹层无论开关都保持右栏几何+透明底，
   关闭即隐——否则摘掉 .on 后回退手机端底部弹层过渡（右栏"向下滑动"+遮罩瞬间全屏变暗再淡出）。
   同理首页侧栏 boardnav 切走板块时不做手机抽屉的向左滑出过渡（多余的"向左闪动"）。 */
.phone.ldesk #mSheet,.phone.ldesk #mOrg,.phone.ldesk #mExe,.phone.ldesk #mDate{
  left:auto;right:0;top:0;bottom:0;width:var(--rpw,400px);background:transparent;
  align-items:stretch;justify-content:flex-end;padding:0;transition:none}
.phone.ldesk #mSheet .sheet,.phone.ldesk #mOrg .sheet,.phone.ldesk #mExe .sheet,.phone.ldesk #mDate .dsheet{
  transform:none;transition:none}
.phone.ldesk .boardnav{transition:none}
/* 宽屏分隔线：任务行之间 / 事项行之间（淡·细；手机端不受影响） */
.phone.ldesk .subitem+.subitem{border-top:1px solid var(--line)}
/* 详情面板：事项行排序手柄贴右缘；事项下方标签行加大与事项的间距 */
/* 详情面板右侧元素统一右缘对齐（窄宽同源）：以可见墨迹（getBBox 实测）对齐内容右缘。
   #tbSubs 旧补偿 -12.4px 随 2610k C1 页头升 dtop（标准 40·24 钮、右缘由头部内距统一）废止 */
.subitem .sdrag{margin-right:-6.2px}
/* 2610i：删除钮两种入口（新增行/行内编辑行）同一右缘补偿；铃铛虽复用 .sx 但内联归零。
   2610O：editing 档退出本条（垂直居中定位，margin-top 会破坏居中；见上方无感切换块） */
.subitem .sx{margin-right:-8.1px}
.subitem.subnew .sx{margin-top:1px}
/* 详情面板：事项下方元信息行加大与事项的间距（宽屏） */
.phone.ldesk .qinfo{margin-top:var(--sp-14)}
.phone.ldesk #mSheet.on .qtools{margin-top:auto;padding-top:var(--sp-10)}
/* 首页下钻明细栈（#dpage）：桌面模式改道右栏面板——保留右滑入动画，仅停靠右侧 400px。
   dpage 仅从首页/项目库下钻进入，与任务页右栏空态互斥，无需额外互斥类 */
.phone.ldesk .dpage{left:auto;right:0;width:var(--rpw,400px);box-shadow:none;border-left:1px solid var(--line);transition:none}

/* ================= 实体详情排版（kv 行；组织 chip 弹窗/各详情弹层共用） ================= */
/* .entrow/.eic/.et2/.enttable/.entfoot（旧数据管理三卡/通用表视图/右栏面板）2610k P3 退役 */
.entdetail{font-size:13px;color:var(--t2);line-height:1.7}
/* APP端详情对话框：主操作同款实底按钮（dlgact 动作区通用档）；2610X-S7 圆角 16 + 弹窗档 36px */
.dlgact{gap:var(--sp-10)}
.dlgact .dlgbtn{flex:1;background:var(--primary);color:var(--on-primary);border-radius:var(--r-2xl);
  min-height:36px;padding:var(--sp-6) var(--sp-14);text-align:center}
.dlgact .dlgbtn.ghost{background:none;color:var(--t3)}
.entdetail .drow{display:flex;gap:var(--sp-8);padding:var(--sp-8) var(--sp-2);border-bottom:1px solid var(--line);align-items:baseline}
.entdetail .drow:last-child{border-bottom:none}
.entdetail .dl{color:var(--t3);flex:none;width:58px;font-size:12px}

/* ================= 首页·公司经营（映射现有设计令牌；任务书第三节） ================= */
/* 新增状态色仅四项并入令牌：红#DC2626 橙#D97706 绿底var(--good-fill) 橙底var(--warn-fill) */
:root{--risk:#DC2626;--warn-tx:#D97706;--good-tx:#16A34A;--good-soft:#F0FBF5}
/* 状态色家族补全（2026-09-14 批四）：原只有 4 个令牌，而规则体里散着多处裸色。
   补令牌=把已在用的值搬进令牌**值不变**（零视觉变更），此后规则体一律 var()。
   命名：-fill=浅色底（如 .tagchip.good 的绿底）。深色模式下的提亮字色走覆盖层，不在此。 */
:root{--good-fill:#DCFCE7;--warn-fill:#FEF3C7;--risk-fill:#FEECEC;
  --on-dark:#FFFFFF;
  /* 深色画布族（批四）：登录页外层的舞台底色与浮钮，独立于主题切换，故单独成组 */
  --canvas:#14151C;--canvas-panel:#1E2030;--canvas-hover:#262840;
  --canvas-line:#33354A;--canvas-tx:#C9CBE0}
/* --- 卡片（.listcard 同规格） --- */
.hcard{margin:var(--sp-2) var(--sp-16) var(--sp-14);background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);
  padding:0 0 var(--sp-2);overflow:hidden}
/* 卡头定高 48px（2026-09-08 老板反馈⑨：卡头太高。根因=全局无 h2 reset，浏览器默认
   margin 0.83em 把卡头撑到 ~71px；修复=清 margin + 定高 48px 垂直居中，双端同守。
   2026-09-09 老板重申：应用分组等紧凑卡头也要 48px——.sm 变体不再豁免定高 */
/* 2610f 元素7：日历卡头第 4 钮（均分列宽/内容优先）入列——标题不缩（flex:none+nowrap），
   窄列时段落行自动换到第二行（height→min-height，单行卡片几何不变） */
.hcard-hd{display:flex;align-items:center;gap:var(--sp-10);min-height:48px;padding:0 var(--sp-16);position:relative;flex-wrap:wrap}
.hcard-hd h2{margin:0;font-size:var(--fs-body-lg);font-weight:700;flex:none;white-space:nowrap}
/* 紧凑卡头（应用分组/进行中的指派）：高度并入 48px 统一口径，仅保留小字号/小图标差异 */
.hcard-hd.sm{gap:var(--sp-8);min-height:48px;padding:0 var(--sp-12)}
.hcard-hd.sm .hd-ico{width:22px;height:22px;border-radius:var(--r-sm)}
.hcard-hd.sm .hd-ico svg{width:12px;height:12px}
.hcard-hd.sm h2{font-size:14px}
.hcard-hd .tseg{margin-left:auto}
.hd-ico{width:26px;height:26px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;flex:none;color:var(--on-dark)}
.hd-ico svg{width:14px;height:14px}
.hd-ico.stat{background:var(--brand-60)}
.hd-ico.pj{background:var(--sec-60)}
.hd-ico.pp{background:#2A9E6E}
.hcard-hd.tint-stat{background:var(--brand-5)}
.hcard-hd.tint-pj{background:var(--sec-5)}
.hcard-hd.tint-pp{background:var(--good-soft)}
:root[data-theme="dark"] .hcard-hd.tint-stat{background:rgba(79,70,229,.16)}
:root[data-theme="dark"] .hcard-hd.tint-pj{background:rgba(249,115,22,.13)}
:root[data-theme="dark"] .hcard-hd.tint-pp{background:rgba(42,158,110,.15)}
/* 主题色通铺(深底)下卡片头保留各自彩色标识（原白色半透明会把彩色抹掉）：
   经营分析跟随主题色 --primary-soft，项目=橙、人员=绿 半透明 */
.phone.bgmode-dark .hcard-hd.tint-stat{background:var(--primary-soft)}
.phone.bgmode-dark .hcard-hd.tint-pj{background:rgba(249,115,22,.18)}
.phone.bgmode-dark .hcard-hd.tint-pp{background:rgba(42,158,110,.18)}
/* --- 标题后 | 分隔段（期间切换/口径下拉） --- */
.tseg{display:flex;align-items:center;gap:var(--sp-8)}
.tseg .ts{font-size:14px;color:var(--t2);cursor:pointer;white-space:nowrap;user-select:none}
.tseg .ts.on{color:var(--primary);font-weight:600}
.tseg .tsep{width:1px;height:4px;border-radius:1px;background:currentColor;color:var(--gray-20);font-size:0;line-height:0;flex:none;user-select:none}
:root[data-theme="dark"] .tseg .tsep,.phone.bgmode-dark .tseg .tsep,.phone.bgmode-light .tseg .tsep{color:var(--gray-60)}
.tseg .ts.drop::after{content:" ▾";font-size:10.5px}
/* --- 任务日历卡（2026-09-21 立项：周/月+类型+任务/组织模式；词典§3.6） --- */
.hd-ico.tc{background:var(--brand-60)}
.tcnav{display:grid;align-items:center;gap:var(--sp-2);padding:var(--sp-6) var(--sp-16) 0}
.tcnav .tcnv{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--t3);font-size:16px;flex:none;background:none;border:none;padding:0;font-family:inherit;cursor:pointer;justify-self:center}
.tcnav>.tcnv:first-child{grid-column:1}
.tcnav>.tcnv:last-child{grid-column:7}
.tcnav .tcnv:active{background:var(--primary-soft)}
.tcnav .tcrg{grid-column:2 / span 5;text-align:center;font-size:13px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tcnav .tcnow{font-size:12px;color:var(--primary);padding:var(--sp-2) var(--sp-10);border-radius:var(--r-pill);flex:none;background:none;border:none;font-family:inherit;cursor:pointer}
.tcnav .tcnow:active{background:var(--primary-soft)}
/* 0927 老板：列宽不随内容撑（minmax(0,1fr) 均分兜底）；实际模板由 JS 按数据生成——无任务列固定 34px、有任务列均分余宽 */
.tcweek{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--sp-4);padding:var(--sp-6) var(--sp-8) var(--sp-12);align-items:start}
.tcwcol{display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-2) var(--sp-6);border-radius:var(--r-md);min-height:88px}
.tcwcol.today{background:var(--primary-soft)}
.tcwd{font-size:11px;color:var(--t3)}
.tcwcol.today .tcwd{color:var(--primary);font-weight:600}
.tcwdn{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--t1);flex:none}
.tcwcol.today .tcwdn,.tcmcell.today .tcwdn{background:var(--primary);color:var(--on-primary);font-weight:600}
.tcevs{align-self:stretch;display:flex;flex-direction:column;gap:var(--sp-2);margin-top:var(--sp-2);min-width:0}
.tcev{font-size:10.5px;line-height:1.5;padding:var(--sp-2) var(--sp-4);border-radius:var(--r-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;cursor:pointer;font-weight:500;width:100%}
.tcev.n{background:var(--gray-10);color:var(--t2)}
:root[data-theme="dark"] .tcev.n{background:var(--gray-70);color:var(--gray-30)}
.tcev.over{color:var(--destructive);background:rgba(255,101,101,.14)}
.tcev.more{background:none;color:var(--t3);font-weight:600;cursor:default}
/* 0921 老板：月格自适应高度（顶对齐=各行按自身内容收窄、无任务格塌缩），一屏放下完整月
   0927 老板：列宽不随任务名撑爆（错位/APP 溢出根因）——表头与月格由 JS 写同一份模板：无任务列固定 34px、有任务列均分余宽 */
.tcmonth{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--sp-2);padding:var(--sp-4) var(--sp-8) var(--sp-8);align-items:start}
.tcmhead{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--sp-2);padding:var(--sp-6) var(--sp-8) 0}
.tcmhead span{text-align:center;font-size:11px;color:var(--t3)}
/* 0921 老板：月格自适应高度（无任务格收窄、行距压缩），一屏放下完整月 */
.tcmcell{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2) var(--sp-4);border-radius:var(--r-md)}
.tcmcell.today{background:var(--primary-soft)}
.tcmcell.out{opacity:.35}
.tcmcell.out .tcwdn{color:var(--t3)}
.tcund{margin:0 var(--sp-16);padding:var(--sp-8) 0 var(--sp-12);border-top:1px solid var(--line);font-size:11px;color:var(--t3);cursor:pointer}
.tcund:active{color:var(--primary)}
.tdot{width:8px;height:8px;border-radius:50%;flex:none}
/* 外勤标记置灰行（编辑弹层 ⋯ 菜单；0921 口径=无日期/重复任务不可标） */
.prow.off{opacity:.38;pointer-events:none}
/* --- 行组件 .hrow（名14/金额13/标签11；金额不得接近标题字号） --- */
.hrows{padding:2px 6px 6px}
.hrow{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-12) var(--sp-12);border-radius:var(--r-lg);cursor:pointer;min-width:0}
.hrow:active{background:var(--primary-soft)}
.hrow+.hrow{border-top:1px solid var(--line)}
.hrow .nm{font-size:var(--fs-body);color:var(--t1);font-weight:600;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hrow .nm .tagchip{margin-left:var(--sp-6);padding:1px var(--sp-8)}
.hrow .main{flex:none;display:flex;align-items:baseline;gap:var(--sp-6);min-width:0;max-width:66%}
.hrow .v{font-size:13px;color:var(--t1);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.hrow .v.red{color:var(--risk)}
.hrow .v .dim{font-size:13px;color:var(--gray-50);font-weight:600;font-style:normal}
:root[data-theme="dark"] .hrow .v .dim,.phone.bgmode-dark .hrow .v .dim{color:var(--gray-30)}
.hrow .suf{font-size:11px;color:var(--t3);white-space:nowrap}
.hrow .suf .red{color:var(--risk);font-weight:600}
.hrow .chev{width:14px;height:14px;color:var(--gray-30);flex:none}
.rate{font-size:11px;font-weight:600;border-radius:var(--r-sm);padding:1px var(--sp-4)}
.rate.low{color:var(--warn-tx);background:var(--warn-fill)}
:root[data-theme="dark"] .rate.low,.phone.bgmode-dark .rate.low{background:rgba(217,119,6,.2);color:var(--warn-bright)}
.tagchip.warn{background:var(--warn-fill);color:var(--warn-tx)}
.tagchip.good{background:var(--good-fill);color:var(--good-tx)}
:root[data-theme="dark"] .tagchip.warn,.phone.bgmode-dark .tagchip.warn{background:rgba(217,119,6,.22);color:var(--warn-bright)}
:root[data-theme="dark"] .tagchip.good,.phone.bgmode-dark .tagchip.good{background:rgba(22,163,74,.22);color:var(--good-bright)}
.morerow{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-12) var(--sp-14);border-top:1px solid var(--line);cursor:pointer;color:var(--t2)}
.morerow:active{background:var(--primary-soft)}
.morerow .t{flex:1;font-size:var(--fs-body);font-weight:500}
.morerow .cnt{font-size:11px;color:var(--t3)}
.morerow .chev{width:14px;height:14px;color:var(--gray-30)}
/* --- 人员分析 --- */
.hb{padding:var(--sp-8) var(--sp-16);font-size:11px;color:var(--t3)}
.hb b{color:var(--t2);font-weight:600}
.hb .warn{color:var(--warn-tx);font-weight:600}
.ghd{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-8) var(--sp-14) var(--sp-8);background:var(--gray-5);border-top:1px solid var(--line)}
.ghd:first-child{border-top:none}
:root[data-theme="dark"] .ghd,.phone.bgmode-dark .ghd{background:var(--gray-90)}
.ghd .gt{font-size:var(--fs-caption);font-weight:600;color:var(--gray-60)}
:root[data-theme="dark"] .ghd .gt,.phone.bgmode-dark .ghd .gt{color:var(--gray-30)}
.ghd .gc{font-size:10.5px;color:var(--t3)}
.pitem{display:flex;align-items:center;flex-wrap:wrap;gap:var(--sp-6) var(--sp-10);padding:var(--sp-12) var(--sp-14);cursor:pointer;min-width:0}
.pitem .chev{margin-left:auto}
.pitem:active{background:var(--primary-soft)}
.pitem+.pitem{border-top:1px solid var(--line)}
.pitem .nm{font-size:var(--fs-body);font-weight:600;width:52px;flex:none}
.pitem .etchip{flex:none}
.pitem .work{flex:1;min-width:0;font-size:11px;color:var(--t3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pitem .work b{color:var(--t2);font-weight:500}
.pitem .chev{width:14px;height:14px;color:var(--gray-30);flex:none}
/* --- 全屏明细页（右滑入变体；返回 i-back；主题色通铺由 applyThemeColor .page 同规则接管） --- */
.dpage{position:absolute;inset:0;background:var(--bg);z-index:85;transform:translateX(103%);
  transition:transform .26s cubic-bezier(.32,.72,.28,1);display:flex;flex-direction:column}
.dpage.on{transform:none}
.dtop{display:flex;align-items:center;gap:var(--sp-2);min-height:68px;padding:calc(16px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 16px 12px 8px;
  background:var(--pagebg,var(--bg))}
/* L4 标题返回钮标准件（WEB四栏规则：4级页面标题=退回便签）。09-10 老板反馈：APP端也要有退回标签
   → 常显（双端同款）；点击=LAYERS 注册表 close，与 APP 系统返回键同源同序 */
.wicon.dback{display:flex}
/* 页头右侧动作槽：多钮横排（260912 KB 上传+新建双钮首用；单钮页头不受影响） */
#hmDSeg{display:flex;align-items:center;gap:2px}
.dtop .t{flex:1;display:flex;align-items:center;gap:var(--sp-8);font-size:20px;font-weight:700;line-height:24px;min-width:0}
.dtop .t span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dtop .t .ic{width:24px;height:24px;flex:none}
.dtop .wicon .ic{width:24px;height:24px}
/* 261028 渠道走查：详情首卡 dsum 换代为 .ch-card+hcard-hd 卡头（规则并入渠道域块，此处清除） */
.dbody{flex:1;overflow-y:auto;padding:var(--sp-2) var(--sp-16) var(--sp-20);scrollbar-width:none}
.dbody::-webkit-scrollbar{display:none}
/* L4 详情底栏（U2）：APP 端固定主操作条；桌面端隐藏，操作收页头更多菜单 */
#hmDFoot{display:none;flex:none;gap:10px;padding:10px 16px calc(10px + max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px)));background:var(--pagebg,var(--bg));border-top:1px solid var(--line)}
#hmDFoot.on{display:flex}
#hmDFoot .btn-p{flex:1;min-height:42px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-2xl)}
@media (min-width:541px){#hmDFoot.on{display:none}}
/* 2610X-S7 元素4：卡片间距归工作台标准 14px（原 16px 越档——老板口径「卡片间的间距以工作台的卡片间距为标准」） */
.dlist{background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);padding:3px 12px;margin-bottom:var(--sp-14)}
.dsec2{padding:var(--sp-12) var(--sp-6) var(--sp-6);font-size:var(--fs-caption);font-weight:700;color:var(--t3)}
/* 主题色通铺下 dbody 直属分组标题/计数/口径注/空态：原 t3 灰在主题底上太淡（0913 老板元素2），
   参考页头 #hmWsubT 白字方案——深底=白字族（计数同 fsOn 白磨砂徽标），浅底=深字族；白卡内的同名类不受影响 */
.phone.bgmode-dark .dbody>.dsec2{color:rgba(255,255,255,.9)}
.phone.bgmode-dark .dbody>.dsec2 .dtag{color:var(--on-dark);background:rgba(255,255,255,.2);padding:1px 7px;border-radius:999px;font-weight:700}
.phone.bgmode-dark .dbody>.dempty,.phone.bgmode-dark .dbody>.setnote{color:rgba(255,255,255,.8)}
.phone.bgmode-dark .dbody>.dempty b{color:var(--on-dark)}
.phone.bgmode-light .dbody>.dsec2{color:var(--t2)}
.phone.bgmode-light .dbody>.dsec2 .dtag{color:var(--t1);background:rgba(0,0,0,.06);padding:1px 7px;border-radius:999px;font-weight:700}
.phone.bgmode-light .dbody>.dempty,.phone.bgmode-light .dbody>.setnote{color:var(--t2)}
/* 同族：dpage extra 槽（项目库 全部|进行中/排序）直接落在通铺底，选中 fs=primary 字同隐形（0913 元素1 普遍存在档） */
.phone.bgmode-dark #hmDExtra .fs{color:rgba(255,255,255,.65)}
.phone.bgmode-dark #hmDExtra .fs.on{color:var(--on-dark);font-weight:600}
.phone.bgmode-dark #hmDExtra .fsep{color:rgba(255,255,255,.35)}
.phone.bgmode-dark #hmDExtra .fdrop{color:rgba(255,255,255,.9)}
.phone.bgmode-dark #hmDExtra .fdrop::after{color:rgba(255,255,255,.6)}
.phone.bgmode-light #hmDExtra .fs{color:var(--t2)}
.phone.bgmode-light #hmDExtra .fs.on{color:var(--t1);font-weight:600}
.phone.bgmode-light #hmDExtra .fsep{color:var(--gray-50)}
.phone.bgmode-light #hmDExtra .fdrop{color:var(--t1)}

/* ================= 组织首页组件（0913 重设计定稿落地） ================= */
/* 分段切换器（方案A 白卡分段器）：白卡对齐 16px 缘；选中段=主题色实底+白字（白卡承载，
   任何主题色/通铺模式都无底字同色问题）；浅主题色档选中段切深字（bgmode-light 既有约定） */
.segcard{background:var(--gray-10);border-radius:12px;box-shadow:none;padding:3px;display:flex;gap:3px;margin:0 0 var(--sp-14)}
:root[data-theme="dark"] .segcard{background:var(--gray-90)}
.segcard .seg{flex:1;min-width:0;height:36px;border:none;background:transparent;border-radius:9px;
  display:flex;align-items:center;justify-content:center;gap:0;cursor:pointer;font-family:var(--font-ui);
  font-size:14px;font-weight:500;color:var(--t2);transition:background .18s,color .18s,box-shadow .18s}
.segcard .seg.on{background:var(--card);color:var(--t1);font-weight:600;box-shadow:var(--shadow-card)}
:root[data-theme="dark"] .segcard .seg.on{background:var(--gray-70);color:var(--on-dark)}
/* 卡头状态筛选=复用 .tseg（0913 定稿，与通知卡卡头同款），无专用 CSS */
/* 名单行（组织首页名单卡体）：头像+姓名+部门签+岗位·手机+状态章 */
.rrow{display:flex;align-items:center;gap:10px;padding:9px 2px;border-radius:var(--r-md);cursor:pointer}
.rrow.noclk{cursor:default}
.rrow:active{background:var(--gray-10)}
.rrow+.rrow,.rcap+.rrow{border-top:1px solid var(--line)}
.rav{width:34px;height:34px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:var(--on-dark)}
.rn{flex:1;min-width:0}
.rn .t1x{font-size:13px;font-weight:600;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rn .t1x .dt{font-size:10.5px;font-weight:500;color:var(--gray-50);background:var(--gray-10);border-radius:var(--r-pill);padding:1px 7px;margin-left:6px;font-style:normal}
.rn .t2x{font-size:11px;color:var(--t3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rz{font-style:normal;font-size:10.5px;font-weight:600;padding:2.5px 9px;border-radius:var(--r-pill);flex:none}
.rz.good{background:var(--good-fill);color:var(--good-tx)}
.rz.warn{background:var(--warn-fill);color:var(--warn-tx)}
.rz.gray{background:var(--gray-10);color:var(--gray-50)}
.rz.ghost{background:none;border:1px solid var(--line-strong);color:var(--gray-50)}
:root[data-theme="dark"] .rz.good{background:rgba(22,163,74,.22);color:var(--good-bright)}
:root[data-theme="dark"] .rz.warn{background:rgba(217,119,6,.22);color:var(--warn-bright)}
.rempty{text-align:center;color:var(--t3);font-size:13px;padding:24px 0 22px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:120px}
.rempty b{font-size:15px;color:var(--t2);margin-bottom:4px;font-weight:600}
.rempty>.ic{width:30px;height:30px;opacity:.4;margin-bottom:8px;flex:none}
.rempty>.pbtn{width:auto;min-width:130px;flex:none;margin-top:12px;padding:0 18px;font-size:13px}
/* 标题问号徽标：必要说明的极简形态（替代行内小字解释）；红底白问号，点=toast 说明 */
.qmark{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;
  background:var(--risk);color:var(--on-dark);font-size:9.5px;font-weight:700;font-style:normal;flex:none;cursor:pointer;
  vertical-align:2px;margin-left:5px;font-family:var(--font-ui)}
/* 页头标题（20px）的 ？红点与标题文字垂直居中（2610k 老板元素7）：全局 2px 按 13px 行高校准，
   20px 标题字形中心低 2px → 页头场景补到 4px（红点中心=标题文字中心） */
.dtop .t .qmark{vertical-align:4px}
/* 代登录横幅（我的页置顶条件态，替代原普通行） */
.impbanner{margin:2px 16px 0;background:rgba(255,101,101,.12);border:1px solid rgba(255,101,101,.45);
  border-radius:var(--r-2xl);padding:11px 14px;display:flex;align-items:center;gap:10px;cursor:pointer}
.impbanner .ic{width:18px;height:18px;color:var(--risk);flex:none}
.impbanner .gt{flex:1;min-width:0;font-size:13px;font-weight:600;color:var(--risk)}
.impbanner .gt small{display:block;font-size:11px;color:var(--t3);font-weight:400;margin-top:1px}
.impbanner .act{font-size:12px;font-weight:700;color:var(--risk);flex:none}
/* 代位登录红标（2610X-S1：auth.js cssText 静态段类化，值等价迁移——#fff→var(--on-primary) 两主题恒白）；
   ldesk/APP 双档定位与代位红底仍由 JS 内联（.impbadge 只承载静态基座）；z=200 见 §2.3，须浮于登录遮罩之上 */
.impbadge{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(66px + env(safe-area-inset-bottom,0px));
  z-index:200;color:var(--on-primary);font:600 10.5px/1 var(--font-ui,sans-serif);padding:5px 10px;
  border-radius:999px;pointer-events:auto;cursor:pointer}
/* —— 0913 元素1 全局排查档：通铺底上其余主题色字/灰字选中态与页头族（逐类核对过落点，
   仅覆盖直接落在通铺背景上的；白卡/弹层内的同名类不受影响）—— */
/* 清单设置页头页签（U5）：改用 .segcard 中性分段，通铺下由 .seg 自身规则反白 */
/* 编辑页页头：标题 .edt=primary 字、返回钮 wicon=t2 → 深底隐形/太淡 */
.phone.bgmode-dark .edhd .edt{color:var(--on-dark)}
.phone.bgmode-dark .edhd .wicon{color:rgba(255,255,255,.9)}
.phone.bgmode-dark .edhd .wicon:active{background:rgba(255,255,255,.15)}
.phone.bgmode-light .edhd .edt{color:var(--t1)}
/* 清单设置页头返回钮（.sethd 同 edhd 档） */
.phone.bgmode-dark .sethd .wicon{color:rgba(255,255,255,.9)}
.phone.bgmode-dark .sethd .wicon:active{background:rgba(255,255,255,.15)}
/* 任务页分组标题（今天/已完成…）=t3 灰 → 深底太淡 */
.phone.bgmode-dark .grp-ttl{color:rgba(255,255,255,.75)}
.phone.bgmode-dark .grp-ttl .dot{background:rgba(255,255,255,.9)}
.phone.bgmode-light .grp-ttl{color:var(--t2)}
/* ---------- 首页图表分析卡（2610 方案批四：自定义统计图表组件；柱状复用 dcplot 柱族；
   饼图=conic-gradient 主色深浅环+中心孔用 ::after 盖 var(--card)；配置存 S.staff.hmcfg） ---------- */
.hccard{border:1px solid var(--line);border-radius:var(--r-lg);margin:var(--sp-10) var(--sp-12);background:var(--card);overflow:hidden}
.hchd{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-10) var(--sp-12) 0}
.hcname{display:flex;align-items:center;gap:var(--sp-6);font-size:13px;font-weight:700;color:var(--t1);flex:1;min-width:0}
/* 2610g 元素4：下钻面包屑跟在标题后同一行——文字段出省略号、面包屑 chip 恒可见不换行 */
.hcname .hctx{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hcname .chip.dcbk{flex:none}
.hcsub{font-size:11px;color:var(--t3);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 2610f 元素5：···菜单贴卡头右缘（图标/图表的右侧），不再紧跟标题文字 */
.hcmenu{border:none;background:none;color:var(--t3);font-size:15px;letter-spacing:1px;padding:var(--sp-2) var(--sp-4);cursor:pointer;font-family:var(--font-ui);flex:none;margin-left:auto}
.hcbody{padding:var(--sp-2) var(--sp-6) var(--sp-6)}
.hcbody .dchart{border:none;margin:0;padding:var(--sp-8) var(--sp-6) var(--sp-6)}
.dcpwrap{display:flex;align-items:center;gap:var(--sp-16);padding:var(--sp-6) var(--sp-2)}
.dcpie{width:118px;height:118px;border-radius:50%;flex:none;position:relative}
.dcpie::after{content:'';position:absolute;inset:30%;border-radius:50%;background:var(--card)}
.dclgs{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.dclg{display:flex;align-items:center;gap:var(--sp-6);font-size:12px}
.dcdot{width:9px;height:9px;border-radius:3px;flex:none}
.dcnm{color:var(--t2);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dcvl{color:var(--t1);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.dcline{width:100%;height:140px;display:block}
.dcnum{font-size:22px;font-weight:700;color:var(--t1);padding:var(--sp-8) var(--sp-2) var(--sp-2);font-variant-numeric:tabular-nums}
.dcnumsub{font-size:12px;color:var(--t3);padding:0 2px 6px}

/* ---------- 详情页统计柱状图（2610 方案批三：纯 div 自绘跟随主题色 --grad-brand；
   点一层柱=下钻二层、点二层柱=选中态（hasSel 时未选中淡出）、面包屑返回；词条见规范§3 首页经营） ---------- */
.dchart{margin:var(--sp-2) var(--sp-2) var(--sp-10);border:1px solid var(--line);border-radius:var(--r-xl);background:var(--card);padding:var(--sp-12) var(--sp-14) var(--sp-10)}
.dchd{display:flex;align-items:center;gap:var(--sp-8);margin-bottom:var(--sp-10)}
.dct{font-size:12px;font-weight:600;color:var(--t2)}
.dcbk{padding:var(--sp-2) var(--sp-10);font-size:11px}
.dcplot{display:flex;align-items:flex-end;gap:var(--sp-8);height:140px;border-bottom:1px solid var(--line)}
.dccol{flex:1;height:100%;min-width:0;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;cursor:pointer}
.dcv{font-size:10.5px;color:var(--t2);margin-bottom:var(--sp-4);white-space:nowrap;font-variant-numeric:tabular-nums}
.dcbar{width:56%;max-width:36px;min-height:3px;border-radius:6px 6px 0 0;background:var(--grad-brand);
  transform-origin:bottom;animation:dcgrow .25s ease}
@keyframes dcgrow{from{transform:scaleY(0)}}
.dcplot.hasSel .dccol:not(.sel) .dcbar{opacity:.22}
.dcplot.hasSel .dccol:not(.sel) .dcv{opacity:.4}
.dccol.sel .dcbar{box-shadow:0 2px 10px color-mix(in srgb,var(--primary) 35%,transparent)}
.dccol:hover .dcbar{filter:brightness(1.06)}
.dcx{display:flex;gap:var(--sp-8);margin-top:var(--sp-6)}
.dck{flex:1;min-width:0;text-align:center;font-size:11px;color:var(--t2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- 筛选条件构建器（2610 方案批二：#hmCustom 壳复用，六域共用一套；
   行=连接词/字段/方式三控件一行 + 值控件区；字段字典来自 /api/detail/meta/{kind}；
   拖柄排序复用 .dragghost/.dragging（同 1008/1011 ghost 方法族） ---------- */
.flrow{border:1px solid var(--line);border-radius:var(--r-lg);padding:8px 10px;margin-bottom:8px;background:var(--card)}
/* 2610c 需求5 立（仅 ldesk），2610f 元素9 换代：APP端与WEB端统一一行布局——
   条件行=网格 连接词52px/字段2fr/方式1fr/值2fr/删除30px/拖柄20px（2610X-S7 元素9：拖拽把手恒在行最右，
   删钮让一位；字段40%/方式20%/值40% 等比）；值区二级输入（指定日期/天数）仍在值格内纵向堆叠；
   .secrow（时间范围配置列表行，非条件行）豁免 */
.fltop{display:grid;grid-template-columns:52px 2fr 1fr 2fr 30px 20px;align-items:start;gap:6px}
.flrow.secrow .fltop{display:flex;align-items:center;gap:8px}
.flconj{flex:none;width:52px;border:1px solid var(--line-strong);border-radius:var(--r-md);padding:var(--sp-8) var(--sp-2);
  font-size:12px;color:var(--t1);background:var(--bg);font-family:var(--font-ui)}
.flconj.fix{border:none;background:none;text-align:center;padding:var(--sp-8) 0;color:var(--t3)}
.flsel{flex:1;min-width:0;border:1px solid var(--line-strong);border-radius:var(--r-md);padding:var(--sp-8) var(--sp-2);
  font-size:12px;color:var(--t1);background:var(--bg);font-family:var(--font-ui)}
/* 2610X-S4 把手归一：flhandle 由文本字符⋮⋮换 #i-menu 图标（与 .qhandle 同款），热区 20px */
.flhandle{flex:none;width:20px;display:flex;align-items:center;justify-content:center;color:var(--t3);
  cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
.flhandle .ic{width:16px;height:16px}
.fldel{flex:none;width:30px;height:30px;border:none;background:none;color:var(--t3);
  display:flex;align-items:center;justify-content:center;padding:0}
.fldel .ic{width:15px;height:15px}
.flval{min-width:0}
.flval>*+*{margin-top:6px} /* 值区二级输入（指定日期/天数）与值钮的行距 */
.flval .fchips{min-height:0}
.flnum,.fltxt{width:100%;border:1px solid var(--line-strong);border-radius:var(--r-lg);padding:var(--sp-8) var(--sp-10);
  font-size:13px;color:var(--t1);background:var(--bg);font-family:var(--font-ui);outline:none}
.flhint{font-size:12px;color:var(--t3)}
.fladd{width:100%;border:1px dashed var(--line-strong);background:none;border-radius:var(--r-lg);
  padding:10px;font-size:13px;color:var(--t2);font-family:var(--font-ui);margin-top:2px}
/* C段值下拉锚钮（2610b：等于/不等于单选、包含/不包含多选，点开 prow 勾选面板；
   2610e 反馈2：width:100% 撑满值区行——原 flex:1 在块级 .flval 里无效，APP 端缩成内容宽） */
.flvalbtn{flex:1;width:100%;min-width:0;text-align:left;border:1px solid var(--line-strong);border-radius:var(--r-md);
  padding:var(--sp-8) var(--sp-24) var(--sp-8) var(--sp-10);font-size:12px;color:var(--t1);background:var(--bg);font-family:var(--font-ui);
  position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.flvalbtn::after{content:'▾';position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--t3);font-size:11px}
.flvalbtn:not(.filled){color:var(--t3)}
/* A段固定「日期」（时间范围编辑器） */
.fldate{flex:none;width:74px;text-align:center;color:var(--t2);background:var(--gray-10)}
/* 时间范围配置列表行（名称+摘要+···；长按拖柄排序与卡头联动） */
.secrow{padding:12px 10px}
.secrow .hcname{font-size:13px;font-weight:700;color:var(--t1);flex:none}
.secrow .hcsub{flex:1;min-width:0;font-size:12px;color:var(--t3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* WEB停靠弹层页头统一 L4 口径（2610c 需求2）：几何已在 .dshd 基础态（2610f 元素11 换代，
   APP/WEB 同规范），此处只留停靠态页头透明与重建件（pagettl/dback/dsok 文本档）微调 */
.phone.ldesk #hmCustom .dshd,.phone.ldesk #hmAssign .dshd,.phone.ldesk #mOrg .dshd,
.phone.ldesk #mExe .dshd,.phone.ldesk #mDate .dshd{background:transparent}
.phone.ldesk .dshd .pagettl{font-size:20px;font-weight:700;line-height:24px;color:var(--t1);padding:0}
.phone.ldesk .dshd .wicon.dback{width:40px;height:40px}
.phone.ldesk .dshd .wicon .ic{width:24px;height:24px}
.phone.ldesk .dshd .dsok{width:auto;height:auto;font-size:13px;padding:var(--sp-6) var(--sp-10)}
/* 条件行值格紧凑内边距（ldesk 值区 2fr 较窄） */
.phone.ldesk #hmFlList .flval .flnum,.phone.ldesk #hmFlList .flval .fltxt{padding:7px 8px}
/* 2610c 需求6：保存配置（左）+添加条件（右）双钮行 */
.flacts{display:flex;gap:8px;margin-top:2px}
.flacts .fladd{flex:1;margin-top:0;width:auto}
.flacts .flsave{border-style:solid;color:var(--primary);border-color:var(--primary)}

.fchips2{display:flex;gap:6px;flex-wrap:wrap;padding:0 2px 8px}
.fchips2 .chip{padding:var(--sp-4) var(--sp-12);font-size:12px}
.dl{display:flex;align-items:center;gap:10px;padding:8px 2px;border-radius:var(--r-md)}
.dl.clk{cursor:pointer}
.dl.clk:active{background:var(--primary-soft)}
.dl+.dl{border-top:1px solid var(--line)}
.dl .dtx{font-size:11px;color:var(--t3);width:52px;flex:none;font-variant-numeric:tabular-nums}
.dl .dtx.red{color:var(--risk);font-weight:600}
.dl .n{flex:1;min-width:0}
.dl .n .t1x{font-size:12px;color:var(--t1);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl .n .t2x{font-size:11px;color:var(--t3);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dl .a{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;flex:none}
.dl .a.neg{color:var(--sec-70)}
/* 明细页状态徽标（原类名 .tt 与任务行标题冲突，曾把标题压成 10.5px——2026-09-01 改名 .dtag） */
.dtag{font-style:normal;font-size:10.5px;margin-left:var(--sp-4);white-space:nowrap}
.dtag.r{color:var(--risk);font-weight:500}
.dtag.g{color:var(--good-tx)}
.dtag.b{color:var(--brand-70)}
.dtag.gy{color:var(--gray-50)}
:root[data-theme="dark"] .dtag.g{color:var(--good-bright)}
.edt{font-style:normal;font-size:10.5px;color:var(--primary);margin-left:var(--sp-6)}
.addt{width:24px;height:24px;border-radius:var(--r-md);border:1px solid var(--line-strong);background:none;color:var(--primary);
  font-size:15px;cursor:pointer;flex:none;line-height:1;font-family:var(--font-ui);padding:0}
.dempty{margin:16px;padding:32px 16px;text-align:center;color:var(--t3);font-size:var(--fs-body);
  display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:160px}
.dempty b{font-size:var(--fs-body-lg);color:var(--t2);margin-bottom:6px;font-weight:600}
.dempty>.ic{width:34px;height:34px;opacity:.4;margin-bottom:10px;flex:none}
.dempty>.pbtn{width:auto;min-width:140px;flex:none;margin-top:14px;padding:0 20px;font-size:var(--fs-body)}
.kv{display:flex;gap:var(--sp-12);padding:var(--sp-8) var(--sp-2);font-size:12px}
.kv+.kv{border-top:1px solid var(--line)}
.kv .k{width:72px;flex:none;color:var(--t3)}
.kv .v{flex:1;min-width:0;color:var(--t1);word-break:break-all;line-height:1.5}
/* 编辑表单（商机修订，输入态） */
.frm{background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);padding:8px 14px;margin-bottom:12px}
/* 2610X-S8 拍板一：表单行距标准化 12px（老板元素6/7：行 padding 8→6，可见行距 16→12） */
.fr{display:flex;align-items:center;gap:var(--sp-12);padding:var(--sp-6) 0}
.fr .k{width:76px;flex:none;font-size:13px;color:var(--t3)}
.fr .v{flex:1;min-width:0}
/* 输入型字段统一盒式输入框：每行同高（38px），替代下划线，更整洁 */
.fr input.fin,.fr textarea.fin{width:100%;box-sizing:border-box;height:38px;border:1px solid var(--line-strong);outline:none;
  background:var(--bg);font-size:14px;color:var(--t1);font-family:var(--font-ui);
  padding:0 var(--sp-12);border-radius:var(--r-md)}
.fr input.fin:focus,.fr textarea.fin:focus{border-color:var(--primary)}
.fr input.fin[readonly],.fr textarea.fin[readonly]{cursor:pointer}
.fchips{display:flex;flex-wrap:wrap;gap:6px;min-height:38px;align-items:center}
.fchips .chip{padding:var(--sp-4) var(--sp-10);font-size:12px}
/* 2610X-S7 按钮规范：主按钮 42px 高 + 16px 圆角（--r-2xl，参考设置卡），底色/字不变（老板元素2） */
.saveb{width:100%;border:none;background:var(--primary);color:var(--on-primary);border-radius:var(--r-2xl);padding:10px 14px;min-height:42px;font-weight:600;
  font-size:var(--fs-body-lg);font-weight:600;cursor:pointer;font-family:var(--font-ui)}
/* 主题色通铺（bgmode-dark）时页面底色=primary，主按钮若同色会“只剩文字”；
   白底主题色字保证主操作可见（APP端组织页 2026-10-17 实拍） */
.phone.bgmode-dark .saveb{background:var(--on-dark);color:var(--primary);box-shadow:var(--shadow-card)}
.phone.bgmode-dark .saveb:active{background:var(--gray-10)}
/* L4 编辑页表单规范件（2610h 组织模块换代首用）：必填星/多行输入/错误态/行内校验错误行
   ——校验错误唯一载体=行内 .ferr（11px，对齐控件列 76+12），toast 只做结果反馈；
   次操作胶囊钮 .pbtn（详情页动作行与主钮 .btn-p/.saveb 同行搭配） */
.fr .k .req{color:var(--destructive);font-style:normal;margin-left:var(--sp-2)}
.fr textarea.fin{height:auto;min-height:76px;padding:var(--sp-8) var(--sp-12);resize:none;line-height:1.5}
.fr input.fin.bad,.fr textarea.fin.bad{border-color:var(--destructive)}
.ferr{margin:0 0 8px 88px;font-size:11px;color:var(--destructive);line-height:16px}
/* 2610X-S7 按钮规范：pbtn 46→42px + 16px 圆角（两处 .pbtn 定义同步改，后档为打卡渐变钮） */
.pbtn{flex:1;min-height:42px;border:1px solid var(--line-strong);background:none;color:var(--t1);
  border-radius:var(--r-2xl);font-weight:600;font-size:var(--fs-body);cursor:pointer;font-family:var(--font-ui);padding:0 14px}
.pbtn:active{background:var(--gray-10)}
:root[data-theme="dark"] .pbtn:active{background:var(--gray-70)}
/* L4 全屏页内容限宽（2610h 组织页首用）：WEB 常规形态二级页全屏铺开时表单/列表居中限宽 860，
   避免分段器/通栏按钮拉伸到全宽；ldesk 停靠面板（≤640）与 APP 端（430）窄于此值，无副作用 */
.narrowpage{max-width:860px;margin:0 auto;width:100%}
/* --- 项目库 --- */
/* 2610X-S7 元素1：项目库搜索条 46px（单条控件高度统一 46 口径） */
.hsbar{margin:0 16px 10px;display:flex;align-items:center;gap:8px;background:var(--card);border-radius:var(--r-xl);
  box-shadow:var(--shadow-card);padding:0 14px;height:46px}
.hsbar svg{width:15px;height:15px;color:var(--t3);flex:none}
.hsbar input{flex:1;border:none;background:none;outline:none;font-size:var(--fs-body);color:var(--t1);font-family:var(--font-ui)}
.filterrow{display:flex;align-items:center;justify-content:space-between;padding:0 20px 10px;position:relative}
.filterrow .fseg{display:flex;align-items:center;gap:7px}
.filterrow .fs{font-size:13px;color:var(--t3);cursor:pointer}
.filterrow .fs.on{color:var(--primary);font-weight:600}
.filterrow .fsep{color:var(--gray-20);font-size:13px}
.filterrow .fdrop{font-size:13px;color:var(--t2);cursor:pointer;user-select:none}
.filterrow .fdrop::after{content:" ▾";font-size:10.5px;color:var(--t3)}
.cl{padding:12px 2px 12px}
.cl+.cl{border-top:1px solid var(--line)}
.cl .cl1{display:flex;align-items:center;gap:8px}
.cl .cl1 .no{font-size:12px;font-weight:600;color:var(--t1);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cl .cl1 .amt{font-size:12px;color:var(--t2);font-weight:600;font-variant-numeric:tabular-nums;flex:none}
.cl .chips{margin:var(--sp-2) 0 0;font-size:11px;color:var(--t3)}
/* 时间轴对齐（2026-09-08 老板反馈13-15）：轨道/标签与所在容器内容缘同宽（margin 0），
   行标题、首末节点、首末标签、右缘金额四线同一条基准线；首末点墨迹(≤4.5px)自然探入
   容器内边距，不再额外缩进 8px（旧 8px 缩进正是"没有左对齐"的根因） */
.mtrack{position:relative;height:2px;border-radius:1px;background:var(--gray-10);margin:12px 0 10px}
.mfill{position:absolute;left:0;top:0;bottom:0;border-radius:1px;background:linear-gradient(90deg,var(--primary-hover),var(--primary))}
.mdot{position:absolute;top:50%;transform:translate(-50%,-50%);border-radius:50%}
.mdot.done{width:6px;height:6px;background:var(--primary);border:1.5px solid var(--primary)}
.mdot.cur{width:9px;height:9px;background:var(--card);border:2px solid var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.mdot.todo{width:5px;height:5px;background:var(--card);border:1px solid var(--gray-30)}
.mlabels{position:relative;height:15px;margin:0}
.mlabels span{position:absolute;top:0;white-space:nowrap;font-size:11px;color:var(--t3)}
.mlabels span:first-child{text-align:left}
.mlabels span:last-child{text-align:right}
.mlabels span.on{color:var(--t2);font-weight:600}
/* --- 弹层：自定义期间 / 派任务（盖在 dpage 之上，z 提级；高度自适应） --- */
.dsmask.hi{z-index:95}
.dsheet.auto{height:auto;max-height:88%;overflow-y:auto}
.qcap{font-size:var(--fs-caption);color:var(--t3);margin:6px 0 10px}
.qchips{display:flex;flex-wrap:wrap;gap:8px}
.dates{display:flex;align-items:center;gap:10px;margin-top:16px}
/* 2610X-S8 拍板一：单行输入统一 38px（日期区间输入原 padding 撑出 44px） */
.dates input{flex:1;height:38px;border:1px solid var(--line-strong);border-radius:var(--r-md);padding:0 10px;font-size:14px;color:var(--t1);
  font-family:var(--font-ui);background:var(--card)}
.dates span{color:var(--t3);font-size:var(--fs-caption)}
.dacts{display:flex;gap:var(--sp-10);margin-top:var(--sp-16)}
/* 2610X-S7 按钮规范：派任务取消/保存双钮 42px + 16px 圆角 */
.dacts .ghost{flex:1;border:1px solid var(--line-strong);background:none;border-radius:var(--r-2xl);padding:var(--sp-10) var(--sp-12);font-size:var(--fs-body);
  color:var(--t2);cursor:pointer;font-family:var(--font-ui);min-height:42px}
.dacts .main{flex:2;border:none;background:var(--primary);border-radius:var(--r-2xl);padding:var(--sp-10) var(--sp-12);font-size:var(--fs-body);color:var(--on-dark);
  font-weight:600;cursor:pointer;font-family:var(--font-ui);min-height:42px}
/* 派任务表单行（2610X-S8：行距 12px 与 .fr 同规） */
.asgrow{display:flex;align-items:flex-start;gap:12px;padding:var(--sp-6) 0}
.asgrow .k{width:76px;flex:none;font-size:13px;color:var(--t3);padding-top:var(--sp-8)}
.asgrow .v{flex:1;min-width:0}
.asgrow input.ain{width:100%;border:none;outline:none;background:none;font-size:15px;color:var(--t1);font-family:var(--font-ui);padding:6px 0}
/* 选择器（编辑页内关联字段：搜索 + 列表） */
.picker{margin-top:6px;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.picker .pks{border:none;outline:none;background:var(--card);width:100%;padding:8px 12px;font-size:13px;color:var(--t1);font-family:var(--font-ui);border-bottom:1px solid var(--line)}
.picker .pkl{max-height:180px;overflow-y:auto;background:var(--card)}
.picker .pkl .pit{padding:var(--sp-8) var(--sp-12);font-size:13px;color:var(--t2);cursor:pointer}
.picker .pkl .pit:active{background:var(--primary-soft)}
.picker .pkl .pit.on{color:var(--primary);font-weight:600}
/* 首页次行（wsub）与 task tab 角标 */
.wsub{font-size:var(--fs-caption);color:var(--t3);padding:0 var(--sp-20) var(--sp-12);display:flex;align-items:center;gap:var(--sp-4)}
.wtop .wsub{flex:none;margin:0;padding:0;font-size:14px} /* 迁入页头右侧：按页头功能文字 14px 档 */
.wsub i{width:6px;height:6px;border-radius:50%;background:var(--success);display:inline-block;flex:none}
.phone.bgmode-dark #pg-home .wsub{color:rgba(255,255,255,.65)}
.tbadge{position:absolute;top:7px;left:calc(50% + 8px);min-width:15px;height:15px;border-radius:8px;background:var(--destructive);
  color:var(--on-dark);font-size:9.5px;line-height:15px;padding:0 4px;font-weight:700;text-align:center}

/* ================= 员工端执行侧组件（新增登记清单见文件尾 STAFF_COMPONENTS 注释） ================= */
.ovgrid{margin:var(--sp-2) var(--sp-16) var(--sp-14);background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);display:grid;grid-template-columns:repeat(4,1fr);padding:var(--sp-14) 0}
.ovcell{width:100%;text-align:center;cursor:pointer;border:none;background:none;font-family:var(--font-ui);padding:0}
.ovcell b{display:block;font-size:20px;font-weight:700;color:var(--t1)}
.ovcell span{font-size:var(--fs-caption);color:var(--t3)}
.ovcell.warn b{color:var(--warn-tx)}
.ovcell.ok b{color:var(--good-tx)}
/* ===== §2.5 五tab：通知中心（.nrow 族）/ 应用工作台（.appgh+.appgrid 复用 .ovgrid/ovcell）/ 语音录入态（#vRec） ===== */
.nrow{display:flex;gap:var(--sp-12);align-items:center;padding:var(--sp-10) var(--sp-16);border-bottom:1px solid var(--line);cursor:pointer;line-height:1.6}
.nrow:active{background:var(--primary-soft)}
.nrow:last-child{border-bottom:none}
/* 应用工作台 v2（老板定稿：首页卡片分组样式复用 + 方形圆角图标） */
.appgrid2{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-16) var(--sp-8);padding:var(--sp-14) var(--sp-12) var(--sp-16)}
.appcell{display:flex;flex-direction:column;align-items:center;gap:var(--sp-8);cursor:pointer;border:none;background:none;font-family:var(--font-ui);padding:0}
.appico{width:50px;height:50px;border-radius:var(--r-xl);display:flex;align-items:center;justify-content:center;color:var(--on-primary);flex:none}
.appico .ic{width:26px;height:26px} /* 50×60%=30 上限内 */
.appcell>span:last-child{font-size:12px;font-weight:500;color:var(--t1);max-width:50px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;line-height:1.2}
/* 应用选中态（老板 09-06 反馈③）：当前所在页面格子亮主题色环+文字着色，box-shadow 不占布局 */
.appcell.on .appico{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--primary)}
.appcell.on>span:last-child{color:var(--primary);font-weight:700}
.phone.ldesk #mAppCfg.on{left:auto;right:0;width:var(--rpw,400px);background:transparent;align-items:stretch;justify-content:flex-end;padding:0;z-index:62}
.phone.ldesk #mAppCfg.on .sheet{width:100%;max-height:none;height:100%;border-radius:0;border-left:1px solid var(--line);
  box-shadow:none;transform:none;transition:none;background:var(--card);display:flex;flex-direction:column;overflow-y:auto;padding:var(--sp-16)}
.phone.ldesk #mLeave.on,.phone.ldesk #mRbac.on{left:auto;right:0;width:var(--rpw,400px);background:transparent;align-items:stretch;justify-content:flex-end;padding:0;z-index:62}
.phone.ldesk #mLeave.on .sheet,.phone.ldesk #mRbac.on .sheet{width:100%;max-height:none;height:100%;border-radius:0;border-left:1px solid var(--line);
  box-shadow:none;transform:none;transition:none;background:var(--card);display:flex;flex-direction:column;overflow-y:auto;padding:var(--sp-16)}
/* U8 表单行内校验错误 */
.ferr{display:none;font-size:11px;color:var(--destructive);margin:4px 2px 0}
.ferr.on{display:block}
.nico{width:34px;height:34px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;color:var(--on-dark);flex:none}
.nico .ic{width:18px;height:18px}
.nbody{flex:1;min-width:0;display:block}
.ntop{display:flex;align-items:baseline;gap:var(--sp-8)}
.ntt{flex:1;min-width:0;display:block;font-size:14px;font-weight:600;color:var(--t1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ntx{display:block;font-size:12px;color:var(--t3);margin-top:var(--sp-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ntime{flex:none;font-size:11px;color:var(--t3)}
.ndot{width:8px;height:8px;border-radius:50%;background:var(--destructive);flex:none;margin-top:var(--sp-6)}
.vRec{position:fixed;inset:0;z-index:97;background:rgba(17,16,24,.55);display:none}
.vRec.on{display:block}
.vRecBox{position:absolute;left:50%;top:36%;transform:translate(-50%,-50%);text-align:center;color:var(--on-dark);width:82%}
.vWave{display:flex;gap:4px;justify-content:center;align-items:center;height:34px}
.vWave i{width:4px;height:8px;border-radius:2px;background:var(--on-dark);animation:vwav .9s ease-in-out infinite}
.vWave i:nth-child(2n){animation-delay:.14s}
.vWave i:nth-child(3n){animation-delay:.28s}
@keyframes vwav{0%,100%{height:7px}50%{height:30px}}
.vTxt{margin-top:12px;font-size:14px}
.vHint{margin-top:4px;font-size:11px;opacity:.72}
.vFoot{position:absolute;bottom:calc(70px + env(safe-area-inset-bottom,0px));left:0;right:0;text-align:center;color:var(--on-dark);font-size:11px;opacity:.66}
html.noanim .vWave i{animation:none;height:12px}
.punchwrap{padding:2px 16px 8px}
.attbar{height:3px;border-radius:var(--r-2xl) var(--r-2xl) 0 0;background:var(--grad-brand)}
.plocbig .wrkr{display:flex;align-items:center;gap:6px;flex:none}
.attcfg{width:16px;height:16px;color:var(--t3);cursor:pointer}
.plocbig{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 4px 10px;font-size:15px;font-weight:700;color:var(--t1)}
.plocbig.out{font-size:13px;color:var(--t3);font-weight:500}
.plocbig .q{color:var(--primary)}
.plocbig .wrk{display:flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--t3);flex:none;font-variant-numeric:tabular-nums}
.pbtns{display:flex;gap:10px;padding:2px 4px 6px}
.pbtn{flex:1;height:42px;border-radius:var(--r-2xl);border:none;font-family:var(--font-ui);font-weight:700;font-size:15px;
  color:var(--on-dark);background:var(--grad-brand);box-shadow:var(--shadow-primary);cursor:pointer}
.pbtn.out{background:linear-gradient(135deg,var(--sec-40),var(--sec-70));box-shadow:0 3px 4px -1px rgba(217,119,6,.45)}
.pbtn:disabled{background:var(--gray-20);color:var(--t3);box-shadow:none;cursor:not-allowed}
.pbtn .pt{font-size:11px;font-weight:500;opacity:.85}
.punchhint{font-size:11px;color:var(--t3);min-height:14px;padding:0 4px 4px;text-align:center}
.autorow{display:flex;align-items:center;gap:10px;padding:8px 4px 6px}
.autorow .at1{flex:1;min-width:0;font-size:13px;font-weight:600}
.autorow .at1 small{display:block;font-size:11px;color:var(--t3);font-weight:400;margin-top:1px}
.late{display:flex;align-items:center;gap:6px;margin:6px 4px 2px;padding:9px 12px;border-radius:var(--r-md);
  background:var(--risk-fill);color:var(--risk);font-size:12px;font-weight:600;cursor:pointer}
:root[data-theme="dark"] .late{background:rgba(220,38,38,.16)}
.attline{display:flex;align-items:center;gap:8px;padding:9px 4px;font-size:12px;color:var(--t2);border-top:1px solid var(--line)}
.attline .adot{width:7px;height:7px;border-radius:50%;background:var(--good-tx);flex:none}
.attline.lv .adot{background:var(--sec-50)}
.attline .at{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.attline .tm{font-variant-numeric:tabular-nums;color:var(--t3);flex:none}
/* 卡头右侧分类计数（通知卡头 所有/任务/审批 用） */
.tseg .ts .cnt{font-size:11px;color:var(--t3);font-style:normal;font-weight:500}
.tseg .ts.on .cnt{color:var(--primary)}
/* GPS 窄条状态地图（打卡卡卡头下方，09-06 老板） */
.gpsmap{position:relative;height:96px;margin:0 16px;border-radius:var(--r-lg);overflow:hidden;background:var(--gray-5)}
:root[data-theme="dark"] .gpsmap{background:var(--gray-90)}
.gpsmap .tiles{position:absolute;left:0;top:0;right:0;bottom:0}
.gpsmap .tiles img{position:absolute;width:256px;height:256px;max-width:none;opacity:0;transition:opacity .3s}
.gpsmap .tiles img.ld{opacity:1}
.gpsmap .mark{position:absolute;left:50%;top:50%;width:13px;height:13px;border-radius:50%;background:var(--primary);border:2.5px solid var(--on-dark);box-shadow:0 1px 6px rgba(0,0,0,.45);transform:translate(-50%,-50%);z-index:2}
.gpsmap .mark::after{content:"";position:absolute;inset:-7px;border-radius:50%;border:2px solid var(--primary);animation:pulse 1.8s ease-out infinite}
.gpsmap.nogps .mark{display:none}
@keyframes pulse{0%{transform:scale(.5);opacity:.65}100%{transform:scale(1.5);opacity:0}}
html.noanim .gpsmap .mark::after{animation:none;opacity:.4}
.gpsmap .st{position:absolute;left:8px;bottom:6px;z-index:3;font-size:10.5px;color:var(--on-dark);background:rgba(0,0,0,.52);padding:var(--sp-2) var(--sp-8);border-radius:var(--r-pill)}
.gpsmap .fail{position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--t3);
  background-image:radial-gradient(var(--gray-20) 1px,transparent 1px);background-size:14px 14px}
:root[data-theme="dark"] .gpsmap .fail{background-image:radial-gradient(var(--gray-70) 1px,transparent 1px)}
.rkno{width:26px;height:26px;border-radius:50%;background:var(--gray-10);color:var(--t2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:none}
.rkno.first{background:var(--warn-fill);color:var(--warn-tx)}
.stagebox{position:relative;background:#101116;border-radius:14px;height:230px;overflow:hidden;display:flex;align-items:center;justify-content:center}
.stagebox img{width:100%;height:100%;object-fit:cover}
.wmtext{position:absolute;left:10px;bottom:10px;color:var(--on-dark);font-size:11px;line-height:1.7;text-shadow:0 1px 3px rgba(0,0,0,.9);pointer-events:none}
.picgrid{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0 2px}
.pic{width:72px;height:72px;border-radius:10px;object-fit:cover;border:1px solid var(--line);position:relative}
.pic img{width:100%;height:100%;object-fit:cover;border-radius:10px;display:block}
.pic .wmk{position:absolute;left:0;right:0;bottom:0;font-size:9.5px;color:var(--on-dark);background:rgba(0,0,0,.45);padding:1px 4px;border-radius:0 0 10px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.picx{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;background:var(--gray-100);color:var(--on-dark);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer}
:root[data-theme="dark"] .picx{background:var(--gray-0);color:var(--gray-100)}
.picadd{width:72px;height:72px;border-radius:10px;border:1.5px dashed var(--line-strong);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:2px;color:var(--t3);cursor:pointer;background:none;font-size:10.5px;font-family:var(--font-ui)}
.picadd .ic{width:20px;height:20px}
/* 2610X-S8 元素8（拍板一）：弹层表单行行距 12px + 分割线全宽出血（负 margin 抵消 .sheet 16px 页边距） */
.frow{display:flex;align-items:flex-start;gap:10px;padding:var(--sp-6) var(--sp-16);margin:0 calc(var(--sp-16) * -1);border-bottom:1px solid var(--line)}
.frow:last-child{border-bottom:none}
.frow .fl{width:58px;flex:none;font-size:13px;color:var(--t3);padding-top:9px}
.frow .fv{flex:1;min-width:0}
.frow textarea{width:100%;border:1.5px solid var(--line);background:var(--card);border-radius:var(--r-md);padding:9px 10px;
  font-size:var(--fs-body);font-family:var(--font-ui);color:var(--t1);outline:none;resize:none;min-height:56px}
.frow textarea:focus{border-color:var(--primary)}
.sysrow{display:flex;align-items:center;gap:10px;padding:8px 2px;font-size:12px}
.sysrow+.sysrow{border-top:1px solid var(--line)}
.sysrow .sk{flex:none;width:76px;color:var(--t3)}
.sysrow .sv{flex:1;font-weight:600;font-variant-numeric:tabular-nums}
.pbar{height:6px;border-radius:3px;background:var(--gray-10);overflow:hidden;flex:1}
.pbar i{display:block;height:100%;background:var(--primary);border-radius:3px}
.concl{margin:8px 2px 2px;padding:9px 12px;border-radius:var(--r-md);background:var(--warn-fill);color:var(--warn-tx);font-size:12px;font-weight:600;line-height:1.6}
:root[data-theme="dark"] .concl{background:rgba(217,119,6,.18);color:var(--warn-bright)}
.qrwrap{display:flex;flex-wrap:wrap;gap:8px;padding:8px 0 2px}
.statchip{font-size:11px;font-weight:600;padding:2px 8px;border-radius:var(--r-pill);background:var(--primary-soft);color:var(--primary)}

/* ================= U1 页面壳（2610h 第一批，2026-10-17；2026-10-18 U1b-U1f 通用化） =================
   两档页头高度：APP端 ≤540 为 55px；WEB端 ≥541 保持 68px（walk_desktop F17 断言 68）。
   页头可见左端=卡片左缘 16px（padding 8 + 40px 槽 + 2px 间隙），标题 50px；右端文字/按钮热区到卡片右缘。
   卡内可视内容左右各 18px：卡头图标 34/标题 66，内容 34/右 34；应用网格与无图标控件保留自身几何。
   任务日历行距/图表内衬沿用工作台验收口径（U1e/U1f）。 */
.wtop,.subtop,.dtop,.shead{padding-left:var(--sp-8);gap:var(--sp-2)}
.dtop .wicon,.shead .wicon{width:40px;height:40px}
.edhd,.sethd{min-height:68px;padding:calc(16px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 16px 12px 8px;gap:2px}
.edhd .wicon,.sethd .wicon{width:40px;height:40px}
.edhd .edt{font-size:20px;line-height:24px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hcard-hd{padding-left:18px;padding-right:18px;gap:var(--sp-10)}
.hcard-hd .hd-ico{margin-left:0;width:22px;height:22px;border-radius:6px}
.hcard-hd .hd-ico svg{width:13px;height:13px}
.hcard-hd.sm{padding-left:18px;padding-right:18px;gap:var(--sp-10)}
.hrow{padding-left:var(--sp-12);padding-right:var(--sp-12)}
.ghd,.pitem,.hb{padding-left:18px;padding-right:18px}
.dbody .dsec2{padding-left:18px;padding-right:18px}
.dbody .dlist{padding-left:var(--sp-16);padding-right:var(--sp-16)}
.dbody .dlist>.cardhd{margin-left:-16px;margin-right:-16px;padding-left:18px;padding-right:18px}
.setrow2{padding-left:18px;padding-right:18px}
.profile{padding-left:18px;padding-right:18px}
.frm{padding-left:18px;padding-right:18px}
.kv{padding-left:0;padding-right:0}
.listcard .trow:not(.simple) .tcard{padding-left:18px;padding-right:18px}
.tmain .tmeta{margin-left:32px}
.orgbody{margin-left:var(--sp-20)}
.listcard .trow.simple .tcard{padding-left:18px;padding-right:18px}
.morerow{padding-left:18px;padding-right:18px}
@media (min-width:541px){
  .listcard .trow:not(.simple) .tthead{gap:var(--sp-14)}
}
@media (max-width:540px){
  .wtop,.subtop,.dtop,.shead{min-height:55px;padding:calc(8px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 16px 7px 8px}
  .edhd,.sethd{min-height:55px;padding:calc(8px + max(env(safe-area-inset-top,0px),var(--sa-top,0px))) 12px 7px 8px}
}
/* 任务日历卡（首页）：卡头/网格 18；行距按可见文字 12.5/12.5/13（U1f） */
#pg-home .tcnav,#pg-home .tcmhead,#pg-home .tcmonth,#pg-home .tcweek{padding-left:18px;padding-right:18px}
#pg-home .tcmhead{padding-top:5.5px}
#pg-home .tcmonth{row-gap:0;padding-bottom:var(--sp-2)}
#pg-home .tcmonth .tcmcell:nth-child(n+8){margin-top:-4px}
#pg-home .tcund{margin-left:0;margin-right:0;padding-left:18px;padding-right:18px}
#pg-home .tcnav .tcnv{font-weight:700}
/* 首页图表内层卡：外层 18、内衬 12（U1c） */
#pg-home .hccard{margin-left:18px;margin-right:18px}
#pg-home .hchd,#pg-home .hcbody{padding-left:var(--sp-12);padding-right:var(--sp-12)}
#pg-home .dchart{padding-left:0;padding-right:0}

/* U3 弹窗动作行覆盖：必须晚于旧 .entfoot/.dlgact 档，确保主/ghost/danger 三态生效。
   2610X-S7：弹窗按钮 36px + 16px 圆角（老板元素3 定档） */
#dlgBox .dlgact{display:flex;justify-content:flex-end;gap:var(--sp-10);margin-top:var(--sp-16);flex-wrap:wrap}
#dlgBox .dlgact .dlgbtn{flex:none;min-height:36px;padding:0 18px;border-radius:var(--r-2xl);background:var(--primary);color:var(--on-primary);border:1px solid var(--primary);font-weight:600}
#dlgBox .dlgact .dlgbtn.ghost{background:none;color:var(--t2);border:1px solid var(--line-strong)}
#dlgBox .dlgact .dlgbtn.danger{background:var(--destructive);border:1px solid var(--destructive);color:var(--on-primary)}
#dlgBox .dtitle2{font-size:18px;font-weight:700;margin:0 0 var(--sp-14)}
#dlgBox .ferr{margin:0 0 8px 88px}

/* 2026-10-18 批量修正：弹窗表单字号/标题间距 + 组织页窄容器放宽 + 问号热区 */
#dlgBox .fr .k{font-size:14px}
#dlgBox h3{margin-bottom:8px}
#dlgBox .fr:first-of-type{padding-top:0}
#dlgBox .dlgact .dlgbtn{min-height:36px}
@media (min-width:1200px){.phone.ldesk .narrowpage{max-width:none}}
.qmark{position:relative}
.qmark::after{content:'';position:absolute;inset:-5px}
#pplQ{padding-left:18px;padding-right:18px}

/* ================= 批量选择（2610L）：多选圈/行选中/批量操作条/右栏面板/组拖拽任务集条 =================
   入口：配置菜单「批量选择」（两端通用）+ WEB 端 Ctrl/Cmd/Shift 点行隐式多选。
   状态壳=#phone.batching；视图可用域与动作见 task.js 批量段。 */

/* 页头批量态：搜索/配置/新增让位，退出钮亮出（侧栏钮保留——组拖拽落点在侧栏） */
#tbMsExit{display:none}
#phone.batching .wtop .wtop-act{display:none}
#phone.batching #tbMsExit{display:flex}

/* 选中指示=完全复用既有图标（2610L 修3，位置一律不变）：
   任务方框选中即完成态（.ck.on+i-cksq-on，ckHTML 批量分支）；组织行保留小灰点，选中点色跟随选中色 */
.orgline.msel .odot{background:var(--primary)}

/* 行选中态（修3/修5）：与单选打开态(.sel)同款浅灰底——无竖条/紫底/让位 padding，保持简洁；
   组织模式高亮挂**组卡级**（修5：`.trow[data-org].msel .tcard` 整卡，与任务模式 .tcard 同构），
   orgline 行本身零样式变化（原行级负 margin/加高废止——选中前后尺寸完全不变，无感高亮） */
#phone.batching #taskArea .trow.msel .tcard{background:var(--gray-10)}
:root[data-theme="dark"] #phone.batching #taskArea .trow.msel .tcard{background:var(--gray-70)}
/* 选中行小灰点=选中色（位置不变，指示行级归属） */
.orgline.msel .odot{background:var(--primary)}

/* 组拖拽：选中行整组收起（.gset-hide），任务集任务条贴指针跟随 */
.gset-hide{display:none}
.gsetbar{position:fixed;z-index:130;left:0;top:0;transform:translate(-50%,-50%);pointer-events:none;
  display:flex;align-items:center;gap:8px;height:44px;padding:0 18px;border-radius:var(--r-2xl);
  background:var(--card);box-shadow:var(--shadow-pop);color:var(--t1);
  font-size:var(--fs-body);font-weight:600;white-space:nowrap}
.gsetbar .ic{width:18px;height:18px;color:var(--primary);flex:none}

/* APP 批量操作条：浮于底栏上方；WEB 宽屏走 #rpanel 批量面板，不显示 */
.msbar{display:none;position:fixed;left:0;right:0;z-index:90;align-items:center;gap:var(--sp-4);
  bottom:calc(60px + env(safe-area-inset-bottom,0px));padding:var(--sp-4) var(--sp-10);
  background:var(--card);border-top:1px solid var(--line);box-shadow:var(--shadow-card)}
#phone.batching:not(.ldesk) .msbar{display:flex}
.msball{border:none;background:none;color:var(--primary);font-size:var(--fs-body);font-weight:600;
  padding:var(--sp-10) var(--sp-8);cursor:pointer}
.msbar .wicon{width:40px;height:40px}

/* WEB 右栏批量面板（复用 setcard/setrow2 排版语言） */
.rpb{padding:var(--sp-6) var(--sp-14) var(--sp-14);overflow-y:auto}
.rpb-hd{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-6) var(--sp-4) var(--sp-12);min-height:48px}
.rpb-hd b{font-size:var(--fs-title);font-weight:700;color:var(--t1)}
.rpb-hd .grow{flex:1}
.rpb-hint{font-size:var(--fs-caption);color:var(--t3);padding:0 var(--sp-4) var(--sp-10)}

/* ===== 渠道域（channel.js，方案 v2；词典 §3 渠道域表登记） ===== */
/* 详情卡头=应用中心 hcard-hd 同款（261028 老板走查：统计/商机/项目/兑现四卡头换 hcard-hd tint 档，
   统计卡头仅「统计」二字；卡头计数沿用 .cnt 12px 灰档，tseg 右靠） */
.hcard-hd .cnt{font-size:12px;color:var(--t3);font-weight:400;flex:none}
/* 子表卡 + 表格横滚容器 */
.ch-card{margin:0 0 var(--sp-14);background:var(--card);border-radius:var(--r-2xl);box-shadow:var(--shadow-card);overflow:hidden}
.ch-twrap{overflow-x:auto;border-top:1px solid var(--line)}
.ch-twrap::-webkit-scrollbar{height:6px}
.ch-twrap::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--t3) 38%,transparent);border-radius:3px}
.ch-twrap table.lxt-grid td{cursor:pointer}
.ch-twrap table.lxt-grid td:not(:last-child){min-width:56px}
/* 六指标等宽表（.ch-mtab，词典 §3 渠道域表）：统计卡内 .lxt-grid 变体——列宽均分、
   表头/数据全左对齐（261029 老板走查：对齐下方子表）、值行禁悬停不显可点 */
table.ch-mtab{table-layout:fixed}
table.ch-mtab th{white-space:normal;padding:var(--sp-10) var(--sp-6) var(--sp-10) var(--sp-14);line-height:1.5}
table.ch-mtab td{cursor:default;text-align:left}
table.ch-mtab tr:hover td{background:none}
table.ch-mtab td i{font-style:normal;font-size:11px;font-weight:400;color:var(--t3);margin-left:1px}
table.ch-mtab td.warn{color:var(--warn-tx)}
/* 子表统计行 .ch-fr（词典 §3 渠道域表）：单位列计数+金额列合计，其余列空；
   配色与普通单元格一致（无底色差异，仅字重加重——261029 老板走查） */
.ch-twrap tr.ch-fr td{cursor:default;font-weight:600;border-bottom:none}
.ch-twrap tr.ch-fr:hover td{background:none}
/* 组合选择框清除钮 .cbxclr（词典 §3 渠道域表）：选中后出现，点击清空回占位（261028 老板走查） */
.lxt-cbxbox .cbxclr{margin-left:auto;display:flex;align-items:center;color:var(--t3);cursor:pointer;padding:2px}
.lxt-cbxbox .cbxclr:hover{color:var(--t1)}
/* 行展开面板：概况 kv + 表单区 + 动作行（.lxt-actrow 复用）+ 待办任务行 */
.ch-xrow>td{cursor:default!important;background:var(--gray-5);border-bottom:1px solid var(--line-strong);
  padding:var(--sp-12) var(--sp-14)}
.ch-xrow>td:hover{background:var(--gray-5)}
.ch-kv{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--sp-6) var(--sp-12);margin-bottom:var(--sp-10)}
.ch-kv .kv{font-size:11px;color:var(--t3)}
.ch-kv .kv b{display:block;font-size:13px;color:var(--t1);font-weight:500;margin-top:1px}
.ch-xfrm .fr{padding:var(--sp-6) 0}
.ch-xacts{display:flex;gap:var(--sp-10);margin:var(--sp-12) 0 var(--sp-8)}
.ch-hint{font-size:12px;color:var(--t3);padding:var(--sp-4) 0;line-height:1.6}
.ch-note{font-size:11px;color:var(--t3);line-height:1.6;margin-top:var(--sp-8);text-align:center}
.ch-xsec{font-size:11px;font-weight:600;color:var(--t3);margin:var(--sp-10) 0 var(--sp-6)}
.ch-task{display:flex;align-items:flex-start;gap:var(--sp-8);padding:var(--sp-6) 0;cursor:pointer}
.ch-task:active{background:var(--primary-soft)}
.ch-task>.ic{width:18px;height:18px;color:var(--t3);flex:none;margin-top:1px}
.ch-task .tk{flex:1;min-width:0;font-size:13px;color:var(--t1);line-height:20px}
.ch-task .tdue{flex:none;font-size:11px;color:var(--t3);font-variant-numeric:tabular-nums;line-height:20px}
.ch-tchip{flex:none;font-size:11px;padding:2px 8px;border-radius:var(--r-pill);background:var(--primary-soft);
  color:var(--primary);font-weight:500;line-height:16px}
.ch-tchip.t2{background:var(--sec-10);color:var(--sec-70)}
.ch-tchip.t3{background:var(--gray-10);color:var(--gray-50)}
/* 表格内小件：待办 chip / 负值红 / 服务期分档 / 模式小标 / 数字列 */
.ch-todo{display:inline-flex;align-items:center;padding:var(--sp-2) var(--sp-8);border-radius:var(--r-pill);
  background:var(--sec-10);color:var(--sec-70);font-size:11px;font-weight:600;white-space:nowrap}
.ch-todo.z{background:var(--gray-10);color:var(--gray-50);font-weight:400}
.ch-num{font-variant-numeric:tabular-nums}
.ch-neg{color:var(--destructive);font-weight:600}
.ch-svc{font-variant-numeric:tabular-nums}
.ch-svc.soon{color:var(--warn-tx);font-weight:600}
.ch-svc.over{color:var(--destructive);font-weight:600}
.ch-mtag{display:inline-block;margin-left:4px;padding:1px 6px;border-radius:var(--r-pill);background:var(--sec-10);
  color:var(--sec-70);font-size:10.5px;font-weight:400}
.ch-mtag.z{background:var(--gray-10);color:var(--gray-50)}
/* 渠道页供位归零（立规：.dbody 16px 统一供位，层内不叠加——列表卡/六指标卡左右 margin 归零，
   上距交 .dbody padding-top 2px=页头→首内容铁律；搜索行同口径 2px 顶+46px 页面级搜索档） */
.chz-in0{margin:0 0 var(--sp-14)}
.chz-bar{display:flex;align-items:center;gap:var(--sp-10);padding:0 0 var(--sp-14)}
.chz-bar .tinput{flex:1;min-width:0;height:46px} /* 页面级搜索 46px 铁律档（searchwrap 同规） */
/* 列表行卡内对齐：.lrow 原生 2px 内距是知识库 .dlist（padding 3 12）语境档，
   渠道列表在 .listcard 直挂——行内距 14 与任务卡（tcard 10 14）对齐；chev 右缘同线 */
.chz-in0 .lrow{padding-left:var(--sp-14);padding-right:var(--sp-14)}
/* 明细子表卡内对齐：卡头/表格单元格/展开面板一条左缘线 14px（卡内缩进档）；
   APP 窄屏六指标均分列收紧为 4px（80px/列，13px 值不截断——261028 老板走查） */
.ch-twrap table.lxt-grid th .lxt-hc{padding-left:var(--sp-14);padding-right:var(--sp-14)}
.ch-twrap table.lxt-grid td{padding-left:var(--sp-14);padding-right:var(--sp-14)}
.ch-xrow>td{padding-left:var(--sp-14);padding-right:var(--sp-14)}
@media (max-width:540px){.ch-twrap table.ch-mtab th,.ch-twrap table.ch-mtab td{padding-left:var(--sp-4);padding-right:var(--sp-4)}}
/* 组织选择面板内搜索输入（.lxt-sellist 面板配套，复用组合选择框体系） */
.ch-sinp{width:calc(100% - 12px);margin:6px;height:34px;border:1px solid var(--line-strong);border-radius:var(--r-md);
  background:var(--card);color:var(--t1);font-size:13px;padding:0 var(--sp-8);outline:none;box-sizing:border-box}
.ch-sinp:focus{border-color:var(--primary)}
/* 对账单打印页（ch-stmt）：固定白底黑字打印介质——全块只用 gray 固定灰阶（不随主题翻转），
   261029 老板走查：原 var(--card) 暗色主题翻深、与文字同色=黑底黑字；打印只输出本卡（另存 PDF 即对账单）。
   版式：居中主标+粗下划刊头；六指标=单行表格（与详情统计卡同构）；段序段名=详情页同序（商机/项目/兑现）；
   h3 右侧 .srcn 标注数据表全名；表尾合计行粗体 */
.ch-stmt{background:var(--gray-0);color:var(--gray-100);border-radius:var(--r-sm);box-shadow:var(--shadow-pop);padding:28px 30px;
  font-size:11px;line-height:1.6}
.ch-stmt h2{font-size:17px;font-weight:700;text-align:center;letter-spacing:2px;color:var(--gray-100);margin:0 0 6px}
.ch-stmt .ch-smeta{text-align:center;font-size:10.5px;color:var(--gray-60);padding-bottom:10px;border-bottom:2px solid var(--gray-100);margin-bottom:12px}
.ch-stmt table.ch-ssum{width:100%;border-collapse:collapse;table-layout:fixed;margin-bottom:4px}
.ch-stmt table.ch-ssum th{border:1px solid var(--gray-20);background:var(--gray-10);padding:5px 7px;font-size:10.5px;font-weight:600;text-align:left;color:var(--gray-60)}
.ch-stmt table.ch-ssum td{border:1px solid var(--gray-20);padding:6px 7px;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--gray-100)}
.ch-stmt h3{display:flex;align-items:baseline;gap:8px;font-size:12.5px;font-weight:700;color:var(--gray-100);margin:16px 0 6px}
.ch-stmt h3 .srcn{margin-left:auto;font-size:10.5px;font-weight:400;color:var(--gray-50)}
.ch-stmt table{width:100%;border-collapse:collapse;font-size:10.5px;color:var(--gray-100)}
.ch-stmt th{border:1px solid var(--gray-20);background:var(--gray-10);padding:4px 6px;font-weight:600;text-align:left;color:var(--gray-60);white-space:nowrap}
.ch-stmt td{border:1px solid var(--gray-20);padding:4px 6px;font-variant-numeric:tabular-nums;color:var(--gray-100)}
.ch-stmt tr.tot td{font-weight:700;color:var(--gray-100);background:var(--gray-10);border-bottom:2px solid var(--gray-40)}
.ch-stmt .ch-sfoot{text-align:center;font-size:10.5px;color:var(--gray-50);margin-top:16px;padding-top:8px;border-top:1px solid var(--gray-20)}
@media print{
  body{background:#fff}
  body *{visibility:hidden}
  .ch-stmt,.ch-stmt *{visibility:visible}
  .ch-stmt{position:absolute;left:0;top:0;width:100%;box-shadow:none;border-radius:0;padding:12px}
}
