@haklex/rich-ext-nested-doc 0.0.65 → 0.0.67

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.md ADDED
@@ -0,0 +1,144 @@
1
+ # @haklex/rich-ext-nested-doc
2
+
3
+ Nested document extension for embedding sub-documents as card blocks.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pnpm add @haklex/rich-ext-nested-doc
9
+ ```
10
+
11
+ ## Peer Dependencies
12
+
13
+ | Package | Version |
14
+ | --- | --- |
15
+ | `@lexical/react` | `^0.41.0` |
16
+ | `lexical` | `^0.41.0` |
17
+ | `lucide-react` | `^0.574.0` |
18
+ | `react` | `>= 19` |
19
+ | `react-dom` | `>= 19` |
20
+
21
+ ## Usage
22
+
23
+ ### Register nodes in your editor config
24
+
25
+ ```ts
26
+ import { nestedDocEditNodes } from '@haklex/rich-ext-nested-doc'
27
+
28
+ const editorConfig = {
29
+ nodes: [...nestedDocEditNodes],
30
+ }
31
+ ```
32
+
33
+ For static/read-only rendering:
34
+
35
+ ```ts
36
+ import { nestedDocNodes } from '@haklex/rich-ext-nested-doc/static'
37
+
38
+ const staticConfig = {
39
+ nodes: [...nestedDocNodes],
40
+ }
41
+ ```
42
+
43
+ ### Use the nested doc plugin
44
+
45
+ ```tsx
46
+ import { NestedDocPlugin } from '@haklex/rich-ext-nested-doc'
47
+
48
+ function EditorPlugins() {
49
+ return <NestedDocPlugin />
50
+ }
51
+ ```
52
+
53
+ ### Insert a nested document programmatically
54
+
55
+ ```ts
56
+ import { INSERT_NESTED_DOC_COMMAND } from '@haklex/rich-ext-nested-doc'
57
+
58
+ editor.dispatchCommand(INSERT_NESTED_DOC_COMMAND, { docId: '...' })
59
+ ```
60
+
61
+ ### Provide the dialog editor context
62
+
63
+ ```tsx
64
+ import { NestedDocDialogEditorProvider, useNestedDocDialogEditor } from '@haklex/rich-ext-nested-doc'
65
+
66
+ function App() {
67
+ return (
68
+ <NestedDocDialogEditorProvider>
69
+ <Editor />
70
+ </NestedDocDialogEditorProvider>
71
+ )
72
+ }
73
+ ```
74
+
75
+ ### Use renderers and decorators
76
+
77
+ ```tsx
78
+ import { NestedDocEditDecorator } from '@haklex/rich-ext-nested-doc'
79
+ import { NestedDocRenderer, NestedDocStaticDecorator } from '@haklex/rich-ext-nested-doc/static'
80
+ ```
81
+
82
+ ### Markdown transformer
83
+
84
+ ```ts
85
+ import { NESTED_DOC_BLOCK_TRANSFORMER } from '@haklex/rich-ext-nested-doc'
86
+
87
+ const transformers = [NESTED_DOC_BLOCK_TRANSFORMER]
88
+ ```
89
+
90
+ ### Import styles
91
+
92
+ ```ts
93
+ import '@haklex/rich-ext-nested-doc/style.css'
94
+ ```
95
+
96
+ ## Exports
97
+
98
+ ### Nodes
99
+
100
+ - `NestedDocNode` -- static (read-only) node
101
+ - `NestedDocEditNode` -- edit node with interactive UI
102
+ - `$createNestedDocNode()` / `$isNestedDocNode()` -- Lexical helpers
103
+ - `nestedDocNodes` -- array of static nodes for config registration
104
+ - `nestedDocEditNodes` -- array of edit nodes for config registration
105
+
106
+ ### Renderers / Decorators
107
+
108
+ - `NestedDocRenderer` -- static renderer
109
+ - `NestedDocEditDecorator` -- edit-mode decorator
110
+ - `NestedDocStaticDecorator` -- static-mode decorator
111
+
112
+ ### Plugin
113
+
114
+ - `NestedDocPlugin` -- editor plugin for nested doc insertion
115
+ - `INSERT_NESTED_DOC_COMMAND` -- Lexical command for programmatic insertion
116
+
117
+ ### Context
118
+
119
+ - `NestedDocDialogEditorProvider` -- context provider for nested doc dialog editor
120
+ - `useNestedDocDialogEditor` -- hook to access nested doc dialog editor context
121
+
122
+ ### Transformers
123
+
124
+ - `NESTED_DOC_BLOCK_TRANSFORMER` -- Markdown block transformer
125
+
126
+ ### Types
127
+
128
+ - Serialized node types and payload interfaces are exported for type-safe usage.
129
+
130
+ ### Sub-path Exports
131
+
132
+ | Path | Description |
133
+ | --- | --- |
134
+ | `@haklex/rich-ext-nested-doc` | Full exports (edit + static) |
135
+ | `@haklex/rich-ext-nested-doc/static` | Static-only (no heavy UI deps) |
136
+ | `@haklex/rich-ext-nested-doc/style.css` | Stylesheet |
137
+
138
+ ## Part of Haklex
139
+
140
+ This package is part of the [Haklex](../../README.md) rich editor ecosystem.
141
+
142
+ ## License
143
+
144
+ MIT
@@ -1,8 +1,8 @@
1
1
  import { LexicalEditor, SerializedEditorState } from 'lexical';
2
2
  interface NestedDocEditDecoratorProps {
3
- nodeKey: string;
4
3
  contentEditor: LexicalEditor;
5
4
  contentState: SerializedEditorState;
5
+ nodeKey: string;
6
6
  }
7
7
  export declare function NestedDocEditDecorator({ nodeKey, contentEditor, contentState, }: NestedDocEditDecoratorProps): import("react/jsx-runtime").JSX.Element;
8
8
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"NestedDocEditDecorator.d.ts","sourceRoot":"","sources":["../src/NestedDocEditDecorator.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAyCnE,UAAU,2BAA2B;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,aAAa,CAAA;IAC5B,YAAY,EAAE,qBAAqB,CAAA;CACpC;AAED,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,aAAa,EACb,YAAY,GACb,EAAE,2BAA2B,2CAyE7B"}
1
+ {"version":3,"file":"NestedDocEditDecorator.d.ts","sourceRoot":"","sources":["../src/NestedDocEditDecorator.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAmCpE,UAAU,2BAA2B;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,qBAAqB,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,aAAa,EACb,YAAY,GACb,EAAE,2BAA2B,2CAgE7B"}
@@ -1,4 +1,4 @@
1
- import { CommandItemConfig } from '@haklex/rich-editor';
1
+ import { CommandItemConfig } from '@haklex/rich-editor/commands';
2
2
  import { EditorConfig, LexicalEditor, SerializedEditorState } from 'lexical';
3
3
  import { ReactElement } from 'react';
4
4
  import { NestedDocNode, SerializedNestedDocNode } from './NestedDocNode';
@@ -1 +1 @@
1
- {"version":3,"file":"NestedDocEditNode.d.ts","sourceRoot":"","sources":["../src/NestedDocEditNode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAGhB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAIzC,OAAO,EAAE,aAAa,EAAE,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAa7E,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,eAAe,EAAE,aAAa,CAAA;IAE9B,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE,CAevC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB;gBAM5C,YAAY,CAAC,EAAE,qBAAqB,EAAE,GAAG,CAAC,EAAE,MAAM;IAS9D,gBAAgB,IAAI,aAAa;IAIjC,MAAM,CAAC,UAAU,CACf,cAAc,EAAE,uBAAuB,GACtC,iBAAiB;IAIpB,UAAU,IAAI,uBAAuB;IASrC,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAOtE;AAED,wBAAgB,wBAAwB,CACtC,YAAY,CAAC,EAAE,qBAAqB,GACnC,iBAAiB,CAEnB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,iBAAiB,CAE7E"}
1
+ {"version":3,"file":"NestedDocEditNode.d.ts","sourceRoot":"","sources":["../src/NestedDocEditNode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAGlF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,EAAE,aAAa,EAAE,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAa9E,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,eAAe,EAAE,aAAa,CAAC;IAE/B,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE,CAetC;IAEF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,iBAAiB,GAAG,iBAAiB;gBAM5C,YAAY,CAAC,EAAE,qBAAqB,EAAE,GAAG,CAAC,EAAE,MAAM;IAS9D,gBAAgB,IAAI,aAAa;IAIjC,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,uBAAuB,GAAG,iBAAiB;IAI7E,UAAU,IAAI,uBAAuB;IASrC,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAOtE;AAED,wBAAgB,wBAAwB,CAAC,YAAY,CAAC,EAAE,qBAAqB,GAAG,iBAAiB,CAEhG;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,iBAAiB,CAE7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"NestedDocRenderer.d.ts","sourceRoot":"","sources":["../src/NestedDocRenderer.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,qBAAqB,CAAA;CAAE,2CAa5E"}
1
+ {"version":3,"file":"NestedDocRenderer.d.ts","sourceRoot":"","sources":["../src/NestedDocRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,qBAAqB,CAAA;CAAE,2CAQ5E"}
@@ -2,6 +2,6 @@ import { SerializedEditorState } from 'lexical';
2
2
  interface NestedDocStaticDecoratorProps {
3
3
  contentState: SerializedEditorState;
4
4
  }
5
- export declare function NestedDocStaticDecorator({ contentState, }: NestedDocStaticDecoratorProps): import("react/jsx-runtime").JSX.Element | null;
5
+ export declare function NestedDocStaticDecorator({ contentState }: NestedDocStaticDecoratorProps): import("react/jsx-runtime").JSX.Element | null;
6
6
  export {};
7
7
  //# sourceMappingURL=NestedDocStaticDecorator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NestedDocStaticDecorator.d.ts","sourceRoot":"","sources":["../src/NestedDocStaticDecorator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAUpD,UAAU,6BAA6B;IACrC,YAAY,EAAE,qBAAqB,CAAA;CACpC;AAED,wBAAgB,wBAAwB,CAAC,EACvC,YAAY,GACb,EAAE,6BAA6B,kDA4D/B"}
1
+ {"version":3,"file":"NestedDocStaticDecorator.d.ts","sourceRoot":"","sources":["../src/NestedDocStaticDecorator.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAUrD,UAAU,6BAA6B;IACrC,YAAY,EAAE,qBAAqB,CAAC;CACrC;AAED,wBAAgB,wBAAwB,CAAC,EAAE,YAAY,EAAE,EAAE,6BAA6B,kDA0DvF"}
package/dist/index.mjs CHANGED
@@ -1,13 +1,15 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { t as truncateEditorState, h as hasRenderableEditorState, d as dialogPopup, e as editOverlayRoot, p as previewSurface, N as NestedDocRenderer, a as previewEmpty, b as editOverlay, $ as $isNestedDocNode, c as dialogShell, f as dialogHeader, g as dialogHeaderMain, i as dialogHeaderIcon, j as dialogHeaderText, k as dialogTitle, l as editorArea, m as dialogFooter, n as dialogActions, s as secondaryButton, o as primaryButton, q as NestedDocNode } from "./transformer-D5KOI4CL.js";
5
- import { r, u, v } from "./transformer-D5KOI4CL.js";
6
- import { useColorScheme, editorTheme, getResolvedEditNodes } from "@haklex/rich-editor";
4
+ import { t as truncateEditorState, h as hasRenderableEditorState, d as dialogPopup, e as editOverlayRoot, p as previewSurface, N as NestedDocRenderer, a as previewEmpty, b as editOverlay, $ as $isNestedDocNode, c as dialogShell, f as dialogHeader, g as dialogHeaderMain, i as dialogHeaderIcon, j as dialogHeaderText, k as dialogTitle, l as editorArea, m as dialogFooter, n as NestedDocNode } from "./transformer-DDYim0ph.js";
5
+ import { o, q, r } from "./transformer-DDYim0ph.js";
6
+ import { useColorScheme, editorTheme } from "@haklex/rich-editor";
7
+ import { getResolvedEditNodes } from "@haklex/rich-editor/nodes";
7
8
  import { $getNodeByKey, $insertNodes, createEditor, createCommand, COMMAND_PRIORITY_EDITOR } from "lexical";
8
9
  import { Pencil, FileText, X, Save } from "lucide-react";
9
10
  import { createContext, use, useMemo, useCallback, useRef, useState, createElement, useEffect } from "react";
10
11
  import { jsx, jsxs } from "react/jsx-runtime";
12
+ import { ActionBar, ActionButton } from "@haklex/rich-editor-ui";
11
13
  import { usePortalTheme, PortalContainerProvider } from "@haklex/rich-style-token";
12
14
  import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
13
15
  const NestedDocDialogEditorContext = createContext(null);
@@ -58,12 +60,12 @@ function NestedDocEditDecorator({
58
60
  content: ({ dismiss }) => /* @__PURE__ */ jsx(
59
61
  NestedDocDialogContent,
60
62
  {
63
+ DialogEditor,
64
+ contentEditor,
61
65
  initialState: contentEditor.getEditorState().toJSON(),
62
- parentEditor: editor,
63
66
  nodeKey,
64
- contentEditor,
65
- onDismiss: dismiss,
66
- DialogEditor
67
+ parentEditor: editor,
68
+ onDismiss: dismiss
67
69
  }
68
70
  ),
69
71
  className: dialogPopup,
@@ -72,22 +74,15 @@ function NestedDocEditDecorator({
72
74
  showCloseButton: true,
73
75
  clickOutsideToDismiss: false
74
76
  });
75
- }, [
76
- DialogEditor,
77
- colorScheme,
78
- contentEditor,
79
- editor,
80
- nodeKey,
81
- portalClassName
82
- ]);
77
+ }, [DialogEditor, colorScheme, contentEditor, editor, nodeKey, portalClassName]);
83
78
  return /* @__PURE__ */ jsxs(
84
79
  "div",
85
80
  {
81
+ "aria-label": "Open nested document editor",
86
82
  className: editOverlayRoot,
87
- onClick: handleOpenDialog,
88
83
  role: "button",
89
84
  tabIndex: 0,
90
- "aria-label": "Open nested document editor",
85
+ onClick: handleOpenDialog,
91
86
  onKeyDown: (event) => {
92
87
  if (event.key === "Enter" || event.key === " ") {
93
88
  event.preventDefault();
@@ -96,7 +91,7 @@ function NestedDocEditDecorator({
96
91
  },
97
92
  children: [
98
93
  /* @__PURE__ */ jsx("div", { className: "rich-nested-doc-content", children: hasPreview ? /* @__PURE__ */ jsx("div", { className: previewSurface, children: /* @__PURE__ */ jsx(NestedDocRenderer, { value: previewState }) }) : /* @__PURE__ */ jsx("p", { className: previewEmpty, children: "Empty nested document. Click to edit." }) }),
99
- /* @__PURE__ */ jsx("div", { className: editOverlay, "aria-hidden": true, children: /* @__PURE__ */ jsx(Pencil, { size: 24 }) })
94
+ /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: editOverlay, children: /* @__PURE__ */ jsx(Pencil, { size: 24 }) })
100
95
  ]
101
96
  }
102
97
  );
@@ -141,53 +136,23 @@ function NestedDocDialogContent({
141
136
  const handleEditorReady = useCallback((editor) => {
142
137
  dialogEditorRef.current = editor;
143
138
  }, []);
144
- return /* @__PURE__ */ jsxs(
145
- "div",
146
- {
147
- ref: setShellEl,
148
- className: dialogShell,
149
- onKeyDownCapture: handleKeyDownCapture,
150
- children: [
151
- /* @__PURE__ */ jsx("div", { className: dialogHeader, children: /* @__PURE__ */ jsxs("div", { className: dialogHeaderMain, children: [
152
- /* @__PURE__ */ jsx("span", { className: dialogHeaderIcon, children: /* @__PURE__ */ jsx(FileText, { size: 18 }) }),
153
- /* @__PURE__ */ jsx("div", { className: dialogHeaderText, children: /* @__PURE__ */ jsx("h3", { className: dialogTitle, children: "Nested document" }) })
154
- ] }) }),
155
- /* @__PURE__ */ jsx("div", { className: editorArea, children: shellEl && /* @__PURE__ */ jsx(PortalContainerProvider, { value: shellEl, children: /* @__PURE__ */ jsx(
156
- DialogEditor,
157
- {
158
- initialValue: safeInitialState,
159
- onEditorReady: handleEditorReady
160
- }
161
- ) }) }),
162
- /* @__PURE__ */ jsx("div", { className: dialogFooter, children: /* @__PURE__ */ jsxs("div", { className: dialogActions, children: [
163
- /* @__PURE__ */ jsxs(
164
- "button",
165
- {
166
- type: "button",
167
- className: secondaryButton,
168
- onClick: onDismiss,
169
- children: [
170
- /* @__PURE__ */ jsx(X, { size: 15 }),
171
- "Cancel"
172
- ]
173
- }
174
- ),
175
- /* @__PURE__ */ jsxs(
176
- "button",
177
- {
178
- type: "button",
179
- className: primaryButton,
180
- onClick: handleDone,
181
- children: [
182
- /* @__PURE__ */ jsx(Save, { size: 15 }),
183
- "Save"
184
- ]
185
- }
186
- )
187
- ] }) })
188
- ]
189
- }
190
- );
139
+ return /* @__PURE__ */ jsxs("div", { className: dialogShell, ref: setShellEl, onKeyDownCapture: handleKeyDownCapture, children: [
140
+ /* @__PURE__ */ jsx("div", { className: dialogHeader, children: /* @__PURE__ */ jsxs("div", { className: dialogHeaderMain, children: [
141
+ /* @__PURE__ */ jsx("span", { className: dialogHeaderIcon, children: /* @__PURE__ */ jsx(FileText, { size: 18 }) }),
142
+ /* @__PURE__ */ jsx("div", { className: dialogHeaderText, children: /* @__PURE__ */ jsx("h3", { className: dialogTitle, children: "Nested document" }) })
143
+ ] }) }),
144
+ /* @__PURE__ */ jsx("div", { className: editorArea, children: shellEl && /* @__PURE__ */ jsx(PortalContainerProvider, { value: shellEl, children: /* @__PURE__ */ jsx(DialogEditor, { initialValue: safeInitialState, onEditorReady: handleEditorReady }) }) }),
145
+ /* @__PURE__ */ jsx("div", { className: dialogFooter, children: /* @__PURE__ */ jsxs(ActionBar, { gap: "0.625rem", children: [
146
+ /* @__PURE__ */ jsxs(ActionButton, { size: "lg", variant: "outline", onClick: onDismiss, children: [
147
+ /* @__PURE__ */ jsx(X, { size: 15 }),
148
+ "Cancel"
149
+ ] }),
150
+ /* @__PURE__ */ jsxs(ActionButton, { size: "lg", variant: "accent", onClick: handleDone, children: [
151
+ /* @__PURE__ */ jsx(Save, { size: 15 }),
152
+ "Save"
153
+ ] })
154
+ ] }) })
155
+ ] });
191
156
  }
192
157
  function createContentEditor() {
193
158
  return createEditor({
@@ -278,18 +243,18 @@ const nestedDocNodes = [NestedDocNode];
278
243
  const nestedDocEditNodes = [NestedDocEditNode];
279
244
  export {
280
245
  $createNestedDocEditNode,
281
- r as $createNestedDocNode,
246
+ o as $createNestedDocNode,
282
247
  $isNestedDocEditNode,
283
248
  $isNestedDocNode,
284
249
  INSERT_NESTED_DOC_COMMAND,
285
- u as NESTED_DOC_BLOCK_TRANSFORMER,
250
+ q as NESTED_DOC_BLOCK_TRANSFORMER,
286
251
  NestedDocDialogEditorProvider,
287
252
  NestedDocEditDecorator,
288
253
  NestedDocEditNode,
289
254
  NestedDocNode,
290
255
  NestedDocPlugin,
291
256
  NestedDocRenderer,
292
- v as NestedDocStaticDecorator,
257
+ r as NestedDocStaticDecorator,
293
258
  nestedDocEditNodes,
294
259
  nestedDocNodes,
295
260
  useNestedDocDialogEditor
@@ -1 +1 @@
1
- :root{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}:root.dark{--rc-text: #fafafa;--rc-text-secondary: #a1a1aa;--rc-text-tertiary: #71717a;--rc-text-quaternary: #52525b;--rc-bg: #09090b;--rc-bg-secondary: #18181b;--rc-bg-tertiary: #27272a;--rc-fill: #2a2a2f;--rc-fill-secondary: #222226;--rc-fill-tertiary: #1b1b1f;--rc-fill-quaternary: #131316;--rc-border: #27272a;--rc-accent: #60a5fa;--rc-accent-light: #60a5fa20;--rc-link: #60a5fa;--rc-code-text: #e4e4e7;--rc-code-bg: #27272a;--rc-hr-border: #27272a;--rc-quote-border: #60a5fa;--rc-quote-bg: #1e3a5f;--rc-alert-info: #7db9e5;--rc-alert-warning: #da864a;--rc-alert-tip: #54da48;--rc-alert-caution: #e16973;--rc-alert-important: #9966e0;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.4), 0 4px 6px -4px rgba(0,0,0,.35);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.25), 0 4px 16px rgba(0,0,0,.4);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._1kl9cd60{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._1kl9cd61{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.8;--rc-line-height-tight: 1.4;--rc-font-family: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._1kl9cd62{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #a1a1aa;--rc-quote-bg: #fafafa;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: none;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 2px;--rc-space-sm: 4px;--rc-space-md: 10px;--rc-space-lg: 16px;--rc-space-xl: 20px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 14px;--rc-font-size-small: 12px;--rc-line-height: 1.5;--rc-line-height-tight: 1.3;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 3px;--rc-radius-md: 6px;--rc-radius-lg: 8px}.dark ._1kl9cd60,[data-theme=dark] ._1kl9cd60,.dark._1kl9cd60,[data-theme=dark]._1kl9cd60,.dark ._1kl9cd61,[data-theme=dark] ._1kl9cd61,.dark._1kl9cd61,[data-theme=dark]._1kl9cd61,.dark ._1kl9cd62,[data-theme=dark] ._1kl9cd62,.dark._1kl9cd62,[data-theme=dark]._1kl9cd62{--rc-text: #fafafa;--rc-text-secondary: #a1a1aa;--rc-text-tertiary: #71717a;--rc-text-quaternary: #52525b;--rc-bg: #09090b;--rc-bg-secondary: #18181b;--rc-bg-tertiary: #27272a;--rc-fill: #2a2a2f;--rc-fill-secondary: #222226;--rc-fill-tertiary: #1b1b1f;--rc-fill-quaternary: #131316;--rc-border: #27272a;--rc-accent: #60a5fa;--rc-accent-light: #60a5fa20;--rc-link: #60a5fa;--rc-code-text: #e4e4e7;--rc-code-bg: #27272a;--rc-hr-border: #27272a;--rc-quote-border: #60a5fa;--rc-quote-bg: #1e3a5f;--rc-alert-info: #7db9e5;--rc-alert-warning: #da864a;--rc-alert-tip: #54da48;--rc-alert-caution: #e16973;--rc-alert-important: #9966e0;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.4), 0 4px 6px -4px rgba(0,0,0,.35);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.25), 0 4px 16px rgba(0,0,0,.4)}@keyframes ds1tv41{to{--rc-hl-highlighted: 1}}@keyframes ds1tv42{0%{background-color:#ef44443d}to{background-color:transparent}}.ds1tv40{font-family:var(--rc-font-family);font-size:var(--rc-font-size-base);line-height:var(--rc-line-height);color:var(--rc-text);word-wrap:break-word;overflow-wrap:break-word}.ds1tv40 .rich-paragraph{margin:0 0 1em;line-height:var(--rc-line-height)}.ds1tv40 .rich-text-bold{font-weight:700}.ds1tv40 .rich-text-italic{font-style:italic}.ds1tv40 .rich-text-underline{text-decoration:underline}.ds1tv40 .rich-text-strikethrough{text-decoration:line-through}.ds1tv40 .rich-text-superscript{vertical-align:super;font-size:.8em}.ds1tv40 .rich-text-subscript{vertical-align:sub;font-size:.8em}.ds1tv40 .rich-text-code{font-family:var(--rc-font-mono);font-size:.9em;background-color:var(--rc-code-bg);color:var(--rc-code-text);padding:2px 6px;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border)}.ds1tv40 mark{background:transparent}.ds1tv40 .rich-text-highlight{--rc-hl-lightness: .3;--rc-hl-highlighted: 1;--rc-hl-color: oklch(from var(--rc-accent) l c h / var(--rc-hl-lightness));background:linear-gradient(120deg,var(--rc-hl-color, lightblue) 50%,transparent 50%) 110% 0 / 200% 100% no-repeat;background-position:calc((1 - var(--rc-hl-highlighted)) * 110%) 0;color:var(--rc-text);transition:background-position 1s}[contenteditable=true] .rich-text-highlight{--rc-hl-highlighted: 1;animation:none}[data-theme=dark] .ds1tv40 .rich-text-highlight{--rc-hl-lightness: .35}.ds1tv40 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6){position:relative}.ds1tv40 .rich-heading-anchor{position:absolute;left:-1.25rem;top:0;bottom:0;display:flex;align-items:center;text-decoration:none;color:var(--rc-text-secondary);opacity:0;transition:opacity .15s ease;font-size:.8rem}.ds1tv40 .rich-heading-anchor svg{flex-shrink:0}.ds1tv40 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor{opacity:.5}.ds1tv40 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor:hover{opacity:1}[contenteditable=true] .rich-heading-h1:before,[contenteditable=true] .rich-heading-h2:before,[contenteditable=true] .rich-heading-h3:before,[contenteditable=true] .rich-heading-h4:before,[contenteditable=true] .rich-heading-h5:before,[contenteditable=true] .rich-heading-h6:before{position:absolute;left:-1.5rem;bottom:.5rem;display:flex;font-size:.5rem;font-weight:600;color:var(--rc-text-secondary);opacity:.6;pointer-events:none;font-family:var(--rc-font-mono)}[contenteditable=true] .rich-heading-h1:before{content:"H1"}[contenteditable=true] .rich-heading-h2:before{content:"H2"}[contenteditable=true] .rich-heading-h3:before{content:"H3"}[contenteditable=true] .rich-heading-h4:before{content:"H4"}[contenteditable=true] .rich-heading-h5:before{content:"H5"}[contenteditable=true] .rich-heading-h6:before{content:"H6"}.ds1tv40 .rich-heading-h1{font-size:2em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.5em;margin-bottom:.5em}.ds1tv40 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.4em;margin-bottom:.45em}.ds1tv40 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.3em;margin-bottom:.4em}.ds1tv40 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.2em;margin-bottom:.35em}.ds1tv40 .rich-heading-h5{font-size:1em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.1em;margin-bottom:.3em}.ds1tv40 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1em;margin-bottom:.25em;color:var(--rc-text)}.ds1tv40 .rich-link{color:var(--rc-link);text-decoration:none;transition:color .2s ease}.ds1tv40 .rich-link:hover{text-decoration:underline}.ds1tv40 .rich-link[data-favicon=loaded]:before{content:"";display:inline-block;width:1em;height:1em;margin-right:.2em;vertical-align:-.125em;background-image:var(--rc-link-favicon);background-size:contain;background-repeat:no-repeat;background-position:center;border-radius:2px}.ds1tv40 .rich-link-favicon{display:inline-flex;align-items:center;margin-right:.15em;vertical-align:-.125em}.ds1tv40 .rich-link-favicon img{width:1em;height:1em;border-radius:2px;object-fit:contain}.ds1tv40 .rich-link-favicon svg{width:.9em;height:.9em}.ds1tv40 .rich-list-ol{list-style-type:decimal;padding-left:var(--rc-space-lg);margin-bottom:1em}.ds1tv40 .rich-list-ul{list-style-type:disc;padding-left:var(--rc-space-lg);margin-bottom:1em}.ds1tv40 .rich-list-item{margin-bottom:.25em}.ds1tv40 .rich-list-nested-item{list-style-type:none}.ds1tv40 .rich-list-nested-item .rich-list-ol{list-style-type:lower-alpha}.ds1tv40 .rich-list-nested-item .rich-list-ul{list-style-type:circle}.ds1tv40 .rich-checklist{list-style-type:none;padding-left:0}.ds1tv40 .rich-list-item.rich-list-item-checked,.ds1tv40 .rich-list-item.rich-list-item-unchecked{--rc-cb-size: 1.125rem;position:relative;padding-left:2em;list-style-type:none;outline:none}.ds1tv40 .rich-list-item.rich-list-item-unchecked:before,.ds1tv40 .rich-list-item.rich-list-item-checked:before{content:"";position:absolute;left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);border:2px solid color-mix(in oklab,var(--rc-text-secondary) 60%,transparent);border-radius:var(--rc-radius-sm);box-sizing:border-box;cursor:pointer;vertical-align:middle;color:var(--rc-text);background-color:transparent;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}[contenteditable=true] .ds1tv40 .rich-list-item.rich-list-item-unchecked:hover:before{border-color:color-mix(in oklab,var(--rc-text-secondary) 80%,transparent)}.ds1tv40 .rich-list-item.rich-list-item-unchecked:after,.ds1tv40 .rich-list-item.rich-list-item-checked:after{content:"";position:absolute;left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);background-color:#fff;box-sizing:border-box;display:block;pointer-events:none;transform:rotate(45deg);transform-origin:center;transition:clip-path .25s cubic-bezier(.34,1.56,.64,1),opacity .15s}.ds1tv40 .rich-list-item.rich-list-item-checked:before{background-color:var(--rc-accent);border-color:var(--rc-accent);box-shadow:0 0 0 1px var(--rc-accent)}.ds1tv40 .rich-list-item.rich-list-item-checked:after{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1;transform:rotate(45deg) scale(.7)}.ds1tv40 .rich-list-item-checked{text-decoration:line-through;color:var(--rc-text-secondary)}.ds1tv40 .rich-quote{border-left:4px solid var(--rc-quote-border);background-color:var(--rc-quote-bg);margin:var(--rc-space-md) 0;padding:var(--rc-space-sm) var(--rc-space-md);font-style:italic;color:var(--rc-text-secondary);border-radius:0 var(--rc-radius-sm) var(--rc-radius-sm) 0}.ds1tv40 .rich-quote>.rich-paragraph:first-child{margin-top:0}.ds1tv40 .rich-quote>.rich-paragraph:last-child{margin-bottom:0}.ds1tv40 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}.ds1tv40 .rich-table-scrollable-wrapper{overflow-x:auto}.ds1tv40 .rich-table{width:100%;border-collapse:separate;border-spacing:0;margin:var(--rc-space-lg) 0;font-size:var(--rc-font-size-small);border:1px solid var(--rc-border);border-radius:var(--rc-radius-md);overflow:hidden}.ds1tv40 .rich-table-cell{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:1.25em var(--rc-space-lg);text-align:left;vertical-align:middle;line-height:1.5}.ds1tv40 .rich-table-cell:last-child{border-right:none}.ds1tv40 .rich-table tbody tr:last-child .rich-table-cell{border-bottom:none}.ds1tv40 .rich-table-cell .rich-paragraph{margin:0;padding:0;line-height:inherit}.ds1tv40 .rich-table-cell>:first-child{margin-top:0}.ds1tv40 .rich-table-cell>:last-child{margin-bottom:0}.ds1tv40 .rich-table-cell-header{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:var(--rc-space-md) var(--rc-space-lg);text-align:left;font-weight:600;font-size:.75em;text-transform:uppercase;letter-spacing:.05em;color:var(--rc-text-secondary);background-color:var(--rc-bg-secondary);vertical-align:middle;line-height:1.5;position:sticky;top:0;z-index:1}.ds1tv40 .rich-table-cell-header:last-child{border-right:none}.ds1tv40 .rich-table-cell-header .rich-paragraph{margin:0;padding:0;line-height:inherit}.ds1tv40 .rich-table-cell-header>:first-child{margin-top:0}.ds1tv40 .rich-table-cell-header>:last-child{margin-bottom:0}.ds1tv40 img{max-width:100%;height:auto;border-radius:var(--rc-radius-md)}.ds1tv40 .rich-spoiler{background-color:var(--rc-text);color:transparent;border-radius:var(--rc-radius-sm);padding-inline:4px;cursor:pointer;transition:background-color .3s ease,color .3s ease;user-select:none}[contenteditable=true] .rich-spoiler{background-color:color-mix(in srgb,var(--rc-text) 30%,transparent);color:inherit;user-select:auto;cursor:text}.ds1tv40 .rich-spoiler:hover,.ds1tv40 .rich-spoiler-revealed{background-color:transparent;color:inherit;user-select:auto}.ds1tv40 .rich-ruby{ruby-position:over;ruby-align:center}.ds1tv40 .rich-ruby-rt{font-size:.58em;line-height:1;color:var(--rc-text-secondary);user-select:none}[contenteditable=true] .rich-ruby[data-ruby]{position:relative;display:inline-block;padding-top:.72em;line-height:1.2}[contenteditable=true] .rich-ruby[data-ruby]:before{content:attr(data-ruby);position:absolute;left:0;right:0;top:0;transform:translateY(-.68em);font-size:.58em;line-height:1;text-align:center;color:var(--rc-text-secondary);pointer-events:none;white-space:nowrap}.ds1tv40 .rich-footnote{vertical-align:super;font-size:.8em}.ds1tv40 .rich-footnote-ref{display:inline-flex;align-items:center;justify-content:center;min-width:1.5em;text-decoration:none;color:var(--rc-accent);background-color:var(--rc-accent-light);border-radius:999px;padding:0 .35em;line-height:1.45;font-weight:600;font-size:.82em;transition:filter .15s ease}.ds1tv40 .rich-footnote-ref:hover{filter:brightness(.96)}.ds1tv40 .rich-footnote-highlight{animation:ds1tv42 1.2s ease-out}.ds1tv40 .rich-footnote-ref-wrapper{position:relative;display:inline}.ds1tv40 .rich-footnote-section{margin-top:var(--rc-space-lg)}.ds1tv40 .rich-footnote-section-divider{border:none;border-top:1px solid var(--rc-border);margin:var(--rc-space-lg) 0 var(--rc-space-md)}.ds1tv40 .rich-footnote-section-list{list-style-type:decimal;padding-left:var(--rc-space-lg);font-size:var(--rc-font-size-small);color:var(--rc-text-secondary);line-height:1.6}.ds1tv40 .rich-footnote-section-item{margin-bottom:var(--rc-space-sm);padding-left:var(--rc-space-xs)}.ds1tv40 .rich-footnote-back-ref{display:inline-flex;align-items:center;margin-left:var(--rc-space-xs);color:var(--rc-accent);text-decoration:none;font-size:.85em;transition:opacity .15s ease;font-family:var(--rc-font-mono)}.ds1tv40 .rich-footnote-back-ref:hover{opacity:.7}.ds1tv40 .rich-footnote-section-item-edit{display:flex;align-items:center;gap:var(--rc-space-sm);list-style-type:none}.ds1tv40 .rich-footnote-section-item-num{flex-shrink:0;color:var(--rc-text-secondary);font-size:var(--rc-font-size-small);font-weight:600;min-width:1.5em}.ds1tv40 .rich-footnote-section-item-input{flex:1;border:1px solid var(--rc-border);border-radius:var(--rc-radius-sm);padding:var(--rc-space-xs) var(--rc-space-sm);font-size:var(--rc-font-size-small);color:var(--rc-text);background-color:transparent;outline:none;transition:border-color .15s ease}.ds1tv40 .rich-footnote-section-item-input:focus{border-color:var(--rc-accent)}.ds1tv40 .rich-footnote-section-item-remove{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:none;color:var(--rc-text-secondary);cursor:pointer;border-radius:var(--rc-radius-sm);font-size:14px;transition:color .15s ease,background-color .15s ease}.ds1tv40 .rich-footnote-section-item-remove:hover{color:#ef4444;background-color:#ef44441a}.rich-drag-handle{position:absolute;display:flex;align-items:center;justify-content:center;width:20px;height:20px;cursor:grab;border-radius:var(--rc-radius-sm);color:var(--rc-text-secondary);opacity:.4;transition:opacity .15s ease,background-color .15s ease;z-index:10}.rich-drag-handle:hover{opacity:1;background-color:var(--rc-fill-secondary)}.rich-drag-handle:active{cursor:grabbing}.rich-drop-indicator{position:absolute;height:2px;background-color:var(--rc-accent);border-radius:1px;pointer-events:none;z-index:10}.ds1tv40 .rich-alert{margin:2em 0;padding:0 1em;background-color:transparent;border:none;border-radius:0}.ds1tv40>*:first-child,.ds1tv40 .rich-editor__content>*:first-child{margin-top:0}.ds1tv40>*:last-child,.ds1tv40 .rich-editor__content>*:last-child{margin-bottom:0}@supports (animation-timeline: view()){.ds1tv40 .rich-text-highlight{--rc-hl-highlighted: 0;animation:ds1tv41 steps(1) both;animation-timeline:view();animation-range:entry 100% cover 10%}}._1pke0ca0{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.75;color:var(--rc-text)}._1pke0ca0 .rich-paragraph{margin-top:1.5em;margin-bottom:1.5em}._1pke0ca0 .rich-heading-h1{color:var(--rc-text);font-weight:800;font-size:3em;margin-top:0;margin-bottom:.8333333333333334em;line-height:1}._1pke0ca0 .rich-heading-h2{color:var(--rc-text);font-weight:700;font-size:1.875em;margin-top:1.8666666666666667em;margin-bottom:1.0666666666666667em;line-height:1.3333333}._1pke0ca0 .rich-heading-h3{color:var(--rc-text);font-weight:600;font-size:1.5em;margin-top:1.6666666666666667em;margin-bottom:.6666666666666666em;line-height:1.5}._1pke0ca0 .rich-heading-h4{color:var(--rc-text);font-weight:600;margin-top:2em;margin-bottom:.5em;line-height:1.5625}._1pke0ca0 .rich-heading-h2+*,._1pke0ca0 .rich-heading-h3+*,._1pke0ca0 .rich-heading-h4+*{margin-top:0}._1pke0ca0 .rich-quote{font-weight:500;font-style:italic;color:var(--rc-text);border-left-width:.25rem;border-left-style:solid;border-left-color:var(--rc-quote-border);margin-top:2.5em;margin-bottom:2.5em;padding-left:1.5em;background-color:transparent;border-radius:0;quotes:"“""”""‘""’"}._1pke0ca0 .rich-quote .rich-paragraph:first-of-type:before{content:open-quote}._1pke0ca0 .rich-quote .rich-paragraph:last-of-type:after{content:close-quote}._1pke0ca0 .rich-quote .rich-paragraph:first-child{margin-top:0}._1pke0ca0 .rich-quote .rich-paragraph:last-child{margin-bottom:0}._1pke0ca0 .rich-text-code{color:var(--rc-text);font-weight:600;font-size:.875em;background-color:var(--rc-code-bg);padding:.2em .4em;border-radius:var(--rc-radius-sm);font-family:var(--rc-font-mono)}._1pke0ca0 .rich-text-code:before,._1pke0ca0 .rich-text-code:after{content:"`";color:var(--rc-text-secondary);opacity:.5}._1pke0ca0 .rich-code-block{color:var(--rc-text);background-color:var(--rc-code-bg);border-radius:.375rem;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.75}._1pke0ca0 .rich-code-block pre{padding:1em 1.5em;margin:0}._1pke0ca0 .rich-list-ul,._1pke0ca0 .rich-list-ol{margin-top:1.5em;margin-bottom:1.5em;padding-left:1.75em}._1pke0ca0 .rich-list-item{margin-top:.75em;margin-bottom:.75em;padding-left:.5em}._1pke0ca0 .rich-list-item .rich-paragraph{margin-top:1em;margin-bottom:1em}._1pke0ca0 .rich-list-item>.rich-paragraph:first-child{margin-top:1.5em}._1pke0ca0 .rich-list-item>.rich-paragraph:last-child{margin-bottom:1.5em}._1pke0ca0 .rich-list-ul .rich-list-ul,._1pke0ca0 .rich-list-ul .rich-list-ol,._1pke0ca0 .rich-list-ol .rich-list-ul,._1pke0ca0 .rich-list-ol .rich-list-ol{margin-top:1em;margin-bottom:1em}._1pke0ca0 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.5}._1pke0ca0 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}._1pke0ca0 .rich-image{margin-top:2em;margin-bottom:2em}._1pke0ca0 .rich-image>*{margin-top:0;margin-bottom:0}._1pke0ca0 .rich-image figcaption{color:var(--rc-text-secondary);font-size:.875em;line-height:1.5;margin-top:1em}._1pke0ca0 .rich-hr{border-color:var(--rc-hr-border);border-top-width:1px;width:60px;margin:3.5em auto}._1pke0ca0 .rich-hr+*{margin-top:0}._1pke0ca0 .rich-link{font-weight:500;text-decoration:underline}._1pke0ca0 .rich-banner,._1pke0ca0 .rich-code-snippet,._1pke0ca0 .rich-details{margin:2em 0}._1pke0ca0>*:first-child{margin-top:0}._1pke0ca0>*:last-child{margin-bottom:0}._1iyoz3l0{font-size:var(--rc-font-size-base);line-height:var(--rc-line-height)}._1iyoz3l0 .rich-paragraph{margin-bottom:.6em}._1iyoz3l0 .rich-heading-h1{font-size:1.35em;font-weight:700;margin-top:.8em;margin-bottom:.3em}._1iyoz3l0 .rich-heading-h2{font-size:1.2em;font-weight:700;margin-top:.7em;margin-bottom:.25em}._1iyoz3l0 .rich-heading-h3{font-size:1.1em;font-weight:600;margin-top:.6em;margin-bottom:.2em}._1iyoz3l0 .rich-heading-h4{font-size:1em;font-weight:600;margin-top:.5em;margin-bottom:.15em}._1iyoz3l0 .rich-heading-h5{font-size:.9em;font-weight:600;margin-top:.45em;margin-bottom:.1em}._1iyoz3l0 .rich-heading-h6{font-size:.85em;font-weight:600;margin-top:.4em;margin-bottom:.1em}._1iyoz3l0 .rich-quote{border-left-width:3px;padding:var(--rc-space-sm) var(--rc-space-md);margin:var(--rc-space-sm) 0;font-size:.95em}._1iyoz3l0 .rich-list-ol,._1iyoz3l0 .rich-list-ul{margin-bottom:.6em;padding-left:var(--rc-space-md)}._1iyoz3l0 .rich-list-item{margin-bottom:.1em}._1iyoz3l0 .rich-code-block{margin:var(--rc-space-sm) 0;border-radius:var(--rc-radius-sm);font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-code-block pre{padding:var(--rc-space-sm)}._1iyoz3l0 .line:before{display:none!important}._1iyoz3l0 .rich-table{margin:var(--rc-space-sm) 0;font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-table-cell,._1iyoz3l0 .rich-table-cell-header{padding:var(--rc-space-xs) var(--rc-space-sm)}._1iyoz3l0 .rich-image{margin:var(--rc-space-sm) 0}._1iyoz3l0 .rich-image figcaption{font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}._1iyoz3l0 .rich-alert{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:var(--rc-space-lg);margin:var(--rc-space-sm) 0}._1iyoz3l0 .rich-katex-block{padding:var(--rc-space-sm) 0;margin:var(--rc-space-sm) 0}.g7jfj60{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.8;color:var(--rc-text)}.g7jfj60>.rich-paragraph,.g7jfj60 .rich-editor__content>.rich-paragraph,.g7jfj60 .rich-content__body>.rich-paragraph{margin-top:1.25em;margin-bottom:1.25em;line-height:1.8}.g7jfj60>.rich-paragraph:first-of-type,.g7jfj60 .rich-editor__content>.rich-paragraph:first-of-type,.g7jfj60 .rich-content__body>.rich-paragraph:first-of-type{margin-top:0;margin-bottom:2rem}.g7jfj60>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.g7jfj60 .rich-editor__content>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.g7jfj60 .rich-content__body>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child{margin-inline-start:2rem}.g7jfj60>.rich-paragraph:first-of-type:first-letter,.g7jfj60 .rich-content__body>.rich-paragraph:first-of-type:first-letter{float:left;font-size:2.4em;margin-right:.2em;line-height:1}.g7jfj60 .rich-editor__content>.rich-paragraph:first-of-type:first-letter{font-size:1.5em;font-weight:700;color:var(--rc-accent)}.g7jfj60>.rich-paragraph:last-child,.g7jfj60 .rich-editor__content>.rich-paragraph:last-child,.g7jfj60 .rich-content__body>.rich-paragraph:last-child{margin-bottom:0}.g7jfj60 .rich-text-bold{font-family:var(--rc-font-family);font-weight:600;color:var(--rc-text)}.g7jfj60 .rich-heading-h1{font-size:2.25em;font-weight:800;line-height:1.1111111;margin-top:0;margin-bottom:.8888889em;letter-spacing:-.025em;color:var(--rc-text)}.g7jfj60 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:1.3333333;margin-top:2em;margin-bottom:1em;letter-spacing:-.025em;color:var(--rc-text)}.g7jfj60 .rich-heading-h2+*{margin-top:0}.g7jfj60 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:1.6;margin-top:1.6em;margin-bottom:.6em;letter-spacing:-.025em;color:var(--rc-text)}.g7jfj60 .rich-heading-h3+*{margin-top:0}.g7jfj60 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.g7jfj60 .rich-heading-h4+*{margin-top:0}.g7jfj60 .rich-heading-h5{font-size:1em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.g7jfj60 .rich-heading-h5+*{margin-top:0}.g7jfj60 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text);text-transform:uppercase}.g7jfj60 .rich-heading-h6+*{margin-top:0}.g7jfj60 .rich-quote{font-style:normal;line-height:1.8;color:inherit;border-left:none;background-color:color-mix(in srgb,var(--rc-accent) 10%,transparent);margin-top:1.6em;margin-bottom:1.6em;margin-left:-1rem;margin-right:-1rem;padding:1em 2em;border-radius:0}.g7jfj60 .rich-quote .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.g7jfj60 .rich-link{font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .15s ease}.g7jfj60 .rich-link:hover{text-decoration-thickness:2px}.g7jfj60 .rich-text-code{font-size:.875em;font-family:var(--rc-font-mono);font-weight:500;padding:.2em .4em;border-radius:var(--rc-radius-sm);background-color:var(--rc-code-bg)}.g7jfj60 .rich-list-ol,.g7jfj60 .rich-list-ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.g7jfj60 .rich-list-ol{list-style-type:decimal}.g7jfj60 .rich-list-ul{list-style-type:disc}.g7jfj60 .rich-list-item{margin-top:.5em;margin-bottom:.5em;padding-left:.375em}.g7jfj60 .rich-list-item::marker{color:var(--rc-text-secondary)}.g7jfj60 .rich-code-block{font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:var(--rc-radius-md);overflow-x:auto}.g7jfj60 .rich-code-block pre{padding:.8571429em 1.1428571em;margin:0}.g7jfj60 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.g7jfj60 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.g7jfj60 .rich-table .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.g7jfj60 .rich-image{margin-top:2em;margin-bottom:2em}.g7jfj60 .rich-image img{border-radius:var(--rc-radius-md)}.g7jfj60 .rich-image figcaption{font-size:.875em;line-height:1.4285714;margin-top:.8571429em;color:var(--rc-text-secondary);text-align:center}.g7jfj60 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);opacity:.2;margin-top:.5rem;margin-bottom:.5rem;width:60px;margin-left:auto;margin-right:auto}.g7jfj60 .rich-katex-block{margin-top:1.6em;margin-bottom:1.6em;overflow-x:auto;padding:1em 0}.g7jfj60 .rich-spoiler{border-radius:var(--rc-radius-sm);padding-inline:.25em}.g7jfj60>*:first-child{margin-top:0}.g7jfj60>*:last-child{margin-bottom:0}._1an6v8d0{position:relative;display:block;cursor:pointer;margin:var(--rc-space-md) 0;border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);overflow:clip}._1an6v8d1{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#00000059;color:#fff;opacity:0;pointer-events:none;transition:opacity .2s,background .2s}._1an6v8d0:hover ._1an6v8d1{opacity:1;background:#00000080}.ds1tv40 .rich-nested-doc-content{padding-block:var(--rc-space-md);padding-inline:var(--rc-space-xl);max-height:400px;overflow:clip}._1an6v8d2._1an6v8d2{padding:0;gap:0;width:700px;max-width:90vw;max-height:min(900px,calc(100vh - 1rem));overflow:hidden}._1an6v8d3{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:min(800px,calc(100vh - 1rem));background:var(--rc-bg)}._1an6v8d4{display:grid;gap:0;padding:.75rem 3rem .75rem .875rem;border-bottom:1px solid var(--rc-border);background:linear-gradient(180deg,color-mix(in srgb,var(--rc-text) 3%,transparent),transparent)}._1an6v8d5{display:flex;align-items:center;gap:.75rem}._1an6v8d6{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--rc-radius-sm);background:color-mix(in srgb,var(--rc-accent) 14%,transparent);color:var(--rc-text);flex-shrink:0}._1an6v8d7{min-width:0}._1an6v8d8{margin:0;font-size:1.125rem;font-weight:700;line-height:1.1;color:var(--rc-text)}._1an6v8d9{padding:0 .75rem .5rem;border-bottom:1px solid var(--rc-border);background:var(--rc-bg)}._1an6v8da{margin:0;max-width:none;border-radius:0;position:sticky;top:0}._1an6v8da{border:none;box-shadow:none;background-color:transparent;backdrop-filter:none}._1an6v8da>div{padding-inline:0}._1an6v8db{min-height:0;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--rc-text) 2%,transparent),transparent)}._1an6v8db .rich-editor{display:flex;flex-direction:column;height:100%}._1an6v8db .rich-editor__content-wrapper{max-width:none;overflow-y:auto}._1an6v8db .rich-editor__content{padding-left:1.5rem;padding-right:1.5rem}._1an6v8db .rich-editor__placeholder{left:1.5rem}._1an6v8db .ds1tv40>*:first-child{border-top:none;border-left:none;border-right:none;box-shadow:none;border-radius:0;margin:0;max-width:none;backdrop-filter:none;background-color:transparent}._1an6v8dc{height:100%;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable both-edges}._1an6v8dd{display:flex;min-height:100%;background:var(--rc-bg);overflow:hidden}._1an6v8de{flex:1;min-height:460px;padding:1.25rem 1.5rem 1.75rem;outline:none;overflow:visible}._1an6v8df{display:flex;align-items:center;justify-content:flex-end;gap:1rem;padding:.875rem 1.25rem 1rem;border-top:1px solid var(--rc-border);background:color-mix(in srgb,var(--rc-text) 2%,transparent)}._1an6v8dg{display:flex;align-items:center;gap:.625rem;flex-shrink:0}._1an6v8dh{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;height:36px;padding:0 .875rem;border-radius:var(--rc-radius-sm);border:1px solid transparent;font-size:var(--rc-font-size-xs);font-weight:600;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}._1an6v8di{border-color:var(--rc-border);background:var(--rc-bg);color:var(--rc-text-secondary)}._1an6v8di:hover{background:var(--rc-fill-secondary);color:var(--rc-text)}._1an6v8dj{background:var(--rc-text);color:var(--rc-bg)}._1an6v8dj:hover{background:color-mix(in srgb,var(--rc-text) 86%,transparent)}._1an6v8dk{position:relative;display:block;cursor:pointer;margin:var(--rc-space-md) 0;border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);overflow:clip}._1an6v8dl{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#00000040;color:#fff;opacity:0;pointer-events:none;transition:opacity .2s;z-index:1}._1an6v8dk:hover ._1an6v8dl{opacity:1}._1an6v8dm{position:absolute;bottom:0;left:0;right:0;height:4rem;background:linear-gradient(to bottom,transparent,var(--rc-bg));pointer-events:none}._1an6v8dn._1an6v8dn{display:flex;flex-direction:column;width:700px;max-width:90vw;height:min(800px,calc(100vh - 2rem));max-height:min(800px,calc(100vh - 2rem));overflow:hidden}._1an6v8do{flex:1;min-height:0;margin:-1.5rem;padding:1.5rem;overflow-y:auto;overflow-x:hidden}._1an6v8dp{pointer-events:none}._1an6v8dq{margin:0;color:var(--rc-text-secondary);font-size:var(--rc-font-size-md);opacity:.72}._1an6v8de .rich-paragraph:first-child,._1an6v8dp .rich-paragraph:first-child{margin-top:0}._1an6v8dp .rich-paragraph:last-child{margin-bottom:0}
1
+ :root{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}:root.dark{--rc-text: #fafafa;--rc-text-secondary: #a1a1aa;--rc-text-tertiary: #71717a;--rc-text-quaternary: #52525b;--rc-bg: #09090b;--rc-bg-secondary: #18181b;--rc-bg-tertiary: #27272a;--rc-fill: #2a2a2f;--rc-fill-secondary: #222226;--rc-fill-tertiary: #1b1b1f;--rc-fill-quaternary: #131316;--rc-border: #27272a;--rc-accent: #60a5fa;--rc-accent-light: #60a5fa20;--rc-link: #60a5fa;--rc-code-text: #e4e4e7;--rc-code-bg: #27272a;--rc-hr-border: #27272a;--rc-quote-border: #60a5fa;--rc-quote-bg: #1e3a5f;--rc-alert-info: #7db9e5;--rc-alert-warning: #da864a;--rc-alert-tip: #54da48;--rc-alert-caution: #e16973;--rc-alert-important: #9966e0;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.4), 0 4px 6px -4px rgba(0,0,0,.35);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.25), 0 4px 16px rgba(0,0,0,.4);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._1kl9cd60{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.7;--rc-line-height-tight: 1.4;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._1kl9cd61{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #2563eb;--rc-quote-bg: #eff6ff;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: 700px;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 4px;--rc-space-sm: 8px;--rc-space-md: 16px;--rc-space-lg: 24px;--rc-space-xl: 32px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 16px;--rc-font-size-small: 14px;--rc-line-height: 1.8;--rc-line-height-tight: 1.4;--rc-font-family: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-radius-sm: 4px;--rc-radius-md: 8px;--rc-radius-lg: 12px}._1kl9cd62{--rc-text: #000;--rc-text-secondary: #27272a;--rc-text-tertiary: #71717a;--rc-text-quaternary: #a1a1aa;--rc-bg: #ffffff;--rc-bg-secondary: #fafafa;--rc-bg-tertiary: #f4f4f5;--rc-fill: #e8e8ec;--rc-fill-secondary: #eeeeef;--rc-fill-tertiary: #f4f4f6;--rc-fill-quaternary: #f9f9fa;--rc-border: #f4f4f5;--rc-accent: #2563eb;--rc-accent-light: #2563eb20;--rc-link: #2563eb;--rc-code-text: #3f3f46;--rc-code-bg: #f4f4f5;--rc-hr-border: #e4e4e7;--rc-quote-border: #a1a1aa;--rc-quote-bg: #fafafa;--rc-alert-info: #006bb7;--rc-alert-warning: #cc5500;--rc-alert-tip: #11cc00;--rc-alert-caution: #cc0011;--rc-alert-important: #5500cc;--rc-max-width: none;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -4px rgba(0,0,0,.1);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.08);--rc-space-xs: 2px;--rc-space-sm: 4px;--rc-space-md: 10px;--rc-space-lg: 16px;--rc-space-xl: 20px;--rc-font-family-sans: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-font-family-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Source Han Serif", "source-han-serif-sc", "Songti SC", STSong, "华文宋体", serif;--rc-font-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--rc-font-size-2xs: .625em;--rc-font-size-xs: .75em;--rc-font-size-sm: .8125em;--rc-font-size-md: .875em;--rc-font-size-lg: 1.25em;--rc-font-size-base: 14px;--rc-font-size-small: 12px;--rc-line-height: 1.5;--rc-line-height-tight: 1.3;--rc-font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, "noto sans sc", "hiragino sans gb", -apple-system, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Not Color Emoji;--rc-radius-sm: 3px;--rc-radius-md: 6px;--rc-radius-lg: 8px}.dark ._1kl9cd60,[data-theme=dark] ._1kl9cd60,.dark._1kl9cd60,[data-theme=dark]._1kl9cd60,.dark ._1kl9cd61,[data-theme=dark] ._1kl9cd61,.dark._1kl9cd61,[data-theme=dark]._1kl9cd61,.dark ._1kl9cd62,[data-theme=dark] ._1kl9cd62,.dark._1kl9cd62,[data-theme=dark]._1kl9cd62{--rc-text: #fafafa;--rc-text-secondary: #a1a1aa;--rc-text-tertiary: #71717a;--rc-text-quaternary: #52525b;--rc-bg: #09090b;--rc-bg-secondary: #18181b;--rc-bg-tertiary: #27272a;--rc-fill: #2a2a2f;--rc-fill-secondary: #222226;--rc-fill-tertiary: #1b1b1f;--rc-fill-quaternary: #131316;--rc-border: #27272a;--rc-accent: #60a5fa;--rc-accent-light: #60a5fa20;--rc-link: #60a5fa;--rc-code-text: #e4e4e7;--rc-code-bg: #27272a;--rc-hr-border: #27272a;--rc-quote-border: #60a5fa;--rc-quote-bg: #1e3a5f;--rc-alert-info: #7db9e5;--rc-alert-warning: #da864a;--rc-alert-tip: #54da48;--rc-alert-caution: #e16973;--rc-alert-important: #9966e0;--rc-shadow-top-bar: 0 8px 30px rgba(0, 0, 0, .45), 0 2px 8px rgba(0, 0, 0, .3);--rc-shadow-modal: 0 10px 15px -3px rgba(0,0,0,.4), 0 4px 6px -4px rgba(0,0,0,.35);--rc-shadow-menu: 0 1px 4px rgba(0,0,0,.25), 0 4px 16px rgba(0,0,0,.4)}@keyframes ds1tv41{to{--rc-hl-highlighted: 1}}@keyframes ds1tv42{0%{background-color:#ef44443d}to{background-color:transparent}}.ds1tv40{font-family:var(--rc-font-family);font-size:var(--rc-font-size-base);line-height:var(--rc-line-height);color:var(--rc-text);word-wrap:break-word;overflow-wrap:break-word}.ds1tv40 .rich-paragraph{margin:0 0 1em;line-height:var(--rc-line-height)}.ds1tv40 .rich-text-bold{font-weight:700}.ds1tv40 .rich-text-italic{font-style:italic}.ds1tv40 .rich-text-underline{text-decoration:underline}.ds1tv40 .rich-text-strikethrough{text-decoration:line-through}.ds1tv40 .rich-text-superscript{vertical-align:super;font-size:.8em}.ds1tv40 .rich-text-subscript{vertical-align:sub;font-size:.8em}.ds1tv40 .rich-text-code{font-family:var(--rc-font-mono);font-size:.9em;background-color:var(--rc-code-bg);color:var(--rc-code-text);padding:2px 6px;border-radius:var(--rc-radius-sm);border:1px solid var(--rc-border)}.ds1tv40 mark{background:transparent}.ds1tv40 .rich-text-highlight{--rc-hl-lightness: .3;--rc-hl-highlighted: 1;--rc-hl-color: oklch(from var(--rc-accent) l c h / var(--rc-hl-lightness));background:linear-gradient(120deg,var(--rc-hl-color, lightblue) 50%,transparent 50%) 110% 0 / 200% 100% no-repeat;background-position:calc((1 - var(--rc-hl-highlighted)) * 110%) 0;color:var(--rc-text);transition:background-position 1s}[contenteditable=true] .rich-text-highlight{--rc-hl-highlighted: 1;animation:none}[data-theme=dark] .ds1tv40 .rich-text-highlight{--rc-hl-lightness: .35}.ds1tv40 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6){position:relative}.ds1tv40 .rich-heading-anchor{position:absolute;left:-1.25rem;top:0;bottom:0;display:flex;align-items:center;text-decoration:none;color:var(--rc-text-secondary);opacity:0;transition:opacity .15s ease;font-size:.8rem}.ds1tv40 .rich-heading-anchor svg{flex-shrink:0}.ds1tv40 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor{opacity:.5}.ds1tv40 :is(.rich-heading-h1,.rich-heading-h2,.rich-heading-h3,.rich-heading-h4,.rich-heading-h5,.rich-heading-h6):hover .rich-heading-anchor:hover{opacity:1}[contenteditable=true] .rich-heading-h1:before,[contenteditable=true] .rich-heading-h2:before,[contenteditable=true] .rich-heading-h3:before,[contenteditable=true] .rich-heading-h4:before,[contenteditable=true] .rich-heading-h5:before,[contenteditable=true] .rich-heading-h6:before{position:absolute;left:-1.5rem;bottom:.5rem;display:flex;font-size:.5rem;font-weight:600;color:var(--rc-text-secondary);opacity:.6;pointer-events:none;font-family:var(--rc-font-mono)}[contenteditable=true] .rich-heading-h1:before{content:"H1"}[contenteditable=true] .rich-heading-h2:before{content:"H2"}[contenteditable=true] .rich-heading-h3:before{content:"H3"}[contenteditable=true] .rich-heading-h4:before{content:"H4"}[contenteditable=true] .rich-heading-h5:before{content:"H5"}[contenteditable=true] .rich-heading-h6:before{content:"H6"}.ds1tv40 .rich-heading-h1{font-size:2em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.5em;margin-bottom:.5em}.ds1tv40 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:var(--rc-line-height-tight);margin-top:1.4em;margin-bottom:.45em}.ds1tv40 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.3em;margin-bottom:.4em}.ds1tv40 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.2em;margin-bottom:.35em}.ds1tv40 .rich-heading-h5{font-size:1em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1.1em;margin-bottom:.3em}.ds1tv40 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:var(--rc-line-height-tight);margin-top:1em;margin-bottom:.25em;color:var(--rc-text)}.ds1tv40 .rich-link{color:var(--rc-link);text-decoration:none;transition:color .2s ease}.ds1tv40 .rich-link:hover{text-decoration:underline}.ds1tv40 .rich-link[data-favicon=loaded]:before{content:"";display:inline-block;width:1em;height:1em;margin-right:.2em;vertical-align:-.125em;background-image:var(--rc-link-favicon);background-size:contain;background-repeat:no-repeat;background-position:center;border-radius:2px}.ds1tv40 .rich-link-favicon{display:inline-flex;align-items:center;margin-right:.15em;vertical-align:-.125em}.ds1tv40 .rich-link-favicon img{width:1em;height:1em;border-radius:2px;object-fit:contain}.ds1tv40 .rich-link-favicon svg{width:.9em;height:.9em}.ds1tv40 .rich-list-ol{list-style-type:decimal;padding-left:var(--rc-space-lg);margin-bottom:1em}.ds1tv40 .rich-list-ul{list-style-type:disc;padding-left:var(--rc-space-lg);margin-bottom:1em}.ds1tv40 .rich-list-item{margin-bottom:.25em}.ds1tv40 .rich-list-nested-item{list-style-type:none}.ds1tv40 .rich-list-nested-item .rich-list-ol{list-style-type:lower-alpha}.ds1tv40 .rich-list-nested-item .rich-list-ul{list-style-type:circle}.ds1tv40 .rich-checklist{list-style-type:none;padding-left:0}.ds1tv40 .rich-list-item.rich-list-item-checked,.ds1tv40 .rich-list-item.rich-list-item-unchecked{--rc-cb-size: 1.125rem;position:relative;padding-left:2em;list-style-type:none;outline:none}.ds1tv40 .rich-list-item.rich-list-item-unchecked:before,.ds1tv40 .rich-list-item.rich-list-item-checked:before{content:"";position:absolute;left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);border:2px solid color-mix(in oklab,var(--rc-text-secondary) 60%,transparent);border-radius:var(--rc-radius-sm);box-sizing:border-box;cursor:pointer;vertical-align:middle;color:var(--rc-text);background-color:transparent;transition:background-color .2s ease,border-color .2s ease,box-shadow .2s ease}[contenteditable=true] .ds1tv40 .rich-list-item.rich-list-item-unchecked:hover:before{border-color:color-mix(in oklab,var(--rc-text-secondary) 80%,transparent)}.ds1tv40 .rich-list-item.rich-list-item-unchecked:after,.ds1tv40 .rich-list-item.rich-list-item-checked:after{content:"";position:absolute;left:0;top:calc((1lh - var(--rc-cb-size)) / 2);width:var(--rc-cb-size);height:var(--rc-cb-size);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);background-color:#fff;box-sizing:border-box;display:block;pointer-events:none;transform:rotate(45deg);transform-origin:center;transition:clip-path .25s cubic-bezier(.34,1.56,.64,1),opacity .15s}.ds1tv40 .rich-list-item.rich-list-item-checked:before{background-color:var(--rc-accent);border-color:var(--rc-accent);box-shadow:0 0 0 1px var(--rc-accent)}.ds1tv40 .rich-list-item.rich-list-item-checked:after{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1;transform:rotate(45deg) scale(.7)}.ds1tv40 .rich-list-item-checked{text-decoration:line-through;color:var(--rc-text-secondary)}.ds1tv40 .rich-quote{position:relative;background-color:var(--rc-quote-bg);margin:var(--rc-space-md) 0;padding:var(--rc-space-sm) var(--rc-space-md);padding-left:calc(var(--rc-space-md) + 4px);font-style:italic;color:var(--rc-text-secondary);border-radius:0 var(--rc-radius-sm) var(--rc-radius-sm) 0}.ds1tv40 .rich-quote:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:var(--rc-radius-sm);background-color:var(--rc-quote-border)}.ds1tv40 .rich-quote>.rich-paragraph:first-child{margin-top:0}.ds1tv40 .rich-quote>.rich-paragraph:last-child{margin-bottom:0}.ds1tv40 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}.ds1tv40 .rich-table-scrollable-wrapper{overflow-x:auto}.ds1tv40 .rich-table{width:100%;border-collapse:separate;border-spacing:0;margin:var(--rc-space-lg) 0;font-size:var(--rc-font-size-small);border:1px solid var(--rc-border);border-radius:var(--rc-radius-md);overflow:hidden}.ds1tv40 .rich-table-cell{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:1.25em var(--rc-space-lg);text-align:left;vertical-align:middle;line-height:1.5}.ds1tv40 .rich-table-cell:last-child{border-right:none}.ds1tv40 .rich-table tbody tr:last-child .rich-table-cell{border-bottom:none}.ds1tv40 .rich-table-cell .rich-paragraph{margin:0;padding:0;line-height:inherit}.ds1tv40 .rich-table-cell>:first-child{margin-top:0}.ds1tv40 .rich-table-cell>:last-child{margin-bottom:0}.ds1tv40 .rich-table-cell-header{border:none;border-bottom:1px solid var(--rc-border);border-right:1px solid var(--rc-border);padding:var(--rc-space-md) var(--rc-space-lg);text-align:left;font-weight:600;font-size:.75em;text-transform:uppercase;letter-spacing:.05em;color:var(--rc-text-secondary);background-color:var(--rc-bg-secondary);vertical-align:middle;line-height:1.5;position:sticky;top:0;z-index:1}.ds1tv40 .rich-table-cell-header:last-child{border-right:none}.ds1tv40 .rich-table-cell-header .rich-paragraph{margin:0;padding:0;line-height:inherit}.ds1tv40 .rich-table-cell-header>:first-child{margin-top:0}.ds1tv40 .rich-table-cell-header>:last-child{margin-bottom:0}.ds1tv40 img{max-width:100%;height:auto;border-radius:var(--rc-radius-md)}.ds1tv40 .rich-spoiler{background-color:var(--rc-text);color:transparent;border-radius:var(--rc-radius-sm);padding-inline:4px;cursor:pointer;transition:background-color .3s ease,color .3s ease;user-select:none}[contenteditable=true] .rich-spoiler{background-color:color-mix(in srgb,var(--rc-text) 30%,transparent);color:inherit;user-select:auto;cursor:text}.ds1tv40 .rich-spoiler:hover,.ds1tv40 .rich-spoiler-revealed{background-color:transparent;color:inherit;user-select:auto}.ds1tv40 .rich-ruby{ruby-position:over;ruby-align:center}.ds1tv40 .rich-ruby-rt{font-size:.58em;line-height:1;color:var(--rc-text-secondary);user-select:none}[contenteditable=true] .rich-ruby[data-ruby]{position:relative;display:inline-block;padding-top:.72em;line-height:1.2}[contenteditable=true] .rich-ruby[data-ruby]:before{content:attr(data-ruby);position:absolute;left:0;right:0;top:0;transform:translateY(-.68em);font-size:.58em;line-height:1;text-align:center;color:var(--rc-text-secondary);pointer-events:none;white-space:nowrap}.ds1tv40 .rich-footnote{vertical-align:super;font-size:.8em}.ds1tv40 .rich-footnote-ref{display:inline-flex;align-items:center;justify-content:center;min-width:1.5em;text-decoration:none;color:var(--rc-accent);background-color:var(--rc-accent-light);border-radius:999px;padding:0 .35em;line-height:1.45;font-weight:600;font-size:.82em;transition:filter .15s ease}.ds1tv40 .rich-footnote-ref:hover{filter:brightness(.96)}.ds1tv40 .rich-footnote-highlight{animation:ds1tv42 1.2s ease-out}.ds1tv40 .rich-footnote-ref-wrapper{position:relative;display:inline}.ds1tv40 .rich-footnote-section{margin-top:var(--rc-space-lg)}.ds1tv40 .rich-footnote-section-divider{border:none;border-top:1px solid var(--rc-border);margin:var(--rc-space-lg) 0 var(--rc-space-md)}.ds1tv40 .rich-footnote-section-list{list-style-type:decimal;padding-left:var(--rc-space-lg);font-size:var(--rc-font-size-small);color:var(--rc-text-secondary);line-height:1.6}.ds1tv40 .rich-footnote-section-item{margin-bottom:var(--rc-space-sm);padding-left:var(--rc-space-xs)}.ds1tv40 .rich-footnote-back-ref{display:inline-flex;align-items:center;margin-left:var(--rc-space-xs);color:var(--rc-accent);text-decoration:none;font-size:.85em;transition:opacity .15s ease;font-family:var(--rc-font-mono)}.ds1tv40 .rich-footnote-back-ref:hover{opacity:.7}.ds1tv40 .rich-footnote-section-item-edit{display:flex;align-items:center;gap:var(--rc-space-sm);list-style-type:none}.ds1tv40 .rich-footnote-section-item-num{flex-shrink:0;color:var(--rc-text-secondary);font-size:var(--rc-font-size-small);font-weight:600;min-width:1.5em}.ds1tv40 .rich-footnote-section-item-input{flex:1;border:1px solid var(--rc-border);border-radius:var(--rc-radius-sm);padding:var(--rc-space-xs) var(--rc-space-sm);font-size:var(--rc-font-size-small);color:var(--rc-text);background-color:transparent;outline:none;transition:border-color .15s ease}.ds1tv40 .rich-footnote-section-item-input:focus{border-color:var(--rc-accent)}.ds1tv40 .rich-footnote-section-item-remove{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:none;color:var(--rc-text-secondary);cursor:pointer;border-radius:var(--rc-radius-sm);font-size:14px;transition:color .15s ease,background-color .15s ease}.ds1tv40 .rich-footnote-section-item-remove:hover{color:#ef4444;background-color:#ef44441a}.rich-drag-handle{position:absolute;display:flex;align-items:center;justify-content:center;width:20px;height:20px;cursor:grab;border-radius:var(--rc-radius-sm);color:var(--rc-text-secondary);opacity:.4;transition:opacity .15s ease,background-color .15s ease;z-index:10}.rich-drag-handle:hover{opacity:1;background-color:var(--rc-fill-secondary)}.rich-drag-handle:active{cursor:grabbing}.rich-drop-indicator{position:absolute;height:2px;background-color:var(--rc-accent);border-radius:1px;pointer-events:none;z-index:10}.ds1tv40 .rich-alert{margin:2em 0;padding:0 1em;background-color:transparent;border:none;border-radius:0}.ds1tv40>*:first-child,.ds1tv40 .rich-editor__content>*:first-child{margin-top:0}.ds1tv40>*:last-child,.ds1tv40 .rich-editor__content>*:last-child{margin-bottom:0}@supports (animation-timeline: view()){.ds1tv40 .rich-text-highlight{--rc-hl-highlighted: 0;animation:ds1tv41 steps(1) both;animation-timeline:view();animation-range:entry 100% cover 10%}}._1pke0ca0{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.75;color:var(--rc-text)}._1pke0ca0 .rich-paragraph{margin-top:1.5em;margin-bottom:1.5em}._1pke0ca0 .rich-heading-h1{color:var(--rc-text);font-weight:800;font-size:3em;margin-top:0;margin-bottom:.8333333333333334em;line-height:1}._1pke0ca0 .rich-heading-h2{color:var(--rc-text);font-weight:700;font-size:1.875em;margin-top:1.8666666666666667em;margin-bottom:1.0666666666666667em;line-height:1.3333333}._1pke0ca0 .rich-heading-h3{color:var(--rc-text);font-weight:600;font-size:1.5em;margin-top:1.6666666666666667em;margin-bottom:.6666666666666666em;line-height:1.5}._1pke0ca0 .rich-heading-h4{color:var(--rc-text);font-weight:600;margin-top:2em;margin-bottom:.5em;line-height:1.5625}._1pke0ca0 .rich-heading-h2+*,._1pke0ca0 .rich-heading-h3+*,._1pke0ca0 .rich-heading-h4+*{margin-top:0}._1pke0ca0 .rich-quote{font-weight:500;font-style:italic;color:var(--rc-text);margin-top:2.5em;margin-bottom:2.5em;padding-left:calc(1.5em + 4px);background-color:transparent;border-radius:0;quotes:"“""”""‘""’"}._1pke0ca0 .rich-quote .rich-paragraph:first-of-type:before{content:open-quote}._1pke0ca0 .rich-quote .rich-paragraph:last-of-type:after{content:close-quote}._1pke0ca0 .rich-quote .rich-paragraph:first-child{margin-top:0}._1pke0ca0 .rich-quote .rich-paragraph:last-child{margin-bottom:0}._1pke0ca0 .rich-text-code{color:var(--rc-text);font-weight:600;font-size:.875em;background-color:var(--rc-code-bg);padding:.2em .4em;border-radius:var(--rc-radius-sm);font-family:var(--rc-font-mono)}._1pke0ca0 .rich-text-code:before,._1pke0ca0 .rich-text-code:after{content:"`";color:var(--rc-text-secondary);opacity:.5}._1pke0ca0 .rich-code-block{color:var(--rc-text);background-color:var(--rc-code-bg);border-radius:.375rem;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.75}._1pke0ca0 .rich-code-block pre{padding:1em 1.5em;margin:0}._1pke0ca0 .rich-list-ul,._1pke0ca0 .rich-list-ol{margin-top:1.5em;margin-bottom:1.5em;padding-left:1.75em}._1pke0ca0 .rich-list-item{margin-top:.75em;margin-bottom:.75em;padding-left:.5em}._1pke0ca0 .rich-list-item .rich-paragraph{margin-top:1em;margin-bottom:1em}._1pke0ca0 .rich-list-item>.rich-paragraph:first-child{margin-top:1.5em}._1pke0ca0 .rich-list-item>.rich-paragraph:last-child{margin-bottom:1.5em}._1pke0ca0 .rich-list-ul .rich-list-ul,._1pke0ca0 .rich-list-ul .rich-list-ol,._1pke0ca0 .rich-list-ol .rich-list-ul,._1pke0ca0 .rich-list-ol .rich-list-ol{margin-top:1em;margin-bottom:1em}._1pke0ca0 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.5}._1pke0ca0 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}._1pke0ca0 .rich-image{margin-top:2em;margin-bottom:2em}._1pke0ca0 .rich-image>*{margin-top:0;margin-bottom:0}._1pke0ca0 .rich-image figcaption{color:var(--rc-text-secondary);font-size:.875em;line-height:1.5;margin-top:1em}._1pke0ca0 .rich-hr{border-color:var(--rc-hr-border);border-top-width:1px;width:60px;margin:3.5em auto}._1pke0ca0 .rich-hr+*{margin-top:0}._1pke0ca0 .rich-link{font-weight:500;text-decoration:underline}._1pke0ca0 .rich-banner,._1pke0ca0 .rich-code-snippet,._1pke0ca0 .rich-details{margin:2em 0}._1pke0ca0>*:first-child{margin-top:0}._1pke0ca0>*:last-child{margin-bottom:0}._1iyoz3l0{font-size:var(--rc-font-size-base);line-height:var(--rc-line-height)}._1iyoz3l0 .rich-paragraph{margin-bottom:.6em}._1iyoz3l0 .rich-heading-h1{font-size:1.35em;font-weight:700;margin-top:.8em;margin-bottom:.3em}._1iyoz3l0 .rich-heading-h2{font-size:1.2em;font-weight:700;margin-top:.7em;margin-bottom:.25em}._1iyoz3l0 .rich-heading-h3{font-size:1.1em;font-weight:600;margin-top:.6em;margin-bottom:.2em}._1iyoz3l0 .rich-heading-h4{font-size:1em;font-weight:600;margin-top:.5em;margin-bottom:.15em}._1iyoz3l0 .rich-heading-h5{font-size:.9em;font-weight:600;margin-top:.45em;margin-bottom:.1em}._1iyoz3l0 .rich-heading-h6{font-size:.85em;font-weight:600;margin-top:.4em;margin-bottom:.1em}._1iyoz3l0 .rich-quote{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:calc(var(--rc-space-md) + 3px);margin:var(--rc-space-sm) 0;font-size:.95em}._1iyoz3l0 .rich-quote:before{width:3px}._1iyoz3l0 .rich-list-ol,._1iyoz3l0 .rich-list-ul{margin-bottom:.6em;padding-left:var(--rc-space-md)}._1iyoz3l0 .rich-list-item{margin-bottom:.1em}._1iyoz3l0 .rich-code-block{margin:var(--rc-space-sm) 0;border-radius:var(--rc-radius-sm);font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-code-block pre{padding:var(--rc-space-sm)}._1iyoz3l0 .line:before{display:none!important}._1iyoz3l0 .rich-table{margin:var(--rc-space-sm) 0;font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-table-cell,._1iyoz3l0 .rich-table-cell-header{padding:var(--rc-space-xs) var(--rc-space-sm)}._1iyoz3l0 .rich-image{margin:var(--rc-space-sm) 0}._1iyoz3l0 .rich-image figcaption{font-size:var(--rc-font-size-small)}._1iyoz3l0 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);margin:var(--rc-space-lg) auto;width:60px}._1iyoz3l0 .rich-alert{padding:var(--rc-space-sm) var(--rc-space-md);padding-left:var(--rc-space-lg);margin:var(--rc-space-sm) 0}._1iyoz3l0 .rich-katex-block{padding:var(--rc-space-sm) 0;margin:var(--rc-space-sm) 0}.g7jfj60{max-width:var(--rc-max-width);font-size:var(--rc-font-size-base);line-height:1.8;color:var(--rc-text)}.g7jfj60>.rich-paragraph,.g7jfj60 .rich-editor__content>.rich-paragraph,.g7jfj60 .rich-content__body>.rich-paragraph{margin-top:1.25em;margin-bottom:1.25em;line-height:1.8}.g7jfj60>.rich-paragraph:first-of-type,.g7jfj60 .rich-editor__content>.rich-paragraph:first-of-type,.g7jfj60 .rich-content__body>.rich-paragraph:first-of-type{margin-top:0;margin-bottom:2rem}.g7jfj60>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.g7jfj60 .rich-editor__content>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child,.g7jfj60 .rich-content__body>.rich-paragraph:not(:first-of-type)>[data-lexical-text]:first-child{margin-inline-start:2rem}.g7jfj60>.rich-paragraph:first-of-type:first-letter,.g7jfj60 .rich-content__body>.rich-paragraph:first-of-type:first-letter{float:left;font-size:2.4em;margin-right:.2em;line-height:1}.g7jfj60 .rich-editor__content>.rich-paragraph:first-of-type:first-letter{font-size:1.5em;font-weight:700;color:var(--rc-accent)}.g7jfj60>.rich-paragraph:last-child,.g7jfj60 .rich-editor__content>.rich-paragraph:last-child,.g7jfj60 .rich-content__body>.rich-paragraph:last-child{margin-bottom:0}.g7jfj60 .rich-text-bold{font-family:var(--rc-font-family);font-weight:600;color:var(--rc-text)}.g7jfj60 .rich-heading-h1{font-size:2.25em;font-weight:800;line-height:1.1111111;margin-top:0;margin-bottom:.8888889em;letter-spacing:-.025em;color:var(--rc-text)}.g7jfj60 .rich-heading-h2{font-size:1.5em;font-weight:700;line-height:1.3333333;margin-top:2em;margin-bottom:1em;letter-spacing:-.025em;color:var(--rc-text)}.g7jfj60 .rich-heading-h2+*{margin-top:0}.g7jfj60 .rich-heading-h3{font-size:1.25em;font-weight:600;line-height:1.6;margin-top:1.6em;margin-bottom:.6em;letter-spacing:-.025em;color:var(--rc-text)}.g7jfj60 .rich-heading-h3+*{margin-top:0}.g7jfj60 .rich-heading-h4{font-size:1.125em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.g7jfj60 .rich-heading-h4+*{margin-top:0}.g7jfj60 .rich-heading-h5{font-size:1em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text)}.g7jfj60 .rich-heading-h5+*{margin-top:0}.g7jfj60 .rich-heading-h6{font-size:.875em;font-weight:600;line-height:1.5;margin-top:1.5em;margin-bottom:.5em;color:var(--rc-text);text-transform:uppercase}.g7jfj60 .rich-heading-h6+*{margin-top:0}.g7jfj60 .rich-quote{font-style:normal;line-height:1.8;color:inherit;background-color:color-mix(in srgb,var(--rc-accent) 10%,transparent);margin-top:1.6em;margin-bottom:1.6em;margin-left:-1rem;margin-right:-1rem;padding:1em 2em;border-radius:0}.g7jfj60 .rich-quote:before{display:none}.g7jfj60 .rich-quote .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.g7jfj60 .rich-link{font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;transition:color .15s ease}.g7jfj60 .rich-link:hover{text-decoration-thickness:2px}.g7jfj60 .rich-text-code{font-size:.875em;font-family:var(--rc-font-mono);font-weight:500;padding:.2em .4em;border-radius:var(--rc-radius-sm);background-color:var(--rc-code-bg)}.g7jfj60 .rich-list-ol,.g7jfj60 .rich-list-ul{margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.g7jfj60 .rich-list-ol{list-style-type:decimal}.g7jfj60 .rich-list-ul{list-style-type:disc}.g7jfj60 .rich-list-item{margin-top:.5em;margin-bottom:.5em;padding-left:.375em}.g7jfj60 .rich-list-item::marker{color:var(--rc-text-secondary)}.g7jfj60 .rich-code-block{font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:var(--rc-radius-md);overflow-x:auto}.g7jfj60 .rich-code-block pre{padding:.8571429em 1.1428571em;margin:0}.g7jfj60 .rich-table{margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.g7jfj60 .rich-table .rich-paragraph{margin:0;padding:0;line-height:inherit}.g7jfj60 .rich-table .rich-paragraph:first-child:first-letter{float:none;font-size:inherit;margin-right:0}.g7jfj60 .rich-image{margin-top:2em;margin-bottom:2em}.g7jfj60 .rich-image img{border-radius:var(--rc-radius-md)}.g7jfj60 .rich-image figcaption{font-size:.875em;line-height:1.4285714;margin-top:.8571429em;color:var(--rc-text-secondary);text-align:center}.g7jfj60 .rich-hr{border:none;border-top:1px solid var(--rc-hr-border);opacity:.2;margin-top:.5rem;margin-bottom:.5rem;width:60px;margin-left:auto;margin-right:auto}.g7jfj60 .rich-katex-block{margin-top:1.6em;margin-bottom:1.6em;overflow-x:auto;padding:1em 0}.g7jfj60 .rich-spoiler{border-radius:var(--rc-radius-sm);padding-inline:.25em}.g7jfj60>*:first-child{margin-top:0}.g7jfj60>*:last-child{margin-bottom:0}._1an6v8d0{position:relative;display:block;cursor:pointer;margin:var(--rc-space-md) 0;border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);overflow:clip}._1an6v8d1{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#00000059;color:#fff;opacity:0;pointer-events:none;transition:opacity .2s,background .2s}._1an6v8d0:hover ._1an6v8d1{opacity:1;background:#00000080}.ds1tv40 .rich-nested-doc-content{padding-block:var(--rc-space-md);padding-inline:var(--rc-space-xl);max-height:400px;overflow:clip}._1an6v8d2._1an6v8d2{padding:0;gap:0;width:700px;max-width:90vw;max-height:min(900px,calc(100vh - 1rem));overflow:hidden}._1an6v8d3{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:min(800px,calc(100vh - 1rem));background:var(--rc-bg)}._1an6v8d4{display:grid;gap:0;padding:.75rem 3rem .75rem .875rem;border-bottom:1px solid var(--rc-border);background:linear-gradient(180deg,color-mix(in srgb,var(--rc-text) 3%,transparent),transparent)}._1an6v8d5{display:flex;align-items:center;gap:.75rem}._1an6v8d6{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--rc-radius-sm);background:color-mix(in srgb,var(--rc-accent) 14%,transparent);color:var(--rc-text);flex-shrink:0}._1an6v8d7{min-width:0}._1an6v8d8{margin:0;font-size:1.125rem;font-weight:700;line-height:1.1;color:var(--rc-text)}._1an6v8d9{padding:0 .75rem .5rem;border-bottom:1px solid var(--rc-border);background:var(--rc-bg)}._1an6v8da{margin:0;max-width:none;border-radius:0;position:sticky;top:0}._1an6v8da{border:none;box-shadow:none;background-color:transparent;backdrop-filter:none}._1an6v8da>div{padding-inline:0}._1an6v8db{min-height:0;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--rc-text) 2%,transparent),transparent)}._1an6v8db .rich-editor{display:flex;flex-direction:column;height:100%}._1an6v8db .rich-editor__content-wrapper{max-width:none;overflow-y:auto}._1an6v8db .rich-editor__content{padding-left:1.5rem;padding-right:1.5rem}._1an6v8db .rich-editor__placeholder{left:1.5rem}._1an6v8db .ds1tv40>*:first-child{border-top:none;border-left:none;border-right:none;box-shadow:none;border-radius:0;margin:0;max-width:none;backdrop-filter:none;background-color:transparent}._1an6v8dc{height:100%;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable both-edges}._1an6v8dd{display:flex;min-height:100%;background:var(--rc-bg);overflow:hidden}._1an6v8de{flex:1;min-height:460px;padding:1.25rem 1.5rem 1.75rem;outline:none;overflow:visible}._1an6v8df{display:flex;align-items:center;justify-content:flex-end;gap:1rem;padding:.875rem 1.25rem 1rem;border-top:1px solid var(--rc-border);background:color-mix(in srgb,var(--rc-text) 2%,transparent)}._1an6v8dg{position:relative;display:block;cursor:pointer;margin:var(--rc-space-md) 0;border-radius:var(--rc-radius-md);border:1px solid var(--rc-border);overflow:clip}._1an6v8dh{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#00000040;color:#fff;opacity:0;pointer-events:none;transition:opacity .2s;z-index:1}._1an6v8dg:hover ._1an6v8dh{opacity:1}._1an6v8di{position:absolute;bottom:0;left:0;right:0;height:4rem;background:linear-gradient(to bottom,transparent,var(--rc-bg));pointer-events:none}._1an6v8dj._1an6v8dj{display:flex;flex-direction:column;width:700px;max-width:90vw;height:min(800px,calc(100vh - 2rem));max-height:min(800px,calc(100vh - 2rem));overflow:hidden}._1an6v8dk{flex:1;min-height:0;margin:-1.5rem;padding:1.5rem;overflow-y:auto;overflow-x:hidden}._1an6v8dl{pointer-events:none}._1an6v8dm{margin:0;color:var(--rc-text-secondary);font-size:var(--rc-font-size-md);opacity:.72}._1an6v8de .rich-paragraph:first-child,._1an6v8dl .rich-paragraph:first-child{margin-top:0}._1an6v8dl .rich-paragraph:last-child{margin-bottom:0}
package/dist/static.mjs CHANGED
@@ -1,12 +1,12 @@
1
- import { q as NestedDocNode } from "./transformer-D5KOI4CL.js";
2
- import { r, $, u, N, v } from "./transformer-D5KOI4CL.js";
1
+ import { n as NestedDocNode } from "./transformer-DDYim0ph.js";
2
+ import { o, $, q, N, r } from "./transformer-DDYim0ph.js";
3
3
  const nestedDocNodes = [NestedDocNode];
4
4
  export {
5
- r as $createNestedDocNode,
5
+ o as $createNestedDocNode,
6
6
  $ as $isNestedDocNode,
7
- u as NESTED_DOC_BLOCK_TRANSFORMER,
7
+ q as NESTED_DOC_BLOCK_TRANSFORMER,
8
8
  NestedDocNode,
9
9
  N as NestedDocRenderer,
10
- v as NestedDocStaticDecorator,
10
+ r as NestedDocStaticDecorator,
11
11
  nestedDocNodes
12
12
  };
@@ -14,9 +14,6 @@ export declare const editorScrollContainer: string;
14
14
  export declare const editorCard: string;
15
15
  export declare const editorEditable: string;
16
16
  export declare const dialogFooter: string;
17
- export declare const dialogActions: string;
18
- export declare const secondaryButton: string;
19
- export declare const primaryButton: string;
20
17
  export declare const staticOverlayRoot: string;
21
18
  export declare const staticOverlay: string;
22
19
  export declare const staticGradientMask: string;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.css.d.ts","sourceRoot":"","sources":["../src/styles.css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,QAQ1B,CAAA;AAEF,eAAO,MAAM,WAAW,QAiBtB,CAAA;AASF,eAAO,MAAM,WAAW,QAAY,CAAA;AAWpC,eAAO,MAAM,WAAW,QAKtB,CAAA;AAEF,eAAO,MAAM,YAAY,QAMvB,CAAA;AAEF,eAAO,MAAM,gBAAgB,QAI3B,CAAA;AAEF,eAAO,MAAM,gBAAgB,QAU3B,CAAA;AAEF,eAAO,MAAM,gBAAgB,QAE3B,CAAA;AAEF,eAAO,MAAM,WAAW,QAMtB,CAAA;AAEF,eAAO,MAAM,oBAAoB,QAI/B,CAAA;AAEF,eAAO,MAAM,aAAa,QAMxB,CAAA;AAaF,eAAO,MAAM,UAAU,QAKrB,CAAA;AAkCF,eAAO,MAAM,qBAAqB,QAKhC,CAAA;AAEF,eAAO,MAAM,UAAU,QAKrB,CAAA;AAEF,eAAO,MAAM,cAAc,QAMzB,CAAA;AAEF,eAAO,MAAM,YAAY,QAQvB,CAAA;AAEF,eAAO,MAAM,aAAa,QAKxB,CAAA;AAkBF,eAAO,MAAM,eAAe,QAa1B,CAAA;AAEF,eAAO,MAAM,aAAa,QAWxB,CAAA;AAEF,eAAO,MAAM,iBAAiB,QAQ5B,CAAA;AAEF,eAAO,MAAM,aAAa,QAiBxB,CAAA;AAEF,eAAO,MAAM,kBAAkB,QAQ7B,CAAA;AAEF,eAAO,MAAM,iBAAiB,QAAY,CAAA;AAY1C,eAAO,MAAM,gBAAgB,QAO3B,CAAA;AAEF,eAAO,MAAM,cAAc,QAEzB,CAAA;AAEF,eAAO,MAAM,YAAY,QAKvB,CAAA"}
1
+ {"version":3,"file":"styles.css.d.ts","sourceRoot":"","sources":["../src/styles.css.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,QAQ1B,CAAA;AAEF,eAAO,MAAM,WAAW,QAiBtB,CAAA;AASF,eAAO,MAAM,WAAW,QAAY,CAAA;AAWpC,eAAO,MAAM,WAAW,QAKtB,CAAA;AAEF,eAAO,MAAM,YAAY,QAMvB,CAAA;AAEF,eAAO,MAAM,gBAAgB,QAI3B,CAAA;AAEF,eAAO,MAAM,gBAAgB,QAU3B,CAAA;AAEF,eAAO,MAAM,gBAAgB,QAE3B,CAAA;AAEF,eAAO,MAAM,WAAW,QAMtB,CAAA;AAEF,eAAO,MAAM,oBAAoB,QAI/B,CAAA;AAEF,eAAO,MAAM,aAAa,QAMxB,CAAA;AAaF,eAAO,MAAM,UAAU,QAKrB,CAAA;AAkCF,eAAO,MAAM,qBAAqB,QAKhC,CAAA;AAEF,eAAO,MAAM,UAAU,QAKrB,CAAA;AAEF,eAAO,MAAM,cAAc,QAMzB,CAAA;AAEF,eAAO,MAAM,YAAY,QAQvB,CAAA;AAEF,eAAO,MAAM,iBAAiB,QAQ5B,CAAA;AAEF,eAAO,MAAM,aAAa,QAiBxB,CAAA;AAEF,eAAO,MAAM,kBAAkB,QAQ7B,CAAA;AAEF,eAAO,MAAM,iBAAiB,QAAY,CAAA;AAY1C,eAAO,MAAM,gBAAgB,QAO3B,CAAA;AAEF,eAAO,MAAM,cAAc,QAEzB,CAAA;AAEF,eAAO,MAAM,YAAY,QAKvB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { extractTextContent as extractTextContent$1 } from "@haklex/rich-editor";
4
+ import { extractTextContent as extractTextContent$1 } from "@haklex/rich-editor/commands";
5
5
  import { useVariant, useColorScheme, useRendererConfig, extractTextContent } from "@haklex/rich-editor/static";
6
6
  import { DecoratorNode } from "lexical";
7
7
  import { useMemo, useCallback, createElement } from "react";
@@ -20,29 +20,18 @@ var dialogHeaderText = "_1an6v8d7";
20
20
  var dialogTitle = "_1an6v8d8";
21
21
  var editorArea = "_1an6v8db";
22
22
  var dialogFooter = "_1an6v8df";
23
- var dialogActions = "_1an6v8dg";
24
- var secondaryButton = "_1an6v8di _1an6v8dh";
25
- var primaryButton = "_1an6v8dj _1an6v8dh";
26
- var staticOverlayRoot = "_1an6v8dk";
27
- var staticOverlay = "_1an6v8dl";
28
- var staticGradientMask = "_1an6v8dm";
29
- var staticDialogPopup = "_1an6v8dn";
30
- var staticDialogBody = "_1an6v8do";
31
- var previewSurface = "_1an6v8dp";
32
- var previewEmpty = "_1an6v8dq";
23
+ var staticOverlayRoot = "_1an6v8dg";
24
+ var staticOverlay = "_1an6v8dh";
25
+ var staticGradientMask = "_1an6v8di";
26
+ var staticDialogPopup = "_1an6v8dj";
27
+ var staticDialogBody = "_1an6v8dk";
28
+ var previewSurface = "_1an6v8dl";
29
+ var previewEmpty = "_1an6v8dm";
33
30
  function NestedDocRenderer({ value }) {
34
31
  const variant = useVariant();
35
32
  const theme = useColorScheme();
36
33
  const rendererConfig = useRendererConfig();
37
- return /* @__PURE__ */ jsx(
38
- RichRenderer,
39
- {
40
- value,
41
- variant,
42
- theme,
43
- rendererConfig
44
- }
45
- );
34
+ return /* @__PURE__ */ jsx(RichRenderer, { rendererConfig, theme, value, variant });
46
35
  }
47
36
  function truncateEditorState(state, maxNodes) {
48
37
  const root = state.root;
@@ -68,9 +57,7 @@ function hasRenderableEditorState(state) {
68
57
  }) ?? false;
69
58
  }
70
59
  const PREVIEW_NODE_LIMIT = 6;
71
- function NestedDocStaticDecorator({
72
- contentState
73
- }) {
60
+ function NestedDocStaticDecorator({ contentState }) {
74
61
  const colorScheme = useColorScheme();
75
62
  const { className: portalClassName } = usePortalTheme();
76
63
  const children = contentState.root?.children ?? [];
@@ -99,9 +86,9 @@ function NestedDocStaticDecorator({
99
86
  "div",
100
87
  {
101
88
  className: staticOverlayRoot,
102
- onClick: handleOpen,
103
89
  role: "button",
104
90
  tabIndex: 0,
91
+ onClick: handleOpen,
105
92
  onKeyDown: (e) => {
106
93
  if (e.key === "Enter" || e.key === " ") {
107
94
  e.preventDefault();
@@ -110,8 +97,8 @@ function NestedDocStaticDecorator({
110
97
  },
111
98
  children: [
112
99
  /* @__PURE__ */ jsx("div", { className: "rich-nested-doc-content", children: /* @__PURE__ */ jsx("div", { className: previewSurface, children: /* @__PURE__ */ jsx(NestedDocRenderer, { value: previewState }) }) }),
113
- needsTruncation && /* @__PURE__ */ jsx("div", { className: staticGradientMask, "aria-hidden": true }),
114
- /* @__PURE__ */ jsx("div", { className: staticOverlay, "aria-hidden": true, children: /* @__PURE__ */ jsx(Maximize2, { size: 24 }) })
100
+ needsTruncation && /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: staticGradientMask }),
101
+ /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: staticOverlay, children: /* @__PURE__ */ jsx(Maximize2, { size: 24 }) })
115
102
  ]
116
103
  }
117
104
  );
@@ -201,6 +188,7 @@ const NESTED_DOC_BLOCK_TRANSFORMER = {
201
188
  ${text}
202
189
  </nested-doc>`;
203
190
  },
191
+ // eslint-disable-next-line regexp/no-useless-assertions -- intentionally never-matching regex for export-only transformer
204
192
  regExp: /a^/,
205
193
  replace: () => {
206
194
  },
@@ -222,13 +210,10 @@ export {
222
210
  dialogTitle as k,
223
211
  editorArea as l,
224
212
  dialogFooter as m,
225
- dialogActions as n,
226
- primaryButton as o,
213
+ NestedDocNode as n,
214
+ $createNestedDocNode as o,
227
215
  previewSurface as p,
228
- NestedDocNode as q,
229
- $createNestedDocNode as r,
230
- secondaryButton as s,
231
- truncateEditorState as t,
232
- NESTED_DOC_BLOCK_TRANSFORMER as u,
233
- NestedDocStaticDecorator as v
216
+ NESTED_DOC_BLOCK_TRANSFORMER as q,
217
+ NestedDocStaticDecorator as r,
218
+ truncateEditorState as t
234
219
  };
@@ -1 +1 @@
1
- {"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAK3D,eAAO,MAAM,4BAA4B,EAAE,kBAU1C,CAAA"}
1
+ {"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAK5D,eAAO,MAAM,4BAA4B,EAAE,kBAW1C,CAAC"}
package/package.json CHANGED
@@ -1,9 +1,14 @@
1
1
  {
2
2
  "name": "@haklex/rich-ext-nested-doc",
3
- "type": "module",
4
- "version": "0.0.65",
3
+ "version": "0.0.67",
5
4
  "description": "Nested document extension for haklex rich editor",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/Innei/haklex.git",
8
+ "directory": "packages/rich-ext-nested-doc"
9
+ },
6
10
  "license": "MIT",
11
+ "type": "module",
7
12
  "exports": {
8
13
  ".": {
9
14
  "import": "./dist/index.mjs",
@@ -19,18 +24,11 @@
19
24
  "files": [
20
25
  "dist"
21
26
  ],
22
- "peerDependencies": {
23
- "@lexical/react": "^0.41.0",
24
- "lexical": "^0.41.0",
25
- "lucide-react": "^0.574.0",
26
- "react": ">=19",
27
- "react-dom": ">=19"
28
- },
29
27
  "dependencies": {
30
- "@haklex/rich-editor-ui": "0.0.65",
31
- "@haklex/rich-editor": "0.0.65",
32
- "@haklex/rich-static-renderer": "0.0.65",
33
- "@haklex/rich-style-token": "0.0.65"
28
+ "@haklex/rich-editor": "0.0.67",
29
+ "@haklex/rich-editor-ui": "0.0.67",
30
+ "@haklex/rich-style-token": "0.0.67",
31
+ "@haklex/rich-static-renderer": "0.0.67"
34
32
  },
35
33
  "devDependencies": {
36
34
  "@lexical/react": "^0.41.0",
@@ -46,6 +44,13 @@
46
44
  "vite": "^7.3.1",
47
45
  "vite-plugin-dts": "^4.5.4"
48
46
  },
47
+ "peerDependencies": {
48
+ "@lexical/react": "^0.41.0",
49
+ "lexical": "^0.41.0",
50
+ "lucide-react": "^0.574.0",
51
+ "react": ">=19",
52
+ "react-dom": ">=19"
53
+ },
49
54
  "publishConfig": {
50
55
  "access": "public"
51
56
  },