xiaodao-spreader 0.1.31 → 0.1.33

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.
package/README.ZH.md CHANGED
@@ -33,6 +33,7 @@
33
33
  - **排序与排序提醒**: 工具栏与右键菜单按单元格**展示内容**对所有类型(数值 / 日期 / 文本)排序;排序只移动数据、不搬运样式;含合并单元格或公式的区域自动禁用排序;当选区外存在相邻数据时,弹出类 Excel 的「排序提醒」对话框,可选择「扩展选定区域」或「仅对选定区域排序」
34
34
  - **自动筛选(AutoFilter)**: 类 Excel 的普通区域自动筛选。工具栏「数据 → 筛选」或 `Ctrl+Shift+L` 启用;选择一个数据单元格(或单行多列选区)后启用,即从该表头行向下智能探测连续数据区;各列表头显示筛选下箭头,点击箭头打开筛选面板(值 / 文本 / 数值 / 日期 / 搜索 / 空值 / 多列 AND)。清除某列条件只清该列、移除 AutoFilter 清全部;仅在 Filter Range 内的列拥有箭头;单选已合并单元格且无筛选态时禁用筛选按钮,*见 [自动筛选(AutoFilter)](#自动筛选autofilter)*
35
35
  - **查找与替换**: 工具栏查找按钮或 `Ctrl/Cmd+F`(含 `Ctrl/Cmd+H`)打开;支持「当前工作表 / 整个工作簿 / 当前选区」三种范围,区分大小写、匹配整个单元格;高亮全部匹配并定位当前项、循环查找;单次与全部替换均接入撤销/重做,仅修改单元格原始 `value`(始终保持字符串),不改动格式 / 边框 / 合并
36
+ - **条件格式**: 按工作表存储条件格式规则(`SheetState.conditionalFormats`)。工具栏「条件格式」下拉提供高亮单元格预设(大于 / 小于 / 介于 / 文本包含 / 重复 / 唯一 / 空白 / 非空白)以及「新建规则」对话框(支持单元格值条件和自定义公式条件)。规则渲染为基础单元格样式之上的临时覆盖层,绝不写回底层 `value` 或 `styleId`。规则优先级(数值越小优先级越高)、`stopIfTrue` 语义、单元格值变化时自动失效缓存。插入/删除行列时通过与自动填充相同的 `shiftFormulaRefs` 引擎自动调整规则范围与公式引用(`$B$2` 绝对引用保持固定)。内置「管理规则」对话框可编辑、排序、删除规则;「清除规则」子菜单支持清除全部或按选区清除。渲染时与基础样式正确合成背景色、文字颜色、粗体、斜体、下划线、删除线。*见 [条件格式](#条件格式)*
36
37
  - **自动填充(填充柄)**: 类 Excel 的活动选区右下角填充柄,按住向上/下/左/右拖拽即可填充单元格:单值复制、数字/日期/文本数字自动续序列(如 `1,2 → 3,4,5`)、公式引用按相对/绝对/混合规则平移(如 `=A1*2 → =A2*2`)、源 `styleId` 经样式池复用。拖拽期间实时预览、边缘自动滚动、动态扩展工作表、冻结窗格兼容、单次拖拽仅产生一个撤销步骤,*见 [自动填充](#自动填充)*
37
38
 
38
39
  ### 交互体验
@@ -246,6 +247,7 @@ src/
246
247
  ├── sort-core.ts # 排序纯算法(零 Vue 依赖,可单测)
247
248
  ├── autofill.ts # 自动填充纯引擎(模式推断、填充柄逻辑,零 Vue 依赖)
248
249
  ├── number-format.ts # 数字格式引擎(Excel 风格显示格式化)
250
+ ├── conditional-formatting.ts # 条件格式引擎(条件求值、规则缓存、公式引用平移)
249
251
  ├── theme.ts # 主题 CSS 变量构建
250
252
  └── utils.ts # 纯工具函数(列标签、命中测试、尺寸解析)
251
253
  ```
@@ -371,6 +373,55 @@ src/
371
373
 
372
374
  ---
373
375
 
376
+ ## 条件格式
377
+
378
+ 类 Excel 条件格式,按工作表存储在 `SheetState.conditionalFormats`(`ConditionalFormattingRule[]`)。引擎位于 `spreader/core/conditional-formatting.ts`,纯逻辑实现、零 Vue/Canvas 依赖,单元测试见 `test/conditional-formatting.test.ts`。
379
+
380
+ ### 规则结构
381
+
382
+ 每条规则拥有稳定 `id`、`condition`(条件)、`format`(格式覆盖)、一个或多个 `ranges`(应用范围)、数值型 `priority`(越小优先级越高)、`stopIfTrue`(命中后停止后续规则)与 `enabled`(启用开关)。`format` 仅携带视觉属性(`backgroundColor`、`color`、`fontWeight`、`fontStyle`、`underline`、`strikethrough`),绝不写回 `cell.styleId`。
383
+
384
+ ### 支持的条件类型
385
+
386
+ 工具栏下拉和「新建规则」对话框暴露以下预设规则:
387
+
388
+ | 类型 | Key | 说明 |
389
+ |------|-----|------|
390
+ | 单元格值 | `cellIs` | 阈值比较:大于、小于、介于、等于 |
391
+ | 文本 | `textContains` / `textNotContains` / `beginsWith` / `endsWith` | 字符串匹配,可勾选区分大小写 |
392
+ | 空白 | `blank` / `notBlank` | 单元格值为空或仅空白字符 |
393
+ | 重复值 | `duplicate` | 在规则范围内值出现超过一次 |
394
+ | 唯一值 | `unique` | 在规则范围内值恰好出现一次 |
395
+ | 公式 | `formula` | 相对于规则锚点的自定义公式(如 `=A1>100`),支持绝对引用 `$B$2` 在范围扩展时保持固定 |
396
+
397
+ 色阶、数据条、图标集、前/后 N 项、高于/低于平均值已在类型系统中预留(`colorScale`、`dataBar`、`iconSet`、`topBottom`、`aboveBelowAverage`),预设 UI 与渲染逻辑规划中。
398
+
399
+ ### 优先级与 Stop-If-True
400
+
401
+ 规则按优先级升序(数字小的先)依次求值。第一条匹配的规则贡献其设置的格式属性;后续规则仅补充尚未被设置的属性。若某规则 `stopIfTrue: true`,命中后立即停止该单元格的扫描。
402
+
403
+ ### 缓存与失效
404
+
405
+ 重复值 / 唯一值 / TopBottom / AboveBelow 规则需要对规则范围做值频率统计。`CfValueCache` 以 range+ruleType 为 key,首次访问时计算并缓存。`composables/core-state.ts` 中任何 `setCellValue` 都会在下次渲染前先失效受影响规则的缓存。
406
+
407
+ ### 插入 / 删除传播
408
+
409
+ CF 引擎的 `shiftFormulaRefsSafe` 复用公式引擎的 `shiftFormulaRefs` 函数——因此 `$B$2`(绝对引用)固定不动,`A1`(相对引用)正确平移。规则范围随之扩展/收缩;完全被移除的规则自动删除。
410
+
411
+ ### 渲染时样式合成
412
+
413
+ `resolveConditionalFormatting` 在 `drawCells` 内按视口单元格逐个调用,遍历所有范围包含该单元格的启用规则,按优先级合并后生成临时 `cfStyle`。`applyCfFormat` 将其合成到基础解析样式上,正确处理背景色、文字颜色、粗体、斜体、下划线、删除线——含合并单元格(CF 对锚点求值后传播到整个合并区域)。
414
+
415
+ ### UI 组件
416
+
417
+ | 文件 | 职责 |
418
+ |------|------|
419
+ | `conditional-format-menu.vue` | 工具栏下拉:高亮单元格预设、空白、重复、唯一、新建规则、管理规则、清除规则子菜单。子菜单采用 Teleport + hover-intent(150ms 延迟)实现跨间隙悬停不丢失 |
420
+ | `conditional-format-rule-editor.vue` | 「新建规则」对话框:条件类型下拉(复用 `SpDropdown`)、阈值输入、格式面板(背景色选择器、文字颜色选择器、粗体/斜体/下划线/删除线——全部复用工具栏控件样式),应用范围自动填入当前选区 |
421
+ | `conditional-format-manager.vue` | 「管理规则」对话框:列出当前工作表全部规则,支持拖拽排序(修改 priority)、编辑单条规则、删除单条规则、一键清除全部或清除选区规则 |
422
+
423
+ ---
424
+
374
425
  ## 自动填充
375
426
 
376
427
  一套类 Excel 的填充柄机制(`spreader/core/autofill.ts` 纯引擎 + `composables/interactions.ts` 画布/交互层)。拖动活动选区右下角的小方块即可填充单元格,无 DOM 句柄,全部在 Canvas 上绘制。
@@ -587,7 +638,7 @@ x-spreader 以触屏为第一交互:每个鼠标操作都有对称的触屏路
587
638
  - [x] 更多公式:`COUNT`、`IF`、`VLOOKUP`、`CONCATENATE`
588
639
  - [x] 单元格背景颜色选择器
589
640
  - [x] 数字格式(货币、百分比、日期、小数位数), *见 [数字格式](#数字格式)*
590
- - [ ] 条件格式规则
641
+ - [x] 条件格式:高亮单元格预设 / 重复值 / 唯一值 / 空白 / 非空白、公式条件、行列增删时公式引用自动平移、管理与清除规则对话框,*见 [条件格式](#条件格式)*
591
642
  - [x] 自动填充拖拽手柄:*见 [自动填充](#自动填充)*
592
643
  - [x] 查找与替换:*见 [查找与替换](#查找与替换)*
593
644
 
package/README.md CHANGED
@@ -32,6 +32,7 @@ A high-performance, canvas-based spreadsheet component for Vue 3: bringing an Ex
32
32
  - **Sorting & Sort Warning**: Sort any column by its **displayed content** (numbers / dates / text); sorting moves data only, never cell styles; ranges containing merged cells or formulas are auto-disabled; when adjacent data sits outside the selection, an Excel-style **Sort Warning** dialog lets you choose "Expand the selection" or "Sort the current selection only"
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
+ - **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)*
35
36
  - **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)*
36
37
 
37
38
  ### Interaction
@@ -243,6 +244,7 @@ src/
243
244
  ├── sort-core.ts # Sort pure algorithms (zero Vue deps, unit-testable)
244
245
  ├── autofill.ts # Auto-fill pure engine (pattern inference, fill handle logic, zero Vue deps)
245
246
  ├── number-format.ts # Number format engine (Excel-style display formatting)
247
+ ├── conditional-formatting.ts # Conditional formatting engine (condition eval, rule cache, formula ref shift)
246
248
  ├── theme.ts # Theme CSS variable construction
247
249
  └── utils.ts # Pure utilities (col label, hit test, resolve size)
248
250
  ```
@@ -368,6 +370,55 @@ An Excel-style number formatting engine (`spreader/core/number-format.ts`) that
368
370
 
369
371
  ---
370
372
 
373
+ ## Conditional Formatting
374
+
375
+ Excel-style conditional formatting stored per-sheet in `SheetState.conditionalFormats` (array of `ConditionalFormattingRule`). The engine lives in `spreader/core/conditional-formatting.ts` — pure-logic, zero Vue/Canvas deps, with unit tests in `test/conditional-formatting.test.ts`.
376
+
377
+ ### Rule Structure
378
+
379
+ Each rule has a stable `id`, a `condition`, a `format` override, one or more `ranges`, a numeric `priority` (smaller = higher precedence), `stopIfTrue`, and `enabled` flag. The `format` carries only visual properties (`backgroundColor`, `color`, `fontWeight`, `fontStyle`, `underline`, `strikethrough`) — it never writes back to `cell.styleId`.
380
+
381
+ ### Supported Condition Types
382
+
383
+ Preset rules exposed via the toolbar dropdown and the "New Rule" dialog:
384
+
385
+ | Type | Key | Description |
386
+ |------|-----|-------------|
387
+ | Cell value | `cellIs` | compare against threshold(s): greater than, less than, between, equal to |
388
+ | Text | `textContains` / `textNotContains` / `beginsWith` / `endsWith` | string match with optional case sensitivity |
389
+ | Blank | `blank` / `notBlank` | cell value is empty or whitespace-only |
390
+ | Duplicate | `duplicate` | value appears more than once within rule scope |
391
+ | Unique | `unique` | value appears exactly once within rule scope |
392
+ | Formula | `formula` | custom formula evaluated relative to the rule anchor (e.g. `=A1>100`); supports absolute references (`$B$2`) which stay fixed during range expansion |
393
+
394
+ Color scale, data bar, icon set, top/bottom N, and above/below average are type stubs (`colorScale`, `dataBar`, `iconSet`, `topBottom`, `aboveBelowAverage`) in the type system for forward compatibility; preset UI and rendering for these are planned.
395
+
396
+ ### Priority & Stop-If-True
397
+
398
+ Rules fire in ascending priority order (lowest number first). The first rule whose condition matches the cell contributes its format properties; subsequent rules add only properties not yet set. If a matched rule has `stopIfTrue: true`, the scan halts immediately for that cell.
399
+
400
+ ### Cache & Invalidation
401
+
402
+ Duplicate / unique / top-bottom / above-below rules need a value-frequency statistic over the rule range. `CfValueCache` keyed by range+rule type computes these on first access and caches them. Any `setCellValue` in `composables/core-state.ts` invalidates the affected rule caches before the next render pass.
403
+
404
+ ### Insert / Delete Propagation
405
+
406
+ `shiftFormulaRefsSafe` in the CF engine reuses the same `shiftFormulaRefs` function from the formula engine — so `$B$2` (absolute) stays locked while `A1` (relative) shifts. Rule ranges also expand/shrink accordingly; ranges completely removed from the sheet are auto-deleted.
407
+
408
+ ### Render-time Style Synthesis
409
+
410
+ `resolveConditionalFormatting` is called per viewport cell inside `drawCells`. It walks all enabled rules whose ranges contain the cell, applies priority-merging, and produces a temporary `cfStyle`. `applyCfFormat` merges this onto the base resolved style, composing `backgroundColor`, `color`, `fontWeight`, `fontStyle`, `underline`, and `strikethrough` — including correct handling of merged cells (CF applies to the anchor cell and propagates to the entire merge region).
411
+
412
+ ### UI Components
413
+
414
+ | File | Role |
415
+ |------|------|
416
+ | `conditional-format-menu.vue` | Toolbar dropdown: preset rules (highlight cells, blank, duplicate, unique), New Rule, Manage Rules, Clear Rules submenu. Teleport-based submenus with hover-intent (150ms debounce) for cross-gap hover transitions |
417
+ | `conditional-format-rule-editor.vue` | "New Rule" dialog: condition type selector (reuses `SpDropdown`), threshold inputs, format panel (background color picker, text color picker, bold, italic, underline, strikethrough — all reuse toolbar picker/button styles), application range auto-filled from current selection |
418
+ | `conditional-format-manager.vue` | "Manage Rules" dialog: list all rules for the active sheet, drag-to-reorder priority toggle, edit/delete per rule, clear all / clear selection |
419
+
420
+ ---
421
+
371
422
  ## Auto Fill
372
423
 
373
424
  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.
@@ -584,7 +635,7 @@ x-spreader is touch-first: every mouse interaction has a symmetric touch path, v
584
635
  - [x] More formulas: `COUNT`, `IF`, `VLOOKUP`, `CONCATENATE`
585
636
  - [x] Cell background color picker
586
637
  - [x] Number format (currency, percentage, date, number of decimals): *see [Number Format](#number-format)*
587
- - [ ] Conditional formatting rules
638
+ - [x] Conditional Formatting: preset rules (highlight cells / duplicate / unique / blank / not blank), formula-based conditions, formula ref adjustment on insert/delete, manage & clear rules dialogs. *see [Conditional Formatting](#conditional-formatting)*
588
639
  - [x] Auto-fill drag handle: *see [Auto Fill](#auto-fill)*
589
640
  - [x] Find & Replace: *see [Find & Replace](#find--replace)*
590
641
 
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .sp-dropdown[data-v-804e629f]{position:relative;display:inline-flex;min-width:0}.sp-dropdown__trigger[data-v-804e629f]{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-804e629f]:hover{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.sp-dropdown__trigger--open[data-v-804e629f]{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6);border-color:var(--sp-toolbar-border, #d8d8d8)}.sp-dropdown__value[data-v-804e629f]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.sp-dropdown__caret[data-v-804e629f]{width:10px;height:10px;min-width:10px;opacity:.7}.sp-dropdown__menu[data-v-804e629f]{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-804e629f]{transform-origin:bottom center}.menu-pop-enter-active[data-v-804e629f],.menu-pop-leave-active[data-v-804e629f]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-804e629f],.menu-pop-leave-to[data-v-804e629f]{opacity:0;transform:scaleY(.85)}.sp-dropdown__nav[data-v-804e629f]{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-804e629f]:hover:not(:disabled){background:#eef3f9}.sp-dropdown__nav[data-v-804e629f]:disabled{color:#ccc;cursor:default}.sp-dropdown__nav svg[data-v-804e629f]{width:10px;height:10px}.sp-dropdown__list[data-v-804e629f]{display:flex;flex-direction:column;overflow:hidden;touch-action:none}.sp-dropdown__search[data-v-804e629f]{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-804e629f]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.sp-dropdown__empty[data-v-804e629f]{padding:6px 8px;font-size:12px;color:#999;text-align:center}.sp-dropdown__icon[data-v-804e629f]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sp-dropdown__icon[data-v-804e629f] svg{width:18px;height:18px;display:block}.sp-dropdown__item-icon[data-v-804e629f]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.sp-dropdown__item-icon[data-v-804e629f] svg{width:16px;height:16px;display:block}.sp-dropdown__item-label[data-v-804e629f]{white-space:nowrap}.sp-dropdown__item[data-v-804e629f]{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-804e629f]:hover{background:#eef3f9}.sp-dropdown__item--active[data-v-804e629f]{background:#e5f1fb;color:#0078d7}.color-picker[data-v-70f3dfdc]{position:relative;display:inline-flex;height:26px}.color-picker__menu[data-v-70f3dfdc]{position:fixed;z-index:9999;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-70f3dfdc],.menu-pop-leave-active[data-v-70f3dfdc]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-70f3dfdc],.menu-pop-leave-to[data-v-70f3dfdc]{opacity:0;transform:scale(.9)}.color-picker__row[data-v-70f3dfdc]{display:flex;gap:4px;margin-bottom:4px}.color-picker__row[data-v-70f3dfdc]:last-child{margin-bottom:0}.color-picker__swatch[data-v-70f3dfdc]{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-70f3dfdc]:hover{transform:scale(1.18);box-shadow:0 0 0 1px #0003;z-index:1}.color-picker__swatch--selected[data-v-70f3dfdc]{box-shadow:0 0 0 2px #0078d7}.border-picker[data-v-551c0ffe]{position:relative;display:inline-flex;height:26px}.border-picker__menu[data-v-551c0ffe]{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-551c0ffe]{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-551c0ffe]:hover{background:#eef3f9}.border-picker__icon[data-v-551c0ffe]{width:18px;height:18px;flex-shrink:0}.border-picker__label[data-v-551c0ffe]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-551c0ffe],.menu-pop-leave-active[data-v-551c0ffe]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-551c0ffe],.menu-pop-leave-to[data-v-551c0ffe]{opacity:0;transform:scale(.9)}.sort-picker[data-v-45929b74]{position:relative;display:inline-flex;height:26px}.sort-picker__menu[data-v-45929b74]{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-45929b74]{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-45929b74]:hover{background:#eef3f9}.sort-picker__icon[data-v-45929b74]{width:18px;height:18px;flex-shrink:0}.sort-picker__label[data-v-45929b74]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-45929b74],.menu-pop-leave-active[data-v-45929b74]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-45929b74],.menu-pop-leave-to[data-v-45929b74]{opacity:0;transform:scale(.9)}.merge-picker[data-v-edd36208]{position:relative;display:inline-flex;height:26px}.merge-picker__menu[data-v-edd36208]{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-edd36208]{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-edd36208]:hover{background:#eef3f9}.merge-picker__icon[data-v-edd36208]{width:18px;height:18px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.merge-picker__icon[data-v-edd36208] svg{width:18px;height:18px}.merge-picker__label[data-v-edd36208]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-edd36208],.menu-pop-leave-active[data-v-edd36208]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-edd36208],.menu-pop-leave-to[data-v-edd36208]{opacity:0;transform:scale(.9)}.calc-picker[data-v-01a18e00]{position:relative;display:inline-flex;height:26px}.calc-picker__menu[data-v-01a18e00]{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-01a18e00]{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-01a18e00]:hover:not(.calc-picker__item--disabled){background:#eef3f9}.calc-picker__item--disabled[data-v-01a18e00]{color:var(--sp-toolbar-btn-disabled-color, #bbb);cursor:default}.calc-picker__label[data-v-01a18e00]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-01a18e00],.menu-pop-leave-active[data-v-01a18e00]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-01a18e00],.menu-pop-leave-to[data-v-01a18e00]{opacity:0;transform:scale(.9)}.toolbar[data-v-0d0b0e86]{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}.tb-item[data-v-0d0b0e86]{display:flex;align-items:center;flex:0 0 auto}.toolbar-sep[data-v-0d0b0e86]{width:1px;height:18px;margin:0 4px;background:var(--sp-toolbar-border)}.toolbar-font[data-v-0d0b0e86],.toolbar-number-format[data-v-0d0b0e86],.toolbar-align[data-v-0d0b0e86],.toolbar-freeze[data-v-0d0b0e86]{flex:0 0 auto}.toolbar-font-size[data-v-0d0b0e86],.toolbar-number-format-group[data-v-0d0b0e86]{display:inline-flex;align-items:center;gap:0;height:26px;position:relative}.toolbar-font-size__input[data-v-0d0b0e86]{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-0d0b0e86]::-webkit-outer-spin-button,.toolbar-font-size__input[data-v-0d0b0e86]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.toolbar-font-size__input[data-v-0d0b0e86]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-font-size__input[data-v-0d0b0e86]:focus{border-color:var(--sp-toolbar-border);background:#fff}.toolbar-font-size__btn[data-v-0d0b0e86]{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-0d0b0e86]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-font-size__btn svg[data-v-0d0b0e86]{width:10px;height:10px}.toolbar-font-size__dropdown[data-v-0d0b0e86]{position:absolute;width:56px;height:26px;pointer-events:none}.toolbar-btn[data-v-0d0b0e86]{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-0d0b0e86]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.toolbar-btn[data-v-0d0b0e86]:active:not(:disabled){opacity:.7}.toolbar-btn--active[data-v-0d0b0e86]{background:var(--sp-toolbar-btn-hover-bg);color:var(--sp-toolbar-btn-active-color)}.toolbar-btn--step[data-v-0d0b0e86]{width:26px;height:26px}.toolbar-btn--step svg[data-v-0d0b0e86]{width:16px;height:16px}.toolbar-btn[data-v-0d0b0e86]:disabled{color:var(--sp-toolbar-btn-disabled-color);cursor:default}.toolbar-btn__icon[data-v-0d0b0e86]{width:18px;height:18px}.toolbar-btn svg[data-v-0d0b0e86]:not(.toolbar-btn__icon){width:18px;height:18px}.toolbar-split[data-v-0d0b0e86]{display:inline-flex;align-items:center;position:relative;height:26px}.toolbar-split__main[data-v-0d0b0e86]{border:1px solid transparent;border-right:none;border-radius:3px 0 0 3px}.toolbar-split__arrow[data-v-0d0b0e86]{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-0d0b0e86]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.toolbar-split__arrow svg[data-v-0d0b0e86]{width:10px!important;height:10px!important}.toolbar-more[data-v-0d0b0e86]{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-0d0b0e86]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-more--active[data-v-0d0b0e86]{background:var(--sp-toolbar-btn-hover-bg);color:var(--sp-toolbar-btn-active-color)}.toolbar-more svg[data-v-0d0b0e86]{width:18px;height:18px}.overflow-menu[data-v-0d0b0e86]{min-width:180px;max-width:260px;max-height:calc(100vh - 40px);overflow-y:auto;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;display:flex;flex-direction:column;gap:2px;z-index:1000;transform-origin:top right}.overflow-menu.no-anim[data-v-0d0b0e86]{transition:none!important}.overflow-menu .tb-item[data-v-0d0b0e86]{width:100%}.overflow-menu .toolbar-sep[data-v-0d0b0e86]{width:100%;height:1px;margin:2px 0}.overflow-menu .toolbar-split[data-v-0d0b0e86]{width:100%}.overflow-menu .toolbar-split__main[data-v-0d0b0e86]{flex:1 1 auto;justify-content:flex-start;padding-left:6px}.overflow-menu .toolbar-font-size[data-v-0d0b0e86],.overflow-menu .toolbar-number-format-group[data-v-0d0b0e86]{width:100%;justify-content:flex-start}.overflow-menu .toolbar-font[data-v-0d0b0e86]{width:100%}.overflow-menu .toolbar-number-format[data-v-0d0b0e86]{flex:1 1 auto;width:auto!important;min-width:0}.overflow-menu .toolbar-align[data-v-0d0b0e86],.overflow-menu .toolbar-freeze[data-v-0d0b0e86]{width:100%}.overflow-menu .toolbar-btn[data-v-0d0b0e86]: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-number-format__btn[data-v-0d0b0e86]{flex:0 0 auto;width:30px}.overflow-menu .toolbar-color[data-v-0d0b0e86]{width:100%}.overflow-menu .toolbar-wrap[data-v-0d0b0e86]{width:100%;justify-content:flex-start}.menu-pop-enter-active[data-v-0d0b0e86],.menu-pop-leave-active[data-v-0d0b0e86]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-0d0b0e86],.menu-pop-leave-to[data-v-0d0b0e86]{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-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 .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-3120909b]{display:flex;align-items:center;gap:6px;padding:4px 8px;background:var(--sp-toolbar-bg);border-bottom:1px solid var(--sp-toolbar-border);-webkit-user-select:none;user-select:none;flex-wrap:nowrap;overflow-x:auto}.find-bar__input[data-v-3120909b]{height:24px;width:160px;flex:0 0 auto;border:1px solid var(--sp-toolbar-border);border-radius:3px;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-3120909b]:focus{border-color:var(--sp-toolbar-btn-active-color)}.find-bar__dropdown[data-v-3120909b]{flex:0 0 auto}.find-bar__dropdown[data-v-3120909b] .sp-dropdown__trigger{height:24px;border:1px solid var(--sp-toolbar-border);background:#fff;color:var(--sp-formula-bar-input-color, #1a1a1a);font-size:12px;padding:0 4px}.find-bar__dropdown[data-v-3120909b] .sp-dropdown__trigger:hover{background:#f5f5f5}.find-bar__dropdown[data-v-3120909b] .sp-dropdown__trigger--open{border-color:var(--sp-toolbar-btn-active-color)}.find-bar__chk[data-v-3120909b]{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-3120909b]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.find-bar__chk-box[data-v-3120909b]{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:3px;background:#fff;transition:background .12s ease,border-color .12s ease}.find-bar__chk-tick[data-v-3120909b]{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-3120909b]{background:#0078d7;border-color:#0078d7}.find-bar__chk-input:checked+.find-bar__chk-box .find-bar__chk-tick[data-v-3120909b]{opacity:1;transform:scale(1)}.find-bar__chk-input:focus-visible+.find-bar__chk-box[data-v-3120909b]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.find-bar__count[data-v-3120909b]{flex:0 0 auto;font-size:12px;color:var(--sp-toolbar-btn-color);min-width:44px;text-align:center;white-space:nowrap}.find-bar__btn[data-v-3120909b]{height:24px;flex:0 0 auto;border:1px solid var(--sp-toolbar-border);border-radius:3px;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-3120909b]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.find-bar__btn[data-v-3120909b]:disabled{color:var(--sp-toolbar-btn-disabled-color);cursor:default}.find-bar__btn--icon[data-v-3120909b]{width:26px;padding:0}.find-bar__btn--icon svg[data-v-3120909b]{width:14px;height:14px}.find-bar__btn--close[data-v-3120909b]{width:26px;padding:0;margin-left:auto;border:none}.find-bar__btn--close svg[data-v-3120909b]{width:14px;height:14px}.nf-dialog__mask[data-v-39792a0b]{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-39792a0b]{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-39792a0b]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.nf-dialog__title[data-v-39792a0b]{font-size:13px;font-weight:600}.nf-dialog__close[data-v-39792a0b]{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-39792a0b]:hover{background:#f0f0f0;color:#444}.nf-dialog__close svg[data-v-39792a0b]{width:14px;height:14px}.nf-dialog__body[data-v-39792a0b]{padding:12px 14px;display:flex;flex-direction:column;gap:10px}.nf-field[data-v-39792a0b]{display:flex;align-items:center;gap:8px}.nf-field--inline[data-v-39792a0b]{min-height:26px}.nf-field__label[data-v-39792a0b]{width:88px;min-width:88px;font-size:12px;color:#555}.nf-field__input[data-v-39792a0b]{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-39792a0b]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-field__dropdown[data-v-39792a0b]{flex:1}.nf-field__dropdown[data-v-39792a0b] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.nf-field__dropdown[data-v-39792a0b] .sp-dropdown__trigger:hover{background:#f5f5f5}.nf-field__dropdown[data-v-39792a0b] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-field__textarea[data-v-39792a0b]{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-39792a0b]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-checkbox[data-v-39792a0b]{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#333;cursor:pointer}.nf-checkbox input[data-v-39792a0b]{margin:0;cursor:pointer}.nf-dialog__footer[data-v-39792a0b]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.nf-preview[data-v-39792a0b]{display:flex;flex-direction:column;gap:2px;min-width:0}.nf-preview__label[data-v-39792a0b]{font-size:11px;color:#888}.nf-preview__value[data-v-39792a0b]{font-size:13px;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.nf-dialog__actions[data-v-39792a0b]{display:flex;gap:8px}.nf-btn[data-v-39792a0b]{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-39792a0b]:hover{background:#f0f0f0}.nf-btn--primary[data-v-39792a0b]{border-color:#0078d7;background:#0078d7;color:#fff}.nf-btn--primary[data-v-39792a0b]:hover{background:#0069c0}.nf-dialog-enter-active[data-v-39792a0b],.nf-dialog-leave-active[data-v-39792a0b]{transition:opacity .14s ease-out}.nf-dialog-enter-from[data-v-39792a0b],.nf-dialog-leave-to[data-v-39792a0b]{opacity:0}.nf-dialog-enter-active .nf-dialog[data-v-39792a0b],.nf-dialog-leave-active .nf-dialog[data-v-39792a0b]{transition:transform .14s ease-out}.nf-dialog-enter-from .nf-dialog[data-v-39792a0b],.nf-dialog-leave-to .nf-dialog[data-v-39792a0b]{transform:scale(.96)}.sort-confirm__mask[data-v-d26d5917]{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-d26d5917]{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-d26d5917]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.sort-confirm__title[data-v-d26d5917]{font-size:13px;font-weight:600}.sort-confirm__close[data-v-d26d5917]{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-d26d5917]:hover{background:#f0f0f0;color:#444}.sort-confirm__close svg[data-v-d26d5917]{width:14px;height:14px}.sort-confirm__body[data-v-d26d5917]{padding:14px}.sort-confirm__message[data-v-d26d5917]{margin:0 0 12px;font-size:12px;line-height:1.5;color:#333}.sort-confirm__options[data-v-d26d5917]{display:flex;flex-direction:column;gap:8px}.sort-confirm__option[data-v-d26d5917]{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#333;cursor:pointer}.sort-confirm__option input[data-v-d26d5917]{margin:0;cursor:pointer}.sort-confirm__footer[data-v-d26d5917]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.sort-confirm__btn[data-v-d26d5917]{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-d26d5917]:hover{background:#f0f0f0}.sort-confirm__btn--primary[data-v-d26d5917]{border-color:#0078d7;background:#0078d7;color:#fff}.sort-confirm__btn--primary[data-v-d26d5917]:hover{background:#0069c0}.sort-confirm-enter-active[data-v-d26d5917],.sort-confirm-leave-active[data-v-d26d5917]{transition:opacity .14s ease-out}.sort-confirm-enter-from[data-v-d26d5917],.sort-confirm-leave-to[data-v-d26d5917]{opacity:0}.sort-confirm-enter-active .sort-confirm[data-v-d26d5917],.sort-confirm-leave-active .sort-confirm[data-v-d26d5917]{transition:transform .14s ease-out}.sort-confirm-enter-from .sort-confirm[data-v-d26d5917],.sort-confirm-leave-to .sort-confirm[data-v-d26d5917]{transform:scale(.96)}.ifn-dialog__mask[data-v-f4e459b6]{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-f4e459b6]{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-f4e459b6]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.ifn-dialog__title[data-v-f4e459b6]{font-size:13px;font-weight:600}.ifn-dialog__close[data-v-f4e459b6]{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-f4e459b6]:hover{background:#f0f0f0;color:#444}.ifn-dialog__close svg[data-v-f4e459b6]{width:14px;height:14px}.ifn-dialog__body[data-v-f4e459b6]{padding:14px;display:flex;flex-direction:column;gap:12px}.ifn-dialog__field[data-v-f4e459b6]{display:flex;flex-direction:column;gap:6px}.ifn-dialog__label[data-v-f4e459b6]{font-size:12px;color:#333}.ifn-dialog__dropdown[data-v-f4e459b6]{width:100%}.ifn-dialog__dropdown[data-v-f4e459b6] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.ifn-dialog__dropdown[data-v-f4e459b6] .sp-dropdown__trigger:hover{background:#f5f5f5}.ifn-dialog__dropdown[data-v-f4e459b6] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.ifn-dialog__desc[data-v-f4e459b6]{font-size:12px;line-height:1.5;color:#666;-webkit-user-select:text;user-select:text}.ifn-dialog__textarea[data-v-f4e459b6]{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-f4e459b6]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.ifn-dialog__footer[data-v-f4e459b6]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.ifn-dialog__btn[data-v-f4e459b6]{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-f4e459b6]:hover{background:#f0f0f0}.ifn-dialog__btn--primary[data-v-f4e459b6]{border-color:#0078d7;background:#0078d7;color:#fff}.ifn-dialog__btn--primary[data-v-f4e459b6]:hover{background:#0069c0}.ifn-dialog__btn--primary[data-v-f4e459b6]:disabled,.ifn-dialog__btn--primary[data-v-f4e459b6]:disabled:hover{border-color:#ccc;background:#f0f0f0;color:#a8a8a8;cursor:not-allowed}.ifn-dialog-enter-active[data-v-f4e459b6],.ifn-dialog-leave-active[data-v-f4e459b6]{transition:opacity .14s ease-out}.ifn-dialog-enter-from[data-v-f4e459b6],.ifn-dialog-leave-to[data-v-f4e459b6]{opacity:0}.ifn-dialog-enter-active .ifn-dialog[data-v-f4e459b6],.ifn-dialog-leave-active .ifn-dialog[data-v-f4e459b6]{transition:transform .14s ease-out}.ifn-dialog-enter-from .ifn-dialog[data-v-f4e459b6],.ifn-dialog-leave-to .ifn-dialog[data-v-f4e459b6]{transform:scale(.96)}.filter-popup[data-v-ec90eb74]{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-ec90eb74]{display:flex;align-items:center;gap:6px;padding:8px 10px 6px;border-bottom:1px solid #eee}.filter-popup__head-label[data-v-ec90eb74]{font-weight:600;font-size:13px}.filter-popup__head-badge[data-v-ec90eb74]{font-size:11px;color:#0078d7;background:rgba(0,120,215,.1);border-radius:8px;padding:1px 6px}.filter-popup__search[data-v-ec90eb74]{padding:8px 10px 4px}.filter-popup__search-input[data-v-ec90eb74]{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-ec90eb74]:focus{border-color:#0078d7}.filter-popup__tools[data-v-ec90eb74]{display:flex;align-items:center;gap:4px;padding:4px 10px 6px}.filter-popup__tool[data-v-ec90eb74]{border:none;background:transparent;color:#0078d7;font-size:12px;cursor:pointer;padding:2px 4px}.filter-popup__tool[data-v-ec90eb74]:hover{text-decoration:underline}.filter-popup__count[data-v-ec90eb74]{margin-left:auto;font-size:11px;color:#999}.filter-popup__list[data-v-ec90eb74]{height:252px;overflow-y:auto;border-top:1px solid #f0f0f0;border-bottom:1px solid #f0f0f0}.filter-popup__item[data-v-ec90eb74]{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-ec90eb74]:hover{background:#eef3f9}.filter-popup__item input[data-v-ec90eb74]{margin:0;flex-shrink:0}.filter-popup__item-label[data-v-ec90eb74]{overflow:hidden;text-overflow:ellipsis;font-size:12px}.filter-popup__item-note[data-v-ec90eb74]{font-size:11px;color:#999;flex-shrink:0}.filter-popup__empty[data-v-ec90eb74]{padding:16px 10px;text-align:center;color:#999;font-size:12px}.filter-popup__modes[data-v-ec90eb74]{display:flex;gap:2px;padding:6px 10px}.filter-popup__mode[data-v-ec90eb74]{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-ec90eb74]:hover{background:#eef3f9;border-color:#c8d8f0}.filter-popup__cond[data-v-ec90eb74]{padding:8px 10px}.filter-popup__cond-back[data-v-ec90eb74]{border:none;background:transparent;color:#0078d7;font-size:12px;cursor:pointer;padding:0;margin-bottom:8px}.filter-popup__cond-row[data-v-ec90eb74]{display:flex;align-items:center;gap:6px;margin-bottom:6px}.filter-popup__cond-select[data-v-ec90eb74]{width:100%;height:26px;border:1px solid #ccc;border-radius:3px;font-size:12px;background:#fff;outline:none}.filter-popup__cond-input[data-v-ec90eb74]{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-ec90eb74]:focus{border-color:#0078d7}.filter-popup__cond-and[data-v-ec90eb74]{font-size:12px;color:#666}.filter-popup__footer[data-v-ec90eb74]{display:flex;align-items:center;gap:6px;padding:8px 10px;border-top:1px solid #eee}.filter-popup__btn[data-v-ec90eb74]{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-ec90eb74]:hover{background:#eef3f9}.filter-popup__btn--primary[data-v-ec90eb74]{background:#0078d7;border-color:#0078d7;color:#fff}.filter-popup__btn--primary[data-v-ec90eb74]:hover{background:#006cbe}.filter-popup__btn--clear[data-v-ec90eb74]{color:#c62828;border-color:#e0c0c0}.filter-popup__btn--clear[data-v-ec90eb74]:hover{background:#fdf0f0}.filter-popup__footer-spacer[data-v-ec90eb74]{flex:1}.spreadsheet-outer[data-v-17b333fa]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%;min-height:400px;width:100%}.formula-bar[data-v-17b333fa]{display:flex;align-items:flex-start;min-height:36px;padding:0;gap:0}.formula-bar--expanded[data-v-17b333fa]{min-height:72px}.formula-bar__cell-label[data-v-17b333fa]{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-17b333fa]{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-17b333fa]{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-17b333fa]{border-left:1px solid var(--sp-formula-bar-input-border)}.formula-bar__btn[data-v-17b333fa]:hover{background:var(--sp-scroll-btn-hover-bg, #f0f0f0)}.formula-bar__btn--cancel[data-v-17b333fa]:hover{color:#e53935;background:#fdecea}.formula-bar__btn--accept[data-v-17b333fa]:hover{color:#2e7d32;background:#e8f5e9}.formula-bar__fx-label[data-v-17b333fa]{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-17b333fa]:hover{background:var(--sp-scroll-btn-hover-bg, #f0f0f0)}.formula-bar__input[data-v-17b333fa]{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-17b333fa]{height:68px;overflow:auto}.formula-bar__input[data-v-17b333fa]: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-17b333fa]{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-17b333fa]:hover{background:var(--sp-scroll-btn-hover-bg, #e8e8e8)}.spreadsheet-wrapper[data-v-17b333fa]{flex:1;position:relative;overflow:hidden;background:var(--sp-wrapper-bg)}.grid-canvas[data-v-17b333fa]{position:absolute;top:0;left:0;display:block;outline:none;cursor:cell}.grid-canvas--freeze[data-v-17b333fa]{pointer-events:none;z-index:1}.grid-canvas[data-v-17b333fa]:not(.grid-canvas--freeze){z-index:0}.grid-canvas[data-v-17b333fa]:focus{outline:none}.v-scrollbar[data-v-17b333fa]{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-17b333fa]{position:absolute;left:0;bottom:0;height:11px;width:calc(100% - 11px);display:flex;background:var(--sp-wrapper-bg)}.sb-corner[data-v-17b333fa]{position:absolute;right:0;bottom:0;width:11px;height:11px;background:var(--sp-wrapper-bg)}.sb-btn[data-v-17b333fa]{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-17b333fa]:hover{background:var(--sp-scroll-btn-hover-bg, #d0d0d0)}.sb-btn[data-v-17b333fa]:active{background:var(--sp-scroll-btn-active-bg, #c0c0c0)}.sb-arrow[data-v-17b333fa]{display:block;width:0;height:0}.sb-arrow--up[data-v-17b333fa]{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-17b333fa]{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-17b333fa]{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-17b333fa]{border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:4px solid var(--sp-scroll-btn-color, #666)}.sb-track[data-v-17b333fa]{flex:1;position:relative;background:var(--sp-scroll-track-bg, rgba(0,0,0,.06))}.sb-track--v[data-v-17b333fa]{width:11px}.sb-track--h[data-v-17b333fa]{height:11px}.sb-thumb[data-v-17b333fa]{position:absolute;border-radius:3px;background:var(--sp-scroll-thumb);cursor:default}.sb-thumb[data-v-17b333fa]:hover{background:var(--sp-scroll-thumb-hover)}.sb-thumb--v[data-v-17b333fa]{left:1px;right:1px;min-height:16px}.sb-thumb--h[data-v-17b333fa]{top:1px;bottom:1px;min-width:16px}.cell-editor[data-v-17b333fa]{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}
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-09b67665]{position:relative;display:inline-flex;height:26px}.color-picker__menu[data-v-09b67665]{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-09b67665],.menu-pop-leave-active[data-v-09b67665]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-09b67665],.menu-pop-leave-to[data-v-09b67665]{opacity:0;transform:scale(.9)}.color-picker__row[data-v-09b67665]{display:flex;gap:4px;margin-bottom:4px}.color-picker__row[data-v-09b67665]:last-child{margin-bottom:0}.color-picker__swatch[data-v-09b67665]{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-09b67665]:hover{transform:scale(1.18);box-shadow:0 0 0 1px #0003;z-index:1}.color-picker__swatch--selected[data-v-09b67665]{box-shadow:0 0 0 2px #0078d7}.border-picker[data-v-e8c6528a]{position:relative;display:inline-flex;height:26px}.border-picker__menu[data-v-e8c6528a]{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-e8c6528a]{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-e8c6528a]:hover{background:#eef3f9}.border-picker__icon[data-v-e8c6528a]{width:18px;height:18px;flex-shrink:0}.border-picker__label[data-v-e8c6528a]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-e8c6528a],.menu-pop-leave-active[data-v-e8c6528a]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-e8c6528a],.menu-pop-leave-to[data-v-e8c6528a]{opacity:0;transform:scale(.9)}.sort-picker[data-v-42aed824]{position:relative;display:inline-flex;height:26px}.sort-picker__menu[data-v-42aed824]{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-42aed824]{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-42aed824]:hover{background:#eef3f9}.sort-picker__icon[data-v-42aed824]{width:18px;height:18px;flex-shrink:0}.sort-picker__label[data-v-42aed824]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-42aed824],.menu-pop-leave-active[data-v-42aed824]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-42aed824],.menu-pop-leave-to[data-v-42aed824]{opacity:0;transform:scale(.9)}.merge-picker[data-v-ba2f4cee]{position:relative;display:inline-flex;height:26px}.merge-picker__menu[data-v-ba2f4cee]{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-ba2f4cee]{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-ba2f4cee]:hover{background:#eef3f9}.merge-picker__icon[data-v-ba2f4cee]{width:18px;height:18px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.merge-picker__icon[data-v-ba2f4cee] svg{width:18px;height:18px}.merge-picker__label[data-v-ba2f4cee]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-ba2f4cee],.menu-pop-leave-active[data-v-ba2f4cee]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-ba2f4cee],.menu-pop-leave-to[data-v-ba2f4cee]{opacity:0;transform:scale(.9)}.cf-menu-root[data-v-f6176ad1]{display:flex;align-items:center;flex:0 0 auto;width:100%}.cf-menu-trigger[data-v-f6176ad1]{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-f6176ad1]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.cf-menu-trigger[data-v-f6176ad1]:disabled{color:var(--sp-toolbar-btn-disabled-color, #aaa);cursor:default}.cf-menu-trigger__icon[data-v-f6176ad1]{width:16px;height:16px}.cf-menu-trigger__label[data-v-f6176ad1]{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.cf-menu-trigger__caret[data-v-f6176ad1]{width:10px;height:10px;opacity:.7;flex:none}.cf-menu[data-v-f6176ad1]{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-f6176ad1]{max-height:calc(100vh - 120px);overflow-y:auto;scrollbar-width:none}.cf-menu__body[data-v-f6176ad1]::-webkit-scrollbar{display:none}.cf-menu__nav[data-v-f6176ad1]{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-f6176ad1]:hover:not(:disabled){background:#eef3f9}.cf-menu__nav[data-v-f6176ad1]:disabled{color:#d5d5d5;cursor:default}.cf-menu__nav svg[data-v-f6176ad1]{width:10px;height:10px}.cf-menu__item[data-v-f6176ad1]{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-f6176ad1]:hover{background:#eef3f9}.cf-menu__item--disabled[data-v-f6176ad1]{color:#c9c9c9;cursor:default}.cf-menu__item--disabled[data-v-f6176ad1]:hover{background:transparent}.cf-menu__item--sub[data-v-f6176ad1]{position:relative}.cf-menu__arrow[data-v-f6176ad1]{width:12px;height:12px;flex:none;fill:#888}.cf-menu__sep[data-v-f6176ad1]{height:1px;background:var(--sp-toolbar-border, #e0e0e0);margin:3px 4px}.cf-submenu-wrap[data-v-f6176ad1]{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}.cf-submenu[data-v-f6176ad1]{max-height:calc(100vh - 120px);overflow-y:auto;scrollbar-width:none}.cf-submenu[data-v-f6176ad1]::-webkit-scrollbar{display:none}.cf-subnav[data-v-f6176ad1]{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-f6176ad1]:hover:not(:disabled){background:#eef3f9}.cf-subnav[data-v-f6176ad1]:disabled{color:#d5d5d5;cursor:default}.cf-subnav svg[data-v-f6176ad1]{width:10px;height:10px}.cf-menu__subitem[data-v-f6176ad1]{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-f6176ad1]:hover{background:#eef3f9}.cf-menu__subitem--disabled[data-v-f6176ad1]{color:#c9c9c9;cursor:default}.cf-menu__subitem--disabled[data-v-f6176ad1]:hover{background:transparent}.cf-pop-enter-active[data-v-f6176ad1],.cf-pop-leave-active[data-v-f6176ad1]{transition:opacity .12s ease-out,transform .12s ease-out}.cf-pop-enter-from[data-v-f6176ad1],.cf-pop-leave-to[data-v-f6176ad1]{opacity:0;transform:scaleY(.85)}.calc-picker[data-v-c0ff1163]{position:relative;display:inline-flex;height:26px}.calc-picker__menu[data-v-c0ff1163]{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-c0ff1163]{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-c0ff1163]:hover:not(.calc-picker__item--disabled){background:#eef3f9}.calc-picker__item--disabled[data-v-c0ff1163]{color:var(--sp-toolbar-btn-disabled-color, #bbb);cursor:default}.calc-picker__label[data-v-c0ff1163]{overflow:hidden;text-overflow:ellipsis}.menu-pop-enter-active[data-v-c0ff1163],.menu-pop-leave-active[data-v-c0ff1163]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-c0ff1163],.menu-pop-leave-to[data-v-c0ff1163]{opacity:0;transform:scale(.9)}.toolbar[data-v-de0595f1]{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-de0595f1]>*{opacity:0;transition:none}.toolbar.toolbar--ready[data-v-de0595f1]>*{opacity:1;transition:opacity .15s ease-out}.tb-item[data-v-de0595f1]{display:flex;align-items:center;flex:0 0 auto}.toolbar-sep[data-v-de0595f1]{width:1px;height:18px;margin:0 4px;background:var(--sp-toolbar-border)}.toolbar-font[data-v-de0595f1],.toolbar-number-format[data-v-de0595f1],.toolbar-align[data-v-de0595f1],.toolbar-freeze[data-v-de0595f1]{flex:0 0 auto}.toolbar-font-size[data-v-de0595f1],.toolbar-number-format-group[data-v-de0595f1]{display:inline-flex;align-items:center;gap:0;height:26px;position:relative}.toolbar-font-size__input[data-v-de0595f1]{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-de0595f1]::-webkit-outer-spin-button,.toolbar-font-size__input[data-v-de0595f1]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.toolbar-font-size__input[data-v-de0595f1]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-font-size__input[data-v-de0595f1]:focus{border-color:var(--sp-toolbar-border);background:#fff}.toolbar-font-size__btn[data-v-de0595f1]{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-de0595f1]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-font-size__btn svg[data-v-de0595f1]{width:10px;height:10px}.toolbar-font-size__dropdown[data-v-de0595f1]{position:absolute;width:56px;height:26px;pointer-events:none}.toolbar-btn[data-v-de0595f1]{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-de0595f1]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.toolbar-btn[data-v-de0595f1]:active:not(:disabled){opacity:.7}.toolbar-btn--active[data-v-de0595f1]{background:var(--sp-toolbar-btn-hover-bg);color:var(--sp-toolbar-btn-active-color)}.toolbar-btn--step[data-v-de0595f1]{width:26px;height:26px}.toolbar-btn--step svg[data-v-de0595f1]{width:16px;height:16px}.toolbar-btn[data-v-de0595f1]:disabled{color:var(--sp-toolbar-btn-disabled-color);cursor:default}.toolbar-btn__icon[data-v-de0595f1]{width:18px;height:18px}.toolbar-btn svg[data-v-de0595f1]:not(.toolbar-btn__icon){width:18px;height:18px}.toolbar-btn__label[data-v-de0595f1]{display:none;font-size:12px;margin-left:6px}.toolbar-split[data-v-de0595f1]{display:inline-flex;align-items:center;position:relative;height:26px}.toolbar-split__main[data-v-de0595f1]{border:1px solid transparent;border-right:none;border-radius:3px 0 0 3px}.toolbar-split__arrow[data-v-de0595f1]{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-de0595f1]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg)}.toolbar-split__arrow svg[data-v-de0595f1]{width:10px!important;height:10px!important}.toolbar-more[data-v-de0595f1]{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-de0595f1]:hover{background:var(--sp-toolbar-btn-hover-bg)}.toolbar-more--active[data-v-de0595f1]{background:var(--sp-toolbar-btn-hover-bg);color:var(--sp-toolbar-btn-active-color)}.toolbar-more svg[data-v-de0595f1]{width:18px;height:18px}.overflow-menu-wrap[data-v-de0595f1]{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-de0595f1]{transition:none!important}.overflow-menu[data-v-de0595f1]{max-height:calc(100vh - 80px);overflow-y:auto;scrollbar-width:none;display:flex;flex-direction:column;gap:2px}.overflow-menu[data-v-de0595f1]::-webkit-scrollbar{display:none}.overflow-nav[data-v-de0595f1]{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-de0595f1]:hover:not(:disabled){background:#eef3f9}.overflow-nav[data-v-de0595f1]:disabled{color:#d5d5d5;cursor:default}.overflow-nav svg[data-v-de0595f1]{width:10px;height:10px}.overflow-menu .tb-item[data-v-de0595f1]{width:100%}.overflow-menu .toolbar-sep[data-v-de0595f1]{width:100%;height:1px;margin:2px 0}.overflow-menu .toolbar-split[data-v-de0595f1]{width:100%}.overflow-menu .toolbar-split__main[data-v-de0595f1]{flex:1 1 auto;justify-content:flex-start;padding-left:6px}.overflow-menu .toolbar-font-size[data-v-de0595f1],.overflow-menu .toolbar-number-format-group[data-v-de0595f1]{width:100%;justify-content:flex-start}.overflow-menu .toolbar-font[data-v-de0595f1]{width:100%}.overflow-menu .toolbar-number-format[data-v-de0595f1]{flex:1 1 auto;width:auto!important;min-width:0}.overflow-menu .toolbar-align[data-v-de0595f1],.overflow-menu .toolbar-freeze[data-v-de0595f1]{width:100%}.overflow-menu .toolbar-btn[data-v-de0595f1]: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-de0595f1]{display:inline}.overflow-menu .toolbar-number-format__btn[data-v-de0595f1]{flex:0 0 auto;width:30px}.overflow-menu .toolbar-color[data-v-de0595f1]{width:100%}.overflow-menu .toolbar-wrap[data-v-de0595f1]{width:100%;justify-content:flex-start}.overflow-menu .sp-dropdown .sp-dropdown__trigger[data-v-de0595f1],.overflow-menu .cf-menu-root .cf-menu-trigger[data-v-de0595f1]{padding-left:6px;gap:6px}.overflow-menu .cf-menu-trigger__icon[data-v-de0595f1]{width:18px;height:18px}.menu-pop-enter-active[data-v-de0595f1],.menu-pop-leave-active[data-v-de0595f1]{transition:opacity .12s ease-out,transform .12s ease-out}.menu-pop-enter-from[data-v-de0595f1],.menu-pop-leave-to[data-v-de0595f1]{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-39792a0b]{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-39792a0b]{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-39792a0b]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.nf-dialog__title[data-v-39792a0b]{font-size:13px;font-weight:600}.nf-dialog__close[data-v-39792a0b]{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-39792a0b]:hover{background:#f0f0f0;color:#444}.nf-dialog__close svg[data-v-39792a0b]{width:14px;height:14px}.nf-dialog__body[data-v-39792a0b]{padding:12px 14px;display:flex;flex-direction:column;gap:10px}.nf-field[data-v-39792a0b]{display:flex;align-items:center;gap:8px}.nf-field--inline[data-v-39792a0b]{min-height:26px}.nf-field__label[data-v-39792a0b]{width:88px;min-width:88px;font-size:12px;color:#555}.nf-field__input[data-v-39792a0b]{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-39792a0b]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-field__dropdown[data-v-39792a0b]{flex:1}.nf-field__dropdown[data-v-39792a0b] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.nf-field__dropdown[data-v-39792a0b] .sp-dropdown__trigger:hover{background:#f5f5f5}.nf-field__dropdown[data-v-39792a0b] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-field__textarea[data-v-39792a0b]{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-39792a0b]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.nf-checkbox[data-v-39792a0b]{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#333;cursor:pointer}.nf-checkbox input[data-v-39792a0b]{margin:0;cursor:pointer}.nf-dialog__footer[data-v-39792a0b]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.nf-preview[data-v-39792a0b]{display:flex;flex-direction:column;gap:2px;min-width:0}.nf-preview__label[data-v-39792a0b]{font-size:11px;color:#888}.nf-preview__value[data-v-39792a0b]{font-size:13px;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px}.nf-dialog__actions[data-v-39792a0b]{display:flex;gap:8px}.nf-btn[data-v-39792a0b]{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-39792a0b]:hover{background:#f0f0f0}.nf-btn--primary[data-v-39792a0b]{border-color:#0078d7;background:#0078d7;color:#fff}.nf-btn--primary[data-v-39792a0b]:hover{background:#0069c0}.nf-dialog-enter-active[data-v-39792a0b],.nf-dialog-leave-active[data-v-39792a0b]{transition:opacity .14s ease-out}.nf-dialog-enter-from[data-v-39792a0b],.nf-dialog-leave-to[data-v-39792a0b]{opacity:0}.nf-dialog-enter-active .nf-dialog[data-v-39792a0b],.nf-dialog-leave-active .nf-dialog[data-v-39792a0b]{transition:transform .14s ease-out}.nf-dialog-enter-from .nf-dialog[data-v-39792a0b],.nf-dialog-leave-to .nf-dialog[data-v-39792a0b]{transform:scale(.96)}.sort-confirm__mask[data-v-d26d5917]{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-d26d5917]{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-d26d5917]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.sort-confirm__title[data-v-d26d5917]{font-size:13px;font-weight:600}.sort-confirm__close[data-v-d26d5917]{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-d26d5917]:hover{background:#f0f0f0;color:#444}.sort-confirm__close svg[data-v-d26d5917]{width:14px;height:14px}.sort-confirm__body[data-v-d26d5917]{padding:14px}.sort-confirm__message[data-v-d26d5917]{margin:0 0 12px;font-size:12px;line-height:1.5;color:#333}.sort-confirm__options[data-v-d26d5917]{display:flex;flex-direction:column;gap:8px}.sort-confirm__option[data-v-d26d5917]{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#333;cursor:pointer}.sort-confirm__option input[data-v-d26d5917]{margin:0;cursor:pointer}.sort-confirm__footer[data-v-d26d5917]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.sort-confirm__btn[data-v-d26d5917]{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-d26d5917]:hover{background:#f0f0f0}.sort-confirm__btn--primary[data-v-d26d5917]{border-color:#0078d7;background:#0078d7;color:#fff}.sort-confirm__btn--primary[data-v-d26d5917]:hover{background:#0069c0}.sort-confirm-enter-active[data-v-d26d5917],.sort-confirm-leave-active[data-v-d26d5917]{transition:opacity .14s ease-out}.sort-confirm-enter-from[data-v-d26d5917],.sort-confirm-leave-to[data-v-d26d5917]{opacity:0}.sort-confirm-enter-active .sort-confirm[data-v-d26d5917],.sort-confirm-leave-active .sort-confirm[data-v-d26d5917]{transition:transform .14s ease-out}.sort-confirm-enter-from .sort-confirm[data-v-d26d5917],.sort-confirm-leave-to .sort-confirm[data-v-d26d5917]{transform:scale(.96)}.ifn-dialog__mask[data-v-f4e459b6]{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-f4e459b6]{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-f4e459b6]{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid #ececec}.ifn-dialog__title[data-v-f4e459b6]{font-size:13px;font-weight:600}.ifn-dialog__close[data-v-f4e459b6]{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-f4e459b6]:hover{background:#f0f0f0;color:#444}.ifn-dialog__close svg[data-v-f4e459b6]{width:14px;height:14px}.ifn-dialog__body[data-v-f4e459b6]{padding:14px;display:flex;flex-direction:column;gap:12px}.ifn-dialog__field[data-v-f4e459b6]{display:flex;flex-direction:column;gap:6px}.ifn-dialog__label[data-v-f4e459b6]{font-size:12px;color:#333}.ifn-dialog__dropdown[data-v-f4e459b6]{width:100%}.ifn-dialog__dropdown[data-v-f4e459b6] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.ifn-dialog__dropdown[data-v-f4e459b6] .sp-dropdown__trigger:hover{background:#f5f5f5}.ifn-dialog__dropdown[data-v-f4e459b6] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.ifn-dialog__desc[data-v-f4e459b6]{font-size:12px;line-height:1.5;color:#666;-webkit-user-select:text;user-select:text}.ifn-dialog__textarea[data-v-f4e459b6]{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-f4e459b6]:focus{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.ifn-dialog__footer[data-v-f4e459b6]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid #ececec}.ifn-dialog__btn[data-v-f4e459b6]{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-f4e459b6]:hover{background:#f0f0f0}.ifn-dialog__btn--primary[data-v-f4e459b6]{border-color:#0078d7;background:#0078d7;color:#fff}.ifn-dialog__btn--primary[data-v-f4e459b6]:hover{background:#0069c0}.ifn-dialog__btn--primary[data-v-f4e459b6]:disabled,.ifn-dialog__btn--primary[data-v-f4e459b6]:disabled:hover{border-color:#ccc;background:#f0f0f0;color:#a8a8a8;cursor:not-allowed}.ifn-dialog-enter-active[data-v-f4e459b6],.ifn-dialog-leave-active[data-v-f4e459b6]{transition:opacity .14s ease-out}.ifn-dialog-enter-from[data-v-f4e459b6],.ifn-dialog-leave-to[data-v-f4e459b6]{opacity:0}.ifn-dialog-enter-active .ifn-dialog[data-v-f4e459b6],.ifn-dialog-leave-active .ifn-dialog[data-v-f4e459b6]{transition:transform .14s ease-out}.ifn-dialog-enter-from .ifn-dialog[data-v-f4e459b6],.ifn-dialog-leave-to .ifn-dialog[data-v-f4e459b6]{transform:scale(.96)}.filter-popup[data-v-ec90eb74]{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-ec90eb74]{display:flex;align-items:center;gap:6px;padding:8px 10px 6px;border-bottom:1px solid #eee}.filter-popup__head-label[data-v-ec90eb74]{font-weight:600;font-size:13px}.filter-popup__head-badge[data-v-ec90eb74]{font-size:11px;color:#0078d7;background:rgba(0,120,215,.1);border-radius:8px;padding:1px 6px}.filter-popup__search[data-v-ec90eb74]{padding:8px 10px 4px}.filter-popup__search-input[data-v-ec90eb74]{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-ec90eb74]:focus{border-color:#0078d7}.filter-popup__tools[data-v-ec90eb74]{display:flex;align-items:center;gap:4px;padding:4px 10px 6px}.filter-popup__tool[data-v-ec90eb74]{border:none;background:transparent;color:#0078d7;font-size:12px;cursor:pointer;padding:2px 4px}.filter-popup__tool[data-v-ec90eb74]:hover{text-decoration:underline}.filter-popup__count[data-v-ec90eb74]{margin-left:auto;font-size:11px;color:#999}.filter-popup__list[data-v-ec90eb74]{height:252px;overflow-y:auto;border-top:1px solid #f0f0f0;border-bottom:1px solid #f0f0f0}.filter-popup__item[data-v-ec90eb74]{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-ec90eb74]:hover{background:#eef3f9}.filter-popup__item input[data-v-ec90eb74]{margin:0;flex-shrink:0}.filter-popup__item-label[data-v-ec90eb74]{overflow:hidden;text-overflow:ellipsis;font-size:12px}.filter-popup__item-note[data-v-ec90eb74]{font-size:11px;color:#999;flex-shrink:0}.filter-popup__empty[data-v-ec90eb74]{padding:16px 10px;text-align:center;color:#999;font-size:12px}.filter-popup__modes[data-v-ec90eb74]{display:flex;gap:2px;padding:6px 10px}.filter-popup__mode[data-v-ec90eb74]{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-ec90eb74]:hover{background:#eef3f9;border-color:#c8d8f0}.filter-popup__cond[data-v-ec90eb74]{padding:8px 10px}.filter-popup__cond-back[data-v-ec90eb74]{border:none;background:transparent;color:#0078d7;font-size:12px;cursor:pointer;padding:0;margin-bottom:8px}.filter-popup__cond-row[data-v-ec90eb74]{display:flex;align-items:center;gap:6px;margin-bottom:6px}.filter-popup__cond-select[data-v-ec90eb74]{width:100%;height:26px;border:1px solid #ccc;border-radius:3px;font-size:12px;background:#fff;outline:none}.filter-popup__cond-input[data-v-ec90eb74]{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-ec90eb74]:focus{border-color:#0078d7}.filter-popup__cond-and[data-v-ec90eb74]{font-size:12px;color:#666}.filter-popup__footer[data-v-ec90eb74]{display:flex;align-items:center;gap:6px;padding:8px 10px;border-top:1px solid #eee}.filter-popup__btn[data-v-ec90eb74]{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-ec90eb74]:hover{background:#eef3f9}.filter-popup__btn--primary[data-v-ec90eb74]{background:#0078d7;border-color:#0078d7;color:#fff}.filter-popup__btn--primary[data-v-ec90eb74]:hover{background:#006cbe}.filter-popup__btn--clear[data-v-ec90eb74]{color:#c62828;border-color:#e0c0c0}.filter-popup__btn--clear[data-v-ec90eb74]:hover{background:#fdf0f0}.filter-popup__footer-spacer[data-v-ec90eb74]{flex:1}.cf-manager[data-v-8fb761b2]{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-8fb761b2]{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--sp-toolbar-border, #eee)}.cf-manager__title[data-v-8fb761b2]{font-weight:600;font-size:14px;flex:1}.cf-manager__close[data-v-8fb761b2]{border:none;background:transparent;font-size:20px;line-height:1;cursor:pointer;color:#888}.cf-manager__close[data-v-8fb761b2]:hover{color:#333}.cf-manager__new[data-v-8fb761b2]{margin-left:auto}.cf-manager__empty[data-v-8fb761b2]{padding:30px 14px;text-align:center;color:#999;font-size:13px}.cf-manager__list[data-v-8fb761b2]{overflow-y:auto;padding:8px}.cf-rule[data-v-8fb761b2]{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-8fb761b2]{opacity:.5}.cf-rule__main[data-v-8fb761b2]{display:flex;align-items:center;gap:10px;min-width:0}.cf-rule__preview[data-v-8fb761b2]{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-8fb761b2]{min-width:0}.cf-rule__summary[data-v-8fb761b2]{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cf-rule__range[data-v-8fb761b2]{font-size:12px;color:#888;margin-top:2px}.cf-rule__actions[data-v-8fb761b2]{display:flex;align-items:center;gap:6px;flex:0 0 auto}.cf-chk[data-v-8fb761b2]{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-8fb761b2]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.cf-chk__box[data-v-8fb761b2]{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-8fb761b2]{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-8fb761b2]{background:#0078d7;border-color:#0078d7}.cf-chk__input:checked+.cf-chk__box .cf-chk__tick[data-v-8fb761b2]{opacity:1;transform:scale(1)}.cf-chk__input:focus-visible+.cf-chk__box[data-v-8fb761b2]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.cf-mini[data-v-8fb761b2]{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-8fb761b2]{display:block;width:14px;height:14px}.cf-mini[data-v-8fb761b2]:hover{background:#f0f0f0}.cf-btn[data-v-8fb761b2]{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-8fb761b2]:hover{background:#f0f0f0}.cf-btn--primary[data-v-8fb761b2]{border-color:#0078d7;background:#0078d7;color:#fff}.cf-btn--primary[data-v-8fb761b2]:hover{background:#0069c0}.cf-editor[data-v-8e37ed7b]{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-8e37ed7b]{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-8e37ed7b]{border:none;background:transparent;font-size:20px;line-height:1;cursor:pointer;color:#888}.cf-editor__close[data-v-8e37ed7b]:hover{color:#333}.cf-editor__body[data-v-8e37ed7b]{padding:12px 14px}.cf-row[data-v-8e37ed7b]{display:flex;align-items:center;gap:8px;margin-bottom:10px}.cf-hint[data-v-8e37ed7b]{margin:-6px 0 10px;font-size:12px;color:var(--sp-find-hint-color, #888);line-height:1.5}.cf-row--inline[data-v-8e37ed7b]{justify-content:flex-start;gap:18px}.cf-label[data-v-8e37ed7b]{width:64px;flex:0 0 auto;font-size:13px;color:#666}.cf-dropdown[data-v-8e37ed7b]{flex:1;min-width:0}.cf-dropdown[data-v-8e37ed7b] .sp-dropdown__trigger{border:1px solid #c0c0c0;background:#fff;color:#1a1a1a;padding:0 6px}.cf-dropdown[data-v-8e37ed7b] .sp-dropdown__trigger:hover{background:#f5f5f5}.cf-dropdown[data-v-8e37ed7b] .sp-dropdown__trigger--open{border-color:#0078d7;box-shadow:0 0 0 1px #0078d74d}.cf-input[data-v-8e37ed7b]{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-8e37ed7b]:focus{border-color:#0078d7}.cf-format-row[data-v-8e37ed7b]{display:flex;align-items:center;gap:6px;flex:1;min-width:0}.toolbar-btn[data-v-8e37ed7b]{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-8e37ed7b]:hover:not(:disabled){background:var(--sp-toolbar-btn-hover-bg, #e6e6e6)}.toolbar-btn[data-v-8e37ed7b]:active:not(:disabled){opacity:.7}.toolbar-btn--active[data-v-8e37ed7b]{background:var(--sp-toolbar-btn-hover-bg, #e6e6e6);color:var(--sp-toolbar-btn-active-color, #0078d7)}.toolbar-btn svg[data-v-8e37ed7b]{width:18px;height:18px}.cf-error[data-v-8e37ed7b]{color:#d93025;font-size:12px;margin:-4px 0 8px 72px}.cf-chk[data-v-8e37ed7b]{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-8e37ed7b]{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;pointer-events:none}.cf-chk__box[data-v-8e37ed7b]{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-8e37ed7b]{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-8e37ed7b]{background:#0078d7;border-color:#0078d7}.cf-chk__input:checked+.cf-chk__box .cf-chk__tick[data-v-8e37ed7b]{opacity:1;transform:scale(1)}.cf-chk__input:focus-visible+.cf-chk__box[data-v-8e37ed7b]{outline:2px solid rgba(0,120,215,.4);outline-offset:1px}.cf-editor__footer[data-v-8e37ed7b]{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--sp-toolbar-border, #eee)}.cf-btn[data-v-8e37ed7b]{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-8e37ed7b]:hover{background:#f0f0f0}.cf-btn--primary[data-v-8e37ed7b]{border-color:#0078d7;background:#0078d7;color:#fff}.cf-btn--primary[data-v-8e37ed7b]:hover{background:#0069c0}.spreadsheet-outer[data-v-ba313f95]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%;min-height:400px;width:100%}.formula-bar[data-v-ba313f95]{display:flex;align-items:flex-start;min-height:36px;padding:0;gap:0}.formula-bar--expanded[data-v-ba313f95]{min-height:72px}.formula-bar__cell-label[data-v-ba313f95]{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-ba313f95]{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-ba313f95]{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-ba313f95]{border-left:1px solid var(--sp-formula-bar-input-border)}.formula-bar__btn[data-v-ba313f95]:hover{background:var(--sp-scroll-btn-hover-bg, #f0f0f0)}.formula-bar__btn--cancel[data-v-ba313f95]:hover{color:#e53935;background:#fdecea}.formula-bar__btn--accept[data-v-ba313f95]:hover{color:#2e7d32;background:#e8f5e9}.formula-bar__fx-label[data-v-ba313f95]{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-ba313f95]:hover{background:var(--sp-scroll-btn-hover-bg, #f0f0f0)}.formula-bar__input[data-v-ba313f95]{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-ba313f95]{height:68px;overflow:auto}.formula-bar__input[data-v-ba313f95]: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-ba313f95]{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-ba313f95]:hover{background:var(--sp-scroll-btn-hover-bg, #e8e8e8)}.spreadsheet-wrapper[data-v-ba313f95]{flex:1;position:relative;overflow:hidden;background:var(--sp-wrapper-bg)}.grid-canvas[data-v-ba313f95]{position:absolute;top:0;left:0;display:block;outline:none;cursor:cell}.grid-canvas--freeze[data-v-ba313f95]{pointer-events:none;z-index:1}.grid-canvas[data-v-ba313f95]:not(.grid-canvas--freeze){z-index:0}.grid-canvas[data-v-ba313f95]:focus{outline:none}.v-scrollbar[data-v-ba313f95]{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-ba313f95]{position:absolute;left:0;bottom:0;height:11px;width:calc(100% - 11px);display:flex;background:var(--sp-wrapper-bg)}.sb-corner[data-v-ba313f95]{position:absolute;right:0;bottom:0;width:11px;height:11px;background:var(--sp-wrapper-bg)}.sb-btn[data-v-ba313f95]{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-ba313f95]:hover{background:var(--sp-scroll-btn-hover-bg, #d0d0d0)}.sb-btn[data-v-ba313f95]:active{background:var(--sp-scroll-btn-active-bg, #c0c0c0)}.sb-arrow[data-v-ba313f95]{display:block;width:0;height:0}.sb-arrow--up[data-v-ba313f95]{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-ba313f95]{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-ba313f95]{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-ba313f95]{border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:4px solid var(--sp-scroll-btn-color, #666)}.sb-track[data-v-ba313f95]{flex:1;position:relative;background:var(--sp-scroll-track-bg, rgba(0,0,0,.06))}.sb-track--v[data-v-ba313f95]{width:11px}.sb-track--h[data-v-ba313f95]{height:11px}.sb-thumb[data-v-ba313f95]{position:absolute;border-radius:3px;background:var(--sp-scroll-thumb);cursor:default}.sb-thumb[data-v-ba313f95]:hover{background:var(--sp-scroll-thumb-hover)}.sb-thumb--v[data-v-ba313f95]{left:1px;right:1px;min-height:16px}.sb-thumb--h[data-v-ba313f95]{top:1px;bottom:1px;min-width:16px}.cell-editor[data-v-ba313f95]{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}
@@ -0,0 +1,25 @@
1
+ import type { ConditionalFormattingRule } from '../core/types';
2
+ type __VLS_Props = {
3
+ locale: string;
4
+ rules: ConditionalFormattingRule[];
5
+ themeVars?: Record<string, string>;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
8
+ delete: (id: string) => any;
9
+ close: () => any;
10
+ toggle: (id: string, enabled: boolean) => any;
11
+ edit: (rule: ConditionalFormattingRule) => any;
12
+ move: (id: string, dir: "up" | "down") => any;
13
+ new: () => any;
14
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
+ onDelete?: ((id: string) => any) | undefined;
16
+ onClose?: (() => any) | undefined;
17
+ onToggle?: ((id: string, enabled: boolean) => any) | undefined;
18
+ onEdit?: ((rule: ConditionalFormattingRule) => any) | undefined;
19
+ onMove?: ((id: string, dir: "up" | "down") => any) | undefined;
20
+ onNew?: (() => any) | undefined;
21
+ }>, {
22
+ themeVars: Record<string, string>;
23
+ rules: ConditionalFormattingRule[];
24
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, HTMLDivElement>;
25
+ export default _default;
@@ -0,0 +1,25 @@
1
+ type __VLS_Props = {
2
+ locale: string;
3
+ hasSelection: boolean;
4
+ themeVars?: Record<string, string>;
5
+ };
6
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
7
+ preset: (type: string) => any;
8
+ "new-rule": () => any;
9
+ manage: () => any;
10
+ clear: (scope: "sheet" | "selection") => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ onPreset?: ((type: string) => any) | undefined;
13
+ "onNew-rule"?: (() => any) | undefined;
14
+ onManage?: (() => any) | undefined;
15
+ onClear?: ((scope: "sheet" | "selection") => any) | undefined;
16
+ }>, {
17
+ themeVars: Record<string, string>;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {
19
+ rootRef: HTMLDivElement;
20
+ btnRef: HTMLButtonElement;
21
+ menuRef: HTMLDivElement;
22
+ highlightSubRef: HTMLDivElement;
23
+ clearSubRef: HTMLDivElement;
24
+ }, HTMLDivElement>;
25
+ export default _default;
@@ -0,0 +1,23 @@
1
+ import type { ConditionalFormattingRule } from '../core/types';
2
+ type __VLS_Props = {
3
+ locale: string;
4
+ mode: 'create' | 'edit';
5
+ rule: ConditionalFormattingRule | null;
6
+ defaultRangeText: string;
7
+ themeVars?: Record<string, string>;
8
+ };
9
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
10
+ cancel: () => any;
11
+ save: (rule: ConditionalFormattingRule) => any;
12
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
13
+ onCancel?: (() => any) | undefined;
14
+ onSave?: ((rule: ConditionalFormattingRule) => any) | undefined;
15
+ }>, {
16
+ themeVars: Record<string, string>;
17
+ rule: ConditionalFormattingRule | null;
18
+ defaultRangeText: string;
19
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {
20
+ fillTrigger: HTMLButtonElement;
21
+ fontTrigger: HTMLButtonElement;
22
+ }, HTMLDivElement>;
23
+ export default _default;
@@ -18,6 +18,8 @@ type __VLS_Props = {
18
18
  searchPlaceholder?: string;
19
19
  /** 触发器固定图标(SVG 字符串):当 modelValue 未命中任何 option 时显示,优先级低于 current.icon */
20
20
  triggerIcon?: string;
21
+ /** 触发器左侧图标旁的固定文本标签(溢出菜单中显示) */
22
+ triggerLabel?: string;
21
23
  };
22
24
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
23
25
  "update:modelValue": (v: string | number) => void;
@@ -40,6 +42,7 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
40
42
  searchable: boolean;
41
43
  searchPlaceholder: string;
42
44
  triggerIcon: string;
45
+ triggerLabel: string;
43
46
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {
44
47
  rootRef: HTMLDivElement;
45
48
  menuRef: HTMLDivElement;
@@ -37,5 +37,6 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
37
37
  "onReplace-all"?: (() => any) | undefined;
38
38
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {
39
39
  findInputRef: HTMLInputElement;
40
+ settingsBtnRef: HTMLButtonElement;
40
41
  }, any>;
41
42
  export default _default;