@liminis/editor 0.1.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/LICENSE +34 -0
  2. package/README.md +376 -0
  3. package/dist/annotations/anchor-align.d.ts +50 -0
  4. package/dist/annotations/anchor-align.js +74 -0
  5. package/dist/annotations/anchor-model.d.ts +81 -0
  6. package/dist/annotations/anchor-model.js +80 -0
  7. package/dist/annotations/anchor-resolver.d.ts +92 -0
  8. package/dist/annotations/anchor-resolver.js +231 -0
  9. package/dist/annotations/block-structure.d.ts +65 -0
  10. package/dist/annotations/block-structure.js +113 -0
  11. package/dist/annotations/types.d.ts +159 -0
  12. package/dist/annotations/types.js +50 -0
  13. package/dist/annotations.d.ts +25 -0
  14. package/dist/annotations.js +27 -0
  15. package/dist/app/App.d.ts +64 -0
  16. package/dist/app/App.js +180 -0
  17. package/dist/app/editor/AmbientCorrectionPlugin.d.ts +18 -0
  18. package/dist/app/editor/AmbientCorrectionPlugin.js +185 -0
  19. package/dist/app/editor/AnchorScrollPlugin.d.ts +16 -0
  20. package/dist/app/editor/AnchorScrollPlugin.js +134 -0
  21. package/dist/app/editor/AnnotationMarkerPlugin.d.ts +24 -0
  22. package/dist/app/editor/AnnotationMarkerPlugin.js +224 -0
  23. package/dist/app/editor/AnnotationPlugin.d.ts +42 -0
  24. package/dist/app/editor/AnnotationPlugin.js +135 -0
  25. package/dist/app/editor/AnnotationSurface.d.ts +34 -0
  26. package/dist/app/editor/AnnotationSurface.js +115 -0
  27. package/dist/app/editor/AssetContext.d.ts +20 -0
  28. package/dist/app/editor/AssetContext.js +81 -0
  29. package/dist/app/editor/BlockClickPlugin.d.ts +8 -0
  30. package/dist/app/editor/BlockClickPlugin.js +126 -0
  31. package/dist/app/editor/CodeBlockPlugin.d.ts +1 -0
  32. package/dist/app/editor/CodeBlockPlugin.js +219 -0
  33. package/dist/app/editor/CorrectionPanelPlugin.d.ts +14 -0
  34. package/dist/app/editor/CorrectionPanelPlugin.js +333 -0
  35. package/dist/app/editor/DragHandlePlugin.d.ts +1 -0
  36. package/dist/app/editor/DragHandlePlugin.js +300 -0
  37. package/dist/app/editor/Editor.d.ts +84 -0
  38. package/dist/app/editor/Editor.js +539 -0
  39. package/dist/app/editor/FrontmatterPlugin.d.ts +19 -0
  40. package/dist/app/editor/FrontmatterPlugin.js +301 -0
  41. package/dist/app/editor/ImageModal.d.ts +13 -0
  42. package/dist/app/editor/ImageModal.js +267 -0
  43. package/dist/app/editor/ImagePlugin.d.ts +3 -0
  44. package/dist/app/editor/ImagePlugin.js +187 -0
  45. package/dist/app/editor/LinkClickPlugin.d.ts +23 -0
  46. package/dist/app/editor/LinkClickPlugin.js +90 -0
  47. package/dist/app/editor/MarkdownShortcutsPlugin.d.ts +49 -0
  48. package/dist/app/editor/MarkdownShortcutsPlugin.js +373 -0
  49. package/dist/app/editor/OrderedTaskListPlugin.d.ts +21 -0
  50. package/dist/app/editor/OrderedTaskListPlugin.js +78 -0
  51. package/dist/app/editor/SearchPlugin.d.ts +1 -0
  52. package/dist/app/editor/SearchPlugin.js +379 -0
  53. package/dist/app/editor/SelectionContextMenuPlugin.d.ts +29 -0
  54. package/dist/app/editor/SelectionContextMenuPlugin.js +160 -0
  55. package/dist/app/editor/SlashMenu.d.ts +11 -0
  56. package/dist/app/editor/SlashMenu.js +494 -0
  57. package/dist/app/editor/SlashMenuPlugin.d.ts +1 -0
  58. package/dist/app/editor/SlashMenuPlugin.js +168 -0
  59. package/dist/app/editor/TableActionsPlugin.d.ts +1 -0
  60. package/dist/app/editor/TableActionsPlugin.js +398 -0
  61. package/dist/app/editor/TogglePlugin.d.ts +1 -0
  62. package/dist/app/editor/TogglePlugin.js +159 -0
  63. package/dist/app/editor/Toolbar.d.ts +10 -0
  64. package/dist/app/editor/Toolbar.js +263 -0
  65. package/dist/app/editor/WikiLinkExistencePlugin.d.ts +17 -0
  66. package/dist/app/editor/WikiLinkExistencePlugin.js +104 -0
  67. package/dist/app/editor/WikiLinkFormatPlugin.d.ts +17 -0
  68. package/dist/app/editor/WikiLinkFormatPlugin.js +203 -0
  69. package/dist/app/editor/annotation-marks.d.ts +177 -0
  70. package/dist/app/editor/annotation-marks.js +750 -0
  71. package/dist/app/editor/annotationCommands.d.ts +13 -0
  72. package/dist/app/editor/annotationCommands.js +11 -0
  73. package/dist/app/editor/c4/C4InteractiveRenderer.d.ts +35 -0
  74. package/dist/app/editor/c4/C4InteractiveRenderer.js +299 -0
  75. package/dist/app/editor/c4/edge-clipping.d.ts +24 -0
  76. package/dist/app/editor/c4/edge-clipping.js +139 -0
  77. package/dist/app/editor/c4/hooks/useC4DiagramDrag.d.ts +38 -0
  78. package/dist/app/editor/c4/hooks/useC4DiagramDrag.js +112 -0
  79. package/dist/app/editor/c4/layout.d.ts +25 -0
  80. package/dist/app/editor/c4/layout.js +839 -0
  81. package/dist/app/editor/c4/parser.d.ts +19 -0
  82. package/dist/app/editor/c4/parser.js +410 -0
  83. package/dist/app/editor/c4/render-to-string.d.ts +24 -0
  84. package/dist/app/editor/c4/render-to-string.js +34 -0
  85. package/dist/app/editor/c4/renderer.d.ts +64 -0
  86. package/dist/app/editor/c4/renderer.js +569 -0
  87. package/dist/app/editor/c4/types.d.ts +203 -0
  88. package/dist/app/editor/c4/types.js +43 -0
  89. package/dist/app/editor/correction-yaml.d.ts +10 -0
  90. package/dist/app/editor/correction-yaml.js +40 -0
  91. package/dist/app/editor/editorNodes.d.ts +9 -0
  92. package/dist/app/editor/editorNodes.js +36 -0
  93. package/dist/app/editor/index.d.ts +1 -0
  94. package/dist/app/editor/index.js +1 -0
  95. package/dist/app/editor/mark-overlap-resolver.d.ts +6 -0
  96. package/dist/app/editor/mark-overlap-resolver.js +45 -0
  97. package/dist/app/editor/nodes/C4Component.d.ts +14 -0
  98. package/dist/app/editor/nodes/C4Component.js +284 -0
  99. package/dist/app/editor/nodes/C4Node.d.ts +32 -0
  100. package/dist/app/editor/nodes/C4Node.js +112 -0
  101. package/dist/app/editor/nodes/CalloutNode.d.ts +23 -0
  102. package/dist/app/editor/nodes/CalloutNode.js +94 -0
  103. package/dist/app/editor/nodes/CustomLinkNode.d.ts +57 -0
  104. package/dist/app/editor/nodes/CustomLinkNode.js +209 -0
  105. package/dist/app/editor/nodes/CustomListItemNode.d.ts +46 -0
  106. package/dist/app/editor/nodes/CustomListItemNode.js +120 -0
  107. package/dist/app/editor/nodes/CustomListNode.d.ts +27 -0
  108. package/dist/app/editor/nodes/CustomListNode.js +54 -0
  109. package/dist/app/editor/nodes/DefinitionListNode.d.ts +44 -0
  110. package/dist/app/editor/nodes/DefinitionListNode.js +151 -0
  111. package/dist/app/editor/nodes/DiagramContextMenu.d.ts +45 -0
  112. package/dist/app/editor/nodes/DiagramContextMenu.js +116 -0
  113. package/dist/app/editor/nodes/EquationComponent.d.ts +17 -0
  114. package/dist/app/editor/nodes/EquationComponent.js +130 -0
  115. package/dist/app/editor/nodes/EquationNode.d.ts +43 -0
  116. package/dist/app/editor/nodes/EquationNode.js +179 -0
  117. package/dist/app/editor/nodes/FootnoteNode.d.ts +40 -0
  118. package/dist/app/editor/nodes/FootnoteNode.js +151 -0
  119. package/dist/app/editor/nodes/FrontmatterNode.d.ts +24 -0
  120. package/dist/app/editor/nodes/FrontmatterNode.js +88 -0
  121. package/dist/app/editor/nodes/HorizontalRuleNode.d.ts +17 -0
  122. package/dist/app/editor/nodes/HorizontalRuleNode.js +57 -0
  123. package/dist/app/editor/nodes/HtmlNode.d.ts +32 -0
  124. package/dist/app/editor/nodes/HtmlNode.js +121 -0
  125. package/dist/app/editor/nodes/ImageComponent.d.ts +11 -0
  126. package/dist/app/editor/nodes/ImageComponent.js +228 -0
  127. package/dist/app/editor/nodes/ImageNode.d.ts +53 -0
  128. package/dist/app/editor/nodes/ImageNode.js +183 -0
  129. package/dist/app/editor/nodes/ListItemParagraphBreakNode.d.ts +42 -0
  130. package/dist/app/editor/nodes/ListItemParagraphBreakNode.js +95 -0
  131. package/dist/app/editor/nodes/MermaidComponent.d.ts +11 -0
  132. package/dist/app/editor/nodes/MermaidComponent.js +216 -0
  133. package/dist/app/editor/nodes/MermaidNode.d.ts +27 -0
  134. package/dist/app/editor/nodes/MermaidNode.js +96 -0
  135. package/dist/app/editor/nodes/ToggleNode.d.ts +56 -0
  136. package/dist/app/editor/nodes/ToggleNode.js +237 -0
  137. package/dist/app/editor/nodes/diagram-context-menu.d.ts +11 -0
  138. package/dist/app/editor/nodes/diagram-context-menu.js +70 -0
  139. package/dist/app/editor/nodes/diagram-utils.d.ts +13 -0
  140. package/dist/app/editor/nodes/diagram-utils.js +29 -0
  141. package/dist/app/editor/nodes/index.d.ts +30 -0
  142. package/dist/app/editor/nodes/index.js +17 -0
  143. package/dist/app/editor/utils.d.ts +2 -0
  144. package/dist/app/editor/utils.js +17 -0
  145. package/dist/app/mapper/index.d.ts +3 -0
  146. package/dist/app/mapper/index.js +2 -0
  147. package/dist/app/mapper/lexicalToMdast.d.ts +62 -0
  148. package/dist/app/mapper/lexicalToMdast.js +1937 -0
  149. package/dist/app/mapper/mdastToLexical.d.ts +31 -0
  150. package/dist/app/mapper/mdastToLexical.js +1075 -0
  151. package/dist/contract.d.ts +8 -0
  152. package/dist/contract.js +8 -0
  153. package/dist/headless.d.ts +40 -0
  154. package/dist/headless.js +45 -0
  155. package/dist/host/context.d.ts +20 -0
  156. package/dist/host/context.js +24 -0
  157. package/dist/host/defaults.d.ts +21 -0
  158. package/dist/host/defaults.js +47 -0
  159. package/dist/host/messages.d.ts +26 -0
  160. package/dist/host/messages.js +47 -0
  161. package/dist/host/types.d.ts +75 -0
  162. package/dist/host/types.js +13 -0
  163. package/dist/index.d.ts +35 -0
  164. package/dist/index.js +51 -0
  165. package/dist/markdown/annotate-sentinels.d.ts +42 -0
  166. package/dist/markdown/annotate-sentinels.js +86 -0
  167. package/dist/markdown/parse.d.ts +56 -0
  168. package/dist/markdown/parse.js +516 -0
  169. package/dist/markdown/stringify.d.ts +7 -0
  170. package/dist/markdown/stringify.js +439 -0
  171. package/dist/markdown/vendor/mdast-util-wiki-link/LICENSE +21 -0
  172. package/dist/markdown/vendor/mdast-util-wiki-link/README.md +41 -0
  173. package/dist/markdown/vendor/mdast-util-wiki-link/from-markdown.d.ts +72 -0
  174. package/dist/markdown/vendor/mdast-util-wiki-link/from-markdown.js +127 -0
  175. package/dist/markdown/vendor/mdast-util-wiki-link/index.d.ts +8 -0
  176. package/dist/markdown/vendor/mdast-util-wiki-link/index.js +6 -0
  177. package/dist/markdown/vendor/mdast-util-wiki-link/to-markdown.d.ts +17 -0
  178. package/dist/markdown/vendor/mdast-util-wiki-link/to-markdown.js +33 -0
  179. package/dist/markdown.d.ts +28 -0
  180. package/dist/markdown.js +44 -0
  181. package/dist/mathjax-config.d.ts +89 -0
  182. package/dist/mathjax-config.js +133 -0
  183. package/dist/nodes.d.ts +34 -0
  184. package/dist/nodes.js +34 -0
  185. package/dist/stores/correctionStore.d.ts +15 -0
  186. package/dist/stores/correctionStore.js +12 -0
  187. package/dist/stores/editorStore.d.ts +16 -0
  188. package/dist/stores/editorStore.js +27 -0
  189. package/dist/styles.css +2477 -0
  190. package/dist/types.d.ts +296 -0
  191. package/dist/types.js +91 -0
  192. package/dist/utils/file-types.d.ts +10 -0
  193. package/dist/utils/file-types.js +46 -0
  194. package/docs/annotations.md +134 -0
  195. package/docs/decisions/README.md +72 -0
  196. package/docs/decisions/adr-002.md +27 -0
  197. package/docs/decisions/adr-007.md +27 -0
  198. package/docs/decisions/adr-010.md +26 -0
  199. package/docs/decisions/adr-024.md +124 -0
  200. package/docs/decisions/adr-024b.md +0 -0
  201. package/docs/decisions/adr-025.md +103 -0
  202. package/docs/decisions/adr-027.md +66 -0
  203. package/docs/decisions/adr-057.md +67 -0
  204. package/docs/decisions/adr-070.md +131 -0
  205. package/docs/decisions/adr-075.md +410 -0
  206. package/docs/decisions/adr-076.md +183 -0
  207. package/docs/decisions/adr-077.md +410 -0
  208. package/docs/decisions/adr-078.md +243 -0
  209. package/docs/decisions/adr-079.md +167 -0
  210. package/docs/decisions/adr-080.md +325 -0
  211. package/docs/decisions/adr-081.md +108 -0
  212. package/docs/decisions/adr-082.md +123 -0
  213. package/docs/decisions/adr-083.md +204 -0
  214. package/docs/decisions/adr-084.md +179 -0
  215. package/docs/editor-api.md +106 -0
  216. package/docs/markdown-pipeline.md +282 -0
  217. package/docs/provenance.md +106 -0
  218. package/docs/zusammen-editor-capability-map.md +232 -0
  219. package/package.json +175 -0
@@ -0,0 +1,2477 @@
1
+ /* Loop-inspired theme for editor with design tokens (OKLCH) */
2
+ :root {
3
+ /* ========================================
4
+ DESIGN TOKENS - Editor Light Theme
5
+ ======================================== */
6
+
7
+ /* Brand Color - Purple theme (matches renderer) */
8
+ --editor-brand: oklch(0.55 0.20 303);
9
+
10
+ /* Typography */
11
+ --vscode-font-family: 'Inter Variable', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
12
+ --vscode-font-size: 16px;
13
+
14
+ /* Computed Colors (OKLCH) */
15
+ --vscode-foreground: oklch(0.35 0.01 265);
16
+ --vscode-background: oklch(1 0 0);
17
+ --vscode-selection: oklch(0.55 0.20 303 / 0.2);
18
+ --vscode-border: oklch(0.91 0.03 303);
19
+ --vscode-link: oklch(0.55 0.20 303);
20
+ --vscode-external-link: oklch(0.55 0.20 255); /* blue for external links */
21
+ --vscode-code-bg: oklch(0.98 0.02 303);
22
+ --checkbox-border: oklch(0.65 0.08 303);
23
+
24
+ /* Syntax Highlighting - VitePress/Shiki inspired (OKLCH) */
25
+ --slashmd-token-comment: oklch(0.70 0.03 135);
26
+ --slashmd-token-punctuation: oklch(0.65 0 0);
27
+ --slashmd-token-property: oklch(0.60 0.12 85);
28
+ --slashmd-token-selector: oklch(0.52 0.14 145);
29
+ --slashmd-token-operator: oklch(0.55 0.20 25);
30
+ --slashmd-token-keyword: oklch(0.55 0.20 25);
31
+ --slashmd-token-variable: oklch(0.60 0.18 50);
32
+ --slashmd-token-function: oklch(0.50 0.18 303);
33
+
34
+ /* Typography - VitePress style (OKLCH) */
35
+ --slashmd-heading-color: oklch(0.35 0.01 265);
36
+ --slashmd-h1-color: oklch(0.35 0.01 265);
37
+ --slashmd-h2-color: oklch(0.35 0.01 265);
38
+ --slashmd-h3-color: oklch(0.35 0.01 265);
39
+ --slashmd-h4-color: oklch(0.35 0.01 265);
40
+ --slashmd-h5-color: oklch(0.35 0.01 265);
41
+ --slashmd-h1-indent: 0;
42
+ --slashmd-h2-indent: 0;
43
+ --slashmd-h3-indent: 0;
44
+ --slashmd-h4-indent: 0;
45
+ --slashmd-h5-indent: 0;
46
+ --slashmd-bold-color: inherit;
47
+ --slashmd-italic-color: inherit;
48
+
49
+ /* Callouts - Uses brand color for note type (OKLCH) */
50
+ --slashmd-callout-note-bg: oklch(0.55 0.20 303 / 0.08);
51
+ --slashmd-callout-note-border: oklch(0.55 0.20 303);
52
+ --slashmd-callout-tip-bg: oklch(0.65 0.18 160 / 0.08);
53
+ --slashmd-callout-tip-border: oklch(0.65 0.18 160);
54
+ --slashmd-callout-warning-bg: oklch(0.80 0.18 85 / 0.08);
55
+ --slashmd-callout-warning-border: oklch(0.80 0.18 85);
56
+ --slashmd-callout-important-bg: oklch(0.58 0.22 290 / 0.08);
57
+ --slashmd-callout-important-border: oklch(0.58 0.22 290);
58
+ --slashmd-callout-caution-bg: oklch(0.63 0.24 27 / 0.08);
59
+ --slashmd-callout-caution-border: oklch(0.63 0.24 27);
60
+ }
61
+
62
+ /* ========================================
63
+ DESIGN TOKENS - Editor Dark Theme
64
+ ======================================== */
65
+ .dark {
66
+ /* Brand Color - Lighter for dark mode visibility */
67
+ --editor-brand: oklch(0.70 0.20 303);
68
+
69
+ /* Computed Colors (OKLCH) */
70
+ --vscode-foreground: oklch(0.97 0.01 90 / 0.86);
71
+ --vscode-background: oklch(0.17 0.01 265);
72
+ --vscode-selection: oklch(0.70 0.20 303 / 0.2);
73
+ --vscode-border: oklch(0.27 0.02 303);
74
+ --vscode-link: oklch(0.70 0.20 303);
75
+ --vscode-external-link: oklch(0.70 0.18 255); /* lighter blue for dark mode */
76
+ --vscode-code-bg: oklch(0.20 0.02 303);
77
+ --checkbox-border: oklch(0.55 0.06 303);
78
+
79
+ /* Syntax Highlighting - Dark mode (OKLCH) */
80
+ --slashmd-token-comment: oklch(0.60 0.10 140);
81
+ --slashmd-token-punctuation: oklch(0.85 0 0);
82
+ --slashmd-token-property: oklch(0.85 0.10 95);
83
+ --slashmd-token-selector: oklch(0.60 0.10 140);
84
+ --slashmd-token-operator: oklch(0.85 0 0);
85
+ --slashmd-token-keyword: oklch(0.65 0.12 240);
86
+ --slashmd-token-variable: oklch(0.78 0.10 220);
87
+ --slashmd-token-function: oklch(0.85 0.10 95);
88
+
89
+ /* Typography - Dark mode (OKLCH) */
90
+ --slashmd-heading-color: oklch(0.97 0.01 90 / 0.86);
91
+ --slashmd-h1-color: oklch(0.97 0.01 90 / 0.86);
92
+ --slashmd-h2-color: oklch(0.97 0.01 90 / 0.86);
93
+ --slashmd-h3-color: oklch(0.97 0.01 90 / 0.86);
94
+ --slashmd-h4-color: oklch(0.97 0.01 90 / 0.86);
95
+ --slashmd-h5-color: oklch(0.97 0.01 90 / 0.86);
96
+
97
+ /* Callouts - Dark mode, uses brand color for note type (OKLCH) */
98
+ --slashmd-callout-note-bg: oklch(0.70 0.20 303 / 0.1);
99
+ --slashmd-callout-note-border: oklch(0.70 0.20 303);
100
+ --slashmd-callout-tip-bg: oklch(0.65 0.18 160 / 0.1);
101
+ --slashmd-callout-tip-border: oklch(0.65 0.18 160);
102
+ --slashmd-callout-warning-bg: oklch(0.80 0.18 85 / 0.1);
103
+ --slashmd-callout-warning-border: oklch(0.80 0.18 85);
104
+ --slashmd-callout-important-bg: oklch(0.58 0.22 290 / 0.1);
105
+ --slashmd-callout-important-border: oklch(0.58 0.22 290);
106
+ --slashmd-callout-caution-bg: oklch(0.63 0.24 27 / 0.1);
107
+ --slashmd-callout-caution-border: oklch(0.63 0.24 27);
108
+ }
109
+
110
+ * {
111
+ box-sizing: border-box;
112
+ }
113
+
114
+ body {
115
+ margin: 0;
116
+ padding: 0;
117
+ font-family: var(--vscode-font-family);
118
+ font-size: var(--vscode-font-size);
119
+ color: var(--vscode-foreground);
120
+ background: var(--vscode-background);
121
+ line-height: 1.8; /* Slightly more generous line height like Loop */
122
+ -webkit-font-smoothing: antialiased;
123
+ -moz-osx-font-smoothing: grayscale;
124
+ }
125
+
126
+ /* Loading spinner animation */
127
+ .loading-spinner {
128
+ width: 20px;
129
+ height: 20px;
130
+ border: 2px solid var(--vscode-border);
131
+ border-top-color: var(--vscode-link);
132
+ border-radius: 50%;
133
+ animation: spin 1s linear infinite;
134
+ }
135
+
136
+ @keyframes spin {
137
+ to {
138
+ transform: rotate(360deg);
139
+ }
140
+ }
141
+
142
+ /* Editor inner wrapper - used for hover state targeting of drag handles */
143
+ .editor-inner {
144
+ /* Layout handled by Tailwind - this class exists for CSS hover rules */
145
+ }
146
+
147
+ /* Editor content area */
148
+ .editor-input {
149
+ min-height: 300px;
150
+ outline: none;
151
+ padding: 16px 32px 16px 16px;
152
+ }
153
+
154
+ .editor-placeholder {
155
+ position: absolute;
156
+ top: 16px;
157
+ left: 16px;
158
+ color: var(--vscode-foreground);
159
+ opacity: 0.5;
160
+ pointer-events: none;
161
+ user-select: none;
162
+ }
163
+
164
+ /* Typography - Loop-inspired with generous whitespace */
165
+ .editor-paragraph {
166
+ margin: 0 0 16px 0; /* More space between paragraphs like Loop */
167
+ }
168
+
169
+ .editor-heading-h1 {
170
+ font-size: 2.5em; /* Larger title like Loop */
171
+ font-weight: 700;
172
+ margin: 32px 0 24px 0; /* More generous margins */
173
+ line-height: 1.2;
174
+ color: var(--slashmd-h1-color);
175
+ margin-left: var(--slashmd-h1-indent);
176
+ }
177
+
178
+ .editor-heading-h2 {
179
+ font-size: 1.75em; /* Slightly larger */
180
+ font-weight: 600;
181
+ margin: 28px 0 16px 0; /* More generous margins */
182
+ line-height: 1.3;
183
+ color: var(--slashmd-h2-color);
184
+ margin-left: var(--slashmd-h2-indent);
185
+ }
186
+
187
+ .editor-heading-h3 {
188
+ font-size: 1.35em; /* Slightly larger */
189
+ font-weight: 600;
190
+ margin: 24px 0 12px 0; /* More generous margins */
191
+ line-height: 1.4;
192
+ color: var(--slashmd-h3-color);
193
+ margin-left: var(--slashmd-h3-indent);
194
+ }
195
+
196
+ .editor-heading-h4 {
197
+ font-size: 1.15em;
198
+ font-weight: 600;
199
+ margin: 20px 0 10px 0; /* More generous margins */
200
+ line-height: 1.4;
201
+ color: var(--slashmd-h4-color);
202
+ margin-left: var(--slashmd-h4-indent);
203
+ }
204
+
205
+ .editor-heading-h5 {
206
+ font-size: 1.05em;
207
+ font-weight: 600;
208
+ margin: 16px 0 8px 0; /* More generous margins */
209
+ line-height: 1.4;
210
+ color: var(--slashmd-h5-color);
211
+ margin-left: var(--slashmd-h5-indent);
212
+ }
213
+
214
+ /* Lists - Loop-inspired spacing */
215
+ .editor-list-ul {
216
+ margin: 16px 0; /* More space around lists */
217
+ padding-left: 28px;
218
+ list-style-type: disc;
219
+ }
220
+
221
+ .editor-list-ol {
222
+ margin: 16px 0; /* More space around lists */
223
+ padding-left: 28px;
224
+ list-style-type: decimal;
225
+ }
226
+
227
+ .editor-listitem {
228
+ margin: 8px 0; /* More space between list items like Loop */
229
+ }
230
+
231
+ .editor-listitem-checked,
232
+ .editor-listitem-unchecked {
233
+ list-style-type: none;
234
+ position: relative;
235
+ margin-left: -24px;
236
+ padding-left: 24px;
237
+ }
238
+
239
+ .editor-listitem-checked::before,
240
+ .editor-listitem-unchecked::before {
241
+ content: '';
242
+ position: absolute;
243
+ left: 0;
244
+ top: 4px;
245
+ width: 16px;
246
+ height: 16px;
247
+ border: 2px solid var(--checkbox-border);
248
+ border-radius: 3px;
249
+ cursor: pointer;
250
+ }
251
+
252
+ .editor-listitem-checked::before {
253
+ background: var(--vscode-link);
254
+ border-color: var(--vscode-link);
255
+ }
256
+
257
+ .editor-listitem-checked::after {
258
+ content: '✓';
259
+ position: absolute;
260
+ left: 3px;
261
+ top: 2px;
262
+ font-size: 12px;
263
+ color: white;
264
+ }
265
+
266
+ /*
267
+ * Ordered task items keep native <ol> decimal numbering (unlike
268
+ * .editor-listitem-checked/-unchecked above, which set `list-style-type:
269
+ * none` and pull the marker box back with a negative margin to make room for
270
+ * the checkbox where the bullet would have been). Here the decimal marker
271
+ * still renders in the <ol>'s own padding-left area, undisturbed; the
272
+ * checkbox instead claims new space via this item's own padding-left, placed
273
+ * between the number and the item's text.
274
+ */
275
+ .editor-listitem-ordered-checked,
276
+ .editor-listitem-ordered-unchecked {
277
+ position: relative;
278
+ padding-left: 24px;
279
+ }
280
+
281
+ .editor-listitem-ordered-checked::before,
282
+ .editor-listitem-ordered-unchecked::before {
283
+ content: '';
284
+ position: absolute;
285
+ left: 0;
286
+ top: 4px;
287
+ width: 16px;
288
+ height: 16px;
289
+ border: 2px solid var(--checkbox-border);
290
+ border-radius: 3px;
291
+ cursor: pointer;
292
+ }
293
+
294
+ .editor-listitem-ordered-checked::before {
295
+ background: var(--vscode-link);
296
+ border-color: var(--vscode-link);
297
+ }
298
+
299
+ .editor-listitem-ordered-checked::after {
300
+ content: '✓';
301
+ position: absolute;
302
+ left: 3px;
303
+ top: 2px;
304
+ font-size: 12px;
305
+ color: white;
306
+ }
307
+
308
+ .editor-nested-listitem {
309
+ list-style-type: none;
310
+ }
311
+
312
+ /* Quote - Loop-inspired spacing */
313
+ .editor-quote {
314
+ margin: 20px 0; /* More generous margins */
315
+ padding: 12px 20px; /* More padding */
316
+ border-left: 4px solid var(--vscode-border);
317
+ background: var(--vscode-code-bg);
318
+ font-style: italic;
319
+ }
320
+
321
+ /* Code - Loop-inspired spacing */
322
+ .editor-code {
323
+ display: block;
324
+ position: relative;
325
+ margin: 20px 0; /* More generous margins */
326
+ padding: 16px 20px; /* More padding */
327
+ background: var(--vscode-code-bg);
328
+ border-radius: 10px; /* Friendlier rounded corners */
329
+ font-family: 'Fira Code', 'Consolas', monospace;
330
+ font-size: 0.9em;
331
+ overflow-x: auto;
332
+ white-space: pre;
333
+ }
334
+
335
+ /* Code Block Toolbar */
336
+ .code-block-toolbar {
337
+ display: flex;
338
+ align-items: center;
339
+ gap: 4px;
340
+ z-index: 50;
341
+ pointer-events: auto;
342
+ }
343
+
344
+ /* Code Language Selector Button */
345
+ .code-language-button {
346
+ padding: 2px 8px;
347
+ font-size: 11px;
348
+ font-family: var(--vscode-font-family);
349
+ color: var(--vscode-foreground);
350
+ background: var(--vscode-code-bg);
351
+ border: 1px solid var(--vscode-border);
352
+ border-radius: 4px;
353
+ cursor: pointer;
354
+ opacity: 0.7;
355
+ transition: opacity 0.15s, background 0.15s;
356
+ }
357
+
358
+ .code-language-button:hover {
359
+ opacity: 1;
360
+ background: var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.15));
361
+ }
362
+
363
+ /* Code Copy Button */
364
+ .code-copy-button {
365
+ display: flex;
366
+ align-items: center;
367
+ justify-content: center;
368
+ width: 24px;
369
+ height: 20px;
370
+ padding: 0;
371
+ color: var(--vscode-foreground);
372
+ background: var(--vscode-code-bg);
373
+ border: 1px solid var(--vscode-border);
374
+ border-radius: 4px;
375
+ cursor: pointer;
376
+ opacity: 0.7;
377
+ transition: opacity 0.15s, background 0.15s, color 0.15s;
378
+ }
379
+
380
+ .code-copy-button:hover {
381
+ opacity: 1;
382
+ background: var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.15));
383
+ }
384
+
385
+ .code-copy-button.copied {
386
+ opacity: 1;
387
+ color: var(--vscode-notificationsInfoIcon-foreground, #3794ff);
388
+ }
389
+
390
+ /* Code Language Selector Menu */
391
+ .code-language-menu {
392
+ min-width: 180px;
393
+ max-height: 320px;
394
+ display: flex;
395
+ flex-direction: column;
396
+ background: var(--vscode-background);
397
+ border: 1px solid var(--vscode-border);
398
+ border-radius: 12px; /* Friendlier rounded corners */
399
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); /* Softer shadow */
400
+ z-index: 300;
401
+ overflow: hidden;
402
+ }
403
+
404
+ .code-language-search {
405
+ margin: 8px;
406
+ padding: 6px 10px;
407
+ font-size: 13px;
408
+ font-family: var(--vscode-font-family);
409
+ color: var(--vscode-foreground);
410
+ background: var(--vscode-code-bg);
411
+ border: 1px solid var(--vscode-border);
412
+ border-radius: 4px;
413
+ outline: none;
414
+ }
415
+
416
+ .code-language-search:focus {
417
+ border-color: var(--vscode-link);
418
+ }
419
+
420
+ .code-language-list {
421
+ flex: 1;
422
+ overflow-y: auto;
423
+ padding: 4px 0;
424
+ }
425
+
426
+ .code-language-item {
427
+ display: flex;
428
+ align-items: center;
429
+ justify-content: space-between;
430
+ width: 100%;
431
+ padding: 6px 12px;
432
+ font-size: 13px;
433
+ font-family: var(--vscode-font-family);
434
+ color: var(--vscode-foreground);
435
+ background: transparent;
436
+ border: none;
437
+ text-align: left;
438
+ cursor: pointer;
439
+ }
440
+
441
+ .code-language-item:hover {
442
+ background: var(--vscode-selection);
443
+ }
444
+
445
+ .code-language-item.current {
446
+ font-weight: 500;
447
+ }
448
+
449
+ .code-language-check {
450
+ color: var(--vscode-link);
451
+ font-size: 12px;
452
+ }
453
+
454
+ .code-language-empty {
455
+ padding: 12px;
456
+ text-align: center;
457
+ color: var(--vscode-foreground);
458
+ opacity: 0.6;
459
+ font-size: 13px;
460
+ }
461
+
462
+ /* Inline text formatting */
463
+ .editor-text-bold {
464
+ font-weight: 700;
465
+ color: var(--slashmd-bold-color);
466
+ }
467
+
468
+ .editor-text-italic {
469
+ font-style: italic;
470
+ color: var(--slashmd-italic-color);
471
+ }
472
+
473
+ .editor-text-strikethrough {
474
+ text-decoration: line-through;
475
+ }
476
+
477
+ .editor-text-underline {
478
+ text-decoration: underline;
479
+ }
480
+
481
+ .editor-text-code {
482
+ font-family: 'Fira Code', 'Consolas', monospace;
483
+ background: var(--vscode-code-bg);
484
+ padding: 2px 6px;
485
+ border-radius: 6px; /* Friendlier rounded corners */
486
+ font-size: 0.9em;
487
+ }
488
+
489
+ /* Links */
490
+ .editor-link {
491
+ color: var(--vscode-link);
492
+ text-decoration: none;
493
+ cursor: text; /* Normal text cursor for editing */
494
+ }
495
+
496
+ .editor-link:hover {
497
+ text-decoration: underline;
498
+ }
499
+
500
+ /* External links (http/https/mailto) - blue color to differentiate from wiki-links */
501
+ .editor-link-external {
502
+ color: var(--vscode-external-link);
503
+ }
504
+
505
+ /* When Cmd/Ctrl is held, show pointer cursor on links to indicate they can be opened */
506
+ .modifier-held .editor-link {
507
+ cursor: pointer;
508
+ }
509
+
510
+ .modifier-held .editor-link:hover {
511
+ text-decoration: underline;
512
+ opacity: 0.8;
513
+ }
514
+
515
+ /* In read-only mode, links are always clickable - show pointer cursor */
516
+ .links-clickable .editor-link {
517
+ cursor: pointer;
518
+ }
519
+
520
+ .links-clickable .editor-link:hover {
521
+ text-decoration: underline;
522
+ opacity: 0.9;
523
+ }
524
+
525
+ /* Broken wiki links - links to non-existent files */
526
+ .editor-link-broken {
527
+ color: var(--vscode-errorForeground, #f14c4c) !important;
528
+ }
529
+
530
+ .editor-link-broken:hover {
531
+ color: var(--vscode-errorForeground, #f14c4c) !important;
532
+ opacity: 0.8;
533
+ }
534
+
535
+ /* Tables */
536
+ .editor-table {
537
+ width: 100%;
538
+ border-collapse: collapse;
539
+ margin: 16px 0;
540
+ }
541
+
542
+ .editor-table-row {
543
+ }
544
+
545
+ .editor-table-cell,
546
+ .editor-table-cell-header {
547
+ border: 1px solid var(--vscode-border);
548
+ padding: 8px 12px;
549
+ text-align: left;
550
+ }
551
+
552
+ .editor-table-cell-header {
553
+ background: var(--vscode-code-bg);
554
+ font-weight: 600;
555
+ }
556
+
557
+ /* Divider */
558
+ .divider-block {
559
+ border: none;
560
+ height: 24px;
561
+ margin: 12px 0;
562
+ background: transparent;
563
+ position: relative;
564
+ }
565
+
566
+ .divider-block::before {
567
+ content: '';
568
+ position: absolute;
569
+ top: 50%;
570
+ left: 0;
571
+ right: 0;
572
+ height: 1px;
573
+ background: var(--vscode-border);
574
+ }
575
+
576
+ /* Image */
577
+ .image-block {
578
+ margin: 16px 0;
579
+ }
580
+
581
+ .image-block img {
582
+ max-width: 100%;
583
+ height: auto;
584
+ border-radius: 4px;
585
+ }
586
+
587
+ /* Image wrapper with resize handles */
588
+ .image-wrapper {
589
+ position: relative;
590
+ display: inline-block;
591
+ max-width: 100%;
592
+ }
593
+
594
+ .image-wrapper.no-dimensions {
595
+ display: block;
596
+ }
597
+
598
+ .image-wrapper img {
599
+ display: block;
600
+ max-width: 100%;
601
+ height: auto;
602
+ border-radius: 4px;
603
+ cursor: pointer;
604
+ }
605
+
606
+ .image-wrapper.selected img {
607
+ outline: 2px solid var(--vscode-link);
608
+ outline-offset: 2px;
609
+ }
610
+
611
+ .image-wrapper.resizing img {
612
+ opacity: 0.8;
613
+ }
614
+
615
+ /* Resize handles */
616
+ .image-resize-handle {
617
+ position: absolute;
618
+ width: 12px;
619
+ height: 12px;
620
+ background: var(--vscode-link);
621
+ border: 2px solid var(--vscode-background);
622
+ border-radius: 2px;
623
+ z-index: 10;
624
+ }
625
+
626
+ .image-resize-handle.nw {
627
+ top: -6px;
628
+ left: -6px;
629
+ cursor: nwse-resize;
630
+ }
631
+
632
+ .image-resize-handle.ne {
633
+ top: -6px;
634
+ right: -6px;
635
+ cursor: nesw-resize;
636
+ }
637
+
638
+ .image-resize-handle.sw {
639
+ bottom: -6px;
640
+ left: -6px;
641
+ cursor: nesw-resize;
642
+ }
643
+
644
+ .image-resize-handle.se {
645
+ bottom: -6px;
646
+ right: -6px;
647
+ cursor: nwse-resize;
648
+ }
649
+
650
+ .image-resize-handle:hover {
651
+ transform: scale(1.2);
652
+ }
653
+
654
+ /* Size badge */
655
+ .image-size-badge {
656
+ position: absolute;
657
+ bottom: 8px;
658
+ left: 50%;
659
+ transform: translateX(-50%);
660
+ padding: 2px 8px;
661
+ background: rgba(0, 0, 0, 0.7);
662
+ color: white;
663
+ font-size: 11px;
664
+ border-radius: 4px;
665
+ pointer-events: none;
666
+ white-space: nowrap;
667
+ }
668
+
669
+ /* Callout */
670
+ .callout {
671
+ margin: 16px 0;
672
+ padding: 14px 18px; /* Slightly more padding */
673
+ border-radius: 10px; /* Friendlier rounded corners */
674
+ border-left: 4px solid;
675
+ }
676
+
677
+ .callout-note {
678
+ background: var(--slashmd-callout-note-bg);
679
+ border-left-color: var(--slashmd-callout-note-border);
680
+ }
681
+
682
+ .callout-tip {
683
+ background: var(--slashmd-callout-tip-bg);
684
+ border-left-color: var(--slashmd-callout-tip-border);
685
+ }
686
+
687
+ .callout-warning {
688
+ background: var(--slashmd-callout-warning-bg);
689
+ border-left-color: var(--slashmd-callout-warning-border);
690
+ }
691
+
692
+ .callout-important {
693
+ background: var(--slashmd-callout-important-bg);
694
+ border-left-color: var(--slashmd-callout-important-border);
695
+ }
696
+
697
+ .callout-caution {
698
+ background: var(--slashmd-callout-caution-bg);
699
+ border-left-color: var(--slashmd-callout-caution-border);
700
+ }
701
+
702
+ /* Remove bottom margin from last paragraph in callout */
703
+ .callout > .editor-paragraph:last-child {
704
+ margin-bottom: 0;
705
+ }
706
+
707
+ /* Toggle - New ElementNode-based structure */
708
+ .toggle-container {
709
+ margin: 8px 0;
710
+ border: 1px solid var(--vscode-border);
711
+ border-radius: 10px; /* Friendlier rounded corners */
712
+ overflow: hidden;
713
+ }
714
+
715
+ .toggle-title {
716
+ display: flex;
717
+ align-items: center;
718
+ padding: 10px 14px;
719
+ padding-left: 32px;
720
+ background: var(--vscode-code-bg);
721
+ position: relative;
722
+ min-height: 24px;
723
+ }
724
+
725
+ /* Toggle arrow - positioned absolutely */
726
+ .toggle-title::before {
727
+ content: '▶';
728
+ position: absolute;
729
+ left: 12px;
730
+ top: 50%;
731
+ transform: translateY(-50%);
732
+ font-size: 10px;
733
+ color: var(--vscode-foreground);
734
+ opacity: 0.7;
735
+ transition: transform 0.2s;
736
+ cursor: pointer;
737
+ }
738
+
739
+ .toggle-container--open .toggle-title::before {
740
+ transform: translateY(-50%) rotate(90deg);
741
+ }
742
+
743
+ /* Make the arrow click area larger */
744
+ .toggle-title::after {
745
+ content: '';
746
+ position: absolute;
747
+ left: 0;
748
+ top: 0;
749
+ width: 32px;
750
+ height: 100%;
751
+ cursor: pointer;
752
+ }
753
+
754
+ .toggle-title:hover {
755
+ background: var(--vscode-selection);
756
+ }
757
+
758
+ /* The paragraph inside the title */
759
+ .toggle-title > .editor-paragraph {
760
+ margin: 0;
761
+ font-weight: 500;
762
+ flex: 1;
763
+ }
764
+
765
+ /* Content area - hidden when collapsed */
766
+ .toggle-content-area {
767
+ display: none;
768
+ padding: 12px 14px;
769
+ border-top: 1px solid var(--vscode-border);
770
+ }
771
+
772
+ .toggle-container--open .toggle-content-area {
773
+ display: block;
774
+ }
775
+
776
+ /* Nested content should have proper spacing */
777
+ .toggle-content-area > .editor-paragraph {
778
+ margin: 0 0 8px 0;
779
+ }
780
+
781
+ .toggle-content-area > .editor-paragraph:last-child {
782
+ margin-bottom: 0;
783
+ }
784
+
785
+ .toggle-content-area > .editor-list-ul,
786
+ .toggle-content-area > .editor-list-ol {
787
+ margin: 8px 0;
788
+ }
789
+
790
+ /* Make sure code blocks inside toggle look good */
791
+ .toggle-content-area > .editor-code {
792
+ margin: 8px 0;
793
+ }
794
+
795
+ /* Empty content placeholder */
796
+ .toggle-content-area:empty::before {
797
+ content: 'Type content here...';
798
+ color: var(--vscode-foreground);
799
+ opacity: 0.4;
800
+ }
801
+
802
+ /* Legacy classes (for backwards compatibility) */
803
+ .toggle-wrapper {
804
+ margin: 8px 0;
805
+ }
806
+
807
+ .toggle-block {
808
+ border: 1px solid var(--vscode-border);
809
+ border-radius: 6px;
810
+ overflow: hidden;
811
+ }
812
+
813
+ /* Toolbar */
814
+ .toolbar {
815
+ display: flex;
816
+ align-items: center;
817
+ gap: 4px;
818
+ padding: 8px;
819
+ background: var(--vscode-background);
820
+ border: 1px solid var(--vscode-border);
821
+ border-radius: 10px; /* Friendlier rounded corners */
822
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1); /* Softer shadow */
823
+ z-index: 100;
824
+ }
825
+
826
+ .toolbar-button {
827
+ display: flex;
828
+ align-items: center;
829
+ justify-content: center;
830
+ width: 32px;
831
+ height: 32px;
832
+ border: none;
833
+ background: transparent;
834
+ border-radius: 4px;
835
+ cursor: pointer;
836
+ color: var(--vscode-foreground);
837
+ font-size: 14px;
838
+ }
839
+
840
+ .toolbar-button:hover {
841
+ background: var(--vscode-code-bg);
842
+ }
843
+
844
+ .toolbar-button.active {
845
+ background: var(--vscode-selection);
846
+ }
847
+
848
+ .toolbar-divider {
849
+ width: 1px;
850
+ height: 20px;
851
+ background: var(--vscode-border);
852
+ margin: 0 4px;
853
+ }
854
+
855
+ .toolbar-link-input {
856
+ position: absolute;
857
+ top: 100%;
858
+ left: 50%;
859
+ transform: translateX(-50%);
860
+ margin-top: 4px;
861
+ padding: 8px;
862
+ background: var(--vscode-background);
863
+ border: 1px solid var(--vscode-border);
864
+ border-radius: 6px;
865
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
866
+ }
867
+
868
+ .toolbar-link-input input {
869
+ width: 220px;
870
+ padding: 6px 10px;
871
+ font-size: 13px;
872
+ color: var(--vscode-text);
873
+ background: var(--vscode-input-bg, var(--vscode-code-bg));
874
+ border: 1px solid var(--vscode-border);
875
+ border-radius: 4px;
876
+ outline: none;
877
+ }
878
+
879
+ .toolbar-link-input input:focus {
880
+ border-color: var(--vscode-focus-border, #007acc);
881
+ }
882
+
883
+ /* Slash Menu */
884
+ .slash-menu {
885
+ position: fixed;
886
+ min-width: 280px;
887
+ max-height: 320px;
888
+ display: flex;
889
+ flex-direction: column;
890
+ background: var(--vscode-background);
891
+ border: 1px solid var(--vscode-border);
892
+ border-radius: 12px; /* Friendlier rounded corners */
893
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); /* Softer shadow */
894
+ z-index: 200;
895
+ }
896
+
897
+ .slash-menu-header {
898
+ padding: 8px 12px;
899
+ font-size: 11px;
900
+ font-weight: 600;
901
+ text-transform: uppercase;
902
+ color: var(--vscode-foreground);
903
+ opacity: 0.6;
904
+ border-bottom: 1px solid var(--vscode-border);
905
+ flex-shrink: 0;
906
+ }
907
+
908
+ .slash-menu-list {
909
+ list-style: none;
910
+ margin: 0;
911
+ padding: 4px 0;
912
+ overflow-y: auto;
913
+ flex: 1;
914
+ }
915
+
916
+ .slash-menu-item {
917
+ display: flex;
918
+ align-items: center;
919
+ gap: 12px;
920
+ padding: 8px 12px;
921
+ cursor: pointer;
922
+ }
923
+
924
+ .slash-menu-item:hover,
925
+ .slash-menu-item.selected {
926
+ background: var(--vscode-selection);
927
+ }
928
+
929
+ .slash-menu-icon {
930
+ display: flex;
931
+ align-items: center;
932
+ justify-content: center;
933
+ width: 32px;
934
+ height: 32px;
935
+ background: var(--vscode-code-bg);
936
+ border-radius: 4px;
937
+ font-size: 14px;
938
+ }
939
+
940
+ .slash-menu-content {
941
+ display: flex;
942
+ flex-direction: column;
943
+ }
944
+
945
+ .slash-menu-label {
946
+ font-weight: 500;
947
+ }
948
+
949
+ .slash-menu-description {
950
+ font-size: 12px;
951
+ opacity: 0.7;
952
+ }
953
+
954
+ .slash-menu-empty {
955
+ padding: 16px;
956
+ text-align: center;
957
+ color: var(--vscode-foreground);
958
+ opacity: 0.6;
959
+ }
960
+
961
+ /* Drag Handle */
962
+ .drag-handle {
963
+ display: flex;
964
+ align-items: center;
965
+ justify-content: flex-start;
966
+ cursor: grab;
967
+ opacity: 0;
968
+ transition: opacity 0.15s ease;
969
+ z-index: 50;
970
+ /* Extend hit area to the right to eliminate gap */
971
+ padding: 4px 12px 4px 4px;
972
+ }
973
+
974
+ .editor-inner:hover .drag-handle {
975
+ opacity: 0.4;
976
+ }
977
+
978
+ .drag-handle:hover {
979
+ opacity: 1;
980
+ }
981
+
982
+ .drag-handle.dragging {
983
+ cursor: grabbing;
984
+ opacity: 1;
985
+ }
986
+
987
+ .drag-handle-icon {
988
+ display: flex;
989
+ align-items: center;
990
+ justify-content: center;
991
+ width: 20px;
992
+ height: 20px;
993
+ font-size: 14px;
994
+ letter-spacing: -3px;
995
+ color: var(--vscode-foreground);
996
+ user-select: none;
997
+ border-radius: 4px;
998
+ }
999
+
1000
+ .drag-handle:hover .drag-handle-icon {
1001
+ background: var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.1));
1002
+ }
1003
+
1004
+ /* Block Delete Button */
1005
+ .block-delete-button {
1006
+ display: flex;
1007
+ align-items: center;
1008
+ justify-content: center;
1009
+ cursor: pointer;
1010
+ opacity: 0;
1011
+ transition: opacity 0.15s ease;
1012
+ z-index: 50;
1013
+ padding: 4px 4px 4px 12px;
1014
+ background: none;
1015
+ border: none;
1016
+ }
1017
+
1018
+ .editor-inner:hover .block-delete-button {
1019
+ opacity: 0.4;
1020
+ }
1021
+
1022
+ .block-delete-button:hover {
1023
+ opacity: 1;
1024
+ }
1025
+
1026
+ .block-delete-icon {
1027
+ display: flex;
1028
+ align-items: center;
1029
+ justify-content: center;
1030
+ width: 20px;
1031
+ height: 20px;
1032
+ font-size: 16px;
1033
+ color: var(--vscode-foreground);
1034
+ user-select: none;
1035
+ border-radius: 4px;
1036
+ }
1037
+
1038
+ .block-delete-button:hover .block-delete-icon {
1039
+ background: var(--vscode-inputValidation-errorBackground, rgba(255, 0, 0, 0.15));
1040
+ color: var(--vscode-errorForeground, #f44336);
1041
+ }
1042
+
1043
+ /* Code syntax highlighting */
1044
+ .editor-tokenComment {
1045
+ color: var(--slashmd-token-comment);
1046
+ }
1047
+
1048
+ .editor-tokenPunctuation {
1049
+ color: var(--slashmd-token-punctuation);
1050
+ }
1051
+
1052
+ .editor-tokenProperty {
1053
+ color: var(--slashmd-token-property);
1054
+ }
1055
+
1056
+ .editor-tokenSelector {
1057
+ color: var(--slashmd-token-selector);
1058
+ }
1059
+
1060
+ .editor-tokenOperator {
1061
+ color: var(--slashmd-token-operator);
1062
+ }
1063
+
1064
+ .editor-tokenAttr {
1065
+ color: var(--slashmd-token-keyword);
1066
+ }
1067
+
1068
+ .editor-tokenVariable {
1069
+ color: var(--slashmd-token-variable);
1070
+ }
1071
+
1072
+ .editor-tokenFunction {
1073
+ color: var(--slashmd-token-function);
1074
+ }
1075
+
1076
+ /* Scrollbar - auto-hides on macOS, styled when visible */
1077
+ /* Only style when hovering or scrolling to maintain macOS auto-hide behavior */
1078
+ ::-webkit-scrollbar {
1079
+ width: 12px;
1080
+ height: 12px;
1081
+ }
1082
+
1083
+ ::-webkit-scrollbar-track {
1084
+ background: transparent;
1085
+ }
1086
+
1087
+ ::-webkit-scrollbar-thumb {
1088
+ background: transparent;
1089
+ border-radius: 6px;
1090
+ border: 3px solid transparent;
1091
+ background-clip: padding-box;
1092
+ }
1093
+
1094
+ /* Show scrollbar when hovering over scrollable area */
1095
+ *:hover::-webkit-scrollbar-thumb {
1096
+ background: rgba(128, 128, 128, 0.3);
1097
+ }
1098
+
1099
+ *:hover::-webkit-scrollbar-thumb:hover {
1100
+ background: rgba(128, 128, 128, 0.5);
1101
+ }
1102
+
1103
+ /* Firefox scrollbar styling - auto mode */
1104
+ * {
1105
+ scrollbar-width: auto;
1106
+ scrollbar-color: rgba(128, 128, 128, 0.3) transparent;
1107
+ }
1108
+
1109
+ /* Focus styles for accessibility */
1110
+ *:focus-visible {
1111
+ outline: 2px solid var(--vscode-link);
1112
+ outline-offset: 2px;
1113
+ }
1114
+
1115
+ /* Remove focus outline from editor content */
1116
+ .editor-input:focus-visible,
1117
+ .editor-input:focus {
1118
+ outline: none;
1119
+ }
1120
+
1121
+ /* Selection */
1122
+ ::selection {
1123
+ background: var(--vscode-selection);
1124
+ }
1125
+
1126
+ /* Table Actions Menu */
1127
+ .table-actions-menu {
1128
+ min-width: 200px;
1129
+ background: var(--vscode-background);
1130
+ border: 1px solid var(--vscode-border);
1131
+ border-radius: 12px; /* Friendlier rounded corners */
1132
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); /* Softer shadow */
1133
+ z-index: 300;
1134
+ overflow: hidden;
1135
+ }
1136
+
1137
+ .table-actions-section {
1138
+ padding: 4px 0;
1139
+ }
1140
+
1141
+ .table-actions-header {
1142
+ padding: 6px 12px 4px;
1143
+ font-size: 11px;
1144
+ font-weight: 600;
1145
+ text-transform: uppercase;
1146
+ color: var(--vscode-foreground);
1147
+ opacity: 0.6;
1148
+ }
1149
+
1150
+ .table-actions-button {
1151
+ display: flex;
1152
+ align-items: center;
1153
+ gap: 8px;
1154
+ width: 100%;
1155
+ padding: 8px 12px;
1156
+ border: none;
1157
+ background: transparent;
1158
+ color: var(--vscode-foreground);
1159
+ font-size: 13px;
1160
+ text-align: left;
1161
+ cursor: pointer;
1162
+ }
1163
+
1164
+ .table-actions-button:hover {
1165
+ background: var(--vscode-selection);
1166
+ }
1167
+
1168
+ .table-actions-button.table-actions-danger {
1169
+ color: #e74c3c;
1170
+ }
1171
+
1172
+ .table-actions-button.table-actions-danger:hover {
1173
+ background: rgba(231, 76, 60, 0.1);
1174
+ }
1175
+
1176
+ .table-actions-icon {
1177
+ display: flex;
1178
+ align-items: center;
1179
+ justify-content: center;
1180
+ width: 18px;
1181
+ font-size: 12px;
1182
+ }
1183
+
1184
+ .table-actions-divider {
1185
+ height: 1px;
1186
+ background: var(--vscode-border);
1187
+ margin: 4px 0;
1188
+ }
1189
+
1190
+ /* Table cell selection styles */
1191
+ .editor-table td:focus,
1192
+ .editor-table th:focus,
1193
+ .editor-table-cell:focus,
1194
+ .editor-table-cell-header:focus {
1195
+ outline: 2px solid var(--vscode-link);
1196
+ outline-offset: -2px;
1197
+ }
1198
+
1199
+ /* Table hover row highlight */
1200
+ .editor-table tr:hover {
1201
+ background: rgba(128, 128, 128, 0.05);
1202
+ }
1203
+
1204
+ /* Table cell min-width for usability */
1205
+ .editor-table-cell,
1206
+ .editor-table-cell-header {
1207
+ min-width: 80px;
1208
+ vertical-align: top;
1209
+ }
1210
+
1211
+ /* Cursor in table cells */
1212
+ .editor-table-cell p,
1213
+ .editor-table-cell-header p {
1214
+ margin: 0;
1215
+ }
1216
+
1217
+ /* Image Modal */
1218
+ .image-modal-overlay {
1219
+ position: fixed;
1220
+ top: 0;
1221
+ left: 0;
1222
+ right: 0;
1223
+ bottom: 0;
1224
+ background: rgba(0, 0, 0, 0.5);
1225
+ display: flex;
1226
+ align-items: center;
1227
+ justify-content: center;
1228
+ z-index: 1000;
1229
+ }
1230
+
1231
+ .image-modal {
1232
+ width: 480px;
1233
+ max-width: 90vw;
1234
+ max-height: 90vh;
1235
+ background: var(--vscode-background);
1236
+ border: 1px solid var(--vscode-border);
1237
+ border-radius: 16px; /* Friendlier rounded corners */
1238
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); /* Softer shadow */
1239
+ display: flex;
1240
+ flex-direction: column;
1241
+ overflow: hidden;
1242
+ }
1243
+
1244
+ .image-modal-header {
1245
+ display: flex;
1246
+ align-items: center;
1247
+ justify-content: space-between;
1248
+ padding: 16px;
1249
+ border-bottom: 1px solid var(--vscode-border);
1250
+ }
1251
+
1252
+ .image-modal-header h3 {
1253
+ margin: 0;
1254
+ font-size: 16px;
1255
+ font-weight: 600;
1256
+ }
1257
+
1258
+ .image-modal-close {
1259
+ display: flex;
1260
+ align-items: center;
1261
+ justify-content: center;
1262
+ width: 28px;
1263
+ height: 28px;
1264
+ border: none;
1265
+ background: transparent;
1266
+ border-radius: 4px;
1267
+ cursor: pointer;
1268
+ font-size: 20px;
1269
+ color: var(--vscode-foreground);
1270
+ opacity: 0.7;
1271
+ }
1272
+
1273
+ .image-modal-close:hover {
1274
+ opacity: 1;
1275
+ background: var(--vscode-code-bg);
1276
+ }
1277
+
1278
+ .image-modal-tabs {
1279
+ display: flex;
1280
+ border-bottom: 1px solid var(--vscode-border);
1281
+ }
1282
+
1283
+ .image-modal-tab {
1284
+ flex: 1;
1285
+ padding: 12px 16px;
1286
+ border: none;
1287
+ background: transparent;
1288
+ color: var(--vscode-foreground);
1289
+ font-size: 14px;
1290
+ cursor: pointer;
1291
+ opacity: 0.7;
1292
+ transition: opacity 0.15s, background 0.15s;
1293
+ }
1294
+
1295
+ .image-modal-tab:hover {
1296
+ opacity: 1;
1297
+ background: var(--vscode-code-bg);
1298
+ }
1299
+
1300
+ .image-modal-tab.active {
1301
+ opacity: 1;
1302
+ border-bottom: 2px solid var(--vscode-link);
1303
+ margin-bottom: -1px;
1304
+ }
1305
+
1306
+ .image-modal-content {
1307
+ padding: 16px;
1308
+ flex: 1;
1309
+ overflow-y: auto;
1310
+ }
1311
+
1312
+ .image-modal-dropzone {
1313
+ display: flex;
1314
+ align-items: center;
1315
+ justify-content: center;
1316
+ min-height: 160px;
1317
+ border: 2px dashed var(--vscode-border);
1318
+ border-radius: 8px;
1319
+ cursor: pointer;
1320
+ transition: border-color 0.15s, background 0.15s;
1321
+ }
1322
+
1323
+ .image-modal-dropzone:hover {
1324
+ border-color: var(--vscode-link);
1325
+ background: rgba(0, 102, 204, 0.05);
1326
+ }
1327
+
1328
+ .image-modal-dropzone.drag-over {
1329
+ border-color: var(--vscode-link);
1330
+ background: rgba(0, 102, 204, 0.1);
1331
+ }
1332
+
1333
+ .image-modal-dropzone.has-preview {
1334
+ border-style: solid;
1335
+ border-color: var(--vscode-border);
1336
+ padding: 8px;
1337
+ }
1338
+
1339
+ .image-modal-dropzone-content {
1340
+ display: flex;
1341
+ flex-direction: column;
1342
+ align-items: center;
1343
+ gap: 8px;
1344
+ color: var(--vscode-foreground);
1345
+ opacity: 0.7;
1346
+ }
1347
+
1348
+ .image-modal-dropzone-icon {
1349
+ font-size: 32px;
1350
+ }
1351
+
1352
+ .image-modal-preview {
1353
+ max-width: 100%;
1354
+ max-height: 200px;
1355
+ border-radius: 4px;
1356
+ object-fit: contain;
1357
+ }
1358
+
1359
+ .image-modal-url-section {
1360
+ display: flex;
1361
+ flex-direction: column;
1362
+ gap: 12px;
1363
+ }
1364
+
1365
+ .image-modal-url-preview {
1366
+ display: flex;
1367
+ justify-content: center;
1368
+ padding: 8px;
1369
+ border: 1px solid var(--vscode-border);
1370
+ border-radius: 8px;
1371
+ background: var(--vscode-code-bg);
1372
+ }
1373
+
1374
+ .image-modal-alt-section {
1375
+ margin-top: 16px;
1376
+ }
1377
+
1378
+ .image-modal-label {
1379
+ display: block;
1380
+ margin-bottom: 6px;
1381
+ font-size: 13px;
1382
+ color: var(--vscode-foreground);
1383
+ opacity: 0.8;
1384
+ }
1385
+
1386
+ .image-modal-input {
1387
+ width: 100%;
1388
+ padding: 10px 12px;
1389
+ font-size: 14px;
1390
+ font-family: var(--vscode-font-family);
1391
+ color: var(--vscode-foreground);
1392
+ background: var(--vscode-code-bg);
1393
+ border: 1px solid var(--vscode-border);
1394
+ border-radius: 6px;
1395
+ outline: none;
1396
+ }
1397
+
1398
+ .image-modal-input:focus {
1399
+ border-color: var(--vscode-link);
1400
+ }
1401
+
1402
+ .image-modal-input::placeholder {
1403
+ color: var(--vscode-foreground);
1404
+ opacity: 0.5;
1405
+ }
1406
+
1407
+ .image-modal-error {
1408
+ margin-top: 12px;
1409
+ padding: 10px 12px;
1410
+ background: rgba(244, 67, 54, 0.1);
1411
+ border: 1px solid #f44336;
1412
+ border-radius: 6px;
1413
+ color: #f44336;
1414
+ font-size: 13px;
1415
+ }
1416
+
1417
+ .image-modal-footer {
1418
+ display: flex;
1419
+ justify-content: flex-end;
1420
+ gap: 8px;
1421
+ padding: 16px;
1422
+ border-top: 1px solid var(--vscode-border);
1423
+ }
1424
+
1425
+ .image-modal-button {
1426
+ padding: 8px 16px;
1427
+ font-size: 14px;
1428
+ font-family: var(--vscode-font-family);
1429
+ border: none;
1430
+ border-radius: 6px;
1431
+ cursor: pointer;
1432
+ transition: background 0.15s;
1433
+ }
1434
+
1435
+ .image-modal-button.secondary {
1436
+ color: var(--vscode-foreground);
1437
+ background: var(--vscode-code-bg);
1438
+ }
1439
+
1440
+ .image-modal-button.secondary:hover {
1441
+ background: var(--vscode-selection);
1442
+ }
1443
+
1444
+ .image-modal-button.primary {
1445
+ color: white;
1446
+ background: var(--vscode-link);
1447
+ }
1448
+
1449
+ .image-modal-button.primary:hover {
1450
+ filter: brightness(1.1);
1451
+ }
1452
+
1453
+ /* Search Bar */
1454
+ .search-bar {
1455
+ position: fixed;
1456
+ top: 8px;
1457
+ right: 16px;
1458
+ display: flex;
1459
+ align-items: center;
1460
+ gap: 8px;
1461
+ padding: 8px 12px;
1462
+ background: var(--vscode-background);
1463
+ border: 1px solid var(--vscode-border);
1464
+ border-radius: 12px; /* Friendlier rounded corners */
1465
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12); /* Softer shadow */
1466
+ z-index: 500;
1467
+ }
1468
+
1469
+ .search-input-wrapper {
1470
+ display: flex;
1471
+ align-items: center;
1472
+ gap: 8px;
1473
+ background: var(--vscode-code-bg);
1474
+ border: 1px solid var(--vscode-border);
1475
+ border-radius: 6px;
1476
+ padding: 4px 8px;
1477
+ }
1478
+
1479
+ .search-input-wrapper:focus-within {
1480
+ outline: none;
1481
+ }
1482
+
1483
+ .search-bar *:focus,
1484
+ .search-bar *:focus-visible {
1485
+ outline: none !important;
1486
+ }
1487
+
1488
+ .search-icon {
1489
+ flex-shrink: 0;
1490
+ color: var(--vscode-foreground);
1491
+ opacity: 0.5;
1492
+ }
1493
+
1494
+ .search-input {
1495
+ width: 200px;
1496
+ border: none;
1497
+ background: transparent;
1498
+ color: var(--vscode-foreground);
1499
+ font-size: 14px;
1500
+ font-family: var(--vscode-font-family);
1501
+ outline: none !important;
1502
+ }
1503
+
1504
+ .search-input:focus,
1505
+ .search-input:focus-visible {
1506
+ outline: none !important;
1507
+ box-shadow: none;
1508
+ }
1509
+
1510
+ .search-input::placeholder {
1511
+ color: var(--vscode-foreground);
1512
+ opacity: 0.5;
1513
+ }
1514
+
1515
+ .search-count {
1516
+ flex-shrink: 0;
1517
+ font-size: 12px;
1518
+ color: var(--vscode-foreground);
1519
+ opacity: 0.7;
1520
+ white-space: nowrap;
1521
+ }
1522
+
1523
+ .search-buttons {
1524
+ display: flex;
1525
+ align-items: center;
1526
+ gap: 2px;
1527
+ }
1528
+
1529
+ .search-nav-button,
1530
+ .search-close-button {
1531
+ display: flex;
1532
+ align-items: center;
1533
+ justify-content: center;
1534
+ width: 28px;
1535
+ height: 28px;
1536
+ border: none;
1537
+ background: transparent;
1538
+ border-radius: 4px;
1539
+ cursor: pointer;
1540
+ color: var(--vscode-foreground);
1541
+ transition: background 0.15s;
1542
+ }
1543
+
1544
+ .search-nav-button:hover:not(:disabled),
1545
+ .search-close-button:hover {
1546
+ background: var(--vscode-code-bg);
1547
+ }
1548
+
1549
+ .search-nav-button:disabled {
1550
+ opacity: 0.3;
1551
+ cursor: not-allowed;
1552
+ }
1553
+
1554
+ .search-close-button:hover {
1555
+ color: var(--vscode-errorForeground, #f44336);
1556
+ }
1557
+
1558
+ /* Search Highlight Layer */
1559
+ .search-highlight-layer {
1560
+ position: absolute;
1561
+ top: 0;
1562
+ left: 0;
1563
+ pointer-events: none;
1564
+ z-index: 1;
1565
+ }
1566
+
1567
+ .search-highlight {
1568
+ position: absolute;
1569
+ background: rgba(255, 213, 0, 0.4);
1570
+ border-radius: 2px;
1571
+ mix-blend-mode: multiply;
1572
+ }
1573
+
1574
+ /* Dark theme adjustment */
1575
+ @media (prefers-color-scheme: dark) {
1576
+ .search-highlight {
1577
+ background: rgba(255, 213, 0, 0.3);
1578
+ mix-blend-mode: screen;
1579
+ }
1580
+ }
1581
+
1582
+ .search-highlight.current {
1583
+ background: rgba(255, 153, 0, 0.6);
1584
+ outline: 2px solid rgba(255, 153, 0, 0.8);
1585
+ }
1586
+
1587
+ /* ===== Equation / Math Styles ===== */
1588
+
1589
+ .editor-equation {
1590
+ cursor: pointer;
1591
+ user-select: none;
1592
+ }
1593
+
1594
+ .equation-renderer {
1595
+ display: inline;
1596
+ }
1597
+
1598
+ .equation-renderer.block {
1599
+ display: block;
1600
+ text-align: center;
1601
+ margin: 1em 0;
1602
+ }
1603
+
1604
+ .equation-renderer.inline {
1605
+ display: inline;
1606
+ }
1607
+
1608
+ /* MathJax SVG output: ensure inline math flows with text and block math centers */
1609
+ .equation-renderer mjx-container {
1610
+ display: inline !important;
1611
+ }
1612
+
1613
+ .equation-renderer.block mjx-container {
1614
+ display: block !important;
1615
+ }
1616
+
1617
+ .equation-renderer mjx-container svg {
1618
+ display: inline;
1619
+ }
1620
+
1621
+ /* Equation Editor Styles */
1622
+ .equation-editor-background {
1623
+ background-color: var(--vscode-code-bg);
1624
+ padding: 4px 8px;
1625
+ border-radius: 4px;
1626
+ display: inline-flex;
1627
+ align-items: center;
1628
+ gap: 4px;
1629
+ }
1630
+
1631
+ .equation-dollar-sign {
1632
+ color: var(--vscode-foreground);
1633
+ opacity: 0.5;
1634
+ font-family: monospace;
1635
+ white-space: pre;
1636
+ }
1637
+
1638
+ .equation-inline-editor {
1639
+ padding: 0;
1640
+ margin: 0;
1641
+ border: 0;
1642
+ outline: 0;
1643
+ color: #8421a2;
1644
+ background-color: inherit;
1645
+ font-family: monospace;
1646
+ font-size: inherit;
1647
+ min-width: 50px;
1648
+ }
1649
+
1650
+ .equation-block-editor {
1651
+ padding: 0;
1652
+ margin: 0;
1653
+ border: 0;
1654
+ outline: 0;
1655
+ color: #8421a2;
1656
+ background-color: inherit;
1657
+ font-family: monospace;
1658
+ font-size: inherit;
1659
+ resize: vertical;
1660
+ width: 100%;
1661
+ min-height: 60px;
1662
+ }
1663
+
1664
+ /* KaTeX styling adjustments */
1665
+ .katex {
1666
+ font-size: 1.1em;
1667
+ }
1668
+
1669
+ .katex-display {
1670
+ margin: 0.5em 0;
1671
+ }
1672
+
1673
+ .katex-error {
1674
+ color: #cc0000;
1675
+ font-size: 0.9em;
1676
+ }
1677
+
1678
+ /* ===== Mermaid Diagram Styles ===== */
1679
+
1680
+ .editor-mermaid {
1681
+ margin: 1em 0;
1682
+ }
1683
+
1684
+ .mermaid-renderer {
1685
+ border-radius: 8px;
1686
+ transition: box-shadow 0.2s ease;
1687
+ }
1688
+
1689
+ .mermaid-renderer:hover {
1690
+ box-shadow: none;
1691
+ }
1692
+
1693
+ .mermaid-loading {
1694
+ padding: 2rem;
1695
+ text-align: center;
1696
+ color: var(--vscode-foreground);
1697
+ opacity: 0.7;
1698
+ }
1699
+
1700
+ /* Mermaid Editor Styles */
1701
+ .mermaid-editor-container {
1702
+ background: var(--vscode-code-bg);
1703
+ border-radius: 8px;
1704
+ overflow: hidden;
1705
+ margin: 1em 0;
1706
+ }
1707
+
1708
+ .mermaid-editor-header,
1709
+ .mermaid-editor-footer {
1710
+ display: flex;
1711
+ align-items: center;
1712
+ justify-content: space-between;
1713
+ padding: 8px 12px;
1714
+ background: rgba(0, 0, 0, 0.2);
1715
+ }
1716
+
1717
+ .mermaid-editor-label {
1718
+ font-family: monospace;
1719
+ font-size: 12px;
1720
+ color: var(--vscode-foreground);
1721
+ opacity: 0.7;
1722
+ }
1723
+
1724
+ .mermaid-editor-close {
1725
+ background: transparent;
1726
+ border: none;
1727
+ color: var(--vscode-foreground);
1728
+ cursor: pointer;
1729
+ padding: 4px 8px;
1730
+ border-radius: 4px;
1731
+ font-size: 14px;
1732
+ opacity: 0.7;
1733
+ transition: opacity 0.15s, background 0.15s;
1734
+ }
1735
+
1736
+ .mermaid-editor-close:hover {
1737
+ opacity: 1;
1738
+ background: rgba(255, 255, 255, 0.1);
1739
+ }
1740
+
1741
+ .mermaid-editor-textarea {
1742
+ width: 100%;
1743
+ min-height: 150px;
1744
+ padding: 12px;
1745
+ border: none;
1746
+ background: transparent;
1747
+ color: var(--vscode-foreground);
1748
+ font-family: monospace;
1749
+ font-size: 14px;
1750
+ line-height: 1.5;
1751
+ resize: vertical;
1752
+ outline: none;
1753
+ }
1754
+
1755
+ .mermaid-editor-textarea::placeholder {
1756
+ color: var(--vscode-foreground);
1757
+ opacity: 0.5;
1758
+ }
1759
+
1760
+ /* ===== C4 Architecture Diagram Styles ===== */
1761
+
1762
+ .editor-c4 {
1763
+ margin: 1em 0;
1764
+ }
1765
+
1766
+ .c4-renderer {
1767
+ border-radius: 8px;
1768
+ transition: box-shadow 0.2s ease;
1769
+ }
1770
+
1771
+ .c4-renderer svg {
1772
+ max-width: 100%;
1773
+ height: auto;
1774
+ }
1775
+
1776
+ .c4-renderer:hover {
1777
+ box-shadow: none;
1778
+ }
1779
+
1780
+ .c4-loading {
1781
+ padding: 2rem;
1782
+ text-align: center;
1783
+ color: var(--vscode-foreground);
1784
+ opacity: 0.7;
1785
+ }
1786
+
1787
+ /* C4 Editor Styles */
1788
+ .c4-editor-container {
1789
+ background: var(--vscode-code-bg);
1790
+ border-radius: 8px;
1791
+ overflow: hidden;
1792
+ margin: 1em 0;
1793
+ }
1794
+
1795
+ .c4-editor-header,
1796
+ .c4-editor-footer {
1797
+ display: flex;
1798
+ align-items: center;
1799
+ justify-content: space-between;
1800
+ padding: 8px 12px;
1801
+ background: rgba(0, 0, 0, 0.2);
1802
+ }
1803
+
1804
+ .c4-editor-label {
1805
+ font-family: monospace;
1806
+ font-size: 12px;
1807
+ color: var(--vscode-foreground);
1808
+ opacity: 0.7;
1809
+ }
1810
+
1811
+ .c4-editor-close {
1812
+ background: transparent;
1813
+ border: none;
1814
+ color: var(--vscode-foreground);
1815
+ cursor: pointer;
1816
+ padding: 4px 8px;
1817
+ border-radius: 4px;
1818
+ font-size: 14px;
1819
+ opacity: 0.7;
1820
+ transition: opacity 0.15s, background 0.15s;
1821
+ }
1822
+
1823
+ .c4-editor-close:hover {
1824
+ opacity: 1;
1825
+ background: rgba(255, 255, 255, 0.1);
1826
+ }
1827
+
1828
+ .c4-editor-textarea {
1829
+ width: 100%;
1830
+ min-height: 150px;
1831
+ padding: 12px;
1832
+ border: none;
1833
+ background: transparent;
1834
+ color: var(--vscode-foreground);
1835
+ font-family: monospace;
1836
+ font-size: 14px;
1837
+ line-height: 1.5;
1838
+ resize: vertical;
1839
+ outline: none;
1840
+ }
1841
+
1842
+ .c4-editor-textarea::placeholder {
1843
+ color: var(--vscode-foreground);
1844
+ opacity: 0.5;
1845
+ }
1846
+
1847
+ /* ===== Frontmatter Styles ===== */
1848
+
1849
+ /* Hide frontmatter in the editor - it's displayed in a separate tray overlay */
1850
+ .frontmatter-code {
1851
+ display: none;
1852
+ }
1853
+
1854
+ /* Frontmatter toggle button */
1855
+ .frontmatter-toggle-button {
1856
+ position: absolute;
1857
+ top: 8px;
1858
+ right: 8px;
1859
+ z-index: 10;
1860
+ display: flex;
1861
+ align-items: center;
1862
+ justify-content: center;
1863
+ width: 32px;
1864
+ height: 32px;
1865
+ padding: 0;
1866
+ border: 1px solid var(--vscode-border);
1867
+ border-radius: 6px;
1868
+ background: var(--vscode-background);
1869
+ color: var(--vscode-foreground);
1870
+ cursor: pointer;
1871
+ opacity: 0.7;
1872
+ transition: opacity 0.15s, background-color 0.15s, border-color 0.15s;
1873
+ }
1874
+
1875
+ .frontmatter-toggle-button:hover {
1876
+ opacity: 1;
1877
+ background: var(--vscode-code-bg);
1878
+ }
1879
+
1880
+ .frontmatter-toggle-button.frontmatter-toggle-active {
1881
+ opacity: 1;
1882
+ background: var(--vscode-link);
1883
+ border-color: var(--vscode-link);
1884
+ color: #ffffff;
1885
+ }
1886
+
1887
+ /* Frontmatter tray overlay */
1888
+ .frontmatter-tray {
1889
+ position: absolute;
1890
+ top: 0;
1891
+ left: 0;
1892
+ right: 0;
1893
+ z-index: 5;
1894
+ background: var(--vscode-background);
1895
+ border-bottom: 1px solid var(--vscode-border);
1896
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1897
+ transform: translateY(-100%);
1898
+ opacity: 0;
1899
+ transition: transform 0.2s ease-out, opacity 0.2s ease-out;
1900
+ pointer-events: none;
1901
+ }
1902
+
1903
+ .dark .frontmatter-tray {
1904
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
1905
+ }
1906
+
1907
+ .frontmatter-tray.frontmatter-tray-open {
1908
+ transform: translateY(0);
1909
+ opacity: 1;
1910
+ pointer-events: auto;
1911
+ }
1912
+
1913
+ .frontmatter-tray-header {
1914
+ display: flex;
1915
+ align-items: center;
1916
+ justify-content: space-between;
1917
+ padding: 8px 12px;
1918
+ border-bottom: 1px solid var(--vscode-border);
1919
+ background: var(--vscode-code-bg);
1920
+ }
1921
+
1922
+ .frontmatter-tray-title {
1923
+ font-size: 12px;
1924
+ font-weight: 600;
1925
+ color: var(--vscode-foreground);
1926
+ text-transform: uppercase;
1927
+ letter-spacing: 0.5px;
1928
+ }
1929
+
1930
+ .frontmatter-tray-close {
1931
+ display: flex;
1932
+ align-items: center;
1933
+ justify-content: center;
1934
+ width: 24px;
1935
+ height: 24px;
1936
+ padding: 0;
1937
+ border: none;
1938
+ border-radius: 4px;
1939
+ background: transparent;
1940
+ color: var(--vscode-foreground);
1941
+ cursor: pointer;
1942
+ opacity: 0.7;
1943
+ transition: opacity 0.15s, background-color 0.15s;
1944
+ }
1945
+
1946
+ .frontmatter-tray-close:hover {
1947
+ opacity: 1;
1948
+ background: var(--vscode-border);
1949
+ }
1950
+
1951
+ .frontmatter-tray-content {
1952
+ padding: 12px;
1953
+ }
1954
+
1955
+ .frontmatter-tray-textarea {
1956
+ width: 100%;
1957
+ min-height: 80px;
1958
+ max-height: 300px;
1959
+ padding: 12px;
1960
+ border: 1px solid var(--vscode-border);
1961
+ border-radius: 4px;
1962
+ background: var(--vscode-code-bg);
1963
+ color: var(--vscode-foreground);
1964
+ font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
1965
+ font-size: 13px;
1966
+ line-height: 1.5;
1967
+ resize: none;
1968
+ overflow-y: auto;
1969
+ }
1970
+
1971
+ .frontmatter-tray-textarea:focus {
1972
+ outline: none;
1973
+ border-color: var(--vscode-link);
1974
+ }
1975
+
1976
+ .frontmatter-tray-textarea::placeholder {
1977
+ color: var(--vscode-foreground);
1978
+ opacity: 0.5;
1979
+ }
1980
+
1981
+ /* Header actions container */
1982
+ .frontmatter-tray-actions {
1983
+ display: flex;
1984
+ align-items: center;
1985
+ gap: 8px;
1986
+ }
1987
+
1988
+ .frontmatter-tray-toggle-raw {
1989
+ padding: 4px 8px;
1990
+ border: 1px solid var(--vscode-border);
1991
+ border-radius: 4px;
1992
+ background: transparent;
1993
+ color: var(--vscode-foreground);
1994
+ font-size: 11px;
1995
+ font-weight: 500;
1996
+ cursor: pointer;
1997
+ transition: background-color 0.15s, border-color 0.15s;
1998
+ }
1999
+
2000
+ .frontmatter-tray-toggle-raw:hover {
2001
+ background: var(--vscode-border);
2002
+ border-color: var(--vscode-foreground-muted, var(--vscode-border));
2003
+ }
2004
+
2005
+ /* MDC Form Styles */
2006
+ .mdc-form {
2007
+ display: flex;
2008
+ flex-direction: column;
2009
+ gap: 16px;
2010
+ }
2011
+
2012
+ .mdc-form-field {
2013
+ display: flex;
2014
+ flex-direction: column;
2015
+ gap: 6px;
2016
+ }
2017
+
2018
+ .mdc-form-label {
2019
+ display: flex;
2020
+ align-items: center;
2021
+ gap: 6px;
2022
+ font-size: 12px;
2023
+ font-weight: 600;
2024
+ color: var(--vscode-foreground);
2025
+ text-transform: uppercase;
2026
+ letter-spacing: 0.3px;
2027
+ }
2028
+
2029
+ .mdc-form-label-cursor {
2030
+ font-weight: 400;
2031
+ text-transform: none;
2032
+ opacity: 0.6;
2033
+ font-size: 11px;
2034
+ }
2035
+
2036
+ .mdc-form-required {
2037
+ color: #e53e3e;
2038
+ font-weight: 700;
2039
+ }
2040
+
2041
+ .mdc-form-input {
2042
+ padding: 8px 12px;
2043
+ border: 1px solid var(--vscode-border);
2044
+ border-radius: 4px;
2045
+ background: var(--vscode-code-bg);
2046
+ color: var(--vscode-foreground);
2047
+ font-size: 14px;
2048
+ line-height: 1.4;
2049
+ }
2050
+
2051
+ .mdc-form-input:focus {
2052
+ outline: none;
2053
+ border-color: var(--vscode-link);
2054
+ }
2055
+
2056
+ .mdc-form-input::placeholder {
2057
+ color: var(--vscode-foreground);
2058
+ opacity: 0.5;
2059
+ }
2060
+
2061
+ .mdc-form-select {
2062
+ padding: 8px 12px;
2063
+ border: 1px solid var(--vscode-border);
2064
+ border-radius: 4px;
2065
+ background: var(--vscode-code-bg);
2066
+ color: var(--vscode-foreground);
2067
+ font-size: 14px;
2068
+ cursor: pointer;
2069
+ }
2070
+
2071
+ .mdc-form-select:focus {
2072
+ outline: none;
2073
+ border-color: var(--vscode-link);
2074
+ }
2075
+
2076
+ .mdc-form-hint {
2077
+ font-size: 11px;
2078
+ color: var(--vscode-foreground);
2079
+ opacity: 0.7;
2080
+ line-height: 1.4;
2081
+ }
2082
+
2083
+ .mdc-form-hint-info {
2084
+ padding: 6px 10px;
2085
+ background: rgba(6, 150, 215, 0.08);
2086
+ border-radius: 4px;
2087
+ opacity: 1;
2088
+ color: var(--vscode-link);
2089
+ }
2090
+
2091
+ .dark .mdc-form-hint-info {
2092
+ background: rgba(61, 185, 235, 0.1);
2093
+ }
2094
+
2095
+ .mdc-form-hint-warn {
2096
+ padding: 6px 10px;
2097
+ background: rgba(234, 179, 8, 0.12);
2098
+ border-radius: 4px;
2099
+ opacity: 1;
2100
+ color: #b45309;
2101
+ }
2102
+
2103
+ .dark .mdc-form-hint-warn {
2104
+ background: rgba(234, 179, 8, 0.15);
2105
+ color: #fbbf24;
2106
+ }
2107
+
2108
+ /* Globs list */
2109
+ .mdc-globs-list {
2110
+ display: flex;
2111
+ flex-direction: column;
2112
+ gap: 4px;
2113
+ margin-bottom: 8px;
2114
+ }
2115
+
2116
+ .mdc-glob-item {
2117
+ display: flex;
2118
+ align-items: center;
2119
+ justify-content: space-between;
2120
+ padding: 6px 10px;
2121
+ background: var(--vscode-code-bg);
2122
+ border: 1px solid var(--vscode-border);
2123
+ border-radius: 4px;
2124
+ }
2125
+
2126
+ .mdc-glob-pattern {
2127
+ font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
2128
+ font-size: 13px;
2129
+ color: var(--vscode-link);
2130
+ }
2131
+
2132
+ .mdc-glob-remove {
2133
+ display: flex;
2134
+ align-items: center;
2135
+ justify-content: center;
2136
+ width: 20px;
2137
+ height: 20px;
2138
+ padding: 0;
2139
+ border: none;
2140
+ border-radius: 4px;
2141
+ background: transparent;
2142
+ color: var(--vscode-foreground);
2143
+ cursor: pointer;
2144
+ opacity: 0.5;
2145
+ transition: opacity 0.15s, background-color 0.15s;
2146
+ }
2147
+
2148
+ .mdc-glob-remove:hover {
2149
+ opacity: 1;
2150
+ background: rgba(255, 0, 0, 0.1);
2151
+ color: #e53e3e;
2152
+ }
2153
+
2154
+ .mdc-glob-add {
2155
+ display: flex;
2156
+ gap: 8px;
2157
+ }
2158
+
2159
+ .mdc-glob-add .mdc-form-input {
2160
+ flex: 1;
2161
+ }
2162
+
2163
+ .mdc-glob-add-btn {
2164
+ padding: 8px 16px;
2165
+ border: 1px solid var(--vscode-link);
2166
+ border-radius: 4px;
2167
+ background: transparent;
2168
+ color: var(--vscode-link);
2169
+ font-size: 13px;
2170
+ font-weight: 500;
2171
+ cursor: pointer;
2172
+ transition: background-color 0.15s, color 0.15s;
2173
+ }
2174
+
2175
+ .mdc-glob-add-btn:hover:not(:disabled) {
2176
+ background: var(--vscode-link);
2177
+ color: #ffffff;
2178
+ }
2179
+
2180
+ .mdc-glob-add-btn:disabled {
2181
+ opacity: 0.5;
2182
+ cursor: not-allowed;
2183
+ }
2184
+
2185
+ /* Other YAML preview */
2186
+ .mdc-other-yaml {
2187
+ margin: 0;
2188
+ padding: 10px 12px;
2189
+ background: var(--vscode-code-bg);
2190
+ border: 1px solid var(--vscode-border);
2191
+ border-radius: 4px;
2192
+ font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
2193
+ font-size: 12px;
2194
+ line-height: 1.5;
2195
+ color: var(--vscode-foreground);
2196
+ opacity: 0.8;
2197
+ white-space: pre-wrap;
2198
+ overflow-x: auto;
2199
+ }
2200
+
2201
+ /* ============================================================
2202
+ Annotation markers (ADR-077)
2203
+ ============================================================
2204
+ Default styling for the live `MarkNode` elements `AnnotationMarkerPlugin`
2205
+ decorates. The class names are derived from a kind's `markerStyle`
2206
+ (`annotation-mark-highlight` / `annotation-mark-squiggle`; `none` places no
2207
+ mark at all), plus `-active` for the host's current selection and `-pulse`
2208
+ for the scroll-to arrival flash.
2209
+
2210
+ These ship with the package because the annotation mechanism is a
2211
+ package-shipped capability, not an extension point — a host that enables the
2212
+ `comment` kind should get a visible, working marker without first having to
2213
+ discover and reimplement these exact class names (review finding,
2214
+ @handarbeit-pruefer). A host that wants a different look overrides these
2215
+ rules, or supplies its own class per annotation via
2216
+ `presentation.className`, which is applied alongside the kind's style.
2217
+
2218
+ Liminis itself renders none of this: its only kind is `correction`, which is
2219
+ `markerStyle: 'none'` (FR-006).
2220
+ */
2221
+
2222
+ /* The UA default for <mark> is a solid yellow background. Neutralize it so a
2223
+ marker looks like whatever its kind asks for, not like a highlighter pen
2224
+ with a squiggle added on top. */
2225
+ .annotation-mark-highlight,
2226
+ .annotation-mark-squiggle {
2227
+ color: inherit;
2228
+ cursor: pointer;
2229
+ border-radius: 2px;
2230
+ transition: background-color 120ms ease-out;
2231
+ }
2232
+
2233
+ .annotation-mark-highlight {
2234
+ background-color: oklch(0.85 0.13 95 / 0.45);
2235
+ }
2236
+
2237
+ .annotation-mark-squiggle {
2238
+ background-color: transparent;
2239
+ text-decoration: underline wavy oklch(0.60 0.19 25);
2240
+ text-decoration-skip-ink: none;
2241
+ text-underline-offset: 3px;
2242
+ }
2243
+
2244
+ /* Keyboard focus must be visible — the plugin makes these role="button" and
2245
+ focusable, so they are reachable by Tab. */
2246
+ .annotation-mark-highlight:focus-visible,
2247
+ .annotation-mark-squiggle:focus-visible {
2248
+ outline: 2px solid var(--vscode-link);
2249
+ outline-offset: 1px;
2250
+ }
2251
+
2252
+ /* The annotation the host currently has open. Strengthened rather than
2253
+ recolored, so an active marker still reads as the same kind. */
2254
+ .annotation-mark-active.annotation-mark-highlight {
2255
+ background-color: oklch(0.82 0.16 95 / 0.75);
2256
+ box-shadow: inset 0 -2px 0 oklch(0.65 0.17 60);
2257
+ }
2258
+
2259
+ .annotation-mark-active.annotation-mark-squiggle {
2260
+ background-color: oklch(0.70 0.19 25 / 0.16);
2261
+ text-decoration-thickness: 2px;
2262
+ }
2263
+
2264
+ /* Arrival flash for `scrollToAnnotation`. The plugin removes the class after
2265
+ 1400ms, so this must finish inside that window. */
2266
+ @keyframes annotation-mark-pulse {
2267
+ 0% {
2268
+ background-color: oklch(0.75 0.19 303 / 0.60);
2269
+ }
2270
+ 100% {
2271
+ background-color: transparent;
2272
+ }
2273
+ }
2274
+
2275
+ .annotation-mark-pulse {
2276
+ animation: annotation-mark-pulse 1200ms ease-out;
2277
+ }
2278
+
2279
+ .dark .annotation-mark-highlight {
2280
+ background-color: oklch(0.75 0.14 95 / 0.30);
2281
+ }
2282
+
2283
+ .dark .annotation-mark-active.annotation-mark-highlight {
2284
+ background-color: oklch(0.78 0.16 95 / 0.48);
2285
+ box-shadow: inset 0 -2px 0 oklch(0.72 0.17 60);
2286
+ }
2287
+
2288
+ .dark .annotation-mark-squiggle {
2289
+ text-decoration-color: oklch(0.70 0.18 25);
2290
+ }
2291
+
2292
+ .dark .annotation-mark-active.annotation-mark-squiggle {
2293
+ background-color: oklch(0.70 0.19 25 / 0.24);
2294
+ }
2295
+
2296
+ @media (prefers-reduced-motion: reduce) {
2297
+ .annotation-mark-highlight,
2298
+ .annotation-mark-squiggle {
2299
+ transition: none;
2300
+ }
2301
+
2302
+ .annotation-mark-pulse {
2303
+ animation: none;
2304
+ }
2305
+ }
2306
+
2307
+ /* ============================================================
2308
+ Print Styles for Editor Content
2309
+ ============================================================
2310
+ These styles are for native browser printing (Cmd/Ctrl+P).
2311
+ Note: The "Export to PDF" feature uses a separate hidden window
2312
+ with its own embedded styles (in src/main/index.ts), so changes
2313
+ here will NOT affect PDF exports - only native browser print.
2314
+ Ensures the editor content prints cleanly with proper formatting.
2315
+ */
2316
+ @media print {
2317
+ /* Reset editor colors for print */
2318
+ :root,
2319
+ .dark {
2320
+ --vscode-foreground: #000000;
2321
+ --vscode-background: #ffffff;
2322
+ --vscode-code-bg: #f5f5f5;
2323
+ --vscode-border: #cccccc;
2324
+ --checkbox-border: #666666;
2325
+ --vscode-link: #0066cc;
2326
+ --slashmd-heading-color: #000000;
2327
+ --slashmd-h1-color: #000000;
2328
+ --slashmd-h2-color: #000000;
2329
+ --slashmd-h3-color: #000000;
2330
+ --slashmd-h4-color: #000000;
2331
+ --slashmd-h5-color: #000000;
2332
+ }
2333
+
2334
+ body {
2335
+ background: white !important;
2336
+ color: black !important;
2337
+ }
2338
+
2339
+ /* Editor input - show all content, remove scroll */
2340
+ .editor-input {
2341
+ min-height: auto !important;
2342
+ height: auto !important;
2343
+ overflow: visible !important;
2344
+ padding: 0 !important;
2345
+ }
2346
+
2347
+ /* Hide interactive elements */
2348
+ .drag-handle,
2349
+ .block-delete-button,
2350
+ .toolbar,
2351
+ .slash-menu,
2352
+ .search-bar,
2353
+ .code-block-toolbar,
2354
+ .frontmatter-tray,
2355
+ .frontmatter-toggle-button,
2356
+ .image-modal-overlay,
2357
+ .table-actions-menu,
2358
+ .code-language-menu {
2359
+ display: none !important;
2360
+ }
2361
+
2362
+ /* Ensure code blocks print with background */
2363
+ .editor-code {
2364
+ background: #f5f5f5 !important;
2365
+ color: #333333 !important;
2366
+ border: 1px solid #ddd !important;
2367
+ white-space: pre-wrap !important;
2368
+ word-wrap: break-word !important;
2369
+ page-break-inside: avoid !important;
2370
+ }
2371
+
2372
+ /* Inline code */
2373
+ .editor-text-code {
2374
+ background: #f0f0f0 !important;
2375
+ color: #333333 !important;
2376
+ }
2377
+
2378
+ /* Links - readable in print */
2379
+ .editor-link {
2380
+ color: #0066cc !important;
2381
+ text-decoration: underline !important;
2382
+ }
2383
+
2384
+ /* Tables */
2385
+ .editor-table {
2386
+ page-break-inside: auto !important;
2387
+ }
2388
+
2389
+ .editor-table-row {
2390
+ page-break-inside: avoid !important;
2391
+ }
2392
+
2393
+ .editor-table-cell,
2394
+ .editor-table-cell-header {
2395
+ border: 1px solid #999 !important;
2396
+ background: white !important;
2397
+ }
2398
+
2399
+ .editor-table-cell-header {
2400
+ background: #f0f0f0 !important;
2401
+ }
2402
+
2403
+ /* Blockquotes */
2404
+ .editor-quote {
2405
+ border-left: 3px solid #999 !important;
2406
+ background: #fafafa !important;
2407
+ color: #333 !important;
2408
+ }
2409
+
2410
+ /* Callouts - ensure they print with visible borders */
2411
+ .callout {
2412
+ background: #fafafa !important;
2413
+ border-left: 4px solid #666 !important;
2414
+ page-break-inside: avoid !important;
2415
+ }
2416
+
2417
+ .callout-note { border-left-color: #0696d7 !important; }
2418
+ .callout-tip { border-left-color: #10b981 !important; }
2419
+ .callout-warning { border-left-color: #eab308 !important; }
2420
+ .callout-important { border-left-color: #8b5cf6 !important; }
2421
+ .callout-caution { border-left-color: #ef4444 !important; }
2422
+
2423
+ /* Checkboxes - ensure visibility */
2424
+ .editor-listitem-checked::before,
2425
+ .editor-listitem-unchecked::before,
2426
+ .editor-listitem-ordered-checked::before,
2427
+ .editor-listitem-ordered-unchecked::before {
2428
+ border-color: #666 !important;
2429
+ }
2430
+
2431
+ .editor-listitem-checked::before,
2432
+ .editor-listitem-ordered-checked::before {
2433
+ background: #333 !important;
2434
+ border-color: #333 !important;
2435
+ }
2436
+
2437
+ /* Toggles - expand and print content */
2438
+ .toggle-container {
2439
+ border: 1px solid #ccc !important;
2440
+ }
2441
+
2442
+ .toggle-content-area {
2443
+ display: block !important; /* Always show content in print */
2444
+ }
2445
+
2446
+ .toggle-title::before {
2447
+ transform: translateY(-50%) rotate(90deg) !important; /* Show as expanded */
2448
+ }
2449
+
2450
+ /* Images */
2451
+ .image-wrapper img,
2452
+ .image-block img {
2453
+ max-width: 100% !important;
2454
+ page-break-inside: avoid !important;
2455
+ }
2456
+
2457
+ /* Hide image resize handles */
2458
+ .image-resize-handle,
2459
+ .image-size-badge {
2460
+ display: none !important;
2461
+ }
2462
+
2463
+ /* Mermaid diagrams */
2464
+ .mermaid-renderer {
2465
+ page-break-inside: avoid !important;
2466
+ }
2467
+
2468
+ /* Dividers */
2469
+ .divider-block::before {
2470
+ background: #ccc !important;
2471
+ }
2472
+
2473
+ /* Math */
2474
+ .katex {
2475
+ color: black !important;
2476
+ }
2477
+ }