markstream-svelte 0.0.1-beta.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 (233) hide show
  1. package/README.md +77 -0
  2. package/dist/components/AdmonitionNode.svelte +8 -0
  3. package/dist/components/AdmonitionNode.svelte.d.ts +23 -0
  4. package/dist/components/AdmonitionNode.svelte.d.ts.map +1 -0
  5. package/dist/components/BlockquoteNode.svelte +10 -0
  6. package/dist/components/BlockquoteNode.svelte.d.ts +24 -0
  7. package/dist/components/BlockquoteNode.svelte.d.ts.map +1 -0
  8. package/dist/components/CheckboxNode.svelte +5 -0
  9. package/dist/components/CheckboxNode.svelte.d.ts +22 -0
  10. package/dist/components/CheckboxNode.svelte.d.ts.map +1 -0
  11. package/dist/components/CodeBlockNode.svelte +944 -0
  12. package/dist/components/CodeBlockNode.svelte.d.ts +43 -0
  13. package/dist/components/CodeBlockNode.svelte.d.ts.map +1 -0
  14. package/dist/components/D2BlockNode.svelte +272 -0
  15. package/dist/components/D2BlockNode.svelte.d.ts +33 -0
  16. package/dist/components/D2BlockNode.svelte.d.ts.map +1 -0
  17. package/dist/components/DefinitionListNode.svelte +8 -0
  18. package/dist/components/DefinitionListNode.svelte.d.ts +23 -0
  19. package/dist/components/DefinitionListNode.svelte.d.ts.map +1 -0
  20. package/dist/components/EmojiNode.svelte +7 -0
  21. package/dist/components/EmojiNode.svelte.d.ts +22 -0
  22. package/dist/components/EmojiNode.svelte.d.ts.map +1 -0
  23. package/dist/components/EmphasisNode.svelte +8 -0
  24. package/dist/components/EmphasisNode.svelte.d.ts +24 -0
  25. package/dist/components/EmphasisNode.svelte.d.ts.map +1 -0
  26. package/dist/components/FallbackComponent.svelte +8 -0
  27. package/dist/components/FallbackComponent.svelte.d.ts +23 -0
  28. package/dist/components/FallbackComponent.svelte.d.ts.map +1 -0
  29. package/dist/components/FootnoteAnchorNode.svelte +21 -0
  30. package/dist/components/FootnoteAnchorNode.svelte.d.ts +22 -0
  31. package/dist/components/FootnoteAnchorNode.svelte.d.ts.map +1 -0
  32. package/dist/components/FootnoteNode.svelte +19 -0
  33. package/dist/components/FootnoteNode.svelte.d.ts +24 -0
  34. package/dist/components/FootnoteNode.svelte.d.ts.map +1 -0
  35. package/dist/components/FootnoteReferenceNode.svelte +26 -0
  36. package/dist/components/FootnoteReferenceNode.svelte.d.ts +22 -0
  37. package/dist/components/FootnoteReferenceNode.svelte.d.ts.map +1 -0
  38. package/dist/components/HardBreakNode.svelte +1 -0
  39. package/dist/components/HardBreakNode.svelte.d.ts +27 -0
  40. package/dist/components/HardBreakNode.svelte.d.ts.map +1 -0
  41. package/dist/components/HeadingNode.svelte +15 -0
  42. package/dist/components/HeadingNode.svelte.d.ts +24 -0
  43. package/dist/components/HeadingNode.svelte.d.ts.map +1 -0
  44. package/dist/components/HighlightNode.svelte +8 -0
  45. package/dist/components/HighlightNode.svelte.d.ts +24 -0
  46. package/dist/components/HighlightNode.svelte.d.ts.map +1 -0
  47. package/dist/components/HtmlBlockNode.svelte +8 -0
  48. package/dist/components/HtmlBlockNode.svelte.d.ts +23 -0
  49. package/dist/components/HtmlBlockNode.svelte.d.ts.map +1 -0
  50. package/dist/components/HtmlInlineNode.svelte +8 -0
  51. package/dist/components/HtmlInlineNode.svelte.d.ts +23 -0
  52. package/dist/components/HtmlInlineNode.svelte.d.ts.map +1 -0
  53. package/dist/components/HtmlPreviewFrame.svelte +13 -0
  54. package/dist/components/HtmlPreviewFrame.svelte.d.ts +26 -0
  55. package/dist/components/HtmlPreviewFrame.svelte.d.ts.map +1 -0
  56. package/dist/components/ImageNode.svelte +86 -0
  57. package/dist/components/ImageNode.svelte.d.ts +25 -0
  58. package/dist/components/ImageNode.svelte.d.ts.map +1 -0
  59. package/dist/components/InfographicBlockNode.svelte +429 -0
  60. package/dist/components/InfographicBlockNode.svelte.d.ts +34 -0
  61. package/dist/components/InfographicBlockNode.svelte.d.ts.map +1 -0
  62. package/dist/components/InlineCodeNode.svelte +7 -0
  63. package/dist/components/InlineCodeNode.svelte.d.ts +22 -0
  64. package/dist/components/InlineCodeNode.svelte.d.ts.map +1 -0
  65. package/dist/components/InlineWrapNode.svelte +10 -0
  66. package/dist/components/InlineWrapNode.svelte.d.ts +25 -0
  67. package/dist/components/InlineWrapNode.svelte.d.ts.map +1 -0
  68. package/dist/components/InsertNode.svelte +8 -0
  69. package/dist/components/InsertNode.svelte.d.ts +24 -0
  70. package/dist/components/InsertNode.svelte.d.ts.map +1 -0
  71. package/dist/components/LinkNode.svelte +41 -0
  72. package/dist/components/LinkNode.svelte.d.ts +25 -0
  73. package/dist/components/LinkNode.svelte.d.ts.map +1 -0
  74. package/dist/components/ListItemNode.svelte +9 -0
  75. package/dist/components/ListItemNode.svelte.d.ts +24 -0
  76. package/dist/components/ListItemNode.svelte.d.ts.map +1 -0
  77. package/dist/components/ListNode.svelte +16 -0
  78. package/dist/components/ListNode.svelte.d.ts +24 -0
  79. package/dist/components/ListNode.svelte.d.ts.map +1 -0
  80. package/dist/components/MarkdownCodeBlockNode.svelte +7 -0
  81. package/dist/components/MarkdownCodeBlockNode.svelte.d.ts +23 -0
  82. package/dist/components/MarkdownCodeBlockNode.svelte.d.ts.map +1 -0
  83. package/dist/components/MathBlockNode.svelte +96 -0
  84. package/dist/components/MathBlockNode.svelte.d.ts +22 -0
  85. package/dist/components/MathBlockNode.svelte.d.ts.map +1 -0
  86. package/dist/components/MathInlineNode.svelte +103 -0
  87. package/dist/components/MathInlineNode.svelte.d.ts +22 -0
  88. package/dist/components/MathInlineNode.svelte.d.ts.map +1 -0
  89. package/dist/components/MermaidBlockNode.svelte +557 -0
  90. package/dist/components/MermaidBlockNode.svelte.d.ts +40 -0
  91. package/dist/components/MermaidBlockNode.svelte.d.ts.map +1 -0
  92. package/dist/components/NodeOutlet.svelte +192 -0
  93. package/dist/components/NodeOutlet.svelte.d.ts +24 -0
  94. package/dist/components/NodeOutlet.svelte.d.ts.map +1 -0
  95. package/dist/components/NodeRenderer.svelte +349 -0
  96. package/dist/components/NodeRenderer.svelte.d.ts +64 -0
  97. package/dist/components/NodeRenderer.svelte.d.ts.map +1 -0
  98. package/dist/components/ParagraphNode.svelte +21 -0
  99. package/dist/components/ParagraphNode.svelte.d.ts +24 -0
  100. package/dist/components/ParagraphNode.svelte.d.ts.map +1 -0
  101. package/dist/components/PreCodeNode.svelte +13 -0
  102. package/dist/components/PreCodeNode.svelte.d.ts +22 -0
  103. package/dist/components/PreCodeNode.svelte.d.ts.map +1 -0
  104. package/dist/components/ReferenceNode.svelte +8 -0
  105. package/dist/components/ReferenceNode.svelte.d.ts +23 -0
  106. package/dist/components/ReferenceNode.svelte.d.ts.map +1 -0
  107. package/dist/components/RenderChildren.svelte +12 -0
  108. package/dist/components/RenderChildren.svelte.d.ts +24 -0
  109. package/dist/components/RenderChildren.svelte.d.ts.map +1 -0
  110. package/dist/components/StrikethroughNode.svelte +8 -0
  111. package/dist/components/StrikethroughNode.svelte.d.ts +24 -0
  112. package/dist/components/StrikethroughNode.svelte.d.ts.map +1 -0
  113. package/dist/components/StrongNode.svelte +8 -0
  114. package/dist/components/StrongNode.svelte.d.ts +24 -0
  115. package/dist/components/StrongNode.svelte.d.ts.map +1 -0
  116. package/dist/components/SubscriptNode.svelte +8 -0
  117. package/dist/components/SubscriptNode.svelte.d.ts +24 -0
  118. package/dist/components/SubscriptNode.svelte.d.ts.map +1 -0
  119. package/dist/components/SuperscriptNode.svelte +8 -0
  120. package/dist/components/SuperscriptNode.svelte.d.ts +24 -0
  121. package/dist/components/SuperscriptNode.svelte.d.ts.map +1 -0
  122. package/dist/components/TableNode.svelte +8 -0
  123. package/dist/components/TableNode.svelte.d.ts +23 -0
  124. package/dist/components/TableNode.svelte.d.ts.map +1 -0
  125. package/dist/components/TextNode.svelte +37 -0
  126. package/dist/components/TextNode.svelte.d.ts +25 -0
  127. package/dist/components/TextNode.svelte.d.ts.map +1 -0
  128. package/dist/components/ThematicBreakNode.svelte +1 -0
  129. package/dist/components/ThematicBreakNode.svelte.d.ts +27 -0
  130. package/dist/components/ThematicBreakNode.svelte.d.ts.map +1 -0
  131. package/dist/components/Tooltip.svelte +4 -0
  132. package/dist/components/Tooltip.svelte.d.ts +21 -0
  133. package/dist/components/Tooltip.svelte.d.ts.map +1 -0
  134. package/dist/components/VmrContainerNode.svelte +8 -0
  135. package/dist/components/VmrContainerNode.svelte.d.ts +23 -0
  136. package/dist/components/VmrContainerNode.svelte.d.ts.map +1 -0
  137. package/dist/components/shared/diagram-height.d.ts +10 -0
  138. package/dist/components/shared/diagram-height.d.ts.map +1 -0
  139. package/dist/components/shared/diagram-height.js +52 -0
  140. package/dist/components/shared/node-helpers.d.ts +108 -0
  141. package/dist/components/shared/node-helpers.d.ts.map +1 -0
  142. package/dist/components/shared/node-helpers.js +220 -0
  143. package/dist/components/shared/node-outlet-helpers.d.ts +9 -0
  144. package/dist/components/shared/node-outlet-helpers.d.ts.map +1 -0
  145. package/dist/components/shared/node-outlet-helpers.js +92 -0
  146. package/dist/components/shared/render-window.d.ts +19 -0
  147. package/dist/components/shared/render-window.d.ts.map +1 -0
  148. package/dist/components/shared/render-window.js +63 -0
  149. package/dist/components/shared/renderNodeHtml.d.ts +4 -0
  150. package/dist/components/shared/renderNodeHtml.d.ts.map +1 -0
  151. package/dist/components/shared/renderNodeHtml.js +19 -0
  152. package/dist/components/shared/rich-block-helpers.d.ts +7 -0
  153. package/dist/components/shared/rich-block-helpers.d.ts.map +1 -0
  154. package/dist/components/shared/rich-block-helpers.js +76 -0
  155. package/dist/customComponents.d.ts +10 -0
  156. package/dist/customComponents.d.ts.map +1 -0
  157. package/dist/customComponents.js +66 -0
  158. package/dist/enhanceRenderedHtml.d.ts +21 -0
  159. package/dist/enhanceRenderedHtml.d.ts.map +1 -0
  160. package/dist/enhanceRenderedHtml.js +768 -0
  161. package/dist/hydrateCustomTagContent.d.ts +3 -0
  162. package/dist/hydrateCustomTagContent.d.ts.map +1 -0
  163. package/dist/hydrateCustomTagContent.js +130 -0
  164. package/dist/i18n/useSafeI18n.d.ts +5 -0
  165. package/dist/i18n/useSafeI18n.d.ts.map +1 -0
  166. package/dist/i18n/useSafeI18n.js +42 -0
  167. package/dist/index.css +2009 -0
  168. package/dist/index.d.ts +78 -0
  169. package/dist/index.d.ts.map +1 -0
  170. package/dist/index.js +66 -0
  171. package/dist/index.px.css +2009 -0
  172. package/dist/index.tailwind.css +2009 -0
  173. package/dist/optional/d2.d.ts +7 -0
  174. package/dist/optional/d2.d.ts.map +1 -0
  175. package/dist/optional/d2.js +67 -0
  176. package/dist/optional/infographic.d.ts +2 -0
  177. package/dist/optional/infographic.d.ts.map +1 -0
  178. package/dist/optional/infographic.js +29 -0
  179. package/dist/optional/katex.d.ts +7 -0
  180. package/dist/optional/katex.d.ts.map +1 -0
  181. package/dist/optional/katex.js +93 -0
  182. package/dist/optional/mermaid.d.ts +7 -0
  183. package/dist/optional/mermaid.d.ts.map +1 -0
  184. package/dist/optional/mermaid.js +171 -0
  185. package/dist/optional/monaco.d.ts +5 -0
  186. package/dist/optional/monaco.d.ts.map +1 -0
  187. package/dist/optional/monaco.js +70 -0
  188. package/dist/parseNestedMarkdownToNodes.d.ts +15 -0
  189. package/dist/parseNestedMarkdownToNodes.d.ts.map +1 -0
  190. package/dist/parseNestedMarkdownToNodes.js +66 -0
  191. package/dist/renderMarkdownHtml.d.ts +31 -0
  192. package/dist/renderMarkdownHtml.d.ts.map +1 -0
  193. package/dist/renderMarkdownHtml.js +465 -0
  194. package/dist/sanitizeHtmlContent.d.ts +3 -0
  195. package/dist/sanitizeHtmlContent.d.ts.map +1 -0
  196. package/dist/sanitizeHtmlContent.js +175 -0
  197. package/dist/sanitizeSvg.d.ts +3 -0
  198. package/dist/sanitizeSvg.d.ts.map +1 -0
  199. package/dist/sanitizeSvg.js +76 -0
  200. package/dist/tailwind-entry.d.ts +2 -0
  201. package/dist/tailwind-entry.d.ts.map +1 -0
  202. package/dist/tailwind-entry.js +1 -0
  203. package/dist/tooltip/singletonTooltip.d.ts +8 -0
  204. package/dist/tooltip/singletonTooltip.d.ts.map +1 -0
  205. package/dist/tooltip/singletonTooltip.js +124 -0
  206. package/dist/types/monaco.d.ts +66 -0
  207. package/dist/types/monaco.d.ts.map +1 -0
  208. package/dist/types/monaco.js +1 -0
  209. package/dist/utils/languageIcon.d.ts +8 -0
  210. package/dist/utils/languageIcon.d.ts.map +1 -0
  211. package/dist/utils/languageIcon.js +182 -0
  212. package/dist/utils/normalizeKaTeXRenderInput.d.ts +2 -0
  213. package/dist/utils/normalizeKaTeXRenderInput.d.ts.map +1 -0
  214. package/dist/utils/normalizeKaTeXRenderInput.js +7 -0
  215. package/dist/workers/katexCdnWorker.d.ts +21 -0
  216. package/dist/workers/katexCdnWorker.d.ts.map +1 -0
  217. package/dist/workers/katexCdnWorker.js +193 -0
  218. package/dist/workers/katexRenderer.worker.d.ts +2 -0
  219. package/dist/workers/katexRenderer.worker.d.ts.map +1 -0
  220. package/dist/workers/katexRenderer.worker.js +55 -0
  221. package/dist/workers/katexWorkerClient.d.ts +36 -0
  222. package/dist/workers/katexWorkerClient.d.ts.map +1 -0
  223. package/dist/workers/katexWorkerClient.js +270 -0
  224. package/dist/workers/mermaidCdnWorker.d.ts +16 -0
  225. package/dist/workers/mermaidCdnWorker.d.ts.map +1 -0
  226. package/dist/workers/mermaidCdnWorker.js +235 -0
  227. package/dist/workers/mermaidParser.worker.d.ts +2 -0
  228. package/dist/workers/mermaidParser.worker.d.ts.map +1 -0
  229. package/dist/workers/mermaidParser.worker.js +85 -0
  230. package/dist/workers/mermaidWorkerClient.d.ts +16 -0
  231. package/dist/workers/mermaidWorkerClient.d.ts.map +1 -0
  232. package/dist/workers/mermaidWorkerClient.js +170 -0
  233. package/package.json +95 -0
package/dist/index.css ADDED
@@ -0,0 +1,2009 @@
1
+ /*
2
+ * Keep button defaults minimal, but don't override Tailwind utilities.
3
+ * Use :where() to keep specificity low so `.markstream-svelte .<utility>` wins.
4
+ */
5
+ :where(.markstream-svelte) button {
6
+ appearance: none;
7
+ -webkit-appearance: none;
8
+ -moz-appearance: none;
9
+ background: transparent;
10
+ border: 0;
11
+ font: inherit;
12
+ color: inherit;
13
+ }
14
+
15
+ markstream-svelte {
16
+ display: block;
17
+ width: 100%;
18
+ }
19
+
20
+ /* Theme variables for renderer colors */
21
+ .markstream-svelte {
22
+ --border: 214.3 31.8% 91.4%;
23
+ --background: 0 0% 100%;
24
+ --foreground: 222.2 84% 4.9%;
25
+ --secondary: 210 40% 96%;
26
+ --muted: 210 40% 96%;
27
+ --muted-foreground: 215.4 16.3% 46.9%;
28
+ --ms-background: var(--background);
29
+ --ms-foreground: var(--foreground);
30
+ --ms-muted: var(--muted);
31
+ --ms-muted-foreground: var(--muted-foreground);
32
+ --ms-secondary: var(--secondary);
33
+ --ms-secondary-foreground: var(--foreground);
34
+ --ms-accent: 210 40% 91%;
35
+ --ms-accent-foreground: var(--foreground);
36
+ --ms-border: var(--border);
37
+ --ms-popover: var(--background);
38
+ --ms-popover-foreground: var(--foreground);
39
+ --code-fg: hsl(var(--ms-foreground));
40
+ --code-action-fg: hsl(var(--ms-muted-foreground));
41
+ --code-action-hover-bg: hsl(var(--ms-accent));
42
+ --code-action-hover-fg: hsl(var(--ms-accent-foreground));
43
+ --diagram-bg: hsl(var(--ms-muted));
44
+ --diagram-border: hsl(var(--ms-border));
45
+ --diagram-header-bg: hsl(var(--ms-muted));
46
+ --blockquote-border: hsl(var(--ms-muted-foreground) / 0.2);
47
+ --modal-overlay: hsl(0 0% 0% / 0.7);
48
+ --modal-bg: hsl(var(--ms-popover));
49
+ --modal-fg: hsl(var(--ms-popover-foreground));
50
+ --ms-text-label: 0.75rem;
51
+ --ms-action-btn-padding: 0.375rem;
52
+ --ms-action-btn-icon: 0.875rem;
53
+ --ms-inset-panel-x: 0.625rem;
54
+ --ms-inset-panel-y: 0.375rem;
55
+ --ms-inset-panel-body: 1rem;
56
+ --ms-gap-header-actions: 0.5rem;
57
+ --ms-flow-blockquote-y: 1.25em;
58
+ --ms-flow-blockquote-indent: 1.25em;
59
+ --ms-flow-diagram-y: 1.5em;
60
+ --ms-size-image-max-width: 24rem;
61
+ --ms-size-diagram-min-height: 360px;
62
+ --ms-duration-standard: 180ms;
63
+ --ms-duration-fast: 120ms;
64
+ --ms-duration-emphasis: 220ms;
65
+ --ms-ease-standard: cubic-bezier(0.2, 0, 0, 1);
66
+ --ms-shadow-subtle: 0 1px 3px 0 hsl(var(--ms-foreground) / 0.06);
67
+ --ms-shadow-modal: 0 10px 15px -3px hsl(var(--ms-foreground) / 0.1), 0 4px 6px -4px hsl(var(--ms-foreground) / 0.1);
68
+ color: hsl(var(--foreground));
69
+ font:
70
+ 400 16px/1.72 "IBM Plex Sans", "Segoe UI", sans-serif;
71
+ word-break: break-word;
72
+ position: relative;
73
+ contain: layout;
74
+ content-visibility: auto;
75
+ contain-intrinsic-size: 800px 600px;
76
+ }
77
+
78
+ .markstream-svelte.virtualized {
79
+ content-visibility: visible;
80
+ contain-intrinsic-size: auto;
81
+ }
82
+
83
+ .dark .markstream-svelte,
84
+ .markstream-svelte.dark {
85
+ --border: 217.2 32.6% 17.5%;
86
+ --background: 222.2 84% 4.9%;
87
+ --foreground: 210 40% 98%;
88
+ --secondary: 217.2 32.6% 17.5%;
89
+ --muted: 217.2 32.6% 17.5%;
90
+ --muted-foreground: 215 20.2% 65.1%;
91
+ --ms-accent: 217.2 32.6% 24%;
92
+ }
93
+
94
+ .markstream-svelte > :first-child {
95
+ margin-top: 0;
96
+ }
97
+
98
+ .markstream-svelte > :last-child {
99
+ margin-bottom: 0;
100
+ }
101
+
102
+ .markstream-svelte .node-slot,
103
+ .markstream-svelte .node-content {
104
+ width: 100%;
105
+ }
106
+
107
+ .markstream-svelte markstream-svelte-blockquote-node,
108
+ .markstream-svelte markstream-svelte-paragraph-node {
109
+ display: flow-root;
110
+ width: 100%;
111
+ }
112
+
113
+ .markstream-svelte markstream-svelte-nested-renderer,
114
+ .markstream-svelte markstream-svelte-node-outlet,
115
+ .markstream-svelte markstream-svelte-image-node {
116
+ display: contents;
117
+ }
118
+
119
+ .markstream-svelte .node-placeholder {
120
+ width: 100%;
121
+ min-height: 1rem;
122
+ margin: 0.25rem 0;
123
+ border-radius: 0.5rem;
124
+ background-image: linear-gradient(90deg, rgba(148, 163, 184, 0.18), rgba(148, 163, 184, 0.05), rgba(148, 163, 184, 0.18));
125
+ background-size: 200% 100%;
126
+ animation: node-placeholder-shimmer 1.1s ease-in-out infinite;
127
+ }
128
+
129
+ .markstream-svelte .node-spacer {
130
+ width: 100%;
131
+ }
132
+
133
+ .markstream-svelte .typewriter-node {
134
+ opacity: 0;
135
+ animation: typewriter-fade var(--typewriter-fade-duration, 900ms) var(--typewriter-fade-ease, ease-out) both;
136
+ will-change: opacity;
137
+ }
138
+
139
+ .markstream-svelte .markstream-svelte-text-node {
140
+ display: inline;
141
+ font-weight: inherit;
142
+ vertical-align: baseline;
143
+ white-space: pre-wrap;
144
+ overflow-wrap: break-word;
145
+ }
146
+
147
+ .markstream-svelte .markstream-svelte-text--centered {
148
+ display: inline-flex;
149
+ justify-content: center;
150
+ width: 100%;
151
+ }
152
+
153
+ .markstream-svelte .markstream-svelte-text__stream-delta {
154
+ animation-duration: var(--stream-update-fade-duration, var(--typewriter-fade-duration, 900ms));
155
+ animation-timing-function: var(--stream-update-fade-ease, var(--typewriter-fade-ease, ease-out));
156
+ animation-fill-mode: both;
157
+ will-change: opacity;
158
+ }
159
+
160
+ .markstream-svelte .markstream-svelte-text__stream-delta--a {
161
+ animation-name: markstream-svelte-text-stream-update-fade-a;
162
+ }
163
+
164
+ .markstream-svelte .markstream-svelte-text__stream-delta--b {
165
+ animation-name: markstream-svelte-text-stream-update-fade-b;
166
+ }
167
+
168
+ .markstream-svelte h1,
169
+ .markstream-svelte h2,
170
+ .markstream-svelte h3,
171
+ .markstream-svelte h4,
172
+ .markstream-svelte h5,
173
+ .markstream-svelte h6 {
174
+ margin: 1.8rem 0 0.8rem;
175
+ line-height: 1.15;
176
+ font-weight: 700;
177
+ letter-spacing: -0.02em;
178
+ }
179
+
180
+ .markstream-svelte h1 {
181
+ font-size: clamp(2rem, 4vw, 2.65rem);
182
+ }
183
+
184
+ .markstream-svelte h2 {
185
+ font-size: clamp(1.55rem, 3vw, 2rem);
186
+ }
187
+
188
+ .markstream-svelte h3 {
189
+ font-size: 1.35rem;
190
+ }
191
+
192
+ .markstream-svelte h4 {
193
+ font-size: 1.15rem;
194
+ }
195
+
196
+ .markstream-svelte p,
197
+ .markstream-svelte ul,
198
+ .markstream-svelte ol,
199
+ .markstream-svelte blockquote,
200
+ .markstream-svelte pre,
201
+ .markstream-svelte table,
202
+ .markstream-svelte details,
203
+ .markstream-svelte dl {
204
+ margin: 1rem 0;
205
+ }
206
+
207
+ .markstream-svelte ul,
208
+ .markstream-svelte ol {
209
+ padding-left: 1.45rem;
210
+ }
211
+
212
+ .markstream-svelte li + li {
213
+ margin-top: 0.35rem;
214
+ }
215
+
216
+ .markstream-svelte li > p {
217
+ margin: 0.35rem 0;
218
+ }
219
+
220
+ .markstream-svelte a {
221
+ color: #2563eb;
222
+ text-decoration: underline;
223
+ text-underline-offset: 0.18em;
224
+ }
225
+
226
+ .markstream-svelte .link-node {
227
+ color: var(--link-color, #0366d6);
228
+ text-decoration: none;
229
+ }
230
+
231
+ .markstream-svelte .link-node:hover {
232
+ text-decoration: underline;
233
+ text-underline-offset: .2rem;
234
+ }
235
+
236
+ .markstream-svelte .link-loading {
237
+ display: inline-flex;
238
+ align-items: baseline;
239
+ gap: 0.375rem;
240
+ color: var(--link-color, #0366d6);
241
+ }
242
+
243
+ .markstream-svelte .link-loading .link-text-wrapper {
244
+ position: relative;
245
+ display: inline-flex;
246
+ }
247
+
248
+ .markstream-svelte .link-loading .link-text {
249
+ position: relative;
250
+ z-index: 2;
251
+ }
252
+
253
+ .markstream-svelte .link-loading-indicator {
254
+ position: absolute;
255
+ left: 0;
256
+ right: 0;
257
+ height: var(--underline-height, 2px);
258
+ bottom: var(--underline-bottom, -3px);
259
+ background: currentColor;
260
+ border-radius: 999px;
261
+ will-change: opacity;
262
+ opacity: var(--underline-rest-opacity, 0.18);
263
+ animation: markstream-svelte-link-loading-pulse var(--underline-duration, 1.6s) var(--underline-timing, ease-in-out) var(--underline-iteration, infinite);
264
+ }
265
+
266
+ @keyframes markstream-svelte-link-loading-pulse {
267
+ 0%, 100% { opacity: var(--underline-rest-opacity, 0.18); }
268
+ 50% { opacity: var(--underline-opacity, 0.35); }
269
+ }
270
+
271
+ @keyframes markstream-svelte-text-stream-update-fade-a {
272
+ from { opacity: 0; }
273
+ to { opacity: 1; }
274
+ }
275
+
276
+ @keyframes markstream-svelte-text-stream-update-fade-b {
277
+ from { opacity: 0; }
278
+ to { opacity: 1; }
279
+ }
280
+
281
+ @media (prefers-reduced-motion: reduce) {
282
+ .markstream-svelte .link-loading-indicator {
283
+ animation: none !important;
284
+ opacity: var(--underline-rest-opacity, 0.18);
285
+ }
286
+
287
+ .markstream-svelte .markstream-svelte-text__stream-delta {
288
+ animation: none !important;
289
+ }
290
+ }
291
+
292
+ .markstream-svelte strong {
293
+ font-weight: 700;
294
+ }
295
+
296
+ .markstream-svelte em {
297
+ font-style: italic;
298
+ }
299
+
300
+ .markstream-svelte code {
301
+ padding: 0.12rem 0.35rem;
302
+ border-radius: 0.42rem;
303
+ background: rgba(15, 23, 42, 0.06);
304
+ font:
305
+ 500 0.92em/1.5 "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
306
+ }
307
+
308
+ .markstream-svelte pre {
309
+ overflow: auto;
310
+ padding: 1rem 1.1rem;
311
+ border-radius: 1rem;
312
+ background: #0f172a;
313
+ color: #e2e8f0;
314
+ box-shadow: inset 0 0 0 1px rgba(148, 163, 184, 0.14);
315
+ }
316
+
317
+ .markstream-svelte pre code {
318
+ padding: 0;
319
+ background: transparent;
320
+ color: inherit;
321
+ }
322
+
323
+ .markstream-svelte blockquote,
324
+ .markstream-svelte .blockquote-node {
325
+ display: flow-root;
326
+ font-weight: 400;
327
+ font-style: normal;
328
+ color: var(--blockquote-fg, hsl(var(--ms-muted-foreground)));
329
+ border-left: 3px solid var(--blockquote-border);
330
+ quotes: "\201C" "\201D" "\2018" "\2019";
331
+ margin-top: var(--ms-flow-blockquote-y);
332
+ margin-bottom: var(--ms-flow-blockquote-y);
333
+ padding-left: var(--ms-flow-blockquote-indent);
334
+ background: transparent;
335
+ border-radius: 0;
336
+ }
337
+
338
+ .markstream-svelte .blockquote-node .markstream-svelte,
339
+ .markstream-svelte blockquote .markstream-svelte {
340
+ content-visibility: visible;
341
+ contain: content;
342
+ contain-intrinsic-size: 0 0;
343
+ }
344
+
345
+ .markstream-svelte .blockquote-node > markstream-svelte-nested-renderer,
346
+ .markstream-svelte blockquote > markstream-svelte-nested-renderer,
347
+ .markstream-svelte .blockquote-node > markstream-svelte-node-outlet,
348
+ .markstream-svelte blockquote > markstream-svelte-node-outlet {
349
+ display: block;
350
+ width: 100%;
351
+ }
352
+
353
+ .markstream-svelte hr {
354
+ margin: 1.5rem 0;
355
+ border: 0;
356
+ border-top: 1px solid rgba(15, 23, 42, 0.12);
357
+ }
358
+
359
+ .markstream-svelte table {
360
+ width: 100%;
361
+ border-collapse: collapse;
362
+ overflow: hidden;
363
+ border-radius: 1rem;
364
+ box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.08);
365
+ }
366
+
367
+ .markstream-svelte th,
368
+ .markstream-svelte td {
369
+ padding: 0.7rem 0.8rem;
370
+ border: 1px solid rgba(15, 23, 42, 0.08);
371
+ text-align: left;
372
+ vertical-align: top;
373
+ white-space: normal;
374
+ overflow-wrap: break-word;
375
+ word-break: normal;
376
+ }
377
+
378
+ .markstream-svelte th {
379
+ position: relative;
380
+ background: rgba(15, 23, 42, 0.05);
381
+ font-weight: 700;
382
+ }
383
+
384
+ .markstream-svelte .table-node__resize-handle {
385
+ position: absolute;
386
+ top: 0;
387
+ right: -4px;
388
+ bottom: 0;
389
+ z-index: 1;
390
+ width: 8px;
391
+ padding: 0;
392
+ border: 0;
393
+ background: transparent;
394
+ cursor: col-resize;
395
+ touch-action: none;
396
+ }
397
+
398
+ .markstream-svelte .table-node__resize-handle::after {
399
+ content: '';
400
+ position: absolute;
401
+ top: 0.35em;
402
+ bottom: 0.35em;
403
+ left: 50%;
404
+ width: 2px;
405
+ border-radius: 9999px;
406
+ background: rgba(94, 104, 121, 0.55);
407
+ opacity: 0;
408
+ transform: translateX(-50%);
409
+ transition: opacity 0.12s ease;
410
+ }
411
+
412
+ .markstream-svelte .table-node__resize-handle:hover::after,
413
+ .markstream-svelte .table-node__resize-handle:focus-visible::after {
414
+ opacity: 1;
415
+ }
416
+
417
+ .markstream-svelte table .markstream-svelte-text-node,
418
+ .markstream-svelte table code {
419
+ white-space: inherit;
420
+ overflow-wrap: inherit;
421
+ word-break: inherit;
422
+ max-width: none;
423
+ }
424
+
425
+ .markstream-svelte img {
426
+ display: inline-block;
427
+ max-width: 100%;
428
+ height: auto;
429
+ border-radius: 0.9rem;
430
+ vertical-align: middle;
431
+ }
432
+
433
+ .markstream-svelte .image-node-container {
434
+ display: inline-block;
435
+ vertical-align: middle;
436
+ max-width: var(--ms-size-image-max-width);
437
+ }
438
+
439
+ .markstream-svelte .image-node__img {
440
+ display: inline-block;
441
+ width: auto;
442
+ max-width: 100%;
443
+ height: auto;
444
+ border-radius: 0.75rem;
445
+ vertical-align: middle;
446
+ transition: opacity var(--ms-duration-emphasis) var(--ms-ease-standard);
447
+ }
448
+
449
+ .markstream-svelte .image-node__img.is-loading {
450
+ opacity: 0;
451
+ }
452
+
453
+ .markstream-svelte .image-node__img.is-loaded {
454
+ opacity: 1;
455
+ }
456
+
457
+ .markstream-svelte .image-placeholder {
458
+ display: inline-flex;
459
+ align-items: center;
460
+ justify-content: center;
461
+ width: 100%;
462
+ min-height: 8rem;
463
+ max-width: var(--ms-size-image-max-width);
464
+ background: hsl(var(--ms-muted));
465
+ overflow: hidden;
466
+ vertical-align: middle;
467
+ }
468
+
469
+ .markstream-svelte .image-shimmer {
470
+ display: block;
471
+ width: 100%;
472
+ height: 100%;
473
+ min-height: 8rem;
474
+ background: linear-gradient(
475
+ 90deg,
476
+ hsl(var(--ms-muted)) 0%,
477
+ hsl(var(--ms-muted-foreground) / 0.06) 50%,
478
+ hsl(var(--ms-muted)) 100%
479
+ );
480
+ background-size: 200% 100%;
481
+ animation: markstream-svelte-image-shimmer 1.5s ease-in-out infinite;
482
+ }
483
+
484
+ .markstream-svelte .image-error {
485
+ display: inline-flex;
486
+ align-items: center;
487
+ justify-content: center;
488
+ gap: 0.5rem;
489
+ padding: 1rem 1.5rem;
490
+ min-height: 4rem;
491
+ max-width: var(--ms-size-image-max-width);
492
+ background: hsl(var(--ms-muted));
493
+ color: hsl(var(--ms-muted-foreground));
494
+ font-size: var(--ms-text-label);
495
+ vertical-align: middle;
496
+ }
497
+
498
+ .markstream-svelte .image-node__raw-text {
499
+ font-size: var(--ms-text-label);
500
+ color: hsl(var(--ms-muted-foreground));
501
+ }
502
+
503
+ @keyframes markstream-svelte-image-shimmer {
504
+ 0% { background-position: 100% 0; }
505
+ 100% { background-position: -100% 0; }
506
+ }
507
+
508
+ @media (prefers-reduced-motion: reduce) {
509
+ .markstream-svelte .image-shimmer {
510
+ animation: none !important;
511
+ }
512
+
513
+ .markstream-svelte .image-node__img {
514
+ transition: none !important;
515
+ }
516
+ }
517
+
518
+ .markstream-svelte details {
519
+ padding: 0.85rem 1rem;
520
+ border-radius: 0.9rem;
521
+ border: 1px solid rgba(15, 23, 42, 0.08);
522
+ background: rgba(15, 23, 42, 0.03);
523
+ }
524
+
525
+ .markstream-svelte summary {
526
+ cursor: pointer;
527
+ font-weight: 700;
528
+ }
529
+
530
+ .markstream-svelte dl {
531
+ display: grid;
532
+ gap: 0.45rem;
533
+ }
534
+
535
+ .markstream-svelte dt {
536
+ font-weight: 700;
537
+ }
538
+
539
+ .markstream-svelte dd {
540
+ margin: 0 0 0.45rem 1rem;
541
+ }
542
+
543
+ .markstream-svelte input[type='checkbox'] {
544
+ margin-right: 0.4rem;
545
+ }
546
+
547
+ .markstream-svelte mark {
548
+ padding: 0.08rem 0.24rem;
549
+ border-radius: 0.3rem;
550
+ background: rgba(250, 204, 21, 0.28);
551
+ }
552
+
553
+ .markstream-svelte ins {
554
+ text-decoration-thickness: 0.08em;
555
+ }
556
+
557
+ .markstream-svelte del {
558
+ text-decoration-thickness: 0.08em;
559
+ }
560
+
561
+ /* Prevent mermaid temporary render containers from causing layout shift */
562
+ body > div[id^="dmermaid-"] {
563
+ position: fixed;
564
+ top: -10000px;
565
+ left: 0;
566
+ width: 100%;
567
+ visibility: hidden;
568
+ pointer-events: none;
569
+ }
570
+
571
+ .markstream-svelte .markstream-nested-custom {
572
+ display: block;
573
+ margin: 1rem 0;
574
+ padding: 0.9rem 1rem;
575
+ border-radius: 0.9rem;
576
+ background: rgba(15, 23, 42, 0.04);
577
+ border: 1px solid rgba(15, 23, 42, 0.08);
578
+ }
579
+
580
+ .markstream-svelte .markstream-nested-custom--thinking {
581
+ background: linear-gradient(180deg, rgba(14, 165, 233, 0.08), rgba(255, 255, 255, 0.92));
582
+ border-color: rgba(14, 165, 233, 0.18);
583
+ }
584
+
585
+ .markstream-svelte .markstream-nested-admonition {
586
+ margin: 1rem 0;
587
+ padding: 1rem 1.1rem;
588
+ border-radius: 1rem;
589
+ border: 1px solid rgba(37, 99, 235, 0.14);
590
+ background: rgba(37, 99, 235, 0.05);
591
+ }
592
+
593
+ .markstream-svelte .markstream-nested-admonition__title {
594
+ margin-bottom: 0.55rem;
595
+ font-weight: 700;
596
+ }
597
+
598
+ .markstream-svelte .markstream-nested-admonition--warning {
599
+ border-color: rgba(245, 158, 11, 0.24);
600
+ background: rgba(245, 158, 11, 0.08);
601
+ }
602
+
603
+ .markstream-svelte .markstream-nested-admonition--error,
604
+ .markstream-svelte .markstream-nested-admonition--danger {
605
+ border-color: rgba(239, 68, 68, 0.22);
606
+ background: rgba(239, 68, 68, 0.07);
607
+ }
608
+
609
+ .markstream-svelte .markstream-nested-admonition--tip {
610
+ border-color: rgba(16, 185, 129, 0.2);
611
+ background: rgba(16, 185, 129, 0.07);
612
+ }
613
+
614
+ .markstream-svelte .markstream-nested-reference {
615
+ display: inline-flex;
616
+ align-items: center;
617
+ justify-content: center;
618
+ min-width: 1.35rem;
619
+ margin: 0 0.125rem;
620
+ padding: 0 0.375rem;
621
+ border-radius: 0.375rem;
622
+ background: hsl(var(--muted));
623
+ color: hsl(var(--muted-foreground));
624
+ font-size: 0.75rem;
625
+ line-height: 1.25rem;
626
+ vertical-align: baseline;
627
+ font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
628
+ }
629
+
630
+ .markstream-svelte .footnote-node {
631
+ display: flex;
632
+ margin-top: var(--ms-flow-footnote-y);
633
+ margin-bottom: var(--ms-flow-footnote-y);
634
+ padding-top: 0.5rem;
635
+ border-top: 1px solid var(--footnote-border);
636
+ font-size: 0.875rem;
637
+ line-height: 1.625;
638
+ }
639
+
640
+ .markstream-svelte .footnote-node__content {
641
+ flex: 1 1 auto;
642
+ min-width: 0;
643
+ }
644
+
645
+ .markstream-svelte .footnote-node .paragraph-node {
646
+ margin: 0;
647
+ }
648
+
649
+ .markstream-svelte .footnote-reference {
650
+ font-size: 0.75em;
651
+ line-height: 0;
652
+ vertical-align: super;
653
+ }
654
+
655
+ .markstream-svelte .footnote-link {
656
+ color: var(--link-color);
657
+ text-decoration: none;
658
+ cursor: pointer;
659
+ }
660
+
661
+ .markstream-svelte .footnote-link:hover {
662
+ text-decoration: underline;
663
+ }
664
+
665
+ .markstream-svelte .footnote-anchor {
666
+ margin-left: 0.35rem;
667
+ color: var(--link-color);
668
+ font-size: 0.875em;
669
+ text-decoration: none;
670
+ cursor: pointer;
671
+ }
672
+
673
+ .markstream-svelte .footnote-anchor:hover {
674
+ text-decoration: underline;
675
+ }
676
+
677
+ .markstream-svelte .math-inline-wrapper {
678
+ position: relative;
679
+ display: inline-block;
680
+ }
681
+
682
+ .markstream-svelte .math-inline {
683
+ display: inline-block;
684
+ vertical-align: middle;
685
+ }
686
+
687
+ .markstream-svelte .math-inline--hidden {
688
+ visibility: hidden;
689
+ }
690
+
691
+ .markstream-svelte .math-inline__loading {
692
+ display: inline-flex;
693
+ align-items: center;
694
+ justify-content: center;
695
+ pointer-events: none;
696
+ }
697
+
698
+ .markstream-svelte .math-inline__spinner {
699
+ width: 1rem;
700
+ height: 1rem;
701
+ border-radius: 9999px;
702
+ border: 2px solid rgba(94, 104, 121, 0.25);
703
+ border-top-color: rgba(94, 104, 121, 0.8);
704
+ animation: spin 1s linear infinite;
705
+ }
706
+
707
+ .markstream-svelte .math-block,
708
+ .markstream-svelte .markstream-nested-math-block {
709
+ position: relative;
710
+ text-align: center;
711
+ overflow-x: auto;
712
+ min-height: 40px;
713
+ padding: 0.5rem;
714
+ }
715
+
716
+ .markstream-svelte .math-rendering {
717
+ opacity: 0.3;
718
+ transition: opacity 0.2s ease;
719
+ }
720
+
721
+ .markstream-svelte .markstream-nested-math[data-markstream-katex="1"] .markstream-nested-math__source,
722
+ .markstream-svelte .markstream-nested-math-block--rendered > .markstream-nested-math-block__source {
723
+ display: none;
724
+ }
725
+
726
+ .markstream-svelte .markstream-nested-math-block__render .katex-display {
727
+ margin: 0;
728
+ overflow-x: auto;
729
+ overflow-y: hidden;
730
+ }
731
+
732
+ .markstream-svelte .markstream-svelte-mermaid {
733
+ background: transparent;
734
+ color: hsl(var(--ms-foreground));
735
+ }
736
+
737
+ .markstream-svelte.dark .markstream-svelte-mermaid,
738
+ .dark .markstream-svelte .markstream-svelte-mermaid {
739
+ background: transparent;
740
+ color: hsl(var(--ms-foreground));
741
+ }
742
+
743
+ .markstream-svelte .markstream-svelte-mermaid svg {
744
+ display: block;
745
+ max-width: 100%;
746
+ height: auto;
747
+ margin: 0 auto;
748
+ }
749
+
750
+ .markstream-svelte .mermaid-block {
751
+ margin: var(--ms-flow-diagram-y) 0;
752
+ border: 1px solid var(--diagram-border);
753
+ border-radius: 0.5rem;
754
+ overflow: hidden;
755
+ background: var(--diagram-bg);
756
+ color: hsl(var(--ms-foreground));
757
+ box-shadow: var(--ms-shadow-subtle);
758
+ }
759
+
760
+ .markstream-svelte.dark .mermaid-block,
761
+ .dark .markstream-svelte .mermaid-block {
762
+ border-color: var(--diagram-border);
763
+ background: var(--diagram-bg);
764
+ color: hsl(var(--ms-foreground));
765
+ }
766
+
767
+ .markstream-svelte.markstream-svelte-modal-root {
768
+ position: fixed;
769
+ inset: 0;
770
+ z-index: 9999;
771
+ width: auto;
772
+ contain: none;
773
+ content-visibility: visible;
774
+ pointer-events: none;
775
+ }
776
+
777
+ .markstream-svelte .mermaid-modal-overlay {
778
+ position: fixed;
779
+ inset: 0;
780
+ z-index: 9999;
781
+ display: flex;
782
+ align-items: center;
783
+ justify-content: center;
784
+ padding: 1rem;
785
+ background: var(--modal-overlay);
786
+ pointer-events: auto;
787
+ }
788
+
789
+ .markstream-svelte .mermaid-modal-panel {
790
+ position: relative;
791
+ width: 100%;
792
+ height: 100%;
793
+ max-width: 100%;
794
+ max-height: 100%;
795
+ border-radius: 0.5rem;
796
+ overflow: hidden;
797
+ background: var(--modal-bg);
798
+ color: var(--modal-fg);
799
+ box-shadow: var(--ms-shadow-modal);
800
+ }
801
+
802
+ .markstream-svelte .mermaid-modal-panel.is-dark {
803
+ background: var(--modal-bg);
804
+ color: var(--modal-fg);
805
+ }
806
+
807
+ .markstream-svelte .mermaid-modal-header {
808
+ display: flex;
809
+ align-items: center;
810
+ justify-content: space-between;
811
+ padding: 0.5rem 1rem;
812
+ border-bottom: 1px solid rgba(148, 163, 184, 0.25);
813
+ }
814
+
815
+ .markstream-svelte .mermaid-modal-title {
816
+ font-size: 0.875rem;
817
+ font-weight: 600;
818
+ }
819
+
820
+ .markstream-svelte .mermaid-modal-close {
821
+ font-size: 0.875rem;
822
+ padding: 0.25rem 0.5rem;
823
+ border-radius: 0.375rem;
824
+ cursor: pointer;
825
+ opacity: 0.9;
826
+ }
827
+
828
+ .markstream-svelte .mermaid-modal-close:hover {
829
+ opacity: 1;
830
+ background: rgba(148, 163, 184, 0.16);
831
+ }
832
+
833
+ .markstream-svelte .mermaid-modal-controls {
834
+ position: absolute;
835
+ top: 1.5rem;
836
+ right: 1.5rem;
837
+ z-index: 2;
838
+ display: inline-flex;
839
+ align-items: center;
840
+ gap: 0.5rem;
841
+ }
842
+
843
+ .markstream-svelte .mermaid-modal-body {
844
+ width: 100%;
845
+ height: 100%;
846
+ overflow: hidden;
847
+ }
848
+
849
+ .markstream-svelte .mermaid-modal-content {
850
+ width: 100%;
851
+ height: 100%;
852
+ display: flex;
853
+ align-items: center;
854
+ justify-content: center;
855
+ padding: 1rem;
856
+ transform-origin: center center;
857
+ overflow: hidden;
858
+ }
859
+
860
+ .markstream-svelte .mermaid-modal-content svg,
861
+ .markstream-svelte .infographic-modal-content svg {
862
+ max-width: 100%;
863
+ max-height: 100%;
864
+ height: auto;
865
+ }
866
+
867
+ .markstream-svelte .fullscreen {
868
+ width: 100%;
869
+ max-height: 100% !important;
870
+ height: 100% !important;
871
+ }
872
+
873
+ .markstream-svelte .mermaid-header {
874
+ display: grid;
875
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
876
+ align-items: center;
877
+ gap: 0.75rem;
878
+ padding: var(--ms-inset-panel-y) var(--ms-inset-panel-x);
879
+ border-bottom: 1px solid var(--diagram-border);
880
+ background: var(--diagram-header-bg);
881
+ color: hsl(var(--ms-foreground));
882
+ }
883
+
884
+ .markstream-svelte.dark .mermaid-header,
885
+ .dark .markstream-svelte .mermaid-header {
886
+ background: var(--diagram-header-bg);
887
+ border-color: var(--diagram-border);
888
+ }
889
+
890
+ .markstream-svelte .mermaid-header__title,
891
+ .markstream-svelte .icon-slot {
892
+ display: inline-flex;
893
+ align-items: center;
894
+ }
895
+
896
+ .markstream-svelte .mermaid-header__title {
897
+ min-width: 0;
898
+ gap: 0.5rem;
899
+ overflow: hidden;
900
+ }
901
+
902
+ .markstream-svelte .action-icon {
903
+ width: var(--ms-action-btn-icon);
904
+ height: var(--ms-action-btn-icon);
905
+ flex: 0 0 auto;
906
+ }
907
+
908
+ .markstream-svelte .icon-slot {
909
+ justify-content: center;
910
+ }
911
+
912
+ .markstream-svelte .icon-slot svg {
913
+ display: block;
914
+ width: 100%;
915
+ height: 100%;
916
+ }
917
+
918
+ .markstream-svelte .mermaid-title__text {
919
+ min-width: 0;
920
+ overflow: hidden;
921
+ color: var(--code-action-fg);
922
+ font:
923
+ 500 var(--ms-text-label)/1.2 "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
924
+ text-overflow: ellipsis;
925
+ white-space: nowrap;
926
+ }
927
+
928
+ .markstream-svelte .mermaid-actions {
929
+ display: flex;
930
+ align-items: center;
931
+ gap: var(--ms-gap-header-actions);
932
+ grid-column: 3;
933
+ justify-content: flex-end;
934
+ justify-self: end;
935
+ }
936
+
937
+ .markstream-svelte .mermaid-action-btn,
938
+ .markstream-svelte .mermaid-btn {
939
+ display: inline-flex;
940
+ align-items: center;
941
+ justify-content: center;
942
+ border: 0;
943
+ background: transparent;
944
+ color: var(--code-action-fg);
945
+ font:
946
+ 500 var(--ms-text-label)/1 "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
947
+ padding: var(--ms-action-btn-padding);
948
+ border-radius: 0.25rem;
949
+ cursor: pointer;
950
+ transition: background-color 0.15s ease, color 0.15s ease, opacity 0.15s ease, transform 0.15s ease;
951
+ }
952
+
953
+ .markstream-svelte .mermaid-btn--icon {
954
+ width: calc(var(--ms-action-btn-icon) + var(--ms-action-btn-padding) + var(--ms-action-btn-padding));
955
+ height: calc(var(--ms-action-btn-icon) + var(--ms-action-btn-padding) + var(--ms-action-btn-padding));
956
+ }
957
+
958
+ .markstream-svelte .mermaid-action-btn svg,
959
+ .markstream-svelte .mermaid-btn svg,
960
+ .markstream-svelte .mermaid-toggle-btn svg {
961
+ display: block;
962
+ width: var(--ms-action-btn-icon);
963
+ height: var(--ms-action-btn-icon);
964
+ flex: 0 0 auto;
965
+ }
966
+
967
+ .markstream-svelte .mermaid-action-btn:hover:not(:disabled),
968
+ .markstream-svelte .mermaid-btn:hover:not(:disabled) {
969
+ background: var(--code-action-hover-bg);
970
+ color: var(--code-action-hover-fg);
971
+ }
972
+
973
+ .markstream-svelte.dark .mermaid-btn:hover:not(:disabled),
974
+ .dark .markstream-svelte .mermaid-btn:hover:not(:disabled) {
975
+ background: var(--code-action-hover-bg);
976
+ color: var(--code-action-hover-fg);
977
+ }
978
+
979
+ .markstream-svelte .mermaid-action-btn:active,
980
+ .markstream-svelte .mermaid-btn:active {
981
+ transform: scale(0.98);
982
+ }
983
+
984
+ .markstream-svelte .mermaid-btn:disabled {
985
+ opacity: 0.4;
986
+ cursor: not-allowed;
987
+ }
988
+
989
+ .markstream-svelte .mermaid-toggle {
990
+ display: inline-flex;
991
+ align-items: center;
992
+ gap: 0.125rem;
993
+ grid-column: 2;
994
+ background: transparent;
995
+ }
996
+
997
+ .markstream-svelte .mermaid-toggle-btn {
998
+ border: none;
999
+ background: transparent;
1000
+ color: var(--code-action-fg);
1001
+ font:
1002
+ 500 var(--ms-text-label)/1 "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
1003
+ padding: 0.125rem 0.5rem;
1004
+ border-radius: 0.25rem;
1005
+ cursor: pointer;
1006
+ opacity: 0.6;
1007
+ transition: background-color 0.15s ease, color 0.15s ease, opacity 0.15s ease;
1008
+ }
1009
+
1010
+ .markstream-svelte .mermaid-action-content {
1011
+ display: inline-flex;
1012
+ align-items: center;
1013
+ gap: 0.25rem;
1014
+ }
1015
+
1016
+ .markstream-svelte .mermaid-toggle-btn:hover {
1017
+ opacity: 0.9;
1018
+ }
1019
+
1020
+ .markstream-svelte .mermaid-toggle-btn--active {
1021
+ background: hsl(var(--ms-foreground) / 0.08);
1022
+ color: var(--code-fg);
1023
+ opacity: 1;
1024
+ }
1025
+
1026
+ .markstream-svelte.dark .mermaid-toggle-btn--active,
1027
+ .dark .markstream-svelte .mermaid-toggle-btn--active {
1028
+ background: hsl(var(--ms-foreground) / 0.08);
1029
+ color: var(--code-fg);
1030
+ }
1031
+
1032
+ .markstream-svelte .mermaid-body {
1033
+ position: relative;
1034
+ padding: 0;
1035
+ }
1036
+
1037
+ .markstream-svelte .markstream-svelte-zoom-controls {
1038
+ position: absolute;
1039
+ top: 0.75rem;
1040
+ right: 0.75rem;
1041
+ z-index: 2;
1042
+ display: inline-flex;
1043
+ align-items: center;
1044
+ gap: 0.25rem;
1045
+ padding: 0.25rem;
1046
+ border: 1px solid rgba(148, 163, 184, 0.3);
1047
+ border-radius: 0.5rem;
1048
+ background: rgba(255, 255, 255, 0.82);
1049
+ backdrop-filter: blur(10px);
1050
+ }
1051
+
1052
+ .markstream-svelte.dark .markstream-svelte-zoom-controls,
1053
+ .dark .markstream-svelte .markstream-svelte-zoom-controls {
1054
+ background: rgba(15, 23, 42, 0.78);
1055
+ border-color: rgba(71, 85, 105, 0.65);
1056
+ }
1057
+
1058
+ .markstream-svelte .mermaid-preview {
1059
+ width: 100%;
1060
+ min-height: var(--ms-size-diagram-min-height);
1061
+ overflow: auto;
1062
+ display: flex;
1063
+ align-items: center;
1064
+ justify-content: center;
1065
+ text-align: center;
1066
+ transform-origin: top center;
1067
+ }
1068
+
1069
+ .markstream-svelte .mermaid-preview svg {
1070
+ width: 100%;
1071
+ height: auto;
1072
+ }
1073
+
1074
+ .markstream-svelte .mermaid-source {
1075
+ margin: 0;
1076
+ padding: var(--ms-inset-panel-body);
1077
+ border-radius: 0;
1078
+ background: var(--diagram-bg);
1079
+ color: hsl(var(--ms-foreground));
1080
+ box-shadow: none;
1081
+ white-space: pre-wrap;
1082
+ font-family: ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
1083
+ font-size: 0.875rem;
1084
+ line-height: 1.25rem;
1085
+ overflow-x: auto;
1086
+ }
1087
+
1088
+ .markstream-svelte .mermaid-source code {
1089
+ padding: 0;
1090
+ background: transparent;
1091
+ color: inherit;
1092
+ font: inherit;
1093
+ white-space: inherit;
1094
+ }
1095
+
1096
+ .markstream-svelte .mermaid-error {
1097
+ padding: 0.85rem 1rem;
1098
+ color: #b91c1c;
1099
+ background: rgba(248, 113, 113, 0.15);
1100
+ border-top: 1px solid rgba(248, 113, 113, 0.25);
1101
+ }
1102
+
1103
+ .markstream-svelte .mermaid-loading {
1104
+ display: flex;
1105
+ align-items: center;
1106
+ gap: 0.5rem;
1107
+ padding: 0.75rem 1rem 1rem;
1108
+ font-size: 0.85rem;
1109
+ color: rgba(15, 23, 42, 0.6);
1110
+ }
1111
+
1112
+ .markstream-svelte.dark .mermaid-loading,
1113
+ .dark .markstream-svelte .mermaid-loading {
1114
+ color: rgba(226, 232, 240, 0.7);
1115
+ }
1116
+
1117
+ .markstream-svelte .mermaid-spinner {
1118
+ width: 0.85rem;
1119
+ height: 0.85rem;
1120
+ border-radius: 9999px;
1121
+ border: 2px solid rgba(59, 130, 246, 0.2);
1122
+ border-top-color: #2563eb;
1123
+ animation: spin 1s linear infinite;
1124
+ }
1125
+
1126
+ .markstream-svelte .markstream-svelte-enhanced-block {
1127
+ margin: var(--ms-flow-diagram-y) 0;
1128
+ border-radius: 0.5rem;
1129
+ overflow: hidden;
1130
+ border: 1px solid var(--diagram-border);
1131
+ background: var(--diagram-bg);
1132
+ color: hsl(var(--ms-foreground));
1133
+ box-shadow: var(--ms-shadow-subtle);
1134
+ }
1135
+
1136
+ .markstream-svelte .markstream-svelte-enhanced-block__header {
1137
+ display: grid;
1138
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
1139
+ align-items: center;
1140
+ gap: 0.75rem;
1141
+ padding: var(--ms-inset-panel-y) var(--ms-inset-panel-x);
1142
+ border-bottom: 1px solid var(--diagram-border);
1143
+ background: var(--diagram-header-bg);
1144
+ }
1145
+
1146
+ .markstream-svelte .markstream-svelte-enhanced-block__actions {
1147
+ display: inline-flex;
1148
+ align-items: center;
1149
+ justify-content: flex-end;
1150
+ justify-self: end;
1151
+ grid-column: 3;
1152
+ gap: var(--ms-gap-header-actions);
1153
+ }
1154
+
1155
+ .markstream-svelte .markstream-svelte-enhanced-block__title {
1156
+ display: inline-flex;
1157
+ align-items: center;
1158
+ min-width: 0;
1159
+ gap: 0.5rem;
1160
+ }
1161
+
1162
+ .markstream-svelte .markstream-svelte-enhanced-block__title-icon {
1163
+ display: inline-flex;
1164
+ align-items: center;
1165
+ justify-content: center;
1166
+ flex: 0 0 auto;
1167
+ width: 1rem;
1168
+ height: 1rem;
1169
+ }
1170
+
1171
+ .markstream-svelte .markstream-svelte-enhanced-block__title-text {
1172
+ overflow: hidden;
1173
+ font:
1174
+ 500 var(--ms-text-label)/1.2 "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
1175
+ text-overflow: ellipsis;
1176
+ white-space: nowrap;
1177
+ }
1178
+
1179
+ .markstream-svelte .markstream-svelte-enhanced-block__action {
1180
+ display: inline-flex;
1181
+ align-items: center;
1182
+ justify-content: center;
1183
+ padding: var(--ms-action-btn-padding);
1184
+ border: 0;
1185
+ border-radius: 0.25rem;
1186
+ background: transparent;
1187
+ box-shadow: none;
1188
+ color: var(--code-action-fg);
1189
+ font:
1190
+ 500 var(--ms-text-label)/1 "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
1191
+ cursor: pointer;
1192
+ transition: background-color 0.15s ease, color 0.15s ease, opacity 0.15s ease, transform 0.15s ease;
1193
+ }
1194
+
1195
+ .markstream-svelte .markstream-svelte-enhanced-block__action-content {
1196
+ display: inline-flex;
1197
+ align-items: center;
1198
+ gap: 0.35rem;
1199
+ }
1200
+
1201
+ .markstream-svelte .markstream-svelte-enhanced-block__action--icon {
1202
+ width: calc(var(--ms-action-btn-icon) + var(--ms-action-btn-padding) + var(--ms-action-btn-padding));
1203
+ height: calc(var(--ms-action-btn-icon) + var(--ms-action-btn-padding) + var(--ms-action-btn-padding));
1204
+ }
1205
+
1206
+ .markstream-svelte .markstream-svelte-enhanced-block__action:hover {
1207
+ background: var(--code-action-hover-bg);
1208
+ color: var(--code-action-hover-fg);
1209
+ }
1210
+
1211
+ .markstream-svelte .markstream-svelte-enhanced-block__action:active {
1212
+ transform: scale(0.98);
1213
+ }
1214
+
1215
+ .markstream-svelte .markstream-svelte-enhanced-block__action:disabled {
1216
+ opacity: 0.45;
1217
+ cursor: not-allowed;
1218
+ }
1219
+
1220
+ .markstream-svelte .markstream-svelte-enhanced-block__action:disabled:hover {
1221
+ background: transparent;
1222
+ }
1223
+
1224
+ .markstream-svelte .markstream-svelte-enhanced-block__badge {
1225
+ display: inline-flex;
1226
+ align-items: center;
1227
+ padding: 0.22rem 0.55rem;
1228
+ border-radius: 999px;
1229
+ background: rgba(37, 99, 235, 0.1);
1230
+ color: #1d4ed8;
1231
+ font:
1232
+ 700 0.72rem/1 "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
1233
+ letter-spacing: 0.04em;
1234
+ text-transform: uppercase;
1235
+ }
1236
+
1237
+ .markstream-svelte .markstream-svelte-enhanced-block__body {
1238
+ position: relative;
1239
+ overflow: auto;
1240
+ padding: var(--ms-inset-panel-body);
1241
+ background: var(--diagram-bg);
1242
+ }
1243
+
1244
+ .markstream-svelte .markstream-svelte-enhanced-block__body > :first-child {
1245
+ margin-top: 0;
1246
+ }
1247
+
1248
+ .markstream-svelte .markstream-svelte-enhanced-block__body > :last-child {
1249
+ margin-bottom: 0;
1250
+ }
1251
+
1252
+ .markstream-svelte .markstream-svelte-enhanced-block__body--code {
1253
+ padding: 0;
1254
+ background: #0b1220;
1255
+ }
1256
+
1257
+ .markstream-svelte .markstream-svelte-enhanced-block__body--code .monaco-editor,
1258
+ .markstream-svelte .markstream-svelte-enhanced-block__body--code .monaco-diff-editor {
1259
+ min-height: inherit;
1260
+ }
1261
+
1262
+ .markstream-svelte .markstream-svelte-enhanced-block__details {
1263
+ margin: 0;
1264
+ border-top: 1px solid rgba(15, 23, 42, 0.08);
1265
+ border-radius: 0;
1266
+ background: rgba(248, 250, 252, 0.92);
1267
+ }
1268
+
1269
+ .markstream-svelte .markstream-svelte-enhanced-block__details summary {
1270
+ padding: 0.8rem 0.95rem;
1271
+ }
1272
+
1273
+ .markstream-svelte .markstream-svelte-enhanced-block__source {
1274
+ margin: 0;
1275
+ border-radius: 0;
1276
+ }
1277
+
1278
+ .markstream-svelte .markstream-svelte-enhanced-block--d2 svg,
1279
+ .markstream-svelte .markstream-svelte-enhanced-block--infographic svg {
1280
+ display: block;
1281
+ width: 100%;
1282
+ height: auto;
1283
+ }
1284
+
1285
+ .markstream-svelte .markstream-svelte-enhanced-block .markstream-svelte-enhanced-block__title-icon svg,
1286
+ .markstream-svelte .markstream-svelte-enhanced-block .markstream-svelte-enhanced-block__action svg {
1287
+ width: var(--ms-action-btn-icon);
1288
+ height: var(--ms-action-btn-icon);
1289
+ flex: 0 0 auto;
1290
+ }
1291
+
1292
+ .markstream-svelte .infographic-label {
1293
+ color: hsl(var(--ms-muted-foreground));
1294
+ }
1295
+
1296
+ .markstream-svelte .infographic-mode-toggle {
1297
+ display: inline-flex;
1298
+ align-items: center;
1299
+ gap: 0.125rem;
1300
+ grid-column: 2;
1301
+ background: transparent;
1302
+ }
1303
+
1304
+ .markstream-svelte .infographic-mode-btn {
1305
+ color: var(--code-action-fg);
1306
+ opacity: 0.6;
1307
+ }
1308
+
1309
+ .markstream-svelte .infographic-mode-btn:hover {
1310
+ opacity: 0.9;
1311
+ }
1312
+
1313
+ .markstream-svelte .infographic-mode-btn.is-active {
1314
+ background: hsl(var(--ms-foreground) / 0.08);
1315
+ color: var(--code-fg);
1316
+ opacity: 1;
1317
+ }
1318
+
1319
+ .markstream-svelte .infographic-action-btn,
1320
+ .markstream-svelte .infographic-zoom-reset {
1321
+ font-family: inherit;
1322
+ color: var(--code-action-fg);
1323
+ }
1324
+
1325
+ .markstream-svelte .infographic-action-btn:hover:not(:disabled),
1326
+ .markstream-svelte .infographic-zoom-reset:hover:not(:disabled) {
1327
+ background: var(--code-action-hover-bg);
1328
+ color: var(--code-action-hover-fg);
1329
+ }
1330
+
1331
+ .markstream-svelte .infographic-block-body {
1332
+ padding: 0;
1333
+ background: var(--diagram-bg);
1334
+ }
1335
+
1336
+ .markstream-svelte .infographic-source {
1337
+ padding: var(--ms-inset-panel-body);
1338
+ background: var(--diagram-bg);
1339
+ }
1340
+
1341
+ .markstream-svelte .infographic-source-code {
1342
+ margin: 0;
1343
+ padding: 0;
1344
+ border-radius: 0;
1345
+ background: transparent;
1346
+ color: hsl(var(--ms-foreground));
1347
+ box-shadow: none;
1348
+ white-space: pre-wrap;
1349
+ font-family: ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
1350
+ font-size: 0.875rem;
1351
+ line-height: 1.25rem;
1352
+ }
1353
+
1354
+ .markstream-svelte .infographic-source-code code {
1355
+ padding: 0;
1356
+ background: transparent;
1357
+ color: inherit;
1358
+ font: inherit;
1359
+ white-space: inherit;
1360
+ }
1361
+
1362
+ .markstream-svelte.dark .markstream-svelte-enhanced-block,
1363
+ .dark .markstream-svelte .markstream-svelte-enhanced-block {
1364
+ border-color: var(--diagram-border);
1365
+ background: var(--diagram-bg);
1366
+ }
1367
+
1368
+ .markstream-svelte.dark .markstream-svelte-enhanced-block__header,
1369
+ .dark .markstream-svelte .markstream-svelte-enhanced-block__header {
1370
+ border-bottom-color: var(--diagram-border);
1371
+ background: var(--diagram-header-bg);
1372
+ }
1373
+
1374
+ .markstream-svelte.dark .markstream-svelte-enhanced-block__action,
1375
+ .dark .markstream-svelte .markstream-svelte-enhanced-block__action {
1376
+ background: transparent;
1377
+ box-shadow: none;
1378
+ }
1379
+
1380
+ .markstream-svelte.dark .markstream-svelte-enhanced-block__action:hover,
1381
+ .dark .markstream-svelte .markstream-svelte-enhanced-block__action:hover {
1382
+ background: var(--code-action-hover-bg);
1383
+ }
1384
+
1385
+ .markstream-svelte.dark .markstream-svelte-enhanced-block__action:disabled:hover,
1386
+ .dark .markstream-svelte .markstream-svelte-enhanced-block__action:disabled:hover {
1387
+ background: transparent;
1388
+ }
1389
+
1390
+ .markstream-svelte.dark .markstream-svelte-enhanced-block__badge,
1391
+ .dark .markstream-svelte .markstream-svelte-enhanced-block__badge {
1392
+ background: rgba(96, 165, 250, 0.16);
1393
+ color: #93c5fd;
1394
+ }
1395
+
1396
+ .markstream-svelte.dark .markstream-svelte-enhanced-block__body,
1397
+ .dark .markstream-svelte .markstream-svelte-enhanced-block__body {
1398
+ background: var(--diagram-bg);
1399
+ }
1400
+
1401
+ .markstream-svelte.dark .markstream-svelte-enhanced-block__details,
1402
+ .dark .markstream-svelte .markstream-svelte-enhanced-block__details {
1403
+ border-top-color: rgba(148, 163, 184, 0.18);
1404
+ background: rgba(15, 23, 42, 0.96);
1405
+ }
1406
+
1407
+ @keyframes node-placeholder-shimmer {
1408
+ from {
1409
+ background-position: 200% 0%;
1410
+ }
1411
+
1412
+ to {
1413
+ background-position: -200% 0%;
1414
+ }
1415
+ }
1416
+
1417
+ @keyframes spin {
1418
+ to {
1419
+ transform: rotate(360deg);
1420
+ }
1421
+ }
1422
+
1423
+ @keyframes typewriter-fade {
1424
+ from {
1425
+ opacity: 0;
1426
+ }
1427
+
1428
+ to {
1429
+ opacity: 1;
1430
+ }
1431
+ }
1432
+
1433
+ .markstream-svelte .code-block-container {
1434
+ --markstream-code-fallback-bg: #ffffff;
1435
+ --markstream-code-fallback-fg: #111827;
1436
+ --markstream-diff-shell-fg: #0f172a;
1437
+ --markstream-diff-shell-muted: #64748b;
1438
+ --markstream-diff-shell-border: rgba(148, 163, 184, 0.24);
1439
+ --markstream-diff-shell-bg: #ffffff;
1440
+ --markstream-diff-header-border: rgba(148, 163, 184, 0.18);
1441
+ --markstream-diff-editor-bg: #111111;
1442
+ --markstream-diff-editor-fg: #d4d4d4;
1443
+ --markstream-diff-unchanged-fg: #d4d4d4;
1444
+ --markstream-diff-unchanged-bg: rgba(64, 64, 64, 0.92);
1445
+ --markstream-diff-unchanged-divider: rgba(255, 255, 255, 0.18);
1446
+ --markstream-diff-focus: rgba(96, 165, 250, 0.42);
1447
+ --markstream-diff-widget-shadow: rgba(0, 0, 0, 0.72);
1448
+ --markstream-diff-action-hover: rgba(148, 163, 184, 0.18);
1449
+ --markstream-diff-pane-divider: rgba(82, 82, 91, 0.34);
1450
+ --markstream-diff-gutter-gap: 8px;
1451
+ --markstream-diff-line-number: rgba(161, 161, 170, 0.68);
1452
+ --markstream-diff-line-number-active: rgba(228, 228, 231, 0.82);
1453
+ --markstream-diff-added-fg: #5eead4;
1454
+ --markstream-diff-removed-fg: #fda4af;
1455
+ --markstream-diff-added-line: rgba(13, 148, 136, 0.18);
1456
+ --markstream-diff-removed-line: rgba(225, 29, 72, 0.18);
1457
+ --markstream-diff-added-inline: rgba(45, 212, 191, 0.24);
1458
+ --markstream-diff-removed-inline: rgba(251, 113, 133, 0.24);
1459
+ --markstream-diff-added-inline-border: transparent;
1460
+ --markstream-diff-removed-inline-border: transparent;
1461
+ --markstream-diff-added-line-fill: rgba(13, 148, 136, 0.18);
1462
+ --markstream-diff-removed-line-fill: rgba(225, 29, 72, 0.18);
1463
+ margin: 1rem 0;
1464
+ overflow: hidden;
1465
+ border: 1px solid rgba(148, 163, 184, 0.24);
1466
+ border-radius: 0.75rem;
1467
+ background: #ffffff;
1468
+ box-shadow: 0 18px 38px -28px rgba(15, 23, 42, 0.45);
1469
+ }
1470
+
1471
+ .markstream-svelte .code-block-container.is-dark,
1472
+ .dark .markstream-svelte .code-block-container {
1473
+ --markstream-code-fallback-bg: #111827;
1474
+ --markstream-code-fallback-fg: #e5e7eb;
1475
+ --markstream-diff-shell-fg: #e2e8f0;
1476
+ --markstream-diff-shell-muted: #94a3b8;
1477
+ --markstream-diff-shell-border: rgba(82, 82, 91, 0.56);
1478
+ --markstream-diff-shell-bg: rgba(10, 10, 11, 0.99);
1479
+ --markstream-diff-header-border: rgba(63, 63, 70, 0.82);
1480
+ --markstream-diff-editor-bg: rgba(12, 12, 14, 0.99);
1481
+ --markstream-diff-editor-fg: #b6c2d3;
1482
+ --markstream-diff-unchanged-fg: #cbd5e1;
1483
+ --markstream-diff-unchanged-bg: rgba(24, 24, 27, 0.92);
1484
+ --markstream-diff-unchanged-divider: rgba(255, 255, 255, 0.18);
1485
+ --markstream-diff-action-hover: rgba(255, 255, 255, 0.08);
1486
+ border-color: rgba(71, 85, 105, 0.55);
1487
+ background: #0f172a;
1488
+ box-shadow: 0 22px 44px -30px rgba(2, 6, 23, 0.95);
1489
+ }
1490
+
1491
+ .markstream-svelte .code-block-container.is-plain-text .monaco-editor,
1492
+ .markstream-svelte .code-block-container.is-plain-text .monaco-editor .monaco-editor-background,
1493
+ .markstream-svelte .code-block-container.is-plain-text .monaco-editor .margin,
1494
+ .markstream-svelte .code-block-container.is-plain-text .monaco-editor .lines-content {
1495
+ background: var(--vscode-editor-background, var(--markstream-code-fallback-bg)) !important;
1496
+ }
1497
+
1498
+ .markstream-svelte .code-block-container.is-plain-text .monaco-editor,
1499
+ .markstream-svelte .code-block-container.is-plain-text .monaco-editor .margin,
1500
+ .markstream-svelte .code-block-container.is-plain-text .monaco-editor .view-lines,
1501
+ .markstream-svelte .code-block-container.is-plain-text .monaco-editor .view-line,
1502
+ .markstream-svelte .code-block-container.is-plain-text .monaco-editor .view-line span,
1503
+ .markstream-svelte .code-block-container.is-plain-text .monaco-editor .line-numbers {
1504
+ color: var(--vscode-editor-foreground, var(--markstream-code-fallback-fg)) !important;
1505
+ }
1506
+
1507
+ .markstream-svelte .code-block-header {
1508
+ display: flex;
1509
+ align-items: center;
1510
+ justify-content: space-between;
1511
+ gap: 0.75rem;
1512
+ padding: 0.625rem 1rem;
1513
+ border-bottom: 1px solid rgba(148, 163, 184, 0.1);
1514
+ }
1515
+
1516
+ .markstream-svelte .code-block-header__meta {
1517
+ display: flex;
1518
+ flex: 1 1 auto;
1519
+ align-items: center;
1520
+ gap: 0.5rem;
1521
+ min-width: 0;
1522
+ }
1523
+
1524
+ .markstream-svelte .code-block-header__label {
1525
+ min-width: 0;
1526
+ overflow: hidden;
1527
+ color: inherit;
1528
+ text-overflow: ellipsis;
1529
+ white-space: nowrap;
1530
+ font:
1531
+ 500 0.95rem/1.2 "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
1532
+ }
1533
+
1534
+ .markstream-svelte .code-block-header__actions {
1535
+ display: flex;
1536
+ flex: 0 0 auto;
1537
+ align-items: center;
1538
+ justify-content: flex-end;
1539
+ gap: 0.25rem;
1540
+ margin-left: auto;
1541
+ }
1542
+
1543
+ .markstream-svelte .code-block-language-icon {
1544
+ width: 1rem;
1545
+ height: 1rem;
1546
+ flex: 0 0 1rem;
1547
+ color: #2563eb;
1548
+ }
1549
+
1550
+ .markstream-svelte.dark .code-block-language-icon,
1551
+ .dark .markstream-svelte .code-block-language-icon {
1552
+ color: #93c5fd;
1553
+ }
1554
+
1555
+ .markstream-svelte .code-block-language-icon svg,
1556
+ .markstream-svelte .code-block-language-icon img {
1557
+ display: block;
1558
+ width: 100%;
1559
+ height: 100%;
1560
+ }
1561
+
1562
+ .markstream-svelte .code-block-language-icon__image {
1563
+ -o-object-fit: contain;
1564
+ object-fit: contain;
1565
+ }
1566
+
1567
+ .markstream-svelte .code-block-body {
1568
+ position: relative;
1569
+ display: grid;
1570
+ min-height: 96px;
1571
+ min-width: 0;
1572
+ overflow: hidden;
1573
+ background: var(--vscode-editor-background, var(--markstream-code-fallback-bg));
1574
+ }
1575
+
1576
+ .markstream-svelte .code-block-body > .code-editor-container,
1577
+ .markstream-svelte .code-block-body > .code-pre-fallback {
1578
+ grid-area: 1 / 1;
1579
+ }
1580
+
1581
+ .code-block-body--expanded {
1582
+ max-height: none;
1583
+ }
1584
+
1585
+ .code-block-body--collapsed {
1586
+ min-height: 0;
1587
+ height: 0;
1588
+ overflow: hidden;
1589
+ }
1590
+
1591
+ .markstream-svelte .code-action-btn {
1592
+ display: inline-flex;
1593
+ align-items: center;
1594
+ justify-content: center;
1595
+ width: 1.75rem;
1596
+ height: 1.75rem;
1597
+ padding: 0;
1598
+ border-radius: 0.375rem;
1599
+ color: inherit;
1600
+ transition: background-color 140ms ease, color 140ms ease, transform 140ms ease, opacity 140ms ease;
1601
+ }
1602
+
1603
+ .markstream-svelte .code-action-btn:hover {
1604
+ background: var(--vscode-editor-selectionBackground, rgba(148, 163, 184, 0.18));
1605
+ }
1606
+
1607
+ .markstream-svelte .code-action-btn__icon,
1608
+ .markstream-svelte .code-action-btn svg {
1609
+ display: block;
1610
+ width: 0.8rem;
1611
+ height: 0.8rem;
1612
+ flex: 0 0 auto;
1613
+ }
1614
+
1615
+ .markstream-svelte .code-action-btn:active {
1616
+ transform: scale(0.98);
1617
+ }
1618
+
1619
+ .markstream-svelte .code-action-btn:disabled {
1620
+ opacity: 0.5;
1621
+ cursor: not-allowed;
1622
+ }
1623
+
1624
+ .markstream-svelte .code-action-btn:disabled:hover {
1625
+ background: transparent;
1626
+ }
1627
+
1628
+ .markstream-svelte .code-editor-container {
1629
+ min-height: 96px;
1630
+ }
1631
+
1632
+ .markstream-svelte .code-editor-container.is-hidden {
1633
+ opacity: 0;
1634
+ pointer-events: none;
1635
+ }
1636
+
1637
+ .markstream-svelte .code-pre-fallback {
1638
+ margin: 0;
1639
+ padding: 1rem;
1640
+ max-height: 500px;
1641
+ overflow: auto;
1642
+ border: 0;
1643
+ border-radius: 0;
1644
+ background: var(--vscode-editor-background, var(--markstream-code-fallback-bg));
1645
+ color: var(--vscode-editor-foreground, var(--markstream-code-fallback-fg));
1646
+ font:
1647
+ 13px/1.55 var(--vscode-editor-font-family, "Fira Code", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
1648
+ white-space: pre;
1649
+ }
1650
+
1651
+ .markstream-svelte .code-pre-fallback code {
1652
+ color: inherit;
1653
+ font: inherit;
1654
+ background: transparent;
1655
+ }
1656
+
1657
+ .markstream-svelte .code-block-container.is-diff {
1658
+ color: var(--markstream-diff-shell-fg);
1659
+ border-color: var(--markstream-diff-shell-border);
1660
+ background: var(--markstream-diff-shell-bg);
1661
+ --vscode-editor-selectionBackground: var(--markstream-diff-action-hover);
1662
+ }
1663
+
1664
+ .markstream-svelte .code-block-container.is-diff .code-block-header {
1665
+ color: var(--markstream-diff-shell-fg);
1666
+ border-bottom-color: var(--markstream-diff-header-border);
1667
+ background: var(--markstream-diff-shell-bg);
1668
+ }
1669
+
1670
+ .markstream-svelte .code-block-container.is-diff .code-action-btn {
1671
+ color: var(--markstream-diff-shell-muted);
1672
+ }
1673
+
1674
+ .markstream-svelte .code-block-container.is-diff .code-block-body {
1675
+ background: var(--markstream-diff-editor-bg);
1676
+ --vscode-editor-background: var(--markstream-diff-editor-bg);
1677
+ --vscode-editor-foreground: var(--markstream-diff-editor-fg);
1678
+ --vscode-diffEditor-unchangedRegionForeground: var(--markstream-diff-unchanged-fg);
1679
+ --vscode-diffEditor-unchangedRegionBackground: var(--markstream-diff-unchanged-bg);
1680
+ --vscode-focusBorder: var(--markstream-diff-focus);
1681
+ --vscode-widget-shadow: var(--markstream-diff-widget-shadow);
1682
+ }
1683
+
1684
+ .markstream-svelte .code-block-container.is-diff .code-editor-container {
1685
+ min-height: 0;
1686
+ background: var(--markstream-diff-editor-bg);
1687
+ }
1688
+
1689
+ .markstream-svelte .code-block-container .stream-monaco-diff-root {
1690
+ --stream-monaco-gutter-gap: var(--markstream-diff-gutter-gap) !important;
1691
+ --stream-monaco-line-number: var(--markstream-diff-line-number) !important;
1692
+ --stream-monaco-line-number-active: var(--markstream-diff-line-number-active) !important;
1693
+ --stream-monaco-added-fg: var(--markstream-diff-added-fg) !important;
1694
+ --stream-monaco-removed-fg: var(--markstream-diff-removed-fg) !important;
1695
+ --stream-monaco-added-line: var(--markstream-diff-added-line) !important;
1696
+ --stream-monaco-removed-line: var(--markstream-diff-removed-line) !important;
1697
+ --stream-monaco-added-inline: var(--markstream-diff-added-inline) !important;
1698
+ --stream-monaco-removed-inline: var(--markstream-diff-removed-inline) !important;
1699
+ --stream-monaco-added-inline-border: var(--markstream-diff-added-inline-border) !important;
1700
+ --stream-monaco-removed-inline-border: var(--markstream-diff-removed-inline-border) !important;
1701
+ --stream-monaco-added-line-fill: var(--markstream-diff-added-line-fill) !important;
1702
+ --stream-monaco-removed-line-fill: var(--markstream-diff-removed-line-fill) !important;
1703
+ --stream-monaco-unchanged-bg: var(--markstream-diff-unchanged-bg) !important;
1704
+ --stream-monaco-unchanged-fg: var(--markstream-diff-unchanged-fg) !important;
1705
+ }
1706
+
1707
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .monaco-diff-editor .diffOverview,
1708
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .decorationsOverviewRuler {
1709
+ display: none !important;
1710
+ }
1711
+
1712
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center:not(.stream-monaco-unchanged-bridge-source),
1713
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge {
1714
+ --stream-monaco-unchanged-bg: var(--markstream-diff-unchanged-bg) !important;
1715
+ --stream-monaco-unchanged-fg: var(--markstream-diff-unchanged-fg) !important;
1716
+ background: var(--stream-monaco-unchanged-bg) !important;
1717
+ color: var(--stream-monaco-unchanged-fg) !important;
1718
+ }
1719
+
1720
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary,
1721
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary:hover,
1722
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary:focus-visible {
1723
+ background: var(--stream-monaco-unchanged-bg) !important;
1724
+ color: var(--markstream-diff-unchanged-fg) !important;
1725
+ }
1726
+
1727
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-rail,
1728
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal,
1729
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal:hover,
1730
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal:focus-visible {
1731
+ background: var(--stream-monaco-unchanged-bg) !important;
1732
+ color: var(--markstream-diff-unchanged-fg) !important;
1733
+ }
1734
+
1735
+ .markstream-svelte .code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-rail {
1736
+ border-right-color: var(--markstream-diff-unchanged-divider) !important;
1737
+ }
1738
+
1739
+ .html-preview-frame__backdrop {
1740
+ position: fixed;
1741
+ inset: 0;
1742
+ background-color: rgba(0, 0, 0, 0.5);
1743
+ display: flex;
1744
+ align-items: center;
1745
+ justify-content: center;
1746
+ z-index: 50;
1747
+ }
1748
+
1749
+ .html-preview-frame__backdrop--dark {
1750
+ background-color: rgba(15, 23, 42, 0.8);
1751
+ }
1752
+
1753
+ .html-preview-frame {
1754
+ width: 80vw;
1755
+ max-width: 960px;
1756
+ height: 70vh;
1757
+ background-color: #fff;
1758
+ border-radius: 0.5rem;
1759
+ overflow: hidden;
1760
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.25);
1761
+ display: flex;
1762
+ flex-direction: column;
1763
+ }
1764
+
1765
+ .html-preview-frame--dark {
1766
+ background-color: #020617;
1767
+ color: #e5e7eb;
1768
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.6);
1769
+ }
1770
+
1771
+ .html-preview-frame__header {
1772
+ display: flex;
1773
+ justify-content: space-between;
1774
+ align-items: center;
1775
+ padding: 0.4rem 0.75rem;
1776
+ border-bottom: 1px solid rgba(0, 0, 0, 0.06);
1777
+ }
1778
+
1779
+ .html-preview-frame--dark .html-preview-frame__header {
1780
+ border-bottom-color: rgba(148, 163, 184, 0.35);
1781
+ }
1782
+
1783
+ .html-preview-frame__title {
1784
+ display: inline-flex;
1785
+ align-items: center;
1786
+ gap: 0.4rem;
1787
+ font-size: 0.75rem;
1788
+ font-weight: 500;
1789
+ letter-spacing: 0.02em;
1790
+ text-transform: uppercase;
1791
+ opacity: 0.85;
1792
+ }
1793
+
1794
+ .html-preview-frame__dot {
1795
+ width: 0.5rem;
1796
+ height: 0.5rem;
1797
+ border-radius: 999px;
1798
+ background-color: #22c55e;
1799
+ }
1800
+
1801
+ .html-preview-frame--dark .html-preview-frame__dot {
1802
+ background-color: #4ade80;
1803
+ }
1804
+
1805
+ .html-preview-frame__label {
1806
+ white-space: nowrap;
1807
+ }
1808
+
1809
+ .html-preview-frame__close {
1810
+ border: none;
1811
+ background: transparent;
1812
+ font-size: 1.25rem;
1813
+ line-height: 1;
1814
+ cursor: pointer;
1815
+ }
1816
+
1817
+ .html-preview-frame__close--dark {
1818
+ color: #e5e7eb;
1819
+ }
1820
+
1821
+ .html-preview-frame__iframe {
1822
+ width: 100%;
1823
+ height: 100%;
1824
+ border: none;
1825
+ display: block;
1826
+ }
1827
+
1828
+ @media (max-width: 640px) {
1829
+ .html-preview-frame {
1830
+ width: 100vw;
1831
+ height: 80vh;
1832
+ border-radius: 0;
1833
+ }
1834
+ }
1835
+
1836
+ .ms-tooltip {
1837
+ position: fixed;
1838
+ padding: 0.4rem 0.65rem;
1839
+ font-size: 0.875rem;
1840
+ border-radius: 0.375rem;
1841
+ border-width: 1px;
1842
+ border-style: solid;
1843
+ box-shadow: 0 10px 15px rgba(0, 0, 0, 0.08);
1844
+ pointer-events: none;
1845
+ z-index: 9999;
1846
+ opacity: 0;
1847
+ transition: opacity 120ms linear, transform 220ms cubic-bezier(.16, 1, .3, 1);
1848
+ }
1849
+
1850
+ .ms-tooltip[data-visible='true'] {
1851
+ opacity: 1;
1852
+ }
1853
+
1854
+ .ms-tooltip[data-dark='true'] {
1855
+ background-color: #111827;
1856
+ color: #f9fafb;
1857
+ border-color: #374151;
1858
+ }
1859
+
1860
+ .ms-tooltip[data-dark='false'],
1861
+ .ms-tooltip:not([data-dark='true']) {
1862
+ background-color: #ffffff;
1863
+ color: #111827;
1864
+ border-color: #e5e7eb;
1865
+ }
1866
+
1867
+ .markstream-svelte .sr-only {
1868
+ position: absolute;
1869
+ width: 1px;
1870
+ height: 1px;
1871
+ padding: 0;
1872
+ margin: -1px;
1873
+ overflow: hidden;
1874
+ clip: rect(0, 0, 0, 0);
1875
+ white-space: nowrap;
1876
+ border: 0;
1877
+ }
1878
+
1879
+ .markstream-svelte .d2-block-body {
1880
+ position: relative;
1881
+ padding: 0;
1882
+ }
1883
+
1884
+ .markstream-svelte .d2-block-header {
1885
+ display: flex;
1886
+ grid-template-columns: none;
1887
+ justify-content: space-between;
1888
+ border-bottom: 1px solid var(--diagram-border);
1889
+ color: hsl(var(--ms-foreground));
1890
+ }
1891
+
1892
+ .markstream-svelte .d2-header-title {
1893
+ display: inline-flex;
1894
+ align-items: center;
1895
+ min-width: 0;
1896
+ gap: 0.5rem;
1897
+ }
1898
+
1899
+ .markstream-svelte .d2-label {
1900
+ color: hsl(var(--ms-foreground));
1901
+ font:
1902
+ 500 var(--ms-text-label)/1.2 "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
1903
+ }
1904
+
1905
+ .markstream-svelte .d2-header-actions {
1906
+ display: inline-flex;
1907
+ align-items: center;
1908
+ justify-content: flex-end;
1909
+ justify-self: auto;
1910
+ grid-column: auto;
1911
+ gap: var(--ms-gap-header-actions);
1912
+ }
1913
+
1914
+ .markstream-svelte .d2-mode-toggle {
1915
+ display: inline-flex;
1916
+ align-items: center;
1917
+ gap: 0.125rem;
1918
+ background: transparent;
1919
+ }
1920
+
1921
+ .markstream-svelte .d2-mode-btn {
1922
+ padding: 0.125rem 0.5rem;
1923
+ border-radius: 0.25rem;
1924
+ color: var(--code-action-fg);
1925
+ opacity: 0.6;
1926
+ transition: opacity 0.2s, color 0.2s, background-color 0.2s;
1927
+ }
1928
+
1929
+ .markstream-svelte .d2-mode-btn:hover {
1930
+ opacity: 0.9;
1931
+ }
1932
+
1933
+ .markstream-svelte .d2-mode-btn.is-active {
1934
+ background: hsl(var(--ms-foreground) / 0.08);
1935
+ color: var(--code-fg);
1936
+ opacity: 1;
1937
+ }
1938
+
1939
+ .markstream-svelte .d2-action-btn {
1940
+ color: var(--code-action-fg);
1941
+ opacity: 0.7;
1942
+ transition: opacity 0.2s, background-color 0.15s, color 0.15s;
1943
+ }
1944
+
1945
+ .markstream-svelte .d2-action-btn:hover:not(:disabled) {
1946
+ opacity: 1;
1947
+ background: var(--code-action-hover-bg);
1948
+ color: var(--code-action-hover-fg);
1949
+ }
1950
+
1951
+ .markstream-svelte .d2-action-btn:disabled {
1952
+ opacity: 0.3;
1953
+ cursor: not-allowed;
1954
+ }
1955
+
1956
+ .markstream-svelte .d2-source {
1957
+ padding: var(--ms-inset-panel-body) var(--ms-inset-panel-x);
1958
+ font-family: var(--vscode-editor-font-family, "Fira Code", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);
1959
+ }
1960
+
1961
+ .markstream-svelte .d2-code {
1962
+ margin: 0;
1963
+ padding: 0;
1964
+ border-radius: 0;
1965
+ background: transparent;
1966
+ color: hsl(var(--ms-foreground));
1967
+ box-shadow: none;
1968
+ white-space: pre;
1969
+ font-size: 0.875rem;
1970
+ line-height: 1.5;
1971
+ }
1972
+
1973
+ .markstream-svelte .d2-code code {
1974
+ padding: 0;
1975
+ background: transparent;
1976
+ color: inherit;
1977
+ font: inherit;
1978
+ white-space: inherit;
1979
+ }
1980
+
1981
+ .markstream-svelte .d2-render {
1982
+ max-height: var(--ms-size-code-max-height);
1983
+ overflow: auto;
1984
+ }
1985
+
1986
+ .markstream-svelte .d2-svg svg,
1987
+ .markstream-svelte .infographic-render svg {
1988
+ max-width: 100%;
1989
+ height: auto;
1990
+ display: block;
1991
+ margin: 0 auto;
1992
+ }
1993
+
1994
+ .markstream-svelte .d2-error {
1995
+ color: #dc2626;
1996
+ margin-top: 0.75rem;
1997
+ }
1998
+
1999
+ .markstream-svelte .infographic-render {
2000
+ position: relative;
2001
+ width: 100%;
2002
+ min-height: 320px;
2003
+ overflow: auto;
2004
+ text-align: center;
2005
+ }
2006
+
2007
+ .markstream-svelte .infographic-render > div {
2008
+ transition: transform 120ms ease;
2009
+ }