@domternal/theme 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,34 +3,39 @@
3
3
  [![Version](https://img.shields.io/npm/v/@domternal/theme.svg)](https://www.npmjs.com/package/@domternal/theme)
4
4
  [![MIT License](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/domternal/domternal/blob/main/LICENSE)
5
5
 
6
- A lightweight, extensible rich text editor toolkit built on [ProseMirror](https://prosemirror.net/). Framework-agnostic headless core with first-class **Angular** support. Use it headless with vanilla JS/TS, add the built-in toolbar and theme, or drop in ready-made Angular components. Fully tree-shakeable, import only what you use, unused extensions are stripped from your bundle.
6
+ A lightweight, extensible rich text editor toolkit built on <u>[ProseMirror](https://prosemirror.net/)</u>. Framework-agnostic headless core with first-class Angular and React support.
7
+ Use it headless with vanilla JS/TS, add the built-in toolbar and theme, or drop in ready-made framework components. Fully tree-shakeable, import only what you use, unused extensions are stripped from your bundle.
7
8
 
8
- **[Website](https://domternal.dev)** · **[Documentation](https://domternal.dev/v1/introduction)** · **[StackBlitz (Vanilla TS)](https://stackblitz.com/edit/domternal-vanilla-full-example)** · **[StackBlitz (Angular)](https://stackblitz.com/edit/domternal-angular-full-example)**
9
+ ## Links
10
+
11
+ <u>[Website](https://domternal.dev)</u> &nbsp;&nbsp;&nbsp;•&nbsp;&nbsp;&nbsp; <u>[Documentation](https://domternal.dev/v1/introduction)</u>
12
+ <u>[StackBlitz (Angular)](https://stackblitz.com/edit/domternal-angular-full-example)</u> &nbsp;&nbsp;&nbsp;•&nbsp;&nbsp;&nbsp; <u>[StackBlitz (React)](https://stackblitz.com/edit/domternal-react-full-example)</u> &nbsp;&nbsp;&nbsp;•&nbsp;&nbsp;&nbsp; <u>[StackBlitz (Vanilla TS)](https://stackblitz.com/edit/domternal-vanilla-full-example)</u>
9
13
 
10
14
  ## Features
11
15
 
12
- See [Packages & Bundle Size](https://domternal.dev/v1/packages) for a full breakdown of all packages and what each one includes.
16
+ See <u>[Packages & Bundle Size](https://domternal.dev/v1/packages)</u> for a full breakdown of all packages and what each one includes.
13
17
 
14
18
  - **Headless core** - use with any framework or vanilla JS/TS
15
19
  - **Angular components** - editor, toolbar, bubble menu, floating menu, emoji picker (signals, OnPush, zoneless-ready)
16
- - **57 extensions across 10 packages** - 23 nodes, 9 marks, and 25 behavior extensions
20
+ - **React components** - composable `Domternal` component, toolbar, bubble menu, floating menu, emoji picker, custom node views (React 18+)
21
+ - **57 extensions across 11 packages** - 23 nodes, 9 marks, and 25 behavior extensions
17
22
  - **140+ chainable commands** - `editor.chain().focus().toggleBold().run()`
18
23
  - **Full table support** - cell merging, column resize, row/column controls, cell toolbar, all free and MIT licensed
19
24
  - **Tree-shakeable** - import only what you use, your bundler strips the rest
20
- - **~38 KB gzipped** (own code), [~108 KB total](https://domternal.dev/v1/packages) with ProseMirror
25
+ - **~38 KB gzipped** (own code), <u>[~108 KB total](https://domternal.dev/v1/packages)</u> with ProseMirror
21
26
  - **TypeScript first** - 100% typed, zero `any`
22
- - **4,200+ tests** - 2,675 unit tests and 1,550 E2E tests across 34 Playwright specs
27
+ - **7,500+ tests** - 3,936 unit tests and 3,652 E2E tests across 76 Playwright specs
23
28
  - **Light and dark theme** - 70+ CSS custom properties for full visual control
24
29
  - **Inline styles export** - `getHTML({ styled: true })` produces inline CSS ready for email clients, CMS, and Google Docs
25
30
  - **SSR helpers** - `generateHTML`, `generateJSON`, `generateText` for server-side rendering
26
31
 
27
32
  ## Documentation
28
33
 
29
- - [Getting Started](https://domternal.dev/v1/getting-started) - install and create your first editor
30
- - [Introduction](https://domternal.dev/v1/introduction) - core concepts, architecture, and design decisions
31
- - [Packages & Bundle Size](https://domternal.dev/v1/packages) - what each package includes and bundle size breakdown
32
- - [Blog](https://domternal.dev/blog)
34
+ - <u>[Getting Started](https://domternal.dev/v1/getting-started)</u> - install and create your first editor
35
+ - <u>[Introduction](https://domternal.dev/v1/introduction)</u> - core concepts, architecture, and design decisions
36
+ - <u>[Packages & Bundle Size](https://domternal.dev/v1/packages)</u> - what each package includes and bundle size breakdown
37
+ - <u>[Blog](https://domternal.dev/blog)</u>
33
38
 
34
39
  ## License
35
40
 
36
- [MIT](https://github.com/domternal/domternal/blob/main/LICENSE)
41
+ <u>[MIT](https://github.com/domternal/domternal/blob/main/LICENSE)</u>
@@ -1 +1 @@
1
- .dm-editor{--dm-bg: #ffffff;--dm-text: #1a1a1a;--dm-muted: #999999;--dm-surface: #f8f9fa;--dm-border-color: #e5e7eb;--dm-hover: rgba(0, 0, 0, 0.04);--dm-active: rgba(0, 0, 0, 0.1);--dm-accent: #2563eb;--dm-accent-hover: #1d4ed8;--dm-accent-surface: rgba(37, 99, 235, 0.1);--dm-focus-color: rgba(66, 133, 244, 0.3);--dm-selection: rgba(66, 133, 244, 0.2);--dm-code-surface: #f0f0f0;--dm-code-color: inherit;--dm-editor-bg: var(--dm-bg);--dm-editor-text: var(--dm-text);--dm-editor-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--dm-editor-font-size: 1rem;--dm-editor-line-height: 1.6;--dm-editor-padding: 1rem;--dm-editor-border: 1px solid var(--dm-border-color);--dm-editor-border-radius: 0.75rem;--dm-editor-focus-ring: none;--dm-editor-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.02);--dm-placeholder-color: var(--dm-muted);--dm-link-color: var(--dm-accent);--dm-link-hover-color: var(--dm-accent-hover);--dm-code-bg: var(--dm-code-surface);--dm-code-text: var(--dm-code-color);--dm-code-font: "SF Mono", "Fira Code", Consolas, "Liberation Mono", Menlo, monospace;--dm-code-border-radius: 0.25rem;--dm-code-block-bg: var(--dm-code-surface);--dm-code-block-text: var(--dm-text);--dm-syntax-keyword: #c72031;--dm-syntax-entity: #6f42c1;--dm-syntax-constant: #005cc5;--dm-syntax-string: #032f62;--dm-syntax-variable: #d35400;--dm-syntax-comment: #57606a;--dm-syntax-tag: #22863a;--dm-syntax-addition: #22863a;--dm-syntax-addition-bg: #f0fff4;--dm-syntax-deletion: #b31d28;--dm-syntax-deletion-bg: #ffeef0;--dm-blockquote-border: 3px solid #6a6a6a;--dm-blockquote-color: #6a6a6a;--dm-hr-color: var(--dm-border-color);--dm-table-border: 1px solid var(--dm-border-color);--dm-table-header-bg: var(--dm-surface);--dm-table-selected-bg: rgba(66, 133, 244, 0.15);--dm-mention-bg: var(--dm-accent-surface);--dm-mention-color: var(--dm-accent);--dm-mention-border-radius: 0.25rem;--dm-highlight-bg: #fff3cd;--dm-details-border: 1px solid var(--dm-border-color);--dm-details-bg: var(--dm-surface);--dm-details-summary-font-weight: 600}.dm-toolbar{--dm-toolbar-bg: var(--dm-bg, #ffffff);--dm-toolbar-border: none;--dm-toolbar-padding: 0.375rem 0.5rem;--dm-toolbar-gap: 0.125rem;--dm-toolbar-border-radius: 0.75rem 0.75rem 0 0;--dm-button-size: 2rem;--dm-button-border-radius: 0.375rem;--dm-button-color: var(--dm-text, #374151);--dm-button-hover-bg: var(--dm-hover, rgba(0, 0, 0, 0.04));--dm-button-active-bg: var(--dm-accent-surface, rgba(37, 99, 235, 0.1));--dm-button-active-color: var(--dm-accent, #2563eb);--dm-button-disabled-opacity: 0.35;--dm-separator-color: var(--dm-border-color, #e5e7eb);--dm-separator-margin: 0.375rem}.dm-editor .ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;font-feature-settings:"liga" 0;outline:none}.dm-editor .ProseMirror pre{white-space:pre-wrap}.dm-editor .ProseMirror li{position:relative}.ProseMirror-hideselection *::selection{background:rgba(0,0,0,0)}.ProseMirror-hideselection *::-moz-selection{background:rgba(0,0,0,0)}.ProseMirror-hideselection{caret-color:rgba(0,0,0,0)}.ProseMirror [draggable][contenteditable=false]{user-select:text}.dm-editor .ProseMirror-selectednode{outline:2px solid var(--dm-accent, #2563eb)}.dm-editor li.ProseMirror-selectednode{outline:none}.dm-editor li.ProseMirror-selectednode::after{content:"";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid var(--dm-accent, #2563eb);pointer-events:none}img.ProseMirror-separator{display:inline !important;border:none !important;margin:0 !important}.dm-editor .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}.dm-editor .ProseMirror-gapcursor::after{content:"";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid var(--dm-editor-text, #1a1a1a);animation:ProseMirror-cursor-blink 1.1s steps(2, start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}.dm-editor .ProseMirror-focused .ProseMirror-gapcursor{display:block}.dm-editor .tableWrapper{overflow-x:auto}.dm-editor table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}.dm-editor td,.dm-editor th{vertical-align:top;box-sizing:border-box;position:relative}.dm-editor .column-resize-handle{position:absolute;right:-1.5px;top:0;bottom:0;width:2px;z-index:20;background-color:var(--dm-accent, #2563eb);pointer-events:none}.dm-editor .dm-mouse-drag .column-resize-handle{display:none}.dm-editor .ProseMirror.resize-cursor{cursor:ew-resize;cursor:col-resize}.dm-editor .ProseMirror.resize-cursor.dm-mouse-drag{cursor:auto}.dm-editor .selectedCell::after{z-index:2;position:absolute;content:"";left:0;right:0;top:0;bottom:0;background:var(--dm-table-selected-bg, rgba(66, 133, 244, 0.15));pointer-events:none}.dm-editor .selectedCell::selection,.dm-editor .selectedCell *::selection{background:rgba(0,0,0,0) !important;color:inherit !important}.dm-editor{display:block;position:relative;box-sizing:border-box;background:var(--dm-editor-bg);color:var(--dm-editor-text);font-family:var(--dm-editor-font-family);font-size:var(--dm-editor-font-size);line-height:var(--dm-editor-line-height);border:var(--dm-editor-border);border-radius:var(--dm-editor-border-radius);box-shadow:var(--dm-editor-shadow, none);overflow:hidden;color-scheme:var(--dm-color-scheme, light)}.dm-editor .ProseMirror{padding:var(--dm-editor-padding);min-height:6rem}.dm-editor .ProseMirror:focus{outline:none}.dm-editor:focus-within{box-shadow:var(--dm-editor-focus-ring, var(--dm-editor-shadow, none))}.dm-editor .ProseMirror ::selection{background:var(--dm-selection)}.dm-toolbar+.dm-editor{border-top-left-radius:0;border-top-right-radius:0;border-top:none}@keyframes dm-fade-in{from{opacity:0}to{opacity:1}}.dm-editor .ProseMirror p{margin:.4em 0}.dm-editor .ProseMirror p:last-child{margin-bottom:0}.dm-editor .ProseMirror h1,.dm-editor .ProseMirror h2,.dm-editor .ProseMirror h3,.dm-editor .ProseMirror h4,.dm-editor .ProseMirror h5,.dm-editor .ProseMirror h6{margin:1.5em 0 .5em;font-weight:700;line-height:1.25}.dm-editor .ProseMirror h1:first-child,.dm-editor .ProseMirror h2:first-child,.dm-editor .ProseMirror h3:first-child,.dm-editor .ProseMirror h4:first-child,.dm-editor .ProseMirror h5:first-child,.dm-editor .ProseMirror h6:first-child{margin-top:0}.dm-editor .ProseMirror h1{font-size:2em}.dm-editor .ProseMirror h2{font-size:1.5em}.dm-editor .ProseMirror h3{font-size:1.25em}.dm-editor .ProseMirror h4{font-size:1.1em}.dm-editor .ProseMirror h5{font-size:1em}.dm-editor .ProseMirror h6{font-size:.9em;color:var(--dm-muted, #666)}.dm-editor .ProseMirror code{background:var(--dm-code-bg);color:var(--dm-code-text);font-family:var(--dm-code-font);font-size:.875em;padding:.15em .35em;border:1px solid var(--dm-border-color);border-radius:var(--dm-code-border-radius)}.dm-editor .ProseMirror pre{background:var(--dm-code-block-bg);color:var(--dm-code-block-text);font-family:var(--dm-code-font);font-size:.875em;padding:1em;border-radius:.375rem;overflow-x:auto;margin:.75em 0}.dm-editor .ProseMirror pre code{background:none;color:inherit;padding:0;border:none;border-radius:0;font-size:inherit}.dm-editor .ProseMirror blockquote{border-left:var(--dm-blockquote-border);color:var(--dm-blockquote-color);margin:.75em 0;padding:.25em 0 .25em 1em}.dm-editor .ProseMirror blockquote p{margin-top:0}.dm-editor .ProseMirror ul,.dm-editor .ProseMirror ol{margin:.75em 0;padding-left:1.5em}.dm-editor .ProseMirror ul li,.dm-editor .ProseMirror ol li{margin:.25em 0}.dm-editor .ProseMirror ul li>p,.dm-editor .ProseMirror ol li>p{margin:.1em 0}.dm-editor .ProseMirror ol{list-style-type:decimal}.dm-editor .ProseMirror ul{list-style-type:disc}.dm-editor .ProseMirror ul ul,.dm-editor .ProseMirror ol ul{list-style-type:circle}.dm-editor .ProseMirror ul ul ul,.dm-editor .ProseMirror ol ul ul,.dm-editor .ProseMirror ol ol ul{list-style-type:square}.dm-editor .ProseMirror hr{border:none;border-top:2px solid var(--dm-hr-color);margin:1.5em 0}.dm-editor .ProseMirror a{color:var(--dm-link-color);text-decoration:underline;cursor:pointer}.dm-editor .ProseMirror a:hover{color:var(--dm-link-hover-color)}.dm-editor .ProseMirror mark{color:inherit}.dm-editor .ProseMirror img{max-width:100%;height:auto;display:block;margin:.75em 0}.dm-editor .ProseMirror img.ProseMirror-selectednode{outline:2px solid var(--dm-accent, #2563eb)}.dm-editor .ProseMirror table{border:var(--dm-table-border);margin:.75em 0}.dm-editor .ProseMirror table td,.dm-editor .ProseMirror table th{border:var(--dm-table-border);padding:.5em .75em;min-width:100px}.dm-editor .ProseMirror table th{background:var(--dm-table-header-bg);font-weight:600;text-align:left}.dm-editor .ProseMirror table td>p,.dm-editor .ProseMirror table th>p{margin:0}.dm-editor .ProseMirror pre code .hljs-doctag,.dm-editor .ProseMirror pre code .hljs-keyword,.dm-editor .ProseMirror pre code .hljs-meta .hljs-keyword,.dm-editor .ProseMirror pre code .hljs-template-tag,.dm-editor .ProseMirror pre code .hljs-template-variable,.dm-editor .ProseMirror pre code .hljs-type,.dm-editor .ProseMirror pre code .hljs-variable.language_{color:var(--dm-syntax-keyword)}.dm-editor .ProseMirror pre code .hljs-title,.dm-editor .ProseMirror pre code .hljs-title.class_,.dm-editor .ProseMirror pre code .hljs-title.class_.inherited__,.dm-editor .ProseMirror pre code .hljs-title.function_{color:var(--dm-syntax-entity)}.dm-editor .ProseMirror pre code .hljs-attr,.dm-editor .ProseMirror pre code .hljs-attribute,.dm-editor .ProseMirror pre code .hljs-literal,.dm-editor .ProseMirror pre code .hljs-meta,.dm-editor .ProseMirror pre code .hljs-number,.dm-editor .ProseMirror pre code .hljs-operator,.dm-editor .ProseMirror pre code .hljs-variable,.dm-editor .ProseMirror pre code .hljs-selector-attr,.dm-editor .ProseMirror pre code .hljs-selector-class,.dm-editor .ProseMirror pre code .hljs-selector-id{color:var(--dm-syntax-constant)}.dm-editor .ProseMirror pre code .hljs-regexp,.dm-editor .ProseMirror pre code .hljs-string,.dm-editor .ProseMirror pre code .hljs-meta .hljs-string{color:var(--dm-syntax-string)}.dm-editor .ProseMirror pre code .hljs-built_in,.dm-editor .ProseMirror pre code .hljs-symbol{color:var(--dm-syntax-variable)}.dm-editor .ProseMirror pre code .hljs-comment,.dm-editor .ProseMirror pre code .hljs-code,.dm-editor .ProseMirror pre code .hljs-formula{color:var(--dm-syntax-comment)}.dm-editor .ProseMirror pre code .hljs-name,.dm-editor .ProseMirror pre code .hljs-quote,.dm-editor .ProseMirror pre code .hljs-selector-tag,.dm-editor .ProseMirror pre code .hljs-selector-pseudo{color:var(--dm-syntax-tag)}.dm-editor .ProseMirror pre code .hljs-section{color:var(--dm-syntax-constant);font-weight:bold}.dm-editor .ProseMirror pre code .hljs-bullet{color:var(--dm-syntax-tag)}.dm-editor .ProseMirror pre code .hljs-addition{color:var(--dm-syntax-addition);background-color:var(--dm-syntax-addition-bg)}.dm-editor .ProseMirror pre code .hljs-deletion{color:var(--dm-syntax-deletion);background-color:var(--dm-syntax-deletion-bg)}.dm-editor .ProseMirror pre code .hljs-emphasis{font-style:italic}.dm-editor .ProseMirror pre code .hljs-strong{font-weight:bold}.dm-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:var(--dm-toolbar-justify, flex-start);gap:var(--dm-toolbar-gap);padding:var(--dm-toolbar-padding);background:var(--dm-toolbar-bg);border:1px solid var(--dm-border-color, #e5e7eb);border-bottom:1px solid var(--dm-border-color, #e5e7eb);border-radius:var(--dm-toolbar-border-radius);box-shadow:var(--dm-editor-shadow, none)}.dm-toolbar-group{display:flex;align-items:center;gap:var(--dm-toolbar-gap)}.dm-toolbar-button{display:inline-flex;align-items:center;justify-content:center;width:var(--dm-button-size);height:var(--dm-button-size);padding:0;border:none;border-radius:var(--dm-button-border-radius);background:rgba(0,0,0,0);color:var(--dm-button-color);cursor:pointer;transition:background-color .15s,color .15s;font-size:.875rem;line-height:1}.dm-toolbar-button:hover{background:var(--dm-button-hover-bg)}.dm-toolbar-button--active{background:var(--dm-button-active-bg);color:var(--dm-button-active-color)}.dm-toolbar-button[aria-expanded=true]{background:var(--dm-button-hover-bg)}.dm-toolbar-button--disabled,.dm-toolbar-button:disabled{opacity:var(--dm-button-disabled-opacity);cursor:not-allowed;pointer-events:none}.dm-toolbar-button svg{width:1.125rem;height:1.125rem}.dm-toolbar-dropdown-trigger{position:relative;width:auto;padding:0 .375rem;gap:.125rem}.dm-toolbar-dropdown-trigger[aria-expanded=true]{background:var(--dm-button-hover-bg)}.dm-toolbar-color-indicator{position:absolute;bottom:.15rem;left:.25rem;width:1.375rem;height:.3rem;border-radius:2px}.dm-toolbar-trigger-label{display:inline-block;vertical-align:middle;text-align:center;font-size:.8125rem;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:2.5rem}.dm-toolbar-trigger-label svg{width:1.125rem;height:1.125rem}[data-dropdown=fontFamily] .dm-toolbar-trigger-label{width:5rem}.dm-toolbar-button .dm-dropdown-caret{width:.625rem;height:.625rem;flex-shrink:0}.dm-toolbar-dropdown-wrapper{position:relative}.dm-toolbar-dropdown-panel{position:absolute;z-index:50;display:flex;flex-direction:column;gap:.125rem;min-width:8rem;padding:.25rem;background:var(--dm-bg, #fff);border:1px solid var(--dm-border-color, #e5e7eb);border-radius:.5rem;box-shadow:0 4px 16px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.04);animation:dm-fade-in .2s ease}.dm-toolbar-dropdown-panel.dm-color-palette{padding:.5rem;border-radius:.75rem}.dm-toolbar-dropdown-panel[data-display-mode=icon]{min-width:0}.dm-toolbar-dropdown-panel[data-display-mode=icon] .dm-toolbar-dropdown-item{width:auto;padding:.375rem;justify-content:center}.dm-toolbar-dropdown-panel[data-display-mode=text]{min-width:0}.dm-toolbar-dropdown-panel[data-display-mode=text] .dm-toolbar-dropdown-item{gap:0}.dm-toolbar-dropdown-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.375rem .5rem;border:none;border-radius:var(--dm-button-border-radius);background:rgba(0,0,0,0);color:var(--dm-button-color);cursor:pointer;font-size:.8125rem;line-height:1.4;text-align:left;white-space:nowrap;transition:background-color .15s}.dm-toolbar-dropdown-item:hover{background:var(--dm-button-hover-bg)}.dm-toolbar-dropdown-item--active{color:var(--dm-button-active-color);background:var(--dm-button-active-bg)}.dm-toolbar-dropdown-item svg{width:1rem;height:1rem;flex-shrink:0}.dm-toolbar-separator{width:1px;height:1.25rem;background:var(--dm-separator-color);margin:0 var(--dm-separator-margin)}.dm-color-palette{display:grid;grid-template-columns:repeat(var(--dm-palette-columns, 10), 1fr);gap:.375rem;padding:.375rem;min-width:auto;width:max-content}.dm-color-palette-reset{grid-column:1/-1;display:flex;align-items:center;gap:.375rem;width:100%;padding:.375rem .5rem;margin-bottom:.375rem;border:none;border-radius:.375rem;background:rgba(0,0,0,0);color:var(--dm-button-color, #1a1a1a);cursor:pointer;font-size:.8125rem;line-height:1.4;text-align:left;white-space:nowrap;transition:background-color .15s}.dm-color-palette-reset:hover{background:var(--dm-button-hover-bg, rgba(0, 0, 0, 0.06))}.dm-color-palette-reset svg{width:.875rem;height:.875rem;flex-shrink:0}.dm-color-swatch{position:relative;width:1.5rem;height:1.5rem;padding:0;border:1px solid rgba(0,0,0,.06);border-radius:50%;cursor:pointer;transition:transform .1s,box-shadow .1s}.dm-color-swatch:hover{transform:scale(1.15);z-index:1;box-shadow:0 0 0 2px var(--dm-toolbar-bg, #f8f9fa),0 0 0 3px var(--dm-accent, #2563eb)}.dm-color-swatch--active{box-shadow:0 0 0 2px var(--dm-toolbar-bg, #f8f9fa),0 0 0 3px var(--dm-accent, #2563eb)}.dm-color-swatch--active::after{content:"";position:absolute;inset:0;border-radius:50%;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M12 5L6.5 11 4 8.5' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' opacity='0.3'/%3E%3Cpath d='M12 5L6.5 11 4 8.5' fill='none' stroke='%23fff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/80% no-repeat}.dm-theme-dark .dm-color-swatch,.dm-theme-auto .dm-color-swatch{border-color:hsla(0,0%,100%,.15)}@media(prefers-color-scheme: dark){.dm-theme-auto .dm-color-swatch{border-color:hsla(0,0%,100%,.15)}}.dm-bubble-menu{--dm-toolbar-padding: 0.25rem;--dm-toolbar-gap: 0.125rem;--dm-button-size: 1.75rem;--dm-button-border-radius: 0.25rem;--dm-button-color: var(--dm-text, #1a1a1a);--dm-button-hover-bg: var(--dm-hover, rgba(0, 0, 0, 0.06));--dm-button-active-bg: var(--dm-accent-surface, rgba(37, 99, 235, 0.1));--dm-button-active-color: var(--dm-accent, #2563eb);--dm-button-disabled-opacity: 0.4}.dm-bubble-menu .dm-toolbar-button svg{width:1rem;height:1rem}.dm-bubble-menu .dm-toolbar-separator{width:1px;height:1.125rem;background:var(--dm-separator-color, var(--dm-border-color, #e0e0e0));margin:0 .125rem;flex-shrink:0}.dm-bubble-menu{position:absolute;display:flex;align-items:center;gap:var(--dm-toolbar-gap);padding:var(--dm-toolbar-padding);background:var(--dm-bg, #fff);border:1px solid var(--dm-border-color, #e5e7eb);border-radius:.5rem;box-shadow:0 4px 16px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.04);visibility:hidden;opacity:0;z-index:50}.dm-bubble-menu[data-show]{visibility:visible;opacity:1;transition:opacity .15s ease}.dm-floating-menu{position:absolute;display:flex;flex-direction:column;gap:var(--dm-toolbar-gap);padding:var(--dm-toolbar-padding);background:var(--dm-toolbar-bg);border:var(--dm-toolbar-border);border-radius:var(--dm-button-border-radius);box-shadow:0 4px 12px rgba(0,0,0,.12);visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s;z-index:50}.dm-floating-menu[data-show]{visibility:visible;opacity:1}.dm-link-popover{position:fixed;display:flex;align-items:center;gap:.25rem;padding:.25rem;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:.25rem;box-shadow:0 4px 12px rgba(0,0,0,.12);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s;z-index:60}.dm-link-popover[data-show]{visibility:visible;opacity:1}.dm-link-popover-input{border:1px solid #e0e0e0;border-radius:.25rem;padding:.25rem .5rem;font-size:.8125rem;font-family:inherit;min-width:14rem;outline:none;background:#fff;color:#1a1a1a}.dm-link-popover-input:focus{border-color:#2563eb}.dm-link-popover-btn{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;border:none;border-radius:.25rem;background:rgba(0,0,0,0);color:#1a1a1a;cursor:pointer;transition:background-color .15s,color .15s}.dm-link-popover-btn:hover{background:rgba(0,0,0,.06)}.dm-link-popover-btn svg{width:.875rem;height:.875rem}.dm-link-popover-apply:hover{color:#2563eb}.dm-link-popover-remove:hover{color:#dc2626}.dm-link-pending{background-color:rgba(37,99,235,.12);border-radius:1px}[data-theme=dark] .dm-link-popover,.dm-theme-dark .dm-link-popover{background:#2a2a2a;border-color:#404040}[data-theme=dark] .dm-link-popover .dm-link-popover-input,.dm-theme-dark .dm-link-popover .dm-link-popover-input{background:#1a1a1a;border-color:#404040;color:#e0e0e0}[data-theme=dark] .dm-link-popover .dm-link-popover-input:focus,.dm-theme-dark .dm-link-popover .dm-link-popover-input:focus{border-color:#3b82f6}[data-theme=dark] .dm-link-popover .dm-link-popover-btn,.dm-theme-dark .dm-link-popover .dm-link-popover-btn{color:#e0e0e0}[data-theme=dark] .dm-link-popover .dm-link-popover-btn:hover,.dm-theme-dark .dm-link-popover .dm-link-popover-btn:hover{background:hsla(0,0%,100%,.1)}[data-theme=dark] .dm-link-popover .dm-link-popover-apply:hover,.dm-theme-dark .dm-link-popover .dm-link-popover-apply:hover{color:#3b82f6}@media(prefers-color-scheme: dark){.dm-theme-auto .dm-link-popover{background:#2a2a2a;border-color:#404040}.dm-theme-auto .dm-link-popover .dm-link-popover-input{background:#1a1a1a;border-color:#404040;color:#e0e0e0}.dm-theme-auto .dm-link-popover .dm-link-popover-input:focus{border-color:#3b82f6}.dm-theme-auto .dm-link-popover .dm-link-popover-btn{color:#e0e0e0}.dm-theme-auto .dm-link-popover .dm-link-popover-btn:hover{background:hsla(0,0%,100%,.1)}.dm-theme-auto .dm-link-popover .dm-link-popover-apply:hover{color:#3b82f6}}.dm-editor .ProseMirror .is-empty::before{content:attr(data-placeholder);float:left;color:var(--dm-placeholder-color);pointer-events:none;height:0}.dm-editor .ProseMirror ul[data-type=taskList]{list-style:none;padding-left:0}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem]{display:flex;align-items:flex-start;gap:.5em}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem]>label{display:flex;align-items:center;flex-shrink:0;margin-top:.4em;user-select:none}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem]>label input[type=checkbox]{width:1em;height:1em;margin:0;padding:0;cursor:pointer;accent-color:var(--dm-accent, #2563eb)}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem]>div{flex:1;min-width:0}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem]>div>p{margin:0}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem][data-checked=true]>div{text-decoration:line-through;opacity:.6}.dm-editor .ProseMirror .mention{display:inline;background:var(--dm-mention-bg);color:var(--dm-mention-color);border-radius:var(--dm-mention-border-radius);padding:.1em .3em;font-weight:500;font-size:.95em;white-space:nowrap}.dm-editor .ProseMirror .mention-suggestion{text-decoration:underline;text-decoration-color:var(--dm-accent, #2563eb);text-underline-offset:2px}.dm-editor .ProseMirror img[style*="float: left"],.dm-editor .ProseMirror img[style*="float: right"]{max-width:60%}.dm-editor .ProseMirror .dm-image-resizable{position:relative;display:inline-block;max-width:100%;margin:.75em 0;line-height:0}.dm-editor .ProseMirror .dm-image-resizable img{display:block;max-width:100%;height:auto}.dm-editor .ProseMirror .dm-image-resizable[data-float=left]{float:left;margin:0 1em 1em 0}.dm-editor .ProseMirror .dm-image-resizable[data-float=right]{float:right;margin:0 0 1em 1em}.dm-editor .ProseMirror .dm-image-resizable[data-float=center]{display:block;width:fit-content;margin-left:auto;margin-right:auto}.dm-editor .ProseMirror .dm-image-resizable[data-float=left],.dm-editor .ProseMirror .dm-image-resizable[data-float=right]{max-width:60%;z-index:1}.dm-editor .ProseMirror .dm-image-resizable.ProseMirror-selectednode{outline:2px solid var(--dm-accent, #2563eb)}.dm-editor .ProseMirror .dm-image-resizable.ProseMirror-selectednode .dm-image-handle{display:block}.dm-editor .ProseMirror .dm-image-handle{display:none;position:absolute;width:8px;height:8px;background:var(--dm-accent, #2563eb);border:1px solid #fff;border-radius:1px;z-index:5}.dm-editor .ProseMirror .dm-image-handle-nw{top:-4px;left:-4px;cursor:nw-resize}.dm-editor .ProseMirror .dm-image-handle-ne{top:-4px;right:-4px;cursor:ne-resize}.dm-editor .ProseMirror .dm-image-handle-sw{bottom:-4px;left:-4px;cursor:sw-resize}.dm-editor .ProseMirror .dm-image-handle-se{bottom:-4px;right:-4px;cursor:se-resize}.dm-image-popover{position:fixed;display:flex;align-items:center;gap:.25rem;padding:.25rem;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:.25rem;box-shadow:0 4px 12px rgba(0,0,0,.12);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s;z-index:60}.dm-image-popover[data-show]{visibility:visible;opacity:1}.dm-image-popover-input{border:1px solid #e0e0e0;border-radius:.25rem;padding:.25rem .5rem;font-size:.8125rem;font-family:inherit;min-width:14rem;outline:none;background:#fff;color:#1a1a1a}.dm-image-popover-input:focus{border-color:#2563eb}.dm-image-popover-btn{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;border:none;border-radius:.25rem;background:rgba(0,0,0,0);color:#1a1a1a;cursor:pointer;transition:background-color .15s,color .15s}.dm-image-popover-btn:hover{background:rgba(0,0,0,.06)}.dm-image-popover-btn svg{width:.875rem;height:.875rem}.dm-image-popover-apply:hover{color:#2563eb}.dm-image-popover-browse:hover{color:#2563eb}[data-theme=dark] .dm-image-popover,.dm-theme-dark .dm-image-popover{background:#2a2a2a;border-color:#404040}[data-theme=dark] .dm-image-popover .dm-image-popover-input,.dm-theme-dark .dm-image-popover .dm-image-popover-input{background:#1a1a1a;border-color:#404040;color:#e0e0e0}[data-theme=dark] .dm-image-popover .dm-image-popover-input:focus,.dm-theme-dark .dm-image-popover .dm-image-popover-input:focus{border-color:#3b82f6}[data-theme=dark] .dm-image-popover .dm-image-popover-btn,.dm-theme-dark .dm-image-popover .dm-image-popover-btn{color:#e0e0e0}[data-theme=dark] .dm-image-popover .dm-image-popover-btn:hover,.dm-theme-dark .dm-image-popover .dm-image-popover-btn:hover{background:hsla(0,0%,100%,.1)}[data-theme=dark] .dm-image-popover .dm-image-popover-apply:hover,.dm-theme-dark .dm-image-popover .dm-image-popover-apply:hover{color:#3b82f6}@media(prefers-color-scheme: dark){.dm-theme-auto .dm-image-popover{background:#2a2a2a;border-color:#404040}.dm-theme-auto .dm-image-popover .dm-image-popover-input{background:#1a1a1a;border-color:#404040;color:#e0e0e0}.dm-theme-auto .dm-image-popover .dm-image-popover-input:focus{border-color:#3b82f6}.dm-theme-auto .dm-image-popover .dm-image-popover-btn{color:#e0e0e0}.dm-theme-auto .dm-image-popover .dm-image-popover-btn:hover{background:hsla(0,0%,100%,.1)}.dm-theme-auto .dm-image-popover .dm-image-popover-apply:hover{color:#3b82f6}}.dm-editor.dm-dragover{outline:2px dashed var(--dm-accent);outline-offset:-2px}.dm-editor.dm-dragover::after{content:"";position:absolute;inset:0;background:var(--dm-accent);opacity:.05;pointer-events:none;z-index:10}.dm-editor .ProseMirror div[data-type=details]{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;border:var(--dm-details-border);border-radius:.375rem;margin:.75em 0}.dm-editor .ProseMirror div[data-type=details]>div{display:contents}.dm-editor .ProseMirror div[data-type=details]>button[type=button]{grid-column:2;grid-row:1;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;align-self:center;margin-right:10px;border:none;background:rgba(0,0,0,0);cursor:pointer;color:var(--dm-muted);border-radius:50%}.dm-editor .ProseMirror div[data-type=details]>button[type=button]::before{content:"";display:block;width:.4em;height:.4em;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .15s ease}.dm-editor .ProseMirror div[data-type=details]>button[type=button]:hover{color:var(--dm-text);background:var(--dm-hover)}.dm-editor .ProseMirror div[data-type=details]>button[type=button]:focus{outline:none}.dm-editor .ProseMirror div[data-type=details]::before{content:"";grid-column:1/-1;grid-row:1;background:var(--dm-details-bg);border-radius:.375rem}.dm-editor .ProseMirror div[data-type=details].is-open::before{border-radius:.375rem .375rem 0 0}.dm-editor .ProseMirror div[data-type=details] summary{grid-column:1;grid-row:1;display:block;padding:.5em .5em .5em .75em;font-weight:var(--dm-details-summary-font-weight);min-height:0}.dm-editor .ProseMirror div[data-type=details] summary::-webkit-details-marker{display:none}.dm-editor .ProseMirror div[data-type=details] summary{list-style:none}.dm-editor .ProseMirror div[data-type=details] div[data-details-content]{grid-column:1/-1;grid-row:2;padding:.5em .75em;border-top:var(--dm-details-border)}.dm-editor .ProseMirror div[data-type=details].ProseMirror-selectednode{outline:none}.dm-editor .ProseMirror div[data-type=details].is-open>button[type=button]::before{transform:rotate(45deg)}.dm-editor .ProseMirror .invisible-char{color:var(--dm-invisible-char-color, var(--dm-muted, #999));pointer-events:none;user-select:none}.dm-editor .ProseMirror [data-char=space]{position:relative}.dm-editor .ProseMirror [data-char=space]::after{content:"·";position:absolute;inset:0;text-align:center;color:var(--dm-invisible-char-color, var(--dm-muted, #999));pointer-events:none}.dm-editor .ProseMirror [data-char=nbsp]{position:relative}.dm-editor .ProseMirror [data-char=nbsp]::after{content:"°";position:absolute;inset:0;text-align:center;color:var(--dm-invisible-char-color, var(--dm-muted, #999));pointer-events:none}.dm-emoji-picker{position:absolute;z-index:100;width:20rem;max-height:22rem;display:flex;flex-direction:column;background:var(--dm-surface, #f8f9fa);border:1px solid var(--dm-border-color, #e0e0e0);border-radius:.25rem;box-shadow:0 4px 12px rgba(0,0,0,.12);overflow:hidden;animation:dm-fade-in .2s ease}.dm-emoji-picker-search{flex-shrink:0;padding:.5rem;border-bottom:1px solid var(--dm-border-color, #e0e0e0)}.dm-emoji-picker-search input{width:100%;padding:.375rem .5rem;border:1px solid var(--dm-border-color, #e0e0e0);border-radius:.25rem;background:var(--dm-bg, #ffffff);color:var(--dm-text, #1a1a1a);font-size:.8125rem;outline:none;box-sizing:border-box}.dm-emoji-picker-search input:focus{border-color:var(--dm-accent, #2563eb)}.dm-emoji-picker-search input::placeholder{color:var(--dm-muted, #999999)}.dm-emoji-picker-tabs{display:flex;align-items:center;flex-shrink:0;padding:.375rem .5rem;gap:.1rem;border-bottom:1px solid var(--dm-border-color, #e0e0e0);overflow-x:auto;scrollbar-width:none}.dm-emoji-picker-tabs::-webkit-scrollbar{display:none}.dm-emoji-picker-tab{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;padding:0;border:none;border-radius:.375rem;background:rgba(0,0,0,0);cursor:pointer;font-size:1.25rem;line-height:1;opacity:.5;transition:opacity .15s,background-color .15s}.dm-emoji-picker-tab:hover{opacity:1;background:var(--dm-hover, rgba(0, 0, 0, 0.06))}.dm-emoji-picker-tab--active{opacity:1;background:var(--dm-active, rgba(0, 0, 0, 0.12))}.dm-emoji-picker-grid{flex:1;overflow-y:auto;padding:.25rem .5rem .5rem;display:grid;grid-template-columns:repeat(8, 1fr);gap:.125rem;align-content:start}.dm-emoji-picker-category-label{grid-column:1/-1;font-size:.6875rem;font-weight:600;color:var(--dm-text, #1a1a1a);opacity:.6;padding:.375rem 0 .125rem;text-transform:uppercase;letter-spacing:.03em}.dm-emoji-swatch{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:.25rem;background:rgba(0,0,0,0);cursor:pointer;font-size:1.25rem;line-height:1;transition:background-color .1s,transform .1s}.dm-emoji-swatch:hover{background:var(--dm-hover, rgba(0, 0, 0, 0.06));transform:scale(1.15)}.dm-emoji-picker-empty{grid-column:1/-1;padding:1rem;text-align:center;color:var(--dm-text, #1a1a1a);opacity:.5;font-size:.8125rem}.dm-emoji-suggestion{position:absolute;z-index:100;min-width:12rem;max-width:18rem;padding:.25rem;background:var(--dm-surface, #f8f9fa);border:1px solid var(--dm-border-color, #e0e0e0);border-radius:.25rem;box-shadow:0 4px 12px rgba(0,0,0,.12);animation:dm-fade-in .2s ease}.dm-emoji-suggestion-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.375rem .5rem;border:none;border-radius:.25rem;background:rgba(0,0,0,0);color:var(--dm-text, #1a1a1a);cursor:pointer;font-size:.8125rem;line-height:1.4;text-align:left;transition:background-color .1s}.dm-emoji-suggestion-item:hover,.dm-emoji-suggestion-item--selected{background:var(--dm-hover, rgba(0, 0, 0, 0.06))}.dm-emoji-suggestion-emoji{font-size:1.125rem;line-height:1;flex-shrink:0}.dm-emoji-suggestion-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-emoji-suggestion-empty{padding:.5rem;text-align:center;color:var(--dm-text, #1a1a1a);opacity:.5;font-size:.8125rem}.dm-editor .ProseMirror span.emoji{cursor:default;font-style:normal;padding:0 .05em}.dm-editor .ProseMirror span.emoji.ProseMirror-selectednode{outline:2px solid var(--dm-accent, #2563eb);border-radius:.15em}.dm-editor .dm-table-container{position:relative}.dm-table-col-handle,.dm-table-row-handle{position:absolute;z-index:10;display:none;align-items:center;justify-content:center;border:1px solid var(--dm-border-color, #e0e0e0);border-radius:4px;background:var(--dm-bg, #ffffff);color:var(--dm-muted, #999999);cursor:pointer;padding:0;transition:background-color .15s,color .15s,box-shadow .15s}.dm-table-col-handle:hover,.dm-table-row-handle:hover{background:var(--dm-hover, rgba(0, 0, 0, 0.06));color:var(--dm-text, #1a1a1a);box-shadow:0 1px 4px rgba(0,0,0,.1)}.dm-table-col-handle svg,.dm-table-row-handle svg{display:block}.dm-table-col-handle{width:24px;height:14px}.dm-table-row-handle{width:14px;height:24px}.dm-table-cell-handle{position:absolute;z-index:10;display:none;align-items:center;justify-content:center;width:14px;height:14px;border:1px solid var(--dm-accent, #2563eb);border-radius:50%;background:var(--dm-bg, #ffffff);color:var(--dm-accent, #2563eb);cursor:pointer;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.08);transition:background-color .15s,color .15s,border-color .15s,box-shadow .15s}.dm-table-cell-handle:hover{background:var(--dm-accent, #2563eb);color:#fff;border-color:var(--dm-accent, #2563eb);box-shadow:0 1px 4px color-mix(in srgb, var(--dm-accent, #2563eb) 30%, transparent)}.dm-table-cell-handle svg{display:block;width:8px;height:8px}.dm-table-cell-toolbar{position:absolute;z-index:10;display:none;align-items:center;gap:2px;padding:2px;border:1px solid var(--dm-border-color, #e0e0e0);border-radius:6px;background:var(--dm-bg, #ffffff);box-shadow:0 2px 8px rgba(0,0,0,.1);animation:dm-fade-in .12s ease}.dm-table-cell-toolbar-btn{display:flex;align-items:center;gap:1px;padding:4px 5px;border:none;border-radius:4px;background:rgba(0,0,0,0);color:var(--dm-text, #1a1a1a);cursor:pointer;transition:background-color .15s,color .15s}.dm-table-cell-toolbar-btn:hover,.dm-table-cell-toolbar-btn.dm-table-cell-toolbar-btn--open{background:var(--dm-hover, rgba(0, 0, 0, 0.06))}.dm-table-cell-toolbar-btn--active{color:var(--dm-accent, #2563eb);background:var(--dm-accent-surface, rgba(37, 99, 235, 0.1))}.dm-table-cell-toolbar-btn:disabled{opacity:.3;cursor:default;pointer-events:none}.dm-table-cell-toolbar-btn svg{display:block;flex-shrink:0}.dm-table-cell-toolbar-chevron{display:flex;align-items:center}.dm-table-cell-toolbar-sep{width:1px;height:16px;margin:0 2px;background:var(--dm-border-color, #e0e0e0)}.dm-table-cell-align-dropdown{min-width:auto;width:max-content;padding:.25rem}.dm-table-cell-align-dropdown .dm-table-align-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.3rem .5rem;border:none;border-radius:.25rem;background:rgba(0,0,0,0);color:var(--dm-text, #1a1a1a);cursor:pointer;font-size:.8125rem;white-space:nowrap;transition:background-color .15s,color .15s}.dm-table-cell-align-dropdown .dm-table-align-item:hover{background:var(--dm-hover, rgba(0, 0, 0, 0.06))}.dm-table-cell-align-dropdown .dm-table-align-item--active{color:var(--dm-accent, #2563eb);background:var(--dm-accent-surface, rgba(37, 99, 235, 0.1))}.dm-table-cell-align-dropdown .dm-table-align-item-icon{display:flex;align-items:center}.dm-table-cell-align-dropdown .dm-table-align-item-icon svg{display:block}.dm-editor .ProseMirror table td[data-text-align=center],.dm-editor .ProseMirror table th[data-text-align=center]{text-align:center}.dm-editor .ProseMirror table td[data-text-align=right],.dm-editor .ProseMirror table th[data-text-align=right]{text-align:right}.dm-editor .ProseMirror table td[data-vertical-align=middle],.dm-editor .ProseMirror table th[data-vertical-align=middle]{vertical-align:middle}.dm-editor .ProseMirror table td[data-vertical-align=bottom],.dm-editor .ProseMirror table th[data-vertical-align=bottom]{vertical-align:bottom}.dm-editor td.dm-cell-focused,.dm-editor th.dm-cell-focused{outline:1px solid var(--dm-accent, #2563eb);outline-offset:-1px}.dm-table-controls-dropdown{position:absolute;z-index:50;display:flex;flex-direction:column;gap:.125rem;min-width:10rem;padding:.25rem;background:var(--dm-bg, #fff);border:1px solid var(--dm-border-color, #e5e7eb);border-radius:.5rem;box-shadow:0 4px 16px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.04);animation:dm-fade-in .2s ease}.dm-table-controls-dropdown>button{display:flex;align-items:center;gap:.375rem;width:100%;padding:.375rem .5rem;border:none;border-radius:var(--dm-button-border-radius);background:rgba(0,0,0,0);color:var(--dm-button-color);cursor:pointer;font-size:.8125rem;line-height:1.4;text-align:left;white-space:nowrap;transition:background-color .15s}.dm-table-controls-dropdown>button:hover{background:var(--dm-button-hover-bg)}.dm-table-controls-dropdown-icon{display:flex;align-items:center;color:var(--dm-icon, #666)}.dm-table-controls-dropdown-icon svg{display:block}.dm-table-cell-dropdown{min-width:auto;width:max-content;padding:0;border-radius:.75rem}.dm-table-cell-dropdown .dm-color-palette{padding:.5rem}.dm-table-cell-dropdown-separator{height:1px;background:var(--dm-border-color, #e0e0e0);margin:.25rem 0}.dm-theme-light,.dm-theme-light .dm-editor,.dm-theme-light .dm-toolbar,.dm-theme-light .dm-table-controls-dropdown{--dm-bg: #ffffff;--dm-text: #1a1a1a;--dm-muted: #999999;--dm-surface: #f8f9fa;--dm-border-color: #e0e0e0;--dm-hover: rgba(0, 0, 0, 0.06);--dm-active: rgba(0, 0, 0, 0.12);--dm-accent: #2563eb;--dm-accent-hover: #1d4ed8;--dm-accent-surface: rgba(37, 99, 235, 0.1);--dm-focus-color: rgba(66, 133, 244, 0.3);--dm-selection: rgba(66, 133, 244, 0.2);--dm-code-surface: #f5f5f5;--dm-code-color: #d63384;--dm-highlight-bg: #fff3cd;--dm-syntax-keyword: #c72031;--dm-syntax-entity: #6f42c1;--dm-syntax-constant: #005cc5;--dm-syntax-string: #032f62;--dm-syntax-variable: #d35400;--dm-syntax-comment: #57606a;--dm-syntax-tag: #22863a;--dm-syntax-addition: #22863a;--dm-syntax-addition-bg: #f0fff4;--dm-syntax-deletion: #b31d28;--dm-syntax-deletion-bg: #ffeef0}.dm-theme-dark,.dm-theme-dark .dm-editor,.dm-theme-dark .dm-toolbar,.dm-theme-dark .dm-bubble-menu,.dm-theme-dark .dm-emoji-picker,.dm-theme-dark .dm-emoji-suggestion,.dm-theme-dark .dm-table-controls-dropdown{--dm-color-scheme: dark;--dm-bg: #1e1e1e;--dm-text: #e0e0e0;--dm-muted: #777777;--dm-surface: #2a2a2a;--dm-border-color: #3a3a3a;--dm-hover: rgba(255, 255, 255, 0.08);--dm-active: rgba(255, 255, 255, 0.15);--dm-accent: #60a5fa;--dm-accent-hover: #93c5fd;--dm-accent-surface: rgba(96, 165, 250, 0.15);--dm-focus-color: rgba(96, 165, 250, 0.3);--dm-selection: rgba(96, 165, 250, 0.25);--dm-code-surface: #2d2d2d;--dm-code-color: inherit;--dm-highlight-bg: rgba(255, 243, 205, 0.2);--dm-blockquote-border: 3px solid #555555;--dm-blockquote-color: #a0a0a0;--dm-syntax-keyword: #ff7b72;--dm-syntax-entity: #d2a8ff;--dm-syntax-constant: #79c0ff;--dm-syntax-string: #a5d6ff;--dm-syntax-variable: #ffa657;--dm-syntax-comment: #8b949e;--dm-syntax-tag: #7ee787;--dm-syntax-addition: #aff5b4;--dm-syntax-addition-bg: #033a16;--dm-syntax-deletion: #ffdcd7;--dm-syntax-deletion-bg: #67060c}@media(prefers-color-scheme: dark){.dm-theme-auto,.dm-theme-auto .dm-editor,.dm-theme-auto .dm-toolbar,.dm-theme-auto .dm-bubble-menu,.dm-theme-auto .dm-emoji-picker,.dm-theme-auto .dm-emoji-suggestion,.dm-theme-auto .dm-table-controls-dropdown{--dm-color-scheme: dark;--dm-bg: #1e1e1e;--dm-text: #e0e0e0;--dm-muted: #777777;--dm-surface: #2a2a2a;--dm-border-color: #3a3a3a;--dm-hover: rgba(255, 255, 255, 0.08);--dm-active: rgba(255, 255, 255, 0.15);--dm-accent: #60a5fa;--dm-accent-hover: #93c5fd;--dm-accent-surface: rgba(96, 165, 250, 0.15);--dm-focus-color: rgba(96, 165, 250, 0.3);--dm-selection: rgba(96, 165, 250, 0.25);--dm-code-surface: #2d2d2d;--dm-code-color: inherit;--dm-highlight-bg: rgba(255, 243, 205, 0.2);--dm-blockquote-border: 3px solid #555555;--dm-blockquote-color: #a0a0a0;--dm-syntax-keyword: #ff7b72;--dm-syntax-entity: #d2a8ff;--dm-syntax-constant: #79c0ff;--dm-syntax-string: #a5d6ff;--dm-syntax-variable: #ffa657;--dm-syntax-comment: #8b949e;--dm-syntax-tag: #7ee787;--dm-syntax-addition: #aff5b4;--dm-syntax-addition-bg: #033a16;--dm-syntax-deletion: #ffdcd7;--dm-syntax-deletion-bg: #67060c}}
1
+ .dm-editor{--dm-bg: #ffffff;--dm-text: #1a1a1a;--dm-muted: #999999;--dm-surface: #f8f9fa;--dm-border-color: #e5e7eb;--dm-hover: rgba(0, 0, 0, 0.04);--dm-active: rgba(0, 0, 0, 0.1);--dm-accent: #2563eb;--dm-accent-hover: #1d4ed8;--dm-accent-surface: rgba(37, 99, 235, 0.1);--dm-focus-color: rgba(66, 133, 244, 0.3);--dm-selection: rgba(66, 133, 244, 0.2);--dm-code-surface: #f0f0f0;--dm-code-color: inherit;--dm-editor-bg: var(--dm-bg);--dm-editor-text: var(--dm-text);--dm-editor-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--dm-editor-font-size: 1rem;--dm-editor-line-height: 1.6;--dm-editor-padding: 1rem;--dm-editor-border: 1px solid var(--dm-border-color);--dm-editor-border-radius: 0.75rem;--dm-editor-focus-ring: none;--dm-editor-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.02);--dm-placeholder-color: var(--dm-muted);--dm-link-color: var(--dm-accent);--dm-link-hover-color: var(--dm-accent-hover);--dm-code-bg: var(--dm-code-surface);--dm-code-text: var(--dm-code-color);--dm-code-font: "SF Mono", "Fira Code", Consolas, "Liberation Mono", Menlo, monospace;--dm-code-border-radius: 0.25rem;--dm-code-block-bg: var(--dm-code-surface);--dm-code-block-text: var(--dm-text);--dm-syntax-keyword: #c72031;--dm-syntax-entity: #6f42c1;--dm-syntax-constant: #005cc5;--dm-syntax-string: #032f62;--dm-syntax-variable: #d35400;--dm-syntax-comment: #57606a;--dm-syntax-tag: #22863a;--dm-syntax-addition: #22863a;--dm-syntax-addition-bg: #f0fff4;--dm-syntax-deletion: #b31d28;--dm-syntax-deletion-bg: #ffeef0;--dm-blockquote-border: 3px solid #6a6a6a;--dm-blockquote-color: #6a6a6a;--dm-hr-color: var(--dm-border-color);--dm-table-border: 1px solid var(--dm-border-color);--dm-table-header-bg: var(--dm-surface);--dm-table-selected-bg: rgba(66, 133, 244, 0.15);--dm-mention-bg: var(--dm-accent-surface);--dm-mention-color: var(--dm-accent);--dm-mention-border-radius: 0.25rem;--dm-highlight-bg: #fff3cd;--dm-details-border: 1px solid var(--dm-border-color);--dm-details-bg: var(--dm-surface);--dm-details-summary-font-weight: 600}.dm-toolbar{--dm-toolbar-bg: var(--dm-bg, #ffffff);--dm-toolbar-border: none;--dm-toolbar-padding: 0.375rem 0.5rem;--dm-toolbar-gap: 0.125rem;--dm-toolbar-border-radius: 0.75rem 0.75rem 0 0;--dm-button-size: 2rem;--dm-button-border-radius: 0.375rem;--dm-button-color: var(--dm-text, #374151);--dm-button-hover-bg: var(--dm-hover, rgba(0, 0, 0, 0.04));--dm-button-active-bg: var(--dm-accent-surface, rgba(37, 99, 235, 0.1));--dm-button-active-color: var(--dm-accent, #2563eb);--dm-button-disabled-opacity: 0.35;--dm-separator-color: var(--dm-border-color, #e5e7eb);--dm-separator-margin: 0.375rem}.dm-editor .ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;font-feature-settings:"liga" 0;outline:none}.dm-editor .ProseMirror pre{white-space:pre-wrap}.dm-editor .ProseMirror li{position:relative}.ProseMirror-hideselection *::selection{background:rgba(0,0,0,0)}.ProseMirror-hideselection *::-moz-selection{background:rgba(0,0,0,0)}.ProseMirror-hideselection{caret-color:rgba(0,0,0,0)}.ProseMirror [draggable][contenteditable=false]{user-select:text}.dm-editor .ProseMirror-selectednode{outline:2px solid var(--dm-accent, #2563eb)}.dm-editor li.ProseMirror-selectednode{outline:none}.dm-editor li.ProseMirror-selectednode::after{content:"";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid var(--dm-accent, #2563eb);pointer-events:none}img.ProseMirror-separator{display:inline !important;border:none !important;margin:0 !important}.dm-editor .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}.dm-editor .ProseMirror-gapcursor::after{content:"";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid var(--dm-editor-text, #1a1a1a);animation:ProseMirror-cursor-blink 1.1s steps(2, start) infinite}@keyframes ProseMirror-cursor-blink{to{visibility:hidden}}.dm-editor .ProseMirror-focused .ProseMirror-gapcursor{display:block}.dm-editor .tableWrapper{overflow-x:auto}.dm-editor table{border-collapse:collapse;table-layout:fixed;width:100%;overflow:hidden}.dm-editor td,.dm-editor th{vertical-align:top;box-sizing:border-box;position:relative}.dm-editor .column-resize-handle{position:absolute;right:-1.5px;top:0;bottom:0;width:2px;z-index:20;background-color:var(--dm-accent, #2563eb);pointer-events:none}.dm-editor .dm-mouse-drag .column-resize-handle{display:none}.dm-editor .ProseMirror.resize-cursor{cursor:ew-resize;cursor:col-resize}.dm-editor .ProseMirror.resize-cursor.dm-mouse-drag{cursor:auto}.dm-editor .selectedCell::after{z-index:2;position:absolute;content:"";left:0;right:0;top:0;bottom:0;background:var(--dm-table-selected-bg, rgba(66, 133, 244, 0.15));pointer-events:none}.dm-editor .selectedCell::selection,.dm-editor .selectedCell *::selection{background:rgba(0,0,0,0) !important;color:inherit !important}.dm-editor{display:block;position:relative;box-sizing:border-box;background:var(--dm-editor-bg);color:var(--dm-editor-text);font-family:var(--dm-editor-font-family);font-size:var(--dm-editor-font-size);line-height:var(--dm-editor-line-height);border:var(--dm-editor-border);border-radius:var(--dm-editor-border-radius);box-shadow:var(--dm-editor-shadow, none);overflow:hidden;color-scheme:var(--dm-color-scheme, light)}.dm-editor .ProseMirror{padding:var(--dm-editor-padding);min-height:6rem}.dm-editor .ProseMirror:focus{outline:none}.dm-editor:focus-within{box-shadow:var(--dm-editor-focus-ring, var(--dm-editor-shadow, none))}.dm-editor .ProseMirror ::selection{background:var(--dm-selection)}.dm-toolbar+.dm-editor{border-top-left-radius:0;border-top-right-radius:0;border-top:none}@keyframes dm-fade-in{from{opacity:0}to{opacity:1}}.dm-editor .ProseMirror h1,.dm-editor .ProseMirror h2,.dm-editor .ProseMirror h3,.dm-editor .ProseMirror h4,.dm-editor .ProseMirror h5,.dm-editor .ProseMirror h6{line-height:1.25}.dm-editor .ProseMirror h3{font-size:1.25em}.dm-editor .ProseMirror h4{font-size:1.1em}.dm-editor .ProseMirror h6{font-size:.9em;color:var(--dm-muted, #666)}.dm-editor .ProseMirror code{background:var(--dm-code-bg);color:var(--dm-code-text);font-family:var(--dm-code-font);font-size:.875em;padding:.15em .35em;border:1px solid var(--dm-border-color);border-radius:var(--dm-code-border-radius)}.dm-editor .ProseMirror pre{background:var(--dm-code-block-bg);color:var(--dm-code-block-text);font-family:var(--dm-code-font);font-size:.875em;padding:1em;border-radius:.375rem;overflow-x:auto;margin:.75em 0}.dm-editor .ProseMirror pre code{background:none;color:inherit;padding:0;border:none;border-radius:0;font-size:inherit}.dm-editor .ProseMirror blockquote{border-left:var(--dm-blockquote-border);color:var(--dm-blockquote-color);margin:.5em 0;padding:.1em 0 .1em .8em}.dm-editor .ProseMirror ul,.dm-editor .ProseMirror ol{margin:.75em 0;padding-left:1.5em}.dm-editor .ProseMirror ul li,.dm-editor .ProseMirror ol li{margin:.25em 0}.dm-editor .ProseMirror ul li>p,.dm-editor .ProseMirror ol li>p{margin:.1em 0}.dm-editor .ProseMirror hr{border:none;border-top:2px solid var(--dm-hr-color);margin:1.5em 0}.dm-editor .ProseMirror a{color:var(--dm-link-color)}.dm-editor .ProseMirror a:hover{color:var(--dm-link-hover-color)}.dm-editor .ProseMirror mark{color:inherit}.dm-editor .ProseMirror img{max-width:100%;height:auto;display:block;margin:.75em 0}.dm-editor .ProseMirror img.ProseMirror-selectednode{outline:2px solid var(--dm-accent, #2563eb)}.dm-editor .ProseMirror table{border:var(--dm-table-border);margin:.75em 0}.dm-editor .ProseMirror table td,.dm-editor .ProseMirror table th{border:var(--dm-table-border);padding:.5em .75em;min-width:100px}.dm-editor .ProseMirror table th{background:var(--dm-table-header-bg);font-weight:600;text-align:left}.dm-editor .ProseMirror table td>p,.dm-editor .ProseMirror table th>p{margin:0}.dm-editor .ProseMirror pre code .hljs-doctag,.dm-editor .ProseMirror pre code .hljs-keyword,.dm-editor .ProseMirror pre code .hljs-meta .hljs-keyword,.dm-editor .ProseMirror pre code .hljs-template-tag,.dm-editor .ProseMirror pre code .hljs-template-variable,.dm-editor .ProseMirror pre code .hljs-type,.dm-editor .ProseMirror pre code .hljs-variable.language_{color:var(--dm-syntax-keyword)}.dm-editor .ProseMirror pre code .hljs-title,.dm-editor .ProseMirror pre code .hljs-title.class_,.dm-editor .ProseMirror pre code .hljs-title.class_.inherited__,.dm-editor .ProseMirror pre code .hljs-title.function_{color:var(--dm-syntax-entity)}.dm-editor .ProseMirror pre code .hljs-attr,.dm-editor .ProseMirror pre code .hljs-attribute,.dm-editor .ProseMirror pre code .hljs-literal,.dm-editor .ProseMirror pre code .hljs-meta,.dm-editor .ProseMirror pre code .hljs-number,.dm-editor .ProseMirror pre code .hljs-operator,.dm-editor .ProseMirror pre code .hljs-variable,.dm-editor .ProseMirror pre code .hljs-selector-attr,.dm-editor .ProseMirror pre code .hljs-selector-class,.dm-editor .ProseMirror pre code .hljs-selector-id{color:var(--dm-syntax-constant)}.dm-editor .ProseMirror pre code .hljs-regexp,.dm-editor .ProseMirror pre code .hljs-string,.dm-editor .ProseMirror pre code .hljs-meta .hljs-string{color:var(--dm-syntax-string)}.dm-editor .ProseMirror pre code .hljs-built_in,.dm-editor .ProseMirror pre code .hljs-symbol{color:var(--dm-syntax-variable)}.dm-editor .ProseMirror pre code .hljs-comment,.dm-editor .ProseMirror pre code .hljs-code,.dm-editor .ProseMirror pre code .hljs-formula{color:var(--dm-syntax-comment)}.dm-editor .ProseMirror pre code .hljs-name,.dm-editor .ProseMirror pre code .hljs-quote,.dm-editor .ProseMirror pre code .hljs-selector-tag,.dm-editor .ProseMirror pre code .hljs-selector-pseudo{color:var(--dm-syntax-tag)}.dm-editor .ProseMirror pre code .hljs-section{color:var(--dm-syntax-constant);font-weight:bold}.dm-editor .ProseMirror pre code .hljs-bullet{color:var(--dm-syntax-tag)}.dm-editor .ProseMirror pre code .hljs-addition{color:var(--dm-syntax-addition);background-color:var(--dm-syntax-addition-bg)}.dm-editor .ProseMirror pre code .hljs-deletion{color:var(--dm-syntax-deletion);background-color:var(--dm-syntax-deletion-bg)}.dm-editor .ProseMirror pre code .hljs-emphasis{font-style:italic}.dm-editor .ProseMirror pre code .hljs-strong{font-weight:bold}.dm-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:var(--dm-toolbar-justify, flex-start);gap:var(--dm-toolbar-gap);padding:var(--dm-toolbar-padding);background:var(--dm-toolbar-bg);border:1px solid var(--dm-border-color, #e5e7eb);border-bottom:1px solid var(--dm-border-color, #e5e7eb);border-radius:var(--dm-toolbar-border-radius);box-shadow:var(--dm-editor-shadow, none)}.dm-toolbar-group{display:flex;align-items:center;gap:var(--dm-toolbar-gap)}.dm-toolbar-button{display:inline-flex;align-items:center;justify-content:center;width:var(--dm-button-size);height:var(--dm-button-size);padding:0;border:none;border-radius:var(--dm-button-border-radius);background:rgba(0,0,0,0);color:var(--dm-button-color);cursor:pointer;transition:background-color .15s,color .15s;font-size:.875rem;line-height:1}.dm-toolbar-button:hover{background:var(--dm-button-hover-bg)}.dm-toolbar-button--active{background:var(--dm-button-active-bg);color:var(--dm-button-active-color)}.dm-toolbar-button[aria-expanded=true]{background:var(--dm-button-hover-bg)}.dm-toolbar-button--disabled,.dm-toolbar-button:disabled{opacity:var(--dm-button-disabled-opacity);cursor:not-allowed;pointer-events:none}.dm-toolbar-button svg{width:1.125rem;height:1.125rem}.dm-toolbar-dropdown-trigger{position:relative;width:auto;padding:0 .375rem;gap:.125rem}.dm-toolbar-dropdown-trigger[aria-expanded=true]{background:var(--dm-button-hover-bg)}.dm-toolbar-color-indicator{position:absolute;bottom:.15rem;left:.25rem;width:1.375rem;height:.3rem;border-radius:2px}.dm-toolbar-trigger-label{display:inline-block;vertical-align:middle;text-align:center;font-size:.8125rem;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:2.5rem}.dm-toolbar-trigger-label svg{width:1.125rem;height:1.125rem}[data-dropdown=fontFamily] .dm-toolbar-trigger-label{width:5rem}.dm-toolbar-button .dm-dropdown-caret{width:.625rem;height:.625rem;flex-shrink:0}.dm-toolbar-dropdown-wrapper{position:relative}.dm-toolbar-dropdown-panel{position:absolute;z-index:50;display:flex;flex-direction:column;gap:.125rem;min-width:8rem;padding:.25rem;background:var(--dm-bg, #fff);border:1px solid var(--dm-border-color, #e5e7eb);border-radius:.5rem;box-shadow:0 4px 16px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.04);animation:dm-fade-in .2s ease}.dm-toolbar-dropdown-panel.dm-color-palette{padding:.5rem;border-radius:.75rem}.dm-toolbar-dropdown-panel[data-display-mode=icon]{min-width:0}.dm-toolbar-dropdown-panel[data-display-mode=icon] .dm-toolbar-dropdown-item{width:auto;padding:.375rem;justify-content:center}.dm-toolbar-dropdown-panel[data-display-mode=text]{min-width:0}.dm-toolbar-dropdown-panel[data-display-mode=text] .dm-toolbar-dropdown-item{gap:0}.dm-toolbar-dropdown-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.375rem .5rem;border:none;border-radius:var(--dm-button-border-radius);background:rgba(0,0,0,0);color:var(--dm-button-color);cursor:pointer;font-size:.8125rem;line-height:1.4;text-align:left;white-space:nowrap;transition:background-color .15s}.dm-toolbar-dropdown-item:hover{background:var(--dm-button-hover-bg)}.dm-toolbar-dropdown-item--active{color:var(--dm-button-active-color);background:var(--dm-button-active-bg)}.dm-toolbar-dropdown-item svg{width:1rem;height:1rem;flex-shrink:0}.dm-toolbar-separator{width:1px;height:1.25rem;background:var(--dm-separator-color);margin:0 var(--dm-separator-margin)}.dm-color-palette{display:grid;grid-template-columns:repeat(var(--dm-palette-columns, 10), 1fr);gap:.375rem;padding:.375rem;min-width:auto;width:max-content}.dm-color-palette-reset{grid-column:1/-1;display:flex;align-items:center;gap:.375rem;width:100%;padding:.375rem .5rem;margin-bottom:.375rem;border:none;border-radius:.375rem;background:rgba(0,0,0,0);color:var(--dm-button-color, #1a1a1a);cursor:pointer;font-size:.8125rem;line-height:1.4;text-align:left;white-space:nowrap;transition:background-color .15s}.dm-color-palette-reset:hover{background:var(--dm-button-hover-bg, rgba(0, 0, 0, 0.06))}.dm-color-palette-reset svg{width:.875rem;height:.875rem;flex-shrink:0}.dm-color-swatch{position:relative;width:1.5rem;height:1.5rem;padding:0;border:1px solid rgba(0,0,0,.06);border-radius:50%;cursor:pointer;transition:transform .1s,box-shadow .1s}.dm-color-swatch:hover{transform:scale(1.15);z-index:1;box-shadow:0 0 0 2px var(--dm-toolbar-bg, #f8f9fa),0 0 0 3px var(--dm-accent, #2563eb)}.dm-color-swatch--active{box-shadow:0 0 0 2px var(--dm-toolbar-bg, #f8f9fa),0 0 0 3px var(--dm-accent, #2563eb)}.dm-color-swatch--active::after{content:"";position:absolute;inset:0;border-radius:50%;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M12 5L6.5 11 4 8.5' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' opacity='0.3'/%3E%3Cpath d='M12 5L6.5 11 4 8.5' fill='none' stroke='%23fff' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/80% no-repeat}.dm-theme-dark .dm-color-swatch,.dm-theme-auto .dm-color-swatch{border-color:hsla(0,0%,100%,.15)}@media(prefers-color-scheme: dark){.dm-theme-auto .dm-color-swatch{border-color:hsla(0,0%,100%,.15)}}.dm-bubble-menu{--dm-toolbar-padding: 0.25rem;--dm-toolbar-gap: 0.125rem;--dm-button-size: 1.75rem;--dm-button-border-radius: 0.25rem;--dm-button-color: var(--dm-text, #1a1a1a);--dm-button-hover-bg: var(--dm-hover, rgba(0, 0, 0, 0.06));--dm-button-active-bg: var(--dm-accent-surface, rgba(37, 99, 235, 0.1));--dm-button-active-color: var(--dm-accent, #2563eb);--dm-button-disabled-opacity: 0.4}.dm-bubble-menu .dm-toolbar-button svg{width:1rem;height:1rem}.dm-bubble-menu .dm-toolbar-separator{width:1px;height:1.125rem;background:var(--dm-separator-color, var(--dm-border-color, #e0e0e0));margin:0 .125rem;flex-shrink:0}.dm-bubble-menu{position:absolute;display:flex;align-items:center;gap:var(--dm-toolbar-gap);padding:var(--dm-toolbar-padding);background:var(--dm-bg, #fff);border:1px solid var(--dm-border-color, #e5e7eb);border-radius:.5rem;box-shadow:0 4px 16px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.04);visibility:hidden;opacity:0;z-index:50}.dm-bubble-menu[data-show]{visibility:visible;opacity:1;transition:opacity .15s ease}.dm-floating-menu{position:absolute;display:flex;flex-direction:column;gap:var(--dm-toolbar-gap);padding:var(--dm-toolbar-padding);background:var(--dm-toolbar-bg);border:var(--dm-toolbar-border);border-radius:var(--dm-button-border-radius);box-shadow:0 4px 12px rgba(0,0,0,.12);visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s;z-index:50}.dm-floating-menu[data-show]{visibility:visible;opacity:1}.dm-link-popover{position:fixed;display:flex;align-items:center;gap:.25rem;padding:.25rem;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:.25rem;box-shadow:0 4px 12px rgba(0,0,0,.12);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s;z-index:60}.dm-link-popover[data-show]{visibility:visible;opacity:1}.dm-link-popover-input{border:1px solid #e0e0e0;border-radius:.25rem;padding:.25rem .5rem;font-size:.8125rem;font-family:inherit;min-width:14rem;outline:none;background:#fff;color:#1a1a1a}.dm-link-popover-input:focus{border-color:#2563eb}.dm-link-popover-btn{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;border:none;border-radius:.25rem;background:rgba(0,0,0,0);color:#1a1a1a;cursor:pointer;transition:background-color .15s,color .15s}.dm-link-popover-btn:hover{background:rgba(0,0,0,.06)}.dm-link-popover-btn svg{width:.875rem;height:.875rem}.dm-link-popover-apply:hover{color:#2563eb}.dm-link-popover-remove:hover{color:#dc2626}.dm-link-pending{background-color:rgba(37,99,235,.12);border-radius:1px}[data-theme=dark] .dm-link-popover,.dm-theme-dark .dm-link-popover{background:#2a2a2a;border-color:#404040}[data-theme=dark] .dm-link-popover .dm-link-popover-input,.dm-theme-dark .dm-link-popover .dm-link-popover-input{background:#1a1a1a;border-color:#404040;color:#e0e0e0}[data-theme=dark] .dm-link-popover .dm-link-popover-input:focus,.dm-theme-dark .dm-link-popover .dm-link-popover-input:focus{border-color:#3b82f6}[data-theme=dark] .dm-link-popover .dm-link-popover-btn,.dm-theme-dark .dm-link-popover .dm-link-popover-btn{color:#e0e0e0}[data-theme=dark] .dm-link-popover .dm-link-popover-btn:hover,.dm-theme-dark .dm-link-popover .dm-link-popover-btn:hover{background:hsla(0,0%,100%,.1)}[data-theme=dark] .dm-link-popover .dm-link-popover-apply:hover,.dm-theme-dark .dm-link-popover .dm-link-popover-apply:hover{color:#3b82f6}@media(prefers-color-scheme: dark){.dm-theme-auto .dm-link-popover{background:#2a2a2a;border-color:#404040}.dm-theme-auto .dm-link-popover .dm-link-popover-input{background:#1a1a1a;border-color:#404040;color:#e0e0e0}.dm-theme-auto .dm-link-popover .dm-link-popover-input:focus{border-color:#3b82f6}.dm-theme-auto .dm-link-popover .dm-link-popover-btn{color:#e0e0e0}.dm-theme-auto .dm-link-popover .dm-link-popover-btn:hover{background:hsla(0,0%,100%,.1)}.dm-theme-auto .dm-link-popover .dm-link-popover-apply:hover{color:#3b82f6}}.dm-editor .ProseMirror .is-empty::before{content:attr(data-placeholder);float:left;color:var(--dm-placeholder-color);pointer-events:none;height:0}.dm-editor .ProseMirror ul[data-type=taskList]{list-style:none;padding-left:0}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem]{display:flex;align-items:flex-start;gap:.5em}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem]>label{display:flex;align-items:center;flex-shrink:0;margin-top:.4em;user-select:none}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem]>label input[type=checkbox]{width:1em;height:1em;margin:0;padding:0;cursor:pointer;accent-color:var(--dm-accent, #2563eb)}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem]>div{flex:1;min-width:0}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem]>div>p{margin:0}.dm-editor .ProseMirror ul[data-type=taskList] li[data-type=taskItem][data-checked=true]>div{text-decoration:line-through;opacity:.6}.dm-editor .ProseMirror .mention{display:inline;background:var(--dm-mention-bg);color:var(--dm-mention-color);border-radius:var(--dm-mention-border-radius);padding:.1em .3em;font-weight:500;font-size:.95em;white-space:nowrap}.dm-editor .ProseMirror .mention-suggestion{text-decoration:underline;text-decoration-color:var(--dm-accent, #2563eb);text-underline-offset:2px}.dm-mention-suggestion{position:absolute;z-index:100;min-width:12rem;max-width:20rem;padding:.25rem;background:var(--dm-surface, #f8f9fa);border:1px solid var(--dm-border-color, #e0e0e0);border-radius:.25rem;box-shadow:0 4px 12px rgba(0,0,0,.12);animation:dm-fade-in .2s ease}.dm-mention-suggestion-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.375rem .5rem;border:none;border-radius:.25rem;background:rgba(0,0,0,0);color:var(--dm-text, #1a1a1a);cursor:pointer;font-size:.8125rem;line-height:1.4;text-align:left;transition:background-color .1s}.dm-mention-suggestion-item:hover,.dm-mention-suggestion-item--selected{background:var(--dm-hover, rgba(0, 0, 0, 0.06))}.dm-mention-suggestion-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-mention-suggestion-empty{padding:.5rem;text-align:center;color:var(--dm-text, #1a1a1a);opacity:.5;font-size:.8125rem}.dm-editor .ProseMirror img[style*="float: left"],.dm-editor .ProseMirror img[style*="float: right"]{max-width:60%}.dm-editor .ProseMirror .dm-image-resizable{position:relative;display:inline-block;max-width:100%;margin:.75em 0;line-height:0}.dm-editor .ProseMirror .dm-image-resizable img{display:block;max-width:100%;height:auto}.dm-editor .ProseMirror .dm-image-resizable[data-float=left]{float:left;margin:0 1em 1em 0}.dm-editor .ProseMirror .dm-image-resizable[data-float=right]{float:right;margin:0 0 1em 1em}.dm-editor .ProseMirror .dm-image-resizable[data-float=center]{display:block;width:fit-content;margin-left:auto;margin-right:auto}.dm-editor .ProseMirror .dm-image-resizable[data-float=left],.dm-editor .ProseMirror .dm-image-resizable[data-float=right]{max-width:60%;z-index:1}.dm-editor .ProseMirror .dm-image-resizable.ProseMirror-selectednode{outline:2px solid var(--dm-accent, #2563eb)}.dm-editor .ProseMirror .dm-image-resizable.ProseMirror-selectednode .dm-image-handle{display:block}.dm-editor .ProseMirror .dm-image-handle{display:none;position:absolute;width:8px;height:8px;background:var(--dm-accent, #2563eb);border:1px solid #fff;border-radius:1px;z-index:5}.dm-editor .ProseMirror .dm-image-handle-nw{top:-4px;left:-4px;cursor:nw-resize}.dm-editor .ProseMirror .dm-image-handle-ne{top:-4px;right:-4px;cursor:ne-resize}.dm-editor .ProseMirror .dm-image-handle-sw{bottom:-4px;left:-4px;cursor:sw-resize}.dm-editor .ProseMirror .dm-image-handle-se{bottom:-4px;right:-4px;cursor:se-resize}.dm-image-popover{position:fixed;display:flex;align-items:center;gap:.25rem;padding:.25rem;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:.25rem;box-shadow:0 4px 12px rgba(0,0,0,.12);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;visibility:hidden;opacity:0;transition:opacity .2s ease,visibility .2s;z-index:60}.dm-image-popover[data-show]{visibility:visible;opacity:1}.dm-image-popover-input{border:1px solid #e0e0e0;border-radius:.25rem;padding:.25rem .5rem;font-size:.8125rem;font-family:inherit;min-width:14rem;outline:none;background:#fff;color:#1a1a1a}.dm-image-popover-input:focus{border-color:#2563eb}.dm-image-popover-btn{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;border:none;border-radius:.25rem;background:rgba(0,0,0,0);color:#1a1a1a;cursor:pointer;transition:background-color .15s,color .15s}.dm-image-popover-btn:hover{background:rgba(0,0,0,.06)}.dm-image-popover-btn svg{width:.875rem;height:.875rem}.dm-image-popover-apply:hover{color:#2563eb}.dm-image-popover-browse:hover{color:#2563eb}[data-theme=dark] .dm-image-popover,.dm-theme-dark .dm-image-popover{background:#2a2a2a;border-color:#404040}[data-theme=dark] .dm-image-popover .dm-image-popover-input,.dm-theme-dark .dm-image-popover .dm-image-popover-input{background:#1a1a1a;border-color:#404040;color:#e0e0e0}[data-theme=dark] .dm-image-popover .dm-image-popover-input:focus,.dm-theme-dark .dm-image-popover .dm-image-popover-input:focus{border-color:#3b82f6}[data-theme=dark] .dm-image-popover .dm-image-popover-btn,.dm-theme-dark .dm-image-popover .dm-image-popover-btn{color:#e0e0e0}[data-theme=dark] .dm-image-popover .dm-image-popover-btn:hover,.dm-theme-dark .dm-image-popover .dm-image-popover-btn:hover{background:hsla(0,0%,100%,.1)}[data-theme=dark] .dm-image-popover .dm-image-popover-apply:hover,.dm-theme-dark .dm-image-popover .dm-image-popover-apply:hover{color:#3b82f6}@media(prefers-color-scheme: dark){.dm-theme-auto .dm-image-popover{background:#2a2a2a;border-color:#404040}.dm-theme-auto .dm-image-popover .dm-image-popover-input{background:#1a1a1a;border-color:#404040;color:#e0e0e0}.dm-theme-auto .dm-image-popover .dm-image-popover-input:focus{border-color:#3b82f6}.dm-theme-auto .dm-image-popover .dm-image-popover-btn{color:#e0e0e0}.dm-theme-auto .dm-image-popover .dm-image-popover-btn:hover{background:hsla(0,0%,100%,.1)}.dm-theme-auto .dm-image-popover .dm-image-popover-apply:hover{color:#3b82f6}}.dm-editor.dm-dragover{outline:2px dashed var(--dm-accent);outline-offset:-2px}.dm-editor.dm-dragover::after{content:"";position:absolute;inset:0;background:var(--dm-accent);opacity:.05;pointer-events:none;z-index:10}.dm-editor .ProseMirror div[data-type=details]{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;border:var(--dm-details-border);border-radius:.375rem;margin:.75em 0}.dm-editor .ProseMirror div[data-type=details]>div{display:contents}.dm-editor .ProseMirror div[data-type=details]>button[type=button]{grid-column:2;grid-row:1;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;align-self:center;margin-right:10px;border:none;background:rgba(0,0,0,0);cursor:pointer;color:var(--dm-muted);border-radius:50%}.dm-editor .ProseMirror div[data-type=details]>button[type=button]::before{content:"";display:block;width:.4em;height:.4em;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .15s ease}.dm-editor .ProseMirror div[data-type=details]>button[type=button]:hover{color:var(--dm-text);background:var(--dm-hover)}.dm-editor .ProseMirror div[data-type=details]>button[type=button]:focus{outline:none}.dm-editor .ProseMirror div[data-type=details]::before{content:"";grid-column:1/-1;grid-row:1;background:var(--dm-details-bg);border-radius:.375rem}.dm-editor .ProseMirror div[data-type=details].is-open::before{border-radius:.375rem .375rem 0 0}.dm-editor .ProseMirror div[data-type=details] summary{grid-column:1;grid-row:1;display:block;padding:.5em .5em .5em .75em;font-weight:var(--dm-details-summary-font-weight);min-height:0}.dm-editor .ProseMirror div[data-type=details] summary::-webkit-details-marker{display:none}.dm-editor .ProseMirror div[data-type=details] summary{list-style:none}.dm-editor .ProseMirror div[data-type=details] div[data-details-content]{grid-column:1/-1;grid-row:2;padding:.5em .75em;border-top:var(--dm-details-border)}.dm-editor .ProseMirror div[data-type=details].ProseMirror-selectednode{outline:none}.dm-editor .ProseMirror div[data-type=details].is-open>button[type=button]::before{transform:rotate(45deg)}.dm-editor .ProseMirror .invisible-char{color:var(--dm-invisible-char-color, var(--dm-muted, #999));pointer-events:none;user-select:none}.dm-editor .ProseMirror [data-char=space]{position:relative}.dm-editor .ProseMirror [data-char=space]::after{content:"·";position:absolute;inset:0;text-align:center;color:var(--dm-invisible-char-color, var(--dm-muted, #999));pointer-events:none}.dm-editor .ProseMirror [data-char=nbsp]{position:relative}.dm-editor .ProseMirror [data-char=nbsp]::after{content:"°";position:absolute;inset:0;text-align:center;color:var(--dm-invisible-char-color, var(--dm-muted, #999));pointer-events:none}.dm-emoji-picker{position:absolute;z-index:100;width:20rem;max-height:22rem;display:flex;flex-direction:column;background:var(--dm-surface, #f8f9fa);border:1px solid var(--dm-border-color, #e0e0e0);border-radius:.25rem;box-shadow:0 4px 12px rgba(0,0,0,.12);overflow:hidden;animation:dm-fade-in .2s ease}.dm-emoji-picker-search{flex-shrink:0;padding:.5rem;border-bottom:1px solid var(--dm-border-color, #e0e0e0)}.dm-emoji-picker-search input{width:100%;padding:.375rem .5rem;border:1px solid var(--dm-border-color, #e0e0e0);border-radius:.25rem;background:var(--dm-bg, #ffffff);color:var(--dm-text, #1a1a1a);font-size:.8125rem;outline:none;box-sizing:border-box}.dm-emoji-picker-search input:focus{border-color:var(--dm-accent, #2563eb)}.dm-emoji-picker-search input::placeholder{color:var(--dm-muted, #999999)}.dm-emoji-picker-tabs{display:flex;align-items:center;flex-shrink:0;padding:.375rem .5rem;gap:.1rem;border-bottom:1px solid var(--dm-border-color, #e0e0e0);overflow-x:auto;scrollbar-width:none}.dm-emoji-picker-tabs::-webkit-scrollbar{display:none}.dm-emoji-picker-tab{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;padding:0;border:none;border-radius:.375rem;background:rgba(0,0,0,0);cursor:pointer;font-size:1.25rem;line-height:1;opacity:.5;transition:opacity .15s,background-color .15s}.dm-emoji-picker-tab:hover{opacity:1;background:var(--dm-hover, rgba(0, 0, 0, 0.06))}.dm-emoji-picker-tab--active{opacity:1;background:var(--dm-active, rgba(0, 0, 0, 0.12))}.dm-emoji-picker-grid{flex:1;overflow-y:auto;padding:.25rem .5rem .5rem;display:grid;grid-template-columns:repeat(8, 1fr);gap:.125rem;align-content:start}.dm-emoji-picker-category-label{grid-column:1/-1;font-size:.6875rem;font-weight:600;color:var(--dm-text, #1a1a1a);opacity:.6;padding:.375rem 0 .125rem;text-transform:uppercase;letter-spacing:.03em}.dm-emoji-swatch{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:none;border-radius:.25rem;background:rgba(0,0,0,0);cursor:pointer;font-size:1.25rem;line-height:1;transition:background-color .1s,transform .1s}.dm-emoji-swatch:hover{background:var(--dm-hover, rgba(0, 0, 0, 0.06));transform:scale(1.15)}.dm-emoji-picker-empty{grid-column:1/-1;padding:1rem;text-align:center;color:var(--dm-text, #1a1a1a);opacity:.5;font-size:.8125rem}.dm-emoji-suggestion{position:absolute;z-index:100;min-width:12rem;max-width:18rem;padding:.25rem;background:var(--dm-surface, #f8f9fa);border:1px solid var(--dm-border-color, #e0e0e0);border-radius:.25rem;box-shadow:0 4px 12px rgba(0,0,0,.12);animation:dm-fade-in .2s ease}.dm-emoji-suggestion-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.375rem .5rem;border:none;border-radius:.25rem;background:rgba(0,0,0,0);color:var(--dm-text, #1a1a1a);cursor:pointer;font-size:.8125rem;line-height:1.4;text-align:left;transition:background-color .1s}.dm-emoji-suggestion-item:hover,.dm-emoji-suggestion-item--selected{background:var(--dm-hover, rgba(0, 0, 0, 0.06))}.dm-emoji-suggestion-emoji{font-size:1.125rem;line-height:1;flex-shrink:0}.dm-emoji-suggestion-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dm-emoji-suggestion-empty{padding:.5rem;text-align:center;color:var(--dm-text, #1a1a1a);opacity:.5;font-size:.8125rem}.dm-editor .ProseMirror span.emoji{cursor:default;font-style:normal;padding:0 .05em}.dm-editor .ProseMirror span.emoji.ProseMirror-selectednode{outline:2px solid var(--dm-accent, #2563eb);border-radius:.15em}.dm-editor .dm-table-container{position:relative}.dm-table-col-handle,.dm-table-row-handle{position:absolute;z-index:10;display:none;align-items:center;justify-content:center;border:1px solid var(--dm-border-color, #e0e0e0);border-radius:4px;background:var(--dm-bg, #ffffff);color:var(--dm-muted, #999999);cursor:pointer;padding:0;transition:background-color .15s,color .15s,box-shadow .15s}.dm-table-col-handle:hover,.dm-table-row-handle:hover{background:var(--dm-hover, rgba(0, 0, 0, 0.06));color:var(--dm-text, #1a1a1a);box-shadow:0 1px 4px rgba(0,0,0,.1)}.dm-table-col-handle svg,.dm-table-row-handle svg{display:block}.dm-table-col-handle{width:24px;height:14px}.dm-table-row-handle{width:14px;height:24px}.dm-table-cell-handle{position:absolute;z-index:10;display:none;align-items:center;justify-content:center;width:14px;height:14px;border:1px solid var(--dm-accent, #2563eb);border-radius:50%;background:var(--dm-bg, #ffffff);color:var(--dm-accent, #2563eb);cursor:pointer;padding:0;box-shadow:0 1px 3px rgba(0,0,0,.08);transition:background-color .15s,color .15s,border-color .15s,box-shadow .15s}.dm-table-cell-handle:hover{background:var(--dm-accent, #2563eb);color:#fff;border-color:var(--dm-accent, #2563eb);box-shadow:0 1px 4px color-mix(in srgb, var(--dm-accent, #2563eb) 30%, transparent)}.dm-table-cell-handle svg{display:block;width:8px;height:8px}.dm-table-cell-toolbar{position:absolute;z-index:10;display:none;align-items:center;gap:2px;padding:2px;border:1px solid var(--dm-border-color, #e0e0e0);border-radius:6px;background:var(--dm-bg, #ffffff);box-shadow:0 2px 8px rgba(0,0,0,.1);animation:dm-fade-in .12s ease}.dm-table-cell-toolbar-btn{display:flex;align-items:center;gap:1px;padding:4px 5px;border:none;border-radius:4px;background:rgba(0,0,0,0);color:var(--dm-text, #1a1a1a);cursor:pointer;transition:background-color .15s,color .15s}.dm-table-cell-toolbar-btn:hover,.dm-table-cell-toolbar-btn.dm-table-cell-toolbar-btn--open{background:var(--dm-hover, rgba(0, 0, 0, 0.06))}.dm-table-cell-toolbar-btn--active{color:var(--dm-accent, #2563eb);background:var(--dm-accent-surface, rgba(37, 99, 235, 0.1))}.dm-table-cell-toolbar-btn:disabled{opacity:.3;cursor:default;pointer-events:none}.dm-table-cell-toolbar-btn svg{display:block;flex-shrink:0}.dm-table-cell-toolbar-chevron{display:flex;align-items:center}.dm-table-cell-toolbar-sep{width:1px;height:16px;margin:0 2px;background:var(--dm-border-color, #e0e0e0)}.dm-table-cell-align-dropdown{min-width:auto;width:max-content;padding:.25rem}.dm-table-cell-align-dropdown .dm-table-align-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.3rem .5rem;border:none;border-radius:.25rem;background:rgba(0,0,0,0);color:var(--dm-text, #1a1a1a);cursor:pointer;font-size:.8125rem;white-space:nowrap;transition:background-color .15s,color .15s}.dm-table-cell-align-dropdown .dm-table-align-item:hover{background:var(--dm-hover, rgba(0, 0, 0, 0.06))}.dm-table-cell-align-dropdown .dm-table-align-item--active{color:var(--dm-accent, #2563eb);background:var(--dm-accent-surface, rgba(37, 99, 235, 0.1))}.dm-table-cell-align-dropdown .dm-table-align-item-icon{display:flex;align-items:center}.dm-table-cell-align-dropdown .dm-table-align-item-icon svg{display:block}.dm-editor .ProseMirror table td[data-text-align=center],.dm-editor .ProseMirror table th[data-text-align=center]{text-align:center}.dm-editor .ProseMirror table td[data-text-align=right],.dm-editor .ProseMirror table th[data-text-align=right]{text-align:right}.dm-editor .ProseMirror table td[data-vertical-align=middle],.dm-editor .ProseMirror table th[data-vertical-align=middle]{vertical-align:middle}.dm-editor .ProseMirror table td[data-vertical-align=bottom],.dm-editor .ProseMirror table th[data-vertical-align=bottom]{vertical-align:bottom}.dm-editor td.dm-cell-focused,.dm-editor th.dm-cell-focused{outline:1px solid var(--dm-accent, #2563eb);outline-offset:-1px}.dm-table-controls-dropdown{position:absolute;z-index:50;display:flex;flex-direction:column;gap:.125rem;min-width:10rem;padding:.25rem;background:var(--dm-bg, #fff);border:1px solid var(--dm-border-color, #e5e7eb);border-radius:.5rem;box-shadow:0 4px 16px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.04);animation:dm-fade-in .2s ease}.dm-table-controls-dropdown>button{display:flex;align-items:center;gap:.375rem;width:100%;padding:.375rem .5rem;border:none;border-radius:var(--dm-button-border-radius);background:rgba(0,0,0,0);color:var(--dm-button-color);cursor:pointer;font-size:.8125rem;line-height:1.4;text-align:left;white-space:nowrap;transition:background-color .15s}.dm-table-controls-dropdown>button:hover{background:var(--dm-button-hover-bg)}.dm-table-controls-dropdown-icon{display:flex;align-items:center;color:var(--dm-icon, #666)}.dm-table-controls-dropdown-icon svg{display:block}.dm-table-cell-dropdown{min-width:auto;width:max-content;padding:0;border-radius:.75rem}.dm-table-cell-dropdown .dm-color-palette{padding:.5rem}.dm-table-cell-dropdown-separator{height:1px;background:var(--dm-border-color, #e0e0e0);margin:.25rem 0}.dm-theme-light,.dm-theme-light .dm-editor,.dm-theme-light .dm-toolbar,.dm-theme-light .dm-table-controls-dropdown{--dm-bg: #ffffff;--dm-text: #1a1a1a;--dm-muted: #999999;--dm-surface: #f8f9fa;--dm-border-color: #e0e0e0;--dm-hover: rgba(0, 0, 0, 0.06);--dm-active: rgba(0, 0, 0, 0.12);--dm-accent: #2563eb;--dm-accent-hover: #1d4ed8;--dm-accent-surface: rgba(37, 99, 235, 0.1);--dm-focus-color: rgba(66, 133, 244, 0.3);--dm-selection: rgba(66, 133, 244, 0.2);--dm-code-surface: #f5f5f5;--dm-code-color: #d63384;--dm-highlight-bg: #fff3cd;--dm-syntax-keyword: #c72031;--dm-syntax-entity: #6f42c1;--dm-syntax-constant: #005cc5;--dm-syntax-string: #032f62;--dm-syntax-variable: #d35400;--dm-syntax-comment: #57606a;--dm-syntax-tag: #22863a;--dm-syntax-addition: #22863a;--dm-syntax-addition-bg: #f0fff4;--dm-syntax-deletion: #b31d28;--dm-syntax-deletion-bg: #ffeef0}.dm-theme-dark,.dm-theme-dark .dm-editor,.dm-theme-dark .dm-toolbar,.dm-theme-dark .dm-bubble-menu,.dm-theme-dark .dm-emoji-picker,.dm-theme-dark .dm-emoji-suggestion,.dm-theme-dark .dm-mention-suggestion,.dm-theme-dark .dm-table-controls-dropdown{--dm-color-scheme: dark;--dm-bg: #1e1e1e;--dm-text: #e0e0e0;--dm-muted: #777777;--dm-surface: #2a2a2a;--dm-border-color: #3a3a3a;--dm-hover: rgba(255, 255, 255, 0.08);--dm-active: rgba(255, 255, 255, 0.15);--dm-accent: #60a5fa;--dm-accent-hover: #93c5fd;--dm-accent-surface: rgba(96, 165, 250, 0.15);--dm-focus-color: rgba(96, 165, 250, 0.3);--dm-selection: rgba(96, 165, 250, 0.25);--dm-code-surface: #2d2d2d;--dm-code-color: inherit;--dm-highlight-bg: rgba(255, 243, 205, 0.2);--dm-blockquote-border: 3px solid #555555;--dm-blockquote-color: #a0a0a0;--dm-syntax-keyword: #ff7b72;--dm-syntax-entity: #d2a8ff;--dm-syntax-constant: #79c0ff;--dm-syntax-string: #a5d6ff;--dm-syntax-variable: #ffa657;--dm-syntax-comment: #8b949e;--dm-syntax-tag: #7ee787;--dm-syntax-addition: #aff5b4;--dm-syntax-addition-bg: #033a16;--dm-syntax-deletion: #ffdcd7;--dm-syntax-deletion-bg: #67060c}@media(prefers-color-scheme: dark){.dm-theme-auto,.dm-theme-auto .dm-editor,.dm-theme-auto .dm-toolbar,.dm-theme-auto .dm-bubble-menu,.dm-theme-auto .dm-emoji-picker,.dm-theme-auto .dm-emoji-suggestion,.dm-theme-auto .dm-mention-suggestion,.dm-theme-auto .dm-table-controls-dropdown{--dm-color-scheme: dark;--dm-bg: #1e1e1e;--dm-text: #e0e0e0;--dm-muted: #777777;--dm-surface: #2a2a2a;--dm-border-color: #3a3a3a;--dm-hover: rgba(255, 255, 255, 0.08);--dm-active: rgba(255, 255, 255, 0.15);--dm-accent: #60a5fa;--dm-accent-hover: #93c5fd;--dm-accent-surface: rgba(96, 165, 250, 0.15);--dm-focus-color: rgba(96, 165, 250, 0.3);--dm-selection: rgba(96, 165, 250, 0.25);--dm-code-surface: #2d2d2d;--dm-code-color: inherit;--dm-highlight-bg: rgba(255, 243, 205, 0.2);--dm-blockquote-border: 3px solid #555555;--dm-blockquote-color: #a0a0a0;--dm-syntax-keyword: #ff7b72;--dm-syntax-entity: #d2a8ff;--dm-syntax-constant: #79c0ff;--dm-syntax-string: #a5d6ff;--dm-syntax-variable: #ffa657;--dm-syntax-comment: #8b949e;--dm-syntax-tag: #7ee787;--dm-syntax-addition: #aff5b4;--dm-syntax-addition-bg: #033a16;--dm-syntax-deletion: #ffdcd7;--dm-syntax-deletion-bg: #67060c}}
@@ -265,45 +265,20 @@ img.ProseMirror-separator {
265
265
  opacity: 1;
266
266
  }
267
267
  }
268
- .dm-editor .ProseMirror p {
269
- margin: 0.4em 0;
270
- }
271
- .dm-editor .ProseMirror p:last-child {
272
- margin-bottom: 0;
273
- }
274
268
  .dm-editor .ProseMirror h1,
275
269
  .dm-editor .ProseMirror h2,
276
270
  .dm-editor .ProseMirror h3,
277
271
  .dm-editor .ProseMirror h4,
278
272
  .dm-editor .ProseMirror h5,
279
273
  .dm-editor .ProseMirror h6 {
280
- margin: 1.5em 0 0.5em;
281
- font-weight: 700;
282
274
  line-height: 1.25;
283
275
  }
284
- .dm-editor .ProseMirror h1:first-child,
285
- .dm-editor .ProseMirror h2:first-child,
286
- .dm-editor .ProseMirror h3:first-child,
287
- .dm-editor .ProseMirror h4:first-child,
288
- .dm-editor .ProseMirror h5:first-child,
289
- .dm-editor .ProseMirror h6:first-child {
290
- margin-top: 0;
291
- }
292
- .dm-editor .ProseMirror h1 {
293
- font-size: 2em;
294
- }
295
- .dm-editor .ProseMirror h2 {
296
- font-size: 1.5em;
297
- }
298
276
  .dm-editor .ProseMirror h3 {
299
277
  font-size: 1.25em;
300
278
  }
301
279
  .dm-editor .ProseMirror h4 {
302
280
  font-size: 1.1em;
303
281
  }
304
- .dm-editor .ProseMirror h5 {
305
- font-size: 1em;
306
- }
307
282
  .dm-editor .ProseMirror h6 {
308
283
  font-size: 0.9em;
309
284
  color: var(--dm-muted, #666);
@@ -338,11 +313,8 @@ img.ProseMirror-separator {
338
313
  .dm-editor .ProseMirror blockquote {
339
314
  border-left: var(--dm-blockquote-border);
340
315
  color: var(--dm-blockquote-color);
341
- margin: 0.75em 0;
342
- padding: 0.25em 0 0.25em 1em;
343
- }
344
- .dm-editor .ProseMirror blockquote p {
345
- margin-top: 0;
316
+ margin: 0.5em 0;
317
+ padding: 0.1em 0 0.1em 0.8em;
346
318
  }
347
319
  .dm-editor .ProseMirror ul,
348
320
  .dm-editor .ProseMirror ol {
@@ -357,21 +329,6 @@ img.ProseMirror-separator {
357
329
  .dm-editor .ProseMirror ol li > p {
358
330
  margin: 0.1em 0;
359
331
  }
360
- .dm-editor .ProseMirror ol {
361
- list-style-type: decimal;
362
- }
363
- .dm-editor .ProseMirror ul {
364
- list-style-type: disc;
365
- }
366
- .dm-editor .ProseMirror ul ul,
367
- .dm-editor .ProseMirror ol ul {
368
- list-style-type: circle;
369
- }
370
- .dm-editor .ProseMirror ul ul ul,
371
- .dm-editor .ProseMirror ol ul ul,
372
- .dm-editor .ProseMirror ol ol ul {
373
- list-style-type: square;
374
- }
375
332
  .dm-editor .ProseMirror hr {
376
333
  border: none;
377
334
  border-top: 2px solid var(--dm-hr-color);
@@ -379,8 +336,6 @@ img.ProseMirror-separator {
379
336
  }
380
337
  .dm-editor .ProseMirror a {
381
338
  color: var(--dm-link-color);
382
- text-decoration: underline;
383
- cursor: pointer;
384
339
  }
385
340
  .dm-editor .ProseMirror a:hover {
386
341
  color: var(--dm-link-hover-color);
@@ -980,6 +935,53 @@ img.ProseMirror-separator {
980
935
  text-underline-offset: 2px;
981
936
  }
982
937
 
938
+ .dm-mention-suggestion {
939
+ position: absolute;
940
+ z-index: 100;
941
+ min-width: 12rem;
942
+ max-width: 20rem;
943
+ padding: 0.25rem;
944
+ background: var(--dm-surface, #f8f9fa);
945
+ border: 1px solid var(--dm-border-color, #e0e0e0);
946
+ border-radius: 0.25rem;
947
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
948
+ animation: dm-fade-in 0.2s ease;
949
+ }
950
+
951
+ .dm-mention-suggestion-item {
952
+ display: flex;
953
+ align-items: center;
954
+ gap: 0.5rem;
955
+ width: 100%;
956
+ padding: 0.375rem 0.5rem;
957
+ border: none;
958
+ border-radius: 0.25rem;
959
+ background: transparent;
960
+ color: var(--dm-text, #1a1a1a);
961
+ cursor: pointer;
962
+ font-size: 0.8125rem;
963
+ line-height: 1.4;
964
+ text-align: left;
965
+ transition: background-color 0.1s;
966
+ }
967
+ .dm-mention-suggestion-item:hover, .dm-mention-suggestion-item--selected {
968
+ background: var(--dm-hover, rgba(0, 0, 0, 0.06));
969
+ }
970
+
971
+ .dm-mention-suggestion-label {
972
+ overflow: hidden;
973
+ text-overflow: ellipsis;
974
+ white-space: nowrap;
975
+ }
976
+
977
+ .dm-mention-suggestion-empty {
978
+ padding: 0.5rem;
979
+ text-align: center;
980
+ color: var(--dm-text, #1a1a1a);
981
+ opacity: 0.5;
982
+ font-size: 0.8125rem;
983
+ }
984
+
983
985
  .dm-editor .ProseMirror img[style*="float: left"], .dm-editor .ProseMirror img[style*="float: right"] {
984
986
  max-width: 60%;
985
987
  }
@@ -1758,6 +1760,7 @@ img.ProseMirror-separator {
1758
1760
  .dm-theme-dark .dm-bubble-menu,
1759
1761
  .dm-theme-dark .dm-emoji-picker,
1760
1762
  .dm-theme-dark .dm-emoji-suggestion,
1763
+ .dm-theme-dark .dm-mention-suggestion,
1761
1764
  .dm-theme-dark .dm-table-controls-dropdown {
1762
1765
  --dm-color-scheme: dark;
1763
1766
  --dm-bg: #1e1e1e;
@@ -1797,6 +1800,7 @@ img.ProseMirror-separator {
1797
1800
  .dm-theme-auto .dm-bubble-menu,
1798
1801
  .dm-theme-auto .dm-emoji-picker,
1799
1802
  .dm-theme-auto .dm-emoji-suggestion,
1803
+ .dm-theme-auto .dm-mention-suggestion,
1800
1804
  .dm-theme-auto .dm-table-controls-dropdown {
1801
1805
  --dm-color-scheme: dark;
1802
1806
  --dm-bg: #1e1e1e;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@domternal/theme",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "Default themes and styles for Domternal editor",
5
5
  "author": "https://github.com/ThomasNowHere",
6
6
  "license": "MIT",
package/src/_content.scss CHANGED
@@ -6,18 +6,6 @@
6
6
  // =============================================================================
7
7
 
8
8
  .dm-editor .ProseMirror {
9
- // ---------------------------------------------------------------------------
10
- // Paragraphs
11
- // ---------------------------------------------------------------------------
12
-
13
- p {
14
- margin: 0.4em 0;
15
-
16
- &:last-child {
17
- margin-bottom: 0;
18
- }
19
- }
20
-
21
9
  // ---------------------------------------------------------------------------
22
10
  // Headings
23
11
  // ---------------------------------------------------------------------------
@@ -28,21 +16,7 @@
28
16
  h4,
29
17
  h5,
30
18
  h6 {
31
- margin: 1.5em 0 0.5em;
32
- font-weight: 700;
33
19
  line-height: 1.25;
34
-
35
- &:first-child {
36
- margin-top: 0;
37
- }
38
- }
39
-
40
- h1 {
41
- font-size: 2em;
42
- }
43
-
44
- h2 {
45
- font-size: 1.5em;
46
20
  }
47
21
 
48
22
  h3 {
@@ -53,10 +27,6 @@
53
27
  font-size: 1.1em;
54
28
  }
55
29
 
56
- h5 {
57
- font-size: 1em;
58
- }
59
-
60
30
  h6 {
61
31
  font-size: 0.9em;
62
32
  color: var(--dm-muted, #666);
@@ -107,12 +77,8 @@
107
77
  blockquote {
108
78
  border-left: var(--dm-blockquote-border);
109
79
  color: var(--dm-blockquote-color);
110
- margin: 0.75em 0;
111
- padding: 0.25em 0 0.25em 1em;
112
-
113
- p {
114
- margin-top: 0;
115
- }
80
+ margin: 0.5em 0;
81
+ padding: 0.1em 0 0.1em 0.8em;
116
82
  }
117
83
 
118
84
  // ---------------------------------------------------------------------------
@@ -133,26 +99,6 @@
133
99
  }
134
100
  }
135
101
 
136
- ol {
137
- list-style-type: decimal;
138
- }
139
-
140
- ul {
141
- list-style-type: disc;
142
- }
143
-
144
- // Nested lists
145
- ul ul,
146
- ol ul {
147
- list-style-type: circle;
148
- }
149
-
150
- ul ul ul,
151
- ol ul ul,
152
- ol ol ul {
153
- list-style-type: square;
154
- }
155
-
156
102
  // ---------------------------------------------------------------------------
157
103
  // Horizontal rule
158
104
  // ---------------------------------------------------------------------------
@@ -169,9 +115,6 @@
169
115
 
170
116
  a {
171
117
  color: var(--dm-link-color);
172
- text-decoration: underline;
173
- cursor: pointer;
174
-
175
118
  &:hover {
176
119
  color: var(--dm-link-hover-color);
177
120
  }
package/src/_mention.scss CHANGED
@@ -23,3 +23,54 @@
23
23
  text-underline-offset: 2px;
24
24
  }
25
25
  }
26
+
27
+ // ─── Inline Suggestion Dropdown ─────────────────────────────────────────────
28
+
29
+ .dm-mention-suggestion {
30
+ position: absolute;
31
+ z-index: 100;
32
+ min-width: 12rem;
33
+ max-width: 20rem;
34
+ padding: 0.25rem;
35
+ background: var(--dm-surface, #f8f9fa);
36
+ border: 1px solid var(--dm-border-color, #e0e0e0);
37
+ border-radius: 0.25rem;
38
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
39
+ animation: dm-fade-in 0.2s ease;
40
+ }
41
+
42
+ .dm-mention-suggestion-item {
43
+ display: flex;
44
+ align-items: center;
45
+ gap: 0.5rem;
46
+ width: 100%;
47
+ padding: 0.375rem 0.5rem;
48
+ border: none;
49
+ border-radius: 0.25rem;
50
+ background: transparent;
51
+ color: var(--dm-text, #1a1a1a);
52
+ cursor: pointer;
53
+ font-size: 0.8125rem;
54
+ line-height: 1.4;
55
+ text-align: left;
56
+ transition: background-color 0.1s;
57
+
58
+ &:hover,
59
+ &--selected {
60
+ background: var(--dm-hover, rgba(0, 0, 0, 0.06));
61
+ }
62
+ }
63
+
64
+ .dm-mention-suggestion-label {
65
+ overflow: hidden;
66
+ text-overflow: ellipsis;
67
+ white-space: nowrap;
68
+ }
69
+
70
+ .dm-mention-suggestion-empty {
71
+ padding: 0.5rem;
72
+ text-align: center;
73
+ color: var(--dm-text, #1a1a1a);
74
+ opacity: 0.5;
75
+ font-size: 0.8125rem;
76
+ }
@@ -52,6 +52,7 @@
52
52
  .dm-theme-dark .dm-bubble-menu,
53
53
  .dm-theme-dark .dm-emoji-picker,
54
54
  .dm-theme-dark .dm-emoji-suggestion,
55
+ .dm-theme-dark .dm-mention-suggestion,
55
56
  .dm-theme-dark .dm-table-controls-dropdown {
56
57
  @include dark-tokens;
57
58
  }
@@ -64,6 +65,7 @@
64
65
  .dm-theme-auto .dm-bubble-menu,
65
66
  .dm-theme-auto .dm-emoji-picker,
66
67
  .dm-theme-auto .dm-emoji-suggestion,
68
+ .dm-theme-auto .dm-mention-suggestion,
67
69
  .dm-theme-auto .dm-table-controls-dropdown {
68
70
  @include dark-tokens;
69
71
  }