xiaodao-spreader 0.1.35 → 0.1.36

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