xiaodao-spreader 0.1.35 → 0.1.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/README.ZH.md +87 -2
  2. package/README.md +87 -2
  3. package/dist/style.css +1 -1
  4. package/dist/types/components/spreader/components/data-validation-input-message.vue.d.ts +8 -8
  5. package/dist/types/components/spreader/components/dropdown.vue.d.ts +4 -1
  6. package/dist/types/components/spreader/components/pickers/border-picker.vue.d.ts +3 -0
  7. package/dist/types/components/spreader/components/pickers/calc-picker.vue.d.ts +2 -0
  8. package/dist/types/components/spreader/components/pickers/color-picker.vue.d.ts +3 -0
  9. package/dist/types/components/spreader/components/pickers/conditional-format-menu.vue.d.ts +9 -1
  10. package/dist/types/components/spreader/components/pickers/data-validation-alert.vue.d.ts +2 -2
  11. package/dist/types/components/spreader/components/pickers/data-validation-dialog.vue.d.ts +4 -4
  12. package/dist/types/components/spreader/components/pickers/data-validation-dropdown.vue.d.ts +12 -10
  13. package/dist/types/components/spreader/components/pickers/filter-popup.vue.d.ts +2 -0
  14. package/dist/types/components/spreader/components/pickers/merge-picker.vue.d.ts +3 -0
  15. package/dist/types/components/spreader/components/pickers/outline-picker.vue.d.ts +32 -0
  16. package/dist/types/components/spreader/components/pickers/sort-picker.vue.d.ts +3 -0
  17. package/dist/types/components/spreader/components/spreader.vue.d.ts +43 -0
  18. package/dist/types/components/spreader/components/tabbar.vue.d.ts +2 -0
  19. package/dist/types/components/spreader/components/toolbar.vue.d.ts +29 -0
  20. package/dist/types/components/spreader/composables/core-state.d.ts +41 -1
  21. package/dist/types/components/spreader/composables/interactions.d.ts +10 -0
  22. package/dist/types/components/spreader/composables/useFloatMenuPosition.d.ts +39 -0
  23. package/dist/types/components/spreader/core/autofill.d.ts +11 -2
  24. package/dist/types/components/spreader/core/constants.d.ts +2 -0
  25. package/dist/types/components/spreader/core/outline-core.d.ts +64 -0
  26. package/dist/types/components/spreader/core/types.d.ts +24 -0
  27. package/dist/types/components/spreader/core/utils.d.ts +20 -0
  28. package/dist/xiaodao-spreader.es.js +8597 -7810
  29. package/dist/xiaodao-spreader.umd.js +9 -9
  30. package/package.json +1 -1
package/README.ZH.md CHANGED
@@ -34,6 +34,8 @@
34
34
  - **自动筛选(AutoFilter)**: 类 Excel 的普通区域自动筛选。工具栏「数据 → 筛选」或 `Ctrl+Shift+L` 启用;选择一个数据单元格(或单行多列选区)后启用,即从该表头行向下智能探测连续数据区;各列表头显示筛选下箭头,点击箭头打开筛选面板(值 / 文本 / 数值 / 日期 / 搜索 / 空值 / 多列 AND)。清除某列条件只清该列、移除 AutoFilter 清全部;仅在 Filter Range 内的列拥有箭头;单选已合并单元格且无筛选态时禁用筛选按钮,*见 [自动筛选(AutoFilter)](#自动筛选autofilter)*
35
35
  - **查找与替换**: 工具栏查找按钮或 `Ctrl/Cmd+F`(含 `Ctrl/Cmd+H`)打开;支持「当前工作表 / 整个工作簿 / 当前选区」三种范围,区分大小写、匹配整个单元格;高亮全部匹配并定位当前项、循环查找;单次与全部替换均接入撤销/重做,仅修改单元格原始 `value`(始终保持字符串),不改动格式 / 边框 / 合并
36
36
  - **条件格式**: 按工作表存储条件格式规则(`SheetState.conditionalFormats`)。工具栏「条件格式」下拉提供高亮单元格预设(大于 / 小于 / 介于 / 文本包含 / 重复 / 唯一 / 空白 / 非空白)以及「新建规则」对话框(支持单元格值条件和自定义公式条件)。规则渲染为基础单元格样式之上的临时覆盖层,绝不写回底层 `value` 或 `styleId`。规则优先级(数值越小优先级越高)、`stopIfTrue` 语义、单元格值变化时自动失效缓存。插入/删除行列时通过与自动填充相同的 `shiftFormulaRefs` 引擎自动调整规则范围与公式引用(`$B$2` 绝对引用保持固定)。内置「管理规则」对话框可编辑、排序、删除规则;「清除规则」子菜单支持清除全部或按选区清除。渲染时与基础样式正确合成背景色、文字颜色、粗体、斜体、下划线、删除线。*见 [条件格式](#条件格式)*
37
+ - **数据验证**: 按工作表存储类 Excel 数据验证规则。工具栏「数据验证」按钮打开对话框,设置允许类型(任何值 / 列表 / 整数 / 小数 / 日期 / 时间 / 文本长度 / 自定义公式)、运算符(介于 / 不介于 / 等于 / 大于 ……)与条件值。列表验证在单元格内显示下拉,支持搜索与完整键盘操作(↑ ↓ / Home / End / PageUp / PageDown / Enter / Esc)。支持逐条输入信息提示与出错警告(停止 / 警告 / 信息):验证发生在值写入之前,停止级违规直接拒绝录入,警告/信息级由用户确认后继续。同一范围的多条规则必须全部通过。规则随 v-model 持久化、接入撤销/重做,并在行列增删时自动调整范围。复制/粘贴与自动填充走原子校验——出现停止级违规则整次取消。*见 [数据验证](#数据验证)*
38
+ - **行列分组与折叠**: 类 Excel 的行/列分组(Outline)。选中整行或整列后,工具栏「分组」下拉(位于排序与筛选之间)提供添加分组 / 取消分组 / 清除分组 / 全部展开 / 全部折叠,直接作用于选中轴;行/列右键菜单提供同构的「分组」子菜单。仅支持一层、互不相交的分组,嵌套或部分重叠会被校验拒绝并提示。分组区间在行号/列号带用交替背景色区分,± 折叠按钮浮动于表头带内,不占用独立 gutter。折叠的行/列不参与内容绘制;插入/删除行列时分组范围自动平移、被清空的分组自动删除。分组状态按工作表持久化(`rowOutlines` / `columnOutlines`),增删与折叠均接入撤销/重做。*见 [行列分组与折叠](#行列分组与折叠)*
37
39
  - **自动填充(填充柄)**: 类 Excel 的活动选区右下角填充柄,按住向上/下/左/右拖拽即可填充单元格:单值复制、数字/日期/文本数字自动续序列(如 `1,2 → 3,4,5`)、公式引用按相对/绝对/混合规则平移(如 `=A1*2 → =A2*2`)、源 `styleId` 经样式池复用。拖拽期间实时预览、边缘自动滚动、动态扩展工作表、冻结窗格兼容、单次拖拽仅产生一个撤销步骤,*见 [自动填充](#自动填充)*
38
40
 
39
41
  ### 交互体验
@@ -422,6 +424,89 @@ CF 引擎的 `shiftFormulaRefsSafe` 复用公式引擎的 `shiftFormulaRefs` 函
422
424
 
423
425
  ---
424
426
 
427
+ ## 数据验证
428
+
429
+ 类 Excel 数据验证,按工作表存储在 `SheetState.dataValidations`(`DataValidationRule[]`)。引擎位于 `spreader/core/data-validation.ts`,纯逻辑实现、零 Vue/Canvas 依赖,单元测试见 `test/data-validation.test.ts` 与 `test/data-validation-integration.test.ts`。
430
+
431
+ ### 规则结构
432
+
433
+ 每条规则拥有稳定 `id`、`type`(类型)、`operator`(运算符)、条件值 `formula1`/`formula2`、一个或多个 `ranges`(应用范围)、`allowBlank`(忽略空值)、`showDropdown`(显示下拉)、输入信息字段(`showInputMessage`、`inputTitle`、`inputMessage`)、出错警告字段(`showErrorMessage`、`errorStyle`、`errorTitle`、`errorMessage`)与 `enabled`(启用开关)。
434
+
435
+ ### 支持的类型与运算符
436
+
437
+ | 类型 | 说明 |
438
+ |------|------|
439
+ | `any` | 无约束——在对话框选中「任何值」并确定即清除该范围验证 |
440
+ | `list` | 单元格内下拉,来源于固定值或单元格范围 |
441
+ | `wholeNumber` / `decimal` | 数值约束 |
442
+ | `date` / `time` | 日期 / 时间约束(ISO、`YYYY年M月D日`、美式 `m/d/yyyy` 或 Excel 序列号) |
443
+ | `textLength` | 文本长度约束 |
444
+ | `custom` | 相对于候选单元格求值的公式,如 `=AND(B2>=0,B2<=100)` |
445
+
446
+ 所有值类型支持 8 种运算符:`between`(介于)、`notBetween`(不介于)、`equal`(等于)、`notEqual`(不等于)、`greaterThan`(大于)、`greaterThanOrEqual`(大于等于)、`lessThan`(小于)、`lessThanOrEqual`(小于等于)。`between`/`notBetween` 需要同时填 `formula1`(最小值)与 `formula2`(最大值);其余运算符只用 `formula1`。
447
+
448
+ ### 列表来源
449
+
450
+ 列表验证的数据来自固定 `values`(`{ type: 'values', values: [...] }`)或范围引用(`{ type: 'range', range, sheetId }`);后者在源单元格变化时动态更新。
451
+
452
+ ### 验证流程
453
+
454
+ 验证发生在值写入**之前**。`commitEdit` 返回 `Promise<boolean>`——`false` 表示停止级违规拒绝了录入、编辑器状态保留。警告/信息级会调用 `showValidationAlert` 并等待用户确认后再继续。同一范围有多条规则时**必须全部通过**(`rules.every()`)。
455
+
456
+ ### 范围索引
457
+
458
+ 空间行分带索引(`DvIndex`)将 (row, col) 查询映射到候选规则,O(1) 且零每次输入分配,因此单条覆盖 A1:A100000 的规则依然轻量。
459
+
460
+ ### 原子粘贴 / 自动填充
461
+
462
+ 复制/粘贴与自动填充先算出全部候选值、跑 `validateCells`,只要出现一条停止级违规就整次取消——不会出现部分提交。
463
+
464
+ ### 插入 / 删除传播
465
+
466
+ `adjustDvRangeForInsert/Delete` 与 `translateDvRange` 复用公式引擎的 `shiftFormulaRefs`,因此绝对引用固定不动、相对引用正确平移;范围随之扩展/收缩,完全被移除的规则自动删除。
467
+
468
+ ### UI 组件
469
+
470
+ | 文件 | 职责 |
471
+ |------|------|
472
+ | `data-validation-dialog.vue` | 工具栏「数据验证」对话框:类型/运算符/值、列表来源、输入信息、出错警告、应用范围;保存时校验最小值/最大值字面量 |
473
+ | `data-validation-dropdown.vue` | 单元格内列表下拉:虚拟列表、搜索框、完整键盘操作(↑ ↓ / Home / End / PageUp / PageDown / Enter / Esc) |
474
+ | `data-validation-alert.vue` | 停止 / 警告 / 信息 警告框 |
475
+ | `data-validation-input-message.vue` | 悬停提示气泡,显示规则的输入信息(位于 `components/`,不在 `pickers/`) |
476
+
477
+ ### 持久化与撤销
478
+
479
+ 规则随工作表 v-model(`dataValidations` 字段)持久化,在保存/加载/复制工作表中往返,并像其他工作表改动一样接入撤销/重做栈。
480
+
481
+ ---
482
+
483
+ ## 行列分组与折叠
484
+
485
+ 类 Excel 的行/列分组与折叠(`spreader/core/outline-core.ts` 纯函数引擎 + `composables/core-state.ts` 状态层 + `composables/interactions.ts` Canvas 绘制层)。
486
+
487
+ ### 数据模型
488
+
489
+ 分组按工作表、按轴存储于 `SheetState.rowOutlines` / `columnOutlines`(`DimensionOutline[]`,随 v-model 序列化)。每条分组包含稳定 `id`、`start` / `end`(0-based 闭区间)、`level`(恒为 1)、`collapsed`。
490
+
491
+ ### 校验规则
492
+
493
+ `validateGroup` 在创建前校验:至少 2 个连续行/列;与既有分组必须完全不相交(部分重叠提示「分组范围与现有分组交叉」);禁止嵌套(`MAX_OUTLINE_LEVEL = 1`,提示「分组不能嵌套,仅支持一层」)。取消分组要求选区完整覆盖至少一个分组,否则提示调整选区。
494
+
495
+ ### 渲染与折叠
496
+
497
+ 分组区间在行号/列号带用交替背景色区分;± 折叠按钮(约 9px)浮动于表头带内,不预留独立 gutter 分区。折叠的行/列在内容、边框、表头文字绘制时统一跳过(0 尺寸防残影),与滚动、冻结窗格兼容。
498
+
499
+ ### 入口
500
+
501
+ - 工具栏「分组」下拉(位于排序与筛选之间):仅在选中整行或整列时可用,菜单项(添加分组 / 取消分组 / 清除分组 / 全部展开 / 全部折叠)直接作用于选中轴,不再二次选择行/列
502
+ - 行/列右键菜单「分组」子菜单:按右键轴分发同构的菜单项
503
+
504
+ ### 传播与撤销
505
+
506
+ 插入/删除行列时分组范围经 `addOutlineForInsert` / `addOutlineForDelete` 平移,完全被清空的分组自动删除。分组的创建、取消、清除与折叠均产生撤销步骤;校验失败优先使用宿主注入的应用内提示(`showOutlineAlert` 钩子),未注入时回退 `window.alert`。单元测试见 `test/outline-core.test.ts`。
507
+
508
+ ---
509
+
425
510
  ## 自动填充
426
511
 
427
512
  一套类 Excel 的填充柄机制(`spreader/core/autofill.ts` 纯引擎 + `composables/interactions.ts` 画布/交互层)。拖动活动选区右下角的小方块即可填充单元格,无 DOM 句柄,全部在 Canvas 上绘制。
@@ -645,8 +730,8 @@ x-spreader 以触屏为第一交互:每个鼠标操作都有对称的触屏路
645
730
  ### 中期
646
731
 
647
732
  - [x] 冻结窗格(冻结行/列), *见 [冻结窗格](#功能特性)*
648
- - [ ] 数据验证(下拉列表、输入约束)
649
- - [ ] 行列分组与折叠
733
+ - [x] 数据验证:下拉列表、输入约束(任何值 / 列表 / 整数 / 小数 / 日期 / 时间 / 文本长度 / 自定义公式),列表下拉支持搜索与键盘导航,输入信息与出错警告(停止 / 警告 / 信息),粘贴/自动填充原子校验,撤销重做与持久化;见 [数据验证](#数据验证)
734
+ - [x] 行列分组与折叠:*见 [行列分组与折叠](#行列分组与折叠)*
650
735
  - [x] 排序与筛选:按展示内容排序,含类 Excel「排序提醒」对话框(扩展选定区域 / 仅对选定区域排序);见 [排序与排序提醒](#功能特性)
651
736
  - [x] 自动筛选(AutoFilter):工具栏「筛选」/`Ctrl+Shift+L` 启用,表头下箭头、智能向下探测数据区、值/文本/数值/日期多类型筛选、清除单列与整体移除分离;见 [自动筛选(AutoFilter)](#自动筛选autofilter)
652
737
  - [x] 触屏与移动端交互:选择 / 右键菜单 / 筛选 / 列宽行高 / 框选 / 格式刷 / tab 菜单均补齐对称触屏路径,浮层支持点外部关闭;见 [触屏与移动端交互](#触屏与移动端交互)
package/README.md CHANGED
@@ -33,7 +33,9 @@ A high-performance, canvas-based spreadsheet component for Vue 3: bringing an Ex
33
33
  - **Auto Filter (AutoFilter)**: Excel-style auto filter on a normal range. Enable via the toolbar **Data → Filter** or `Ctrl+Shift+L`; select a data cell (or a single-row multi-column range) and the filter is created by intelligently probing the contiguous data region **downward** from that header row. Each column header shows a filter drop-down arrow; opening it reveals the filter panel (values / text / number / date / search / blanks / multi-column AND). Clearing one column's criteria clears only that column; removing the AutoFilter clears everything. Only columns inside the Filter Range get an arrow; selecting a single merged cell with no active filter disables the filter button — *see [Auto Filter (AutoFilter)](#auto-filter-autofilter)*
34
34
  - **Find & Replace**: Open via the toolbar find button or `Ctrl/Cmd+F` (also `Ctrl/Cmd+H`); three scopes: current sheet / entire workbook / current selection; match case and match entire cell; highlights all matches and locates the active one with wrap-around navigation; single and replace-all both integrate with undo/redo, mutating only the raw `value` (always kept a string), never format / border / merge
35
35
  - **Conditional Formatting**: Excel-style conditional formatting rules stored per-sheet. The toolbar "Conditional Formatting" dropdown offers preset rules (greater than / less than / between / text contains / duplicate / unique / blank / not blank) and a "New Rule" dialog with cell value and formula-based conditions. Rules render as temporary style overlays on top of the base cell style — no mutation of the underlying cell `value` or `styleId`. Rule priority (smaller number = higher), `stopIfTrue` semantics, and automatic cache invalidation on cell value change. Inserting / deleting rows or columns adjusts rule ranges and formula references via the same `shiftFormulaRefs` engine used by auto-fill. Includes a "Manage Rules" dialog for editing, reordering, and deleting rules; the "Clear Rules" sub-dialog lets you clear all rules or rules from selected ranges. Render-time style synthesis correctly composes CF background, font color, bold, italic, underline, and strikethrough with the base cell style. *see [Conditional Formatting](#conditional-formatting)*
36
+ - **Data Validation**: Excel-style data validation rules stored per-sheet. The toolbar "Data Validation" button opens a dialog to set the allowed type (any value / list / whole number / decimal / date / time / text length / custom formula), the operator (between, not between, equal, greater than, …), and the criterion values. List validation shows an in-cell dropdown with search and full keyboard navigation (↑ ↓ / Home / End / PageUp / PageDown / Enter / Esc). Per-rule input message and error alert (Stop / Warning / Information) are supported; validation runs *before* the value is committed, so Stop-level violations reject the edit while Warning/Information let the user confirm. All rules on a range must pass. Rules persist through v-model, integrate with undo/redo, and adjust automatically on row/column insert/delete. Copy/paste and Auto Fill validate atomically — a Stop violation cancels the whole operation. *see [Data Validation](#data-validation)*
36
37
  - **Auto Fill (Fill Handle)**: Excel-style fill handle at the bottom-right corner of the active selection. Drag it up/down/left/right to fill cells: single values copy, number/date/text-number sequences auto-continue (e.g. `1,2 → 3,4,5`), formula references adjust per relative/absolute/mixed rules (e.g. `=A1*2` → `=A2*2`), and source `styleId` is reused via the style pool. Live preview during drag, edge auto-scroll, dynamic sheet expansion, freeze-pane compatibility, and a single undo step per operation: *see [Auto Fill](#auto-fill)*
38
+ - **Row / Column Grouping & Collapsing**: Excel-style row/column outlines. Select whole rows or columns, then the toolbar "Group" dropdown (between Sort and Filter) offers Add Group / Ungroup / Clear Outline / Expand All / Collapse All, applied directly to the selected axis; row/column context menus expose a matching "Group" submenu. Only one level of non-overlapping groups is supported — nesting and partial overlap are rejected with a message. Group ranges get alternating background colors in the row/column header band; ± collapse buttons float inside the header band without reserving a separate gutter. Collapsed rows/columns are skipped during content rendering; inserting/deleting rows or columns shifts group ranges and auto-removes emptied groups. Groups persist per-sheet (`rowOutlines` / `columnOutlines`) through v-model, and every mutation integrates with undo/redo. *see [Row / Column Grouping & Collapsing](#row--column-grouping--collapsing)*
37
39
 
38
40
  ### Interaction
39
41
  - **Smart Selection**: Click, drag, Shift+Click, row/column header select, corner-cell select-all
@@ -419,6 +421,89 @@ Duplicate / unique / top-bottom / above-below rules need a value-frequency stati
419
421
 
420
422
  ---
421
423
 
424
+ ## Data Validation
425
+
426
+ Excel-style data validation stored per-sheet in `SheetState.dataValidations` (array of `DataValidationRule`). The engine lives in `spreader/core/data-validation.ts` — pure-logic, zero Vue/Canvas deps, with unit tests in `test/data-validation.test.ts` and `test/data-validation-integration.test.ts`.
427
+
428
+ ### Rule Structure
429
+
430
+ Each rule has a stable `id`, a `type`, an `operator`, criterion values `formula1`/`formula2`, one or more `ranges`, `allowBlank` (ignore blanks), `showDropdown`, input-message fields (`showInputMessage`, `inputTitle`, `inputMessage`), error-alert fields (`showErrorMessage`, `errorStyle`, `errorTitle`, `errorMessage`), and `enabled`.
431
+
432
+ ### Supported Types & Operators
433
+
434
+ | Type | Description |
435
+ |------|-------------|
436
+ | `any` | No constraint — selecting it on save clears validation for the range |
437
+ | `list` | In-cell dropdown from fixed values or a cell range |
438
+ | `wholeNumber` / `decimal` | Numeric constraint |
439
+ | `date` / `time` | Date / time constraint (ISO, `YYYY年M月D日`, US `m/d/yyyy`, or Excel serial) |
440
+ | `textLength` | String length constraint |
441
+ | `custom` | Formula evaluated relative to the candidate cell, e.g. `=AND(B2>=0,B2<=100)` |
442
+
443
+ All value types support 8 operators: `between`, `notBetween`, `equal`, `notEqual`, `greaterThan`, `greaterThanOrEqual`, `lessThan`, `lessThanOrEqual`. `between`/`notBetween` require both `formula1` (min) and `formula2` (max); the other operators use only `formula1`.
444
+
445
+ ### List Source
446
+
447
+ List validation resolves its items from either fixed `values` (`{ type: 'values', values: [...] }`) or a `range` reference (`{ type: 'range', range, sheetId }`) that updates dynamically when the source cells change.
448
+
449
+ ### Validation Flow
450
+
451
+ Validation runs **before** the value is committed. `commitEdit` returns `Promise<boolean>` — `false` means a Stop-level violation rejected the edit and the editor state is preserved. Warning/Information alerts call `showValidationAlert` and await user confirmation before proceeding. When multiple rules target the same range, **all** must pass (`rules.every()`).
452
+
453
+ ### Range Index
454
+
455
+ A spatial row-band index (`DvIndex`) maps a (row, col) lookup to candidate rules in O(1) with zero per-input allocation, so a single rule covering A1:A100000 stays cheap.
456
+
457
+ ### Atomic Paste / Auto Fill
458
+
459
+ Copy/paste and Auto Fill compute every candidate first, run `validateCells`, and cancel the whole operation if any Stop-level violation occurs — no partial commit.
460
+
461
+ ### Insert / Delete Propagation
462
+
463
+ `adjustDvRangeForInsert/Delete` and `translateDvRange` reuse the formula engine's `shiftFormulaRefs`, so absolute references stay fixed while relative refs shift; ranges expand/shrink and fully-removed rules auto-delete.
464
+
465
+ ### UI Components
466
+
467
+ | File | Role |
468
+ |------|------|
469
+ | `data-validation-dialog.vue` | Toolbar "Data Validation" dialog: type/operator/value, list source, input message, error alert, apply range; validates min/max literals on save |
470
+ | `data-validation-dropdown.vue` | In-cell list dropdown: virtual list, search box, full keyboard nav (↑ ↓ / Home / End / PageUp / PageDown / Enter / Esc) |
471
+ | `data-validation-alert.vue` | Stop / Warning / Information alert box |
472
+ | `data-validation-input-message.vue` | Hover tooltip showing the rule's input message (lives in `components/`, not `pickers/`) |
473
+
474
+ ### Persistence & Undo
475
+
476
+ Rules persist through the sheet v-model (`dataValidations` field), round-trip through save/load/dup-sheet, and integrate with the undo/redo stack like any other sheet mutation.
477
+
478
+ ---
479
+
480
+ ## Row / Column Grouping & Collapsing
481
+
482
+ Excel-style row/column grouping and collapsing (`spreader/core/outline-core.ts` pure engine + `composables/core-state.ts` state layer + `composables/interactions.ts` canvas rendering layer).
483
+
484
+ ### Data Model
485
+
486
+ Groups are stored per-sheet and per-axis in `SheetState.rowOutlines` / `columnOutlines` (`DimensionOutline[]`, serialized with v-model). Each group carries a stable `id`, `start` / `end` (0-based inclusive range), `level` (always 1), and `collapsed`.
487
+
488
+ ### Validation Rules
489
+
490
+ `validateGroup` checks before creation: at least 2 consecutive rows/columns; fully disjoint from existing groups (partial overlap reports "group range crosses existing groups"); nesting is rejected (`MAX_OUTLINE_LEVEL = 1`). Ungrouping requires the selection to fully cover at least one group, otherwise a hint is shown.
491
+
492
+ ### Rendering & Collapse
493
+
494
+ Group ranges get alternating background colors in the row/column header band; ± collapse buttons (~9px) float inside the header band without reserving a separate gutter. Collapsed rows/columns are skipped during content, border, and header-text rendering (0-size guard against ghost stripes), compatible with scrolling and frozen panes.
495
+
496
+ ### Entry Points
497
+
498
+ - Toolbar "Group" dropdown (between Sort and Filter): enabled only when whole rows or columns are selected; menu items (Add Group / Ungroup / Clear Outline / Expand All / Collapse All) act directly on the selected axis
499
+ - Row/column context menu "Group" submenu: dispatches the same items for the right-clicked axis
500
+
501
+ ### Propagation & Undo
502
+
503
+ Inserting/deleting rows or columns shifts group ranges via `addOutlineForInsert` / `addOutlineForDelete`; fully-emptied groups are auto-removed. Group create / ungroup / clear / collapse each produce one undo step. Validation failures prefer the host-injected in-app alert (`showOutlineAlert` hook), falling back to `window.alert`. Unit tests live in `test/outline-core.test.ts`.
504
+
505
+ ---
506
+
422
507
  ## Auto Fill
423
508
 
424
509
  An Excel-style fill-handle mechanism (`spreader/core/autofill.ts` pure engine + `composables/interactions.ts` canvas/interaction layer). Drag the small square at the bottom-right corner of the active selection to fill cells: no DOM handles, all drawn on Canvas.
@@ -642,8 +727,8 @@ x-spreader is touch-first: every mouse interaction has a symmetric touch path, v
642
727
  ### Mid-term
643
728
 
644
729
  - [x] Frozen panes (freeze rows/columns): *see [Freeze Panes](#features)*
645
- - [ ] Data validation (dropdown lists, input constraints)
646
- - [ ] Column / row grouping and collapsing
730
+ - [x] Data Validation: dropdown lists, input constraints (any value / list / whole number / decimal / date / time / text length / custom formula), list dropdown with search & keyboard nav, input message and error alert (Stop/Warning/Information), atomic paste/auto-fill validation, undo/redo and persistence; see [Data Validation](#data-validation)
731
+ - [x] Column / row grouping and collapsing: *see [Row / Column Grouping & Collapsing](#row--column-grouping--collapsing)*
647
732
  - [x] Sort & filter: sort by displayed content with Excel-style Sort Warning dialog (expand selection / current selection only); see [Sorting & Sort Warning](#features)
648
733
  - [x] Auto Filter (AutoFilter): toolbar "Filter" / `Ctrl+Shift+L` to enable, header drop-down arrows, intelligent downward data probing, value/text/number/date multi-type filters, separate clear-column vs remove-all; see [Auto Filter (AutoFilter)](#auto-filter-autofilter)
649
734
  - [x] Touch & mobile interaction: symmetric touch paths for select / context menu / filter / resize / range select / format brush / tab menu; popups close on outside tap; see [Touch & Mobile Interaction](#touch--mobile-interaction)
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .sp-dropdown[data-v-391d39ca]{position:relative;display:inline-flex;min-width:0}.sp-dropdown__trigger[data-v-391d39ca]{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%;height:26px;border:1px solid transparent;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;cursor:pointer;padding:0 5px;box-sizing:border-box}.sp-dropdown__trigger[data-v-391d39ca]:hover{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.sp-dropdown__trigger--open[data-v-391d39ca]{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6);border-color:var(--sp-toolbar-border, #d8d8d8)}.sp-dropdown__value[data-v-391d39ca]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.sp-dropdown__caret[data-v-391d39ca]{width:10px;height:10px;min-width:10px;opacity:.7}.sp-dropdown__menu[data-v-391d39ca]{position:fixed;z-index:40000;display:flex;flex-direction:column;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;padding:4px;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;transform-origin:top center}.sp-dropdown__menu--up[data-v-391d39ca]{transform-origin:bottom center}.menu-pop-enter-active[data-v-391d39ca],.menu-pop-leave-active[data-v-391d39ca]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-391d39ca],.menu-pop-leave-to[data-v-391d39ca]{opacity:0;transform:scaleY(.85)}.sp-dropdown__nav[data-v-391d39ca]{display:flex;align-items:center;justify-content:center;height:15px;min-height:15px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #666);cursor:pointer;padding:0;border-radius:3px}.sp-dropdown__nav[data-v-391d39ca]:hover:not(:disabled){background:#eef3f9}.sp-dropdown__nav[data-v-391d39ca]:disabled{color:#ccc;cursor:default}.sp-dropdown__nav svg[data-v-391d39ca]{width:10px;height:10px}.sp-dropdown__list[data-v-391d39ca]{display:flex;flex-direction:column;overflow:hidden;touch-action:none}.sp-dropdown__search[data-v-391d39ca]{flex:0 0 auto;height:26px;margin-bottom:4px;padding:0 8px;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:3px;font-size:12px;font-family:inherit;color:#1a1a1a;outline:none;box-sizing:border-box}.sp-dropdown__search[data-v-391d39ca]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.sp-dropdown__empty[data-v-391d39ca]{padding:6px 8px;font-size:12px;color:#999;text-align:center}.sp-dropdown__icon[data-v-391d39ca]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sp-dropdown__icon[data-v-391d39ca] svg{width:18px;height:18px;display:block}.sp-dropdown__item-icon[data-v-391d39ca]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sp-dropdown__item-icon[data-v-391d39ca] svg{width:16px;height:16px;display:block}.sp-dropdown__item-label[data-v-391d39ca]{white-space:nowrap}.sp-dropdown__item[data-v-391d39ca]{display:flex;align-items:center;gap:6px;width:100%;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;cursor:pointer;padding:4px 8px;box-sizing:border-box;border-radius:3px}.sp-dropdown__item[data-v-391d39ca]:hover{background:#eef3f9}.sp-dropdown__item--disabled[data-v-391d39ca]{color:#c9c9c9;cursor:default}.sp-dropdown__item--disabled[data-v-391d39ca]:hover{background:transparent}.sp-dropdown__item--active[data-v-391d39ca]{background:#e5f1fb;color:#0078d7}.color-picker[data-v-34b2d484]{position:relative;display:inline-flex;height:26px}.color-picker__menu[data-v-34b2d484]{position:fixed;z-index:40000;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;padding:6px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;transform-origin:top right}.menu-pop-enter-active[data-v-34b2d484],.menu-pop-leave-active[data-v-34b2d484]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-34b2d484],.menu-pop-leave-to[data-v-34b2d484]{opacity:0;transform:scale(.9)}.color-picker__row[data-v-34b2d484]{display:flex;gap:4px;margin-bottom:4px}.color-picker__row[data-v-34b2d484]:last-child{margin-bottom:0}.color-picker__swatch[data-v-34b2d484]{width:20px;height:20px;padding:0;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .08s,box-shadow .08s;position:relative}.color-picker__swatch[data-v-34b2d484]:hover{transform:scale(1.18);box-shadow:0 0 0 1px #0003;z-index:1}.color-picker__swatch--selected[data-v-34b2d484]{box-shadow:0 0 0 2px #0078d7}.border-picker[data-v-a6e24710]{position:relative;display:inline-flex;height:26px}.border-picker__menu[data-v-a6e24710]{position:fixed;z-index:9999;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;padding:4px;transform-origin:top right}.border-picker__item[data-v-a6e24710]{display:flex;align-items:center;gap:6px;width:100%;padding:4px 8px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);cursor:pointer;border-radius:3px;font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;white-space:nowrap}.border-picker__item[data-v-a6e24710]:hover{background:#eef3f9}.border-picker__icon[data-v-a6e24710]{width:18px;height:18px;flex-shrink:0}.border-picker__label[data-v-a6e24710]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-a6e24710],.menu-pop-leave-active[data-v-a6e24710]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-a6e24710],.menu-pop-leave-to[data-v-a6e24710]{opacity:0;transform:scale(.9)}.sort-picker[data-v-a6111c69]{position:relative;display:inline-flex;height:26px}.sort-picker__menu[data-v-a6111c69]{position:fixed;z-index:9999;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;padding:4px;transform-origin:top right}.sort-picker__item[data-v-a6111c69]{display:flex;align-items:center;gap:6px;width:100%;padding:4px 8px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);cursor:pointer;border-radius:3px;font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;white-space:nowrap}.sort-picker__item[data-v-a6111c69]:hover{background:#eef3f9}.sort-picker__icon[data-v-a6111c69]{width:18px;height:18px;flex-shrink:0}.sort-picker__label[data-v-a6111c69]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-a6111c69],.menu-pop-leave-active[data-v-a6111c69]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-a6111c69],.menu-pop-leave-to[data-v-a6111c69]{opacity:0;transform:scale(.9)}.merge-picker[data-v-78cf6d86]{position:relative;display:inline-flex;height:26px}.merge-picker__menu[data-v-78cf6d86]{position:fixed;z-index:9999;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;padding:4px;transform-origin:top right}.merge-picker__item[data-v-78cf6d86]{display:flex;align-items:center;gap:6px;width:100%;padding:4px 8px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);cursor:pointer;border-radius:3px;font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;white-space:nowrap}.merge-picker__item[data-v-78cf6d86]:hover{background:#eef3f9}.merge-picker__icon[data-v-78cf6d86]{width:18px;height:18px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.merge-picker__icon[data-v-78cf6d86] svg{width:18px;height:18px}.merge-picker__label[data-v-78cf6d86]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-78cf6d86],.menu-pop-leave-active[data-v-78cf6d86]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-78cf6d86],.menu-pop-leave-to[data-v-78cf6d86]{opacity:0;transform:scale(.9)}.cf-menu-root[data-v-7b3d8228]{display:flex;align-items:center;flex:0 0 auto;width:100%}.cf-menu-trigger[data-v-7b3d8228]{display:flex;align-items:center;justify-content:space-between;gap:4px;height:26px;width:100%;border:1px solid transparent;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;cursor:pointer;padding:0 5px;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;min-width:0}.cf-menu-trigger[data-v-7b3d8228]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.cf-menu-trigger[data-v-7b3d8228]:disabled{color:var(--sp-toolbar-btn-disabled-color, #aaa);cursor:default}.cf-menu-trigger__icon[data-v-7b3d8228]{width:16px;height:16px}.cf-menu-trigger__label[data-v-7b3d8228]{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.cf-menu-trigger__caret[data-v-7b3d8228]{width:10px;height:10px;opacity:.7;flex:none}.cf-menu[data-v-7b3d8228]{position:fixed;z-index:40000;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;padding:4px;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;transform-origin:top center;white-space:nowrap;display:flex;flex-direction:column}.cf-menu__body[data-v-7b3d8228]{max-height:calc(100vh - 120px);overflow-y:auto;scrollbar-width:none}.cf-menu__body[data-v-7b3d8228]::-webkit-scrollbar{display:none}.cf-menu__nav[data-v-7b3d8228]{flex:0 0 auto;height:18px;border:none;background:transparent;color:#888;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:3px}.cf-menu__nav[data-v-7b3d8228]:hover:not(:disabled){background:#eef3f9}.cf-menu__nav[data-v-7b3d8228]:disabled{color:#d5d5d5;cursor:default}.cf-menu__nav svg[data-v-7b3d8228]{width:10px;height:10px}.cf-menu__item[data-v-7b3d8228]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;text-align:left;cursor:pointer;padding:4px 8px;border-radius:3px;box-sizing:border-box}.cf-menu__item[data-v-7b3d8228]:hover{background:#eef3f9}.cf-menu__item--disabled[data-v-7b3d8228]{color:#c9c9c9;cursor:default}.cf-menu__item--disabled[data-v-7b3d8228]:hover{background:transparent}.cf-menu__item--sub[data-v-7b3d8228]{position:relative}.cf-menu__arrow[data-v-7b3d8228]{width:12px;height:12px;flex:none;fill:#888}.cf-menu__sep[data-v-7b3d8228]{height:1px;background:var(--sp-toolbar-border, #e0e0e0);margin:3px 4px}.cf-submenu-wrap[data-v-7b3d8228]{position:fixed;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;padding:4px;box-sizing:border-box;z-index:40000;white-space:nowrap;display:flex;flex-direction:column;transform-origin:top left}.cf-submenu-wrap--left[data-v-7b3d8228]{transform-origin:top right}.cf-submenu[data-v-7b3d8228]{max-height:calc(100vh - 120px);overflow-y:auto;scrollbar-width:none}.cf-submenu[data-v-7b3d8228]::-webkit-scrollbar{display:none}.cf-subnav[data-v-7b3d8228]{flex:0 0 auto;height:18px;border:none;background:transparent;color:#888;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:3px}.cf-subnav[data-v-7b3d8228]:hover:not(:disabled){background:#eef3f9}.cf-subnav[data-v-7b3d8228]:disabled{color:#d5d5d5;cursor:default}.cf-subnav svg[data-v-7b3d8228]{width:10px;height:10px}.cf-menu__subitem[data-v-7b3d8228]{display:block;width:100%;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;text-align:left;cursor:pointer;padding:4px 8px;border-radius:3px;box-sizing:border-box}.cf-menu__subitem[data-v-7b3d8228]:hover{background:#eef3f9}.cf-menu__subitem--disabled[data-v-7b3d8228]{color:#c9c9c9;cursor:default}.cf-menu__subitem--disabled[data-v-7b3d8228]:hover{background:transparent}.cf-pop-enter-active[data-v-7b3d8228],.cf-pop-leave-active[data-v-7b3d8228]{transition:opacity .12s ease-out,transform .12s ease-out}.cf-pop-enter-from[data-v-7b3d8228],.cf-pop-leave-to[data-v-7b3d8228]{opacity:0;transform:scaleY(.85)}.cf-sub-pop-enter-active[data-v-7b3d8228],.cf-sub-pop-leave-active[data-v-7b3d8228]{transition:opacity .12s ease-out,transform .12s ease-out}.cf-sub-pop-enter-from[data-v-7b3d8228],.cf-sub-pop-leave-to[data-v-7b3d8228]{opacity:0;transform:scale(.85)}.calc-picker[data-v-d9e95ea2]{position:relative;display:inline-flex;height:26px}.calc-picker__menu[data-v-d9e95ea2]{position:fixed;z-index:9999;min-width:120px;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;padding:4px;transform-origin:top right}.calc-picker__item[data-v-d9e95ea2]{display:flex;align-items:center;gap:6px;width:100%;padding:4px 8px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);cursor:pointer;border-radius:3px;font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;white-space:nowrap}.calc-picker__item[data-v-d9e95ea2]:hover:not(.calc-picker__item--disabled){background:#eef3f9}.calc-picker__item--disabled[data-v-d9e95ea2]{color:var(--sp-toolbar-btn-disabled-color, #bbb);cursor:default}.calc-picker__label[data-v-d9e95ea2]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-d9e95ea2],.menu-pop-leave-active[data-v-d9e95ea2]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-d9e95ea2],.menu-pop-leave-to[data-v-d9e95ea2]{opacity:0;transform:scale(.9)}.toolbar[data-v-886dd586]{position:relative;display:flex;align-items:center;height:32px;min-height:32px;gap:2px;padding:0 6px;background:var(--sp-toolbar-bg);border-bottom:1px solid var(--sp-toolbar-border);-webkit-user-select:none;user-select:none}.toolbar[data-v-886dd586]>*{opacity:0;transition:none}.toolbar.toolbar--ready[data-v-886dd586]>*{opacity:1;transition:opacity .15s ease-out}.tb-item[data-v-886dd586]{display:flex;align-items:center;flex:0 0 auto}.toolbar-sep[data-v-886dd586]{width:1px;height:18px;margin:0 4px;background:var(--sp-toolbar-border)}.toolbar-font[data-v-886dd586],.toolbar-number-format[data-v-886dd586],.toolbar-align[data-v-886dd586],.toolbar-freeze[data-v-886dd586]{flex:0 0 auto}.toolbar-font-size[data-v-886dd586],.toolbar-number-format-group[data-v-886dd586]{display:inline-flex;align-items:center;gap:0;height:26px;position:relative}.toolbar-font-size__input[data-v-886dd586]{width:36px;height:26px;border:1px solid transparent;border-right:none;border-radius:3px 0 0 3px;background:transparent;color:var(--sp-toolbar-btn-color);font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;text-align:left;padding:0 5px;outline:none;box-sizing:border-box;-webkit-appearance:none;appearance:none;-moz-appearance:textfield}.toolbar-font-size__input[data-v-886dd586]::-webkit-outer-spin-button,.toolbar-font-size__input[data-v-886dd586]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.toolbar-font-size__input[data-v-886dd586]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-font-size__input[data-v-886dd586]:focus{border-color:var(--sp-toolbar-border);background:#fff}.toolbar-font-size__btn[data-v-886dd586]{display:flex;align-items:center;justify-content:center;width:16px;height:26px;border:1px solid transparent;border-left:none;border-radius:0 3px 3px 0;background:transparent;color:var(--sp-toolbar-btn-color);cursor:pointer;padding:0}.toolbar-font-size__btn[data-v-886dd586]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-font-size__btn svg[data-v-886dd586]{width:10px;height:10px}.toolbar-font-size__dropdown[data-v-886dd586]{position:absolute;width:56px;height:26px;pointer-events:none}.toolbar-btn[data-v-886dd586]{display:flex;align-items:center;justify-content:center;width:30px;height:26px;border:none;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color);cursor:pointer;padding:0}.toolbar-btn[data-v-886dd586]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.toolbar-btn[data-v-886dd586]:active:not(:disabled){opacity:.7}.toolbar-btn--active[data-v-886dd586]{background:var(--sp-toolbar-btn-hover-bg);color:var(--sp-toolbar-btn-active-color)}.toolbar-btn--step[data-v-886dd586]{width:26px;height:26px}.toolbar-btn--step svg[data-v-886dd586]{width:16px;height:16px}.toolbar-btn[data-v-886dd586]:disabled{color:var(--sp-toolbar-btn-disabled-color);cursor:default}.toolbar-btn__icon[data-v-886dd586]{width:18px;height:18px}.toolbar-btn svg[data-v-886dd586]:not(.toolbar-btn__icon){width:18px;height:18px}.toolbar-btn__label[data-v-886dd586]{display:none;font-size:12px;margin-left:6px}.toolbar-split[data-v-886dd586]{display:inline-flex;align-items:center;position:relative;height:26px}.toolbar-split__main[data-v-886dd586]{border:1px solid transparent;border-right:none;border-radius:3px 0 0 3px}.toolbar-split__arrow[data-v-886dd586]{display:flex;align-items:center;justify-content:center;width:16px;height:26px;border:1px solid transparent;border-radius:0 3px 3px 0;background:transparent;color:var(--sp-toolbar-btn-color);cursor:pointer;padding:0}.toolbar-split__arrow[data-v-886dd586]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.toolbar-split__arrow svg[data-v-886dd586]{width:10px!important;height:10px!important}.toolbar-more[data-v-886dd586]{display:flex;align-items:center;justify-content:center;width:30px;height:26px;border:none;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color);cursor:pointer;padding:0;flex:0 0 auto;margin-left:auto}.toolbar-more[data-v-886dd586]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-more--active[data-v-886dd586]{background:var(--sp-toolbar-btn-hover-bg);color:var(--sp-toolbar-btn-active-color)}.toolbar-more svg[data-v-886dd586]{width:18px;height:18px}.overflow-menu-wrap[data-v-886dd586]{min-width:180px;max-width:260px;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border);border-radius:4px;box-shadow:0 4px 12px #0000001f;padding:4px 6px;z-index:1000;transform-origin:top right;display:flex;flex-direction:column}.overflow-menu-wrap.no-anim[data-v-886dd586]{transition:none!important}.overflow-menu[data-v-886dd586]{max-height:calc(100vh - 80px);overflow-y:auto;scrollbar-width:none;display:flex;flex-direction:column;gap:2px}.overflow-menu[data-v-886dd586]::-webkit-scrollbar{display:none}.overflow-nav[data-v-886dd586]{flex:0 0 auto;height:18px;border:none;background:transparent;color:#888;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:3px}.overflow-nav[data-v-886dd586]:hover:not(:disabled){background:#eef3f9}.overflow-nav[data-v-886dd586]:disabled{color:#d5d5d5;cursor:default}.overflow-nav svg[data-v-886dd586]{width:10px;height:10px}.overflow-menu .tb-item[data-v-886dd586]{width:100%}.overflow-menu .toolbar-sep[data-v-886dd586]{width:100%;height:1px;margin:2px 0}.overflow-menu .toolbar-split[data-v-886dd586]{width:100%}.overflow-menu .toolbar-split__main[data-v-886dd586]{flex:1 1 auto;justify-content:flex-start;padding-left:6px}.overflow-menu .toolbar-font-size[data-v-886dd586],.overflow-menu .toolbar-number-format-group[data-v-886dd586]{width:100%;justify-content:flex-start}.overflow-menu .toolbar-font[data-v-886dd586]{width:100%}.overflow-menu .toolbar-number-format[data-v-886dd586]{flex:1 1 auto;width:auto!important;min-width:0}.overflow-menu .toolbar-align[data-v-886dd586],.overflow-menu .toolbar-freeze[data-v-886dd586]{width:100%}.overflow-menu .toolbar-btn[data-v-886dd586]:not(.toolbar-btn--step):not(.toolbar-split__arrow):not(.toolbar-number-format__btn){width:100%;justify-content:flex-start;padding-left:6px}.overflow-menu .toolbar-btn__label[data-v-886dd586]{display:inline}.overflow-menu .toolbar-number-format__btn[data-v-886dd586]{flex:0 0 auto;width:30px}.overflow-menu .toolbar-color[data-v-886dd586]{width:100%}.overflow-menu .toolbar-wrap[data-v-886dd586]{width:100%;justify-content:flex-start}.overflow-menu .sp-dropdown .sp-dropdown__trigger[data-v-886dd586],.overflow-menu .cf-menu-root .cf-menu-trigger[data-v-886dd586]{padding-left:6px;gap:6px}.overflow-menu .cf-menu-trigger__icon[data-v-886dd586]{width:18px;height:18px}.menu-pop-enter-active[data-v-886dd586],.menu-pop-leave-active[data-v-886dd586]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-886dd586],.menu-pop-leave-to[data-v-886dd586]{opacity:0;transform:scale(.9)}.overflow-menu .tb-item{width:100%}.overflow-menu .toolbar-sep{width:100%;height:1px;margin:2px 0}.overflow-menu .toolbar-split{width:100%}.overflow-menu .toolbar-split__main{flex:1 1 auto;justify-content:flex-start;padding-left:6px}.overflow-menu .toolbar-font-size,.overflow-menu .toolbar-number-format-group{width:100%;justify-content:flex-start}.overflow-menu .toolbar-font{width:100%}.overflow-menu .toolbar-number-format{flex:1 1 auto;width:auto!important;min-width:0}.overflow-menu .toolbar-align,.overflow-menu .toolbar-freeze{width:100%}.overflow-menu .toolbar-btn:not(.toolbar-btn--step):not(.toolbar-split__arrow):not(.toolbar-number-format__btn){width:100%;justify-content:flex-start;padding-left:6px}.overflow-menu .toolbar-btn__label{display:inline}.overflow-menu .toolbar-number-format__btn{flex:0 0 auto;width:30px}.overflow-menu .toolbar-color{width:100%}.overflow-menu .toolbar-wrap{width:100%;justify-content:flex-start}.overflow-menu .sp-dropdown .sp-dropdown__trigger,.overflow-menu .cf-menu-root .cf-menu-trigger{padding-left:6px;gap:6px}.overflow-menu .cf-menu-trigger__icon{width:18px;height:18px}.overflow-menu .toolbar-font-size__input{flex:1 1 auto;width:auto;min-width:40px}.overflow-menu .toolbar-btn:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.overflow-menu .toolbar-btn:active:not(:disabled){opacity:.7}.overflow-menu .toolbar-btn--active{background:var(--sp-toolbar-btn-hover-bg);color:var(--sp-toolbar-btn-active-color)}.overflow-menu .toolbar-btn:disabled{color:var(--sp-toolbar-btn-disabled-color);cursor:default}.overflow-menu .toolbar-split__main:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.overflow-menu .toolbar-split__arrow:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.overflow-menu .toolbar-font-size__input:hover{background:var(--sp-toolbar-btn-hover-bg)}.overflow-menu .toolbar-font-size__input:focus{border-color:var(--sp-toolbar-border);background:#fff}.overflow-menu .toolbar-font-size__btn:hover,.overflow-menu .toolbar-more:hover{background:var(--sp-toolbar-btn-hover-bg)}.overflow-menu .toolbar-more--active{background:var(--sp-toolbar-btn-hover-bg);color:var(--sp-toolbar-btn-active-color)}.tab-bar[data-v-e00401ad]{display:flex;align-items:stretch;height:30px;min-height:30px;background:var(--sp-tab-bar-bg);border-top:1px solid var(--sp-tab-bar-border);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin-top:4px}.tab-list[data-v-e00401ad]{display:flex;align-items:flex-start;flex:1;overflow:hidden;gap:1px;padding:0 1px}.tab-item[data-v-e00401ad]{display:flex;align-items:center;height:28px;min-width:0;max-width:120px;padding:0 10px;cursor:pointer;border:1px solid var(--sp-tab-inactive-border);background:var(--sp-tab-inactive-bg);color:var(--sp-tab-inactive-color);font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;white-space:nowrap;transition:background .1s;-webkit-touch-callout:none}.tab-item[data-v-e00401ad]:hover{background:var(--sp-tab-hover-bg)}.tab-item--active[data-v-e00401ad]{height:28px;background:var(--sp-tab-active-bg);color:var(--sp-tab-active-color);border-color:var(--sp-tab-active-bg) var(--sp-tab-bar-border) var(--sp-tab-bar-border);border-top:2px solid var(--sp-tab-active-border)}.tab-item--active[data-v-e00401ad]:hover{background:var(--sp-tab-active-bg)}.tab-item__name[data-v-e00401ad]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-rename-input[data-v-e00401ad]{width:100%;height:18px;border:none;border-radius:0;outline:none;padding:0;font-size:14px;font-family:inherit;background:var(--sp-tab-active-bg);color:var(--sp-tab-active-color);box-sizing:border-box}.tab-bar__list-btn[data-v-e00401ad]{display:flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;margin:0 2px 3px 3px;border:none;background:transparent;color:var(--sp-tab-add-btn-color);cursor:pointer;padding:0;align-self:flex-end}.tab-bar__list-btn[data-v-e00401ad]:hover,.tab-bar__list-btn--active[data-v-e00401ad]{background:var(--sp-tab-add-btn-hover-bg)}.tab-bar__list-btn svg[data-v-e00401ad]{width:14px;height:14px}.tab-bar__add-btn[data-v-e00401ad]{display:flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;margin:0 4px 3px 3px;border:none;background:transparent;color:var(--sp-tab-add-btn-color);font-size:16px;line-height:22px;text-align:center;cursor:pointer;padding:0;align-self:flex-end}.tab-bar__add-btn[data-v-e00401ad]:hover{background:var(--sp-tab-add-btn-hover-bg)}.tab-list-menu{position:fixed;display:flex;flex-direction:column;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border, #d8d8d8);border-radius:4px;box-shadow:0 4px 12px #0000001f;padding:4px;z-index:1000;transform-origin:bottom left;min-width:140px;max-width:260px;box-sizing:border-box}.tab-list-menu__nav{display:flex;align-items:center;justify-content:center;height:15px;min-height:15px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #666);cursor:pointer;padding:0;border-radius:3px}.tab-list-menu__nav:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg, #eef3f9)}.tab-list-menu__nav:disabled{color:#ccc;cursor:default}.tab-list-menu__nav svg{width:10px;height:10px}.tab-list-menu__list{display:flex;flex-direction:column;overflow:hidden;touch-action:none}.tab-list-menu__item{display:flex;align-items:center;gap:4px;width:100%;height:28px;padding:0 6px 0 10px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;cursor:pointer;white-space:nowrap;border-radius:3px;box-sizing:border-box}.tab-list-menu__item:hover{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.tab-list-menu__item--active{color:var(--sp-tab-active-border, #0078d7);font-weight:500}.tab-list-menu__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-list-menu__del{display:flex;align-items:center;justify-content:center;width:18px;height:18px;flex:0 0 auto;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #999);cursor:pointer;padding:0;border-radius:3px;opacity:.55}.tab-list-menu__item:hover .tab-list-menu__del{opacity:1}.tab-list-menu__del:hover:not(:disabled){background:rgba(0,0,0,.08);color:#d9534f}.tab-list-menu__del:disabled{cursor:default;opacity:.25}.tab-list-menu__del svg{width:12px;height:12px}.find-bar[data-v-07f6713b]{display:flex;flex-direction:column;gap:4px;padding:6px 8px;background:var(--sp-toolbar-bg);border-bottom:1px solid var(--sp-toolbar-border);-webkit-user-select:none;user-select:none}.find-bar__row[data-v-07f6713b]{display:flex;align-items:center;gap:4px;min-width:0}.find-bar__row--inputs[data-v-07f6713b]{gap:4px}.find-bar__row--controls[data-v-07f6713b]{flex-wrap:wrap}.find-bar__input[data-v-07f6713b]{height:26px;flex:1 1 140px;min-width:80px;border:1px solid var(--sp-toolbar-border);border-radius:2px;padding:0 6px;font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-formula-bar-input-color, #1a1a1a);background:#fff;outline:none;box-sizing:border-box}.find-bar__input[data-v-07f6713b]:focus{border-color:var(--sp-toolbar-btn-active-color)}.find-bar__btn--close[data-v-07f6713b]{width:26px;height:26px;padding:0;border:none;flex:0 0 auto}.find-bar__btn--close svg[data-v-07f6713b]{width:14px;height:14px}.find-bar__dropdown[data-v-07f6713b]{flex:0 0 auto}.find-bar__dropdown[data-v-07f6713b] .sp-dropdown__trigger{height:26px;border:1px solid var(--sp-toolbar-border);background:#fff;color:var(--sp-formula-bar-input-color, #1a1a1a);font-size:12px;padding:0 4px;border-radius:2px}.find-bar__dropdown[data-v-07f6713b] .sp-dropdown__trigger:hover{background:#f5f5f5}.find-bar__dropdown[data-v-07f6713b] .sp-dropdown__trigger--open{border-color:var(--sp-toolbar-btn-active-color)}.find-bar__chk[data-v-07f6713b]{display:flex;align-items:center;gap:5px;flex:0 0 auto;font-size:12px;color:var(--sp-toolbar-btn-color);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.find-bar__chk-input[data-v-07f6713b]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.find-bar__chk-box[data-v-07f6713b]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:0 0 auto;box-sizing:border-box;border:1px solid var(--sp-toolbar-border);border-radius:2px;background:#fff;transition:background .12s ease,border-color .12s ease}.find-bar__chk-tick[data-v-07f6713b]{width:12px;height:12px;color:#fff;opacity:0;transform:scale(.5);transition:opacity .12s ease,transform .12s ease}.find-bar__chk-input:checked+.find-bar__chk-box[data-v-07f6713b]{background:#0078d7;border-color:#0078d7}.find-bar__chk-input:checked+.find-bar__chk-box .find-bar__chk-tick[data-v-07f6713b]{opacity:1;transform:scale(1)}.find-bar__chk-input:focus-visible+.find-bar__chk-box[data-v-07f6713b]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.find-bar__count[data-v-07f6713b]{flex:0 0 auto;margin-left:auto;font-size:12px;color:var(--sp-toolbar-btn-color);min-width:44px;text-align:center;white-space:nowrap}.find-bar__btn[data-v-07f6713b]{height:26px;flex:0 0 auto;border:1px solid var(--sp-toolbar-border);border-radius:2px;background:transparent;color:var(--sp-toolbar-btn-color);cursor:pointer;font-size:12px;padding:0 8px;display:inline-flex;align-items:center;justify-content:center}.find-bar__btn[data-v-07f6713b]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.find-bar__btn[data-v-07f6713b]:disabled{color:var(--sp-toolbar-btn-disabled-color);cursor:default}.find-bar__btn--icon[data-v-07f6713b]{width:26px;padding:0}.find-bar__btn--icon svg[data-v-07f6713b]{width:14px;height:14px}.find-bar__btn--active[data-v-07f6713b]{background:var(--sp-toolbar-btn-hover-bg);border-color:var(--sp-toolbar-btn-active-color)}.find-bar__settings-panel[data-v-07f6713b]{position:fixed;z-index:9999;min-width:160px;padding:4px 0;background:#fff;border:1px solid var(--sp-toolbar-border);border-radius:2px;box-shadow:0 4px 12px #0000001f}.find-bar__chk--panel[data-v-07f6713b]{padding:6px 12px;gap:8px}.find-bar__chk--panel[data-v-07f6713b]:hover{background:var(--sp-toolbar-btn-hover-bg)}.find-pop-enter-active[data-v-07f6713b],.find-pop-leave-active[data-v-07f6713b]{transition:opacity .12s ease,transform .12s ease}.find-pop-enter-from[data-v-07f6713b],.find-pop-leave-to[data-v-07f6713b]{opacity:0;transform:translateY(-4px)}.nf-dialog__mask[data-v-84bb335b]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30000;background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center}.nf-dialog[data-v-84bb335b]{width:380px;max-width:calc(100vw - 32px);max-height:calc(100vh - 48px);overflow-y:auto;background:#fff;border:1px solid #d0d0d0;border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#1a1a1a;-webkit-user-select:none;user-select:none}.nf-dialog__header[data-v-84bb335b]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.nf-dialog__title[data-v-84bb335b]{font-size:13px;font-weight:600}.nf-dialog__close[data-v-84bb335b]{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:#888;cursor:pointer;border-radius:3px;padding:0}.nf-dialog__close[data-v-84bb335b]:hover{background:#f0f0f0;color:#444}.nf-dialog__close svg[data-v-84bb335b]{width:14px;height:14px}.nf-dialog__body[data-v-84bb335b]{padding:12px 14px;display:flex;flex-direction:column;gap:10px}.nf-field[data-v-84bb335b]{display:flex;align-items:center;gap:8px}.nf-field--inline[data-v-84bb335b]{min-height:26px}.nf-field__label[data-v-84bb335b]{width:88px;min-width:88px;font-size:12px;color:#555}.nf-field__input[data-v-84bb335b]{flex:1;height:26px;border:1px solid #c0c0c0;border-radius:3px;background:#fff;font-size:12px;color:#1a1a1a;padding:0 6px;outline:none;box-sizing:border-box;font-family:inherit}.nf-field__input[data-v-84bb335b]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-field__dropdown[data-v-84bb335b]{flex:1}.nf-field__dropdown[data-v-84bb335b] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.nf-field__dropdown[data-v-84bb335b] .sp-dropdown__trigger:hover{background:#f5f5f5}.nf-field__dropdown[data-v-84bb335b] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-field__textarea[data-v-84bb335b]{flex:1;min-height:44px;border:1px solid #c0c0c0;border-radius:3px;background:#fff;font-size:12px;color:#1a1a1a;padding:4px 6px;outline:none;box-sizing:border-box;resize:none;font-family:Consolas,Courier New,monospace}.nf-field__textarea[data-v-84bb335b]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-checkbox[data-v-84bb335b]{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#333;cursor:pointer}.nf-checkbox input[data-v-84bb335b]{margin:0;cursor:pointer}.nf-dialog__footer[data-v-84bb335b]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.nf-preview[data-v-84bb335b]{display:flex;flex-direction:column;gap:2px;min-width:0}.nf-preview__label[data-v-84bb335b]{font-size:11px;color:#888}.nf-preview__value[data-v-84bb335b]{font-size:13px;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.nf-dialog__actions[data-v-84bb335b]{display:flex;gap:8px}.nf-btn[data-v-84bb335b]{height:28px;padding:0 16px;border:1px solid #ccc;border-radius:3px;background:#fff;color:#333;font-size:12px;cursor:pointer;font-family:inherit}.nf-btn[data-v-84bb335b]:hover{background:#f0f0f0}.nf-btn--primary[data-v-84bb335b]{border-color:#0078d7;background:#0078d7;color:#fff}.nf-btn--primary[data-v-84bb335b]:hover{background:#0069c0}.nf-dialog-enter-active[data-v-84bb335b],.nf-dialog-leave-active[data-v-84bb335b]{transition:opacity .14s ease-out}.nf-dialog-enter-from[data-v-84bb335b],.nf-dialog-leave-to[data-v-84bb335b]{opacity:0}.nf-dialog-enter-active .nf-dialog[data-v-84bb335b],.nf-dialog-leave-active .nf-dialog[data-v-84bb335b]{transition:transform .14s ease-out}.nf-dialog-enter-from .nf-dialog[data-v-84bb335b],.nf-dialog-leave-to .nf-dialog[data-v-84bb335b]{transform:scale(.96)}.sort-confirm__mask[data-v-af42d78b]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30000;background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center}.sort-confirm[data-v-af42d78b]{width:360px;max-width:calc(100vw - 32px);background:#fff;border:1px solid #d0d0d0;border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#1a1a1a;-webkit-user-select:none;user-select:none}.sort-confirm__header[data-v-af42d78b]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.sort-confirm__title[data-v-af42d78b]{font-size:13px;font-weight:600}.sort-confirm__close[data-v-af42d78b]{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:#888;cursor:pointer;border-radius:3px;padding:0}.sort-confirm__close[data-v-af42d78b]:hover{background:#f0f0f0;color:#444}.sort-confirm__close svg[data-v-af42d78b]{width:14px;height:14px}.sort-confirm__body[data-v-af42d78b]{padding:14px}.sort-confirm__message[data-v-af42d78b]{margin:0 0 12px;font-size:12px;line-height:1.5;color:#333}.sort-confirm__options[data-v-af42d78b]{display:flex;flex-direction:column;gap:8px}.sort-confirm__option[data-v-af42d78b]{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#333;cursor:pointer}.sort-confirm__option input[data-v-af42d78b]{margin:0;cursor:pointer}.sort-confirm__footer[data-v-af42d78b]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.sort-confirm__btn[data-v-af42d78b]{height:28px;padding:0 16px;border:1px solid #ccc;border-radius:3px;background:#fff;color:#333;font-size:12px;cursor:pointer;font-family:inherit}.sort-confirm__btn[data-v-af42d78b]:hover{background:#f0f0f0}.sort-confirm__btn--primary[data-v-af42d78b]{border-color:#0078d7;background:#0078d7;color:#fff}.sort-confirm__btn--primary[data-v-af42d78b]:hover{background:#0069c0}.sort-confirm-enter-active[data-v-af42d78b],.sort-confirm-leave-active[data-v-af42d78b]{transition:opacity .14s ease-out}.sort-confirm-enter-from[data-v-af42d78b],.sort-confirm-leave-to[data-v-af42d78b]{opacity:0}.sort-confirm-enter-active .sort-confirm[data-v-af42d78b],.sort-confirm-leave-active .sort-confirm[data-v-af42d78b]{transition:transform .14s ease-out}.sort-confirm-enter-from .sort-confirm[data-v-af42d78b],.sort-confirm-leave-to .sort-confirm[data-v-af42d78b]{transform:scale(.96)}.ifn-dialog__mask[data-v-9b21a714]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30000;background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center}.ifn-dialog[data-v-9b21a714]{width:440px;max-width:calc(100vw - 32px);background:#fff;border:1px solid #d0d0d0;border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#1a1a1a;-webkit-user-select:none;user-select:none}.ifn-dialog__header[data-v-9b21a714]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.ifn-dialog__title[data-v-9b21a714]{font-size:13px;font-weight:600}.ifn-dialog__close[data-v-9b21a714]{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:#888;cursor:pointer;border-radius:3px;padding:0}.ifn-dialog__close[data-v-9b21a714]:hover{background:#f0f0f0;color:#444}.ifn-dialog__close svg[data-v-9b21a714]{width:14px;height:14px}.ifn-dialog__body[data-v-9b21a714]{padding:14px;display:flex;flex-direction:column;gap:12px}.ifn-dialog__field[data-v-9b21a714]{display:flex;flex-direction:column;gap:6px}.ifn-dialog__label[data-v-9b21a714]{font-size:12px;color:#333}.ifn-dialog__dropdown[data-v-9b21a714]{width:100%}.ifn-dialog__dropdown[data-v-9b21a714] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.ifn-dialog__dropdown[data-v-9b21a714] .sp-dropdown__trigger:hover{background:#f5f5f5}.ifn-dialog__dropdown[data-v-9b21a714] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.ifn-dialog__desc[data-v-9b21a714]{font-size:12px;line-height:1.5;color:#666;-webkit-user-select:text;user-select:text}.ifn-dialog__textarea[data-v-9b21a714]{width:100%;height:84px;border:1px solid #c0c0c0;border-radius:3px;background:#fff;font-size:12px;line-height:1.5;color:#1a1a1a;padding:5px 6px;outline:none;box-sizing:border-box;font-family:Consolas,Menlo,monospace;resize:none;-webkit-user-select:text;user-select:text}.ifn-dialog__textarea[data-v-9b21a714]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.ifn-dialog__footer[data-v-9b21a714]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.ifn-dialog__btn[data-v-9b21a714]{height:28px;padding:0 16px;border:1px solid #ccc;border-radius:3px;background:#fff;color:#333;font-size:12px;cursor:pointer;font-family:inherit}.ifn-dialog__btn[data-v-9b21a714]:hover{background:#f0f0f0}.ifn-dialog__btn--primary[data-v-9b21a714]{border-color:#0078d7;background:#0078d7;color:#fff}.ifn-dialog__btn--primary[data-v-9b21a714]:hover{background:#0069c0}.ifn-dialog__btn--primary[data-v-9b21a714]:disabled,.ifn-dialog__btn--primary[data-v-9b21a714]:disabled:hover{border-color:#ccc;background:#f0f0f0;color:#a8a8a8;cursor:not-allowed}.ifn-dialog-enter-active[data-v-9b21a714],.ifn-dialog-leave-active[data-v-9b21a714]{transition:opacity .14s ease-out}.ifn-dialog-enter-from[data-v-9b21a714],.ifn-dialog-leave-to[data-v-9b21a714]{opacity:0}.ifn-dialog-enter-active .ifn-dialog[data-v-9b21a714],.ifn-dialog-leave-active .ifn-dialog[data-v-9b21a714]{transition:transform .14s ease-out}.ifn-dialog-enter-from .ifn-dialog[data-v-9b21a714],.ifn-dialog-leave-to .ifn-dialog[data-v-9b21a714]{transform:scale(.96)}.filter-popup[data-v-f6b7d944]{position:fixed;z-index:10005;width:248px;background:#fff;border:1px solid #d0d0d0;border-radius:4px;box-shadow:0 4px 14px #00000029;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:13px;color:#333;-webkit-user-select:none;user-select:none;overflow:hidden;transform-origin:top right}.filter-popup__head[data-v-f6b7d944]{display:flex;align-items:center;gap:6px;padding:8px 10px 6px;border-bottom:1px solid #eee}.filter-popup__head-label[data-v-f6b7d944]{font-weight:600;font-size:13px}.filter-popup__head-badge[data-v-f6b7d944]{font-size:11px;color:#0078d7;background:rgba(0,120,215,.1);border-radius:8px;padding:1px 6px}.filter-popup__search[data-v-f6b7d944]{padding:8px 10px 4px}.filter-popup__search-input[data-v-f6b7d944]{width:100%;box-sizing:border-box;height:26px;border:1px solid #ccc;border-radius:3px;padding:0 8px;font-size:12px;outline:none}.filter-popup__search-input[data-v-f6b7d944]:focus{border-color:#0078d7}.filter-popup__tools[data-v-f6b7d944]{display:flex;align-items:center;gap:4px;padding:4px 10px 6px}.filter-popup__tool[data-v-f6b7d944]{border:none;background:transparent;color:#0078d7;font-size:12px;cursor:pointer;padding:2px 4px}.filter-popup__tool[data-v-f6b7d944]:hover{text-decoration:underline}.filter-popup__count[data-v-f6b7d944]{margin-left:auto;font-size:11px;color:#999}.filter-popup__list[data-v-f6b7d944]{height:252px;overflow-y:auto;border-top:1px solid #f0f0f0;border-bottom:1px solid #f0f0f0}.filter-popup__item[data-v-f6b7d944]{display:flex;align-items:center;gap:6px;height:28px;padding:0 10px;box-sizing:border-box;cursor:pointer;white-space:nowrap}.filter-popup__item[data-v-f6b7d944]:hover{background:#eef3f9}.filter-popup__item input[data-v-f6b7d944]{margin:0;flex-shrink:0}.filter-popup__item-label[data-v-f6b7d944]{overflow:hidden;text-overflow:ellipsis;font-size:12px}.filter-popup__item-note[data-v-f6b7d944]{font-size:11px;color:#999;flex-shrink:0}.filter-popup__empty[data-v-f6b7d944]{padding:16px 10px;text-align:center;color:#999;font-size:12px}.filter-popup__modes[data-v-f6b7d944]{display:flex;gap:2px;padding:6px 10px}.filter-popup__mode[data-v-f6b7d944]{flex:1;border:1px solid #e0e0e0;background:#f7f7f7;border-radius:3px;font-size:12px;color:#444;padding:5px 0;cursor:pointer}.filter-popup__mode[data-v-f6b7d944]:hover{background:#eef3f9;border-color:#c8d8f0}.filter-popup__cond[data-v-f6b7d944]{padding:8px 10px}.filter-popup__cond-back[data-v-f6b7d944]{border:none;background:transparent;color:#0078d7;font-size:12px;cursor:pointer;padding:0;margin-bottom:8px}.filter-popup__cond-row[data-v-f6b7d944]{display:flex;align-items:center;gap:6px;margin-bottom:6px}.filter-popup__cond-select[data-v-f6b7d944]{width:100%;height:26px;border:1px solid #ccc;border-radius:3px;font-size:12px;background:#fff;outline:none}.filter-popup__cond-input[data-v-f6b7d944]{flex:1;min-width:0;height:26px;border:1px solid #ccc;border-radius:3px;padding:0 6px;font-size:12px;box-sizing:border-box;outline:none}.filter-popup__cond-input[data-v-f6b7d944]:focus{border-color:#0078d7}.filter-popup__cond-and[data-v-f6b7d944]{font-size:12px;color:#666}.filter-popup__footer[data-v-f6b7d944]{display:flex;align-items:center;gap:6px;padding:8px 10px;border-top:1px solid #eee}.filter-popup__btn[data-v-f6b7d944]{height:26px;padding:0 12px;border:1px solid #d0d0d0;border-radius:3px;background:#f7f7f7;color:#333;font-size:12px;cursor:pointer}.filter-popup__btn[data-v-f6b7d944]:hover{background:#eef3f9}.filter-popup__btn--primary[data-v-f6b7d944]{background:#0078d7;border-color:#0078d7;color:#fff}.filter-popup__btn--primary[data-v-f6b7d944]:hover{background:#006cbe}.filter-popup__btn--clear[data-v-f6b7d944]{color:#c62828;border-color:#e0c0c0}.filter-popup__btn--clear[data-v-f6b7d944]:hover{background:#fdf0f0}.filter-popup__footer-spacer[data-v-f6b7d944]{flex:1}.cf-manager[data-v-230c5fcf]{width:460px;max-height:70vh;display:flex;flex-direction:column;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-toolbar-btn-color, #333);box-sizing:border-box}.cf-manager__header[data-v-230c5fcf]{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--sp-toolbar-border, #eee)}.cf-manager__title[data-v-230c5fcf]{font-weight:600;font-size:14px;flex:1}.cf-manager__close[data-v-230c5fcf]{border:none;background:transparent;font-size:20px;line-height:1;cursor:pointer;color:#888}.cf-manager__close[data-v-230c5fcf]:hover{color:#333}.cf-manager__new[data-v-230c5fcf]{margin-left:auto}.cf-manager__empty[data-v-230c5fcf]{padding:30px 14px;text-align:center;color:#999;font-size:13px}.cf-manager__list[data-v-230c5fcf]{overflow-y:auto;padding:8px}.cf-rule[data-v-230c5fcf]{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border:1px solid var(--sp-toolbar-border, #eee);border-radius:4px;margin-bottom:6px}.cf-rule--disabled[data-v-230c5fcf]{opacity:.5}.cf-rule__main[data-v-230c5fcf]{display:flex;align-items:center;gap:10px;min-width:0}.cf-rule__preview[data-v-230c5fcf]{width:34px;height:24px;border:1px solid #ccc;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:0 0 auto}.cf-rule__info[data-v-230c5fcf]{min-width:0}.cf-rule__summary[data-v-230c5fcf]{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cf-rule__range[data-v-230c5fcf]{font-size:12px;color:#888;margin-top:2px}.cf-rule__actions[data-v-230c5fcf]{display:flex;align-items:center;gap:6px;flex:0 0 auto}.cf-chk[data-v-230c5fcf]{display:flex;align-items:center;gap:5px;flex:0 0 auto;font-size:12px;color:var(--sp-toolbar-btn-color, #333);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.cf-chk__input[data-v-230c5fcf]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.cf-chk__box[data-v-230c5fcf]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:0 0 auto;box-sizing:border-box;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:3px;background:#fff;transition:background .12s ease,border-color .12s ease}.cf-chk__tick[data-v-230c5fcf]{width:12px;height:12px;color:#fff;opacity:0;transform:scale(.5);transition:opacity .12s ease,transform .12s ease}.cf-chk__input:checked+.cf-chk__box[data-v-230c5fcf]{background:#0078d7;border-color:#0078d7}.cf-chk__input:checked+.cf-chk__box .cf-chk__tick[data-v-230c5fcf]{opacity:1;transform:scale(1)}.cf-chk__input:focus-visible+.cf-chk__box[data-v-230c5fcf]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.cf-mini[data-v-230c5fcf]{width:26px;height:26px;border:1px solid #c4c4c4;border-radius:3px;background:#fff;cursor:pointer;color:#333;display:inline-flex;align-items:center;justify-content:center}.cf-mini svg[data-v-230c5fcf]{display:block;width:14px;height:14px}.cf-mini[data-v-230c5fcf]:hover{background:#f0f0f0}.cf-btn[data-v-230c5fcf]{height:30px;padding:0 14px;border:1px solid #c4c4c4;border-radius:3px;background:#fff;cursor:pointer;font-size:13px;color:#333}.cf-btn[data-v-230c5fcf]:hover{background:#f0f0f0}.cf-btn--primary[data-v-230c5fcf]{border-color:#0078d7;background:#0078d7;color:#fff}.cf-btn--primary[data-v-230c5fcf]:hover{background:#0069c0}.cf-editor[data-v-f625bb44]{width:360px;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-toolbar-btn-color, #333);box-sizing:border-box}.cf-editor__header[data-v-f625bb44]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--sp-toolbar-border, #eee);font-weight:600;font-size:14px}.cf-editor__close[data-v-f625bb44]{border:none;background:transparent;font-size:20px;line-height:1;cursor:pointer;color:#888}.cf-editor__close[data-v-f625bb44]:hover{color:#333}.cf-editor__body[data-v-f625bb44]{padding:12px 14px}.cf-row[data-v-f625bb44]{display:flex;align-items:center;gap:8px;margin-bottom:10px}.cf-hint[data-v-f625bb44]{margin:-6px 0 10px;font-size:12px;color:var(--sp-find-hint-color, #888);line-height:1.5}.cf-row--inline[data-v-f625bb44]{justify-content:flex-start;gap:18px}.cf-label[data-v-f625bb44]{width:64px;flex:0 0 auto;font-size:13px;color:#666}.cf-dropdown[data-v-f625bb44]{flex:1;min-width:0}.cf-dropdown[data-v-f625bb44] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.cf-dropdown[data-v-f625bb44] .sp-dropdown__trigger:hover{background:#f5f5f5}.cf-dropdown[data-v-f625bb44] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.cf-input[data-v-f625bb44]{flex:1;height:28px;border:1px solid #c4c4c4;border-radius:3px;padding:0 8px;font-size:13px;background:#fff;color:#1a1a1a;box-sizing:border-box;outline:none}.cf-input[data-v-f625bb44]:focus{border-color:#0078d7}.cf-format-row[data-v-f625bb44]{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.toolbar-btn[data-v-f625bb44]{display:flex;align-items:center;justify-content:center;width:30px;height:26px;border:none;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color, #444);cursor:pointer;padding:0}.toolbar-btn[data-v-f625bb44]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.toolbar-btn[data-v-f625bb44]:active:not(:disabled){opacity:.7}.toolbar-btn--active[data-v-f625bb44]{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6);color:var(--sp-toolbar-btn-active-color, #0078d7)}.toolbar-btn svg[data-v-f625bb44]{width:18px;height:18px}.cf-error[data-v-f625bb44]{color:#d93025;font-size:12px;margin:-4px 0 8px 72px}.cf-chk[data-v-f625bb44]{display:flex;align-items:center;gap:5px;flex:0 0 auto;font-size:13px;color:var(--sp-toolbar-btn-color, #333);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.cf-chk__input[data-v-f625bb44]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.cf-chk__box[data-v-f625bb44]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:0 0 auto;box-sizing:border-box;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:3px;background:#fff;transition:background .12s ease,border-color .12s ease}.cf-chk__tick[data-v-f625bb44]{width:12px;height:12px;color:#fff;opacity:0;transform:scale(.5);transition:opacity .12s ease,transform .12s ease}.cf-chk__input:checked+.cf-chk__box[data-v-f625bb44]{background:#0078d7;border-color:#0078d7}.cf-chk__input:checked+.cf-chk__box .cf-chk__tick[data-v-f625bb44]{opacity:1;transform:scale(1)}.cf-chk__input:focus-visible+.cf-chk__box[data-v-f625bb44]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.cf-editor__footer[data-v-f625bb44]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--sp-toolbar-border, #eee)}.cf-btn[data-v-f625bb44]{height:30px;padding:0 16px;border:1px solid #c4c4c4;border-radius:3px;background:#fff;cursor:pointer;font-size:13px;color:#333}.cf-btn[data-v-f625bb44]:hover{background:#f0f0f0}.cf-btn--primary[data-v-f625bb44]{border-color:#0078d7;background:#0078d7;color:#fff}.cf-btn--primary[data-v-f625bb44]:hover{background:#0069c0}.dv-editor[data-v-3f7d54bb]{width:360px;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-toolbar-btn-color, #333);box-sizing:border-box;-webkit-user-select:none;user-select:none}.dv-editor__header[data-v-3f7d54bb]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--sp-toolbar-border, #eee);font-weight:600;font-size:14px}.dv-editor__close[data-v-3f7d54bb]{border:none;background:transparent;font-size:20px;line-height:1;cursor:pointer;color:#888}.dv-editor__close[data-v-3f7d54bb]:hover{color:#333}.dv-editor__body[data-v-3f7d54bb]{padding:12px 14px;max-height:calc(100vh - 140px);overflow:auto}.dv-sec+.dv-sec[data-v-3f7d54bb]{margin-top:10px;padding-top:10px;border-top:1px solid var(--sp-toolbar-border, #eee)}.dv-sec__title[data-v-3f7d54bb]{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--sp-find-hint-color, #888)}.dv-row[data-v-3f7d54bb]{display:flex;align-items:center;gap:8px;margin-bottom:10px}.dv-row--top[data-v-3f7d54bb]{align-items:flex-start}.dv-row--inline[data-v-3f7d54bb]{justify-content:flex-start;gap:18px}.dv-label[data-v-3f7d54bb]{width:64px;flex:0 0 auto;font-size:13px;color:#666}.dv-hint[data-v-3f7d54bb]{margin:-6px 0 10px;font-size:12px;color:var(--sp-find-hint-color, #888);line-height:1.5}.dv-dropdown[data-v-3f7d54bb]{flex:1;min-width:0}.dv-dropdown[data-v-3f7d54bb] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.dv-dropdown[data-v-3f7d54bb] .sp-dropdown__trigger:hover{background:#f5f5f5}.dv-dropdown[data-v-3f7d54bb] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.dv-input[data-v-3f7d54bb]{flex:1;min-width:0;height:28px;border:1px solid #c4c4c4;border-radius:3px;padding:0 8px;font-size:13px;font-family:inherit;background:#fff;color:#1a1a1a;box-sizing:border-box;outline:none}.dv-input[data-v-3f7d54bb]:focus{border-color:#0078d7}.dv-input[data-v-3f7d54bb]:disabled{background:#f5f5f5;color:#999}.dv-input--area[data-v-3f7d54bb]{height:auto;min-height:46px;padding:5px 8px;line-height:1.5;resize:vertical}.dv-error[data-v-3f7d54bb]{color:#d93025;font-size:12px;margin:-4px 0 8px 72px}.dv-chk[data-v-3f7d54bb]{display:flex;align-items:center;gap:5px;flex:0 0 auto;font-size:13px;color:var(--sp-toolbar-btn-color, #333);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.dv-chk__input[data-v-3f7d54bb]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.dv-chk__box[data-v-3f7d54bb]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:0 0 auto;box-sizing:border-box;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:3px;background:#fff;transition:background .12s ease,border-color .12s ease}.dv-chk__tick[data-v-3f7d54bb]{width:12px;height:12px;color:#fff;opacity:0;transform:scale(.5);transition:opacity .12s ease,transform .12s ease}.dv-chk__input:checked+.dv-chk__box[data-v-3f7d54bb]{background:#0078d7;border-color:#0078d7}.dv-chk__input:checked+.dv-chk__box .dv-chk__tick[data-v-3f7d54bb]{opacity:1;transform:scale(1)}.dv-chk__input:focus-visible+.dv-chk__box[data-v-3f7d54bb]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.dv-chk--disabled[data-v-3f7d54bb]{color:var(--sp-find-hint-color, #aaa);cursor:not-allowed}.dv-chk--disabled .dv-chk__box[data-v-3f7d54bb]{background:#f5f5f5;border-color:#d8d8d8}.dv-chk--disabled .dv-chk__input:checked+.dv-chk__box[data-v-3f7d54bb]{background:#c4c4c4;border-color:#c4c4c4}.dv-editor__footer[data-v-3f7d54bb]{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid var(--sp-toolbar-border, #eee)}.dv-editor__spacer[data-v-3f7d54bb]{flex:1}.dv-btn[data-v-3f7d54bb]{height:30px;padding:0 16px;border:1px solid #c4c4c4;border-radius:3px;background:#fff;cursor:pointer;font-size:13px;color:#333;white-space:nowrap}.dv-btn[data-v-3f7d54bb]:hover{background:#f0f0f0}.dv-btn--primary[data-v-3f7d54bb]{border-color:#0078d7;background:#0078d7;color:#fff}.dv-btn--primary[data-v-3f7d54bb]:hover{background:#0069c0}.dv-btn--danger[data-v-3f7d54bb]{color:#c5221f}.dv-btn--danger[data-v-3f7d54bb]:hover{background:#fce8e6}.dvd[data-v-9b17a184]{position:fixed;z-index:10004;box-sizing:border-box;background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 14px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:13px;color:#333;overflow:hidden;-webkit-user-select:none;user-select:none}.dvd__search[data-v-9b17a184]{height:33px;padding:4px;box-sizing:border-box;border-bottom:1px solid #e6e6e6}.dvd__search-input[data-v-9b17a184]{width:100%;height:24px;box-sizing:border-box;border:1px solid #c8c8c8;border-radius:2px;outline:none;padding:0 6px;font-size:13px;color:#1a1a1a;background:#fff}.dvd__search-input[data-v-9b17a184]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.dvd__list[data-v-9b17a184]{overflow-y:auto;overflow-x:hidden}.dvd__item[data-v-9b17a184]{display:flex;align-items:center;padding:0 6px;box-sizing:border-box;cursor:pointer;white-space:nowrap;overflow:hidden}.dvd__item--active[data-v-9b17a184]{background:#e8f0fe}.dvd__item--checked[data-v-9b17a184]{font-weight:600}.dvd__check[data-v-9b17a184]{width:14px;flex:none;color:#0078d7;font-size:12px}.dvd__label[data-v-9b17a184]{flex:1;overflow:hidden;text-overflow:ellipsis}.dvd__empty[data-v-9b17a184]{padding:8px 10px;color:#999;font-size:12px;text-align:center}.dv-alert[data-v-07223d87]{width:360px;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-toolbar-btn-color, #333);box-sizing:border-box;-webkit-user-select:none;user-select:none}.dv-alert__header[data-v-07223d87]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--sp-toolbar-border, #eee);font-weight:600;font-size:14px}.dv-alert__body[data-v-07223d87]{display:flex;gap:10px;padding:14px}.dv-alert__icon[data-v-07223d87]{width:28px;height:28px;flex:0 0 auto}.dv-alert__text[data-v-07223d87]{flex:1;min-width:0}.dv-alert__subtitle[data-v-07223d87]{font-size:13px;font-weight:600;color:var(--sp-toolbar-btn-color, #222);margin-bottom:4px;word-break:break-word}.dv-alert__message[data-v-07223d87]{font-size:13px;line-height:1.5;color:var(--sp-toolbar-btn-color, #444);word-break:break-word}.dv-alert__footer[data-v-07223d87]{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid var(--sp-toolbar-border, #eee)}.dv-alert__spacer[data-v-07223d87]{flex:1}.dv-alert__btn[data-v-07223d87]{height:30px;padding:0 16px;border:1px solid #c4c4c4;border-radius:3px;background:#fff;cursor:pointer;font-size:13px;color:#333;white-space:nowrap}.dv-alert__btn[data-v-07223d87]:hover{background:#f0f0f0}.dv-alert__btn--primary[data-v-07223d87]{border-color:#0078d7;background:#0078d7;color:#fff}.dv-alert__btn--primary[data-v-07223d87]:hover{background:#0069c0}.dvim[data-v-ec9868e3]{position:fixed;z-index:10002;max-width:260px;padding:6px 9px;box-sizing:border-box;background:#fffde7;border:1px solid #d6cf8f;border-radius:3px;box-shadow:0 2px 8px #00000026;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#4a4200;pointer-events:none;-webkit-user-select:none;user-select:none}.dvim__title[data-v-ec9868e3]{font-size:12px;font-weight:600;margin-bottom:2px;word-break:break-word}.dvim__message[data-v-ec9868e3]{font-size:12px;line-height:1.45;white-space:pre-wrap;word-break:break-word}.spreadsheet-outer[data-v-5417998d]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%;min-height:400px;width:100%}.formula-bar[data-v-5417998d]{display:flex;align-items:flex-start;min-height:36px;padding:0;gap:0}.formula-bar--expanded[data-v-5417998d]{min-height:72px}.formula-bar__cell-label[data-v-5417998d]{width:48px;min-width:48px;height:28px;line-height:28px;margin-top:4px;text-align:center;font-size:12px;font-weight:600;color:var(--sp-formula-bar-label-color);background:var(--sp-formula-bar-label-bg);border:1px solid var(--sp-formula-bar-label-border);border-radius:2px;-webkit-user-select:none;user-select:none}.formula-bar__buttons[data-v-5417998d]{display:inline-flex;align-items:stretch;margin-top:4px;margin-left:6px;height:28px;border:1px solid var(--sp-formula-bar-input-border);border-radius:2px;overflow:hidden;background:var(--sp-formula-bar-input-bg)}.formula-bar__btn[data-v-5417998d]{width:22px;height:28px;border:none;border-radius:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;-webkit-user-select:none;user-select:none;color:inherit}.formula-bar__btn+.formula-bar__btn[data-v-5417998d]{border-left:1px solid var(--sp-formula-bar-input-border)}.formula-bar__btn[data-v-5417998d]:hover{background:var(--sp-scroll-btn-hover-bg, #f0f0f0)}.formula-bar__btn--cancel[data-v-5417998d]:hover{color:#e53935;background:#fdecea}.formula-bar__btn--accept[data-v-5417998d]:hover{color:#2e7d32;background:#e8f5e9}.formula-bar__fx-label[data-v-5417998d]{font-family:Georgia,Times New Roman,serif;font-style:italic;font-weight:600;font-size:13px;line-height:1;-webkit-user-select:none;user-select:none}.formula-bar__btn--fx[data-v-5417998d]:hover{background:var(--sp-scroll-btn-hover-bg, #f0f0f0)}.formula-bar__input[data-v-5417998d]{flex:1;min-height:28px;height:28px;line-height:20px;margin-top:4px;border:1px solid var(--sp-formula-bar-input-border);border-radius:2px;outline:none;padding:3px 6px;margin-left:4px;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-formula-bar-input-color);background:var(--sp-formula-bar-input-bg);resize:none;overflow:hidden;box-sizing:border-box}.formula-bar__input--expanded[data-v-5417998d]{height:68px;overflow:auto}.formula-bar__input[data-v-5417998d]:focus{border-color:var(--sp-formula-bar-input-focus-border);box-shadow:0 0 0 1px var(--sp-formula-bar-input-focus-shadow)}.formula-bar__toggle[data-v-5417998d]{width:22px;min-width:22px;height:28px;margin-top:4px;margin-left:2px;margin-right:2px;border:1px solid var(--sp-formula-bar-input-border);border-radius:2px;background:var(--sp-formula-bar-input-bg);color:var(--sp-formula-bar-input-color);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;-webkit-user-select:none;user-select:none}.formula-bar__toggle[data-v-5417998d]:hover{background:var(--sp-scroll-btn-hover-bg, #e8e8e8)}.spreadsheet-wrapper[data-v-5417998d]{flex:1;position:relative;overflow:hidden;background:var(--sp-wrapper-bg)}.grid-canvas[data-v-5417998d]{position:absolute;top:0;left:0;display:block;outline:none;cursor:cell}.grid-canvas--freeze[data-v-5417998d]{pointer-events:none;z-index:1}.grid-canvas[data-v-5417998d]:not(.grid-canvas--freeze){z-index:0}.grid-canvas[data-v-5417998d]:focus{outline:none}.v-scrollbar[data-v-5417998d]{position:absolute;right:0;top:0;width:11px;height:calc(100% - 11px);display:flex;flex-direction:column;background:var(--sp-wrapper-bg)}.h-scrollbar[data-v-5417998d]{position:absolute;left:0;bottom:0;height:11px;width:calc(100% - 11px);display:flex;background:var(--sp-wrapper-bg)}.sb-corner[data-v-5417998d]{position:absolute;right:0;bottom:0;width:11px;height:11px;background:var(--sp-wrapper-bg)}.sb-btn[data-v-5417998d]{width:11px;height:11px;min-width:11px;min-height:11px;border:none;background:var(--sp-scroll-btn-bg, #e8e8e8);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;-webkit-user-select:none;user-select:none}.sb-btn[data-v-5417998d]:hover{background:var(--sp-scroll-btn-hover-bg, #d0d0d0)}.sb-btn[data-v-5417998d]:active{background:var(--sp-scroll-btn-active-bg, #c0c0c0)}.sb-arrow[data-v-5417998d]{display:block;width:0;height:0}.sb-arrow--up[data-v-5417998d]{border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:4px solid var(--sp-scroll-btn-color, #666)}.sb-arrow--down[data-v-5417998d]{border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid var(--sp-scroll-btn-color, #666)}.sb-arrow--left[data-v-5417998d]{border-top:3px solid transparent;border-bottom:3px solid transparent;border-right:4px solid var(--sp-scroll-btn-color, #666)}.sb-arrow--right[data-v-5417998d]{border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:4px solid var(--sp-scroll-btn-color, #666)}.sb-track[data-v-5417998d]{flex:1;position:relative;background:var(--sp-scroll-track-bg, rgba(0,0,0,.06))}.sb-track--v[data-v-5417998d]{width:11px}.sb-track--h[data-v-5417998d]{height:11px}.sb-thumb[data-v-5417998d]{position:absolute;border-radius:3px;background:var(--sp-scroll-thumb);cursor:default}.sb-thumb[data-v-5417998d]:hover{background:var(--sp-scroll-thumb-hover)}.sb-thumb--v[data-v-5417998d]{left:1px;right:1px;min-height:16px}.sb-thumb--h[data-v-5417998d]{top:1px;bottom:1px;min-width:16px}.cell-editor[data-v-5417998d]{position:absolute;border:2px solid var(--sp-cell-editor-border);outline:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:13px;color:var(--sp-cell-editor-color);background:var(--sp-cell-editor-bg);box-shadow:0 0 0 1px var(--sp-cell-editor-shadow);z-index:10;box-sizing:border-box;min-width:0;overflow:hidden;padding:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;resize:none;white-space:pre-wrap;word-break:break-all}.context-menu{position:fixed;z-index:10000;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 8px #00000026;padding:4px 0;min-width:120px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:13px;transform-origin:top left}.context-menu__item{padding:6px 12px;cursor:pointer;color:#333;white-space:nowrap;position:relative;display:flex;align-items:center;justify-content:space-between}.context-menu__item:hover{background:#e8f0fe}.context-menu__item--disabled{color:#bbb;cursor:default}.context-menu__item--disabled:hover{background:transparent}.context-menu__arrow{margin-left:8px;margin-right:-2px;width:12px;height:12px;fill:#888;flex:none}.context-submenu{display:none;position:absolute;left:100%;top:-4px;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 8px #00000026;padding:4px 0;min-width:100px;z-index:10001}.context-submenu--left{left:auto;right:100%}.context-menu__item:not(.context-menu__item--disabled):hover>.context-submenu{display:block}.context-submenu .context-menu__item{justify-content:flex-start}.menu-pop-enter-active,.menu-pop-leave-active{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from,.menu-pop-leave-to{opacity:0;transform:scale(.9)}.dim-panel{position:fixed;z-index:10002;width:220px;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 8px #00000026;padding:10px 12px;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;-webkit-user-select:none;user-select:none;transform-origin:top left}.dim-panel__title{font-size:13px;font-weight:600;color:#333;margin-bottom:8px}.dim-panel__body{display:flex;align-items:center;gap:6px}.dim-panel__input{flex:1;height:26px;border:1px solid #c0c0c0;border-radius:3px;outline:none;padding:0 6px;font-size:13px;color:#1a1a1a;background:#fff;box-sizing:border-box}.dim-panel__input:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.dim-panel__input--error{border-color:#d93025;box-shadow:0 0 0 1px #d930254d}.dim-panel__error{margin-top:6px;font-size:12px;color:#d93025;line-height:1.4}.dim-panel__footer{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.dim-panel__btn{height:26px;padding:0 14px;border:1px solid #ccc;border-radius:3px;background:#fff;color:#333;font-size:13px;cursor:pointer}.dim-panel__btn:hover{background:#f0f0f0}.dim-panel__btn--primary{border-color:#0078d7;background:#0078d7;color:#fff}.dim-panel__btn--primary:hover{background:#0069c0}.cf-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;z-index:10003}
1
+ .sp-dropdown[data-v-85ba0ec8]{position:relative;display:inline-flex;min-width:0}.sp-dropdown__trigger[data-v-85ba0ec8]{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%;height:26px;border:1px solid transparent;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;cursor:pointer;padding:0 5px;box-sizing:border-box}.sp-dropdown__trigger[data-v-85ba0ec8]:hover{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.sp-dropdown__trigger--open[data-v-85ba0ec8]{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6);border-color:var(--sp-toolbar-border, #d8d8d8)}.sp-dropdown__value[data-v-85ba0ec8]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.sp-dropdown__caret[data-v-85ba0ec8]{width:10px;height:10px;min-width:10px;opacity:.7}.sp-dropdown__menu[data-v-85ba0ec8]{position:fixed;z-index:40000;display:flex;flex-direction:column;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;padding:4px;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;transform-origin:top center}.sp-dropdown__menu--up[data-v-85ba0ec8]{transform-origin:bottom center}.menu-pop-enter-active[data-v-85ba0ec8],.menu-pop-leave-active[data-v-85ba0ec8]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-85ba0ec8],.menu-pop-leave-to[data-v-85ba0ec8]{opacity:0;transform:scaleY(.85)}.sp-dropdown__nav[data-v-85ba0ec8]{display:flex;align-items:center;justify-content:center;height:15px;min-height:15px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #666);cursor:pointer;padding:0;border-radius:3px}.sp-dropdown__nav[data-v-85ba0ec8]:hover:not(:disabled){background:#eef3f9}.sp-dropdown__nav[data-v-85ba0ec8]:disabled{color:#ccc;cursor:default}.sp-dropdown__nav svg[data-v-85ba0ec8]{width:10px;height:10px}.sp-dropdown__list[data-v-85ba0ec8]{display:flex;flex-direction:column;overflow:hidden;touch-action:none}.sp-dropdown__search[data-v-85ba0ec8]{flex:0 0 auto;height:26px;margin-bottom:4px;padding:0 8px;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:3px;font-size:12px;font-family:inherit;color:#1a1a1a;outline:none;box-sizing:border-box}.sp-dropdown__search[data-v-85ba0ec8]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.sp-dropdown__empty[data-v-85ba0ec8]{padding:6px 8px;font-size:12px;color:#999;text-align:center}.sp-dropdown__icon[data-v-85ba0ec8]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sp-dropdown__icon[data-v-85ba0ec8] svg{width:18px;height:18px;display:block}.sp-dropdown__item-icon[data-v-85ba0ec8]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sp-dropdown__item-icon[data-v-85ba0ec8] svg{width:16px;height:16px;display:block}.sp-dropdown__item-label[data-v-85ba0ec8]{white-space:nowrap}.sp-dropdown__item[data-v-85ba0ec8]{display:flex;align-items:center;gap:6px;width:100%;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;cursor:pointer;padding:4px 8px;box-sizing:border-box;border-radius:3px}.sp-dropdown__item[data-v-85ba0ec8]:hover{background:#eef3f9}.sp-dropdown__item--disabled[data-v-85ba0ec8]{color:#c9c9c9;cursor:default}.sp-dropdown__item--disabled[data-v-85ba0ec8]:hover{background:transparent}.sp-dropdown__item--active[data-v-85ba0ec8]{background:#e5f1fb;color:#0078d7}.color-picker[data-v-f6c2d2cf]{position:relative;display:inline-flex;height:26px}.color-picker__menu[data-v-f6c2d2cf]{position:fixed;z-index:40000;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;padding:6px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;transform-origin:top center}.menu-pop-enter-active[data-v-f6c2d2cf],.menu-pop-leave-active[data-v-f6c2d2cf]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-f6c2d2cf],.menu-pop-leave-to[data-v-f6c2d2cf]{opacity:0;transform:scale(.9)}.color-picker__row[data-v-f6c2d2cf]{display:flex;gap:4px;margin-bottom:4px}.color-picker__row[data-v-f6c2d2cf]:last-child{margin-bottom:0}.color-picker__swatch[data-v-f6c2d2cf]{width:20px;height:20px;padding:0;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .08s,box-shadow .08s;position:relative}.color-picker__swatch[data-v-f6c2d2cf]:hover{transform:scale(1.18);box-shadow:0 0 0 1px #0003;z-index:1}.color-picker__swatch--selected[data-v-f6c2d2cf]{box-shadow:0 0 0 2px #0078d7}.border-picker[data-v-5c3ebafb]{position:relative;display:inline-flex;height:26px}.border-picker__menu[data-v-5c3ebafb]{position:fixed;z-index:40000;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;padding:4px;transform-origin:top center}.border-picker__item[data-v-5c3ebafb]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:4px 8px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);cursor:pointer;border-radius:3px;font-size:12px;text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;white-space:nowrap;box-sizing:border-box}.border-picker__item[data-v-5c3ebafb]:hover{background:#eef3f9}.border-picker__icon[data-v-5c3ebafb]{width:18px;height:18px;flex-shrink:0}.border-picker__label[data-v-5c3ebafb]{flex:1;overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-5c3ebafb],.menu-pop-leave-active[data-v-5c3ebafb]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-5c3ebafb],.menu-pop-leave-to[data-v-5c3ebafb]{opacity:0;transform:scaleY(.85)}.sort-picker[data-v-ef7c7f4c]{position:relative;display:inline-flex;height:26px}.sort-picker__menu[data-v-ef7c7f4c]{position:fixed;z-index:40000;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;padding:4px;transform-origin:top center}.sort-picker__item[data-v-ef7c7f4c]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:4px 8px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);cursor:pointer;border-radius:3px;font-size:12px;text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;white-space:nowrap;box-sizing:border-box}.sort-picker__item[data-v-ef7c7f4c]:hover{background:#eef3f9}.sort-picker__icon[data-v-ef7c7f4c]{width:18px;height:18px;flex-shrink:0}.sort-picker__label[data-v-ef7c7f4c]{flex:1;overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-ef7c7f4c],.menu-pop-leave-active[data-v-ef7c7f4c]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-ef7c7f4c],.menu-pop-leave-to[data-v-ef7c7f4c]{opacity:0;transform:scaleY(.85)}.outline-picker[data-v-9ba8ba10]{position:relative;display:inline-flex;height:26px}.outline-picker__menu[data-v-9ba8ba10]{position:fixed;z-index:40000;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;padding:4px;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;transform-origin:top center;white-space:nowrap;display:flex;flex-direction:column;min-width:168px}.outline-picker__item[data-v-9ba8ba10]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:4px 8px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;text-align:left;cursor:pointer;border-radius:3px;box-sizing:border-box}.outline-picker__item--open[data-v-9ba8ba10],.outline-picker__item[data-v-9ba8ba10]:hover{background:#eef3f9}.outline-picker__label[data-v-9ba8ba10]{flex:1}.outline-picker__arrow[data-v-9ba8ba10]{width:12px;height:12px;flex-shrink:0;transform:rotate(-90deg);opacity:.7}.outline-picker__sep[data-v-9ba8ba10]{height:1px;background:var(--sp-toolbar-border, #e0e0e0);margin:3px 4px}.menu-pop-enter-active[data-v-9ba8ba10],.menu-pop-leave-active[data-v-9ba8ba10]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-9ba8ba10],.menu-pop-leave-to[data-v-9ba8ba10]{opacity:0;transform:scaleY(.85)}.merge-picker[data-v-b44e2e92]{position:relative;display:inline-flex;height:26px}.merge-picker__menu[data-v-b44e2e92]{position:fixed;z-index:40000;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;padding:4px;transform-origin:top center}.merge-picker__item[data-v-b44e2e92]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:4px 8px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);cursor:pointer;border-radius:3px;font-size:12px;text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;white-space:nowrap;box-sizing:border-box}.merge-picker__item[data-v-b44e2e92]:hover{background:#eef3f9}.merge-picker__icon[data-v-b44e2e92]{width:18px;height:18px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.merge-picker__icon[data-v-b44e2e92] svg{width:18px;height:18px}.merge-picker__label[data-v-b44e2e92]{flex:1;overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-b44e2e92],.menu-pop-leave-active[data-v-b44e2e92]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-b44e2e92],.menu-pop-leave-to[data-v-b44e2e92]{opacity:0;transform:scaleY(.85)}.cf-menu-root[data-v-f75544d4]{display:flex;align-items:center;flex:0 0 auto;width:100%}.cf-menu-trigger[data-v-f75544d4]{display:flex;align-items:center;justify-content:space-between;gap:4px;height:26px;width:100%;border:1px solid transparent;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;cursor:pointer;padding:0 5px;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;min-width:0}.cf-menu-trigger[data-v-f75544d4]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.cf-menu-trigger[data-v-f75544d4]:disabled{color:var(--sp-toolbar-btn-disabled-color, #aaa);cursor:default}.cf-menu-trigger__icon[data-v-f75544d4]{width:16px;height:16px}.cf-menu-trigger__label[data-v-f75544d4]{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.cf-menu-trigger__caret[data-v-f75544d4]{width:10px;height:10px;opacity:.7;flex:none}.cf-menu[data-v-f75544d4]{position:fixed;z-index:40000;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;padding:4px;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;transform-origin:top center;white-space:nowrap;display:flex;flex-direction:column}.cf-menu__body[data-v-f75544d4]{max-height:calc(100vh - 120px);overflow-y:auto;scrollbar-width:none}.cf-menu__body[data-v-f75544d4]::-webkit-scrollbar{display:none}.cf-menu__nav[data-v-f75544d4]{flex:0 0 auto;height:18px;border:none;background:transparent;color:#888;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:3px}.cf-menu__nav[data-v-f75544d4]:hover:not(:disabled){background:#eef3f9}.cf-menu__nav[data-v-f75544d4]:disabled{color:#d5d5d5;cursor:default}.cf-menu__nav svg[data-v-f75544d4]{width:10px;height:10px}.cf-menu__item[data-v-f75544d4]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;text-align:left;cursor:pointer;padding:4px 8px;border-radius:3px;box-sizing:border-box}.cf-menu__item[data-v-f75544d4]:hover{background:#eef3f9}.cf-menu__item--disabled[data-v-f75544d4]{color:#c9c9c9;cursor:default}.cf-menu__item--disabled[data-v-f75544d4]:hover{background:transparent}.cf-menu__item--sub[data-v-f75544d4]{position:relative}.cf-menu__arrow[data-v-f75544d4]{width:12px;height:12px;flex:none;fill:#888}.cf-menu__sep[data-v-f75544d4]{height:1px;background:var(--sp-toolbar-border, #e0e0e0);margin:3px 4px}.cf-submenu-wrap[data-v-f75544d4]{position:fixed;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;padding:4px;box-sizing:border-box;z-index:40000;white-space:nowrap;display:flex;flex-direction:column;transform-origin:top left}.cf-submenu-wrap--left[data-v-f75544d4]{transform-origin:top right}.cf-submenu-wrap--up[data-v-f75544d4]{transform-origin:bottom left}.cf-submenu-wrap--left.cf-submenu-wrap--up[data-v-f75544d4]{transform-origin:bottom right}.cf-submenu[data-v-f75544d4]{max-height:calc(100vh - 120px);overflow-y:auto;scrollbar-width:none}.cf-submenu[data-v-f75544d4]::-webkit-scrollbar{display:none}.cf-subnav[data-v-f75544d4]{flex:0 0 auto;height:18px;border:none;background:transparent;color:#888;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:3px}.cf-subnav[data-v-f75544d4]:hover:not(:disabled){background:#eef3f9}.cf-subnav[data-v-f75544d4]:disabled{color:#d5d5d5;cursor:default}.cf-subnav svg[data-v-f75544d4]{width:10px;height:10px}.cf-menu__subitem[data-v-f75544d4]{display:block;width:100%;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;text-align:left;cursor:pointer;padding:4px 8px;border-radius:3px;box-sizing:border-box}.cf-menu__subitem[data-v-f75544d4]:hover{background:#eef3f9}.cf-menu__subitem--disabled[data-v-f75544d4]{color:#c9c9c9;cursor:default}.cf-menu__subitem--disabled[data-v-f75544d4]:hover{background:transparent}.cf-pop-enter-active[data-v-f75544d4],.cf-pop-leave-active[data-v-f75544d4]{transition:opacity .12s ease-out,transform .12s ease-out}.cf-pop-enter-from[data-v-f75544d4],.cf-pop-leave-to[data-v-f75544d4]{opacity:0;transform:scaleY(.85)}.cf-sub-pop-enter-active[data-v-f75544d4],.cf-sub-pop-leave-active[data-v-f75544d4]{transition:opacity .12s ease-out,transform .12s ease-out}.cf-sub-pop-enter-from[data-v-f75544d4],.cf-sub-pop-leave-to[data-v-f75544d4]{opacity:0;transform:scale(.85)}.calc-picker[data-v-01c4024a]{position:relative;display:inline-flex;height:26px}.calc-picker__menu[data-v-01c4024a]{position:fixed;z-index:40000;min-width:120px;background:#fff;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:4px;box-shadow:0 4px 12px #0000001f;-webkit-user-select:none;user-select:none;padding:4px;transform-origin:top center}.calc-picker__item[data-v-01c4024a]{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:4px 8px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);cursor:pointer;border-radius:3px;font-size:12px;text-align:left;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;white-space:nowrap;box-sizing:border-box}.calc-picker__item[data-v-01c4024a]:hover:not(.calc-picker__item--disabled){background:#eef3f9}.calc-picker__item--disabled[data-v-01c4024a]{color:var(--sp-toolbar-btn-disabled-color, #bbb);cursor:default}.calc-picker__label[data-v-01c4024a]{flex:1;overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-01c4024a],.menu-pop-leave-active[data-v-01c4024a]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-01c4024a],.menu-pop-leave-to[data-v-01c4024a]{opacity:0;transform:scaleY(.85)}.toolbar[data-v-1a2f529d]{position:relative;display:flex;align-items:center;height:32px;min-height:32px;gap:2px;padding:0 6px;background:var(--sp-toolbar-bg);border-bottom:1px solid var(--sp-toolbar-border);-webkit-user-select:none;user-select:none}.toolbar[data-v-1a2f529d]>*{animation:toolbar-fade-in-1a2f529d .15s ease-out both}@keyframes toolbar-fade-in-1a2f529d{0%{opacity:0}to{opacity:1}}.tb-item[data-v-1a2f529d]{display:flex;align-items:center;flex:0 0 auto}.toolbar-sep[data-v-1a2f529d]{width:1px;height:18px;margin:0 4px;background:var(--sp-toolbar-border)}.toolbar-font[data-v-1a2f529d],.toolbar-number-format[data-v-1a2f529d],.toolbar-align[data-v-1a2f529d],.toolbar-freeze[data-v-1a2f529d]{flex:0 0 auto}.toolbar-font-size[data-v-1a2f529d],.toolbar-number-format-group[data-v-1a2f529d]{display:inline-flex;align-items:center;gap:0;height:26px;position:relative}.toolbar-font-size__input[data-v-1a2f529d]{width:36px;height:26px;border:1px solid transparent;border-right:none;border-radius:3px 0 0 3px;background:transparent;color:var(--sp-toolbar-btn-color);font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;text-align:left;padding:0 5px;outline:none;box-sizing:border-box;-webkit-appearance:none;appearance:none;-moz-appearance:textfield}.toolbar-font-size__input[data-v-1a2f529d]::-webkit-outer-spin-button,.toolbar-font-size__input[data-v-1a2f529d]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.toolbar-font-size__input[data-v-1a2f529d]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-font-size__input[data-v-1a2f529d]:focus{border-color:var(--sp-toolbar-border);background:#fff}.toolbar-font-size__btn[data-v-1a2f529d]{display:flex;align-items:center;justify-content:center;width:16px;height:26px;border:1px solid transparent;border-left:none;border-radius:0 3px 3px 0;background:transparent;color:var(--sp-toolbar-btn-color);cursor:pointer;padding:0}.toolbar-font-size__btn[data-v-1a2f529d]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-font-size__btn svg[data-v-1a2f529d]{width:10px;height:10px}.toolbar-font-size__dropdown[data-v-1a2f529d]{position:absolute;width:56px;height:26px;pointer-events:none}.toolbar-btn[data-v-1a2f529d]{display:flex;align-items:center;justify-content:center;width:30px;height:26px;border:none;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color);cursor:pointer;padding:0}.toolbar-btn[data-v-1a2f529d]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.toolbar-btn[data-v-1a2f529d]:active:not(:disabled){opacity:.7}.toolbar-btn--active[data-v-1a2f529d]{background:var(--sp-toolbar-btn-hover-bg);color:var(--sp-toolbar-btn-active-color)}.toolbar-btn--step[data-v-1a2f529d]{width:26px;height:26px}.toolbar-btn--step svg[data-v-1a2f529d]{width:16px;height:16px}.toolbar-btn[data-v-1a2f529d]:disabled{color:var(--sp-toolbar-btn-disabled-color);cursor:default}.toolbar-btn__icon[data-v-1a2f529d]{width:18px;height:18px}.toolbar-btn svg[data-v-1a2f529d]:not(.toolbar-btn__icon){width:18px;height:18px}.toolbar-btn__label[data-v-1a2f529d]{display:none;font-size:12px;margin-left:6px}.toolbar-split[data-v-1a2f529d]{display:inline-flex;align-items:center;position:relative;height:26px}.toolbar-split__main[data-v-1a2f529d]{border:1px solid transparent;border-right:none;border-radius:3px 0 0 3px}.toolbar-split__arrow[data-v-1a2f529d]{display:flex;align-items:center;justify-content:center;width:16px;height:26px;border:1px solid transparent;border-radius:0 3px 3px 0;background:transparent;color:var(--sp-toolbar-btn-color);cursor:pointer;padding:0}.toolbar-split__arrow[data-v-1a2f529d]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.toolbar-split__arrow svg[data-v-1a2f529d]{width:10px!important;height:10px!important}.outline-trigger[data-v-1a2f529d]{display:flex;align-items:center;justify-content:space-between;gap:4px;height:26px;width:100%;border:1px solid transparent;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:12px;cursor:pointer;padding:0 5px;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;min-width:0}.outline-trigger[data-v-1a2f529d]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.outline-trigger[data-v-1a2f529d]:disabled{color:var(--sp-toolbar-btn-disabled-color, #aaa);cursor:default}.outline-trigger.is-open[data-v-1a2f529d]{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.outline-trigger__icon[data-v-1a2f529d]{width:16px;height:16px;flex:none}.outline-trigger .toolbar-btn__label[data-v-1a2f529d]{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.toolbar-btn.outline-trigger .outline-trigger__caret[data-v-1a2f529d]{width:10px;height:10px;opacity:.7;flex:none}.toolbar-more[data-v-1a2f529d]{display:flex;align-items:center;justify-content:center;width:30px;height:26px;border:none;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color);cursor:pointer;padding:0;flex:0 0 auto;margin-left:auto}.toolbar-more[data-v-1a2f529d]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-more--active[data-v-1a2f529d]{background:var(--sp-toolbar-btn-hover-bg);color:var(--sp-toolbar-btn-active-color)}.toolbar-more svg[data-v-1a2f529d]{width:18px;height:18px}.overflow-menu-wrap[data-v-1a2f529d]{min-width:180px;max-width:260px;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border);border-radius:4px;box-shadow:0 4px 12px #0000001f;padding:4px 6px;z-index:1000;transform-origin:top right;display:flex;flex-direction:column}.overflow-menu-wrap.no-anim[data-v-1a2f529d]{transition:none!important}.overflow-menu[data-v-1a2f529d]{max-height:calc(100vh - 80px);overflow-y:auto;scrollbar-width:none;display:flex;flex-direction:column;gap:2px}.overflow-menu[data-v-1a2f529d]::-webkit-scrollbar{display:none}.overflow-nav[data-v-1a2f529d]{flex:0 0 auto;height:18px;border:none;background:transparent;color:#888;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:3px}.overflow-nav[data-v-1a2f529d]:hover:not(:disabled){background:#eef3f9}.overflow-nav[data-v-1a2f529d]:disabled{color:#d5d5d5;cursor:default}.overflow-nav svg[data-v-1a2f529d]{width:10px;height:10px}.menu-pop-enter-active[data-v-1a2f529d],.menu-pop-leave-active[data-v-1a2f529d]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-1a2f529d],.menu-pop-leave-to[data-v-1a2f529d]{opacity:0;transform:scale(.9)}.overflow-menu .tb-item{width:100%}.overflow-menu .toolbar-sep{width:100%;height:1px;margin:2px 0}.overflow-menu .toolbar-split{width:100%}.overflow-menu .toolbar-split__main{flex:1 1 auto;justify-content:flex-start;padding-left:6px}.overflow-menu .toolbar-font-size,.overflow-menu .toolbar-number-format-group{width:100%;justify-content:flex-start}.overflow-menu .toolbar-font{width:100%}.overflow-menu .toolbar-number-format{flex:1 1 auto;width:auto!important;min-width:0}.overflow-menu .toolbar-align,.overflow-menu .toolbar-freeze{width:100%}.overflow-menu .toolbar-btn:not(.toolbar-btn--step):not(.toolbar-split__arrow):not(.toolbar-number-format__btn){width:100%;justify-content:flex-start;padding-left:6px}.overflow-menu .toolbar-btn__label{display:inline}.overflow-menu .toolbar-number-format__btn{flex:0 0 auto;width:30px}.overflow-menu .toolbar-color{width:100%}.overflow-menu .toolbar-wrap{width:100%;justify-content:flex-start}.overflow-menu .sp-dropdown .sp-dropdown__trigger,.overflow-menu .cf-menu-root .cf-menu-trigger{padding-left:6px;gap:6px}.overflow-menu .cf-menu-trigger__icon{width:18px;height:18px}.overflow-menu .outline-trigger{padding-left:6px;gap:6px}.overflow-menu .outline-trigger .toolbar-btn__label{margin-left:0}.overflow-menu .outline-trigger__icon{width:18px;height:18px;flex:none}.overflow-menu .toolbar-font-size__input{flex:1 1 auto;width:auto;min-width:40px}.overflow-menu .toolbar-split__main:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.tab-bar[data-v-96289e1d]{display:flex;align-items:stretch;height:30px;min-height:30px;background:var(--sp-tab-bar-bg);border-top:1px solid var(--sp-tab-bar-border);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin-top:4px}.tab-list[data-v-96289e1d]{display:flex;align-items:flex-start;flex:1;overflow:hidden;gap:1px;padding:0 1px}.tab-item[data-v-96289e1d]{display:flex;align-items:center;height:28px;min-width:0;max-width:120px;padding:0 10px;cursor:pointer;border:1px solid var(--sp-tab-inactive-border);background:var(--sp-tab-inactive-bg);color:var(--sp-tab-inactive-color);font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;white-space:nowrap;transition:background .1s;-webkit-touch-callout:none}.tab-item[data-v-96289e1d]:hover{background:var(--sp-tab-hover-bg)}.tab-item--active[data-v-96289e1d]{height:28px;background:var(--sp-tab-active-bg);color:var(--sp-tab-active-color);border-color:var(--sp-tab-active-bg) var(--sp-tab-bar-border) var(--sp-tab-bar-border);border-top:2px solid var(--sp-tab-active-border)}.tab-item--active[data-v-96289e1d]:hover{background:var(--sp-tab-active-bg)}.tab-item__name[data-v-96289e1d]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-rename-input[data-v-96289e1d]{width:100%;height:18px;border:none;border-radius:0;outline:none;padding:0;font-size:14px;font-family:inherit;background:var(--sp-tab-active-bg);color:var(--sp-tab-active-color);box-sizing:border-box}.tab-bar__list-btn[data-v-96289e1d]{display:flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;margin:0 2px 3px 3px;border:none;background:transparent;color:var(--sp-tab-add-btn-color);cursor:pointer;padding:0;align-self:flex-end}.tab-bar__list-btn[data-v-96289e1d]:hover,.tab-bar__list-btn--active[data-v-96289e1d]{background:var(--sp-tab-add-btn-hover-bg)}.tab-bar__list-btn svg[data-v-96289e1d]{width:14px;height:14px}.tab-bar__add-btn[data-v-96289e1d]{display:flex;align-items:center;justify-content:center;width:24px;min-width:24px;height:24px;margin:0 4px 3px 3px;border:none;background:transparent;color:var(--sp-tab-add-btn-color);font-size:16px;line-height:22px;text-align:center;cursor:pointer;padding:0;align-self:flex-end}.tab-bar__add-btn[data-v-96289e1d]:hover{background:var(--sp-tab-add-btn-hover-bg)}.tab-list-menu{position:fixed;display:flex;flex-direction:column;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border, #d8d8d8);border-radius:4px;box-shadow:0 4px 12px #0000001f;padding:4px;z-index:1000;transform-origin:bottom left;min-width:140px;max-width:260px;box-sizing:border-box}.tab-list-menu__nav{display:flex;align-items:center;justify-content:center;height:15px;min-height:15px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #666);cursor:pointer;padding:0;border-radius:3px}.tab-list-menu__nav:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg, #eef3f9)}.tab-list-menu__nav:disabled{color:#ccc;cursor:default}.tab-list-menu__nav svg{width:10px;height:10px}.tab-list-menu__list{display:flex;flex-direction:column;overflow:hidden;touch-action:none}.tab-list-menu__item{display:flex;align-items:center;gap:4px;width:100%;height:28px;padding:0 6px 0 10px;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #444);font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;cursor:pointer;white-space:nowrap;border-radius:3px;box-sizing:border-box}.tab-list-menu__item:hover{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.tab-list-menu__item--active{color:var(--sp-tab-active-border, #0078d7);font-weight:500}.tab-list-menu__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-list-menu__del{display:flex;align-items:center;justify-content:center;width:18px;height:18px;flex:0 0 auto;border:none;background:transparent;color:var(--sp-toolbar-btn-color, #999);cursor:pointer;padding:0;border-radius:3px;opacity:.55}.tab-list-menu__item:hover .tab-list-menu__del{opacity:1}.tab-list-menu__del:hover:not(:disabled){background:rgba(0,0,0,.08);color:#d9534f}.tab-list-menu__del:disabled{cursor:default;opacity:.25}.tab-list-menu__del svg{width:12px;height:12px}.find-bar[data-v-07f6713b]{display:flex;flex-direction:column;gap:4px;padding:6px 8px;background:var(--sp-toolbar-bg);border-bottom:1px solid var(--sp-toolbar-border);-webkit-user-select:none;user-select:none}.find-bar__row[data-v-07f6713b]{display:flex;align-items:center;gap:4px;min-width:0}.find-bar__row--inputs[data-v-07f6713b]{gap:4px}.find-bar__row--controls[data-v-07f6713b]{flex-wrap:wrap}.find-bar__input[data-v-07f6713b]{height:26px;flex:1 1 140px;min-width:80px;border:1px solid var(--sp-toolbar-border);border-radius:2px;padding:0 6px;font-size:12px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-formula-bar-input-color, #1a1a1a);background:#fff;outline:none;box-sizing:border-box}.find-bar__input[data-v-07f6713b]:focus{border-color:var(--sp-toolbar-btn-active-color)}.find-bar__btn--close[data-v-07f6713b]{width:26px;height:26px;padding:0;border:none;flex:0 0 auto}.find-bar__btn--close svg[data-v-07f6713b]{width:14px;height:14px}.find-bar__dropdown[data-v-07f6713b]{flex:0 0 auto}.find-bar__dropdown[data-v-07f6713b] .sp-dropdown__trigger{height:26px;border:1px solid var(--sp-toolbar-border);background:#fff;color:var(--sp-formula-bar-input-color, #1a1a1a);font-size:12px;padding:0 4px;border-radius:2px}.find-bar__dropdown[data-v-07f6713b] .sp-dropdown__trigger:hover{background:#f5f5f5}.find-bar__dropdown[data-v-07f6713b] .sp-dropdown__trigger--open{border-color:var(--sp-toolbar-btn-active-color)}.find-bar__chk[data-v-07f6713b]{display:flex;align-items:center;gap:5px;flex:0 0 auto;font-size:12px;color:var(--sp-toolbar-btn-color);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.find-bar__chk-input[data-v-07f6713b]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.find-bar__chk-box[data-v-07f6713b]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:0 0 auto;box-sizing:border-box;border:1px solid var(--sp-toolbar-border);border-radius:2px;background:#fff;transition:background .12s ease,border-color .12s ease}.find-bar__chk-tick[data-v-07f6713b]{width:12px;height:12px;color:#fff;opacity:0;transform:scale(.5);transition:opacity .12s ease,transform .12s ease}.find-bar__chk-input:checked+.find-bar__chk-box[data-v-07f6713b]{background:#0078d7;border-color:#0078d7}.find-bar__chk-input:checked+.find-bar__chk-box .find-bar__chk-tick[data-v-07f6713b]{opacity:1;transform:scale(1)}.find-bar__chk-input:focus-visible+.find-bar__chk-box[data-v-07f6713b]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.find-bar__count[data-v-07f6713b]{flex:0 0 auto;margin-left:auto;font-size:12px;color:var(--sp-toolbar-btn-color);min-width:44px;text-align:center;white-space:nowrap}.find-bar__btn[data-v-07f6713b]{height:26px;flex:0 0 auto;border:1px solid var(--sp-toolbar-border);border-radius:2px;background:transparent;color:var(--sp-toolbar-btn-color);cursor:pointer;font-size:12px;padding:0 8px;display:inline-flex;align-items:center;justify-content:center}.find-bar__btn[data-v-07f6713b]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.find-bar__btn[data-v-07f6713b]:disabled{color:var(--sp-toolbar-btn-disabled-color);cursor:default}.find-bar__btn--icon[data-v-07f6713b]{width:26px;padding:0}.find-bar__btn--icon svg[data-v-07f6713b]{width:14px;height:14px}.find-bar__btn--active[data-v-07f6713b]{background:var(--sp-toolbar-btn-hover-bg);border-color:var(--sp-toolbar-btn-active-color)}.find-bar__settings-panel[data-v-07f6713b]{position:fixed;z-index:9999;min-width:160px;padding:4px 0;background:#fff;border:1px solid var(--sp-toolbar-border);border-radius:2px;box-shadow:0 4px 12px #0000001f}.find-bar__chk--panel[data-v-07f6713b]{padding:6px 12px;gap:8px}.find-bar__chk--panel[data-v-07f6713b]:hover{background:var(--sp-toolbar-btn-hover-bg)}.find-pop-enter-active[data-v-07f6713b],.find-pop-leave-active[data-v-07f6713b]{transition:opacity .12s ease,transform .12s ease}.find-pop-enter-from[data-v-07f6713b],.find-pop-leave-to[data-v-07f6713b]{opacity:0;transform:translateY(-4px)}.nf-dialog__mask[data-v-84bb335b]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30000;background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center}.nf-dialog[data-v-84bb335b]{width:380px;max-width:calc(100vw - 32px);max-height:calc(100vh - 48px);overflow-y:auto;background:#fff;border:1px solid #d0d0d0;border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#1a1a1a;-webkit-user-select:none;user-select:none}.nf-dialog__header[data-v-84bb335b]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.nf-dialog__title[data-v-84bb335b]{font-size:13px;font-weight:600}.nf-dialog__close[data-v-84bb335b]{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:#888;cursor:pointer;border-radius:3px;padding:0}.nf-dialog__close[data-v-84bb335b]:hover{background:#f0f0f0;color:#444}.nf-dialog__close svg[data-v-84bb335b]{width:14px;height:14px}.nf-dialog__body[data-v-84bb335b]{padding:12px 14px;display:flex;flex-direction:column;gap:10px}.nf-field[data-v-84bb335b]{display:flex;align-items:center;gap:8px}.nf-field--inline[data-v-84bb335b]{min-height:26px}.nf-field__label[data-v-84bb335b]{width:88px;min-width:88px;font-size:12px;color:#555}.nf-field__input[data-v-84bb335b]{flex:1;height:26px;border:1px solid #c0c0c0;border-radius:3px;background:#fff;font-size:12px;color:#1a1a1a;padding:0 6px;outline:none;box-sizing:border-box;font-family:inherit}.nf-field__input[data-v-84bb335b]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-field__dropdown[data-v-84bb335b]{flex:1}.nf-field__dropdown[data-v-84bb335b] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.nf-field__dropdown[data-v-84bb335b] .sp-dropdown__trigger:hover{background:#f5f5f5}.nf-field__dropdown[data-v-84bb335b] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-field__textarea[data-v-84bb335b]{flex:1;min-height:44px;border:1px solid #c0c0c0;border-radius:3px;background:#fff;font-size:12px;color:#1a1a1a;padding:4px 6px;outline:none;box-sizing:border-box;resize:none;font-family:Consolas,Courier New,monospace}.nf-field__textarea[data-v-84bb335b]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-checkbox[data-v-84bb335b]{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#333;cursor:pointer}.nf-checkbox input[data-v-84bb335b]{margin:0;cursor:pointer}.nf-dialog__footer[data-v-84bb335b]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.nf-preview[data-v-84bb335b]{display:flex;flex-direction:column;gap:2px;min-width:0}.nf-preview__label[data-v-84bb335b]{font-size:11px;color:#888}.nf-preview__value[data-v-84bb335b]{font-size:13px;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.nf-dialog__actions[data-v-84bb335b]{display:flex;gap:8px}.nf-btn[data-v-84bb335b]{height:28px;padding:0 16px;border:1px solid #ccc;border-radius:3px;background:#fff;color:#333;font-size:12px;cursor:pointer;font-family:inherit}.nf-btn[data-v-84bb335b]:hover{background:#f0f0f0}.nf-btn--primary[data-v-84bb335b]{border-color:#0078d7;background:#0078d7;color:#fff}.nf-btn--primary[data-v-84bb335b]:hover{background:#0069c0}.nf-dialog-enter-active[data-v-84bb335b],.nf-dialog-leave-active[data-v-84bb335b]{transition:opacity .14s ease-out}.nf-dialog-enter-from[data-v-84bb335b],.nf-dialog-leave-to[data-v-84bb335b]{opacity:0}.nf-dialog-enter-active .nf-dialog[data-v-84bb335b],.nf-dialog-leave-active .nf-dialog[data-v-84bb335b]{transition:transform .14s ease-out}.nf-dialog-enter-from .nf-dialog[data-v-84bb335b],.nf-dialog-leave-to .nf-dialog[data-v-84bb335b]{transform:scale(.96)}.sort-confirm__mask[data-v-af42d78b]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30000;background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center}.sort-confirm[data-v-af42d78b]{width:360px;max-width:calc(100vw - 32px);background:#fff;border:1px solid #d0d0d0;border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#1a1a1a;-webkit-user-select:none;user-select:none}.sort-confirm__header[data-v-af42d78b]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.sort-confirm__title[data-v-af42d78b]{font-size:13px;font-weight:600}.sort-confirm__close[data-v-af42d78b]{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:#888;cursor:pointer;border-radius:3px;padding:0}.sort-confirm__close[data-v-af42d78b]:hover{background:#f0f0f0;color:#444}.sort-confirm__close svg[data-v-af42d78b]{width:14px;height:14px}.sort-confirm__body[data-v-af42d78b]{padding:14px}.sort-confirm__message[data-v-af42d78b]{margin:0 0 12px;font-size:12px;line-height:1.5;color:#333}.sort-confirm__options[data-v-af42d78b]{display:flex;flex-direction:column;gap:8px}.sort-confirm__option[data-v-af42d78b]{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#333;cursor:pointer}.sort-confirm__option input[data-v-af42d78b]{margin:0;cursor:pointer}.sort-confirm__footer[data-v-af42d78b]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.sort-confirm__btn[data-v-af42d78b]{height:28px;padding:0 16px;border:1px solid #ccc;border-radius:3px;background:#fff;color:#333;font-size:12px;cursor:pointer;font-family:inherit}.sort-confirm__btn[data-v-af42d78b]:hover{background:#f0f0f0}.sort-confirm__btn--primary[data-v-af42d78b]{border-color:#0078d7;background:#0078d7;color:#fff}.sort-confirm__btn--primary[data-v-af42d78b]:hover{background:#0069c0}.sort-confirm-enter-active[data-v-af42d78b],.sort-confirm-leave-active[data-v-af42d78b]{transition:opacity .14s ease-out}.sort-confirm-enter-from[data-v-af42d78b],.sort-confirm-leave-to[data-v-af42d78b]{opacity:0}.sort-confirm-enter-active .sort-confirm[data-v-af42d78b],.sort-confirm-leave-active .sort-confirm[data-v-af42d78b]{transition:transform .14s ease-out}.sort-confirm-enter-from .sort-confirm[data-v-af42d78b],.sort-confirm-leave-to .sort-confirm[data-v-af42d78b]{transform:scale(.96)}.ifn-dialog__mask[data-v-9b21a714]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30000;background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center}.ifn-dialog[data-v-9b21a714]{width:440px;max-width:calc(100vw - 32px);background:#fff;border:1px solid #d0d0d0;border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#1a1a1a;-webkit-user-select:none;user-select:none}.ifn-dialog__header[data-v-9b21a714]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.ifn-dialog__title[data-v-9b21a714]{font-size:13px;font-weight:600}.ifn-dialog__close[data-v-9b21a714]{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:transparent;color:#888;cursor:pointer;border-radius:3px;padding:0}.ifn-dialog__close[data-v-9b21a714]:hover{background:#f0f0f0;color:#444}.ifn-dialog__close svg[data-v-9b21a714]{width:14px;height:14px}.ifn-dialog__body[data-v-9b21a714]{padding:14px;display:flex;flex-direction:column;gap:12px}.ifn-dialog__field[data-v-9b21a714]{display:flex;flex-direction:column;gap:6px}.ifn-dialog__label[data-v-9b21a714]{font-size:12px;color:#333}.ifn-dialog__dropdown[data-v-9b21a714]{width:100%}.ifn-dialog__dropdown[data-v-9b21a714] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.ifn-dialog__dropdown[data-v-9b21a714] .sp-dropdown__trigger:hover{background:#f5f5f5}.ifn-dialog__dropdown[data-v-9b21a714] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.ifn-dialog__desc[data-v-9b21a714]{font-size:12px;line-height:1.5;color:#666;-webkit-user-select:text;user-select:text}.ifn-dialog__textarea[data-v-9b21a714]{width:100%;height:84px;border:1px solid #c0c0c0;border-radius:3px;background:#fff;font-size:12px;line-height:1.5;color:#1a1a1a;padding:5px 6px;outline:none;box-sizing:border-box;font-family:Consolas,Menlo,monospace;resize:none;-webkit-user-select:text;user-select:text}.ifn-dialog__textarea[data-v-9b21a714]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.ifn-dialog__footer[data-v-9b21a714]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.ifn-dialog__btn[data-v-9b21a714]{height:28px;padding:0 16px;border:1px solid #ccc;border-radius:3px;background:#fff;color:#333;font-size:12px;cursor:pointer;font-family:inherit}.ifn-dialog__btn[data-v-9b21a714]:hover{background:#f0f0f0}.ifn-dialog__btn--primary[data-v-9b21a714]{border-color:#0078d7;background:#0078d7;color:#fff}.ifn-dialog__btn--primary[data-v-9b21a714]:hover{background:#0069c0}.ifn-dialog__btn--primary[data-v-9b21a714]:disabled,.ifn-dialog__btn--primary[data-v-9b21a714]:disabled:hover{border-color:#ccc;background:#f0f0f0;color:#a8a8a8;cursor:not-allowed}.ifn-dialog-enter-active[data-v-9b21a714],.ifn-dialog-leave-active[data-v-9b21a714]{transition:opacity .14s ease-out}.ifn-dialog-enter-from[data-v-9b21a714],.ifn-dialog-leave-to[data-v-9b21a714]{opacity:0}.ifn-dialog-enter-active .ifn-dialog[data-v-9b21a714],.ifn-dialog-leave-active .ifn-dialog[data-v-9b21a714]{transition:transform .14s ease-out}.ifn-dialog-enter-from .ifn-dialog[data-v-9b21a714],.ifn-dialog-leave-to .ifn-dialog[data-v-9b21a714]{transform:scale(.96)}.filter-popup[data-v-8ed96243]{position:fixed;z-index:10005;width:248px;background:#fff;border:1px solid #d0d0d0;border-radius:4px;box-shadow:0 4px 14px #00000029;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:13px;color:#333;-webkit-user-select:none;user-select:none;overflow:hidden;transform-origin:top right}.filter-popup__head[data-v-8ed96243]{display:flex;align-items:center;gap:6px;padding:8px 10px 6px;border-bottom:1px solid #eee}.filter-popup__head-label[data-v-8ed96243]{font-weight:600;font-size:13px}.filter-popup__head-badge[data-v-8ed96243]{font-size:11px;color:#0078d7;background:rgba(0,120,215,.1);border-radius:8px;padding:1px 6px}.filter-popup__search[data-v-8ed96243]{padding:8px 10px 4px}.filter-popup__search-input[data-v-8ed96243]{width:100%;box-sizing:border-box;height:26px;border:1px solid #ccc;border-radius:3px;padding:0 8px;font-size:12px;outline:none}.filter-popup__search-input[data-v-8ed96243]:focus{border-color:#0078d7}.filter-popup__tools[data-v-8ed96243]{display:flex;align-items:center;gap:4px;padding:4px 10px 6px}.filter-popup__tool[data-v-8ed96243]{border:none;background:transparent;color:#0078d7;font-size:12px;cursor:pointer;padding:2px 4px}.filter-popup__tool[data-v-8ed96243]:hover{text-decoration:underline}.filter-popup__count[data-v-8ed96243]{margin-left:auto;font-size:11px;color:#999}.filter-popup__list[data-v-8ed96243]{height:252px;overflow-y:auto;border-top:1px solid #f0f0f0;border-bottom:1px solid #f0f0f0}.filter-popup__item[data-v-8ed96243]{display:flex;align-items:center;gap:6px;height:28px;padding:0 10px;box-sizing:border-box;cursor:pointer;white-space:nowrap}.filter-popup__item[data-v-8ed96243]:hover{background:#eef3f9}.filter-popup__item input[data-v-8ed96243]{margin:0;flex-shrink:0}.filter-popup__item-label[data-v-8ed96243]{overflow:hidden;text-overflow:ellipsis;font-size:12px}.filter-popup__item-note[data-v-8ed96243]{font-size:11px;color:#999;flex-shrink:0}.filter-popup__empty[data-v-8ed96243]{padding:16px 10px;text-align:center;color:#999;font-size:12px}.filter-popup__modes[data-v-8ed96243]{display:flex;gap:2px;padding:6px 10px}.filter-popup__mode[data-v-8ed96243]{flex:1;border:1px solid #e0e0e0;background:#f7f7f7;border-radius:3px;font-size:12px;color:#444;padding:5px 0;cursor:pointer}.filter-popup__mode[data-v-8ed96243]:hover{background:#eef3f9;border-color:#c8d8f0}.filter-popup__cond[data-v-8ed96243]{padding:8px 10px}.filter-popup__cond-back[data-v-8ed96243]{border:none;background:transparent;color:#0078d7;font-size:12px;cursor:pointer;padding:0;margin-bottom:8px}.filter-popup__cond-row[data-v-8ed96243]{display:flex;align-items:center;gap:6px;margin-bottom:6px}.filter-popup__cond-select[data-v-8ed96243]{width:100%;height:26px;border:1px solid #ccc;border-radius:3px;font-size:12px;background:#fff;outline:none}.filter-popup__cond-input[data-v-8ed96243]{flex:1;min-width:0;height:26px;border:1px solid #ccc;border-radius:3px;padding:0 6px;font-size:12px;box-sizing:border-box;outline:none}.filter-popup__cond-input[data-v-8ed96243]:focus{border-color:#0078d7}.filter-popup__cond-and[data-v-8ed96243]{font-size:12px;color:#666}.filter-popup__footer[data-v-8ed96243]{display:flex;align-items:center;gap:6px;padding:8px 10px;border-top:1px solid #eee}.filter-popup__btn[data-v-8ed96243]{height:26px;padding:0 12px;border:1px solid #d0d0d0;border-radius:3px;background:#f7f7f7;color:#333;font-size:12px;cursor:pointer}.filter-popup__btn[data-v-8ed96243]:hover{background:#eef3f9}.filter-popup__btn--primary[data-v-8ed96243]{background:#0078d7;border-color:#0078d7;color:#fff}.filter-popup__btn--primary[data-v-8ed96243]:hover{background:#006cbe}.filter-popup__btn--clear[data-v-8ed96243]{color:#c62828;border-color:#e0c0c0}.filter-popup__btn--clear[data-v-8ed96243]:hover{background:#fdf0f0}.filter-popup__footer-spacer[data-v-8ed96243]{flex:1}.cf-manager[data-v-230c5fcf]{width:460px;max-height:70vh;display:flex;flex-direction:column;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-toolbar-btn-color, #333);box-sizing:border-box}.cf-manager__header[data-v-230c5fcf]{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--sp-toolbar-border, #eee)}.cf-manager__title[data-v-230c5fcf]{font-weight:600;font-size:14px;flex:1}.cf-manager__close[data-v-230c5fcf]{border:none;background:transparent;font-size:20px;line-height:1;cursor:pointer;color:#888}.cf-manager__close[data-v-230c5fcf]:hover{color:#333}.cf-manager__new[data-v-230c5fcf]{margin-left:auto}.cf-manager__empty[data-v-230c5fcf]{padding:30px 14px;text-align:center;color:#999;font-size:13px}.cf-manager__list[data-v-230c5fcf]{overflow-y:auto;padding:8px}.cf-rule[data-v-230c5fcf]{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border:1px solid var(--sp-toolbar-border, #eee);border-radius:4px;margin-bottom:6px}.cf-rule--disabled[data-v-230c5fcf]{opacity:.5}.cf-rule__main[data-v-230c5fcf]{display:flex;align-items:center;gap:10px;min-width:0}.cf-rule__preview[data-v-230c5fcf]{width:34px;height:24px;border:1px solid #ccc;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:0 0 auto}.cf-rule__info[data-v-230c5fcf]{min-width:0}.cf-rule__summary[data-v-230c5fcf]{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cf-rule__range[data-v-230c5fcf]{font-size:12px;color:#888;margin-top:2px}.cf-rule__actions[data-v-230c5fcf]{display:flex;align-items:center;gap:6px;flex:0 0 auto}.cf-chk[data-v-230c5fcf]{display:flex;align-items:center;gap:5px;flex:0 0 auto;font-size:12px;color:var(--sp-toolbar-btn-color, #333);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.cf-chk__input[data-v-230c5fcf]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.cf-chk__box[data-v-230c5fcf]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:0 0 auto;box-sizing:border-box;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:3px;background:#fff;transition:background .12s ease,border-color .12s ease}.cf-chk__tick[data-v-230c5fcf]{width:12px;height:12px;color:#fff;opacity:0;transform:scale(.5);transition:opacity .12s ease,transform .12s ease}.cf-chk__input:checked+.cf-chk__box[data-v-230c5fcf]{background:#0078d7;border-color:#0078d7}.cf-chk__input:checked+.cf-chk__box .cf-chk__tick[data-v-230c5fcf]{opacity:1;transform:scale(1)}.cf-chk__input:focus-visible+.cf-chk__box[data-v-230c5fcf]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.cf-mini[data-v-230c5fcf]{width:26px;height:26px;border:1px solid #c4c4c4;border-radius:3px;background:#fff;cursor:pointer;color:#333;display:inline-flex;align-items:center;justify-content:center}.cf-mini svg[data-v-230c5fcf]{display:block;width:14px;height:14px}.cf-mini[data-v-230c5fcf]:hover{background:#f0f0f0}.cf-btn[data-v-230c5fcf]{height:30px;padding:0 14px;border:1px solid #c4c4c4;border-radius:3px;background:#fff;cursor:pointer;font-size:13px;color:#333}.cf-btn[data-v-230c5fcf]:hover{background:#f0f0f0}.cf-btn--primary[data-v-230c5fcf]{border-color:#0078d7;background:#0078d7;color:#fff}.cf-btn--primary[data-v-230c5fcf]:hover{background:#0069c0}.cf-editor[data-v-f625bb44]{width:360px;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-toolbar-btn-color, #333);box-sizing:border-box}.cf-editor__header[data-v-f625bb44]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--sp-toolbar-border, #eee);font-weight:600;font-size:14px}.cf-editor__close[data-v-f625bb44]{border:none;background:transparent;font-size:20px;line-height:1;cursor:pointer;color:#888}.cf-editor__close[data-v-f625bb44]:hover{color:#333}.cf-editor__body[data-v-f625bb44]{padding:12px 14px}.cf-row[data-v-f625bb44]{display:flex;align-items:center;gap:8px;margin-bottom:10px}.cf-hint[data-v-f625bb44]{margin:-6px 0 10px;font-size:12px;color:var(--sp-find-hint-color, #888);line-height:1.5}.cf-row--inline[data-v-f625bb44]{justify-content:flex-start;gap:18px}.cf-label[data-v-f625bb44]{width:64px;flex:0 0 auto;font-size:13px;color:#666}.cf-dropdown[data-v-f625bb44]{flex:1;min-width:0}.cf-dropdown[data-v-f625bb44] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.cf-dropdown[data-v-f625bb44] .sp-dropdown__trigger:hover{background:#f5f5f5}.cf-dropdown[data-v-f625bb44] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.cf-input[data-v-f625bb44]{flex:1;height:28px;border:1px solid #c4c4c4;border-radius:3px;padding:0 8px;font-size:13px;background:#fff;color:#1a1a1a;box-sizing:border-box;outline:none}.cf-input[data-v-f625bb44]:focus{border-color:#0078d7}.cf-format-row[data-v-f625bb44]{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.toolbar-btn[data-v-f625bb44]{display:flex;align-items:center;justify-content:center;width:30px;height:26px;border:none;border-radius:3px;background:transparent;color:var(--sp-toolbar-btn-color, #444);cursor:pointer;padding:0}.toolbar-btn[data-v-f625bb44]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.toolbar-btn[data-v-f625bb44]:active:not(:disabled){opacity:.7}.toolbar-btn--active[data-v-f625bb44]{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6);color:var(--sp-toolbar-btn-active-color, #0078d7)}.toolbar-btn svg[data-v-f625bb44]{width:18px;height:18px}.cf-error[data-v-f625bb44]{color:#d93025;font-size:12px;margin:-4px 0 8px 72px}.cf-chk[data-v-f625bb44]{display:flex;align-items:center;gap:5px;flex:0 0 auto;font-size:13px;color:var(--sp-toolbar-btn-color, #333);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.cf-chk__input[data-v-f625bb44]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.cf-chk__box[data-v-f625bb44]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:0 0 auto;box-sizing:border-box;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:3px;background:#fff;transition:background .12s ease,border-color .12s ease}.cf-chk__tick[data-v-f625bb44]{width:12px;height:12px;color:#fff;opacity:0;transform:scale(.5);transition:opacity .12s ease,transform .12s ease}.cf-chk__input:checked+.cf-chk__box[data-v-f625bb44]{background:#0078d7;border-color:#0078d7}.cf-chk__input:checked+.cf-chk__box .cf-chk__tick[data-v-f625bb44]{opacity:1;transform:scale(1)}.cf-chk__input:focus-visible+.cf-chk__box[data-v-f625bb44]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.cf-editor__footer[data-v-f625bb44]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--sp-toolbar-border, #eee)}.cf-btn[data-v-f625bb44]{height:30px;padding:0 16px;border:1px solid #c4c4c4;border-radius:3px;background:#fff;cursor:pointer;font-size:13px;color:#333}.cf-btn[data-v-f625bb44]:hover{background:#f0f0f0}.cf-btn--primary[data-v-f625bb44]{border-color:#0078d7;background:#0078d7;color:#fff}.cf-btn--primary[data-v-f625bb44]:hover{background:#0069c0}.dv-editor[data-v-dc3b8000]{width:360px;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-toolbar-btn-color, #333);box-sizing:border-box;-webkit-user-select:none;user-select:none}.dv-editor__header[data-v-dc3b8000]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--sp-toolbar-border, #eee);font-weight:600;font-size:14px}.dv-editor__close[data-v-dc3b8000]{border:none;background:transparent;font-size:20px;line-height:1;cursor:pointer;color:#888}.dv-editor__close[data-v-dc3b8000]:hover{color:#333}.dv-editor__body[data-v-dc3b8000]{padding:12px 14px;max-height:calc(100vh - 140px);overflow:auto}.dv-sec+.dv-sec[data-v-dc3b8000]{margin-top:10px;padding-top:10px;border-top:1px solid var(--sp-toolbar-border, #eee)}.dv-sec__title[data-v-dc3b8000]{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--sp-find-hint-color, #888)}.dv-row[data-v-dc3b8000]{display:flex;align-items:center;gap:8px;margin-bottom:10px}.dv-row--top[data-v-dc3b8000]{align-items:flex-start}.dv-row--inline[data-v-dc3b8000]{justify-content:flex-start;gap:18px}.dv-label[data-v-dc3b8000]{width:64px;flex:0 0 auto;font-size:13px;color:#666}.dv-hint[data-v-dc3b8000]{margin:-6px 0 10px;font-size:12px;color:var(--sp-find-hint-color, #888);line-height:1.5}.dv-dropdown[data-v-dc3b8000]{flex:1;min-width:0}.dv-dropdown[data-v-dc3b8000] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.dv-dropdown[data-v-dc3b8000] .sp-dropdown__trigger:hover{background:#f5f5f5}.dv-dropdown[data-v-dc3b8000] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.dv-input[data-v-dc3b8000]{flex:1;min-width:0;height:28px;border:1px solid #c4c4c4;border-radius:3px;padding:0 8px;font-size:13px;font-family:inherit;background:#fff;color:#1a1a1a;box-sizing:border-box;outline:none}.dv-input[data-v-dc3b8000]:focus{border-color:#0078d7}.dv-input[data-v-dc3b8000]:disabled{background:#f5f5f5;color:#999}.dv-input--area[data-v-dc3b8000]{height:auto;min-height:46px;padding:5px 8px;line-height:1.5;resize:vertical}.dv-error[data-v-dc3b8000]{color:#d93025;font-size:12px;margin:-4px 0 8px 72px}.dv-chk[data-v-dc3b8000]{display:flex;align-items:center;gap:5px;flex:0 0 auto;font-size:13px;color:var(--sp-toolbar-btn-color, #333);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.dv-chk__input[data-v-dc3b8000]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.dv-chk__box[data-v-dc3b8000]{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:0 0 auto;box-sizing:border-box;border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:3px;background:#fff;transition:background .12s ease,border-color .12s ease}.dv-chk__tick[data-v-dc3b8000]{width:12px;height:12px;color:#fff;opacity:0;transform:scale(.5);transition:opacity .12s ease,transform .12s ease}.dv-chk__input:checked+.dv-chk__box[data-v-dc3b8000]{background:#0078d7;border-color:#0078d7}.dv-chk__input:checked+.dv-chk__box .dv-chk__tick[data-v-dc3b8000]{opacity:1;transform:scale(1)}.dv-chk__input:focus-visible+.dv-chk__box[data-v-dc3b8000]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.dv-chk--disabled[data-v-dc3b8000]{color:var(--sp-find-hint-color, #aaa);cursor:not-allowed}.dv-chk--disabled .dv-chk__box[data-v-dc3b8000]{background:#f5f5f5;border-color:#d8d8d8}.dv-chk--disabled .dv-chk__input:checked+.dv-chk__box[data-v-dc3b8000]{background:#c4c4c4;border-color:#c4c4c4}.dv-editor__footer[data-v-dc3b8000]{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid var(--sp-toolbar-border, #eee)}.dv-editor__spacer[data-v-dc3b8000]{flex:1}.dv-btn[data-v-dc3b8000]{height:30px;padding:0 16px;border:1px solid #c4c4c4;border-radius:3px;background:#fff;cursor:pointer;font-size:13px;color:#333;white-space:nowrap}.dv-btn[data-v-dc3b8000]:hover{background:#f0f0f0}.dv-btn--primary[data-v-dc3b8000]{border-color:#0078d7;background:#0078d7;color:#fff}.dv-btn--primary[data-v-dc3b8000]:hover{background:#0069c0}.dv-btn--danger[data-v-dc3b8000]{color:#c5221f}.dv-btn--danger[data-v-dc3b8000]:hover{background:#fce8e6}.dvd[data-v-fc845e0b]{position:fixed;z-index:10004;box-sizing:border-box;background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 14px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:13px;color:#333;overflow:hidden;-webkit-user-select:none;user-select:none}.dvd__search[data-v-fc845e0b]{height:33px;padding:4px;box-sizing:border-box;border-bottom:1px solid #e6e6e6}.dvd__search-input[data-v-fc845e0b]{width:100%;height:24px;box-sizing:border-box;border:1px solid #c8c8c8;border-radius:2px;outline:none;padding:0 6px;font-size:13px;color:#1a1a1a;background:#fff}.dvd__search-input[data-v-fc845e0b]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.dvd__list[data-v-fc845e0b]{overflow-y:auto;overflow-x:hidden}.dvd__item[data-v-fc845e0b]{display:flex;align-items:center;padding:0 6px;box-sizing:border-box;cursor:pointer;white-space:nowrap;overflow:hidden}.dvd__item--active[data-v-fc845e0b]{background:#e8f0fe}.dvd__item--checked[data-v-fc845e0b]{font-weight:600}.dvd__check[data-v-fc845e0b]{width:14px;flex:none;color:#0078d7;font-size:12px}.dvd__label[data-v-fc845e0b]{flex:1;overflow:hidden;text-overflow:ellipsis}.dvd__empty[data-v-fc845e0b]{padding:8px 10px;color:#999;font-size:12px;text-align:center}.dv-alert[data-v-4edabad0]{width:360px;background:var(--sp-toolbar-bg, #fff);border:1px solid var(--sp-toolbar-border, #d0d0d0);border-radius:6px;box-shadow:0 8px 24px #0000002e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-toolbar-btn-color, #333);box-sizing:border-box;-webkit-user-select:none;user-select:none}.dv-alert__header[data-v-4edabad0]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--sp-toolbar-border, #eee);font-weight:600;font-size:14px}.dv-alert__body[data-v-4edabad0]{display:flex;gap:10px;padding:14px}.dv-alert__icon[data-v-4edabad0]{width:28px;height:28px;flex:0 0 auto}.dv-alert__text[data-v-4edabad0]{flex:1;min-width:0}.dv-alert__subtitle[data-v-4edabad0]{font-size:13px;font-weight:600;color:var(--sp-toolbar-btn-color, #222);margin-bottom:4px;word-break:break-word}.dv-alert__message[data-v-4edabad0]{font-size:13px;line-height:1.5;color:var(--sp-toolbar-btn-color, #444);word-break:break-word}.dv-alert__footer[data-v-4edabad0]{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid var(--sp-toolbar-border, #eee)}.dv-alert__spacer[data-v-4edabad0]{flex:1}.dv-alert__btn[data-v-4edabad0]{height:30px;padding:0 16px;border:1px solid #c4c4c4;border-radius:3px;background:#fff;cursor:pointer;font-size:13px;color:#333;white-space:nowrap}.dv-alert__btn[data-v-4edabad0]:hover{background:#f0f0f0}.dv-alert__btn--primary[data-v-4edabad0]{border-color:#0078d7;background:#0078d7;color:#fff}.dv-alert__btn--primary[data-v-4edabad0]:hover{background:#0069c0}.dvim[data-v-15c54146]{position:fixed;z-index:10002;max-width:260px;padding:6px 9px;box-sizing:border-box;background:#fffde7;border:1px solid #d6cf8f;border-radius:3px;box-shadow:0 2px 8px #00000026;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:#4a4200;pointer-events:none;-webkit-user-select:none;user-select:none}.dvim__title[data-v-15c54146]{font-size:12px;font-weight:600;margin-bottom:2px;word-break:break-word}.dvim__message[data-v-15c54146]{font-size:12px;line-height:1.45;white-space:pre-wrap;word-break:break-word}.spreadsheet-outer[data-v-d41df7e2]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%;min-height:400px;width:100%}.formula-bar[data-v-d41df7e2]{display:flex;align-items:flex-start;min-height:36px;padding:0;gap:0}.formula-bar--expanded[data-v-d41df7e2]{min-height:72px}.formula-bar__cell-label[data-v-d41df7e2]{width:48px;min-width:48px;height:28px;line-height:28px;margin-top:4px;text-align:center;font-size:12px;font-weight:600;color:var(--sp-formula-bar-label-color);background:var(--sp-formula-bar-label-bg);border:1px solid var(--sp-formula-bar-label-border);border-radius:2px;-webkit-user-select:none;user-select:none}.formula-bar__buttons[data-v-d41df7e2]{display:inline-flex;align-items:stretch;margin-top:4px;margin-left:6px;height:28px;border:1px solid var(--sp-formula-bar-input-border);border-radius:2px;overflow:hidden;background:var(--sp-formula-bar-input-bg)}.formula-bar__btn[data-v-d41df7e2]{width:22px;height:28px;border:none;border-radius:0;background:transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;-webkit-user-select:none;user-select:none;color:inherit}.formula-bar__btn+.formula-bar__btn[data-v-d41df7e2]{border-left:1px solid var(--sp-formula-bar-input-border)}.formula-bar__btn[data-v-d41df7e2]:hover{background:var(--sp-scroll-btn-hover-bg, #f0f0f0)}.formula-bar__btn--cancel[data-v-d41df7e2]:hover{color:#e53935;background:#fdecea}.formula-bar__btn--accept[data-v-d41df7e2]:hover{color:#2e7d32;background:#e8f5e9}.formula-bar__fx-icon[data-v-d41df7e2]{display:block;width:16px;height:16px;color:var(--sp-formula-bar-input-color, #333);-webkit-user-select:none;user-select:none}.formula-bar__btn--fx[data-v-d41df7e2]:hover{background:var(--sp-scroll-btn-hover-bg, #f0f0f0)}.formula-bar__input[data-v-d41df7e2]{flex:1;min-height:28px;height:28px;line-height:20px;margin-top:4px;border:1px solid var(--sp-formula-bar-input-border);border-radius:2px;outline:none;padding:3px 6px;margin-left:4px;font-size:13px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;color:var(--sp-formula-bar-input-color);background:var(--sp-formula-bar-input-bg);resize:none;overflow:hidden;box-sizing:border-box}.formula-bar__input--expanded[data-v-d41df7e2]{height:68px;overflow:auto}.formula-bar__input[data-v-d41df7e2]:focus{border-color:var(--sp-formula-bar-input-focus-border);box-shadow:0 0 0 1px var(--sp-formula-bar-input-focus-shadow)}.formula-bar__toggle[data-v-d41df7e2]{width:22px;min-width:22px;height:28px;margin-top:4px;margin-left:2px;margin-right:2px;border:1px solid var(--sp-formula-bar-input-border);border-radius:2px;background:var(--sp-formula-bar-input-bg);color:var(--sp-formula-bar-input-color);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;-webkit-user-select:none;user-select:none}.formula-bar__toggle[data-v-d41df7e2]:hover{background:var(--sp-scroll-btn-hover-bg, #e8e8e8)}.spreadsheet-wrapper[data-v-d41df7e2]{flex:1;position:relative;overflow:hidden;background:var(--sp-wrapper-bg)}.grid-canvas[data-v-d41df7e2]{position:absolute;top:0;left:0;display:block;outline:none;cursor:cell}.grid-canvas--freeze[data-v-d41df7e2]{pointer-events:none;z-index:1}.grid-canvas[data-v-d41df7e2]:not(.grid-canvas--freeze){z-index:0}.grid-canvas[data-v-d41df7e2]:focus{outline:none}.v-scrollbar[data-v-d41df7e2]{position:absolute;right:0;top:0;width:11px;height:calc(100% - 11px);display:flex;flex-direction:column;background:var(--sp-wrapper-bg)}.h-scrollbar[data-v-d41df7e2]{position:absolute;left:0;bottom:0;height:11px;width:calc(100% - 11px);display:flex;background:var(--sp-wrapper-bg)}.sb-corner[data-v-d41df7e2]{position:absolute;right:0;bottom:0;width:11px;height:11px;background:var(--sp-wrapper-bg)}.sb-btn[data-v-d41df7e2]{width:11px;height:11px;min-width:11px;min-height:11px;border:none;background:var(--sp-scroll-btn-bg, #e8e8e8);display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;-webkit-user-select:none;user-select:none}.sb-btn[data-v-d41df7e2]:hover{background:var(--sp-scroll-btn-hover-bg, #d0d0d0)}.sb-btn[data-v-d41df7e2]:active{background:var(--sp-scroll-btn-active-bg, #c0c0c0)}.sb-arrow[data-v-d41df7e2]{display:block;width:0;height:0}.sb-arrow--up[data-v-d41df7e2]{border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:4px solid var(--sp-scroll-btn-color, #666)}.sb-arrow--down[data-v-d41df7e2]{border-left:3px solid transparent;border-right:3px solid transparent;border-top:4px solid var(--sp-scroll-btn-color, #666)}.sb-arrow--left[data-v-d41df7e2]{border-top:3px solid transparent;border-bottom:3px solid transparent;border-right:4px solid var(--sp-scroll-btn-color, #666)}.sb-arrow--right[data-v-d41df7e2]{border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:4px solid var(--sp-scroll-btn-color, #666)}.sb-track[data-v-d41df7e2]{flex:1;position:relative;background:var(--sp-scroll-track-bg, rgba(0,0,0,.06))}.sb-track--v[data-v-d41df7e2]{width:11px}.sb-track--h[data-v-d41df7e2]{height:11px}.sb-thumb[data-v-d41df7e2]{position:absolute;border-radius:3px;background:var(--sp-scroll-thumb);cursor:default}.sb-thumb[data-v-d41df7e2]:hover{background:var(--sp-scroll-thumb-hover)}.sb-thumb--v[data-v-d41df7e2]{left:1px;right:1px;min-height:16px}.sb-thumb--h[data-v-d41df7e2]{top:1px;bottom:1px;min-width:16px}.cell-editor[data-v-d41df7e2]{position:absolute;border:2px solid var(--sp-cell-editor-border);outline:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:13px;color:var(--sp-cell-editor-color);background:var(--sp-cell-editor-bg);box-shadow:0 0 0 1px var(--sp-cell-editor-shadow);z-index:10;box-sizing:border-box;min-width:0;overflow:hidden;padding:0;margin:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;resize:none;white-space:pre-wrap;word-break:break-all}.context-menu{position:fixed;z-index:10000;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 8px #00000026;padding:4px 0;min-width:120px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;font-size:13px;transform-origin:top left}.context-menu__item{padding:6px 12px;cursor:pointer;color:#333;white-space:nowrap;position:relative;display:flex;align-items:center;justify-content:space-between}.context-menu__item:hover{background:#e8f0fe}.context-menu__item--disabled{color:#bbb;cursor:default}.context-menu__item--disabled:hover{background:transparent}.context-menu__arrow{margin-left:8px;margin-right:-2px;width:12px;height:12px;fill:#888;flex:none}.context-submenu{display:none;position:absolute;left:100%;top:-5px;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 8px #00000026;padding:4px 0;min-width:100px;z-index:10001}.context-submenu--left{left:auto;right:100%}.context-menu__item:not(.context-menu__item--disabled):hover>.context-submenu{display:block}.context-submenu .context-menu__item{justify-content:flex-start}.menu-pop-enter-active,.menu-pop-leave-active{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from,.menu-pop-leave-to{opacity:0;transform:scale(.9)}.dim-panel{position:fixed;z-index:10002;width:220px;background:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 8px #00000026;padding:10px 12px;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;-webkit-user-select:none;user-select:none;transform-origin:top left}.dim-panel__title{font-size:13px;font-weight:600;color:#333;margin-bottom:8px}.dim-panel__body{display:flex;align-items:center;gap:6px}.dim-panel__input{flex:1;height:26px;border:1px solid #c0c0c0;border-radius:3px;outline:none;padding:0 6px;font-size:13px;color:#1a1a1a;background:#fff;box-sizing:border-box}.dim-panel__input:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.dim-panel__input--error{border-color:#d93025;box-shadow:0 0 0 1px #d930254d}.dim-panel__error{margin-top:6px;font-size:12px;color:#d93025;line-height:1.4}.dim-panel__footer{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.dim-panel__btn{height:26px;padding:0 14px;border:1px solid #ccc;border-radius:3px;background:#fff;color:#333;font-size:13px;cursor:pointer}.dim-panel__btn:hover{background:#f0f0f0}.dim-panel__btn--primary{border-color:#0078d7;background:#0078d7;color:#fff}.dim-panel__btn--primary:hover{background:#0069c0}.cf-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;z-index:10003}
@@ -4,19 +4,19 @@
4
4
  * 位置由调用方通过 cellToScreenRect 计算后传入(兼容冻结窗格与合并单元格)。
5
5
  */
6
6
  type __VLS_Props = {
7
- title: string;
8
- message: string;
9
- x: number;
10
- y: number;
11
- width: number;
12
- height: number;
7
+ title?: string;
8
+ message?: string;
9
+ x?: number;
10
+ y?: number;
11
+ width?: number;
12
+ height?: number;
13
13
  };
14
14
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
15
+ title: string;
15
16
  y: number;
16
17
  width: number;
17
- title: string;
18
- message: string;
19
18
  x: number;
19
+ message: string;
20
20
  height: number;
21
21
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, HTMLDivElement>;
22
22
  export default _default;