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