/* ═══ 数据表 LXTable（P1-B，D10 预留位独立样式表）═══
   真源=design/数据管理原型_v1.html（B2 冻结原型即规格）；词条登记=docs/前端样式规范.md §3「数据表 LXTable」
   规约：颜色只用语义令牌；字号只取阶梯；z-index 只取分配表（3=行内浮层档）
   页面骨架/表单/空态复用 style.css 既有件（.frm/.fr/.fin/.fchips/.chip/.saveb/.pbtn/.empty），本表只登记差量类
   可视内容对齐（2610k UI 优化立规）：lxt 各层不吃水平内距（0），由 #dpage .dbody 的 16px 统一供位——
   可见内容左缘=页头返回钮图标、右缘=页头右缘（此前容器外框对齐/内容又缩 16px 的老毛病不再犯）
   表页（2610k 老板两轮定稿）：工具行/页签/面板守 16px 供位（左右间距=应用页卡片缩进口径）、
   仅表格/卡片视图全出血贴面板左/右/底三缘；首行可视元素顶=应用页卡头顶同一水平线（dbody 顶距 2px）
   行间距=14px（对齐应用页卡片间距口径）；表格区满高内滚=APP 上滑时功能区与表头常驻 */

/* ── 表页骨架（L3 满高）：工具行/页签/面板自然高，表格区 flex:1 内滚 ──
   顶部 -2px 抵消 .dbody padding-top（首行可视元素 y=页头底+2=与应用页卡头顶平齐）、
   底部 -20px 抵消 padding-bottom（表格贴面板底缘零空白）、水平 -16px 破出供位（缩进自控）：
   工具行/页签/面板/横幅可视缩进 10px=表格列头文字一条线（2610k 老板定稿「可视部分与表头一致」；
   双重缩进 16+16=32 的教训：供位与层内 padding 不可叠加）；面板超长把表格压到 min-height 后
   由 .dbody 滚动兜底 */
/* ── 弱底色令牌（261030 走查元素3-6）：--gray-10 是固定浅灰、不随主题翻转——暗色下浅底+浅字
   =内容不可见的根因。本页弱底（页签条/分段轨/表头/文本胶囊/行悬停/表尾悬停）统一走 --lxt-sub
   （定义在 style.css 令牌块：浅色=gray-10、暗色=gray-70，与卡色的相对关系两端一致） ── */

#lxtBody{display:flex;flex-direction:column;height:calc(100% + 22px);min-height:0;margin:-2px -16px -20px;position:relative;
  touch-action:pan-x pan-y}  /* 关掉原生双指捏合（六轮走查元素10）：捏合由 pinchWire 接管=五档整体缩放，单指横/竖滚不受影响 */
/* APP 底部渐进磨砂（2610k 老板定稿）：手机系统导航栏压住表格末行——底部 56px 由浅至深渐变
   托底（to bottom 透明→--bg），pointer-events:none 不挡触控；左右 -16 补回破出量=全屏宽覆盖；
   WEB 停靠无导航栏不渲染。261030 元素7：磨砂层抬到表尾统计行上缘（原 56px 含统计行会把首格计数一并洗淡）。
   261031 真机修复（APP端元素2）：统计行上抬 sa 后手势区露底（看得见末行从统计栏底下滚过）——表格视图下
   磨砂层升级单伪元素双背景带：上 56px 渐变仍起于统计行上缘 + 底 sa 纯色卡底带托住导航区（=原纯色背景观感），
   中段 34px 让位统计行本体 */
.phone:not(.ldesk) #lxtBody::after{content:'';position:absolute;left:-16px;right:-16px;bottom:0;height:56px;
  background:linear-gradient(to bottom,color-mix(in srgb,var(--bg) 0%,transparent),var(--bg) 82%);
  pointer-events:none;z-index:3}
.phone:not(.ldesk) #lxtBody:has(.lxt-wrap)::after{
  height:calc(90px + max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px)));
  background:linear-gradient(to bottom,color-mix(in srgb,var(--bg) 0%,transparent),var(--bg) 82%) left top/100% 56px no-repeat,
    linear-gradient(var(--card),var(--card)) left bottom/100% max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px)) no-repeat}
/* APP 统计栏（261030 六轮结构极简；261031 真机二修/三修）：格恒 34px，sticky 整体上抬 sa
   （bottom=JS 内联 max(env,--sa-bottom)，桌面=0 不变）统计行完全退出手机导航区。
   261031 真机二修：视觉双保险——格内 .lxt-statcell 绝对定位 span（可靠画布①）+
   ::before 通栏卡底面 z2（可靠画布②=伪元素；盖住格下滚过的数据行=「缝隙漏行」根治，
   统计格 z3/首格 z4 在面上、数据行在面下）；横线只在 span 上（上下 1px），竖线 APP 无。
   261031 三修（诊断面板定案 sa=0 机型）：样式化横向滚动条在真机是占位滚动条（非叠加），
   统计行被抬起 6px 坐进滚动条带=卡底面上端差一截+行底露出页底取整缝——APP 端表格滚动条
   整体隐藏（触屏横滑无需拇指条，sb-on 悬停浮现仅桌面有意义）；卡底面下探 2px 盖住
   80% 缩放下页底边缘的 1-2px 取整缝（top 仍=行顶，不上探不露头） */
.phone:not(.ldesk) .lxt-grid tfoot td .lxt-statcell{border-bottom:1px solid var(--line-strong)}
.phone:not(.ldesk) .lxt-wrap::-webkit-scrollbar{display:none}
.phone:not(.ldesk) #lxtBody:has(.lxt-wrap)::before{content:'';position:absolute;left:-16px;right:-16px;
  bottom:calc(max(env(safe-area-inset-bottom,0px),var(--sa-bottom,0px)) - 2px);height:36px;
  background:var(--card);pointer-events:none;z-index:2}

/* ── 表目录（L2）：域分组 + 表行 ── */
.lxt-dir{padding:var(--sp-2) 0 var(--sp-24)}
.lxt-dgrp{margin:var(--sp-10) 0 var(--sp-4);font-size:12px;font-weight:600;color:var(--t3);letter-spacing:.4px}
.lxt-drow{display:flex;align-items:center;gap:var(--sp-10);width:100%;padding:var(--sp-12) var(--sp-16) var(--sp-12) 0;
  background:none;border:none;border-bottom:1px solid var(--line);color:var(--t1);font-size:14px;cursor:pointer;text-align:left}
/* 261101 老板需求1：右内距 16=§1.5 页边（原 › 顶行缘不对齐）；表图标同视图页签 #r-table；
   行尾「···」=编辑表入口（原 › 退役）；同步表=紫胶囊 */
.lxt-dico{width:13px;height:13px;flex:none;color:var(--t2)}
.lxt-dmore{flex:none;color:var(--t3);font-size:13px;letter-spacing:2px;padding:2px 4px;border-radius:8px;cursor:pointer;user-select:none}
.lxt-drow:hover .lxt-dmore{color:var(--t1)}
.lxt-dmore:hover{background:var(--gray-10)}
.tagchip.lxt-dt.sync{background:color-mix(in srgb,var(--primary) 14%,var(--card));color:var(--primary)}
/* 目录行分割线浅色提档（261030 五轮走查元素5）：行坐在页面灰底上，gray-10 线几乎不可读——
   浅色改 line-strong（gray-20）；深色主题维持 --line 原样（老板：深色没问题不改动） */
:root:not([data-theme="dark"]) .lxt-drow{border-bottom-color:var(--line-strong)}
/* 主题色通铺背景（bgmode-dark）下的目录页（261030 六轮走查元素11）：白系前景，
   对齐 .dbody>.chips bgmode 惯例（白色分级文字 + 半透明白分隔线；标签 chip 自带浅底不动） */
.phone.bgmode-dark .lxt-dgrp{color:rgba(255,255,255,.55)}
.phone.bgmode-dark .lxt-drow{color:rgba(255,255,255,.92);border-bottom-color:rgba(255,255,255,.25)}
.phone.bgmode-dark .lxt-drow .cnt,.phone.bgmode-dark .lxt-drow .lxt-dmore{color:rgba(255,255,255,.6)}
.lxt-drow:hover{background:var(--primary-soft)}
.lxt-drow .cnt{margin-left:auto;flex:none;font-size:12px;color:var(--t3)}
/* 类型胶囊（2610X-S9 元素1）：与任务标签 .tagchip 同款规格（11px/500/2px 8px/胶囊，基类在 style.css）；
   不同内容不同色——钉钉表单=蓝（info）、本地表单=绿（success），语义令牌混色 */
.lxt-drow .tagchip{flex:none}
.tagchip.lxt-dt.ding{background:color-mix(in srgb,var(--info) 16%,var(--card));color:var(--info)}
/* 本地表单（261030 五轮走查元素6）：浅色对齐任务标签 .tagchip.good 档（--good-fill 底 + --good-tx 深绿字，
   原亮 success 字在浅底上刺眼），深色覆盖层不动 */
.tagchip.lxt-dt.local{background:var(--good-fill);color:var(--good-tx)}
:root[data-theme="dark"] .tagchip.lxt-dt.ding{background:rgba(59,130,246,.22);color:var(--info)}
:root[data-theme="dark"] .tagchip.lxt-dt.local{background:rgba(22,163,74,.22);color:var(--success)}

/* ── 表页工具行（L3）：搜索 + 视图工具（计数在行尾：spacer 之后）──
   控件高度统一 46=规范（searchwrap .tinput 09-10 元素1-2 口径）；首行顶距 2px=与应用页卡头顶平齐；
   可视缩进 16px（#lxtBody 已破出供位，锚=页头返回钮图标=「原来正确的左右间距」，老板复验定稿）；
   行间距 14px=应用卡间距口径 */
/* ── 表页工具行（L3）：搜索 + 视图工具（计数在行尾：spacer 之后）──
   高度换代（261030 走查元素6-7）：整行控件统一 30px=工具钮档（原 38/36 混排）；首行顶距 2px=
   与应用页卡头顶平齐；可视缩进 16px（#lxtBody 已破出供位，锚=页头返回钮图标）；行间距 14px */
.lxt-bar{display:flex;align-items:center;gap:var(--sp-6);flex-wrap:wrap;flex:none;padding:var(--sp-14) var(--sp-16) 0}
/* 首行顶距 0（261030 二轮走查元素8：TAB 顶部与条带无缝衔接，TAB 条自身吃满高度） */
#lxtBody>.lxt-bar:first-child{padding-top:0}
.lxt-q{flex:1;min-width:140px;height:30px;border:1px solid var(--line-strong);border-radius:var(--r-md);
  background:var(--card);color:var(--t1);font-size:13px;padding:0 var(--sp-12);outline:none}
.lxt-q:focus{border-color:var(--primary)}
/* 工具钮（261029 复刻钉钉功能区）：轻量浅灰底圆角钮=图标+文字；主钮=主题色实底（添加，无下拉）；
   line-height 14px=文字行盒与 14px 图标盒等高（261030 走查元素3-4「标签+文字组件统一」：页签/工具钮/表头同规） */
.lxt-tool{flex:none;height:30px;padding:0 10px;border-radius:8px;border:1px solid var(--line);
  background:var(--card);color:var(--t2);font-size:13px;line-height:14px;cursor:pointer;white-space:nowrap;
  display:inline-flex;align-items:center;gap:4px}
.lxt-tool .ic{width:14px;height:14px;flex:none;color:var(--t3)}  /* 图标与文字 flex 垂直居中（三轮走查：0.5px 补偿废止=图标偏低） */
.lxt-tool:hover{color:var(--t1);border-color:var(--line-strong)}
.lxt-tool:hover .ic{color:var(--t2)}
.lxt-tool.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}
.lxt-tool.main{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
.lxt-tool.main .ic{color:var(--on-primary)}
/* 激活态彩色胶囊（261029 复刻附件1-3）：筛选/分组=绿、排序=黄，文案「按 X 筛选/排序/分组」 */
.lxt-tool.tgreen{background:color-mix(in srgb,var(--success) 13%,var(--card));
  border-color:color-mix(in srgb,var(--success) 36%,transparent);color:color-mix(in srgb,var(--success) 74%,var(--t1))}
.lxt-tool.tgreen .ic{color:inherit}
.lxt-tool.tamber{background:color-mix(in srgb,var(--warning) 16%,var(--card));
  border-color:color-mix(in srgb,var(--warning) 40%,transparent);color:color-mix(in srgb,var(--warning) 62%,var(--t1))}
.lxt-tool.tamber .ic{color:inherit}
.lxt-tool.tgreen .lxt-sval,.lxt-tool.tamber .lxt-sval{color:inherit;opacity:.85}
/* 脏配置胶囊（261029 复刻附件5「你调整了筛选配置 取消 保存」）：视图页签配置有改动时出现在功能区 */
.lxt-dirtybar{display:inline-flex;align-items:center;gap:2px;height:30px;padding:0 4px 0 10px;flex:none;
  border-radius:var(--r-xl);background:var(--primary-soft);
  border:1px solid color-mix(in srgb,var(--primary) 30%,transparent);font-size:13px;color:var(--primary)}
.lxt-dirtybar .lxt-dtxt{white-space:nowrap}
.lxt-dirtybar .lxt-dcancel{height:22px;padding:0 8px;border:0;border-radius:var(--r-lg);background:none;
  color:var(--primary);font-size:13px;cursor:pointer}
.lxt-dirtybar .lxt-dcancel:hover{background:color-mix(in srgb,var(--primary) 14%,transparent)}
.lxt-dirtybar .lxt-dsave{height:22px;padding:0 10px;border:0;border-radius:var(--r-lg);background:var(--primary);
  color:var(--on-primary);font-weight:600;cursor:pointer}
/* 全局搜索=常驻展开输入框（261030 四轮走查元素10 换代=钉钉AI表格口径：不筛行——输入即命中格
   描边高亮，框内右侧 ‹ n/N › 导航，点 ‹›/回车滚动定位到命中格；
   六轮走查元素8：/ 角标废止，导航器常驻（词空=0/0 灰显）；WEB 定宽 240px（元素5） */
.lxt-qwrap .lxt-qic{position:absolute;left:10px;width:14px;height:14px;color:var(--t3);pointer-events:none;z-index:1}
/* 261103c 老板条1：搜索导航压缩——‹ 0/0 › 三件贴紧（gap 0），按钮 18px、计数 26px，
   整组 62px（原 84px），输入框右侧让出 22px 可输入区 */
.lxt-qwrap .lxt-q{padding-left:30px;padding-right:64px}
.lxt-snav{position:absolute;right:2px;top:0;bottom:0;display:inline-flex;align-items:center;gap:0;z-index:1}
.lxt-snav .lxt-scnt{min-width:26px;text-align:center;font-size:11px;color:var(--t2);
  font-variant-numeric:tabular-nums;white-space:nowrap;padding:0 1px}
.lxt-snav .lxt-scnt.nul{color:var(--t3)}
.lxt-snav .lxt-sb{width:18px;height:22px;border:0;border-radius:4px;background:none;color:var(--t3);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;flex:none}
.lxt-snav .lxt-sb .ic{width:11px;height:11px}
.lxt-snav .lxt-sb:hover{background:var(--lxt-sub);color:var(--t1)}
/* 命中格高亮（钉钉同款描边）：普通命中=info 细描边；当前命中=primary 粗描边+浅底（导航定位格） */
.lxt-grid td.lxt-hit{outline:1.5px solid color-mix(in srgb,var(--info) 70%,transparent);outline-offset:-1.5px}
.lxt-grid td.lxt-hit.lxt-hit-cur{outline:2px solid var(--primary);outline-offset:-2px;background:var(--primary-soft)}
.lxt-count{flex:none;font-size:13px;color:var(--t3);padding:0 var(--sp-2)}
/* 功能区底色=选中页签同色（261030 三轮走查元素1：卡色与白页签连成一体，选中标签视觉识别最佳）；
   条件回显行同卡色保持块面连续；表格区上缘 1px 分隔线不变 */
.lxt-bar.lxt-act{background:var(--card);padding-bottom:var(--sp-10)}
.lxt-bar.lxt-cond{background:var(--card);padding-top:0;padding-bottom:var(--sp-8)}

/* ── 就地视图面板（筛选/排序/分组/行高/列；一次只开一个，不弹层） ── */
.lxt-panel{flex:none;margin:var(--sp-14) var(--sp-16) 0;padding:var(--sp-12);border:1px solid var(--line);border-radius:var(--r-2xl);
  background:var(--card)}
.lxt-pl{font-size:13px;font-weight:600;color:var(--t3);margin:var(--sp-8) 0 var(--sp-6)}
.lxt-flrow{display:grid;grid-template-columns:minmax(96px,1.2fr) auto minmax(90px,1fr) 30px;gap:var(--sp-6);
  align-items:center;margin-bottom:var(--sp-6)}
.lxt-inp,.lxt-sel{height:34px;border:1px solid var(--line-strong);border-radius:var(--r-lg);
  background:var(--card);color:var(--t1);font-size:13px;padding:0 var(--sp-8);outline:none;min-width:0}
.lxt-inp:focus,.lxt-sel:focus{border-color:var(--primary)}
.lxt-x{width:30px;height:30px;border:none;background:none;color:var(--t3);font-size:14px;cursor:pointer}
.lxt-x:hover{color:var(--destructive)}
.lxt-mini{font-size:13px;color:var(--t3);line-height:1.6}
.lxt-add{height:32px;padding:0 var(--sp-12);border:1px dashed var(--line-strong);border-radius:var(--r-xl);
  background:none;color:var(--t2);font-size:13px;cursor:pointer}
.lxt-add:hover{color:var(--primary);border-color:var(--primary)}
.lxt-chips{display:flex;flex-wrap:wrap;gap:var(--sp-6);align-items:center}

/* ── 表格视图（flex:1 占满余高内滚：表头 sticky 常驻＝APP 上滑功能区/表头固定；全出血贴三缘） ──
   水平 -16px 破出 .dbody 供位=表格全宽贴面板左右缘（工具行守 16px 缩进=层次，老板两轮定稿）；
   极窄滚动条（2610k 老板元素反馈）：6px、默认拇指透明、容器悬停浮现——浮现改 JS 委托挂 .sb-on
   （CSS :hover 伪元素在 Chromium/Edge 刷新不稳=移入移出时好时坏、拇指瞄不准的根因，实测避坑）。
   关键坑：scrollbar-width/scrollbar-color 标准属性一旦设置，Chromium 121+ 会放弃 ::-webkit-scrollbar
   渲染（常显细条=自动隐藏失效，Windows 实测）——标准属性只进 @supports Firefox 兜底档 */
.lxt-wrap{overflow:auto;flex:1 1 auto;min-height:180px;margin:0;border-top:1px solid var(--line);
  border-radius:0;background:var(--card)}
.lxt-wrap::-webkit-scrollbar,.lxt-cards::-webkit-scrollbar{width:6px;height:6px}
.lxt-wrap::-webkit-scrollbar-track,.lxt-cards::-webkit-scrollbar-track{background:transparent}
.lxt-wrap::-webkit-scrollbar-thumb,.lxt-cards::-webkit-scrollbar-thumb{background:transparent;border-radius:3px}
.lxt-wrap.sb-on::-webkit-scrollbar-thumb,.lxt-cards.sb-on::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--t3) 38%,transparent)}
.lxt-wrap.sb-on::-webkit-scrollbar-thumb:hover,.lxt-cards.sb-on::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--t3) 65%,transparent)}
@supports not selector(::-webkit-scrollbar){
  .lxt-wrap,.lxt-cards{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--t3) 45%,transparent) transparent}
}
/* table-layout:fixed（261029 钉钉复刻）：列宽=拖宽把手/col_w 唯一真源——auto 布局在多列挤压下
   会无视 th 宽度乱收缩（拖到 198 渲染 98 的根因），fixed 后列宽忠实+超宽内容省略号截断，
   总宽超出容器走横向滚动 */
.lxt-grid{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;font-size:13px}
/* 表头（261029 复刻；261030 二轮走查元素4/5 换代；261030 四轮走查元素8 再换代）：
   底色/边框/字号与数据格一致、仅字重加粗区分（表头从灰底换卡色=与上方 TAB 条/功能区灰块整体区分）；
   结构=类型图标+列名（点=排序）+▾列菜单；列分隔线与表体同款（首列豁免）；
   四轮走查元素8：行高跟随行高配置（--lxt-rh 与数据格同一变量，紧凑/正常/宽松/自定义同步伸缩） */
.lxt-grid th{position:sticky;top:0;z-index:2;background:var(--card);
  border-bottom:1px solid var(--line);border-left:1px solid var(--line);
  font-size:13px;font-weight:600;color:var(--t3);text-align:left;white-space:nowrap;padding:0;height:var(--lxt-rh,40px)}
.lxt-grid th:first-child{border-left:0}
.lxt-grid th .lxt-hc{display:flex;align-items:center;gap:3px;height:100%;width:100%;
  padding:0 2px 0 8px;background:none;border:none;color:inherit;font:inherit;box-sizing:border-box}
/* 列名行盒=line-height 14px：与 14px 类型图标盒等高居中（261030 走查元素10-11「标签+文字」同规） */
.lxt-grid th .lxt-hname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;
  border:0;background:none;color:inherit;font:inherit;font-weight:600;line-height:14px;cursor:pointer;padding:0}
.lxt-grid th .lxt-hname:hover{color:var(--t1)}
/* 四轮走查元素4（第4次修订=根因修复）：此前三次只调了 .lxt-hic 盒（span 14×14），
   盒内 svg.ic 从未设尺寸——吃全局 .ic 22px 档，在 14px 盒里溢出右下=「图标比文字大、
   落在文字左下角」。本条直接钉 svg 本体 14px=与 TAB 页签/功能区工具钮图标同档，flex 居中同规 */
.lxt-grid th .lxt-hic{width:14px;height:14px;flex:none;color:var(--t3);display:inline-flex;align-items:center;justify-content:center}
.lxt-grid th .lxt-hic .ic,.lxt-grid th svg.lxt-tyic{width:14px;height:14px;flex:none;display:block}
.lxt-grid th .lxt-hmenu{width:20px;height:20px;flex:none;border:0;border-radius:5px;background:none;color:var(--t3);
  cursor:pointer;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s}
.lxt-grid th .lxt-hmenu .ic{width:12px;height:12px}
.lxt-grid th:hover .lxt-hmenu{opacity:1}
.lxt-grid th .lxt-hmenu:hover{background:color-mix(in srgb,var(--t3) 18%,transparent);color:var(--t1)}
/* 列宽拖把手（261029）：th=sticky 定位上下文；把手收在 th 右缘内侧 8px（右邻列底色会盖住
   越界部分=命中区必须完全落在本列内），悬停出主题色竖杆，长按拖动调宽 */
.lxt-rs{position:absolute;right:0;top:0;bottom:0;width:8px;cursor:col-resize;z-index:5}
.lxt-rs:hover::after{content:'';position:absolute;right:2px;top:22%;bottom:22%;width:2.5px;
  border-radius:2px;background:var(--primary)}
/* 单元格底色统一走 --rowbg（行悬停/行填色经 tr 变量透传）——冻结 sticky 格不透底的前提 */
.lxt-grid td{border-bottom:1px solid var(--line);border-left:1px solid var(--line);padding:0 var(--sp-10);height:var(--lxt-rh,40px);
  max-width:480px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--t1);cursor:pointer;
  background:var(--rowbg,var(--card))}  /* 列宽=拖宽把手可调 60-480：超宽省略号截断，点行进编辑器看明细 */
.lxt-grid td:first-child{border-left:0}
.lxt-grid tbody td:hover{background:var(--primary-soft)}  /* 钉钉网格=行悬停浅灰（--rowbg）、格悬停浅主题色 */
.lxt-num{text-align:left;font-variant-numeric:tabular-nums}  /* 2610k 老板定稿：全部左对齐（原数字右对齐=短数字左侧大片空白） */
.lxt-sarr{font-size:10.5px;color:var(--primary)}
.lxt-mut{color:var(--t3)}
/* 文本格灰胶囊（261029 复刻：参考图「建设单位/合同编号」样式） */
.lxt-pill{display:inline-flex;align-items:center;max-width:100%;min-width:0;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;padding:2px 8px;border-radius:5px;background:var(--lxt-sub);color:var(--t1)}
.lxt-opt{display:inline-flex;align-items:center;padding:var(--sp-2) var(--sp-8);border-radius:var(--r-pill);
  font-size:13px;line-height:18px;white-space:nowrap}
.lxt-lk{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-8);border-radius:5px;
  background:var(--primary-soft);color:var(--primary);font-size:13px;max-width:100%;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
/* 单元格内胶囊截断修正（261030 五轮走查元素9）：text-overflow 在 inline-flex（flex 容器）上不生效——
   文字溢出 span 盒后由 td 硬裁=末字被切半个。格内改 inline-block（自身 ellipsis 生效=以 … 收尾），
   编辑器附件行（.lxt-files 内多子件 flex 布局）不受此格内规则影响保持 inline-flex */
.lxt-grid td .lxt-lk,.lxt-grid td .lxt-pill,.lxt-grid td .lxt-opt{display:inline-block;vertical-align:middle}
.lxt-calc{color:var(--primary);font-variant-numeric:tabular-nums}
/* 四轮走查元素6：省略号颜色跟随文字色——截断发生在 td（overflow+text-overflow 在格上），
   「…」字形吃 td 自身字色（--t1 浅白），格内蓝字 span（.lxt-calc）一截断就成了白点；
   :has 把 td 字色对齐内容档=省略号与文字同色 */
.lxt-grid td:has(> .lxt-calc){color:var(--primary)}
/* 数据来源三档配色（261030 三轮走查元素5 拍板，借鉴钉钉「关联=蓝」规则、色走主题令牌）：
   同步引用（remote 可编辑字段）=info 蓝字、去胶囊底；本表计算=primary（.lxt-calc 既有）；
   可编辑=正常字色+灰胶囊。选项彩底/关联胶囊是数据自身颜色不参与分档 */
.lxt-grid td.lxt-vref{color:var(--info)}
.lxt-grid td.lxt-vref .lxt-pill{background:none;color:var(--info)}
/* 第四档（261101d 老板条1）：数据同步引用列=success 绿（与 info 蓝 remote 列/primary 计算列区分；
   表头图标着色与明细页同步图标走 JS 内联同令牌） */
.lxt-grid td.lxt-sref{color:var(--success)}
.lxt-grid td.lxt-sref .lxt-calc{color:var(--success)}
.lxt-grid td:has(> .lxt-sref .lxt-calc){color:var(--success)}
.lxt-grp td{cursor:pointer;color:var(--t2);background:var(--bg);height:36px}
.lxt-grp .lxt-gcnt{color:var(--t3);font-size:13px}
/* 分组折叠=JS 就地切换组内行显示（组头与行同 tbody；closed 只改箭头方向） */
.lxt-grp.closed .lxt-garr{transform:rotate(-90deg);display:inline-block}

/* 行填色（color_rules 首条命中；scope=row）——语义令牌混色 */
.lxt-cr-red td{background:color-mix(in srgb,var(--destructive) 10%,var(--card))}
.lxt-cr-amber td{background:color-mix(in srgb,var(--warning) 12%,var(--card))}
.lxt-cr-green td{background:color-mix(in srgb,var(--success) 12%,var(--card))}
.lxt-cr-blue td{background:color-mix(in srgb,var(--info) 12%,var(--card))}
.lxt-cr-violet td{background:color-mix(in srgb,var(--primary) 10%,var(--card))}

/* 底部合计条（lxt-gbar）2610k 老板元素1 退役：同步期说明=页头标题后 ？红点（lxtable.js stateMark），
   计数在工具行行尾；表格全出血与面板底缘无缝衔接 */

/* ── 记录编辑器（L4，表单骨架复用 .frm/.fr/.fin/.fchips/.chip/.saveb） ── */
.lxt-ro{display:flex;align-items:center;min-height:38px;width:100%;border:1px solid var(--line);
  border-radius:var(--r-lg);padding:0 var(--sp-10);color:var(--t2);font-size:13px;background:var(--bg);box-sizing:border-box}
.lxt-ro .v{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--t1)}
.lxt-ro .lxt-clr{flex:none;border:none;background:none;color:var(--t3);cursor:pointer;font-size:12px;padding:4px}
.lxt-ro .lxt-clr:hover{color:var(--destructive)}
.lxt-calcbox{border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-8) var(--sp-10);background:var(--bg)}
.lxt-calcbox .lxt-cv{font-size:15px;font-weight:600;color:var(--primary)}
/* 数据同步引用列值盒（261101d 老板条1）：success 绿（明细页同步图标同令牌） */
.lxt-calcbox.lxt-sref{border-color:color-mix(in srgb,var(--success) 35%,var(--line))}
.lxt-calcbox.lxt-sref .lxt-cv{color:var(--success)}
.lxt-selwrap{position:relative}
.lxt-sellist{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:3;max-height:220px;overflow:auto;
  background:var(--card);border:1px solid var(--line-strong);border-radius:var(--r-xl);
  box-shadow:var(--shadow-card)}
.lxt-selrow{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-8) var(--sp-10);font-size:13px;color:var(--t1);cursor:pointer}
.lxt-selrow:hover{background:var(--primary-soft)}
.lxt-selrow.on{color:var(--primary);font-weight:600}
.lxt-del{align-self:flex-start;margin:var(--sp-4) 0 var(--sp-12);border:none;background:none;color:var(--destructive);
  font-size:13px;cursor:pointer;padding:var(--sp-6) 0;text-decoration:underline}

/* ── 字段管理（工具「字段」面板：拖拽排序/眼睛显隐/编辑/删除/新增；
     2610X-S9 元素5：↑↓ 双钮退役，字段序=长按拖拽（.flrow+.flhandle，样式在 style.css） ── */
.lxt-fmr{display:flex;align-items:center;gap:var(--sp-8);padding:var(--sp-8) var(--sp-2);border-bottom:1px solid var(--line)}
.lxt-fmr:last-of-type{border-bottom:none}
.lxt-fname{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.lxt-fname b{font-size:13px;color:var(--t1);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lxt-fty{font-size:13px;color:var(--t3)}
/* 数据同步字段类型名（261101d 条1）：success 绿（字段面板行=同步图标+绿类型名一眼可辨） */
.lxt-fty.sync{color:var(--success)}
.lxt-x .ic{width:16px;height:16px}
.lxt-x{display:inline-flex;align-items:center;justify-content:center}

/* ── 字段编辑页（选项行/色板/公式条+预览） ── */
.lxt-opted{display:flex;align-items:center;gap:var(--sp-6);margin-bottom:var(--sp-6)}
.lxt-cpick{flex:none;width:24px;height:24px;border-radius:50%;border:1px solid var(--line-strong);cursor:pointer}
.lxt-fxbar{display:flex;flex-wrap:wrap;gap:var(--sp-4);margin-top:var(--sp-6)}
.lxt-fxbtn{height:26px;padding:0 var(--sp-8);border:1px solid var(--line);border-radius:var(--r-lg);
  background:var(--card);color:var(--t2);font-size:11px;cursor:pointer}
.lxt-fxbtn:hover{color:var(--primary);border-color:var(--primary)}
.lxt-fxbtn.alt{background:var(--primary-soft);color:var(--primary)}
.lxt-fxprev{margin-top:var(--sp-6);font-size:12px;color:var(--t2);min-height:18px}

/* ── 数据历史时间线（D16：字段级 diff + 恢复此值） ── */
.lxt-hist{padding:var(--sp-2) 0 var(--sp-8)}
.lxt-hrow{padding:var(--sp-10) var(--sp-2);border-bottom:1px solid var(--line)}
.lxt-hmeta{display:flex;align-items:baseline;gap:var(--sp-6);flex-wrap:wrap;font-size:13px;color:var(--t1)}
.lxt-hmeta .lxt-fty{margin-left:auto}
.lxt-diff{margin-top:var(--sp-4);font-size:13px;color:var(--t2);word-break:break-all}
.lxt-harr{color:var(--primary);margin:0 var(--sp-2)}
.lxt-hact{border:none;background:none;color:var(--primary);font-size:13px;cursor:pointer;
  padding:0 var(--sp-2);text-decoration:underline;margin-left:var(--sp-6)}

/* ── 第一行·视图页签行（261029 复刻钉钉 AI 表格附件2-3；261030 二轮走查元素8 换代=截图2/3；
   261030 四轮走查元素1/2 换代=截图1/2）：
   整行浅灰底+底部基线；页签=书签卡片——顶部与条带顶无缝衔接（无上距、吃满条带高），
   首个页签左侧贴条带左缘、左侧圆角取消（0 8 0 0），其余页签左右保持圆角；
   选中=白底描边圆角顶+加粗+页签图标主题色，未选=透明底灰字常规字重；
   ⋮ 仅选中页签渲染；双击页签=就地改名；命中数徽标退役 ──
   四轮走查元素1：基线从 border-bottom 换成盒底 1px 背景渐变层——背景先画、子元素页签后画，
   选中页签白底自然压线（未选中页签透明底=基线原样保留）。原 border-bottom+负 margin 下探的方案
   在 overflow-y:hidden 滚动容器里把页签下探的 1px 裁掉，选中页签压不住线=
   「选中TAB与功能栏之间多一条分割线」的根因；背景层不随横向滚动走位（child ::before 会），
   background-clip:border-box=层位与原 border-bottom 完全重合；
   四轮走查元素2：基线与页签侧边相接的外直角（外侧 L）改内凹圆角（反圆角 fillet，半径=顶角 8px）——
   选中页签 ::before/::after 挂 8×8 径向渐变方块（透明区露灰底、弧线接侧边框色、卡色区连页签与下方功能区），
   首个页签左侧贴缘无基线=只做右侧，其余页签左右都做（截图1/2 钉钉同款） */
.lxt-bookrow{gap:var(--sp-2);row-gap:0;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;
  scrollbar-width:none;padding-left:0;padding-right:var(--sp-16);
  background:linear-gradient(var(--line-strong),var(--line-strong)) 0 100%/100% 1px no-repeat border-box border-box,
    var(--lxt-sub)}
.lxt-bookrow::-webkit-scrollbar{display:none}
.lxt-vwrap{display:inline-flex;align-items:center;flex:none}
.lxt-vwrap:first-child .lxt-vtab{border-radius:0 8px 0 0}
.lxt-vtab{position:relative;display:inline-flex;align-items:center;gap:var(--sp-4);height:40px;
  padding:0 var(--sp-10);border:1px solid transparent;border-bottom:0;
  border-radius:8px 8px 0 0;background:none;color:var(--t2);font-size:13px;line-height:14px;cursor:pointer;white-space:nowrap}
/* 图标线色=文字色（261030 五轮走查元素1/3：选中 t1、未选中 t2（略淡于选中）、悬停 t1，明暗主题自适应）；
   translateY(-1px)=视觉光学对齐（五轮走查元素1/2：图标较文字视觉偏下 1px 补偿） */
.lxt-vtab .ic{width:14px;height:14px;color:inherit;flex:none;transform:translateY(-1px)}
.lxt-vtab:hover{color:var(--t1)}
.lxt-vtab.on{background:var(--card);border-color:var(--line-strong);color:var(--t1);font-weight:600;
  box-shadow:0 -2px 4px -3px rgba(0,0,0,.1)}
/* 外直角→内凹圆角（fillet）：8×8 方块骑在基线与页签侧边的夹角上；
   径向渐变=远端（朝页签/下方功能区）卡色、近角区透明露灰底、1px 弧线过渡（色=侧边框 line-strong） */
.lxt-vtab.on::before,.lxt-vtab.on::after{content:'';position:absolute;bottom:0;width:8px;height:8px;pointer-events:none}
.lxt-vtab.on::before{left:-8px;
  background:radial-gradient(circle at 0 0,transparent 6.9px,var(--line-strong) 7.3px 7.9px,var(--card) 8.3px)}
.lxt-vtab.on::after{right:-8px;
  background:radial-gradient(circle at 100% 0,transparent 6.9px,var(--line-strong) 7.3px 7.9px,var(--card) 8.3px)}
/* 首个页签左侧贴缘：左直角保留（无基线可接），只做右侧 fillet（截图1） */
.lxt-vwrap:first-child .lxt-vtab.on::before{content:none}
.lxt-vname{max-width:160px;overflow:hidden;text-overflow:ellipsis}
/* 页签内就地改名输入框（双击进入，Enter 提交/Esc 还原） */
.lxt-renin{width:120px;height:24px;border:1px solid var(--primary);border-radius:5px;background:var(--card);
  color:var(--t1);font-size:13px;padding:0 6px;outline:none}
/* ⋮（视图操作，261030 走查元素1 换代）：收进选中页签内部、紧跟视图名——竖三点无外框（i-dotsv），
   span 嵌 button（button 不嵌套）、点击/双击均 stopPropagation（单击=菜单不切页签、双击不触发改名）；
   仅选中页签渲染；hover 淡底反白，触屏常态半显 */
.lxt-tmenu{width:18px;height:18px;margin-right:-3px;border-radius:5px;background:none;color:inherit;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;flex:none;opacity:.8;transition:opacity .12s}
.lxt-tmenu .ic{width:14px;height:14px;transform:translateY(-1px)}  /* 与文字视觉居中（五轮走查元素2） */
.lxt-tmenu:hover{background:color-mix(in srgb,var(--t3) 18%,transparent);color:var(--t1);opacity:1}
@media (hover:none){.lxt-tmenu{opacity:.75}}
/* ＋新建视图（261030 五轮走查元素8）：前置 1px 竖分割线（16px 高、line-strong），
   ＋=r-plus-b（加粗档）图标放大到 15px≈文字高 */
.lxt-vadd{display:inline-flex;align-items:center;flex:none;height:28px;padding:0 var(--sp-8);border:0;background:none;
  color:var(--t3);font-size:13px;cursor:pointer;margin-left:2px}
.lxt-vadd::before{content:'';width:1px;height:16px;background:var(--line-strong);margin-right:var(--sp-8)}
.lxt-vadd .ic{width:15px;height:15px}
.lxt-vadd:hover{color:var(--primary)}
/* APP 视图切换器（261030 五轮走查 APP 端元素3 换代；261031 元素1 微调）：样式对齐 WEB 首枚书签页签——
   白卡+顶角圆角 8px+无底线直接熔接下方功能区，右侧外直角做反圆角 fillet（左侧贴缘无基线不做）；
   261031：左上角改直角（对齐 .lxt-vwrap:first-child .lxt-vtab 首枚惯例）——圆弧让 TAB 条灰底
   从左上角漏出 + 左缘观感比页签多出一线，老板「只看到页签不漏条底」定稿；原灰边大胶囊废止 */
.lxt-vpick{display:inline-flex;align-items:center;gap:var(--sp-4);height:40px;padding:0 var(--sp-12);flex:none;
  border:1px solid var(--line-strong);border-bottom:0;background:var(--card);
  color:var(--t1);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;
  border-radius:0 8px 0 0;position:relative;box-shadow:0 -2px 4px -3px rgba(0,0,0,.1)}
.lxt-vpick .ic{color:inherit;flex:none;transform:translateY(-1px)}
.lxt-vpick::after{content:'';position:absolute;right:-8px;bottom:0;width:8px;height:8px;pointer-events:none;
  background:radial-gradient(circle at 100% 0,transparent 6.9px,var(--line-strong) 7.3px 7.9px,var(--card) 8.3px)}
.lxt-vdot{color:var(--warning);font-size:10.5px}
/* 列表/卡片分段控件（渲染模式；与保存的查询解耦——2610k 评审定稿）。
   261030 走查元素7/8：整轨 30px=工具钮同档（钮 26+轨 padding 2×2）；双端图标钮去文字（title 提示） */
/* 列表/卡片切换=单钮点切（261030 六轮走查元素1，位于功能栏行高与状态之间）——
   原 seg 分段控件（五轮元素5 上 TAB 栏）整体退役；面板 chip 图标+文字（布局面板 表格/卡片 档） */
.lxt-panel .chip{display:inline-flex;align-items:center;gap:var(--sp-4)}
.lxt-panel .chip .ic{width:12px;height:12px;flex:none}

/* ── 面板浮层（WEB popover：锚定动作行按钮下方，点外部/Esc 关闭；内容=panelHTML 原样）──
   2610X-S9 元素9：z 3→7——吸顶表头/吸左序号列（sticky z=1/3）与弹窗同档时按 DOM 序压在
   弹窗上（点排序等按钮即见单元格浮起），弹窗必须整档压过网格 sticky 族 */
.lxt-pop{position:absolute;z-index:7;min-width:280px;max-height:62%;
  overflow-y:auto;background:var(--card);border:1px solid var(--line-strong);border-radius:var(--r-2xl);
  box-shadow:0 18px 44px -14px rgba(0,0,0,.32)}
/* 261029 元素3：面板宽=popWrap 按面板分档内联下发（筛选 440 使 字段/方式/值 一行放下），
   左缘=触发按钮左缘（data-pop 同名锚定），不再统一 300 窄条 */
.lxt-pop .lxt-panel{margin:0;border:0;border-radius:0;background:none}
/* 筛选面板（2610X-S9 元素6：复刻图表分析筛选 .flrow 全家，住在 style.css） */
.lxt-panel .qcap{margin:0 0 var(--sp-8)}
.lxt-panel .fladd{margin-top:2px}

/* ── 全屏显示（2610k 老板元素2）：页头全屏钮=L4 覆盖整屏+浏览器全屏 ──
   fixed 盖过四栏（含 .phone.ldesk .dpage 停靠右栏几何，特异性 4>3 覆盖 left/width）；
   z=115 新档（§2.3）：高于编辑弹层 97/居中对话框 99、低于 toast 120 与 pmenu 150——
   全屏态下轻提示与切表下拉仍可见；go() 切页整栈清空/hmCloseAll 同步退出（home.js） */
.phone.ldesk .dpage.lxt-fs{position:fixed;left:0;right:0;top:0;bottom:0;width:auto;z-index:115;
  transform:none;transition:none;border-left:0}

/* ── 页头标题切表（2610k 元素3→261030 走查元素1 换代）：下拉并入标题——标题本体可点
   （无底色边框，名字尾随 ▼ 图标=标题字号同款 20px，二轮走查拍板），点=全量表清单 dropMenu 点选换表 ── */
.lxt-ttl{display:inline-flex;align-items:center;gap:4px;cursor:pointer;vertical-align:baseline}  /* 五轮走查元素7：middle 基线把 24px 盒压低 2px=标题视觉偏下根因，改 baseline 随行基线对齐 */
.lxt-ttl:hover{color:var(--primary)}
.lxt-ttl:hover .ic{color:var(--primary)}
.lxt-ttl .ic{color:inherit;flex:none}

/* ── 动作行件（2610k 二次优化）：徽标=生效条件数 / 排序值上脸 / 计数带单位 / / 聚焦角标 ── */
.lxt-badge{min-width:16px;height:16px;padding:0 var(--sp-4);border-radius:5px;display:inline-grid;
  place-items:center;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;
  background:var(--primary);color:var(--on-primary);margin-left:2px}
.lxt-sval{color:var(--primary);font-size:13px;font-variant-numeric:tabular-nums;margin-left:2px}
.lxt-count.hot{color:var(--primary);font-weight:600}
.lxt-qwrap{position:relative;display:flex;align-items:center;flex:1;min-width:140px;max-width:420px}
/* WEB（ldesk）功能栏最左侧搜索=定宽 240px（261030 六轮走查元素5） */
.phone.ldesk .lxt-qwrap{flex:0 0 240px;min-width:240px;max-width:240px}
.lxt-qwrap .lxt-q{flex:1}
/* .lxt-kbd（/ 角标）261030 六轮走查元素8 退役：导航器常驻（词空 0/0） */
.lxt-icob{padding:0 var(--sp-12)}
/* 全屏钮（261030 五轮走查元素10）：r-full 字形顶满 24 盒（旧 i-full≈54% 覆盖、reicon≈72%），
   页头 wicon 24px 档下视觉放大 33%——本钮图标缩回 19px≈旧字形视觉量级 */
#lxtFsBtn .ic{width:19px;height:19px}
/* 第三层·条件回显：chip=字段+值+单删；清除全部+存为视图（仅有筛选时出现） */
.lxt-cond{gap:var(--sp-6);flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}
.lxt-cond::-webkit-scrollbar{display:none}
.lxt-fchip{display:inline-flex;align-items:center;gap:var(--sp-6);height:30px;padding:0 var(--sp-4) 0 var(--sp-8);flex:none;
  border:1px solid var(--line-strong);border-radius:var(--r-xl);background:var(--card);font-size:13px}
.lxt-fchip em{font-style:normal;color:var(--t3)}
.lxt-fchip b{font-weight:400;color:var(--t1);white-space:nowrap}
.lxt-fchip-x{width:18px;height:18px;border:0;border-radius:5px;background:none;color:var(--t3);
  cursor:pointer;font-size:11px;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.lxt-fchip-x .ic{width:11px;height:11px}
.lxt-fchip-x:hover{background:var(--gray-10);color:var(--t1)}
.lxt-clrall,.lxt-saveview{flex:none;height:30px;padding:0 var(--sp-8);border:0;border-radius:var(--r-xl);
  background:none;color:var(--t3);font-size:13px;cursor:pointer}
.lxt-saveview{border:1px solid var(--line-strong);color:var(--t2)}
.lxt-clrall:hover,.lxt-saveview:hover{color:var(--primary)}

/* ── APP 底部抽屉（任务弹层 .dsmask/.dsheet 同款；面板外壳随抽屉拍平） ── */
.lxt-drawerbody{overflow-y:auto;padding:0 var(--sp-16);flex:1;min-height:0}
.lxt-drawerbody .lxt-panel{margin:0 0 var(--sp-4);border:0;border-radius:0;background:none;padding:var(--sp-10) 0}
.lxt-drawerfoot{flex:none;padding:10px 16px calc(12px + env(safe-area-inset-bottom,0px));
  border-top:1px solid var(--line)}

/* ── 表格首列吸边（2610k 评审：横向滑动序号列恒可见；行色经 --rowbg 透传；
   2610X-S9：首列=序号列，表头吸顶吸左交叉格同步灰底） ── */
.lxt-grid th:first-child,.lxt-grid td:first-child{position:sticky;left:0;z-index:1;
  background:var(--rowbg,var(--card))}
.lxt-grid tfoot td:first-child{background:none}  /* 统计栏首格同零涂装（261031：涂装下沉 .lxt-statcell） */
.lxt-grid thead th:first-child{z-index:3;background:var(--card)}
/* 冻结首列投影=数据表专属（261102b 老板条2：渠道三子表共用 .lxt-grid，
   勾选列吃进同款投影在未滚动时悬成一颗 2px 斑点=老板「白色的点」；渠道表取消投影，吸边保留） */
.lxt-wrap .lxt-grid tbody td:first-child{box-shadow:5px 0 8px -6px rgba(0,0,0,.18)}
.lxt-grid tbody tr:hover{--rowbg:var(--lxt-sub)}
.lxt-grid tbody tr.lxt-cr-red{--rowbg:color-mix(in srgb,var(--destructive) 10%,var(--card))}
.lxt-grid tbody tr.lxt-cr-amber{--rowbg:color-mix(in srgb,var(--warning) 10%,var(--card))}
.lxt-grid tbody tr.lxt-cr-green{--rowbg:color-mix(in srgb,var(--success) 10%,var(--card))}
.lxt-grid tbody tr.lxt-cr-blue{--rowbg:color-mix(in srgb,var(--info) 10%,var(--card))}
.lxt-grid tbody tr.lxt-cr-violet{--rowbg:color-mix(in srgb,var(--primary) 10%,var(--card))}
.lxt-grid tbody tr.lxt-grp td{position:static}  /* 分组行 colspan 全宽，无吸边需求 */
/* 填充列（261102b 老板条7）：行尾无宽列吃掉剩余宽——fixed 布局剩余宽不再均摊到实列，
   拖宽任意列=只有该列变宽、其后列右移（「前面的列不变，只变后面的」）；表宽富余时填充列补位 */
.lxt-grid .lxt-fill{width:auto;min-width:0;padding-left:0;padding-right:0;border-left:none}
/* 261108d 元素7：末数据列右边框补齐（渠道明细同款处理：末数据格显式 border-right，
   填充列豁免）——表头/数据行/统计行统一闭合右缘 */
.lxt-grid th:nth-last-child(2),.lxt-grid td:nth-last-child(2){border-right:1px solid var(--line)}
/* 统计栏钉屏底的伸缩空白行（261103d 老板元素5）：height 由 footFill 现算，零涂装不吃点击 */
.lxt-grid tbody tr[data-lxtgap] td,.lxt-grid tbody tr[data-lxtgap] td:hover{height:0;padding:0;
  border:0;background:var(--card);cursor:default}
.lxt-grid tbody tr[data-lxtgap]:hover{--rowbg:var(--card)}

/* ── 卡片视图（与表格同一 schema，仅 layout=card + card 配置） ── */
.lxt-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--sp-10);
  flex:1 1 auto;min-height:0;overflow-y:auto;margin:0;align-content:start;
  grid-auto-rows:min-content}  /* 行高显式 min-content：满高容器+隐式 auto 行在 Chromium 塌成 2px（只剩边框横线，2610k 老板元素3 实测二分定案） */
.lxt-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-2xl);
  overflow:hidden;cursor:pointer;box-shadow:var(--shadow-card)}
.lxt-card:hover{border-color:var(--primary)}
.lxt-card-hd{padding:var(--sp-12) var(--sp-14);color:var(--on-primary)}
.lxt-card-hd h4{font-size:15px;font-weight:600;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lxt-card-hd span{display:block;font-size:11px;opacity:.85;margin-top:var(--sp-2);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.lxt-card-bd{padding:var(--sp-6) var(--sp-14) var(--sp-8)}
.lxt-crow{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-10);
  padding:var(--sp-8) 0;border-bottom:1px solid var(--line);font-size:12px}
.lxt-crow:last-child{border-bottom:none}
.lxt-crow span{color:var(--t3);flex:none}
.lxt-crow b{color:var(--t1);font-weight:600;text-align:right;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;min-width:0}
.lxt-card-ft{display:flex;flex-wrap:wrap;gap:var(--sp-4);padding:0 var(--sp-14) var(--sp-12)}

/* ── 组合选择框（2610X-S8 拍板一 元素8：选择族字段框内搜索——值盒=已选 chips+▾，
   点开=框内下拉面板（搜索输入+选项列表，成熟 combobox 模式）；废止外挂「已选：无」说明行） ── */
.lxt-cbxbox{display:flex;align-items:center;gap:var(--sp-6);min-height:38px;width:100%;box-sizing:border-box;flex-wrap:wrap;
  border:1px solid var(--line-strong);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-10);background:var(--card);
  cursor:pointer;font-family:var(--font-ui);font-size:14px;color:var(--t1)}
.lxt-cbxbox:focus-within{border-color:var(--primary)}
.lxt-cbxbox .chip{padding:var(--sp-2) var(--sp-8);font-size:12px}
.lxt-cbxbox .cbxph{color:var(--t3)}
.lxt-cbxbox .cbxarr{margin-left:auto;color:var(--t3);font-size:12px;flex:none}
/* 面板=复用 .lxt-sellist 浮层（z=3），自带搜索输入+列表；列表内滚、面板本体不滚 */
.lxt-cbxpanel{overflow:visible;display:flex;flex-direction:column;gap:var(--sp-6);padding:var(--sp-6)}
.lxt-cbxpanel .lxt-cbxlist{max-height:180px;overflow:auto;margin:0 calc(var(--sp-6) * -1) calc(var(--sp-6) * -1)}

/* ── 附件（P2-D 文件底座；2610X-S8 拍板二换代=上传标准行列表：图标+名称+大小+下载+✕，
   行高 40、宽度撑满；添加=末位「＋ 上传附件」虚线行（.lxt-addfull 40px）；钉钉存量=同款行+「只读」徽标） ── */
.lxt-files{display:flex;flex-direction:column;gap:var(--sp-6);min-height:20px}
.lxt-files .lxt-lk{cursor:default;justify-content:flex-start;height:40px;padding:0 var(--sp-10);gap:var(--sp-8);
  background:var(--bg);border:1px solid var(--line);border-radius:var(--r-md);color:var(--t1)}
.lxt-files .lxt-lk .ic{width:16px;height:16px;color:var(--t3);flex:none}
.lxt-files .lxt-lk .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lxt-addfull{width:100%;height:40px;display:flex;align-items:center;justify-content:center}

/* ── 本机待重放横幅（P2-E 弱网排队写：表页/目录页工具行下常驻；说明=qmark 红点） ── */
.lxt-qbar{flex:none;margin:var(--sp-14) var(--sp-16) 0;padding:var(--sp-10) var(--sp-12);border:1px solid var(--primary);
  border-radius:var(--r-2xl);background:var(--primary-soft)}
.lxt-qbar b{font-size:13px;color:var(--primary)}

/* ── 表单底部动作行（2610k UI 优化：主次同行——次操作 .pbtn 在左、主操作 .saveb 在右；说明=qmark 红点行尾） ── */
.lxt-actrow{display:flex;align-items:center;gap:var(--sp-10);margin:var(--sp-12) 0 var(--sp-8)}
.lxt-actrow .qmark{flex:none}

/* ══ 2610X-S9 数据表单页换代（钉钉布局，老板元素10）══
   261029 全量复刻钉钉 AI 表格换代：书签 TAB 行/功能区/网格样式上移至上方对应区块统一维护，
   本区块仅保留网格点格即编与添加记录空行等仍生效件 */

/* 条件回显「或」标记 */
.lxt-fchip em.lxt-or{color:var(--warning);font-weight:600;margin-right:2px}

/* ── 网格·序号列（吸左；点=打开记录编辑页，title 提示） ── */
.lxt-grid .lxt-idx{width:44px;min-width:44px;max-width:44px;box-sizing:border-box;padding:0 4px;
  text-align:center;color:var(--t3);font-size:13px;font-variant-numeric:tabular-nums;user-select:none}
.lxt-grid tbody .lxt-idx:hover{color:var(--primary)}
.lxt-grid thead .lxt-idx{cursor:default}

/* ── 网格·点格即编（cellEdit）：可编格手型、编辑态主题色描边（钉钉同款）+ 无框输入 ── */
/* ── 单元格两段式选中+复制粘贴（261101f 老板条1/2）──
   .lxt-cell=全部格可选中（点按选中）；.lxt-sel=选中描边（主题色，与钉钉选格同款） */
.lxt-grid td.lxt-cell{cursor:pointer}
.lxt-grid td.lxt-sel{outline:2px solid var(--primary);outline-offset:-2px;border-radius:var(--r-sm)}
/* ── 日期选择器（261101f 老板条3，pmenu 容器内）── 格下方左对齐；日历周一为首、
   今日/选中=主题圆点、相邻月灰；输入框直填 年/月/日 或 年-月-日 */
.lxt-calin{padding:var(--sp-6) var(--sp-6) var(--sp-10)}
.lxt-calhd{display:flex;align-items:center;justify-content:space-between;padding:0 var(--sp-6) var(--sp-8)}
.lxt-calhd b{font-size:15px}
.lxt-calnav{border:none;background:none;cursor:pointer;color:var(--t2);width:28px;height:28px;
  border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;padding:0}
.lxt-calnav:hover{background:var(--gray-10)}
:root[data-theme="dark"] .lxt-calnav:hover{background:var(--gray-70)}
.lxt-calgrid{display:grid;grid-template-columns:repeat(7,34px);gap:2px;justify-content:center}
.lxt-caldow{font-size:12px;color:var(--t3);text-align:center;padding:2px 0 4px}
.lxt-calday{border:none;background:none;cursor:pointer;height:30px;border-radius:var(--r-pill);
  font-size:13px;color:var(--t1);font-family:inherit;padding:0}
.lxt-calday:hover{background:var(--gray-10)}
:root[data-theme="dark"] .lxt-calday:hover{background:var(--gray-70)}
.lxt-calout{color:var(--t3);opacity:.55}
.lxt-caltoday{color:var(--primary);font-weight:600}
.lxt-calon,.lxt-calon:hover{background:var(--primary);color:var(--on-primary);font-weight:600}
.lxt-calft{display:flex;justify-content:flex-end;padding:var(--sp-8) var(--sp-6) 0;
  border-top:1px solid var(--line);margin-top:var(--sp-8)}
.lxt-calft button{border:none;background:none;color:var(--primary);cursor:pointer;font-size:13px;padding:2px 4px}
/* 右键菜单行数旋钮（261101f 老板条4） */
.lxt-nspin{width:52px;height:26px;text-align:center;padding:0 2px;margin:0 var(--sp-4);
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--card);color:var(--t1);
  font-family:inherit;font-size:13px;appearance:textfield}
.lxt-grid td.lxt-celled{cursor:pointer}
.lxt-grid td.lxt-celled:hover{background:var(--primary-soft)}
.lxt-grid td.lxt-cedit{outline:2px solid var(--primary);outline-offset:-2px;background:var(--card);cursor:text}
.lxt-cin{width:100%;height:100%;border:0;background:transparent;color:var(--t1);font:inherit;
  outline:none;padding:0;min-width:0}

/* ── 网格·添加记录空行（最下方；首格 ✓=收起；空值格=可点编辑） ── */
.lxt-addrow td{height:34px;color:var(--t3)}
.lxt-addrow td.lxt-celled:hover{background:var(--primary-soft)}
.lxt-addrow .lxt-idx{color:var(--primary);font-weight:600}

/* ── 表尾统计行（261029 复刻附件3/4；261030 走查元素7 换代；261031 真机二修）：sticky bottom
   通栏与表体无缝；首格=全表统计（默认计数、纯数字无单位，可点开菜单 选计数/取消统计）；各列点格换
   统计口径（取消统计+已填写/未填写/计数/合计，再点当前项=取消）；对齐=与单元格一致全部左对齐。
   261031 二修（真机复验定案）：该 WebView 上 sticky 格自身与流内子盒的底色/边框一律不画（六轮与
   一修皆栽此处）；真机可靠画布=绝对定位子件（.lxt-statcnt 历轮一直正常）+ #lxtBody 伪元素（磨砂带）。
   格=纯几何（零涂装+z3）；视觉走 .lxt-statcell 绝对定位 span（top:0 恒 34 高、left/right:0 随格宽，
   不吃格高真机塌陷），APP 另加 ::before 通栏卡底面兜底（伪元素画布，格内件万一全灭也有整条实底） ── */
.lxt-grid tfoot td{border:0;background:none;height:34px;padding:0;font-size:13px;color:var(--t3);
  cursor:pointer;overflow:visible}
.lxt-grid tfoot td::after{content:'';display:block;height:34px}  /* 流内几何锚：格内容全在绝对定位 span 里，防真机行高塌陷（只吃布局不吃涂装） */
.lxt-statcell{position:absolute;left:0;right:0;top:0;height:34px;box-sizing:border-box;display:flex;
  align-items:center;padding:0 var(--sp-10);white-space:nowrap;
  background:var(--card);border-top:1px solid var(--line-strong);border-bottom:0;border-left:1px solid var(--line)}
.lxt-grid tfoot td:first-child .lxt-statcell{border-left:0}
.lxt-grid tfoot td:hover .lxt-statcell{background:var(--lxt-sub)}
.lxt-grid tfoot td.lxt-stat.has{color:var(--t1);text-align:left;font-variant-numeric:tabular-nums}
.lxt-grid tfoot td.lxt-stat-all{cursor:default}
.lxt-grid tfoot td.lxt-stat-all:hover .lxt-statcell{background:var(--card)}
.lxt-grid tfoot td.lxt-stat-all[onclick]{cursor:pointer}
.lxt-grid tfoot td.lxt-stat-all[onclick]:hover .lxt-statcell{background:var(--lxt-sub)}
.lxt-statcell-idx{padding:0}
/* 首格计数=居中（261101e 老板条4：与序号列同对齐） */
.lxt-statcell-idx .lxt-statcnt{left:0;right:0;justify-content:center}
.lxt-statcnt{position:absolute;left:0;top:0;bottom:0;display:flex;align-items:center;padding:0 8px;
  background:var(--card);white-space:nowrap;font-size:13px;color:var(--t1);font-variant-numeric:tabular-nums}

/* ── 数字格就地编辑=纯输入（261029 元素2：分润等数字列直接键入，无上下步进钮） ── */
.lxt-cin[type="number"]{appearance:textfield;-moz-appearance:textfield}
.lxt-cin[type="number"]::-webkit-outer-spin-button,
.lxt-cin[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}

/* ── 字段管理行（2610X-S9 元素5：↑↓ 退役=长按拖拽；行=卡片式 .flrow（拖拽 ghost 同源），
     拖柄在删除钮后面——与图表筛选行/时间范围行同一规范） ── */
.lxt-fmr.flrow{display:flex;align-items:center;gap:var(--sp-6);padding:6px 10px;margin-bottom:6px}
.lxt-fmr.flrow .flhandle{align-self:center}
.lxt-panel #lxtFmList{margin-bottom:var(--sp-6)}

/* ── 选择/关联面板已选胶囊（261031 老板元素1）：搜索框/标题下方回显已选项，
     悬停出 ×，点 × 清除——多选=就地摘除（完成/点面板外统一保存），单选=点 × 即提交清空。
     胶囊=.lxt-fchip 缩档（12px），× 悬停现形防误触 ── */
.lxt-selchips{display:flex;flex-wrap:wrap;gap:4px;padding:6px 0 2px}
.lxt-schip{display:inline-flex;align-items:center;gap:2px;max-width:100%;padding:3px 4px 3px 9px;
  border-radius:var(--r-xl);background:var(--gray-10);font-size:12px;color:var(--t1);overflow:hidden}
.lxt-schip-x{width:16px;height:16px;flex:none;border:0;border-radius:50%;background:none;color:var(--t3);
  cursor:pointer;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s}
.lxt-schip:hover .lxt-schip-x,.lxt-schip-x:focus-visible{opacity:1}
.lxt-schip-x:hover{color:var(--destructive)}
.lxt-schip-x .ic{width:10px;height:10px}

/* ══ 数据表居中弹层壳（261101：字段编辑+关联选择共用）══
   z118 档（规范§2.3 表行25）：高于全屏表页 115，低于 toast 120 与 #pmenu 150 */
.lxdmask{position:fixed;inset:0;background:rgba(16,17,24,.45);z-index:118;display:none;
  align-items:center;justify-content:center;padding:16px}
.lxdmask.on{display:flex}
.lxd{width:100%;max-width:480px;max-height:min(86vh,860px);overflow:auto;background:var(--card);
  border-radius:var(--r-2xl);box-shadow:var(--shadow-pop);padding:var(--sp-16)}
.lxd.wide{max-width:min(1180px,86vw);width:86vw;height:86vh;max-height:none;display:flex;flex-direction:column;padding:0}
.lxd.full{max-width:none;width:97vw;height:97vh}
/* 261103g 老板元素6：列宽/字段顺序弹层=L4 抽屉。遮罩仍全窗（拦截 L3 点击，点空白关闭），
   暗底与面板只按 --l4l/--l4t/--l4w/--l4h 铺满当前 L4 区（渠道详情 #dpage / 规划 #planPage）；
   APP 端或找不到 L4 时 lxL4Pos 不加 .l4in，回退全窗居中。 */
#lxdlg.l4in{background:transparent;padding:0;display:block}
#lxdlg.l4in::before{content:'';position:absolute;left:var(--l4l,0);top:var(--l4t,0);
  width:var(--l4w,100%);height:var(--l4h,100%);background:rgba(16,17,24,.45)}
#lxdlg.l4in .lxd{position:absolute;left:var(--l4l,0);top:var(--l4t,0);
  width:var(--l4w,100%);height:var(--l4h,100%);max-width:none;max-height:none;
  border-radius:0;box-shadow:none;padding:0;background:var(--card);display:flex;flex-direction:column;overflow:hidden}
#lxdlg.l4in .lxd>.lxfem{flex:1;height:auto;max-height:none!important;overflow:auto;box-sizing:border-box;
  display:flex;flex-direction:column}
#lxdlg.l4in .lxd>.lxfem>*{flex:none}
#lxdlg.l4in .lxd>.lxfem>.lxf-acts{margin-top:auto}

/* ── 字段编辑弹窗（钉钉复刻堆叠行）── */
.lxf-row{padding:var(--sp-6) 0}
.lxf-row .fin{width:100%;box-sizing:border-box}
.lxf-row textarea.fin{min-height:56px;resize:vertical;line-height:1.5;padding:8px 10px;font-family:var(--font-ui)}   /* 261108d 元素7：表备注 */
.lxf-name{height:40px;font-size:14px;font-weight:600}
.lxf-k{font-size:13px;color:var(--t2);margin:0 0 var(--sp-6);display:flex;align-items:center;gap:4px}
.lxf-rotype{display:flex;align-items:center;gap:var(--sp-8);height:40px;padding:0 var(--sp-12);
  border:1px solid var(--line);border-radius:var(--r-lg);background:var(--bg);font-size:14px;color:var(--t1)}
.lxf-rotype .ic{width:16px;height:16px;color:var(--primary)}
/* 数据同步字段类型行（261101d 条1）：同步图标=success 绿（与「数据同步字段」语义同色） */
.lxf-rotype use[href="#r-ty-sync"]{color:var(--success)}
.lxf-cfg{border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-4) var(--sp-12)}
.lxf-cb{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-10) 0;font-size:14px;color:var(--t1);cursor:pointer}
.lxf-cb input{width:16px;height:16px;flex:none;accent-color:var(--primary)}
.lxf-cfg #lxtFeViewWrap,.lxf-cfg .lxf-conds{padding:0 0 var(--sp-10)}
.lxf-cfg #lxtFeViewWrap .fin,.lxf-conds .lxf-match{height:36px}
.lxf-conds{border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-8) var(--sp-10);margin-top:var(--sp-6)}
.lxf-chead{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-6)}
.lxf-chead span{font-size:13px;color:var(--t2)}
.lxf-match{width:auto;min-width:132px;font-size:12px}
.lxf-crow{display:flex;align-items:center;gap:var(--sp-6);padding:var(--sp-4) 0}
.lxf-crow .fin{flex:1;min-width:0;height:36px}
.lxf-crow select.fin{flex:1.2}
.lxf-cval{flex:1.4;min-width:0}
.lxf-cval .fin{width:100%}
.lxf-cval .lxf-lkval{display:block;text-align:left;font-size:13px;color:var(--t3);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.lxf-cneg{flex:none;width:28px;height:28px;border:1px solid var(--line-strong);border-radius:50%;
  background:var(--card);color:var(--t3);font-size:12px;cursor:pointer}
.lxf-cneg.on{border-color:var(--primary);color:var(--primary)}
.lxf-acts{display:flex;justify-content:flex-end;gap:var(--sp-10);margin-top:var(--sp-14)}

/* ── 关联选择大弹窗（钉钉复刻：页头/TAB/搜索条/网格/底部动作）── */
.lxt-lkd{display:flex;flex-direction:column;height:100%;min-height:0}
.lxt-lkhd{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-12) var(--sp-16) var(--sp-8)}
.lxt-lkht b{font-size:15px;color:var(--t1);margin-right:var(--sp-10)}
.lxt-lkht span{font-size:13px;color:var(--t3)}
.lxt-lkhacts{display:flex;gap:var(--sp-4)}
.lxt-lkxb{width:30px;height:30px;border:none;border-radius:50%;background:none;color:var(--t3);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center}
.lxt-lkxb:hover{background:var(--gray-10);color:var(--t1)}
.lxt-lkxb .ic{width:15px;height:15px}
.lxt-lktabs{display:flex;gap:var(--sp-16);padding:0 var(--sp-16);border-bottom:1px solid var(--line)}
.lxt-lktabs span{padding:var(--sp-8) 0 var(--sp-10);font-size:14px;color:var(--t2);cursor:pointer;
  border-bottom:2px solid transparent;margin-bottom:-1px}
.lxt-lktabs span.on{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}
/* 261103d 老板元素1-3：图标移进搜索框，内高 32px、圆角=全局搜索入口卡同档（--r-2xl）；
   右侧列筛选占位钮退役，输入框吃满整行（左右仍守 16px 供位） */
.lxt-lkbar{position:relative;display:flex;align-items:center;padding:var(--sp-10) var(--sp-16)}
.lxt-lkbar .ic{position:absolute;left:28px;top:50%;transform:translateY(-50%);width:14px;height:14px;
  color:var(--t3);pointer-events:none}
.lxt-lkbar .fin{flex:1;width:100%;height:32px;border-radius:var(--r-2xl);box-sizing:border-box;
  padding:0 var(--sp-12) 0 34px}
.lxt-lkgrid{flex:1;min-height:0;overflow:auto;border-top:1px solid var(--line);padding:0 var(--sp-8)}
.lxt-lkgrid table{border-collapse:collapse;width:100%;font-size:13px}
.lxt-lkgrid th{position:sticky;top:0;z-index:2;background:var(--card);text-align:left;font-size:13px;
  font-weight:600;color:var(--t3);padding:var(--sp-8) var(--sp-10);white-space:nowrap;cursor:pointer;
  border-bottom:1px solid var(--line);user-select:none}
.lxt-lkgrid th:hover{color:var(--primary)}
.lxt-lksa{color:var(--primary);margin-left:2px}
.lxt-lkgrid td{padding:var(--sp-8) var(--sp-10);color:var(--t1);white-space:nowrap;max-width:240px;
  overflow:hidden;text-overflow:ellipsis;border-bottom:1px solid var(--line)}
.lxt-lkgrid tr{cursor:pointer}
.lxt-lkgrid tbody tr:hover td{background:var(--lxt-sub)}
.lxt-lkgrid tbody tr.on td{background:var(--primary-soft)}
.lxt-lkck{width:38px;padding-right:0!important}
.lxt-lkckbox{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;
  border:1.5px solid var(--gray-30);border-radius:4px;background:var(--card);color:#fff}
.lxt-lkckbox.on{background:var(--primary);border-color:var(--primary)}
.lxt-lkckbox .ic{width:10px;height:10px}
.lxt-lkempty{padding:48px 0;text-align:center;color:var(--t3);font-size:13px}
.lxt-lkft{display:flex;align-items:center;gap:var(--sp-10);padding:var(--sp-10) var(--sp-16);border-top:1px solid var(--line)}
.lxt-lkn{font-size:13px;color:var(--t3)}
.lxt-lkft .dlgbtn{min-height:36px}
