commspliant-html-editor 0.0.10 → 0.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/README.md +148 -15
  2. package/dist/commspliant-html-editor.css +1 -1
  3. package/dist/components/Editor.d.ts +1 -1
  4. package/dist/components/Editor.d.ts.map +1 -1
  5. package/dist/components/EditorChrome.d.ts +193 -0
  6. package/dist/components/EditorChrome.d.ts.map +1 -0
  7. package/dist/components/EditorShellContext.d.ts +13 -0
  8. package/dist/components/EditorShellContext.d.ts.map +1 -0
  9. package/dist/components/EditorWorkspaceFrame.d.ts +13 -0
  10. package/dist/components/EditorWorkspaceFrame.d.ts.map +1 -0
  11. package/dist/components/EditorWorkspaceHost.d.ts +109 -0
  12. package/dist/components/EditorWorkspaceHost.d.ts.map +1 -0
  13. package/dist/components/HtmlPageTabs.d.ts +8 -0
  14. package/dist/components/HtmlPageTabs.d.ts.map +1 -0
  15. package/dist/components/MultiPageVisualSurface.d.ts +22 -1
  16. package/dist/components/MultiPageVisualSurface.d.ts.map +1 -1
  17. package/dist/components/RulerVisualFrame.d.ts +42 -0
  18. package/dist/components/RulerVisualFrame.d.ts.map +1 -0
  19. package/dist/components/VisualSurface.d.ts +21 -1
  20. package/dist/components/VisualSurface.d.ts.map +1 -1
  21. package/dist/components/editorDocumentBridgeTypes.d.ts +11 -0
  22. package/dist/components/editorDocumentBridgeTypes.d.ts.map +1 -0
  23. package/dist/components/rulerDocumentHandlers.d.ts +14 -0
  24. package/dist/components/rulerDocumentHandlers.d.ts.map +1 -0
  25. package/dist/components/useMultiPageRulerMetrics.d.ts +10 -0
  26. package/dist/components/useMultiPageRulerMetrics.d.ts.map +1 -0
  27. package/dist/components/usePageRulerMetrics.d.ts +8 -0
  28. package/dist/components/usePageRulerMetrics.d.ts.map +1 -0
  29. package/dist/core/commandTypes.d.ts +24 -6
  30. package/dist/core/commandTypes.d.ts.map +1 -1
  31. package/dist/core/commands.d.ts.map +1 -1
  32. package/dist/core/documentEquality.d.ts +6 -0
  33. package/dist/core/documentEquality.d.ts.map +1 -0
  34. package/dist/core/documentStyles.d.ts +6 -0
  35. package/dist/core/documentStyles.d.ts.map +1 -1
  36. package/dist/core/fontFamily.d.ts +6 -1
  37. package/dist/core/fontFamily.d.ts.map +1 -1
  38. package/dist/core/image.d.ts +8 -2
  39. package/dist/core/image.d.ts.map +1 -1
  40. package/dist/core/imageRegistry.d.ts +20 -0
  41. package/dist/core/imageRegistry.d.ts.map +1 -0
  42. package/dist/core/imageWebp.d.ts +6 -0
  43. package/dist/core/imageWebp.d.ts.map +1 -0
  44. package/dist/core/multiPage.d.ts +12 -0
  45. package/dist/core/multiPage.d.ts.map +1 -1
  46. package/dist/core/page.d.ts +14 -2
  47. package/dist/core/page.d.ts.map +1 -1
  48. package/dist/core/pageAtRule.d.ts.map +1 -1
  49. package/dist/core/pageBackgroundImage.d.ts +9 -0
  50. package/dist/core/pageBackgroundImage.d.ts.map +1 -1
  51. package/dist/core/pageBreak.d.ts +1 -0
  52. package/dist/core/pageBreak.d.ts.map +1 -1
  53. package/dist/core/pageCanvasLayout.d.ts +21 -1
  54. package/dist/core/pageCanvasLayout.d.ts.map +1 -1
  55. package/dist/core/pageGeometry.d.ts +18 -0
  56. package/dist/core/pageGeometry.d.ts.map +1 -0
  57. package/dist/core/pagePrintBleed.d.ts +7 -0
  58. package/dist/core/pagePrintBleed.d.ts.map +1 -0
  59. package/dist/core/pageProperties.d.ts.map +1 -1
  60. package/dist/core/pageRowHeight.d.ts +16 -0
  61. package/dist/core/pageRowHeight.d.ts.map +1 -0
  62. package/dist/core/pageZoom.d.ts +5 -0
  63. package/dist/core/pageZoom.d.ts.map +1 -1
  64. package/dist/core/paragraphBackgroundImage.d.ts +4 -0
  65. package/dist/core/paragraphBackgroundImage.d.ts.map +1 -0
  66. package/dist/core/paragraphIndent.d.ts +19 -0
  67. package/dist/core/paragraphIndent.d.ts.map +1 -0
  68. package/dist/core/printLayout.d.ts +3 -0
  69. package/dist/core/printLayout.d.ts.map +1 -0
  70. package/dist/core/rulerUnits.d.ts +35 -0
  71. package/dist/core/rulerUnits.d.ts.map +1 -0
  72. package/dist/core/visualBodySync.d.ts +13 -0
  73. package/dist/core/visualBodySync.d.ts.map +1 -0
  74. package/dist/hooks/useDialogFocusTrap.d.ts +11 -0
  75. package/dist/hooks/useDialogFocusTrap.d.ts.map +1 -0
  76. package/dist/hooks/useEditorDialogState.d.ts +197 -0
  77. package/dist/hooks/useEditorDialogState.d.ts.map +1 -0
  78. package/dist/hooks/usePageStore.d.ts +32 -0
  79. package/dist/hooks/usePageStore.d.ts.map +1 -0
  80. package/dist/hooks/useViewportAnchoredPosition.d.ts +24 -0
  81. package/dist/hooks/useViewportAnchoredPosition.d.ts.map +1 -0
  82. package/dist/hooks/useVirtualPageRange.d.ts +30 -0
  83. package/dist/hooks/useVirtualPageRange.d.ts.map +1 -0
  84. package/dist/hooks/useVisualPageBodies.d.ts +3 -0
  85. package/dist/hooks/useVisualPageBodies.d.ts.map +1 -0
  86. package/dist/i18n/en.d.ts.map +1 -1
  87. package/dist/i18n/es.d.ts.map +1 -1
  88. package/dist/i18n/types.d.ts +144 -0
  89. package/dist/i18n/types.d.ts.map +1 -1
  90. package/dist/icons/HelpIcon.d.ts +3 -0
  91. package/dist/icons/HelpIcon.d.ts.map +1 -0
  92. package/dist/icons/RulerIcon.d.ts +3 -0
  93. package/dist/icons/RulerIcon.d.ts.map +1 -0
  94. package/dist/icons/index.d.ts +2 -0
  95. package/dist/icons/index.d.ts.map +1 -1
  96. package/dist/index.cjs +233 -8
  97. package/dist/index.js +17161 -12732
  98. package/dist/modules/contextMenu/ContextMenu.d.ts +2 -1
  99. package/dist/modules/contextMenu/ContextMenu.d.ts.map +1 -1
  100. package/dist/modules/file/commands.d.ts.map +1 -1
  101. package/dist/modules/file/fileDialogs.d.ts.map +1 -1
  102. package/dist/modules/file/printHtml.d.ts +1 -0
  103. package/dist/modules/file/printHtml.d.ts.map +1 -1
  104. package/dist/modules/format/ColorField.d.ts.map +1 -1
  105. package/dist/modules/format/ColorSelect.d.ts.map +1 -1
  106. package/dist/modules/format/CustomCssDialog.d.ts.map +1 -1
  107. package/dist/modules/format/CustomParagraphStyleDialog.d.ts.map +1 -1
  108. package/dist/modules/format/FontFamilySelect.d.ts.map +1 -1
  109. package/dist/modules/format/FontPropertiesDialog.d.ts.map +1 -1
  110. package/dist/modules/format/FontSizeCombobox.d.ts.map +1 -1
  111. package/dist/modules/format/PagePropertiesDialog.d.ts +4 -2
  112. package/dist/modules/format/PagePropertiesDialog.d.ts.map +1 -1
  113. package/dist/modules/format/ParagraphPropertiesDialog.d.ts +11 -2
  114. package/dist/modules/format/ParagraphPropertiesDialog.d.ts.map +1 -1
  115. package/dist/modules/format/ParagraphStyleSelect.d.ts.map +1 -1
  116. package/dist/modules/format/paragraphDialog.d.ts.map +1 -1
  117. package/dist/modules/help/AboutDialog.d.ts +6 -0
  118. package/dist/modules/help/AboutDialog.d.ts.map +1 -0
  119. package/dist/modules/help/HelpDialog.d.ts +9 -0
  120. package/dist/modules/help/HelpDialog.d.ts.map +1 -0
  121. package/dist/modules/help/articles.d.ts +16 -0
  122. package/dist/modules/help/articles.d.ts.map +1 -0
  123. package/dist/modules/help/catalog.d.ts +3 -0
  124. package/dist/modules/help/catalog.d.ts.map +1 -0
  125. package/dist/modules/help/commands.d.ts +3 -0
  126. package/dist/modules/help/commands.d.ts.map +1 -0
  127. package/dist/modules/help/index.d.ts +5 -0
  128. package/dist/modules/help/index.d.ts.map +1 -0
  129. package/dist/modules/help/search.d.ts +10 -0
  130. package/dist/modules/help/search.d.ts.map +1 -0
  131. package/dist/modules/help/version.d.ts +3 -0
  132. package/dist/modules/help/version.d.ts.map +1 -0
  133. package/dist/modules/history/history.d.ts +4 -0
  134. package/dist/modules/history/history.d.ts.map +1 -1
  135. package/dist/modules/history/index.d.ts +4 -2
  136. package/dist/modules/history/index.d.ts.map +1 -1
  137. package/dist/modules/history/multiPageHistory.d.ts +38 -0
  138. package/dist/modules/history/multiPageHistory.d.ts.map +1 -0
  139. package/dist/modules/insert/AudioDialog.d.ts.map +1 -1
  140. package/dist/modules/insert/BookmarkDialog.d.ts.map +1 -1
  141. package/dist/modules/insert/ImageDialog.d.ts.map +1 -1
  142. package/dist/modules/insert/ImagePropertiesDialog.d.ts.map +1 -1
  143. package/dist/modules/insert/ImageSizeField.d.ts.map +1 -1
  144. package/dist/modules/insert/LinkDialog.d.ts.map +1 -1
  145. package/dist/modules/insert/YoutubeDialog.d.ts.map +1 -1
  146. package/dist/modules/insert/catalog.d.ts.map +1 -1
  147. package/dist/modules/insert/commands.d.ts +2 -2
  148. package/dist/modules/insert/commands.d.ts.map +1 -1
  149. package/dist/modules/ruler/HorizontalRuler.d.ts +27 -0
  150. package/dist/modules/ruler/HorizontalRuler.d.ts.map +1 -0
  151. package/dist/modules/ruler/IndentArrowIcon.d.ts +14 -0
  152. package/dist/modules/ruler/IndentArrowIcon.d.ts.map +1 -0
  153. package/dist/modules/ruler/VerticalRuler.d.ts +20 -0
  154. package/dist/modules/ruler/VerticalRuler.d.ts.map +1 -0
  155. package/dist/modules/ruler/index.d.ts +5 -0
  156. package/dist/modules/ruler/index.d.ts.map +1 -0
  157. package/dist/modules/ruler/rulerTypes.d.ts +26 -0
  158. package/dist/modules/ruler/rulerTypes.d.ts.map +1 -0
  159. package/dist/modules/ruler/useRulerPointerDrag.d.ts +17 -0
  160. package/dist/modules/ruler/useRulerPointerDrag.d.ts.map +1 -0
  161. package/dist/modules/table/CellPropertiesDialog.d.ts.map +1 -1
  162. package/dist/modules/table/RowPropertiesDialog.d.ts.map +1 -1
  163. package/dist/modules/table/TableDialog.d.ts.map +1 -1
  164. package/dist/modules/table/TablePropertiesDialog.d.ts.map +1 -1
  165. package/dist/modules/view/DocumentPreviewDialog.d.ts +1 -0
  166. package/dist/modules/view/DocumentPreviewDialog.d.ts.map +1 -1
  167. package/dist/modules/view/catalog.d.ts.map +1 -1
  168. package/dist/modules/view/commands.d.ts +2 -2
  169. package/dist/modules/view/commands.d.ts.map +1 -1
  170. package/dist/test/commandContext.d.ts +3 -0
  171. package/dist/test/commandContext.d.ts.map +1 -0
  172. package/dist/toolbar/CustomizeToolbarDialog.d.ts.map +1 -1
  173. package/dist/toolbar/EditorToolbar.d.ts +3 -1
  174. package/dist/toolbar/EditorToolbar.d.ts.map +1 -1
  175. package/dist/toolbar/IconNav.d.ts.map +1 -1
  176. package/dist/toolbar/MenuBar.d.ts.map +1 -1
  177. package/dist/toolbar/ToolbarQuerySubscription.d.ts +7 -0
  178. package/dist/toolbar/ToolbarQuerySubscription.d.ts.map +1 -0
  179. package/dist/toolbar/defaultCatalog.d.ts.map +1 -1
  180. package/dist/toolbar/defaultLayout.d.ts.map +1 -1
  181. package/dist/toolbar/multiPageChrome.d.ts +0 -2
  182. package/dist/toolbar/multiPageChrome.d.ts.map +1 -1
  183. package/dist/toolbar/toolbarQueryRevisions.d.ts +10 -0
  184. package/dist/toolbar/toolbarQueryRevisions.d.ts.map +1 -0
  185. package/dist/toolbar/toolbarShellProps.d.ts +17 -0
  186. package/dist/toolbar/toolbarShellProps.d.ts.map +1 -0
  187. package/dist/types.d.ts +15 -0
  188. package/dist/types.d.ts.map +1 -1
  189. package/package.json +1 -1
package/README.md CHANGED
@@ -4,9 +4,109 @@
4
4
 
5
5
  **Try it out here:** [https://htmleditor.commspliant.com/](https://htmleditor.commspliant.com/)
6
6
 
7
+ **Documentation:** [developer guides](https://github.com/commspliant/html-editor/tree/main/docs)
8
+
7
9
  [![WYSIWYG editor screenshot](screenshot.png)](https://htmleditor.commspliant.com/)
8
10
 
9
- Reusable React + TypeScript editor with two base modes: **Visual** (`contenteditable`) and **HTML** (plain-text source). Downstream apps import the package; they do not copy source.
11
+ ## What problem does this solve?
12
+
13
+ If you are searching for a **free React WYSIWYG editor**, a **React HTML editor** on npm, or a **react-quill alternative**, you usually need more than bold and italic. You need to ship a formatted content field, CMS block, email template editor, or internal documentation tool — and store **real HTML** in your database.
14
+
15
+ Common pain points:
16
+
17
+ - **GPL licensing** — [TinyMCE](https://www.tiny.cloud/docs/tinymce/latest/license-key/) and [CKEditor 5](https://ckeditor.com/docs/ckeditor5/latest/getting-started/licensing/license-and-legal.html) offer free tiers under **GPL 2+**. Closed-source commercial apps often need a paid license or must comply with copyleft. An **MIT license** avoids that friction.
18
+ - **Weeks of UI work** — [Tiptap](https://tiptap.dev/open-source-to-cloud), [Lexical](https://lexical.dev/docs/packages/lexical), and [Slate](https://docs.slatejs.org/) are **headless frameworks**. You build the toolbar, menus, and dialogs yourself.
19
+ - **react-quill fragility** — the original React wrapper is unmaintained; Next.js SSR issues are common; Quill’s primary model is **Delta**, not HTML.
20
+ - **HTML portability** — many editors store JSON internally. Getting **clean HTML output** with **inline styles** often means extra plugins and wiring.
21
+ - **Security** — rich text is an XSS surface. Sanitization is usually your job on headless stacks.
22
+ - **Paywalled extras** — real-time collaboration, AI, Word import, and PowerPaste live on [paid Tiptap Platform](https://tiptap.dev/feature-comparison), [CKEditor commercial](https://ckeditor.com/wysiwyg-editor-open-source/), or [TinyMCE premium](https://www.tiny.cloud/docs/tinymce/latest/bundling-plugins/) plans.
23
+ - **Heavy documents** — **embedded base64 images** inflate React state, undo history, and autosave payloads; long **multi-page** documents slow the DOM if every page mounts at once.
24
+
25
+ **commspliant-html-editor** is a **drop-in React + TypeScript editor** with **Visual** (`contenteditable`) and **HTML source** modes, **MIT-licensed**, self-hosted, and without a cloud subscription for core editing — including optimizations for **large embedded images** and **many pages**.
26
+
27
+ ## What makes this editor different?
28
+
29
+ Unlike headless frameworks, this is a **complete product editor** — menus, icon toolbar, dialogs, fullscreen, preview, and in-editor Help (F1) — that you embed with one component.
30
+
31
+ - **MIT license** — use in proprietary SaaS without GPL copyleft (unlike free TinyMCE/CKEditor cores).
32
+ - **HTML-native** — `value` / `onChange` work on HTML strings; formatting serializes as **inline `style` attributes**, not editor CSS classes.
33
+ - **Visual ↔ HTML** — toggle source mode without extra plugins.
34
+ - **Built-in sanitization** — `sanitizeHtml` strips `<script>` tags and `javascript:` URLs on load and write.
35
+ - **Print-aware editing** — optional `@page` preview, ruler, margins, page breaks, and **multi-page** surfaces (`enableMultiPages`).
36
+ - **Optional comments** — thread metadata separate from document HTML (`enableComments`); not a paid cloud collab platform.
37
+ - **Host hooks** — custom actions, media pickers, toolbar layout, and chrome allowlists without forking internals.
38
+
39
+ ### Built for heavy documents
40
+
41
+ Documents with pasted screenshots, charts, or long print layouts need more than a short blog field:
42
+
43
+ - **`optimizeEmbeddedImages`** — externalizes `data:image/...` base64 into a registry while editing so undo, in-memory HTML, and `onPagesChange` stay lean. Save, print, preview, and `onChange` still receive **full data URLs**.
44
+ - **`enableMultiPages`** — **virtualized** page scrolling mounts only nearby pages (not the full stack). **Per-page undo/redo** avoids replaying the entire document on every keystroke. Bounded undo history caps memory growth on long sessions.
45
+
46
+ ## Why choose commspliant-html-editor?
47
+
48
+ - **MIT** — commercial-friendly licensing for closed-source apps.
49
+ - **`npm install` + `<Editor />` + CSS** — full chrome included; not a headless build-your-own-UI project.
50
+ - **HTML in, clean inline-style HTML out** — store HTML in MongoDB, Postgres, or any backend.
51
+ - **Visual and HTML source** in one component.
52
+ - **Sanitization, print layout, multi-page editing, and comments** without a vendor cloud plan.
53
+ - **Optimized for large embedded images and many-page documents** — image registry, virtualized pages, bounded undo.
54
+ - **Localised chrome** (`en` / `es`) and searchable in-editor Help.
55
+
56
+ ## What we don't claim
57
+
58
+ To set expectations before the comparison below:
59
+
60
+ - **Not production-stable yet** — this package is **beta**; APIs and behaviour may change.
61
+ - **Not React 19–tested** — peer dependencies are **React ^18** only until documented otherwise.
62
+ - **Not real-time collaboration** — no multi-user cursors, shared sessions, or cloud document sync. Optional `enableComments` is **local thread metadata**, not [Tiptap Platform](https://tiptap.dev/open-source-to-cloud) or CKEditor premium collab.
63
+ - **Not AI-assisted writing** — no built-in AI commands, suggestions, or tone tools.
64
+ - **Not Word / PDF import or export** — no PowerPaste-style Office cleanup or document conversion pipelines.
65
+ - **Not the largest plugin ecosystem** — no spell-check or 37-language chrome; library chrome is **`en` / `es`** today.
66
+ - **Not a headless document framework** — if you need a custom ProseMirror/Lexical node model from scratch, Tiptap, Lexical, or Slate may fit better.
67
+ - **Not benchmark-winning on every workload** — image registry and virtualized multi-page mode target **heavy embedded images** and **many pages**; we do not claim to outperform Lexical or Tiptap on every large single-page scenario without measurements.
68
+ - **Not a full HTML sanitizer** — built-in `sanitizeHtml` is a **minimal XSS guard**; it is not DOMPurify. Untrusted content still needs host-side validation.
69
+ - **Not “competitors aren’t free”** — TinyMCE and CKEditor **do** have free GPL tiers; we claim **MIT fits proprietary apps more easily**, not that others cost money to download.
70
+ - **Not Froala-style commercial polish** — we are an MIT library, not a paid drop-in with enterprise SLAs.
71
+
72
+ If you need any of the above, a paid editor or a headless framework plus custom work may be the better fit.
73
+
74
+ ## How it compares (free tiers only)
75
+
76
+ Each column below describes that product’s **free or open-source tier**. Paid commercial plans exist for TinyMCE, CKEditor, Tiptap Platform, and Froala.
77
+
78
+ | Capability | commspliant-html-editor | TinyMCE **free core** (GPLv2+) | CKEditor 5 **free** (GPL self-hosted) | Tiptap **OSS** (MIT) | Lexical (MIT) | Quill (BSD-3) |
79
+ | --- | --- | --- | --- | --- | --- | --- |
80
+ | Permissive license for closed-source apps | ✓ MIT | ✗ GPL copyleft | ✗ GPL copyleft (+ “Powered by CKEditor” logo) | ✓ | ✓ | ✓ |
81
+ | Complete drop-in UI (menus, toolbar, dialogs) | ✓ | ✓ | ✓ | ✗ build UI | ✗ build UI | ~ Snow theme; React wrapper separate |
82
+ | Visual + HTML source in one component | ✓ | ✓ (`code` plugin) | ✓ | via extensions | build yourself | limited |
83
+ | HTML string as primary save format | ✓ | ✓ | ✓ | JSON-first; HTML via extensions | JSON-first; `@lexical/html` | Delta-first |
84
+ | Inline-style HTML serialization (no editor classes) | ✓ by design | varies / content CSS | varies | DIY | DIY | DIY |
85
+ | Built-in XSS sanitization hook | ✓ `sanitizeHtml` | partial / DIY | partial / DIY | DIY | DIY | DIY |
86
+ | No cloud subscription for core editing | ✓ | ✓ self-host GPL | ✓ self-host GPL | ✓ OSS | ✓ | ✓ |
87
+ | Multi-page document editing | ✓ `enableMultiPages` | ✗ (page break only) | page break (GPL feature) | build yourself | build yourself | ✗ |
88
+ | Virtualized scrolling for many pages | ✓ built-in | ✗ | ✗ | build yourself | build yourself | ✗ |
89
+ | Large base64 image optimization (lean undo/state) | ✓ `optimizeEmbeddedImages` | DIY / inflates history | DIY | DIY | DIY | DIY |
90
+ | Print layout preview (`@page`, ruler) | ✓ | page break plugin only | page break | build yourself | build yourself | ✗ |
91
+ | Real-time collaboration | ✗ | ✗ (Premium) | ✗ (Premium) | ✗ ([Platform](https://tiptap.dev/feature-comparison) paid) | Yjs DIY | community modules |
92
+ | Word / PDF import-export | ✗ | ✗ Premium | ✗ Premium | ✗ Platform / paid extensions | ✗ | ✗ |
93
+ | AI writing assistance | ✗ | ✗ Premium | ✗ Premium | ✗ Platform | ✗ | ✗ |
94
+ | Mature plugin ecosystem / i18n | ✗ (beta, en/es) | ✓ (37+ langs) | ✓ (many langs) | ✓ extensions | growing | moderate |
95
+
96
+ **Legend:** **✓** = available in that free tier as described · **✗** = not in free tier or requires substantial custom build · **~** = partial / depends on community wrapper
97
+
98
+ **License notes (free tier shown above):**
99
+
100
+ - **TinyMCE** — free **GPLv2+ core**; [Premium plugins](https://www.tiny.cloud/docs/tinymce/latest/bundling-plugins/) and commercial license for proprietary use.
101
+ - **CKEditor 5** — free **GPL self-hosted**; [commercial plans](https://ckeditor.com/docs/ckeditor5/latest/getting-started/licensing/license-and-legal.html) for non-GPL use and premium features.
102
+ - **Tiptap** — **MIT editor OSS** is free; [Tiptap Platform](https://tiptap.dev/open-source-to-cloud) (collab, cloud comments, AI) is paid.
103
+ - **Lexical** — **MIT**, always free; no vendor cloud.
104
+ - **Quill** — **BSD-3** core free; no official maintained React component ([Quill React playground](https://quilljs.com/playground/react) shows DIY integration).
105
+ - **Froala** — not in the table: no free production license ([license requires purchase](https://github.com/froala/wysiwyg-editor/blob/master/License.txt)); trial/dev only.
106
+
107
+ > **About this comparison:** The table reflects **free and open-source tiers only** — TinyMCE and CKEditor **GPL cores**, Tiptap **MIT editor**, Lexical **MIT**, Quill **BSD**. It does **not** reflect paid commercial plans, premium plugins, or cloud platforms (TinyMCE Premium, CKEditor commercial, Tiptap Platform, Froala licenses, etc.), which add collaboration, AI, Word/PDF conversion, spell-check, PowerPaste, and other advanced features. Where we mark ✗ for others, a paid upgrade may exist.
108
+
109
+ Install and integrate in minutes — technical reference below.
10
110
 
11
111
  ## Install
12
112
 
@@ -89,10 +189,13 @@ Give the editor a parent with a definite height (`height: 100%` on a sized ances
89
189
  | `disableHtmlFileDrop` | `boolean` | `false` | When true, dropping an HTML file on the editor does not replace the document. File → Open is unchanged |
90
190
  | `enablePageProperties` | `boolean` | `false` | When true, the Page properties dialog includes the Print tab. Font and Paragraph tabs are always available. See [Page properties](#page-properties) |
91
191
  | `defaultPageProperties` | `DefaultPageProperties` | — | Optional partial page settings applied to uncontrolled initial content and each page inserted with Insert → Page → Page before / Page after. Does not mutate controlled `value` / `pages`. See [Page properties](#page-properties) |
192
+ | `optimizeEmbeddedImages` | `boolean` | `false` | When true, embedded `data:image/...` sources are kept in an internal registry while editing so undo history and in-memory HTML stay small. `onChange`, `onPagesChange`, save, and export callbacks still receive full data URLs. See [Embedded image registry](#embedded-image-registry) |
92
193
  | `enableMultiPages` | `boolean` | `false` | When true, edit multiple independent HTML pages in visual mode. See [Multi-page editing](#multi-page-editing) |
93
194
  | `pages` | `string[]` | — | Controlled page HTML strings when `enableMultiPages` is true |
94
195
  | `defaultPages` | `string[]` | — | Initial pages when uncontrolled and `enableMultiPages` is true |
95
196
  | `onPagesChange` | `(pages: string[], activePageIndex: number) => void` | — | Fires when any page changes while multi-page mode is enabled |
197
+ | `defaultRulerVisible` | `boolean` | `true` | Initial ruler visibility in visual mode when the page has a defined size. Toggle at runtime with `commands.toggleRuler()` / `queries.isRulerVisible()` |
198
+ | `rulerUnit` | `'in' \| 'cm' \| 'mm' \| 'pt'` | `'in'` | Measurement unit for ruler ticks, snapping, and margin/indent serialization |
96
199
  | `enableComments` | `boolean` | `false` | When true, comment chrome and thread state are enabled. See [Comments](#comments) |
97
200
  | `defaultCommentsVisible` | `boolean` | `true` | Initial comment highlight visibility when `enableComments` is true. When `true`, highlights are shown and View shows "Hide comments". See [Comments](#comments) |
98
201
  | `commentAuthor` | `CommentAuthor` | — | `{ userId, userName }` identity for posting messages in the comment panel |
@@ -103,7 +206,7 @@ Give the editor a parent with a definite height (`height: 100%` on a sized ances
103
206
  | `darkMode` | `boolean` | `false` | Initial chrome theme when nothing is persisted (`true` = dark). See [Dark mode](#dark-mode) |
104
207
  | `darkModePersistence` | `DarkModePersistence` | — | Host load/save for the chrome theme. Omit to persist in `localStorage`. See [Dark mode](#dark-mode) |
105
208
 
106
- `mode`, `value`, and `fullscreen` are optional. Omit them for internal state; pass them to control from the parent. Chrome includes a File menu (Save, Load, and Print), an Edit menu (Undo, Redo, and Page properties), an Insert menu (Link, Bookmark, Image, Audio, YouTube video, Table, Horizontal line, and Page break), a Table menu (Insert table, row and column items, Merge cells, Unmerge cells, and table/cell/row properties), a View menu (Visual, HTML, Toolbar customize and position, Zoom, Light/Dark mode, Preview, Read aloud, and Full screen), and a Format menu (paragraph styles, font, clear formatting, paragraph, and image properties), unless `menuVisible` is `false`. The icon toolbar has File (Save and Load), Print, Edit (Undo and Redo), Insert (Link, Bookmark, Image, Table, and Horizontal line), Table (Merge cells and Unmerge cells), Font, Align, Paragraph, and View (Visual | HTML | Preview | Read aloud) groups, with Full screen pinned last, unless `toolbarVisible` is `false`. Hide both to drop the chrome slot entirely. View → Toolbar → Position docks the icon toolbar (the menu bar stays at the top). Top and bottom wrap onto multiple rows when they cannot fit on one line; Full screen stays last, pinned to the right of the first row. Left and right stay a single column and grow the editor instead of wrapping into extra columns. Full screen covers the host page with a fixed overlay; an X control (and Escape) returns to the in-page layout. Visual and HTML mode stay independent of the overlay. By default, Save writes the current document to an HTML file and Load replaces it from an HTML file; pass `onSave` and/or `onOpen` to delegate to host callbacks instead (see [Save and open](#save-and-open)). Dropping an `.html` / `.htm` file onto the document surface does the same as Load, unless `disableHtmlFileDrop` is set. Print opens the browser print dialog for the document HTML only (not the editor chrome). Preview (View menu and View icon group) opens a large dialog with a scrollable rendering of the current document HTML. Read aloud (View menu and View icon group) uses the browser’s built-in speech synthesis to read the current selection, or the full document when nothing is selected; click again to stop. Undo and Redo walk document HTML history; they are grayed out when there is nothing to undo or redo. The File, Edit, and Insert menu items use the same icons as the toolbar buttons where both exist. Link wraps the selection (or inserts the URL as the visible text at the caret) in an `<a href>` tag; an optional title becomes the native hover tooltip, and opening in a new tab sets `target="_blank"`. Bookmark inserts a named destination (`id`) at the caret or around the selection. Audio and YouTube video are available from the Insert menu only (no toolbar buttons). Horizontal line inserts an `<hr>` at the caret. Page break inserts a hard print break at the caret (Insert → Page break, or Ctrl/Cmd+Enter in visual mode). Content after the break starts on a new printed page. Serialized HTML uses inline `break-after: page` / `page-break-after: always` on a `<div>` — distinct from **Insert → Page**, which adds a new editor page when `enableMultiPages` is on.
209
+ `mode`, `value`, and `fullscreen` are optional. Omit them for internal state; pass them to control from the parent. Chrome includes a File menu (Save, Load, and Print), an Edit menu (Undo, Redo, and Page properties), an Insert menu (Link, Bookmark, Image, Page background image, Paragraph background image, Audio, YouTube video, Table, Horizontal line, and Page break), a Table menu (Insert table, row and column items, Merge cells, Unmerge cells, and table/cell/row properties), a View menu (Visual, HTML, Toolbar customize and position, Zoom, Light/Dark mode, Preview, Read aloud, and Full screen), a Format menu (paragraph styles, font, clear formatting, paragraph, and image properties), and a Help menu (Editor Help, Keyboard shortcuts, and About), unless `menuVisible` is `false`. The icon toolbar has File (Save and Load), Print, Edit (Undo and Redo), Insert (Link, Bookmark, Image, Table, and Horizontal line), Table (Merge cells and Unmerge cells), Font, Align, Paragraph, and View (Visual | HTML | Preview | Read aloud) groups, with Full screen pinned last, unless `toolbarVisible` is `false`. Hide both to drop the chrome slot entirely. **Page background image** is disabled outside visual mode and, when `enableMultiPages` is true, until a page is selected. **Paragraph background image** is disabled outside visual mode or when the caret is not in a paragraph block. View → Toolbar → Position docks the icon toolbar (the menu bar stays at the top). Top and bottom wrap onto multiple rows when they cannot fit on one line; Full screen stays last, pinned to the right of the first row. Left and right stay a single column and grow the editor instead of wrapping into extra columns. Full screen covers the host page with a fixed overlay; an X control (and Escape) returns to the in-page layout. Visual and HTML mode stay independent of the overlay. By default, Save writes the current document to an HTML file and Load replaces it from an HTML file; pass `onSave` and/or `onOpen` to delegate to host callbacks instead (see [Save and open](#save-and-open)). Dropping an `.html` / `.htm` file onto the document surface does the same as Load, unless `disableHtmlFileDrop` is set. Print opens the browser print dialog for the document HTML only (not the editor chrome). Preview (View menu and View icon group) opens a large dialog with a scrollable rendering of the current document HTML. Read aloud (View menu and View icon group) uses the browser’s built-in speech synthesis to read the current selection, or the full document when nothing is selected; click again to stop. Undo and Redo walk document HTML history; they are grayed out when there is nothing to undo or redo. The File, Edit, and Insert menu items use the same icons as the toolbar buttons where both exist. Link wraps the selection (or inserts the URL as the visible text at the caret) in an `<a href>` tag; an optional title becomes the native hover tooltip, and opening in a new tab sets `target="_blank"`. Bookmark inserts a named destination (`id`) at the caret or around the selection. Audio and YouTube video are available from the Insert menu only (no toolbar buttons). Horizontal line inserts an `<hr>` at the caret. Page break inserts a hard print break at the caret (Insert → Page break, or Ctrl/Cmd+Enter in visual mode). Content after the break starts on a new printed page. Serialized HTML uses inline `break-after: page` / `page-break-after: always` on a `<div>` — distinct from **Insert → Page**, which adds a new editor page when `enableMultiPages` is on.
107
210
 
108
211
  `menuColor`, `menuBackground`, `menuFontSize`, and `menuFontFamily` restyle the dropdown menu bar and panels only — not the icon toolbar. `border` is the outer editor box and is ignored in fullscreen. Custom menu fonts must already be available on the page.
109
212
 
@@ -139,19 +242,21 @@ import { Editor } from 'commspliant-html-editor'
139
242
  />
140
243
  ```
141
244
 
142
- The first time page properties are applied, content is wrapped in a single `<div data-page>` shell with `width: 100%` and `height: 100%`. Background **color** is written on that shell. Background **image** uses the same file, URL, or custom picker as Insert → Image, plus independent width and height (default width `100%`, height unset), and opacity, fit, and position controls (the same options as Image properties → Advanced). Rotation is not supported for page backgrounds. Width and height write `background-size`; keyword fit values (`cover`, `contain`) replace those dimensions.
245
+ The first time page properties are applied, content is wrapped in a single `<div data-page>` shell with `width: 100%` and `height: 100%`. Background **color** is written on that shell. Background **image** uses the same file, URL, or custom picker as Insert → Image, plus independent width and height (default width `100%`, height unset), and opacity, fit, and position controls (the same options as Image properties → Advanced). Rotation is not supported for page backgrounds. Width and height write `background-size`; keyword fit values (`cover`, `contain`) replace those dimensions. File uploads for background images follow the same WebP embedding rules as Insert → Image (see [Custom image picker](#custom-image-picker)).
143
246
 
144
- When a background image is set, a single managed first child `<div id="commspliant-background" data-page-bg contenteditable="false">` holds the image layer so image opacity does not fade page text. If that id already exists in the editor, it is reused and extras are removed. The layer sits behind content (`z-index: -1`) so the document stays editable:
247
+ When a background image is set, a single managed first child `<div id="commspliant-background" data-page-bg contenteditable="false">` holds the image layer so image opacity does not fade page text. If that id already exists in the editor, it is reused and extras are removed. The layer sits behind content (`z-index: 0` with siblings stacked above) so the document stays editable and the image prints in **File → Print** and **View → Preview**:
145
248
 
146
249
  ```html
147
250
  <div data-page style="width:100%;height:100%;position:relative;isolation:isolate;background-color:#fff">
148
251
  <div id="commspliant-background" data-page-bg contenteditable="false"
149
- style="position:absolute;inset:0;z-index:-1;pointer-events:none;user-select:none;background-image:url(&quot;https://example.com/bg.png&quot;);background-size:cover;background-position:center;background-repeat:no-repeat;opacity:0.9"></div>
252
+ style="position:absolute;inset:0;z-index:0;pointer-events:none;user-select:none;print-color-adjust:exact;-webkit-print-color-adjust:exact;background-image:url(&quot;https://example.com/bg.png&quot;);background-size:cover;background-position:center;background-repeat:no-repeat;opacity:0.9"></div>
150
253
  <p>Hello</p>
151
254
  </div>
152
255
  ```
153
256
 
154
- The visual editor holder mirrors the shell fill and background image for display only; serialized `value` HTML is unchanged by that paint step.
257
+ The visual editor holder mirrors the shell **fill color** for display only; serialized `value` HTML is unchanged by that paint step.
258
+
259
+ The background image **bleeds edge-to-edge** on the page canvas in the editor (including the margin preview band) and to the physical paper edge in **File → Print** and **View → Preview**. On sized pages (`@page` size set), the background also fills the **full page height** in the editor—not only behind existing text. Text stays inset by print margins. In multi-page mode each page applies bleed from its own `@page` rule. At print/preview time, `@page` margins are moved onto the `[data-page]` shell as padding so the background layer can fill the sheet; this does not change normal `value` HTML during editing.
155
260
 
156
261
  ```tsx
157
262
  import { Editor } from 'commspliant-html-editor'
@@ -164,7 +269,7 @@ import { Editor } from 'commspliant-html-editor'
164
269
 
165
270
  Show or hide the menu bar and icon toolbar, and control the full-screen overlay from the host. View → Toolbar → Position docks the icon toolbar; the menu bar stays at the top. Top and bottom wrap onto multiple rows when they cannot fit on one line; Full screen stays last, pinned to the right of the first row. Left and right stay a single column.
166
271
 
167
- On the visual surface, a mouse right-click opens the editor context menu (cut, copy, font and paragraph properties, and table items — including merge and unmerge — when the caret is in a table). A touch or pen long-press does not; phones keep the native selection handles and OS Copy / Paste callout so text can be selected.
272
+ On the visual surface, a mouse right-click opens the editor context menu (cut, copy, font and paragraph properties, and table items — including merge and unmerge — when the caret is in a table). When `enableComments` is true and text is selected or an image is selected, **Comment** is also shown. A touch or pen long-press does not; phones keep the native selection handles and OS Copy / Paste callout so text can be selected.
168
273
 
169
274
  ```tsx
170
275
  import { useState } from 'react'
@@ -194,7 +299,7 @@ import { Editor } from 'commspliant-html-editor'
194
299
 
195
300
  Pass `allowedChrome` to show only the menus and icon-toolbar buttons the host allows. Omit the prop (or either field) to leave that surface unfiltered.
196
301
 
197
- The two lists are independent: hiding the File menu does not hide Save on the toolbar, and hiding the Print button does not hide File → Print. `menus` is top-level menu ids only: `file`, `edit`, `insert`, `table`, `view`, and `format` (plus any custom menu id from `customActions`). `toolbar` is icon-toolbar item ids:
302
+ The two lists are independent: hiding the File menu does not hide Save on the toolbar, and hiding the Print button does not hide File → Print. `menus` is top-level menu ids only: `file`, `edit`, `insert`, `table`, `view`, `format`, and `help` (plus any custom menu id from `customActions`). `toolbar` is icon-toolbar item ids:
198
303
 
199
304
  `save`, `open`, `print`, `undo`, `redo`, `link`, `bookmark`, `image`, `table`, `horizontalRule`, `mergeCells`, `unmergeCells`, `fontFamily`, `paragraphStyle`, `fontSize`, `fontColor`, `highlightColor`, `customCss`, `formatBrush`, `bold`, `italic`, `underline`, `strikethrough`, `clearFormatting`, `alignLeft`, `alignCenter`, `alignRight`, `alignJustify`, `indent`, `outdent`, `bulletList`, `numberedList`, `visual`, `html`, `preview`, `readAloud`, `fullscreen`
200
305
 
@@ -410,11 +515,31 @@ Pass `transformHtml` to further sanitize or enhance the document on every write:
410
515
  />
411
516
  ```
412
517
 
413
- Keep the callback idempotent. If it rewrites markup on every keystroke (pretty-print, wrap tags), the visual surface resyncs `innerHTML` and the caret may jump. Prefer stripping disallowed tags over format-on-type. Do **not** strip HTML comments in `transformHtml` when using multi-page mode — that removes `<!-- wysiwyg-page-separator -->` and collapses pages.
518
+ Keep the callback idempotent. If it rewrites markup on every keystroke (pretty-print, wrap tags), the visual surface resyncs `innerHTML` and the caret may jump. Prefer stripping disallowed tags over format-on-type. Do **not** strip HTML comments in `transformHtml` when using multi-page mode — that removes `<!-- wysiwyg-page-separator -->` from joined storage HTML (`joinPagesToHtml`) and collapses pages. The HTML-mode textarea shows one page at a time and does not include the separator.
519
+
520
+ ### Embedded image registry
521
+
522
+ Large base64 images inflate React state, undo history, and `onPagesChange` payloads on every keystroke. Set `optimizeEmbeddedImages` to keep embedded images in an internal registry while editing: the visual surface uses `blob:` display URLs and `data-wysiwyg-img-id` attributes, while in-memory HTML and undo steps store the short ids instead of the full data URL.
523
+
524
+ While editing, the **HTML source view** also shows this compact form (`data-wysiwyg-img-id` and `blob:` URLs), not base64 — including when `value` / `pages` are controlled. Host props remain full data URLs; the editor externalizes on ingest.
525
+
526
+ Outbound writes (`onChange`, `onPagesChange`, `onSave`, `onAutoSave`, `getDocumentHtml`, preview, print, and custom-action `getHtml`) are **hydrated** back to full `data:image/...` sources so host persistence stays unchanged. Opt in only when documents contain many embedded images.
527
+
528
+ ```tsx
529
+ <Editor
530
+ optimizeEmbeddedImages
531
+ defaultValue={`<p><img src="data:image/png;base64,..." alt="Chart"></p>`}
532
+ onChange={(html) => {
533
+ // html still contains full data URLs for save
534
+ }}
535
+ />
536
+ ```
537
+
538
+ Try it in the playground: open the sidebar, set **Embedded images** to **Optimized**, then switch to HTML mode with the `<>` button — the sample document loads with an embedded image so you can verify compact markup without inserting one manually.
414
539
 
415
540
  ### Auto save
416
541
 
417
- Pass `onAutoSave` to persist the document HTML from the host. The editor polls every second and calls the callback only when that HTML changed since the last auto-save. Omit the prop to disable (the default). The callback is not awaited, so a slow or failing save does not block editing.
542
+ Pass `onAutoSave` to persist the document HTML from the host. The editor polls every second and calls the callback only when that HTML changed since the last auto-save. Omit the prop to disable (the default). The callback is not awaited, so a slow or failing save does not block editing. When `enableMultiPages` is true, the callback receives all pages as a `string[]`.
418
543
 
419
544
  The HTML is the same string `onChange` receives (after built-in sanitization and `transformHtml`, with font stylesheet links when a custom face is used). The initial document is not treated as a change.
420
545
 
@@ -431,9 +556,9 @@ import { Editor } from 'commspliant-html-editor'
431
556
 
432
557
  ### Save and open
433
558
 
434
- By default, File → Save and the Save toolbar button write the document to a local HTML file (browser save picker or download). File → Open and the Open toolbar button load from a local HTML file. Omit both callbacks to keep that behavior.
559
+ By default, File → Save and the Save toolbar button write a **standalone HTML file** (full document with embedded print styles) to the local save picker or download, so it can be opened in any browser and printed without the editor or JavaScript. File → Open and the Open toolbar button load from a local HTML file (standalone or fragment). Omit both callbacks to keep that behavior.
435
560
 
436
- Pass `onSave` to persist through the host instead of the built-in file picker. It receives the current document HTML (same as `onChange`, after sanitization and `transformHtml`) and is awaited.
561
+ Pass `onSave` to persist through the host instead of the built-in file picker. It receives the current document HTML fragment (same as `onChange`, after sanitization and `transformHtml`) and is awaited — not the standalone print wrapper.
437
562
 
438
563
  Pass `onOpen` to load through the host instead of the built-in file picker. Return document HTML to replace the editor, or `null` to cancel. The callback is awaited. HTML file drag-drop is unchanged — it still reads a local file and does not call `onOpen`.
439
564
 
@@ -461,7 +586,7 @@ Set `enableMultiPages` to edit several independent HTML pages in visual mode. Pa
461
586
 
462
587
  When multi-page mode is off (default), behavior is unchanged.
463
588
 
464
- **HTML source mode** shows all pages in one textarea, separated by:
589
+ **HTML source mode** edits **one page at a time**. A tab strip above the textarea shows **Page 1**, **Page 2**, and so on; the active tab matches the page selected in visual mode (or page 1 before any page is selected). With five or more pages, left/right arrows scroll the tab strip. **View → Preview** and host callbacks (`onSave`, `onOpen`, `onAutoSave`, `onPagesChange`) still use **all pages**. Join pages for storage with `joinPagesToHtml` and the separator:
465
590
 
466
591
  ```html
467
592
  <!-- wysiwyg-page-separator -->
@@ -473,6 +598,8 @@ When multi-page mode is off (default), behavior is unchanged.
473
598
  - Host `onSave`, `onOpen`, and `onAutoSave` receive **all pages** as a `string[]` when `enableMultiPages` is true.
474
599
  - Use `onPagesChange` for controlled multi-page state. Export helpers: `splitPagesFromHtml`, `joinPagesToHtml`, and `PAGE_SEPARATOR` from the package.
475
600
 
601
+ **Rulers:** When a page defines a **page size** (`@page` size preset such as A4, letter, or legal, or custom width and height), horizontal and vertical rulers appear for that page in visual mode. Orientation alone does not enable rulers. **View → Ruler** toggles them. The horizontal ruler stays pinned at the top of the document well while scrolling (like the toolbar stays above the scrollport). In multi-page mode, rulers follow the selected page (or page 1 before any page is selected). Each page row shows a vertical ruler only when that page has a size; unsized pages fill the workspace at 100% width and height. Drag margin splitters to change `@page` margins; the on-screen margin preview updates live while dragging and commits on release. Drag indent markers to set paragraph `text-indent` and `margin-left` / `margin-right` on the selection. Set `defaultRulerVisible={false}` to start hidden, and `rulerUnit` to change tick units (`in`, `cm`, `mm`, `pt`). Page zoom (View → Zoom) scales the page canvas; ruler band thickness stays 24px on screen.
602
+
476
603
  ```tsx
477
604
  import { useState } from 'react'
478
605
  import { Editor } from 'commspliant-html-editor'
@@ -484,7 +611,7 @@ export function MultiPageEditor() {
484
611
  <Editor
485
612
  enableMultiPages
486
613
  pages={pages}
487
- onPagesChange={(nextPages) => setPages(nextPages)}
614
+ onPagesChange={(nextPages, _activeIndex) => setPages(nextPages)}
488
615
  onSave={async (payload) => {
489
616
  if (Array.isArray(payload)) {
490
617
  await fetch('/api/documents/pages', {
@@ -508,7 +635,7 @@ This is not the same as **Insert → Page → Page before / Page after** (multi-
508
635
 
509
636
  Set `enableComments` to add lightweight comment threads anchored in the document with `data-comment-thread` markers. Thread metadata (`CommentThread[]`) is separate from document HTML — use `comments` / `onCommentsChange` to persist it.
510
637
 
511
- - **Add comment** (toolbar Insert group and Insert → Comment) wraps the selection or marks the selected image, then opens the comment panel.
638
+ - **Add comment** (toolbar Insert group, Insert → Comment, and the visual context menu when text or an image is selected) wraps the selection or marks the selected image, then opens the comment panel.
512
639
  - **Show/Hide comments** (View menu and View icon group) toggles highlight styling only; thread data and anchors remain. Highlights are visible by default; pass `defaultCommentsVisible={false}` to start hidden.
513
640
  - **`commentAuthor`** (`{ userId, userName }`) is required to enable Post in the panel.
514
641
 
@@ -643,6 +770,8 @@ Omit `customImagePicker` to keep File and URL only. Set `disableBuiltinImageInse
643
770
 
644
771
  `insertImage` uses the same insert path as File and URL: an `<img>` with inline `max-width: 100%; height: auto`, then any host `css`. `src` must be `http(s)`, a relative path, or a raster `data:` URL.
645
772
 
773
+ When you choose **File** in Insert → Image, Page properties → Background Image, or Paragraph properties → Background Image, the editor embeds the image as a `data:` URL in the serialized HTML. Uploaded JPEG, PNG, and BMP files are converted to WebP first when the browser supports encoding; if conversion fails or is unsupported, the original format is embedded. GIF uploads are kept as GIF so animation is preserved. URL and custom-picker sources are unchanged.
774
+
646
775
  `onPick` from Page properties (Edit → Page → Page properties → Background Image) leaves the editor dialog open so the picked URL can fill the draft. If your picker is a modal overlay, give it a `z-index` above editor dialogs (`1200`).
647
776
 
648
777
  ### Custom audio picker
@@ -787,6 +916,10 @@ import { Editor } from 'commspliant-html-editor'
787
916
 
788
917
  The shipped CSS resets inherited styles on the editor root and restyles chrome and the visual document so typical host-page rules (`p`, `button`, `textarea`, inherited typography) do not restyle the editor. Pass `className` on the root to override that look on purpose. Isolation is not a hard boundary: high-specificity host selectors or `!important` can still win.
789
918
 
919
+ ### Help and guides
920
+
921
+ End users open **Help → Editor Help** (F1) for searchable, localised task help inside the editor (`en` / `es`). Integrators evaluating or shipping the library can read the [developer guides](docs/README.md) (React, TypeScript, Next.js, HTML output, sanitization, and chrome customization).
922
+
790
923
  ## Development
791
924
 
792
925
  ```bash
@@ -1 +1 @@
1
- ._chrome_boy0f_1{--wysiwyg-chrome-text: #444;--wysiwyg-chrome-text-strong: #111;--wysiwyg-chrome-text-muted: #555;--wysiwyg-chrome-toolbar: #f0f0f0;--wysiwyg-chrome-menu: #fff;--wysiwyg-chrome-border: #e5e5e5;--wysiwyg-chrome-divider: #d0d0d0;--wysiwyg-chrome-hover: #f0f0f0;--wysiwyg-chrome-pressed: #ececec;--wysiwyg-chrome-dialog: #fff;--wysiwyg-chrome-dialog-text: #222;--wysiwyg-chrome-dialog-border: #c8c8c8;--wysiwyg-chrome-dialog-muted: #f7f7f7;--wysiwyg-chrome-dialog-group: #fafafa;--wysiwyg-chrome-input: #fff;--wysiwyg-chrome-focus: #8ab4ff;--wysiwyg-chrome-backdrop: rgb(0 0 0 / 32%);--wysiwyg-chrome-shadow: rgb(0 0 0 / 18%);--wysiwyg-chrome-menu-shadow: rgb(0 0 0 / 8%);--wysiwyg-chrome-tooltip-bg: #222;--wysiwyg-chrome-tooltip-fg: #fff;--wysiwyg-chrome-selected: #e8f0fe;--wysiwyg-chrome-danger: #b33;--wysiwyg-chrome-primary: #4a7fd4;--wysiwyg-chrome-primary-fg: #fff;--wysiwyg-chrome-primary-soft: #e8eef8;--wysiwyg-chrome-empty: #ddd;--wysiwyg-chrome-icon: #333}._chrome_boy0f_1[data-wysiwyg-theme=dark]{--wysiwyg-chrome-text: #e4e4e4;--wysiwyg-chrome-text-strong: #fff;--wysiwyg-chrome-text-muted: #bbb;--wysiwyg-chrome-toolbar: #2b2b2b;--wysiwyg-chrome-menu: #1e1e1e;--wysiwyg-chrome-border: #3a3a3a;--wysiwyg-chrome-divider: #4a4a4a;--wysiwyg-chrome-hover: #3a3a3a;--wysiwyg-chrome-pressed: #444;--wysiwyg-chrome-dialog: #252525;--wysiwyg-chrome-dialog-text: #e8e8e8;--wysiwyg-chrome-dialog-border: #4a4a4a;--wysiwyg-chrome-dialog-muted: #1a1a1a;--wysiwyg-chrome-dialog-group: #1a1a1a;--wysiwyg-chrome-input: #1e1e1e;--wysiwyg-chrome-focus: #8ab4ff;--wysiwyg-chrome-backdrop: rgb(0 0 0 / 55%);--wysiwyg-chrome-shadow: rgb(0 0 0 / 45%);--wysiwyg-chrome-menu-shadow: rgb(0 0 0 / 40%);--wysiwyg-chrome-tooltip-bg: #eee;--wysiwyg-chrome-tooltip-fg: #111;--wysiwyg-chrome-selected: #2a3a50;--wysiwyg-chrome-danger: #f66;--wysiwyg-chrome-primary: #6a9ae0;--wysiwyg-chrome-primary-fg: #111;--wysiwyg-chrome-primary-soft: #2a3a50;--wysiwyg-chrome-empty: #555;--wysiwyg-chrome-icon: #eee}._menu_c1m45_1{position:fixed;z-index:1150;display:flex;flex-direction:column;min-width:12rem;max-height:calc(100vh - 16px);margin:0;padding:.25rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-chrome-menu, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 8%));color:var(--wysiwyg-chrome-text, #444);font:.875rem/1.4 system-ui,sans-serif}._item_c1m45_19{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;width:100%;margin:0;padding:.4rem .75rem;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;text-align:start;white-space:nowrap;cursor:pointer;box-shadow:none}._item_c1m45_19:hover,._item_c1m45_19:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0);color:var(--wysiwyg-chrome-text-strong, #111)}._item_c1m45_19:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._item_c1m45_19:disabled{cursor:not-allowed;opacity:.5}._item_c1m45_19:disabled:hover,._item_c1m45_19:disabled:focus-visible{background:transparent;color:inherit}._separator_c1m45_59{height:1px;margin:.25rem .5rem;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0}._picker_ag1yo_1{display:flex;flex-direction:column;gap:.45rem;box-sizing:border-box;width:14.5rem;padding:.4rem .5rem .5rem;color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._none_ag1yo_12,._customToggle_ag1yo_13,._eyedrop_ag1yo_14{display:flex;align-items:center;gap:.4rem;width:100%;margin:0;padding:.25rem .35rem;border:0;border-radius:3px;background:transparent;color:inherit;font:inherit;text-align:start;cursor:pointer}._none_ag1yo_12:hover,._none_ag1yo_12:focus-visible,._customToggle_ag1yo_13:hover,._customToggle_ag1yo_13:focus-visible,._eyedrop_ag1yo_14:hover,._eyedrop_ag1yo_14:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._none_ag1yo_12[aria-checked=true],._none_ag1yo_12[aria-selected=true]{font-weight:600}._none_ag1yo_12:disabled,._customToggle_ag1yo_13:disabled,._eyedrop_ag1yo_14:disabled,._swatch_ag1yo_48:disabled,._field_ag1yo_49 input:disabled{cursor:not-allowed;opacity:.5}._grid_ag1yo_54,._recents_ag1yo_55{display:grid;grid-template-columns:repeat(8,1.25rem);gap:.22rem;justify-content:space-between}._swatch_ag1yo_48{box-sizing:border-box;width:1.25rem;height:1.25rem;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:2px;cursor:pointer}._swatch_ag1yo_48:hover,._swatch_ag1yo_48:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._swatch_ag1yo_48[aria-checked=true],._swatch_ag1yo_48[aria-selected=true]{outline:2px solid #111;outline-offset:1px}._sectionLabel_ag1yo_84{margin:.15rem 0 0;font-weight:600}._custom_ag1yo_13{display:flex;flex-direction:column;gap:.45rem}._sv_ag1yo_95{position:relative;width:100%;height:7.5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;cursor:crosshair;touch-action:none}._svThumb_ag1yo_105{position:absolute;width:.7rem;height:.7rem;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #111;transform:translate(-50%,-50%);pointer-events:none}._hue_ag1yo_116{width:100%;height:.85rem;margin:0;padding:0;border-radius:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red);cursor:pointer}._hue_ag1yo_116::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:.7rem;height:.85rem;border:2px solid #fff;border-radius:2px;background:transparent;box-shadow:0 0 0 1px #111}._hue_ag1yo_116::-moz-range-thumb{width:.7rem;height:.85rem;border:2px solid #fff;border-radius:2px;background:transparent;box-shadow:0 0 0 1px #111}._rgbRow_ag1yo_155,._hexRow_ag1yo_156{display:flex;align-items:center;gap:.3rem}._field_ag1yo_49{display:flex;flex:1 1 0;flex-direction:column;gap:.1rem;min-width:0}._field_ag1yo_49 label{font-weight:600}._field_ag1yo_49 input{box-sizing:border-box;width:100%;margin:0;padding:.15rem .25rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:inherit;font:inherit}._hexRow_ag1yo_156 ._field_ag1yo_49{flex:1 1 auto}._eyedrop_ag1yo_14{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23222' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15.5 4.5l4 4-9 9H6.5v-4.5z'/%3E%3Cpath d='M13.5 6.5l4 4'/%3E%3C/svg%3E") 2 18,crosshair}._wrap_hfz5s_1{position:relative;display:inline-flex;flex-shrink:0;align-items:stretch}._button_hfz5s_8{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;min-width:1.75rem;padding:.4rem .5rem .3rem}._icon_hfz5s_18{display:block;width:1rem;height:1rem}._bar_hfz5s_24{display:block;width:1rem;height:.2rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:1px;background:transparent}._barEmpty_hfz5s_33{background:repeating-linear-gradient(-45deg,var(--wysiwyg-chrome-empty, #ddd),var(--wysiwyg-chrome-empty, #ddd) 1px,transparent 1px,transparent 3px)}._popover_hfz5s_43{position:fixed;z-index:1300;max-height:calc(100vh - 8px);overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%))}._field_1knrr_1{display:flex;align-items:center;justify-content:space-between;gap:.75rem}._label_1knrr_8{font-weight:600}._button_1knrr_12{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:1.5rem;margin:0;padding:.15rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);cursor:pointer}._button_1knrr_12:disabled{cursor:not-allowed;opacity:.5}._button_1knrr_12:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._swatch_1knrr_37{display:block;width:100%;height:100%;border-radius:2px}._swatchEmpty_1knrr_44{background:repeating-linear-gradient(-45deg,var(--wysiwyg-chrome-empty, #ddd),var(--wysiwyg-chrome-empty, #ddd) 1px,transparent 1px,transparent 3px)}._toolbar_1aggm_1{display:flex;flex-direction:column;align-items:stretch;width:100%;min-width:0}._toolbar_1aggm_1._toolbar_1aggm_1{display:flex;flex-direction:column;container-type:inline-size}._toolbar_1aggm_1._toolbar_1aggm_1[data-toolbar-position=left],._toolbar_1aggm_1._toolbar_1aggm_1[data-toolbar-position=right]{container-type:normal;width:100%;min-width:0;height:auto;min-height:100%}._toolbar_1aggm_1._toolbar_1aggm_1[data-menu-overlay-portal]{container-type:normal;width:0;height:0;min-width:0;overflow:visible}._toolbar_1aggm_1 ._menuBar_1aggm_35{display:flex;align-items:stretch;width:100%;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._toolbar_1aggm_1 ._menuBarDesktop_1aggm_43{display:flex;align-items:stretch;min-width:0}._toolbar_1aggm_1 ._brandMark_1aggm_49{display:inline-flex;flex-shrink:0;align-items:center;padding:.25rem .65rem .25rem .5rem}._toolbar_1aggm_1 ._brandMarkIcon_1aggm_56{display:block;height:2.5rem;width:auto;aspect-ratio:616.23 / 542.09;overflow:visible}._toolbar_1aggm_1 ._brandMarkIcon_1aggm_56 *{stroke:none}._toolbar_1aggm_1 ._menuBarCompact_1aggm_68{display:none;align-items:stretch}._toolbar_1aggm_1[data-compact] ._menuBarDesktop_1aggm_43{display:none}._toolbar_1aggm_1[data-compact] ._menuBarCompact_1aggm_68{display:flex}@container (max-width: 40rem){._toolbar_1aggm_1 ._menuBarDesktop_1aggm_43{display:none}._toolbar_1aggm_1 ._menuBarCompact_1aggm_68{display:flex}}._toolbar_1aggm_1 ._menuWrap_1aggm_91{position:relative;display:flex;align-items:stretch}._toolbar_1aggm_1 ._menuButton_1aggm_97,._toolbar_1aggm_1 ._iconButton_1aggm_98,._toolbar_1aggm_1 ._menuItem_1aggm_99{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;border:0;border-radius:0;background:transparent;font:inherit;font-weight:400;line-height:inherit;letter-spacing:inherit;text-transform:none;text-decoration:none;color:var(--wysiwyg-chrome-text, #444);cursor:pointer;box-shadow:none}._toolbar_1aggm_1 ._menuButton_1aggm_97,._toolbar_1aggm_1 ._menuItem_1aggm_99{color:var(--wysiwyg-menu-color, var(--wysiwyg-chrome-text, #444));font-size:var(--wysiwyg-menu-font-size, .875rem);font-family:var(--wysiwyg-menu-font-family, inherit)}._toolbar_1aggm_1 ._menuButton_1aggm_97{display:inline-flex;align-items:center;padding:.5rem .9rem;text-align:center}._toolbar_1aggm_1 ._menuButton_1aggm_97:after{content:"";display:inline-block;width:0;height:0;margin-left:.4rem;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent;transform:translateY(.08em)}._toolbar_1aggm_1 ._hamburgerButton_1aggm_142:after{content:none;display:none;margin:0;border:0}._toolbar_1aggm_1 ._iconNav_1aggm_149{position:relative;display:flex;flex-wrap:nowrap;align-items:flex-start;width:100%;max-width:100%;min-width:0;background:var(--wysiwyg-toolbar-background, var(--wysiwyg-chrome-toolbar, #f0f0f0))}._toolbar_1aggm_1 ._iconNavMain_1aggm_160{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:stretch;min-width:0;max-width:100%}._toolbar_1aggm_1 ._iconNavEnd_1aggm_169{display:flex;flex:0 0 auto;flex-wrap:nowrap;align-items:stretch;align-self:flex-start}._toolbar_1aggm_1 ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before{content:"";width:1px;align-self:stretch;margin:.35rem .15rem;background:var(--wysiwyg-chrome-divider, #d0d0d0)}._toolbar_1aggm_1 ._iconGroup_1aggm_185{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:stretch;max-width:100%}._toolbar_1aggm_1 ._iconNavEnd_1aggm_169 ._iconGroup_1aggm_185{flex-wrap:nowrap}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNav_1aggm_149,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNav_1aggm_149{flex:1 0 auto;flex-direction:column;flex-wrap:nowrap;align-items:stretch;width:100%;min-width:0;max-width:none;height:auto;min-height:100%}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavMain_1aggm_160,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavMain_1aggm_160{flex:1 0 auto;flex-direction:column;flex-wrap:nowrap;width:100%;min-width:0;max-width:none}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavEnd_1aggm_169,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavEnd_1aggm_169{flex-direction:column;margin-top:auto;align-self:stretch}._toolbar_1aggm_1[data-toolbar-position=left] ._iconGroup_1aggm_185,._toolbar_1aggm_1[data-toolbar-position=right] ._iconGroup_1aggm_185{flex-direction:column;flex-wrap:nowrap;width:100%;min-width:0;max-width:none}._toolbar_1aggm_1[data-toolbar-position=left] ._iconGroup_1aggm_185:not(:last-child):after,._toolbar_1aggm_1[data-toolbar-position=right] ._iconGroup_1aggm_185:not(:last-child):after{width:auto;height:1px;margin:.15rem .35rem}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before{width:auto;height:1px;align-self:stretch;margin:.15rem .35rem}._toolbar_1aggm_1[data-toolbar-position=left] ._iconButton_1aggm_98[aria-pressed=true],._toolbar_1aggm_1[data-toolbar-position=right] ._iconButton_1aggm_98[aria-pressed=true]{box-shadow:inset -2px 0 0 var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._iconGroup_1aggm_185:not(:last-child):after{content:"";width:1px;align-self:stretch;margin:.35rem .15rem;background:var(--wysiwyg-chrome-divider, #d0d0d0)}._toolbar_1aggm_1 ._iconButton_1aggm_98{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;padding:.5rem .65rem}._toolbar_1aggm_1 ._iconNav_1aggm_149 ._iconButton_1aggm_98{padding:calc(.5rem + 2px) .65rem calc(.5rem - 2px)}._tooltipTrigger_1aggm_276{display:inline-flex;flex-shrink:0;align-items:stretch}._toolbar_1aggm_1 ._iconButton_1aggm_98[aria-pressed=true]{color:var(--wysiwyg-chrome-text-strong, #111);background:var(--wysiwyg-chrome-pressed, #ececec);box-shadow:inset 0 -2px 0 var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._menu_1aggm_35{position:absolute;top:100%;left:0;z-index:2;display:flex;flex-direction:column;min-width:10rem;margin:0;padding:.25rem 0;overflow:visible;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 8%))}._toolbar_1aggm_1 ._submenuWrap_1aggm_305{position:relative}._toolbar_1aggm_1 ._submenu_1aggm_305{top:0;left:100%;z-index:3}._toolbar_1aggm_1 ._submenuTrigger_1aggm_315{justify-content:space-between}._toolbar_1aggm_1 ._submenuTrigger_1aggm_315:after{content:"";display:inline-block;width:0;height:0;margin-left:.75rem;border-style:solid;border-width:.22rem 0 .22rem .28rem;border-color:transparent transparent transparent currentColor}._toolbar_1aggm_1 ._menuOverlay_1aggm_330{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:flex;flex-direction:column;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));color:var(--wysiwyg-menu-color, var(--wysiwyg-chrome-text, #444));font-size:var(--wysiwyg-menu-font-size, .875rem);font-family:var(--wysiwyg-menu-font-family, inherit)}._toolbar_1aggm_1 ._menuOverlayHeader_1aggm_342{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:.5rem;padding:.15rem .15rem .15rem .9rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._toolbar_1aggm_1 ._menuOverlayTitle_1aggm_352{font-size:inherit;font-weight:600;color:inherit}._toolbar_1aggm_1 ._menuOverlayBody_1aggm_358{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:auto}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuWrap_1aggm_91{flex-direction:column;align-items:stretch;width:100%}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuButton_1aggm_97{width:100%;justify-content:space-between}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menu_1aggm_35{position:static;top:auto;left:auto;z-index:auto;min-width:0;width:100%;border:0;border-radius:0;box-shadow:none;padding:0 0 .25rem}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenuWrap_1aggm_305{position:static}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenu_1aggm_305{position:static;top:auto;left:auto;z-index:auto}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenuTrigger_1aggm_315:after{transform:rotate(90deg)}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuItem_1aggm_99{white-space:normal}._toolbar_1aggm_1 ._menuSeparator_1aggm_409{height:1px;margin:.25rem .5rem;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0}._toolbar_1aggm_1 ._menuItem_1aggm_99{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4rem .75rem;text-align:start;white-space:nowrap}._toolbar_1aggm_1 ._menuItem_1aggm_99:hover,._toolbar_1aggm_1 ._menuItem_1aggm_99:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0);color:var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._menuItem_1aggm_99[aria-checked=true]{color:var(--wysiwyg-chrome-text-strong, #111);font-weight:600}._toolbar_1aggm_1 ._menuButton_1aggm_97:hover,._toolbar_1aggm_1 ._iconButton_1aggm_98:hover,._toolbar_1aggm_1 ._menuButton_1aggm_97:focus-visible,._toolbar_1aggm_1 ._iconButton_1aggm_98:focus-visible{color:var(--wysiwyg-chrome-text-strong, #111);background:var(--wysiwyg-chrome-hover, #f0f0f0)}._toolbar_1aggm_1 ._menuButton_1aggm_97:focus-visible,._toolbar_1aggm_1 ._iconButton_1aggm_98:focus-visible,._toolbar_1aggm_1 ._menuItem_1aggm_99:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._toolbar_1aggm_1 ._menuButton_1aggm_97:disabled,._toolbar_1aggm_1 ._iconButton_1aggm_98:disabled,._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled{cursor:not-allowed;opacity:.5}._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled:hover,._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled:focus-visible{background:transparent;color:inherit}._toolbar_1aggm_1 ._icon_1aggm_98,._toolbar_1aggm_1 ._icon_1aggm_98 *{overflow:visible;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}._toolbar_1aggm_1 ._icon_1aggm_98{display:block;width:1rem;height:1rem;flex-shrink:0}._tooltip_1aggm_276{position:fixed;z-index:1100;padding:.2rem .45rem;border-radius:3px;background:var(--wysiwyg-chrome-tooltip-bg, #222);color:var(--wysiwyg-chrome-tooltip-fg, #fff);font:.75rem/1.2 system-ui,sans-serif;white-space:nowrap;pointer-events:none}._tooltipElevated_1aggm_494{z-index:1300;max-width:18rem;white-space:normal}._wrap_1vjt0_1._wrap_1vjt0_1{display:inline-flex;flex-shrink:0;align-items:stretch}._wrap_1vjt0_1._wrapToolbar_1vjt0_7{align-self:stretch;padding:5px .35rem 0}._wrap_1vjt0_1 ._field_1vjt0_12{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_1vjt0_1 ._trigger_1vjt0_20{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;min-width:9.5rem;max-width:12rem;height:100%;margin:0;padding:0 1.35rem 0 .45rem;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif;text-align:start;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}._wrap_1vjt0_1 ._trigger_1vjt0_20:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_1vjt0_1 ._trigger_1vjt0_20:disabled{cursor:not-allowed;opacity:.5}._wrap_1vjt0_1 ._chevron_1vjt0_50{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;width:1.15rem;pointer-events:none;color:var(--wysiwyg-chrome-text, #444)}._wrap_1vjt0_1 ._chevron_1vjt0_50:after{content:"";display:block;width:0;height:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._list_1vjt0_73{position:fixed;z-index:1300;min-width:12rem;max-height:min(18rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._listInline_1vjt0_88{position:static;z-index:auto;min-width:100%;max-height:min(14rem,calc(100vh - 8px));box-shadow:none}._option_1vjt0_96{display:block;width:100%;margin:0;padding:.3rem .75rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font-size:.875rem;line-height:1.3;text-align:start;cursor:pointer}._option_1vjt0_96:hover,._option_1vjt0_96:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._option_1vjt0_96[aria-checked=true]{font-weight:600}._option_1vjt0_96:disabled{cursor:not-allowed;opacity:.5}._separator_1vjt0_125{height:1px;margin:.25rem .5rem;padding:0;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0;list-style:none}._wrap_58i0x_1._wrap_58i0x_1{display:inline-flex;flex-direction:row;flex-shrink:0;align-items:center;gap:.25rem}._wrap_58i0x_1._wrapToolbar_58i0x_9{align-self:stretch;padding:5px .35rem 0}._wrap_58i0x_1 ._field_58i0x_14{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_58i0x_1 ._input_58i0x_22{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;width:3.4rem;height:100%;margin:0;padding:0 1.35rem 0 .35rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._wrap_58i0x_1 ._input_58i0x_22:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_58i0x_1 ._toggle_58i0x_41,._wrap_58i0x_1 ._chevron_58i0x_42{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.15rem;margin:0;padding:0;border:0;border-radius:0 3px 3px 0;background:transparent;color:var(--wysiwyg-chrome-text, #444)}._wrap_58i0x_1 ._toggle_58i0x_41{cursor:pointer}._wrap_58i0x_1 ._chevron_58i0x_42{pointer-events:none}._wrap_58i0x_1 ._toggle_58i0x_41:after,._wrap_58i0x_1 ._chevron_58i0x_42:after{content:"";display:block;width:0;height:0;margin:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._wrap_58i0x_1 ._unit_58i0x_80{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;width:3.4rem;height:100%;margin:0;padding:0 1.35rem 0 .35rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._wrap_58i0x_1 ._unit_58i0x_80::-ms-expand{display:none}._wrap_58i0x_1 ._unit_58i0x_80:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_58i0x_1 ._input_58i0x_22:disabled,._wrap_58i0x_1 ._toggle_58i0x_41:disabled,._wrap_58i0x_1 ._unit_58i0x_80:disabled{cursor:not-allowed;opacity:.5}._list_58i0x_110{position:fixed;z-index:1300;min-width:4.5rem;max-height:min(12rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._list_58i0x_110 ._option_58i0x_125{display:block;width:100%;margin:0;padding:.2rem .5rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.3 system-ui,sans-serif;text-align:start;cursor:pointer}._list_58i0x_110 ._option_58i0x_125:hover,._list_58i0x_110 ._option_58i0x_125:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._backdrop_1p9zk_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._backdrop_1p9zk_1 ._dialog_1p9zk_12{display:flex;flex-direction:column;box-sizing:border-box;width:min(32rem,100%);max-width:100%;min-width:0;max-height:100%;margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._backdrop_1p9zk_1 ._dialogWide_1p9zk_31{width:min(38rem,100%)}._backdrop_1p9zk_1 ._header_1p9zk_35{flex-shrink:0;margin:0;padding:.75rem 1rem .5rem;font-size:1rem;font-weight:600}._backdrop_1p9zk_1 ._tabs_1p9zk_43{display:flex;flex-shrink:0;flex-wrap:wrap;gap:.15rem;padding:0 1rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._backdrop_1p9zk_1 ._tab_1p9zk_43{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0 0 -1px;padding:.4rem .75rem;border:1px solid transparent;border-bottom:0;border-radius:4px 4px 0 0;background:transparent;color:inherit;font:inherit;cursor:pointer}._backdrop_1p9zk_1 ._tab_1p9zk_43[aria-selected=true]{border-color:var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-dialog, #fff);font-weight:600}._backdrop_1p9zk_1 ._tab_1p9zk_43:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._body_1p9zk_76{display:flex;flex:1 1 auto;flex-direction:column;gap:.85rem;min-height:0;padding:1rem;overflow:auto}._backdrop_1p9zk_1 ._field_1p9zk_86{display:flex;flex-direction:column;gap:.35rem}._backdrop_1p9zk_1 ._label_1p9zk_92{font-weight:600}._backdrop_1p9zk_1 ._sizeRow_1p9zk_96{display:flex;gap:.4rem;align-items:center}._backdrop_1p9zk_1 ._fileRow_1p9zk_102{display:flex;align-items:center;gap:.5rem}._backdrop_1p9zk_1 ._fileName_1p9zk_108{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--wysiwyg-chrome-text-muted, #555)}._backdrop_1p9zk_1 ._previewImage_1p9zk_115{display:block;max-width:100%;max-height:8rem;margin-top:.35rem;object-fit:contain;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px}._backdrop_1p9zk_1 ._marks_1p9zk_125{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;border:0}._backdrop_1p9zk_1 ._mark_1p9zk_125{display:flex;align-items:center;gap:.4rem}._backdrop_1p9zk_1 ._actions_1p9zk_140{display:flex;flex-shrink:0;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem 1rem}._backdrop_1p9zk_1 ._actionsSpread_1p9zk_148{justify-content:space-between}._backdrop_1p9zk_1 ._actionsEnd_1p9zk_152{display:flex;gap:.5rem}._backdrop_1p9zk_1 ._headerRow_1p9zk_157{display:flex;flex-shrink:0;align-items:flex-start;gap:.5rem;padding:.75rem .5rem .5rem 1rem}._backdrop_1p9zk_1 ._headerRow_1p9zk_157 ._header_1p9zk_35{flex:1;padding:0}._backdrop_1p9zk_1 ._close_1p9zk_170{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.25rem;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._backdrop_1p9zk_1 ._close_1p9zk_170:hover,._backdrop_1p9zk_1 ._close_1p9zk_170:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0)}._backdrop_1p9zk_1 ._nameSection_1p9zk_187{flex-shrink:0;padding:.5rem 1rem .75rem}._backdrop_1p9zk_1 ._nameInput_1p9zk_192{box-sizing:border-box;width:100%;margin:0;padding:.35rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._nameInput_1p9zk_192:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_1p9zk_1 ._labelRow_1p9zk_209{display:flex;align-items:center;gap:.35rem}._backdrop_1p9zk_1 ._help_1p9zk_215{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;margin:0;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:50%;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:.7rem/1 system-ui,sans-serif;font-weight:700;cursor:help}._backdrop_1p9zk_1 ._textInput_1p9zk_233{box-sizing:border-box;width:100%;margin:0;padding:.35rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._fullSelect_1p9zk_245{width:100%}._backdrop_1p9zk_1 ._error_1p9zk_249{color:var(--wysiwyg-chrome-danger, #b33);font-size:.8rem}._backdrop_1p9zk_1 ._emptyHint_1p9zk_254{margin:0;color:var(--wysiwyg-chrome-text-muted, #666)}._backdrop_1p9zk_1 ._action_1p9zk_140[aria-pressed=true],._backdrop_1p9zk_1 ._action_1p9zk_140[aria-checked=true]{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary-soft, #e8eef8)}._backdrop_1p9zk_1 ._textarea_1p9zk_265{box-sizing:border-box;width:100%;min-height:6.5rem;margin:0;padding:.4rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:.8rem/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;resize:vertical}._backdrop_1p9zk_1 ._actionDanger_1p9zk_279{border-color:var(--wysiwyg-chrome-danger, #c44);background:var(--wysiwyg-chrome-dialog, #fff);color:var(--wysiwyg-chrome-danger, #b33)}._backdrop_1p9zk_1 ._confirmBody_1p9zk_285{flex-shrink:0;padding:1rem}._backdrop_1p9zk_1 ._emptyPanel_1p9zk_290{min-height:4rem}._backdrop_1p9zk_1 ._nestedPanel_1p9zk_294{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;margin:.85rem 1rem .15rem;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px}._backdrop_1p9zk_1 ._nestedPanel_1p9zk_294 ._tabs_1p9zk_43{padding-top:.4rem}._spinnerWrap_1p9zk_309{display:flex;align-items:center;justify-content:center;padding:.5rem .75rem}._spinner_1p9zk_309{width:1.1rem;height:1.1rem;border:2px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-top-color:var(--wysiwyg-chrome-primary, #4a7fd4);border-radius:50%;animation:_spin_1p9zk_309 .7s linear infinite}@keyframes _spin_1p9zk_309{to{transform:rotate(360deg)}}._backdrop_1p9zk_1 ._action_1p9zk_140{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._backdrop_1p9zk_1 ._actionPrimary_1p9zk_344{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary, #4a7fd4);color:var(--wysiwyg-chrome-primary-fg, #fff)}._backdrop_1p9zk_1 ._action_1p9zk_140:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._action_1p9zk_140:focus-visible,._backdrop_1p9zk_1 ._tab_1p9zk_43:focus-visible,._backdrop_1p9zk_1 ._close_1p9zk_170:focus-visible,._backdrop_1p9zk_1 ._iconButton_1p9zk_358:focus-visible,._backdrop_1p9zk_1 ._select_1p9zk_359:focus-visible,._backdrop_1p9zk_1 ._lengthInput_1p9zk_360:focus-visible,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361:focus-visible,._backdrop_1p9zk_1 ._textInput_1p9zk_233:focus-visible,._backdrop_1p9zk_1 ._textarea_1p9zk_265:focus-visible,._backdrop_1p9zk_1 ._help_1p9zk_215:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_1p9zk_1 ._group_1p9zk_369{display:flex;flex-direction:column;gap:.75rem;margin:0;padding:.75rem;border:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-radius:4px}._backdrop_1p9zk_1 ._nestedGroup_1p9zk_379{display:flex;flex-direction:column;gap:.5rem;margin:0;padding:.6rem .7rem;border:1px solid var(--wysiwyg-chrome-border, #ececec);border-radius:4px}._backdrop_1p9zk_1 ._subLabel_1p9zk_389{font-weight:600}._backdrop_1p9zk_1 ._iconRow_1p9zk_393{display:flex;gap:.25rem}._backdrop_1p9zk_1 ._iconButton_1p9zk_358{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;cursor:pointer}._backdrop_1p9zk_1 ._iconButton_1p9zk_358[aria-checked=true],._backdrop_1p9zk_1 ._iconButton_1p9zk_358[aria-pressed=true]{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary-soft, #e8eef8)}._backdrop_1p9zk_1 ._iconButton_1p9zk_358:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._lengthField_1p9zk_425{display:flex;flex-direction:column;gap:.25rem}._backdrop_1p9zk_1 ._sideLabel_1p9zk_431{font-weight:600}._backdrop_1p9zk_1 ._lengthRow_1p9zk_435{display:flex;gap:.35rem;align-items:center}._backdrop_1p9zk_1 ._lengthInput_1p9zk_360,._backdrop_1p9zk_1 ._select_1p9zk_359,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361{box-sizing:border-box;margin:0;padding:.3rem .4rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._lengthInput_1p9zk_360{width:4.75rem}._backdrop_1p9zk_1 ._select_1p9zk_359,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361{min-width:4.5rem}._backdrop_1p9zk_1 ._sideGrid_1p9zk_463,._backdrop_1p9zk_1 ._shadowGrid_1p9zk_464{display:grid;grid-template-columns:1fr 1fr;gap:.55rem .75rem}@media(max-width:28rem){._backdrop_1p9zk_1 ._sideGrid_1p9zk_463,._backdrop_1p9zk_1 ._shadowGrid_1p9zk_464{grid-template-columns:1fr}}._frame_bwkh8_1{position:fixed;z-index:1140;box-sizing:border-box;pointer-events:none;border:1px solid #4a90d9}._handle_bwkh8_9{position:absolute;box-sizing:border-box;padding:0;pointer-events:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;box-shadow:none}._handle_bwkh8_9:focus{outline:none}._handle_bwkh8_9:focus-visible{outline:2px solid #8ab4ff;outline-offset:1px}._handleEast_bwkh8_29{top:0;right:-4px;width:8px;height:calc(100% - 10px);cursor:e-resize}._handleSouth_bwkh8_37{left:0;bottom:-4px;width:calc(100% - 10px);height:8px;cursor:s-resize}._handleSouthEast_bwkh8_45{right:-5px;bottom:-5px;z-index:1;width:10px;height:10px;cursor:se-resize;border:1px solid #4a90d9;background:#fff}._grid_1bpma_1{display:grid;grid-template-columns:repeat(10,1.15rem);gap:2px;width:max-content}._cell_1bpma_8{width:1.15rem;height:1.15rem;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);background:var(--wysiwyg-chrome-input, #fff);cursor:pointer}._cell_1bpma_8[data-active=true]{background:var(--wysiwyg-chrome-selected, #cfe3ff);border-color:var(--wysiwyg-chrome-primary, #4a90d9)}._cell_1bpma_8:focus-visible{outline:2px solid var(--wysiwyg-chrome-primary, #4a90d9);outline-offset:1px}._sizeLabel_1bpma_27{margin:.35rem 0 0;color:var(--wysiwyg-chrome-text, #444);font-variant-numeric:tabular-nums}._sizeFields_1bpma_33{align-items:flex-end}._numberInput_1bpma_37{box-sizing:border-box;width:4.5rem;margin:0;padding:.35rem .4rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-input, #fff);color:inherit;font:inherit}._numberInput_1bpma_37:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_9d3gw_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._dialog_9d3gw_12{display:flex;flex-direction:column;width:min(90vw,72rem);height:min(90vh,56rem);max-height:calc(100% - 2rem);margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._headerRow_9d3gw_29{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem .5rem .5rem 1rem}._header_9d3gw_29{flex:1;margin:0;padding:0;font-size:1rem;font-weight:600}._close_9d3gw_44{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.25rem;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._close_9d3gw_44:hover,._close_9d3gw_44:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0)}._close_9d3gw_44:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._body_9d3gw_66{flex:1;min-height:0;overflow:hidden;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-dialog-muted, #f3f3f3)}._frame_9d3gw_75{display:block;width:100%;height:100%;border:0;background:#fff}._actions_9d3gw_83{display:flex;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem 1rem}._action_9d3gw_83{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._action_9d3gw_83:hover,._action_9d3gw_83:focus-visible{background:var(--wysiwyg-chrome-dialog, #fff)}._action_9d3gw_83:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._panel_6xdnw_1{position:fixed;right:16px;bottom:16px;z-index:10000;width:min(360px,calc(100vw - 32px));max-height:min(480px,calc(100vh - 32px));display:flex;flex-direction:column;border:1px solid var(--wysiwyg-border-color, #d0d0d0);border-radius:8px;background:var(--wysiwyg-surface-background, #fff);color:var(--wysiwyg-text-color, #222);box-shadow:0 8px 24px #0000001f}._header_6xdnw_17{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 12px 8px;border-bottom:1px solid var(--wysiwyg-border-color, #e8e8e8)}._title_6xdnw_26{margin:0;font-size:.9375rem;font-weight:600}._close_6xdnw_32{display:flex;align-items:center;justify-content:center;padding:4px;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._close_6xdnw_32:hover{background:#0000000f}._messages_6xdnw_48{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:12px}._empty_6xdnw_57{margin:0;color:var(--wysiwyg-muted-color, #666);font-size:.875rem}._message_6xdnw_48{display:flex;flex-direction:column;gap:4px}._messageHeader_6xdnw_69{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:.8125rem}._author_6xdnw_77{font-weight:600}._time_6xdnw_81{color:var(--wysiwyg-muted-color, #666);font-size:.75rem}._body_6xdnw_86{margin:0;font-size:.875rem;line-height:1.45}._reply_6xdnw_92{display:flex;flex-direction:column;gap:8px;padding:12px;border-top:1px solid var(--wysiwyg-border-color, #e8e8e8)}._input_6xdnw_100{width:100%;min-height:72px;padding:8px;border:1px solid var(--wysiwyg-border-color, #d0d0d0);border-radius:6px;font:inherit;resize:vertical;box-sizing:border-box}._post_6xdnw_111{align-self:flex-end;padding:6px 14px;border:none;border-radius:6px;background:var(--wysiwyg-accent-color, #2563eb);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer}._post_6xdnw_111:disabled{opacity:.5;cursor:not-allowed}._backdrop_11w4e_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._dialog_11w4e_12{display:flex;flex-direction:column;box-sizing:border-box;width:min(52rem,100%);max-width:100%;min-width:0;max-height:100%;margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._header_11w4e_31{flex-shrink:0;margin:0;padding:.75rem 1rem .5rem;font-size:1rem;font-weight:600}._body_11w4e_39{display:flex;flex:1 1 auto;flex-direction:column;gap:.75rem;min-height:0;padding:.75rem 1rem;overflow:auto}._group_11w4e_49{border:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-radius:6px;background:var(--wysiwyg-chrome-dialog-group, #fafafa)}._groupDragging_11w4e_55{opacity:.55}._groupDropTarget_11w4e_59{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._groupHeader_11w4e_64{display:flex;align-items:center;gap:.4rem;padding:.45rem .6rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #ececec)}._groupTitle_11w4e_72{flex:1;font-weight:600}._dragHandle_11w4e_77,._moveButton_11w4e_78{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;margin:0;padding:0;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--wysiwyg-chrome-text-muted, #555);cursor:grab}._moveButton_11w4e_78{cursor:pointer}._dragHandle_11w4e_77:hover,._moveButton_11w4e_78:hover,._dragHandle_11w4e_77:focus-visible,._moveButton_11w4e_78:focus-visible{border-color:var(--wysiwyg-chrome-divider, #d0d0d0);background:var(--wysiwyg-chrome-dialog, #fff);color:var(--wysiwyg-chrome-text-strong, #111)}._dragHandle_11w4e_77:focus-visible,._moveButton_11w4e_78:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._dragHandle_11w4e_77:disabled,._moveButton_11w4e_78:disabled{cursor:not-allowed;opacity:.4}._items_11w4e_119{display:flex;flex-wrap:wrap;gap:.75rem 1rem;padding:.75rem .85rem .85rem}._item_11w4e_119{display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:4.5rem;max-width:6.5rem}._itemIcon_11w4e_135{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:var(--wysiwyg-chrome-icon, #333)}._itemTitle_11w4e_144{text-align:center;font-size:.75rem;line-height:1.25;overflow-wrap:anywhere}._itemCheckbox_11w4e_151{margin:0}._actions_11w4e_155{display:flex;flex-shrink:0;justify-content:space-between;gap:.5rem;padding:.75rem 1rem 1rem}._action_11w4e_155{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._action_11w4e_155:hover,._action_11w4e_155:focus-visible{background:var(--wysiwyg-chrome-dialog, #fff)}._action_11w4e_155:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._action_11w4e_155:disabled{cursor:not-allowed;opacity:.5}._spinnerWrap_11w4e_191{display:flex;align-items:center;justify-content:center;min-height:6rem}._spinner_11w4e_191{width:1.1rem;height:1.1rem;border:2px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-top-color:var(--wysiwyg-chrome-primary, #4a7fd4);border-radius:50%;animation:_spin_11w4e_191 .7s linear infinite}@keyframes _spin_11w4e_191{to{transform:rotate(360deg)}}._wrap_1gtdc_1._wrap_1gtdc_1{display:inline-flex;flex-shrink:0;align-items:stretch}._wrap_1gtdc_1._wrapToolbar_1gtdc_7{align-self:stretch;padding:5px .35rem 0}._wrap_1gtdc_1 ._field_1gtdc_12{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_1gtdc_1 ._trigger_1gtdc_20{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;min-width:8.5rem;height:100%;margin:0;padding:0 1.35rem 0 .45rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif;text-align:start;cursor:pointer}._wrap_1gtdc_1 ._trigger_1gtdc_20:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_1gtdc_1 ._trigger_1gtdc_20:disabled{cursor:not-allowed;opacity:.5}._wrap_1gtdc_1 ._chevron_1gtdc_46{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;width:1.15rem;pointer-events:none;color:var(--wysiwyg-chrome-text, #444)}._wrap_1gtdc_1 ._chevron_1gtdc_46:after{content:"";display:block;width:0;height:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._list_1gtdc_69{position:fixed;z-index:1300;min-width:10rem;max-height:min(18rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._option_1gtdc_84{display:block;width:100%;margin:0;padding:.25rem .75rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font-family:system-ui,sans-serif;line-height:1.25;text-align:start;cursor:pointer}._option_1gtdc_84:hover,._option_1gtdc_84:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._option_1gtdc_84[aria-checked=true]{font-weight:600}._option_1gtdc_84:disabled{cursor:not-allowed;opacity:.5}._separator_1gtdc_113{height:1px;margin:.25rem .5rem;padding:0;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0;list-style:none}._root_6d8ko_1{all:revert;position:relative;box-sizing:border-box;display:flex;flex-direction:column;flex:1 1 auto;width:100%;min-width:0;height:100%;max-height:100%;min-height:16rem;border:var(--wysiwyg-border-width, 1px) solid var(--wysiwyg-border-color, var(--wysiwyg-chrome-divider, #d0d0d0));border-radius:var(--wysiwyg-border-radius, 6px);box-shadow:var(--wysiwyg-border-shadow, none);overflow:hidden;background:#fff;color:#111;font-family:system-ui,sans-serif;font-size:1rem;font-weight:400;font-style:normal;font-variant:normal;line-height:1.5;letter-spacing:normal;text-align:start;text-indent:0;text-transform:none;text-decoration:none;text-shadow:none;white-space:normal;word-spacing:normal;direction:ltr}._root_6d8ko_1._fullscreen_6d8ko_36{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;width:100%;height:100%;min-height:0;border:none;border-radius:0;box-shadow:none}._root_6d8ko_1 ._exitFullscreen_6d8ko_48{position:absolute;z-index:2;top:.4rem;right:.4rem;display:inline-flex;align-items:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2rem;height:2rem;margin:0;padding:0;border:0;border-radius:4px;background:var(--wysiwyg-chrome-menu, #fff);color:var(--wysiwyg-chrome-text, #444);font:inherit;cursor:pointer;box-shadow:0 1px 3px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 20%))}._root_6d8ko_1 ._exitFullscreen_6d8ko_48:hover{background:var(--wysiwyg-chrome-hover, #f4f4f4)}._root_6d8ko_1 ._exitFullscreen_6d8ko_48:focus{outline:none;box-shadow:inset 0 0 0 2px var(--wysiwyg-chrome-focus, #8ab4ff)}._root_6d8ko_1 ._exitFullscreenIcon_6d8ko_79{display:block;width:1rem;height:1rem;flex-shrink:0}._root_6d8ko_1 *:not(:is(svg,svg *)),._root_6d8ko_1 *:before,._root_6d8ko_1 *:after{all:revert;box-sizing:border-box}._root_6d8ko_1 ._menuChrome_6d8ko_94{display:flex;flex-direction:column;flex-shrink:0;align-items:stretch;z-index:2;width:100%;min-width:0}._root_6d8ko_1 ._body_6d8ko_105._body_6d8ko_105{position:relative;display:grid;flex:1 1 auto;min-width:0;min-height:0;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}._root_6d8ko_1 ._body_6d8ko_105._body_6d8ko_105[data-icon-dock=top]{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}._root_6d8ko_1 ._body_6d8ko_105._body_6d8ko_105[data-icon-dock=bottom]{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}._root_6d8ko_1 ._body_6d8ko_105._body_6d8ko_105[data-icon-dock=left]{grid-template-columns:12rem minmax(0,1fr);grid-template-rows:minmax(min-content,1fr)}._root_6d8ko_1 ._body_6d8ko_105._body_6d8ko_105[data-icon-dock=right]{grid-template-columns:minmax(0,1fr) 12rem;grid-template-rows:minmax(min-content,1fr)}._root_6d8ko_1 ._iconChrome_6d8ko_135._iconChrome_6d8ko_135{display:flex;flex-direction:column;align-items:stretch;z-index:1;min-width:0}._root_6d8ko_1[data-toolbar-position=top] ._iconChrome_6d8ko_135{width:100%;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_6d8ko_1[data-toolbar-position=bottom] ._iconChrome_6d8ko_135{width:100%;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_6d8ko_1[data-toolbar-position=left] ._iconChrome_6d8ko_135._iconChrome_6d8ko_135,._root_6d8ko_1[data-toolbar-position=right] ._iconChrome_6d8ko_135._iconChrome_6d8ko_135{align-self:stretch;box-sizing:border-box;width:100%;min-width:12rem;overflow-x:hidden;overflow-y:auto}._root_6d8ko_1[data-toolbar-position=left] ._iconChrome_6d8ko_135{border-right:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_6d8ko_1[data-toolbar-position=right] ._iconChrome_6d8ko_135{border-left:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_6d8ko_1[data-toolbar-position=left] ._iconChrome_6d8ko_135>*,._root_6d8ko_1[data-toolbar-position=right] ._iconChrome_6d8ko_135>*{width:100%;min-width:0;height:auto;min-height:100%}._root_6d8ko_1 ._workspace_6d8ko_179{position:relative;display:flex;flex:1 1 auto;flex-direction:column;min-width:0;min-height:0;overflow:auto;padding:1rem;background:#f0f0f0}._root_6d8ko_1 ._workspacePageSized_6d8ko_191{align-items:center}._root_6d8ko_1 ._pageCanvasViewport_6d8ko_195{display:flex;flex:1 0 auto;flex-direction:column;align-items:center;width:100%;min-height:min-content}._root_6d8ko_1 ._pageCanvasViewport_6d8ko_195[data-page-canvas-sized]{flex:0 0 auto}._root_6d8ko_1 ._pageCanvasViewport_6d8ko_195[data-page-canvas-sized] ._multiPageContainer_6d8ko_208{min-height:min-content}._root_6d8ko_1 ._htmlFileDropOverlay_6d8ko_212{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;pointer-events:none;background:#ffffffd9;color:#111;font-size:1rem;font-weight:600}._root_6d8ko_1 ._surface_6d8ko_226{width:100%;min-height:100%;background:#fff;box-shadow:0 1px 3px #0000001f}._root_6d8ko_1 ._visual_6d8ko_233{flex:1 0 auto;min-height:100%;padding:.75rem;outline:none;user-select:text;-webkit-user-select:text}._root_6d8ko_1 ._visual_6d8ko_233[data-page-sized]{flex:0 0 auto;width:auto;min-height:auto;margin:0 auto;padding:0;box-sizing:border-box}._root_6d8ko_1 ._visual_6d8ko_233:focus{box-shadow:inset 0 0 0 2px #8ab4ff}._root_6d8ko_1 ._visual_6d8ko_233:empty:before{content:attr(data-placeholder);color:#888}._root_6d8ko_1 ._visual_6d8ko_233[aria-disabled=true]{opacity:.6;background:#f7f7f7}._root_6d8ko_1 ._multiPageContainer_6d8ko_208{display:flex;flex-direction:column;align-items:center;width:100%;min-height:100%}._root_6d8ko_1 ._pageBlock_6d8ko_273{display:flex;flex-direction:column;width:100%;align-items:center}._root_6d8ko_1 ._pageGap_6d8ko_280{flex-shrink:0;height:1.5rem;background:var(--wysiwyg-toolbar-background, var(--wysiwyg-chrome-toolbar, #f4f4f4))}._root_6d8ko_1 ._pageSurface_6d8ko_286{flex-shrink:0;min-height:12rem}._root_6d8ko_1 ._html_6d8ko_212{display:block;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;flex:1 1 auto;width:100%;margin:0;min-height:100%;padding:.75rem;border:0;border-radius:0;resize:none;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;font-weight:400;font-style:normal;line-height:1.5;letter-spacing:normal;color:#111;outline:none;background:#fff}._root_6d8ko_1 ._html_6d8ko_212:focus{box-shadow:inset 0 0 0 2px #8ab4ff}._root_6d8ko_1 ._html_6d8ko_212:disabled{opacity:.6}._visual_6d8ko_233 p{margin:0 0 .75em}._visual_6d8ko_233 p:last-child{margin-bottom:0}._visual_6d8ko_233 h1,._visual_6d8ko_233 h2,._visual_6d8ko_233 h3,._visual_6d8ko_233 h4,._visual_6d8ko_233 h5,._visual_6d8ko_233 h6{margin:1em 0 .5em;font-weight:600;line-height:1.25;color:inherit}._visual_6d8ko_233 h1:first-child,._visual_6d8ko_233 h2:first-child,._visual_6d8ko_233 h3:first-child,._visual_6d8ko_233 h4:first-child,._visual_6d8ko_233 h5:first-child,._visual_6d8ko_233 h6:first-child{margin-top:0}._visual_6d8ko_233 h1{font-size:1.75rem}._visual_6d8ko_233 h2{font-size:1.5rem}._visual_6d8ko_233 h3{font-size:1.25rem}._visual_6d8ko_233 h4{font-size:1.125rem}._visual_6d8ko_233 h5{font-size:1rem}._visual_6d8ko_233 h6{font-size:.875rem}._visual_6d8ko_233 ul,._visual_6d8ko_233 ol{margin:0 0 .75em;padding-left:1.5em}._visual_6d8ko_233 li{margin:.25em 0}._visual_6d8ko_233 a{color:#06c;text-decoration:underline}._visual_6d8ko_233 strong,._visual_6d8ko_233 b{font-weight:700}._visual_6d8ko_233 em,._visual_6d8ko_233 i{font-style:italic}._visual_6d8ko_233 u{text-decoration:underline}._visual_6d8ko_233 s{text-decoration:line-through}._visual_6d8ko_233 blockquote{margin:0 0 .75em;padding:0 0 0 .75em;border:0;border-left:3px solid #d0d0d0;color:#444}._visual_6d8ko_233 code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875em;background:#f4f4f4;padding:.1em .3em;border-radius:3px}._visual_6d8ko_233 pre{margin:0 0 .75em;padding:.75em;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;line-height:1.5;background:#f4f4f4;border-radius:4px}._visual_6d8ko_233 pre code{background:transparent;padding:0;font-size:inherit}._visual_6d8ko_233 hr{margin:1em 0;border:0;border-top:1px solid #d0d0d0}._visual_6d8ko_233 img{max-width:100%;vertical-align:middle}._root_6d8ko_1[data-comments-visible] .wysiwyg-comment-anchor{background-color:#ffd40059;outline:1px solid rgba(255,170,0,.8)}._root_6d8ko_1[data-comments-visible] img.wysiwyg-comment-anchor{outline:2px solid rgba(255,170,0,.9);outline-offset:2px}
1
+ ._chrome_boy0f_1{--wysiwyg-chrome-text: #444;--wysiwyg-chrome-text-strong: #111;--wysiwyg-chrome-text-muted: #555;--wysiwyg-chrome-toolbar: #f0f0f0;--wysiwyg-chrome-menu: #fff;--wysiwyg-chrome-border: #e5e5e5;--wysiwyg-chrome-divider: #d0d0d0;--wysiwyg-chrome-hover: #f0f0f0;--wysiwyg-chrome-pressed: #ececec;--wysiwyg-chrome-dialog: #fff;--wysiwyg-chrome-dialog-text: #222;--wysiwyg-chrome-dialog-border: #c8c8c8;--wysiwyg-chrome-dialog-muted: #f7f7f7;--wysiwyg-chrome-dialog-group: #fafafa;--wysiwyg-chrome-input: #fff;--wysiwyg-chrome-focus: #8ab4ff;--wysiwyg-chrome-backdrop: rgb(0 0 0 / 32%);--wysiwyg-chrome-shadow: rgb(0 0 0 / 18%);--wysiwyg-chrome-menu-shadow: rgb(0 0 0 / 8%);--wysiwyg-chrome-tooltip-bg: #222;--wysiwyg-chrome-tooltip-fg: #fff;--wysiwyg-chrome-selected: #e8f0fe;--wysiwyg-chrome-danger: #b33;--wysiwyg-chrome-primary: #4a7fd4;--wysiwyg-chrome-primary-fg: #fff;--wysiwyg-chrome-primary-soft: #e8eef8;--wysiwyg-chrome-empty: #ddd;--wysiwyg-chrome-icon: #333}._chrome_boy0f_1[data-wysiwyg-theme=dark]{--wysiwyg-chrome-text: #e4e4e4;--wysiwyg-chrome-text-strong: #fff;--wysiwyg-chrome-text-muted: #bbb;--wysiwyg-chrome-toolbar: #2b2b2b;--wysiwyg-chrome-menu: #1e1e1e;--wysiwyg-chrome-border: #3a3a3a;--wysiwyg-chrome-divider: #4a4a4a;--wysiwyg-chrome-hover: #3a3a3a;--wysiwyg-chrome-pressed: #444;--wysiwyg-chrome-dialog: #252525;--wysiwyg-chrome-dialog-text: #e8e8e8;--wysiwyg-chrome-dialog-border: #4a4a4a;--wysiwyg-chrome-dialog-muted: #1a1a1a;--wysiwyg-chrome-dialog-group: #1a1a1a;--wysiwyg-chrome-input: #1e1e1e;--wysiwyg-chrome-focus: #8ab4ff;--wysiwyg-chrome-backdrop: rgb(0 0 0 / 55%);--wysiwyg-chrome-shadow: rgb(0 0 0 / 45%);--wysiwyg-chrome-menu-shadow: rgb(0 0 0 / 40%);--wysiwyg-chrome-tooltip-bg: #eee;--wysiwyg-chrome-tooltip-fg: #111;--wysiwyg-chrome-selected: #2a3a50;--wysiwyg-chrome-danger: #f66;--wysiwyg-chrome-primary: #6a9ae0;--wysiwyg-chrome-primary-fg: #111;--wysiwyg-chrome-primary-soft: #2a3a50;--wysiwyg-chrome-empty: #555;--wysiwyg-chrome-icon: #eee}._menu_c1m45_1{position:fixed;z-index:1150;display:flex;flex-direction:column;min-width:12rem;max-height:calc(100vh - 16px);margin:0;padding:.25rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-chrome-menu, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 8%));color:var(--wysiwyg-chrome-text, #444);font:.875rem/1.4 system-ui,sans-serif}._item_c1m45_19{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;width:100%;margin:0;padding:.4rem .75rem;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;text-align:start;white-space:nowrap;cursor:pointer;box-shadow:none}._item_c1m45_19:hover,._item_c1m45_19:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0);color:var(--wysiwyg-chrome-text-strong, #111)}._item_c1m45_19:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._item_c1m45_19:disabled{cursor:not-allowed;opacity:.5}._item_c1m45_19:disabled:hover,._item_c1m45_19:disabled:focus-visible{background:transparent;color:inherit}._separator_c1m45_59{height:1px;margin:.25rem .5rem;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0}._backdrop_11w4e_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._dialog_11w4e_12{display:flex;flex-direction:column;box-sizing:border-box;width:min(52rem,100%);max-width:100%;min-width:0;max-height:100%;margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._header_11w4e_31{flex-shrink:0;margin:0;padding:.75rem 1rem .5rem;font-size:1rem;font-weight:600}._body_11w4e_39{display:flex;flex:1 1 auto;flex-direction:column;gap:.75rem;min-height:0;padding:.75rem 1rem;overflow:auto}._group_11w4e_49{border:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-radius:6px;background:var(--wysiwyg-chrome-dialog-group, #fafafa)}._groupDragging_11w4e_55{opacity:.55}._groupDropTarget_11w4e_59{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._groupHeader_11w4e_64{display:flex;align-items:center;gap:.4rem;padding:.45rem .6rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #ececec)}._groupTitle_11w4e_72{flex:1;font-weight:600}._dragHandle_11w4e_77,._moveButton_11w4e_78{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:1.6rem;height:1.6rem;margin:0;padding:0;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--wysiwyg-chrome-text-muted, #555);cursor:grab}._moveButton_11w4e_78{cursor:pointer}._dragHandle_11w4e_77:hover,._moveButton_11w4e_78:hover,._dragHandle_11w4e_77:focus-visible,._moveButton_11w4e_78:focus-visible{border-color:var(--wysiwyg-chrome-divider, #d0d0d0);background:var(--wysiwyg-chrome-dialog, #fff);color:var(--wysiwyg-chrome-text-strong, #111)}._dragHandle_11w4e_77:focus-visible,._moveButton_11w4e_78:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._dragHandle_11w4e_77:disabled,._moveButton_11w4e_78:disabled{cursor:not-allowed;opacity:.4}._items_11w4e_119{display:flex;flex-wrap:wrap;gap:.75rem 1rem;padding:.75rem .85rem .85rem}._item_11w4e_119{display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:4.5rem;max-width:6.5rem}._itemIcon_11w4e_135{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;color:var(--wysiwyg-chrome-icon, #333)}._itemTitle_11w4e_144{text-align:center;font-size:.75rem;line-height:1.25;overflow-wrap:anywhere}._itemCheckbox_11w4e_151{margin:0}._actions_11w4e_155{display:flex;flex-shrink:0;justify-content:space-between;gap:.5rem;padding:.75rem 1rem 1rem}._action_11w4e_155{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._action_11w4e_155:hover,._action_11w4e_155:focus-visible{background:var(--wysiwyg-chrome-dialog, #fff)}._action_11w4e_155:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._action_11w4e_155:disabled{cursor:not-allowed;opacity:.5}._spinnerWrap_11w4e_191{display:flex;align-items:center;justify-content:center;min-height:6rem}._spinner_11w4e_191{width:1.1rem;height:1.1rem;border:2px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-top-color:var(--wysiwyg-chrome-primary, #4a7fd4);border-radius:50%;animation:_spin_11w4e_191 .7s linear infinite}@keyframes _spin_11w4e_191{to{transform:rotate(360deg)}}._toolbar_1aggm_1{display:flex;flex-direction:column;align-items:stretch;width:100%;min-width:0}._toolbar_1aggm_1._toolbar_1aggm_1{display:flex;flex-direction:column;container-type:inline-size}._toolbar_1aggm_1._toolbar_1aggm_1[data-toolbar-position=left],._toolbar_1aggm_1._toolbar_1aggm_1[data-toolbar-position=right]{container-type:normal;width:100%;min-width:0;height:auto;min-height:100%}._toolbar_1aggm_1._toolbar_1aggm_1[data-menu-overlay-portal]{container-type:normal;width:0;height:0;min-width:0;overflow:visible}._toolbar_1aggm_1 ._menuBar_1aggm_35{display:flex;align-items:stretch;width:100%;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._toolbar_1aggm_1 ._menuBarDesktop_1aggm_43{display:flex;align-items:stretch;min-width:0}._toolbar_1aggm_1 ._brandMark_1aggm_49{display:inline-flex;flex-shrink:0;align-items:center;padding:.25rem .65rem .25rem .5rem}._toolbar_1aggm_1 ._brandMarkIcon_1aggm_56{display:block;height:2.5rem;width:auto;aspect-ratio:616.23 / 542.09;overflow:visible}._toolbar_1aggm_1 ._brandMarkIcon_1aggm_56 *{stroke:none}._toolbar_1aggm_1 ._menuBarCompact_1aggm_68{display:none;align-items:stretch}._toolbar_1aggm_1[data-compact] ._menuBarDesktop_1aggm_43{display:none}._toolbar_1aggm_1[data-compact] ._menuBarCompact_1aggm_68{display:flex}@container (max-width: 40rem){._toolbar_1aggm_1 ._menuBarDesktop_1aggm_43{display:none}._toolbar_1aggm_1 ._menuBarCompact_1aggm_68{display:flex}}._toolbar_1aggm_1 ._menuWrap_1aggm_91{position:relative;display:flex;align-items:stretch}._toolbar_1aggm_1 ._menuButton_1aggm_97,._toolbar_1aggm_1 ._iconButton_1aggm_98,._toolbar_1aggm_1 ._menuItem_1aggm_99{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;border:0;border-radius:0;background:transparent;font:inherit;font-weight:400;line-height:inherit;letter-spacing:inherit;text-transform:none;text-decoration:none;color:var(--wysiwyg-chrome-text, #444);cursor:pointer;box-shadow:none}._toolbar_1aggm_1 ._menuButton_1aggm_97,._toolbar_1aggm_1 ._menuItem_1aggm_99{color:var(--wysiwyg-menu-color, var(--wysiwyg-chrome-text, #444));font-size:var(--wysiwyg-menu-font-size, .875rem);font-family:var(--wysiwyg-menu-font-family, inherit)}._toolbar_1aggm_1 ._menuButton_1aggm_97{display:inline-flex;align-items:center;padding:.5rem .9rem;text-align:center}._toolbar_1aggm_1 ._menuButton_1aggm_97:after{content:"";display:inline-block;width:0;height:0;margin-left:.4rem;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent;transform:translateY(.08em)}._toolbar_1aggm_1 ._hamburgerButton_1aggm_142:after{content:none;display:none;margin:0;border:0}._toolbar_1aggm_1 ._iconNav_1aggm_149{position:relative;display:flex;flex-wrap:nowrap;align-items:flex-start;width:100%;max-width:100%;min-width:0;background:var(--wysiwyg-toolbar-background, var(--wysiwyg-chrome-toolbar, #f0f0f0))}._toolbar_1aggm_1 ._iconNavMain_1aggm_160{display:flex;flex:1 1 auto;flex-wrap:wrap;align-items:stretch;min-width:0;max-width:100%}._toolbar_1aggm_1 ._iconNavEnd_1aggm_169{display:flex;flex:0 0 auto;flex-wrap:nowrap;align-items:stretch;align-self:flex-start}._toolbar_1aggm_1 ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before{content:"";width:1px;align-self:stretch;margin:.35rem .15rem;background:var(--wysiwyg-chrome-divider, #d0d0d0)}._toolbar_1aggm_1 ._iconGroup_1aggm_185{display:flex;flex:0 0 auto;flex-wrap:wrap;align-items:stretch;max-width:100%}._toolbar_1aggm_1 ._iconNavEnd_1aggm_169 ._iconGroup_1aggm_185{flex-wrap:nowrap}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNav_1aggm_149,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNav_1aggm_149{flex:1 0 auto;flex-direction:column;flex-wrap:nowrap;align-items:stretch;width:100%;min-width:0;max-width:none;height:auto;min-height:100%}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavMain_1aggm_160,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavMain_1aggm_160{flex:1 0 auto;flex-direction:column;flex-wrap:nowrap;width:100%;min-width:0;max-width:none}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavEnd_1aggm_169,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavEnd_1aggm_169{flex-direction:column;margin-top:auto;align-self:stretch}._toolbar_1aggm_1[data-toolbar-position=left] ._iconGroup_1aggm_185,._toolbar_1aggm_1[data-toolbar-position=right] ._iconGroup_1aggm_185{flex-direction:column;flex-wrap:nowrap;width:100%;min-width:0;max-width:none}._toolbar_1aggm_1[data-toolbar-position=left] ._iconGroup_1aggm_185:not(:last-child):after,._toolbar_1aggm_1[data-toolbar-position=right] ._iconGroup_1aggm_185:not(:last-child):after{width:auto;height:1px;margin:.15rem .35rem}._toolbar_1aggm_1[data-toolbar-position=left] ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before,._toolbar_1aggm_1[data-toolbar-position=right] ._iconNavMain_1aggm_160+._iconNavEnd_1aggm_169:before{width:auto;height:1px;align-self:stretch;margin:.15rem .35rem}._toolbar_1aggm_1[data-toolbar-position=left] ._iconButton_1aggm_98[aria-pressed=true],._toolbar_1aggm_1[data-toolbar-position=right] ._iconButton_1aggm_98[aria-pressed=true]{box-shadow:inset -2px 0 0 var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._iconGroup_1aggm_185:not(:last-child):after{content:"";width:1px;align-self:stretch;margin:.35rem .15rem;background:var(--wysiwyg-chrome-divider, #d0d0d0)}._toolbar_1aggm_1 ._iconButton_1aggm_98{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;padding:.5rem .65rem}._toolbar_1aggm_1 ._iconNav_1aggm_149 ._iconButton_1aggm_98{padding:calc(.5rem + 2px) .65rem calc(.5rem - 2px)}._tooltipTrigger_1aggm_276{display:inline-flex;flex-shrink:0;align-items:stretch}._toolbar_1aggm_1 ._iconButton_1aggm_98[aria-pressed=true]{color:var(--wysiwyg-chrome-text-strong, #111);background:var(--wysiwyg-chrome-pressed, #ececec);box-shadow:inset 0 -2px 0 var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._menu_1aggm_35{position:absolute;top:100%;left:0;z-index:2;display:flex;flex-direction:column;min-width:10rem;margin:0;padding:.25rem 0;overflow:visible;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 8%))}._toolbar_1aggm_1 ._submenuWrap_1aggm_305{position:relative}._toolbar_1aggm_1 ._submenu_1aggm_305{top:0;left:100%;z-index:3}._toolbar_1aggm_1 ._submenuTrigger_1aggm_315{justify-content:space-between}._toolbar_1aggm_1 ._submenuTrigger_1aggm_315:after{content:"";display:inline-block;width:0;height:0;margin-left:.75rem;border-style:solid;border-width:.22rem 0 .22rem .28rem;border-color:transparent transparent transparent currentColor}._toolbar_1aggm_1 ._menuOverlay_1aggm_330{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:flex;flex-direction:column;background:var(--wysiwyg-menu-background, var(--wysiwyg-chrome-menu, #fff));color:var(--wysiwyg-menu-color, var(--wysiwyg-chrome-text, #444));font-size:var(--wysiwyg-menu-font-size, .875rem);font-family:var(--wysiwyg-menu-font-family, inherit)}._toolbar_1aggm_1 ._menuOverlayHeader_1aggm_342{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:.5rem;padding:.15rem .15rem .15rem .9rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._toolbar_1aggm_1 ._menuOverlayTitle_1aggm_352{font-size:inherit;font-weight:600;color:inherit}._toolbar_1aggm_1 ._menuOverlayBody_1aggm_358{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:auto}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuWrap_1aggm_91{flex-direction:column;align-items:stretch;width:100%}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuButton_1aggm_97{width:100%;justify-content:space-between}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menu_1aggm_35{position:static;top:auto;left:auto;z-index:auto;min-width:0;width:100%;border:0;border-radius:0;box-shadow:none;padding:0 0 .25rem}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenuWrap_1aggm_305{position:static}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenu_1aggm_305{position:static;top:auto;left:auto;z-index:auto}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._submenuTrigger_1aggm_315:after{transform:rotate(90deg)}._toolbar_1aggm_1 ._menuOverlay_1aggm_330 ._menuItem_1aggm_99{white-space:normal}._toolbar_1aggm_1 ._menuSeparator_1aggm_409{height:1px;margin:.25rem .5rem;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0}._toolbar_1aggm_1 ._menuItem_1aggm_99{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4rem .75rem;text-align:start;white-space:nowrap}._toolbar_1aggm_1 ._menuItem_1aggm_99:hover,._toolbar_1aggm_1 ._menuItem_1aggm_99:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0);color:var(--wysiwyg-chrome-text-strong, #111)}._toolbar_1aggm_1 ._menuItem_1aggm_99[aria-checked=true]{color:var(--wysiwyg-chrome-text-strong, #111);font-weight:600}._toolbar_1aggm_1 ._menuButton_1aggm_97:hover,._toolbar_1aggm_1 ._iconButton_1aggm_98:hover,._toolbar_1aggm_1 ._menuButton_1aggm_97:focus-visible,._toolbar_1aggm_1 ._iconButton_1aggm_98:focus-visible{color:var(--wysiwyg-chrome-text-strong, #111);background:var(--wysiwyg-chrome-hover, #f0f0f0)}._toolbar_1aggm_1 ._menuButton_1aggm_97:focus-visible,._toolbar_1aggm_1 ._iconButton_1aggm_98:focus-visible,._toolbar_1aggm_1 ._menuItem_1aggm_99:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._toolbar_1aggm_1 ._menuButton_1aggm_97:disabled,._toolbar_1aggm_1 ._iconButton_1aggm_98:disabled,._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled{cursor:not-allowed;opacity:.5}._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled:hover,._toolbar_1aggm_1 ._menuItem_1aggm_99:disabled:focus-visible{background:transparent;color:inherit}._toolbar_1aggm_1 ._icon_1aggm_98,._toolbar_1aggm_1 ._icon_1aggm_98 *{overflow:visible;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}._toolbar_1aggm_1 ._icon_1aggm_98{display:block;width:1rem;height:1rem;flex-shrink:0}._tooltip_1aggm_276{position:fixed;z-index:1100;padding:.2rem .45rem;border-radius:3px;background:var(--wysiwyg-chrome-tooltip-bg, #222);color:var(--wysiwyg-chrome-tooltip-fg, #fff);font:.75rem/1.2 system-ui,sans-serif;white-space:nowrap;pointer-events:none}._tooltipElevated_1aggm_494{z-index:1300;max-width:18rem;white-space:normal}._picker_ag1yo_1{display:flex;flex-direction:column;gap:.45rem;box-sizing:border-box;width:14.5rem;padding:.4rem .5rem .5rem;color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._none_ag1yo_12,._customToggle_ag1yo_13,._eyedrop_ag1yo_14{display:flex;align-items:center;gap:.4rem;width:100%;margin:0;padding:.25rem .35rem;border:0;border-radius:3px;background:transparent;color:inherit;font:inherit;text-align:start;cursor:pointer}._none_ag1yo_12:hover,._none_ag1yo_12:focus-visible,._customToggle_ag1yo_13:hover,._customToggle_ag1yo_13:focus-visible,._eyedrop_ag1yo_14:hover,._eyedrop_ag1yo_14:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._none_ag1yo_12[aria-checked=true],._none_ag1yo_12[aria-selected=true]{font-weight:600}._none_ag1yo_12:disabled,._customToggle_ag1yo_13:disabled,._eyedrop_ag1yo_14:disabled,._swatch_ag1yo_48:disabled,._field_ag1yo_49 input:disabled{cursor:not-allowed;opacity:.5}._grid_ag1yo_54,._recents_ag1yo_55{display:grid;grid-template-columns:repeat(8,1.25rem);gap:.22rem;justify-content:space-between}._swatch_ag1yo_48{box-sizing:border-box;width:1.25rem;height:1.25rem;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:2px;cursor:pointer}._swatch_ag1yo_48:hover,._swatch_ag1yo_48:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._swatch_ag1yo_48[aria-checked=true],._swatch_ag1yo_48[aria-selected=true]{outline:2px solid #111;outline-offset:1px}._sectionLabel_ag1yo_84{margin:.15rem 0 0;font-weight:600}._custom_ag1yo_13{display:flex;flex-direction:column;gap:.45rem}._sv_ag1yo_95{position:relative;width:100%;height:7.5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;cursor:crosshair;touch-action:none}._svThumb_ag1yo_105{position:absolute;width:.7rem;height:.7rem;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #111;transform:translate(-50%,-50%);pointer-events:none}._hue_ag1yo_116{width:100%;height:.85rem;margin:0;padding:0;border-radius:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red);cursor:pointer}._hue_ag1yo_116::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:.7rem;height:.85rem;border:2px solid #fff;border-radius:2px;background:transparent;box-shadow:0 0 0 1px #111}._hue_ag1yo_116::-moz-range-thumb{width:.7rem;height:.85rem;border:2px solid #fff;border-radius:2px;background:transparent;box-shadow:0 0 0 1px #111}._rgbRow_ag1yo_155,._hexRow_ag1yo_156{display:flex;align-items:center;gap:.3rem}._field_ag1yo_49{display:flex;flex:1 1 0;flex-direction:column;gap:.1rem;min-width:0}._field_ag1yo_49 label{font-weight:600}._field_ag1yo_49 input{box-sizing:border-box;width:100%;margin:0;padding:.15rem .25rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:inherit;font:inherit}._hexRow_ag1yo_156 ._field_ag1yo_49{flex:1 1 auto}._eyedrop_ag1yo_14{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%23222' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15.5 4.5l4 4-9 9H6.5v-4.5z'/%3E%3Cpath d='M13.5 6.5l4 4'/%3E%3C/svg%3E") 2 18,crosshair}._wrap_hfz5s_1{position:relative;display:inline-flex;flex-shrink:0;align-items:stretch}._button_hfz5s_8{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;min-width:1.75rem;padding:.4rem .5rem .3rem}._icon_hfz5s_18{display:block;width:1rem;height:1rem}._bar_hfz5s_24{display:block;width:1rem;height:.2rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:1px;background:transparent}._barEmpty_hfz5s_33{background:repeating-linear-gradient(-45deg,var(--wysiwyg-chrome-empty, #ddd),var(--wysiwyg-chrome-empty, #ddd) 1px,transparent 1px,transparent 3px)}._popover_hfz5s_43{position:fixed;z-index:1300;max-height:calc(100vh - 8px);overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%))}._wrap_1vjt0_1._wrap_1vjt0_1{display:inline-flex;flex-shrink:0;align-items:stretch}._wrap_1vjt0_1._wrapToolbar_1vjt0_7{align-self:stretch;padding:5px .35rem 0}._wrap_1vjt0_1 ._field_1vjt0_12{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_1vjt0_1 ._trigger_1vjt0_20{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;min-width:9.5rem;max-width:12rem;height:100%;margin:0;padding:0 1.35rem 0 .45rem;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif;text-align:start;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}._wrap_1vjt0_1 ._trigger_1vjt0_20:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_1vjt0_1 ._trigger_1vjt0_20:disabled{cursor:not-allowed;opacity:.5}._wrap_1vjt0_1 ._chevron_1vjt0_50{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;width:1.15rem;pointer-events:none;color:var(--wysiwyg-chrome-text, #444)}._wrap_1vjt0_1 ._chevron_1vjt0_50:after{content:"";display:block;width:0;height:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._list_1vjt0_73{position:fixed;z-index:1300;min-width:12rem;max-height:min(18rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._listInline_1vjt0_88{position:static;z-index:auto;min-width:100%;max-height:min(14rem,calc(100vh - 8px));box-shadow:none}._option_1vjt0_96{display:block;width:100%;margin:0;padding:.3rem .75rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font-size:.875rem;line-height:1.3;text-align:start;cursor:pointer}._option_1vjt0_96:hover,._option_1vjt0_96:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._option_1vjt0_96[aria-checked=true]{font-weight:600}._option_1vjt0_96:disabled{cursor:not-allowed;opacity:.5}._separator_1vjt0_125{height:1px;margin:.25rem .5rem;padding:0;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0;list-style:none}._wrap_58i0x_1._wrap_58i0x_1{display:inline-flex;flex-direction:row;flex-shrink:0;align-items:center;gap:.25rem}._wrap_58i0x_1._wrapToolbar_58i0x_9{align-self:stretch;padding:5px .35rem 0}._wrap_58i0x_1 ._field_58i0x_14{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_58i0x_1 ._input_58i0x_22{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;width:3.4rem;height:100%;margin:0;padding:0 1.35rem 0 .35rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._wrap_58i0x_1 ._input_58i0x_22:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_58i0x_1 ._toggle_58i0x_41,._wrap_58i0x_1 ._chevron_58i0x_42{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.15rem;margin:0;padding:0;border:0;border-radius:0 3px 3px 0;background:transparent;color:var(--wysiwyg-chrome-text, #444)}._wrap_58i0x_1 ._toggle_58i0x_41{cursor:pointer}._wrap_58i0x_1 ._chevron_58i0x_42{pointer-events:none}._wrap_58i0x_1 ._toggle_58i0x_41:after,._wrap_58i0x_1 ._chevron_58i0x_42:after{content:"";display:block;width:0;height:0;margin:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._wrap_58i0x_1 ._unit_58i0x_80{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;width:3.4rem;height:100%;margin:0;padding:0 1.35rem 0 .35rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif}._wrap_58i0x_1 ._unit_58i0x_80::-ms-expand{display:none}._wrap_58i0x_1 ._unit_58i0x_80:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_58i0x_1 ._input_58i0x_22:disabled,._wrap_58i0x_1 ._toggle_58i0x_41:disabled,._wrap_58i0x_1 ._unit_58i0x_80:disabled{cursor:not-allowed;opacity:.5}._list_58i0x_110{position:fixed;z-index:1300;min-width:4.5rem;max-height:min(12rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._list_58i0x_110 ._option_58i0x_125{display:block;width:100%;margin:0;padding:.2rem .5rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.3 system-ui,sans-serif;text-align:start;cursor:pointer}._list_58i0x_110 ._option_58i0x_125:hover,._list_58i0x_110 ._option_58i0x_125:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._wrap_1gtdc_1._wrap_1gtdc_1{display:inline-flex;flex-shrink:0;align-items:stretch}._wrap_1gtdc_1._wrapToolbar_1gtdc_7{align-self:stretch;padding:5px .35rem 0}._wrap_1gtdc_1 ._field_1gtdc_12{position:relative;display:flex;flex:0 0 auto;align-items:stretch;height:1.6rem}._wrap_1gtdc_1 ._trigger_1gtdc_20{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;min-width:8.5rem;height:100%;margin:0;padding:0 1.35rem 0 .45rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);color:var(--wysiwyg-chrome-dialog-text, #222);font:.75rem/1.2 system-ui,sans-serif;text-align:start;cursor:pointer}._wrap_1gtdc_1 ._trigger_1gtdc_20:focus{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-1px}._wrap_1gtdc_1 ._trigger_1gtdc_20:disabled{cursor:not-allowed;opacity:.5}._wrap_1gtdc_1 ._chevron_1gtdc_46{position:absolute;top:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;width:1.15rem;pointer-events:none;color:var(--wysiwyg-chrome-text, #444)}._wrap_1gtdc_1 ._chevron_1gtdc_46:after{content:"";display:block;width:0;height:0;border-style:solid;border-width:.28rem .22rem 0;border-color:currentColor transparent transparent}._list_1gtdc_69{position:fixed;z-index:1300;min-width:10rem;max-height:min(18rem,calc(100vh - 8px));margin:0;padding:.15rem 0;overflow:auto;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);box-shadow:0 4px 12px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 12%));list-style:none}._option_1gtdc_84{display:block;width:100%;margin:0;padding:.25rem .75rem;border:0;background:transparent;color:var(--wysiwyg-chrome-dialog-text, #222);font-family:system-ui,sans-serif;line-height:1.25;text-align:start;cursor:pointer}._option_1gtdc_84:hover,._option_1gtdc_84:focus-visible{background:var(--wysiwyg-chrome-selected, #e8f0fe);outline:none}._option_1gtdc_84[aria-checked=true]{font-weight:600}._option_1gtdc_84:disabled{cursor:not-allowed;opacity:.5}._separator_1gtdc_113{height:1px;margin:.25rem .5rem;padding:0;background:var(--wysiwyg-chrome-divider, #d0d0d0);border:0;list-style:none}._backdrop_1p9zk_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._backdrop_1p9zk_1 ._dialog_1p9zk_12{display:flex;flex-direction:column;box-sizing:border-box;width:min(32rem,100%);max-width:100%;min-width:0;max-height:100%;margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._backdrop_1p9zk_1 ._dialogWide_1p9zk_31{width:min(38rem,100%)}._backdrop_1p9zk_1 ._header_1p9zk_35{flex-shrink:0;margin:0;padding:.75rem 1rem .5rem;font-size:1rem;font-weight:600}._backdrop_1p9zk_1 ._tabs_1p9zk_43{display:flex;flex-shrink:0;flex-wrap:wrap;gap:.15rem;padding:0 1rem;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._backdrop_1p9zk_1 ._tab_1p9zk_43{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0 0 -1px;padding:.4rem .75rem;border:1px solid transparent;border-bottom:0;border-radius:4px 4px 0 0;background:transparent;color:inherit;font:inherit;cursor:pointer}._backdrop_1p9zk_1 ._tab_1p9zk_43[aria-selected=true]{border-color:var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-dialog, #fff);font-weight:600}._backdrop_1p9zk_1 ._tab_1p9zk_43:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._body_1p9zk_76{display:flex;flex:1 1 auto;flex-direction:column;gap:.85rem;min-height:0;padding:1rem;overflow:auto}._backdrop_1p9zk_1 ._field_1p9zk_86{display:flex;flex-direction:column;gap:.35rem}._backdrop_1p9zk_1 ._label_1p9zk_92{font-weight:600}._backdrop_1p9zk_1 ._sizeRow_1p9zk_96{display:flex;gap:.4rem;align-items:center}._backdrop_1p9zk_1 ._fileRow_1p9zk_102{display:flex;align-items:center;gap:.5rem}._backdrop_1p9zk_1 ._fileName_1p9zk_108{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--wysiwyg-chrome-text-muted, #555)}._backdrop_1p9zk_1 ._previewImage_1p9zk_115{display:block;max-width:100%;max-height:8rem;margin-top:.35rem;object-fit:contain;border:1px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-radius:4px}._backdrop_1p9zk_1 ._marks_1p9zk_125{display:flex;flex-direction:column;gap:.35rem;margin:0;padding:0;border:0}._backdrop_1p9zk_1 ._mark_1p9zk_125{display:flex;align-items:center;gap:.4rem}._backdrop_1p9zk_1 ._actions_1p9zk_140{display:flex;flex-shrink:0;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem 1rem}._backdrop_1p9zk_1 ._actionsSpread_1p9zk_148{justify-content:space-between}._backdrop_1p9zk_1 ._actionsEnd_1p9zk_152{display:flex;gap:.5rem}._backdrop_1p9zk_1 ._headerRow_1p9zk_157{display:flex;flex-shrink:0;align-items:flex-start;gap:.5rem;padding:.75rem .5rem .5rem 1rem}._backdrop_1p9zk_1 ._headerRow_1p9zk_157 ._header_1p9zk_35{flex:1;padding:0}._backdrop_1p9zk_1 ._close_1p9zk_170{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.25rem;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._backdrop_1p9zk_1 ._close_1p9zk_170:hover,._backdrop_1p9zk_1 ._close_1p9zk_170:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0)}._backdrop_1p9zk_1 ._nameSection_1p9zk_187{flex-shrink:0;padding:.5rem 1rem .75rem}._backdrop_1p9zk_1 ._nameInput_1p9zk_192{box-sizing:border-box;width:100%;margin:0;padding:.35rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._nameInput_1p9zk_192:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_1p9zk_1 ._labelRow_1p9zk_209{display:flex;align-items:center;gap:.35rem}._backdrop_1p9zk_1 ._help_1p9zk_215{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;margin:0;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:50%;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:.7rem/1 system-ui,sans-serif;font-weight:700;cursor:help}._backdrop_1p9zk_1 ._textInput_1p9zk_233{box-sizing:border-box;width:100%;margin:0;padding:.35rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._fullSelect_1p9zk_245{width:100%}._backdrop_1p9zk_1 ._error_1p9zk_249{color:var(--wysiwyg-chrome-danger, #b33);font-size:.8rem}._backdrop_1p9zk_1 ._emptyHint_1p9zk_254{margin:0;color:var(--wysiwyg-chrome-text-muted, #666)}._backdrop_1p9zk_1 ._action_1p9zk_140[aria-pressed=true],._backdrop_1p9zk_1 ._action_1p9zk_140[aria-checked=true]{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary-soft, #e8eef8)}._backdrop_1p9zk_1 ._textarea_1p9zk_265{box-sizing:border-box;width:100%;min-height:6.5rem;margin:0;padding:.4rem .5rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:.8rem/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;resize:vertical}._backdrop_1p9zk_1 ._actionDanger_1p9zk_279{border-color:var(--wysiwyg-chrome-danger, #c44);background:var(--wysiwyg-chrome-dialog, #fff);color:var(--wysiwyg-chrome-danger, #b33)}._backdrop_1p9zk_1 ._confirmBody_1p9zk_285{flex-shrink:0;padding:1rem}._backdrop_1p9zk_1 ._emptyPanel_1p9zk_290{min-height:4rem}._backdrop_1p9zk_1 ._nestedPanel_1p9zk_294{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;margin:.85rem 1rem .15rem;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px}._backdrop_1p9zk_1 ._nestedPanel_1p9zk_294 ._tabs_1p9zk_43{padding-top:.4rem}._spinnerWrap_1p9zk_309{display:flex;align-items:center;justify-content:center;padding:.5rem .75rem}._spinner_1p9zk_309{width:1.1rem;height:1.1rem;border:2px solid var(--wysiwyg-chrome-divider, #d0d0d0);border-top-color:var(--wysiwyg-chrome-primary, #4a7fd4);border-radius:50%;animation:_spin_1p9zk_309 .7s linear infinite}@keyframes _spin_1p9zk_309{to{transform:rotate(360deg)}}._backdrop_1p9zk_1 ._action_1p9zk_140{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._backdrop_1p9zk_1 ._actionPrimary_1p9zk_344{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary, #4a7fd4);color:var(--wysiwyg-chrome-primary-fg, #fff)}._backdrop_1p9zk_1 ._action_1p9zk_140:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._action_1p9zk_140:focus-visible,._backdrop_1p9zk_1 ._tab_1p9zk_43:focus-visible,._backdrop_1p9zk_1 ._close_1p9zk_170:focus-visible,._backdrop_1p9zk_1 ._iconButton_1p9zk_358:focus-visible,._backdrop_1p9zk_1 ._select_1p9zk_359:focus-visible,._backdrop_1p9zk_1 ._lengthInput_1p9zk_360:focus-visible,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361:focus-visible,._backdrop_1p9zk_1 ._textInput_1p9zk_233:focus-visible,._backdrop_1p9zk_1 ._textarea_1p9zk_265:focus-visible,._backdrop_1p9zk_1 ._help_1p9zk_215:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_1p9zk_1 ._group_1p9zk_369{display:flex;flex-direction:column;gap:.75rem;margin:0;padding:.75rem;border:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-radius:4px}._backdrop_1p9zk_1 ._nestedGroup_1p9zk_379{display:flex;flex-direction:column;gap:.5rem;margin:0;padding:.6rem .7rem;border:1px solid var(--wysiwyg-chrome-border, #ececec);border-radius:4px}._backdrop_1p9zk_1 ._subLabel_1p9zk_389{font-weight:600}._backdrop_1p9zk_1 ._iconRow_1p9zk_393{display:flex;gap:.25rem}._backdrop_1p9zk_1 ._iconButton_1p9zk_358{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;margin:0;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;cursor:pointer}._backdrop_1p9zk_1 ._iconButton_1p9zk_358[aria-checked=true],._backdrop_1p9zk_1 ._iconButton_1p9zk_358[aria-pressed=true]{border-color:var(--wysiwyg-chrome-primary, #4a7fd4);background:var(--wysiwyg-chrome-primary-soft, #e8eef8)}._backdrop_1p9zk_1 ._iconButton_1p9zk_358:disabled{cursor:not-allowed;opacity:.5}._backdrop_1p9zk_1 ._lengthField_1p9zk_425{display:flex;flex-direction:column;gap:.25rem}._backdrop_1p9zk_1 ._sideLabel_1p9zk_431{font-weight:600}._backdrop_1p9zk_1 ._lengthRow_1p9zk_435{display:flex;gap:.35rem;align-items:center}._backdrop_1p9zk_1 ._lengthInput_1p9zk_360,._backdrop_1p9zk_1 ._select_1p9zk_359,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361{box-sizing:border-box;margin:0;padding:.3rem .4rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._backdrop_1p9zk_1 ._lengthInput_1p9zk_360{width:4.75rem}._backdrop_1p9zk_1 ._select_1p9zk_359,._backdrop_1p9zk_1 ._lengthUnit_1p9zk_361{min-width:4.5rem}._backdrop_1p9zk_1 ._sideGrid_1p9zk_463,._backdrop_1p9zk_1 ._shadowGrid_1p9zk_464{display:grid;grid-template-columns:1fr 1fr;gap:.55rem .75rem}@media(max-width:28rem){._backdrop_1p9zk_1 ._sideGrid_1p9zk_463,._backdrop_1p9zk_1 ._shadowGrid_1p9zk_464{grid-template-columns:1fr}}._rulerRoot_j57vt_5,._rulerRoot_j57vt_5 *{box-sizing:border-box}._rulerRoot_j57vt_5{user-select:none;-webkit-user-select:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif!important;font-size:10px!important;line-height:1!important;color:#333!important}._horizontalRulerGroup_j57vt_22{position:relative!important;overflow:visible!important;display:block!important}._horizontalRulerTrack_j57vt_28{--ruler-track-height: 24px;--ruler-handle-size: 12px;--ruler-handle-half: calc(var(--ruler-handle-size) / 2);--ruler-handle-width: 18px;--ruler-handle-border: calc(var(--ruler-handle-width) / 2);height:var(--ruler-track-height)!important;position:relative!important;background-color:#e4e4e4!important;border:1px solid #b8b8b8!important;overflow:visible!important;display:block!important}._horizontalRulerShelf_j57vt_42{height:8px!important;background-color:#e4e4e4!important;border-left:1px solid #b8b8b8!important;border-right:1px solid #b8b8b8!important;border-bottom:1px solid #b8b8b8!important}._horizontalInner_j57vt_51{position:absolute!important;top:0!important;bottom:0!important;background-color:#fff!important;border-left:1px solid #b8b8b8!important;border-right:1px solid #b8b8b8!important;z-index:2!important;overflow:visible!important}._dragEdgeLeft_j57vt_63{position:absolute!important;top:0!important;bottom:0!important;left:-4px!important;width:8px!important;cursor:ew-resize!important;z-index:10!important}._dragEdgeRight_j57vt_73{position:absolute!important;top:0!important;bottom:0!important;right:-4px!important;width:8px!important;cursor:ew-resize!important;z-index:10!important}._dragEdgeLeft_j57vt_63:hover,._dragEdgeRight_j57vt_73:hover,._dragEdgeActive_j57vt_85{background-color:#0078d466!important}._verticalRuler_j57vt_92{width:24px!important;position:relative!important;background-color:#e4e4e4!important;border:1px solid #b8b8b8!important;overflow:visible!important;display:block!important}._verticalInner_j57vt_102{position:absolute!important;left:0!important;right:0!important;background-color:#fff!important;border-top:1px solid #b8b8b8!important;border-bottom:1px solid #b8b8b8!important;z-index:2!important;overflow:visible!important}._dragEdgeTop_j57vt_114{position:absolute!important;left:0!important;right:0!important;top:-4px!important;height:8px!important;cursor:ns-resize!important;z-index:10!important}._dragEdgeBottom_j57vt_124{position:absolute!important;left:0!important;right:0!important;bottom:-4px!important;height:8px!important;cursor:ns-resize!important;z-index:10!important}._dragEdgeTop_j57vt_114:hover,._dragEdgeBottom_j57vt_124:hover,._dragEdgeActiveV_j57vt_136{background-color:#0078d466!important}._tickH_j57vt_143{position:absolute!important;bottom:0!important;width:1px!important;background-color:#666!important;pointer-events:none!important;z-index:3!important}._tickV_j57vt_152{position:absolute!important;right:0!important;height:1px!important;background-color:#666!important;pointer-events:none!important;z-index:3!important}._tickLabelH_j57vt_161{position:absolute!important;top:3px!important;transform:translate(-50%)!important;font-size:10px!important;font-weight:500!important;line-height:1!important;color:#333!important;pointer-events:none!important;z-index:4!important;white-space:nowrap!important;display:inline-block!important}._tickLabelV_j57vt_175{position:absolute!important;left:3px!important;transform:translateY(-50%)!important;font-size:10px!important;font-weight:500!important;line-height:1!important;color:#333!important;pointer-events:none!important;z-index:4!important;white-space:nowrap!important;display:inline-block!important}._arrowIconWrapper_j57vt_192{position:absolute!important;z-index:20!important;cursor:pointer!important;touch-action:none!important;display:flex!important;align-items:center!important;justify-content:center!important}._arrowDown_j57vt_203{top:calc(-1 * var(--ruler-handle-half, 6px))!important;width:var(--ruler-handle-width, 18px)!important;height:var(--ruler-handle-size, 12px)!important;margin-left:calc(-1 * var(--ruler-handle-border, 9px))!important;align-items:flex-start!important}._arrowDown_j57vt_203 ._arrowGlyph_j57vt_211{width:0!important;height:0!important;border-left:var(--ruler-handle-border, 9px) solid transparent!important;border-right:var(--ruler-handle-border, 9px) solid transparent!important;border-top:var(--ruler-handle-size, 12px) solid #6e6e6e!important}._arrowDown_j57vt_203:hover ._arrowGlyph_j57vt_211,._arrowDown_j57vt_203._arrowActive_j57vt_220 ._arrowGlyph_j57vt_211{border-top-color:#0078d4!important}._arrowUp_j57vt_225{top:calc(var(--ruler-track-height, 24px) - var(--ruler-handle-half, 6px))!important;width:var(--ruler-handle-width, 18px)!important;height:var(--ruler-handle-size, 12px)!important;margin-left:calc(-1 * var(--ruler-handle-border, 9px))!important;align-items:flex-end!important}._arrowUp_j57vt_225 ._arrowGlyph_j57vt_211{width:0!important;height:0!important;border-left:var(--ruler-handle-border, 9px) solid transparent!important;border-right:var(--ruler-handle-border, 9px) solid transparent!important;border-bottom:var(--ruler-handle-size, 12px) solid #6e6e6e!important}._arrowUp_j57vt_225:hover ._arrowGlyph_j57vt_211,._arrowUp_j57vt_225._arrowActive_j57vt_220 ._arrowGlyph_j57vt_211{border-bottom-color:#0078d4!important}._rulerTooltip_j57vt_249{position:fixed;background:#242424;color:#fff;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600;pointer-events:none;white-space:nowrap;box-shadow:0 4px 12px #0000004d;z-index:9999;transform:translate(-50%,-100%);margin-top:-10px}._root_ofshu_1{all:revert;position:relative;box-sizing:border-box;display:flex;flex-direction:column;flex:1 1 auto;width:100%;min-width:0;height:100%;max-height:100%;min-height:16rem;border:var(--wysiwyg-border-width, 1px) solid var(--wysiwyg-border-color, var(--wysiwyg-chrome-divider, #d0d0d0));border-radius:var(--wysiwyg-border-radius, 6px);box-shadow:var(--wysiwyg-border-shadow, none);overflow:hidden;background:#fff;color:#111;font-family:system-ui,sans-serif;font-size:1rem;font-weight:400;font-style:normal;font-variant:normal;line-height:1.5;letter-spacing:normal;text-align:start;text-indent:0;text-transform:none;text-decoration:none;text-shadow:none;white-space:normal;word-spacing:normal;direction:ltr}._root_ofshu_1._fullscreen_ofshu_36{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;width:100%;height:100%;min-height:0;border:none;border-radius:0;box-shadow:none}._root_ofshu_1 ._exitFullscreen_ofshu_48{position:absolute;z-index:2;top:.4rem;right:.4rem;display:inline-flex;align-items:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:2rem;height:2rem;margin:0;padding:0;border:0;border-radius:4px;background:var(--wysiwyg-chrome-menu, #fff);color:var(--wysiwyg-chrome-text, #444);font:inherit;cursor:pointer;box-shadow:0 1px 3px var(--wysiwyg-chrome-menu-shadow, rgb(0 0 0 / 20%))}._root_ofshu_1 ._exitFullscreen_ofshu_48:hover{background:var(--wysiwyg-chrome-hover, #f4f4f4)}._root_ofshu_1 ._exitFullscreen_ofshu_48:focus{outline:none;box-shadow:inset 0 0 0 2px var(--wysiwyg-chrome-focus, #8ab4ff)}._root_ofshu_1 ._exitFullscreenIcon_ofshu_79{display:block;width:1rem;height:1rem;flex-shrink:0}._root_ofshu_1 *:not(:is(svg,svg *)),._root_ofshu_1 *:before,._root_ofshu_1 *:after{all:revert;box-sizing:border-box}._root_ofshu_1 ._menuChrome_ofshu_94{display:flex;flex-direction:column;flex-shrink:0;align-items:stretch;z-index:1000;width:100%;min-width:0;position:relative}._root_ofshu_1 ._body_ofshu_106._body_ofshu_106{position:relative;display:grid;flex:1 1 auto;min-width:0;min-height:0;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}._root_ofshu_1 ._body_ofshu_106._body_ofshu_106[data-icon-dock=top]{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}._root_ofshu_1 ._body_ofshu_106._body_ofshu_106[data-icon-dock=bottom]{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}._root_ofshu_1 ._body_ofshu_106._body_ofshu_106[data-icon-dock=left]{grid-template-columns:12rem minmax(0,1fr);grid-template-rows:minmax(min-content,1fr)}._root_ofshu_1 ._body_ofshu_106._body_ofshu_106[data-icon-dock=right]{grid-template-columns:minmax(0,1fr) 12rem;grid-template-rows:minmax(min-content,1fr)}._root_ofshu_1 ._iconChrome_ofshu_136._iconChrome_ofshu_136{display:flex;flex-direction:column;align-items:stretch;z-index:500;min-width:0;position:relative}._root_ofshu_1[data-toolbar-position=top] ._iconChrome_ofshu_136{width:100%;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_ofshu_1[data-toolbar-position=bottom] ._iconChrome_ofshu_136{width:100%;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_ofshu_1[data-toolbar-position=left] ._iconChrome_ofshu_136._iconChrome_ofshu_136,._root_ofshu_1[data-toolbar-position=right] ._iconChrome_ofshu_136._iconChrome_ofshu_136{align-self:stretch;box-sizing:border-box;width:100%;min-width:12rem;overflow-x:hidden;overflow-y:auto}._root_ofshu_1[data-toolbar-position=left] ._iconChrome_ofshu_136{border-right:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_ofshu_1[data-toolbar-position=right] ._iconChrome_ofshu_136{border-left:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_ofshu_1[data-toolbar-position=left] ._iconChrome_ofshu_136>*,._root_ofshu_1[data-toolbar-position=right] ._iconChrome_ofshu_136>*{width:100%;min-width:0;height:auto;min-height:100%}._root_ofshu_1 ._workspace_ofshu_181{position:relative;display:flex;flex:1 1 auto;flex-direction:column;min-width:0;min-height:0;overflow:auto;padding:1rem;background:#f0f0f0}._root_ofshu_1 ._workspacePageSized_ofshu_193{align-items:center}._root_ofshu_1 ._workspaceWithRuler_ofshu_197{padding-top:0}._root_ofshu_1 ._pageCanvasViewport_ofshu_201{display:flex;flex:1 0 auto;flex-direction:column;align-items:center;width:100%;min-height:min-content;overflow:visible}._root_ofshu_1 ._multiPageRulerLayer_ofshu_211{flex:0 0 auto;position:sticky;top:0;z-index:400;width:100%;display:flex;justify-content:center;padding-top:6px;background:#f0f0f0;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._root_ofshu_1 ._pageCanvasViewport_ofshu_201[data-page-canvas-sized]{flex:0 0 auto}._root_ofshu_1 ._pageCanvasViewport_ofshu_201:not([data-page-canvas-sized]){flex:1 1 auto;min-height:0;align-items:stretch}._root_ofshu_1 ._pageCanvasViewport_ofshu_201[data-page-canvas-sized] ._multiPageContainer_ofshu_234{min-height:min-content}._root_ofshu_1 ._pageCanvasViewport_ofshu_201:not([data-page-canvas-sized]) ._multiPageContainer_ofshu_234{flex:1 1 auto;min-height:100%;align-items:stretch}._root_ofshu_1 ._pageZoomContent_ofshu_244{display:flex;flex-direction:column;width:100%;flex:1 1 auto;min-height:0;align-items:center}._root_ofshu_1 ._pageCanvasViewport_ofshu_201:not([data-page-canvas-sized]) ._pageZoomContent_ofshu_244{align-items:stretch;min-height:100%}._root_ofshu_1 ._pageZoomContent_ofshu_244 [data-testid=vertical-ruler]{width:calc(24px / var(--page-zoom, 1))!important}._root_ofshu_1 ._htmlFileDropOverlay_ofshu_262{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;align-items:center;justify-content:center;pointer-events:none;background:#ffffffd9;color:#111;font-size:1rem;font-weight:600}._root_ofshu_1 ._surface_ofshu_276{width:100%;min-height:100%;background:#fff;box-shadow:0 1px 3px #0000001f}._root_ofshu_1 ._visual_ofshu_283{position:relative;flex:1 0 auto;min-height:100%;padding:.75rem;outline:none;user-select:text;-webkit-user-select:text}._root_ofshu_1 ._visual_ofshu_283[data-page-sized]{display:flex;flex-direction:column;flex:0 0 auto;width:auto;min-height:auto;margin:0 auto;padding:0;box-sizing:border-box}._root_ofshu_1 ._visual_ofshu_283[data-page-sized]>[data-page]{flex:1 1 auto;width:100%;min-height:0;box-sizing:border-box}._root_ofshu_1 ._visual_ofshu_283:not([data-page-sized]){width:100%;height:100%;min-height:100%;flex:1 1 auto;box-sizing:border-box}._root_ofshu_1 ._visual_ofshu_283:focus{box-shadow:inset 0 0 0 2px #8ab4ff}._root_ofshu_1 ._visual_ofshu_283:empty:before{content:attr(data-placeholder);color:#888}._root_ofshu_1 ._visual_ofshu_283[aria-disabled=true]{opacity:.6;background:#f7f7f7}._root_ofshu_1 ._multiPageContainer_ofshu_234{display:flex;flex-direction:column;align-items:center;width:100%;min-height:100%}._root_ofshu_1 ._pageBlock_ofshu_341{display:flex;flex-direction:row;width:max-content;align-items:flex-start}._root_ofshu_1 ._pageBlockFluid_ofshu_348{width:100%;max-width:100%;height:100%;min-height:100%;box-sizing:border-box;flex:1 1 auto}._root_ofshu_1 ._pageSurfaceRulerGutter_ofshu_357{flex:0 0 24px;width:24px;pointer-events:auto}._root_ofshu_1 ._pageGap_ofshu_363{flex-shrink:0;height:1.5rem;background:var(--wysiwyg-toolbar-background, var(--wysiwyg-chrome-toolbar, #f4f4f4))}._root_ofshu_1 ._pageSurface_ofshu_357{flex-shrink:0;min-height:12rem}._root_ofshu_1 ._pageSurface_ofshu_357:focus{outline:none}._root_ofshu_1 ._htmlModeShell_ofshu_378{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;width:100%}._root_ofshu_1 ._html_ofshu_262{display:block;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;flex:1 1 auto;width:100%;margin:0;min-height:100%;padding:.75rem;border:0;border-radius:0;resize:none;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;font-weight:400;font-style:normal;line-height:1.5;letter-spacing:normal;color:#111;outline:none;background:#fff}._root_ofshu_1 ._html_ofshu_262:focus{box-shadow:inset 0 0 0 2px #8ab4ff}._root_ofshu_1 ._html_ofshu_262:disabled{opacity:.6}._visual_ofshu_283 p{margin:0 0 .75em}._visual_ofshu_283 [data-page] :not([data-page-bg]){position:relative;z-index:1}._visual_ofshu_283:has(>[data-page-bg])>[data-page]{position:relative;z-index:1;isolation:isolate}._visual_ofshu_283 [data-page] [data-page-bg],._visual_ofshu_283>[data-page-bg]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;-webkit-user-select:none;user-select:none}._visual_ofshu_283[data-page-sized] [data-page] [data-page-bg]{top:calc(-1 * var(--wysiwyg-page-margin-top, 0px));right:calc(-1 * var(--wysiwyg-page-margin-right, 0px));bottom:calc(-1 * var(--wysiwyg-page-margin-bottom, 0px));left:calc(-1 * var(--wysiwyg-page-margin-left, 0px))}._visual_ofshu_283:not([data-page-sized]) [data-page] [data-page-bg]{top:calc(-1 * var(--wysiwyg-page-margin-top, 0px));right:calc(-1 * var(--wysiwyg-page-margin-right, 0px));bottom:calc(-1 * var(--wysiwyg-page-margin-bottom, 0px));left:calc(-1 * var(--wysiwyg-page-margin-left, 0px))}._visual_ofshu_283 p:last-child{margin-bottom:0}._visual_ofshu_283 h1,._visual_ofshu_283 h2,._visual_ofshu_283 h3,._visual_ofshu_283 h4,._visual_ofshu_283 h5,._visual_ofshu_283 h6{margin:1em 0 .5em;font-weight:600;line-height:1.25;color:inherit}._visual_ofshu_283 h1:first-child,._visual_ofshu_283 h2:first-child,._visual_ofshu_283 h3:first-child,._visual_ofshu_283 h4:first-child,._visual_ofshu_283 h5:first-child,._visual_ofshu_283 h6:first-child{margin-top:0}._visual_ofshu_283 h1{font-size:1.75rem}._visual_ofshu_283 h2{font-size:1.5rem}._visual_ofshu_283 h3{font-size:1.25rem}._visual_ofshu_283 h4{font-size:1.125rem}._visual_ofshu_283 h5{font-size:1rem}._visual_ofshu_283 h6{font-size:.875rem}._visual_ofshu_283 ul,._visual_ofshu_283 ol{margin:0 0 .75em;padding-left:1.5em}._visual_ofshu_283 li{margin:.25em 0}._visual_ofshu_283 a{color:#06c;text-decoration:underline}._visual_ofshu_283 strong,._visual_ofshu_283 b{font-weight:700}._visual_ofshu_283 em,._visual_ofshu_283 i{font-style:italic}._visual_ofshu_283 u{text-decoration:underline}._visual_ofshu_283 s{text-decoration:line-through}._visual_ofshu_283 blockquote{margin:0 0 .75em;padding:0 0 0 .75em;border:0;border-left:3px solid #d0d0d0;color:#444}._visual_ofshu_283 code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875em;background:#f4f4f4;padding:.1em .3em;border-radius:3px}._visual_ofshu_283 pre{margin:0 0 .75em;padding:.75em;overflow:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;line-height:1.5;background:#f4f4f4;border-radius:4px}._visual_ofshu_283 pre code{background:transparent;padding:0;font-size:inherit}._visual_ofshu_283 hr{margin:1em 0;border:0;border-top:1px solid #d0d0d0}._visual_ofshu_283 img{max-width:100%;vertical-align:middle}._root_ofshu_1[data-comments-visible] .wysiwyg-comment-anchor{background-color:#ffd40059;outline:1px solid rgba(255,170,0,.8)}._root_ofshu_1[data-comments-visible] img.wysiwyg-comment-anchor{outline:2px solid rgba(255,170,0,.9);outline-offset:2px}._field_1knrr_1{display:flex;align-items:center;justify-content:space-between;gap:.75rem}._label_1knrr_8{font-weight:600}._button_1knrr_12{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:1.5rem;margin:0;padding:.15rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:3px;background:var(--wysiwyg-chrome-input, #fff);cursor:pointer}._button_1knrr_12:disabled{cursor:not-allowed;opacity:.5}._button_1knrr_12:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._swatch_1knrr_37{display:block;width:100%;height:100%;border-radius:2px}._swatchEmpty_1knrr_44{background:repeating-linear-gradient(-45deg,var(--wysiwyg-chrome-empty, #ddd),var(--wysiwyg-chrome-empty, #ddd) 1px,transparent 1px,transparent 3px)}._grid_1bpma_1{display:grid;grid-template-columns:repeat(10,1.15rem);gap:2px;width:max-content}._cell_1bpma_8{width:1.15rem;height:1.15rem;padding:0;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);background:var(--wysiwyg-chrome-input, #fff);cursor:pointer}._cell_1bpma_8[data-active=true]{background:var(--wysiwyg-chrome-selected, #cfe3ff);border-color:var(--wysiwyg-chrome-primary, #4a90d9)}._cell_1bpma_8:focus-visible{outline:2px solid var(--wysiwyg-chrome-primary, #4a90d9);outline-offset:1px}._sizeLabel_1bpma_27{margin:.35rem 0 0;color:var(--wysiwyg-chrome-text, #444);font-variant-numeric:tabular-nums}._sizeFields_1bpma_33{align-items:flex-end}._numberInput_1bpma_37{box-sizing:border-box;width:4.5rem;margin:0;padding:.35rem .4rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-input, #fff);color:inherit;font:inherit}._numberInput_1bpma_37:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_9d3gw_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._dialog_9d3gw_12{display:flex;flex-direction:column;width:min(90vw,72rem);height:min(90vh,56rem);max-height:calc(100% - 2rem);margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._headerRow_9d3gw_29{display:flex;align-items:flex-start;gap:.5rem;padding:.75rem .5rem .5rem 1rem}._header_9d3gw_29{flex:1;margin:0;padding:0;font-size:1rem;font-weight:600}._close_9d3gw_44{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.25rem;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._close_9d3gw_44:hover,._close_9d3gw_44:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0)}._close_9d3gw_44:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._body_9d3gw_66{flex:1;min-height:0;overflow:hidden;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5);border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-dialog-muted, #f3f3f3)}._frame_9d3gw_75{display:block;width:100%;height:100%;border:0;background:#fff}._actions_9d3gw_83{display:flex;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem 1rem}._action_9d3gw_83{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._action_9d3gw_83:hover,._action_9d3gw_83:focus-visible{background:var(--wysiwyg-chrome-dialog, #fff)}._action_9d3gw_83:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_72ox3_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._dialog_72ox3_12{display:flex;flex-direction:column;width:min(92vw,24rem);max-width:100%;max-height:calc(100% - 2rem);min-width:0;margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._headerRow_72ox3_30{display:flex;flex-shrink:0;align-items:flex-start;gap:.5rem;padding:.75rem .5rem .5rem 1rem}._header_72ox3_30{flex:1;margin:0;padding:0;font-size:1rem;font-weight:600}._close_72ox3_46{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.25rem;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._close_72ox3_46:hover,._close_72ox3_46:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0)}._close_72ox3_46:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._body_72ox3_68{flex:1 1 auto;min-height:0;overflow:auto;padding:0 1rem 1rem;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._product_72ox3_76{margin:1rem 0 .5rem;font-size:1rem;font-weight:600}._meta_72ox3_82{margin:0 0 .75rem;color:var(--wysiwyg-chrome-muted, #666)}._description_72ox3_87{margin:0;white-space:pre-wrap}._website_72ox3_92{margin:1rem 0 0;text-align:center}._cta_72ox3_97{margin:0 0 .5rem;color:var(--wysiwyg-chrome-muted, #666)}._link_72ox3_102{display:inline-block;color:var(--wysiwyg-chrome-link, #1a5fb4);text-decoration:none}._link_72ox3_102:hover{text-decoration:underline}._link_72ox3_102:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px;border-radius:2px}._actions_72ox3_118{display:flex;flex-shrink:0;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem 1rem}._action_72ox3_118{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:5.5rem;margin:0;padding:.35rem .75rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7);color:inherit;font:inherit;cursor:pointer}._action_72ox3_118:hover,._action_72ox3_118:focus-visible{background:var(--wysiwyg-chrome-dialog, #fff)}._action_72ox3_118:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._backdrop_12fkg_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;padding:1rem;background:var(--wysiwyg-chrome-backdrop, rgb(0 0 0 / 32%))}._dialog_12fkg_12{display:flex;flex-direction:column;width:min(96vw,56rem);height:min(92vh,40rem);max-width:100%;max-height:100%;min-width:0;margin:0;padding:0;overflow:hidden;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:6px;background:var(--wysiwyg-chrome-dialog, #fff);box-shadow:0 8px 24px var(--wysiwyg-chrome-shadow, rgb(0 0 0 / 18%));color:var(--wysiwyg-chrome-dialog-text, #222);font:.875rem/1.4 system-ui,sans-serif}._headerRow_12fkg_31{display:flex;flex-shrink:0;align-items:flex-start;gap:.5rem;padding:.75rem .5rem .5rem 1rem}._header_12fkg_31{flex:1;margin:0;padding:0;font-size:1rem;font-weight:600}._close_12fkg_47{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.25rem;border:0;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._close_12fkg_47:hover,._close_12fkg_47:focus-visible{background:var(--wysiwyg-chrome-hover, #f0f0f0)}._close_12fkg_47:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._searchRow_12fkg_69{flex-shrink:0;padding:0 1rem .75rem}._search_12fkg_69{box-sizing:border-box;width:100%;margin:0;padding:.45rem .6rem;border:1px solid var(--wysiwyg-chrome-dialog-border, #c8c8c8);border-radius:4px;background:var(--wysiwyg-chrome-dialog, #fff);color:inherit;font:inherit}._search_12fkg_69:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:1px}._body_12fkg_91{display:flex;flex:1 1 auto;min-height:0;overflow:hidden;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._sidebar_12fkg_99{flex:0 0 14rem;min-width:0;overflow:auto;border-right:1px solid var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-dialog-muted, #f7f7f7)}._sidebarHidden_12fkg_107{display:none}._category_12fkg_111{margin:0;padding:.75rem .75rem .25rem;font-size:.75rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--wysiwyg-chrome-muted, #666)}._topicList_12fkg_121{margin:0;padding:0 0 .5rem;list-style:none}._topicButton_12fkg_127{display:block;box-sizing:border-box;width:100%;margin:0;padding:.4rem .75rem;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}._topicButton_12fkg_127:hover,._topicButton_12fkg_127:focus-visible{background:var(--wysiwyg-chrome-hover, #ececec)}._topicButtonActive_12fkg_147{background:var(--wysiwyg-chrome-selected, #e3edff);font-weight:600}._topicButton_12fkg_127:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._main_12fkg_157{flex:1 1 auto;min-width:0;overflow:auto;padding:1rem 1.25rem 1.5rem}._articleTitle_12fkg_164{margin:0 0 .75rem;font-size:1.125rem;font-weight:600;line-height:1.35}._articleBody_12fkg_171{margin:0;white-space:pre-wrap}._noResults_12fkg_176{margin:0;color:var(--wysiwyg-chrome-muted, #666)}._related_12fkg_181{margin:1.25rem 0 0;padding-top:1rem;border-top:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._relatedTitle_12fkg_187{margin:0 0 .5rem;font-size:.8125rem;font-weight:600;color:var(--wysiwyg-chrome-muted, #666)}._relatedList_12fkg_194{margin:0;padding:0;list-style:none}._relatedButton_12fkg_200{display:inline;margin:0;padding:0;border:0;background:transparent;color:var(--wysiwyg-chrome-link, #1a5fb4);font:inherit;text-align:left;text-decoration:underline;cursor:pointer}._relatedButton_12fkg_200:hover,._relatedButton_12fkg_200:focus-visible{color:var(--wysiwyg-chrome-link-hover, #0d3d7a)}._relatedButton_12fkg_200:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:2px}._relatedItem_12fkg_223+._relatedItem_12fkg_223{margin-top:.35rem}@media(max-width:40rem){._sidebar_12fkg_99{display:none}._main_12fkg_157{padding-top:.5rem}}._panel_6xdnw_1{position:fixed;right:16px;bottom:16px;z-index:10000;width:min(360px,calc(100vw - 32px));max-height:min(480px,calc(100vh - 32px));display:flex;flex-direction:column;border:1px solid var(--wysiwyg-border-color, #d0d0d0);border-radius:8px;background:var(--wysiwyg-surface-background, #fff);color:var(--wysiwyg-text-color, #222);box-shadow:0 8px 24px #0000001f}._header_6xdnw_17{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 12px 8px;border-bottom:1px solid var(--wysiwyg-border-color, #e8e8e8)}._title_6xdnw_26{margin:0;font-size:.9375rem;font-weight:600}._close_6xdnw_32{display:flex;align-items:center;justify-content:center;padding:4px;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer}._close_6xdnw_32:hover{background:#0000000f}._messages_6xdnw_48{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:12px}._empty_6xdnw_57{margin:0;color:var(--wysiwyg-muted-color, #666);font-size:.875rem}._message_6xdnw_48{display:flex;flex-direction:column;gap:4px}._messageHeader_6xdnw_69{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:.8125rem}._author_6xdnw_77{font-weight:600}._time_6xdnw_81{color:var(--wysiwyg-muted-color, #666);font-size:.75rem}._body_6xdnw_86{margin:0;font-size:.875rem;line-height:1.45}._reply_6xdnw_92{display:flex;flex-direction:column;gap:8px;padding:12px;border-top:1px solid var(--wysiwyg-border-color, #e8e8e8)}._input_6xdnw_100{width:100%;min-height:72px;padding:8px;border:1px solid var(--wysiwyg-border-color, #d0d0d0);border-radius:6px;font:inherit;resize:vertical;box-sizing:border-box}._post_6xdnw_111{align-self:flex-end;padding:6px 14px;border:none;border-radius:6px;background:var(--wysiwyg-accent-color, #2563eb);color:#fff;font-size:.875rem;font-weight:600;cursor:pointer}._post_6xdnw_111:disabled{opacity:.5;cursor:not-allowed}._shell_yvznc_1{display:flex;flex-shrink:0;align-items:stretch;gap:0;border-bottom:1px solid var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-toolbar, #f4f4f4)}._scrollButton_yvznc_10{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;display:flex;align-items:center;justify-content:center;width:1.75rem;margin:0;padding:0;border:0;border-right:1px solid var(--wysiwyg-chrome-border, #e5e5e5);background:var(--wysiwyg-chrome-toolbar, #f4f4f4);color:inherit;font-size:1rem;line-height:1;cursor:pointer}._scrollButton_yvznc_10:last-of-type{border-right:0;border-left:1px solid var(--wysiwyg-chrome-border, #e5e5e5)}._scrollButton_yvznc_10:hover,._scrollButton_yvznc_10:focus-visible{background:var(--wysiwyg-chrome-hover, #ebebeb)}._scrollButton_yvznc_10:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._scrollButton_yvznc_10:disabled{opacity:.35;cursor:default}._tabList_yvznc_48{display:flex;flex:1 1 auto;gap:0;min-width:0;overflow-x:auto;scrollbar-width:none}._tabList_yvznc_48::-webkit-scrollbar{display:none}._tab_yvznc_48{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex-shrink:0;margin:0;padding:.4rem .75rem;border:0;border-right:1px solid var(--wysiwyg-chrome-border, #e5e5e5);background:transparent;color:inherit;font:inherit;font-size:.8125rem;white-space:nowrap;cursor:pointer}._tab_yvznc_48:hover,._tab_yvznc_48:focus-visible{background:var(--wysiwyg-chrome-hover, #ebebeb)}._tab_yvznc_48:focus-visible{outline:2px solid var(--wysiwyg-chrome-focus, #8ab4ff);outline-offset:-2px}._tabActive_yvznc_86{background:#fff;font-weight:600}._frame_bwkh8_1{position:fixed;z-index:1140;box-sizing:border-box;pointer-events:none;border:1px solid #4a90d9}._handle_bwkh8_9{position:absolute;box-sizing:border-box;padding:0;pointer-events:auto;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;box-shadow:none}._handle_bwkh8_9:focus{outline:none}._handle_bwkh8_9:focus-visible{outline:2px solid #8ab4ff;outline-offset:1px}._handleEast_bwkh8_29{top:0;right:-4px;width:8px;height:calc(100% - 10px);cursor:e-resize}._handleSouth_bwkh8_37{left:0;bottom:-4px;width:calc(100% - 10px);height:8px;cursor:s-resize}._handleSouthEast_bwkh8_45{right:-5px;bottom:-5px;z-index:1;width:10px;height:10px;cursor:se-resize;border:1px solid #4a90d9;background:#fff}