markstream-react 0.0.49 → 0.0.50

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.
@@ -1 +1 @@
1
- :where(.markstream-react) button{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:transparent;border:0;font:inherit;color:inherit}.markstream-react .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.markstream-react .pointer-events-none{pointer-events:none}.markstream-react .visible{visibility:visible}.markstream-react .collapse{visibility:collapse}.markstream-react .fixed{position:fixed}.markstream-react .absolute{position:absolute}.markstream-react .relative{position:relative}.markstream-react .inset-0{top:0;right:0;bottom:0;left:0}.markstream-react .right-2{right:.5rem}.markstream-react .right-6{right:1.5rem}.markstream-react .top-2{top:.5rem}.markstream-react .top-6{top:1.5rem}.markstream-react .z-10{z-index:10}.markstream-react .z-50{z-index:50}.markstream-react .z-\[9999\]{z-index:9999}.markstream-react .m-0{margin:0}.markstream-react .mx-0\.5{margin-left:.125rem;margin-right:.125rem}.markstream-react .my-2{margin-top:.5rem;margin-bottom:.5rem}.markstream-react .my-4{margin-top:1rem;margin-bottom:1rem}.markstream-react .my-5{margin-top:1.25rem;margin-bottom:1.25rem}.markstream-react .my-8{margin-top:2rem;margin-bottom:2rem}.markstream-react .mb-4{margin-bottom:1rem}.markstream-react .ml-4{margin-left:1rem}.markstream-react .mt-2{margin-top:.5rem}.markstream-react .block{display:block}.markstream-react .inline-block{display:inline-block}.markstream-react .inline{display:inline}.markstream-react .flex{display:flex}.markstream-react .inline-flex{display:inline-flex}.markstream-react .table{display:table}.markstream-react .grid{display:grid}.markstream-react .contents{display:contents}.markstream-react .list-item{display:list-item}.markstream-react .hidden{display:none}.markstream-react .h-3{height:.75rem}.markstream-react .h-4{height:1rem}.markstream-react .h-full{height:100%}.markstream-react .max-h-full{max-height:100%}.markstream-react .min-h-\[360px\]{min-height:360px}.markstream-react .min-h-\[40px\]{min-height:40px}.markstream-react .min-h-full{min-height:100%}.markstream-react .w-2\/3{width:66.666667%}.markstream-react .w-3{width:.75rem}.markstream-react .w-4{width:1rem}.markstream-react .w-4\/5{width:80%}.markstream-react .w-full{width:100%}.markstream-react .max-w-full{max-width:100%}.markstream-react .flex-1{flex:1 1 0%}.markstream-react .flex-shrink-0{flex-shrink:0}.markstream-react .border-collapse{border-collapse:collapse}.markstream-react .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.markstream-react .cursor-grab{cursor:grab}.markstream-react .cursor-grabbing{cursor:grabbing}.markstream-react .cursor-not-allowed{cursor:not-allowed}.markstream-react .cursor-pointer{cursor:pointer}.markstream-react .list-decimal{list-style-type:decimal}.markstream-react .list-disc{list-style-type:disc}.markstream-react .items-center{align-items:center}.markstream-react .items-baseline{align-items:baseline}.markstream-react .justify-center{justify-content:center}.markstream-react .justify-between{justify-content:space-between}.markstream-react .gap-1\.5{gap:.375rem}.markstream-react .gap-2{gap:.5rem}.markstream-react .gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.markstream-react .gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.markstream-react :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.markstream-react :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.markstream-react .overflow-hidden{overflow:hidden}.markstream-react .overflow-x-auto{overflow-x:auto}.markstream-react .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.markstream-react .whitespace-normal{white-space:normal}.markstream-react .whitespace-nowrap{white-space:nowrap}.markstream-react .whitespace-pre-wrap{white-space:pre-wrap}.markstream-react .break-words{overflow-wrap:break-word}.markstream-react .rounded{border-radius:calc(var(--ms-radius) * .5)}.markstream-react .rounded-lg{border-radius:var(--ms-radius)}.markstream-react .rounded-md{border-radius:calc(var(--ms-radius) * .75)}.markstream-react .border{border-width:1px}.markstream-react .border-b{border-bottom-width:1px}.markstream-react .border-t{border-top-width:1px}.markstream-react .border-\[var\(--footnote-border\,\#eaecef\)\]{border-color:var(--footnote-border,#eaecef)}.markstream-react .border-\[var\(--table-border\,\#cbd5e1\)\]{border-color:var(--table-border,#cbd5e1)}.markstream-react .border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.markstream-react .border-gray-400\/5{border-color:#9ca3af0d}.markstream-react .border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.markstream-react .border-gray-700\/30{border-color:#3741514d}.markstream-react .bg-\[hsl\(var\(--muted\)\)\]{background-color:hsl(var(--muted))}.markstream-react .bg-\[hsl\(var\(--secondary\)\)\]{background-color:hsl(var(--secondary))}.markstream-react .bg-black\/70{background-color:#000000b3}.markstream-react .bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.markstream-react .bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.markstream-react .bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.markstream-react .bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.markstream-react .bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.markstream-react .bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.markstream-react .bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.markstream-react .p-0\.5{padding:.125rem}.markstream-react .p-2{padding:.5rem}.markstream-react .p-4{padding:1rem}.markstream-react .p-\[calc\(4\/7\*1em\)\]{padding:calc(4 / 7 * 1em)}.markstream-react .px-1{padding-left:.25rem;padding-right:.25rem}.markstream-react .px-1\.5{padding-left:.375rem;padding-right:.375rem}.markstream-react .px-2{padding-left:.5rem;padding-right:.5rem}.markstream-react .px-2\.5{padding-left:.625rem;padding-right:.625rem}.markstream-react .px-3{padding-left:.75rem;padding-right:.75rem}.markstream-react .px-4{padding-left:1rem;padding-right:1rem}.markstream-react .py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.markstream-react .py-1{padding-top:.25rem;padding-bottom:.25rem}.markstream-react .py-2{padding-top:.5rem;padding-bottom:.5rem}.markstream-react .py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.markstream-react .py-4{padding-top:1rem;padding-bottom:1rem}.markstream-react .pb-3{padding-bottom:.75rem}.markstream-react .pl-1\.5{padding-left:.375rem}.markstream-react .pl-\[calc\(13\/8\*1em\)\]{padding-left:1.625em}.markstream-react .pt-2{padding-top:.5rem}.markstream-react .text-left{text-align:left}.markstream-react .text-center{text-align:center}.markstream-react .text-right{text-align:right}.markstream-react .font-mono{font-family:var(--ms-font-mono)}.markstream-react .text-\[85\%\]{font-size:85%}.markstream-react .text-base{font-size:1rem;line-height:1.5rem}.markstream-react .text-sm{font-size:.875rem;line-height:1.25rem}.markstream-react .text-xs{font-size:.75rem;line-height:1rem}.markstream-react .font-medium{font-weight:500}.markstream-react .font-semibold{font-weight:600}.markstream-react .uppercase{text-transform:uppercase}.markstream-react .italic{font-style:italic}.markstream-react .leading-\[normal\]{line-height:normal}.markstream-react .leading-relaxed{line-height:1.625}.markstream-react .text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.markstream-react .text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.markstream-react .text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.markstream-react .underline{text-decoration-line:underline}.markstream-react .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.markstream-react .opacity-50{opacity:.5}.markstream-react .shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.markstream-react .shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.markstream-react .shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.markstream-react .outline{outline-style:solid}.markstream-react .blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.markstream-react .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.markstream-react .backdrop-blur{--tw-backdrop-blur: blur(8px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.markstream-react .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.markstream-react .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.markstream-react .transition-\[height\]{transition-property:height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.markstream-react .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.markstream-react .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.markstream-react .duration-100{transition-duration:.1s}.markstream-react .duration-150{transition-duration:.15s}.markstream-react .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.markstream-react .ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.markstream-react{--border: 214.3 31.8% 91.4%;--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--secondary: 210 40% 96%;--muted: 210 40% 96%;--muted-foreground: 215.4 16.3% 46.9%}.dark .markstream-react,.markstream-react.dark{--border: 217.2 32.6% 17.5%;--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--secondary: 217.2 32.6% 17.5%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%}.markdown-renderer{position:relative;contain:layout;content-visibility:auto;contain-intrinsic-size:800px 600px}.markdown-renderer.virtualized{content-visibility:visible;contain-intrinsic-size:auto}.node-slot,.node-content{width:100%}.node-placeholder{width:100%;min-height:1rem;margin:.25rem 0;border-radius:.5rem;background-image:linear-gradient(90deg,#94a3b82e,#94a3b80d,#94a3b82e);background-size:200% 100%;animation:node-placeholder-shimmer 1.1s ease-in-out infinite}.node-placeholder:first-child{margin-top:0}.node-spacer{width:100%}.fade-node,.typewriter-node{opacity:0;animation:node-enter-fade var(--fade-duration, var(--typewriter-fade-duration, .28s)) var(--fade-ease, var(--typewriter-fade-ease, cubic-bezier(.33, 0, .67, 1))) forwards}.unknown-node{color:#6a737d;font-style:italic;margin:1rem 0}.text-node{display:inline;font-weight:inherit;vertical-align:baseline;white-space:pre-wrap;word-break:break-word}.text-node.text-node-center{display:inline-flex;justify-content:center;width:100%}.text-node-stream-delta{animation-duration:var(--stream-update-fade-duration, var(--fade-duration, var(--typewriter-fade-duration, .28s)));animation-timing-function:var(--stream-update-fade-ease, var(--fade-ease, var(--typewriter-fade-ease, cubic-bezier(.33, 0, .67, 1))));animation-fill-mode:both;will-change:opacity}.text-node-stream-delta--a{animation-name:text-node-stream-update-fade-a}.text-node-stream-delta--b{animation-name:text-node-stream-update-fade-b}.paragraph-node{margin:1.25em 0;line-height:1.625}li .paragraph-node{margin:0}.blockquote-node{font-weight:500;font-style:italic;border-left:.25rem solid var(--blockquote-border-color,#e2e8f0);quotes:"“" "”" "‘" "’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.blockquote-node .markdown-renderer{content-visibility:visible;contain:content;contain-intrinsic-size:0px 0px}.heading-node{font-weight:600}.heading-1{margin-top:0;margin-bottom:calc(8 / 9 * 1em);font-size:2.25rem;line-height:calc(10 / 9 * 1);font-weight:800}.heading-2{margin-top:2rem;margin-bottom:1rem;font-size:1.5rem;line-height:calc(4 / 3 * 1)}.heading-3{margin-top:1.6em;margin-bottom:calc(3 / 5 * 1em);font-size:1.25rem;line-height:calc(5 / 3 * 1)}.heading-4,.heading-5,.heading-6{margin-top:1.5rem;margin-bottom:.5rem;font-size:1rem}.heading-5,.heading-6{margin-top:0;margin-bottom:0}.link-node{color:var(--link-color, #0366d6);text-decoration:none}.link-node:hover{text-decoration:underline;text-underline-offset:.2rem}.link-loading{color:var(--link-color, #0366d6)}.link-loading .link-text-wrapper{position:relative}.link-loading .link-text{position:relative;z-index:2}.link-loading-indicator{position:absolute;left:0;right:0;height:var(--underline-height, 2px);bottom:var(--underline-bottom, -3px);background:currentColor;border-radius:999px;will-change:opacity;opacity:var(--underline-rest-opacity, .18);animation:markstream-react-link-loading-pulse var(--underline-duration, 1.6s) var(--underline-timing, ease-in-out) var(--underline-iteration, infinite)}@keyframes markstream-react-link-loading-pulse{0%,to{opacity:var(--underline-rest-opacity, .18)}50%{opacity:var(--underline-opacity, .35)}}@keyframes text-node-stream-update-fade-a{0%{opacity:0}to{opacity:1}}@keyframes text-node-stream-update-fade-b{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.link-loading-indicator{animation:none!important;opacity:var(--underline-rest-opacity, .18)}.text-node-stream-delta{animation:none!important}.fade-node,.typewriter-node,.typewriter-cursor{animation:none!important;opacity:1}}.inline-code{padding:.125rem .375rem;border-radius:.375rem;background:#f3f4f6;font-size:.875rem}.image-node__img{display:inline-block;max-width:none;width:auto;height:auto;min-height:0;vertical-align:middle;border-radius:.75rem;opacity:0;transition:opacity .2s ease}.image-node__img.is-loaded{opacity:1}.image-node__placeholder,.image-node__error{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;width:auto;padding:1.5rem;border-radius:.75rem;vertical-align:middle}.image-node__placeholder{background:linear-gradient(120deg,#94a3b833,#e2e8f059);color:#475569;box-shadow:inset 0 0 0 1px #94a3b833}.image-node__error{color:#dc2626;background:#f8717114}.image-node__spinner{width:1rem;height:1rem;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:spin 1s linear infinite}.image-node__placeholder-text{font-size:.875rem;color:currentColor}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.footnote-node{display:flex;margin-top:var(--ms-flow-footnote-y, .5em);margin-bottom:var(--ms-flow-footnote-y, .5em);padding-top:.5rem;border-top:1px solid var(--footnote-border, hsl(var(--border)));font-size:.875rem;line-height:1.625}.footnote-reference{font-size:.75em;line-height:0}.footnote-link{color:var(--link-color, #0366d6);text-decoration:none}.footnote-link:hover{text-decoration:underline}.footnote-anchor{margin-left:.5rem;color:var(--link-color, #0366d6);text-decoration:none;cursor:pointer}.footnote-anchor:hover{text-decoration:underline}.admonition-node{border-left:4px solid #e5e7eb;border-radius:.5rem;padding:.75rem 1rem;margin:1.5rem 0;background:#f9fafbe6}.admonition-node__title{font-weight:600;margin-bottom:.5rem}.table-node-wrapper{position:relative;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;overscroll-behavior-y:auto;scrollbar-gutter:stable}.table-node{width:100%;border-collapse:collapse}.table-node th,.table-node td{white-space:normal;overflow-wrap:break-word;word-break:normal}.table-node thead th{position:relative}.table-node__resize-handle{position:absolute;top:0;right:-4px;bottom:0;z-index:1;width:8px;padding:0;border:0;background:transparent;cursor:col-resize;touch-action:none}.table-node__resize-handle:after{content:"";position:absolute;top:.35em;bottom:.35em;left:50%;width:2px;border-radius:9999px;background:#5e68798c;opacity:0;transform:translate(-50%);transition:opacity .12s ease}.table-node__resize-handle:hover:after,.table-node__resize-handle:focus-visible:after{opacity:1}.table-node .text-node,.table-node code{white-space:inherit;overflow-wrap:inherit;word-break:inherit;max-width:none}.table-node--loading tbody td{position:relative;overflow:hidden}.table-node--loading tbody td>*{visibility:hidden}.table-node--loading tbody td:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:.25rem;background:linear-gradient(90deg,#94a3b829 25%,#94a3b847,#94a3b829 75%);background-size:200% 100%;animation:table-node-shimmer 1.2s linear infinite;will-change:background-position}.table-node__loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.table-node__spinner{width:2.5rem;height:2.5rem;border-radius:999px;border:2px solid rgba(94,104,121,.25);border-top-color:#5e6879cc;animation:spin 1s linear infinite;will-change:transform}.table-node .markdown-renderer{display:contents;content-visibility:visible;contain:content;contain-intrinsic-size:0px 0px}.table-node .markdown-renderer .node-slot,.table-node .markdown-renderer .node-content,.table-node .markdown-renderer .node-space{display:contents}.markdown-renderer .markdown-renderer{content-visibility:visible;contain-intrinsic-size:auto}@keyframes table-node-shimmer{0%{background-position:0% 0%}50%{background-position:100% 0%}to{background-position:200% 0%}}.hr+.table-node-wrapper{margin-top:0}.hr+.table-node-wrapper .table-node{margin-top:0}.code-block-node{background:#0f172a;color:#fff;border-radius:.75rem;padding:1rem;margin:1.25rem 0;overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.code-block{border-radius:.75rem;background:#0f172a;color:#e2e8f0;margin:1.25rem 0;overflow:hidden;position:relative}.code-block--expanded{max-height:none}.code-block-header{display:flex;align-items:center;justify-content:space-between;padding:.65rem .9rem;background:#0f172ad9;border-bottom:1px solid rgba(148,163,184,.2)}.code-block-meta{display:flex;align-items:center;gap:.5rem}.code-block-language{font-size:.825rem;letter-spacing:.08em;text-transform:uppercase;color:#e2e8f0d9}.code-block-badge{font-size:.7rem;padding:.1rem .4rem;border-radius:9999px;background:#3b82f633;color:#bfdbfe}.code-block-actions{display:flex;gap:.35rem}.code-block-btn{border:1px solid rgba(148,163,184,.4);background:#0f172a99;color:#f8fafc;font-size:.75rem;padding:.25rem .65rem;border-radius:.35rem;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}.code-block-btn:hover{background:#3b82f6cc;border-color:#3b82f699}.code-block-body{position:relative}.code-block-body--expanded{max-height:none}.code-block-body--collapsed{min-height:0;height:0;overflow:hidden}.code-block-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0f172a99;backdrop-filter:blur(2px)}.code-block-spinner{width:2rem;height:2rem;border:2px solid rgba(255,255,255,.3);border-top-color:#ffffffe6;border-radius:9999px;animation:spin 1s linear infinite}.code-block-footer{padding:.35rem .9rem .7rem;border-top:1px solid rgba(148,163,184,.2);font-size:.75rem;color:#e2e8f0cc}.mermaid-block{border:1px solid rgba(148,163,184,.3);border-radius:1rem;background:#fff;color:#0f172a;margin:1.25rem 0;overflow:hidden}.dark .mermaid-block{background:#0f172a;color:#e2e8f0;border-color:#94a3b866}.mermaid-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;flex-direction:column;background:#0009}.mermaid-modal-panel{position:relative;width:min(64rem,calc(100% - 2rem));margin:2rem auto;border-radius:.75rem;overflow:hidden;background:#fff;color:#0f172a;box-shadow:0 24px 60px #00000038}.mermaid-modal-panel.is-dark{background:#0f172a;color:#e2e8f0}.mermaid-modal-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;border-bottom:1px solid rgba(148,163,184,.25)}.mermaid-modal-panel.is-dark .mermaid-modal-header{border-bottom-color:#94a3b840}.mermaid-modal-title{font-size:.875rem;font-weight:600}.mermaid-modal-close{font-size:.875rem;padding:.25rem .5rem;border-radius:.375rem;cursor:pointer;opacity:.9}.mermaid-modal-close:hover{opacity:1;background:#94a3b829}.mermaid-modal-body{padding:1rem;max-height:80vh;overflow:auto}.mermaid-modal-content{width:100%;height:100%;display:flex;justify-content:center}.fullscreen{width:100%;max-height:100%!important;height:100%!important}.mermaid-header{display:flex;align-items:center;justify-content:space-between;padding:.65rem .9rem;border-bottom:1px solid rgba(148,163,184,.3);background:#f8fafcd9}.dark .mermaid-header{background:#0f172ad9;border-color:#47556999}.mermaid-title__text{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:inherit}.mermaid-actions{display:flex;align-items:center;gap:.35rem}.mermaid-btn{border:1px solid rgba(148,163,184,.4);background:transparent;color:inherit;font-size:.75rem;padding:.2rem .65rem;border-radius:.35rem;cursor:pointer;transition:background .2s ease,color .2s ease}.mermaid-btn:hover{background:#3b82f626;color:#1d4ed8}.dark .mermaid-btn:hover{background:#3b82f64d;color:#bfdbfe}.mermaid-toggle{display:inline-flex;border-radius:9999px;border:1px solid rgba(148,163,184,.3);overflow:hidden}.mermaid-toggle-btn{border:none;background:transparent;color:inherit;font-size:.75rem;padding:.2rem .65rem;cursor:pointer;transition:background .2s ease}.mermaid-toggle-btn--active{background:#3b82f62e;color:#1d4ed8}.dark .mermaid-toggle-btn--active{background:#3b82f64d;color:#bfdbfe}.mermaid-body{position:relative;padding:1rem}.mermaid-preview{width:100%;min-height:180px;display:flex;align-items:center;justify-content:center;text-align:center}.mermaid-preview svg{width:100%;height:auto}.mermaid-source{background:#0f172af2;color:#e2e8f0;border-radius:.5rem;padding:1rem;overflow-x:auto}.mermaid-error{padding:.85rem 1rem;color:#b91c1c;background:#f8717126;border-top:1px solid rgba(248,113,113,.25)}.mermaid-loading{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem 1rem;font-size:.85rem;color:#0f172a99}.dark .mermaid-loading{color:#e2e8f0b3}.mermaid-spinner{width:1.2rem;height:1.2rem;border:2px solid rgba(59,130,246,.4);border-top-color:#3b82f6e6;border-radius:9999px;animation:spin .9s linear infinite}.math-block-node{margin:1rem 0}.math-inline-wrapper{position:relative;display:inline-block}.math-inline{display:inline-block;vertical-align:middle}.math-inline--hidden{visibility:hidden}.math-inline__loading{display:inline-flex;align-items:center;justify-content:center;pointer-events:none}.math-inline__spinner{width:1rem;height:1rem;border-radius:9999px;border:2px solid rgba(94,104,121,.25);border-top-color:#5e6879cc;animation:spin 1s linear infinite}.math-block{position:relative;text-align:center;overflow-x:auto;min-height:40px;padding:.5rem}.math-rendering{opacity:.3;transition:opacity .2s ease}.thematic-break{margin:3rem 0;border-top:1px solid #e2e8f0}.hr-node{margin:3rem 0;border-top:1px solid var(--hr-border-color, #e2e8f0)}.hard-break{display:block}.checkbox-node{margin-right:.5rem;vertical-align:middle}.checkbox-input{margin:0;cursor:default}.html-inline-node{display:inline}.html-inline-node--loading{opacity:.85}.html-block-node__placeholder{display:flex;flex-direction:column;gap:.35rem;padding:.5rem 0}.html-block-node__placeholder-bar{display:block;height:.8rem;border-radius:9999px;background-image:linear-gradient(90deg,#94a3b859,#94a3b81a,#94a3b859);background-size:200% 100%;animation:html-block-node-shimmer 1.2s ease infinite}@keyframes html-block-node-shimmer{0%{background-position:0% 0%}to{background-position:200% 0%}}.vmr-container{border-radius:.5rem;border:1px solid rgba(148,163,184,.35);padding:1rem;margin:1rem 0;border-left-width:4px}.admonition{--admonition-bg: #f8f8f8;--admonition-border: #eaecef;--admonition-header-bg: rgba(0, 0, 0, .03);--admonition-text: #111827;--admonition-muted: #374151;--admonition-note-color: #448aff;--admonition-tip-color: #00bfa5;--admonition-warning-color: #ff9100;--admonition-danger-color: #ff5252;margin:1rem 0;padding:0;border-radius:4px;border-left:4px solid var(--admonition-border);background-color:var(--admonition-bg);color:var(--admonition-text);overflow:hidden}.admonition-header{padding:.5rem 1rem;font-weight:600;display:flex;align-items:center;background-color:var(--admonition-header-bg);color:var(--admonition-muted)}.admonition-icon{margin-right:.5rem;color:inherit}.admonition-content{padding:.5rem 1rem 1rem;color:var(--admonition-text)}.admonition-note{border-left-color:var(--admonition-note-color)}.admonition-note .admonition-header{background-color:#448aff0f;color:var(--admonition-note-color)}.admonition-info{border-left-color:var(--admonition-note-color)}.admonition-info .admonition-header{background-color:#448aff0f;color:var(--admonition-note-color)}.admonition-tip{border-left-color:var(--admonition-tip-color)}.admonition-tip .admonition-header{background-color:#00bfa50f;color:var(--admonition-tip-color)}.admonition-warning{border-left-color:var(--admonition-warning-color)}.admonition-warning .admonition-header{background-color:#ff91000f;color:var(--admonition-warning-color)}.admonition-danger{border-left-color:var(--admonition-danger-color)}.admonition-danger .admonition-header{background-color:#ff52520f;color:var(--admonition-danger-color)}.admonition-error{border-left-color:var(--admonition-danger-color)}.admonition-error .admonition-header{background-color:#ff52520f;color:var(--admonition-danger-color)}.admonition-caution{border-left-color:var(--admonition-warning-color)}.admonition-caution .admonition-header{background-color:#ff91000f;color:var(--admonition-warning-color)}.admonition-toggle{margin-left:auto;background:transparent;border:none;color:inherit;cursor:pointer;padding:.25rem .5rem;border-radius:4px;font-size:.9rem}.admonition-toggle:focus{outline:2px solid rgba(0,0,0,.08);outline-offset:2px}.admonition.is-dark{--admonition-bg: #0b1220;--admonition-border: rgba(255, 255, 255, .06);--admonition-header-bg: rgba(255, 255, 255, .03);--admonition-text: #e6eef8;--admonition-muted: #cbd5e1}.code-block-container{contain:content;content-visibility:auto;contain-intrinsic-size:320px 180px;container-type:inline-size;--markstream-code-fallback-bg: #ffffff;--markstream-code-fallback-fg: #111827;--markstream-code-border-color: rgb(229 231 235);--markstream-code-fallback-selection-bg: rgba(0, 0, 0, .06);--vscode-editor-selectionBackground: var(--markstream-code-fallback-selection-bg);--markstream-diff-frame-border: rgb(203 213 225 / .56);--markstream-diff-frame-shadow: 0 16px 40px -32px rgb(15 23 42 / .18);--markstream-diff-shell-fg: #0f172a;--markstream-diff-shell-muted: #64748b;--markstream-diff-shell-border: rgb(148 163 184 / .18);--markstream-diff-shell-shadow: 0 30px 70px -48px rgb(15 23 42 / .42);--markstream-diff-shell-bg: radial-gradient( circle at top center, rgb(255 255 255 / .9), transparent 55% ), linear-gradient(180deg, #fffdfa 0%, #fbfcfe 100%);--markstream-diff-header-border: rgb(226 232 240 / .92);--markstream-diff-stage-bg: radial-gradient( circle at top center, rgb(255 255 255 / .95), transparent 60% ), linear-gradient(180deg, #fcfdff 0%, #f6f8fb 100%);--markstream-diff-editor-bg: #ffffff;--markstream-diff-editor-fg: #435266;--markstream-diff-unchanged-fg: lab(36.247 .0071872 -.000424832);--markstream-diff-unchanged-bg: lab(95.9989 .0180531 -.0010643);--markstream-diff-unchanged-divider: rgb(255 255 255 / .94);--markstream-diff-focus: rgb(14 165 233 / .42);--markstream-diff-widget-shadow: rgb(15 23 42 / .26);--markstream-diff-action-hover: rgb(15 23 42 / .06);--markstream-diff-panel-bg: linear-gradient(180deg, #ffffff 0%, #fbfcfe 100%);--markstream-diff-panel-bg-soft: #ffffff;--markstream-diff-panel-bg-strong: #ffffff;--markstream-diff-panel-border: rgb(226 232 240 / .3);--markstream-diff-pane-divider: rgb(226 232 240 / .42);--markstream-diff-gutter-bg: transparent;--markstream-diff-gutter-guide: transparent;--markstream-diff-gutter-gap: 16px;--markstream-diff-line-number: rgb(82 82 82 / .88);--markstream-diff-line-number-active: rgb(82 82 82 / .88);--markstream-diff-added-fg: #14b8a6;--markstream-diff-removed-fg: #ff3658;--markstream-diff-added-line: rgb(232 249 245 / .98);--markstream-diff-removed-line: rgb(255 241 241 / .98);--markstream-diff-added-inline: rgb(197 245 219 / .96);--markstream-diff-removed-inline: rgb(255 215 217 / .92);--markstream-diff-added-inline-border: transparent;--markstream-diff-removed-inline-border: transparent;--markstream-diff-added-gutter: linear-gradient( 90deg, var(--markstream-diff-added-fg) 0 var(--stream-monaco-gutter-marker-width, 4px), rgb(20 184 166 / .08) var(--stream-monaco-gutter-marker-width, 4px) 100% );--markstream-diff-removed-gutter: repeating-linear-gradient( 180deg, var(--markstream-diff-removed-fg) 0 2px, transparent 2px 4px ) left / var(--stream-monaco-gutter-marker-width, 4px) 100% no-repeat, linear-gradient(90deg, rgb(255 54 88 / .08) 0 100%);--markstream-diff-added-line-fill: rgb(231 248 244 / .96);--markstream-diff-removed-line-fill: rgb(255 241 241 / .98)}.code-block-container.is-dark{--markstream-code-fallback-bg: #111827;--markstream-code-fallback-fg: #e5e7eb;--markstream-code-border-color: rgb(55 65 81 / .3);--markstream-code-fallback-selection-bg: rgba(255, 255, 255, .08);--markstream-diff-frame-border: rgb(82 82 91 / .56);--markstream-diff-frame-shadow: 0 18px 40px -30px rgb(0 0 0 / .84);--markstream-diff-shell-fg: #e2e8f0;--markstream-diff-shell-muted: #94a3b8;--markstream-diff-shell-border: rgb(82 82 91 / .56);--markstream-diff-shell-shadow: 0 34px 80px -52px rgb(0 0 0 / .72);--markstream-diff-shell-bg: rgb(10 10 11 / .99);--markstream-diff-header-border: rgb(63 63 70 / .82);--markstream-diff-stage-bg: rgb(10 10 11 / .99);--markstream-diff-editor-bg: rgb(12 12 14 / .99);--markstream-diff-editor-fg: #b6c2d3;--markstream-diff-unchanged-fg: #cbd5e1;--markstream-diff-unchanged-bg: rgb(24 24 27 / .92);--markstream-diff-unchanged-divider: rgb(255 255 255 / .18);--markstream-diff-focus: rgb(96 165 250 / .42);--markstream-diff-widget-shadow: rgb(0 0 0 / .72);--markstream-diff-action-hover: rgb(255 255 255 / .08);--markstream-diff-panel-bg: rgb(10 10 11 / .99);--markstream-diff-panel-bg-soft: rgb(10 10 11 / .99);--markstream-diff-panel-bg-strong: rgb(10 10 11 / .99);--markstream-diff-panel-border: rgb(82 82 91 / .3);--markstream-diff-pane-divider: rgb(82 82 91 / .34);--markstream-diff-gutter-bg: linear-gradient( 180deg, rgb(13 13 15 / .94) 0%, rgb(9 9 10 / .98) 100% );--markstream-diff-gutter-guide: rgb(161 161 170 / .08);--markstream-diff-gutter-gap: 16px;--markstream-diff-line-number: rgb(161 161 170 / .68);--markstream-diff-line-number-active: rgb(228 228 231 / .82);--markstream-diff-added-fg: #5eead4;--markstream-diff-removed-fg: #fda4af;--markstream-diff-added-line: rgb(13 148 136 / .18);--markstream-diff-removed-line: rgb(225 29 72 / .18);--markstream-diff-added-inline: rgb(45 212 191 / .24);--markstream-diff-removed-inline: rgb(251 113 133 / .24);--markstream-diff-added-inline-border: transparent;--markstream-diff-removed-inline-border: transparent;--markstream-diff-added-gutter: linear-gradient( 90deg, var(--markstream-diff-added-fg) 0 var(--stream-monaco-gutter-marker-width, 4px), rgb(94 234 212 / .2) var(--stream-monaco-gutter-marker-width, 4px) 100% );--markstream-diff-removed-gutter: repeating-linear-gradient( 180deg, var(--markstream-diff-removed-fg) 0 2px, transparent 2px 4px ) left / var(--stream-monaco-gutter-marker-width, 4px) 100% no-repeat, linear-gradient(90deg, rgb(253 164 175 / .18) 0 100%);--markstream-diff-added-line-fill: linear-gradient( 90deg, rgb(15 118 110 / .38) 0%, rgb(13 148 136 / .28) 100% );--markstream-diff-removed-line-fill: linear-gradient( 90deg, rgb(159 18 57 / .38) 0%, rgb(225 29 72 / .28) 100% )}.code-editor-container{transition:height .18s ease,max-height .18s ease}.code-block-container.is-plain-text:not(.is-diff) .monaco-editor,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .monaco-editor-background,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .margin,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .lines-content{background:var(--vscode-editor-background, var(--markstream-code-fallback-bg))!important}.code-block-container.is-plain-text:not(.is-diff) .monaco-editor,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .margin,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .view-lines,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .view-line,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .view-line span,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .line-numbers{color:var(--vscode-editor-foreground, var(--markstream-code-fallback-fg))!important}.code-action-btn{cursor:pointer;opacity:.7;transition:opacity .2s}.code-action-btn:hover{opacity:1}.code-action-btn:disabled{opacity:.5;cursor:not-allowed}.code-action-btn:disabled:hover{background-color:transparent}.icon-slot{display:inline-flex;align-items:center;justify-content:center}.icon-slot svg,.icon-slot img{display:block;width:100%;height:100%}.code-editor-layer{display:grid;min-width:0}.code-editor-layer>.code-editor-container,.code-editor-layer>.code-editor-fallback-surface{grid-area:1 / 1}.code-editor-fallback-surface{overflow:auto;padding:1rem}.code-block-container.is-diff{background:var(--markstream-diff-shell-bg);box-shadow:var(--markstream-diff-shell-shadow);border-color:var(--markstream-diff-shell-border);--vscode-editor-selectionBackground: var(--markstream-diff-action-hover)}.code-block-container.is-diff .code-block-header{padding:18px 20px 14px;color:var(--markstream-diff-shell-fg);background:transparent;border-bottom-color:var(--markstream-diff-header-border)}.code-block-container.is-diff .code-editor-layer{padding:4px 4px 8px;background:var(--markstream-diff-stage-bg);--vscode-editor-background: var(--markstream-diff-editor-bg);--vscode-editor-foreground: var(--markstream-diff-editor-fg);--vscode-diffEditor-unchangedRegionForeground: var(--markstream-diff-unchanged-fg);--vscode-diffEditor-unchangedRegionBackground: var(--markstream-diff-unchanged-bg);--vscode-focusBorder: var(--markstream-diff-focus);--vscode-widget-shadow: var(--markstream-diff-widget-shadow)}.code-block-container .monaco-diff-editor .diffOverview{background-color:var(--vscode-editor-background, #111827)}.code-block-container .stream-monaco-diff-root .monaco-diff-editor .diffOverview,.code-block-container .stream-monaco-diff-root .decorationsOverviewRuler{display:none!important;width:0!important;min-width:0!important;max-width:0!important;border:0!important;background:transparent!important;opacity:0!important;pointer-events:none!important;overflow:hidden!important}.code-block-container .stream-monaco-diff-root .monaco-diff-editor{border:0!important;border-radius:0!important;box-shadow:none!important}.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center:not(.stream-monaco-clickable)>*:not(a){visibility:hidden!important}.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines-compact .text{opacity:0!important}.code-block-container .stream-monaco-diff-root{--stream-monaco-gutter-gap: var(--markstream-diff-gutter-gap) !important;--stream-monaco-line-number: var(--markstream-diff-line-number) !important;--stream-monaco-line-number-active: var(--markstream-diff-line-number-active) !important;--stream-monaco-added-fg: var(--markstream-diff-added-fg) !important;--stream-monaco-removed-fg: var(--markstream-diff-removed-fg) !important;--stream-monaco-added-line: var(--markstream-diff-added-line) !important;--stream-monaco-removed-line: var(--markstream-diff-removed-line) !important;--stream-monaco-added-inline: var(--markstream-diff-added-inline) !important;--stream-monaco-removed-inline: var(--markstream-diff-removed-inline) !important;--stream-monaco-added-inline-border: var(--markstream-diff-added-inline-border) !important;--stream-monaco-removed-inline-border: var(--markstream-diff-removed-inline-border) !important;--stream-monaco-added-line-fill: var(--markstream-diff-added-line-fill) !important;--stream-monaco-removed-line-fill: var(--markstream-diff-removed-line-fill) !important;--stream-monaco-added-gutter: var(--markstream-diff-added-gutter) !important;--stream-monaco-removed-gutter: var(--markstream-diff-removed-gutter) !important;--stream-monaco-added-line-shadow: none !important;--stream-monaco-removed-line-shadow: none !important;--stream-monaco-unchanged-bg: var(--markstream-diff-unchanged-bg) !important;--stream-monaco-unchanged-fg: var(--markstream-diff-unchanged-fg) !important}.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center:not(.stream-monaco-unchanged-bridge-source),.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge{--stream-monaco-unchanged-bg: var(--markstream-diff-unchanged-bg) !important;--stream-monaco-unchanged-fg: var(--markstream-diff-unchanged-fg) !important;background:var(--stream-monaco-unchanged-bg)!important;color:var(--stream-monaco-unchanged-fg)!important}.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge{right:calc(var(--stream-monaco-gutter-marker-width) - var(--stream-monaco-unchanged-rail-width) / 2 + (var(--stream-monaco-gutter-gap) * 2))!important;width:auto!important}.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary:hover,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary:focus-visible,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary.stream-monaco-focus-visible{background:var(--stream-monaco-unchanged-bg)!important;color:var(--markstream-diff-unchanged-fg)!important;padding-left:calc(var(--stream-monaco-gutter-marker-width) + (var(--stream-monaco-gutter-gap) * 2))!important;padding-right:calc(var(--stream-monaco-gutter-marker-width) + (var(--stream-monaco-gutter-gap) * 2))!important}.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-rail,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge.stream-monaco-diff-unchanged-bridge-line-info .stream-monaco-unchanged-rail,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal:hover,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal:focus-visible,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal.stream-monaco-focus-visible{background:var(--stream-monaco-unchanged-bg)!important}.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-rail{border-right-color:var(--markstream-diff-unchanged-divider)!important}.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal{border-bottom-color:transparent!important}.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{border-bottom-color:var(--markstream-diff-unchanged-divider)!important}.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,.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{border-bottom:0!important}.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center .stream-monaco-unchanged-meta,.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center .stream-monaco-unchanged-count,.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center .stream-monaco-unchanged-metadata-label,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-meta,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-count,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-metadata-label,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal:hover,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal:focus-visible,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal.stream-monaco-focus-visible{color:var(--markstream-diff-unchanged-fg)!important}.code-block-content{max-height:min(70vh,500px);overflow:auto;transition:max-height .3s ease;font-family:var(--vscode-editor-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);line-height:var(--vscode-editor-line-height, 1.5)}.code-block-render{min-height:1px}.code-fallback-plain{white-space:pre;overflow:auto;background:transparent;color:inherit;font-size:var(--vscode-editor-font-size, 12px);line-height:var(--vscode-editor-line-height, 18px);font-family:var(--vscode-editor-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-weight:var(--vscode-editor-font-weight, 400)}.code-fallback-plain>code{font-size:inherit;line-height:inherit;font-family:inherit;font-weight:inherit}.code-loading-placeholder{padding:1rem;min-height:120px}.loading-skeleton{display:flex;flex-direction:column;gap:.75rem}.skeleton-line{height:1rem;background:linear-gradient(90deg,#0000000f 25%,#0000001f 37%,#0000000f 63%);background-size:400% 100%;animation:code-skeleton-shimmer 1.2s ease-in-out infinite;border-radius:.25rem}.code-block-container.is-dark .skeleton-line{background:linear-gradient(90deg,#ffffff0f 25%,#ffffff1f 37%,#ffffff0f 63%);background-size:400% 100%}.skeleton-line.short{width:60%}@keyframes code-skeleton-shimmer{0%{background-position:100% 0}to{background-position:0 0}}.markstream-react pre[class^=language-],.markstream-react pre[class*=" language-"]{white-space:pre;overflow:auto;-moz-tab-size:2;-o-tab-size:2;tab-size:2;font-variant-ligatures:none;contain:content;backface-visibility:hidden;transform:translateZ(0);-webkit-font-smoothing:antialiased}.markstream-react pre[class^=language-]>code,.markstream-react pre[class*=" language-"]>code{display:block}.markstream-react pre[class^=language-]:focus,.markstream-react pre[class*=" language-"]:focus{outline:2px solid var(--vmdr-focus, #3b82f6);outline-offset:2px}.html-preview-frame__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:50}.html-preview-frame__backdrop--dark{background-color:#0f172acc}.html-preview-frame{width:80vw;max-width:960px;height:70vh;background-color:#fff;border-radius:.5rem;overflow:hidden;box-shadow:0 10px 40px #00000040;display:flex;flex-direction:column}.html-preview-frame--dark{background-color:#020617;color:#e5e7eb;box-shadow:0 10px 40px #0009}.html-preview-frame__header{display:flex;justify-content:space-between;align-items:center;padding:.4rem .75rem;border-bottom:1px solid rgba(0,0,0,.06)}.html-preview-frame--dark .html-preview-frame__header{border-bottom-color:#94a3b859}.html-preview-frame__title{display:inline-flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:500;letter-spacing:.02em;text-transform:uppercase;opacity:.85}.html-preview-frame__dot{width:.5rem;height:.5rem;border-radius:999px;background-color:#22c55e}.html-preview-frame--dark .html-preview-frame__dot{background-color:#4ade80}.html-preview-frame__label{white-space:nowrap}.html-preview-frame__close{border:none;background:transparent;font-size:1.25rem;line-height:1;cursor:pointer}.html-preview-frame__close--dark{color:#e5e7eb}.html-preview-frame__iframe{width:100%;height:100%;border:none;display:block}@media(max-width:640px){.html-preview-frame{width:100vw;height:80vh;border-radius:0}}.ms-tooltip{position:fixed;padding:.4rem .65rem;font-size:.875rem;border-radius:.375rem;border-width:1px;border-style:solid;box-shadow:0 10px 15px #00000014;pointer-events:none;z-index:9999;opacity:0;transition:opacity .12s linear,transform .22s cubic-bezier(.16,1,.3,1)}.ms-tooltip[data-visible=true]{opacity:1}.ms-tooltip[data-dark=true]{background-color:#111827;color:#f9fafb;border-color:#374151}.ms-tooltip[data-dark=false],.ms-tooltip:not([data-dark=true]){background-color:#fff;color:#111827;border-color:#e5e7eb}@keyframes node-placeholder-shimmer{0%{background-position:200% 0%}to{background-position:-200% 0%}}@keyframes node-enter-fade{0%{opacity:0}to{opacity:1}}@keyframes typewriter-fade{0%{opacity:0}to{opacity:1}}.typewriter-cursor{position:absolute;left:0;top:0;display:inline-block;width:.55em;height:1em;margin-left:.08em;vertical-align:-.12em;border-right:2px solid currentColor;pointer-events:none;animation:typewriter-cursor-blink 1s steps(1,end) infinite}@keyframes typewriter-cursor-blink{0%,49%{opacity:1}50%,to{opacity:0}}.markstream-react .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes spin{to{transform:rotate(360deg)}}.d2-block-body{position:relative}.d2-source{font-family:var(--vscode-editor-font-family, "Fira Code", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace)}.d2-code{white-space:pre;font-size:.875rem;line-height:1.5}.d2-render{overflow:auto}.d2-svg svg.markstream-d2-root-svg{width:100%;max-width:100%;height:auto;display:block}.mode-btn{opacity:.7;transition:opacity .2s}.mode-btn.is-active{opacity:1;font-weight:600}.d2-action-btn{opacity:.7;transition:opacity .2s}.d2-action-btn:hover{opacity:1}.d2-action-btn:disabled{opacity:.3;cursor:not-allowed}.d2-error{color:#dc2626}body>div[id^=dmermaid-]{position:fixed;top:-10000px;left:0;width:100%;visibility:hidden;pointer-events:none}.markstream-react .hover\:bg-\[hsl\(var\(--secondary\)\)\]:hover{background-color:hsl(var(--secondary))}.markstream-react .hover\:bg-\[var\(--vscode-editor-selectionBackground\)\]:hover{background-color:var(--vscode-editor-selectionBackground)}.markstream-react .hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.markstream-react .hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.markstream-react .hover\:text-gray-200:hover{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.markstream-react .hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.markstream-react .hover\:underline:hover{text-decoration-line:underline}@media not all and (min-width:1024px){.markstream-react .max-lg\:my-\[calc\(4\/3\*1em\)\]{margin-top:calc(4 / 3 * 1em);margin-bottom:calc(4 / 3 * 1em)}.markstream-react .max-lg\:pl-\[calc\(14\/9\*1em\)\]{padding-left:calc(14 / 9 * 1em)}}
1
+ :where(.markstream-react) button{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:transparent;border:0;font:inherit;color:inherit}.markstream-react .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.markstream-react .pointer-events-none{pointer-events:none}.markstream-react .visible{visibility:visible}.markstream-react .collapse{visibility:collapse}.markstream-react .fixed{position:fixed}.markstream-react .absolute{position:absolute}.markstream-react .relative{position:relative}.markstream-react .inset-0{top:0;right:0;bottom:0;left:0}.markstream-react .right-2{right:.5rem}.markstream-react .right-6{right:1.5rem}.markstream-react .top-2{top:.5rem}.markstream-react .top-6{top:1.5rem}.markstream-react .z-10{z-index:10}.markstream-react .z-50{z-index:50}.markstream-react .z-\[9999\]{z-index:9999}.markstream-react .m-0{margin:0}.markstream-react .mx-0\.5{margin-left:.125rem;margin-right:.125rem}.markstream-react .my-2{margin-top:.5rem;margin-bottom:.5rem}.markstream-react .my-4{margin-top:1rem;margin-bottom:1rem}.markstream-react .my-5{margin-top:1.25rem;margin-bottom:1.25rem}.markstream-react .my-8{margin-top:2rem;margin-bottom:2rem}.markstream-react .mb-4{margin-bottom:1rem}.markstream-react .ml-4{margin-left:1rem}.markstream-react .mt-2{margin-top:.5rem}.markstream-react .block{display:block}.markstream-react .inline-block{display:inline-block}.markstream-react .inline{display:inline}.markstream-react .flex{display:flex}.markstream-react .inline-flex{display:inline-flex}.markstream-react .table{display:table}.markstream-react .grid{display:grid}.markstream-react .contents{display:contents}.markstream-react .list-item{display:list-item}.markstream-react .hidden{display:none}.markstream-react .h-3{height:.75rem}.markstream-react .h-4{height:1rem}.markstream-react .h-full{height:100%}.markstream-react .max-h-full{max-height:100%}.markstream-react .min-h-\[360px\]{min-height:360px}.markstream-react .min-h-\[40px\]{min-height:40px}.markstream-react .min-h-full{min-height:100%}.markstream-react .w-2\/3{width:66.666667%}.markstream-react .w-3{width:.75rem}.markstream-react .w-4{width:1rem}.markstream-react .w-4\/5{width:80%}.markstream-react .w-full{width:100%}.markstream-react .max-w-full{max-width:100%}.markstream-react .flex-1{flex:1 1 0%}.markstream-react .flex-shrink-0{flex-shrink:0}.markstream-react .border-collapse{border-collapse:collapse}.markstream-react .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.markstream-react .cursor-grab{cursor:grab}.markstream-react .cursor-grabbing{cursor:grabbing}.markstream-react .cursor-not-allowed{cursor:not-allowed}.markstream-react .cursor-pointer{cursor:pointer}.markstream-react .list-decimal{list-style-type:decimal}.markstream-react .list-disc{list-style-type:disc}.markstream-react .items-center{align-items:center}.markstream-react .items-baseline{align-items:baseline}.markstream-react .justify-center{justify-content:center}.markstream-react .justify-between{justify-content:space-between}.markstream-react .gap-1\.5{gap:.375rem}.markstream-react .gap-2{gap:.5rem}.markstream-react .gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.markstream-react .gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.markstream-react :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.markstream-react :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.markstream-react .overflow-hidden{overflow:hidden}.markstream-react .overflow-x-auto{overflow-x:auto}.markstream-react .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.markstream-react .whitespace-normal{white-space:normal}.markstream-react .whitespace-nowrap{white-space:nowrap}.markstream-react .whitespace-pre-wrap{white-space:pre-wrap}.markstream-react .break-words{overflow-wrap:break-word}.markstream-react .rounded{border-radius:calc(var(--ms-radius) * .5)}.markstream-react .rounded-lg{border-radius:var(--ms-radius)}.markstream-react .rounded-md{border-radius:calc(var(--ms-radius) * .75)}.markstream-react .border{border-width:1px}.markstream-react .border-b{border-bottom-width:1px}.markstream-react .border-t{border-top-width:1px}.markstream-react .border-\[var\(--footnote-border\,\#eaecef\)\]{border-color:var(--footnote-border,#eaecef)}.markstream-react .border-\[var\(--table-border\,\#cbd5e1\)\]{border-color:var(--table-border,#cbd5e1)}.markstream-react .border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.markstream-react .border-gray-400\/5{border-color:#9ca3af0d}.markstream-react .border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity, 1))}.markstream-react .border-gray-700\/30{border-color:#3741514d}.markstream-react .bg-\[hsl\(var\(--muted\)\)\]{background-color:hsl(var(--muted))}.markstream-react .bg-\[hsl\(var\(--secondary\)\)\]{background-color:hsl(var(--secondary))}.markstream-react .bg-black\/70{background-color:#000000b3}.markstream-react .bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.markstream-react .bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.markstream-react .bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.markstream-react .bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.markstream-react .bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.markstream-react .bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.markstream-react .bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.markstream-react .p-0\.5{padding:.125rem}.markstream-react .p-2{padding:.5rem}.markstream-react .p-4{padding:1rem}.markstream-react .p-\[calc\(4\/7\*1em\)\]{padding:calc(4 / 7 * 1em)}.markstream-react .px-1{padding-left:.25rem;padding-right:.25rem}.markstream-react .px-1\.5{padding-left:.375rem;padding-right:.375rem}.markstream-react .px-2{padding-left:.5rem;padding-right:.5rem}.markstream-react .px-2\.5{padding-left:.625rem;padding-right:.625rem}.markstream-react .px-3{padding-left:.75rem;padding-right:.75rem}.markstream-react .px-4{padding-left:1rem;padding-right:1rem}.markstream-react .py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.markstream-react .py-1{padding-top:.25rem;padding-bottom:.25rem}.markstream-react .py-2{padding-top:.5rem;padding-bottom:.5rem}.markstream-react .py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.markstream-react .py-4{padding-top:1rem;padding-bottom:1rem}.markstream-react .pb-3{padding-bottom:.75rem}.markstream-react .pl-1\.5{padding-left:.375rem}.markstream-react .pl-\[calc\(13\/8\*1em\)\]{padding-left:1.625em}.markstream-react .pt-2{padding-top:.5rem}.markstream-react .text-left{text-align:left}.markstream-react .text-center{text-align:center}.markstream-react .text-right{text-align:right}.markstream-react .font-mono{font-family:var(--ms-font-mono)}.markstream-react .text-\[85\%\]{font-size:85%}.markstream-react .text-base{font-size:1rem;line-height:1.5rem}.markstream-react .text-sm{font-size:.875rem;line-height:1.25rem}.markstream-react .text-xs{font-size:.75rem;line-height:1rem}.markstream-react .font-medium{font-weight:500}.markstream-react .font-semibold{font-weight:600}.markstream-react .uppercase{text-transform:uppercase}.markstream-react .italic{font-style:italic}.markstream-react .leading-\[normal\]{line-height:normal}.markstream-react .leading-relaxed{line-height:1.625}.markstream-react .text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.markstream-react .text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.markstream-react .text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.markstream-react .text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.markstream-react .underline{text-decoration-line:underline}.markstream-react .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.markstream-react .opacity-50{opacity:.5}.markstream-react .shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.markstream-react .shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.markstream-react .shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.markstream-react .outline{outline-style:solid}.markstream-react .blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.markstream-react .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.markstream-react .backdrop-blur{--tw-backdrop-blur: blur(8px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.markstream-react .backdrop-filter{backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.markstream-react .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.markstream-react .transition-\[height\]{transition-property:height;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.markstream-react .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.markstream-react .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.markstream-react .duration-100{transition-duration:.1s}.markstream-react .duration-150{transition-duration:.15s}.markstream-react .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.markstream-react .ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.markstream-react{--border: 214.3 31.8% 91.4%;--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--secondary: 210 40% 96%;--muted: 210 40% 96%;--muted-foreground: 215.4 16.3% 46.9%}.dark .markstream-react,.markstream-react.dark{--border: 217.2 32.6% 17.5%;--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--secondary: 217.2 32.6% 17.5%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%}.markdown-renderer{position:relative;contain:layout;content-visibility:auto;contain-intrinsic-size:800px 600px}.markdown-renderer.virtualized{content-visibility:visible;contain-intrinsic-size:auto}.node-slot,.node-content{width:100%}.node-placeholder{width:100%;min-height:1rem;margin:.25rem 0;border-radius:.5rem;background-image:linear-gradient(90deg,#94a3b82e,#94a3b80d,#94a3b82e);background-size:200% 100%;animation:node-placeholder-shimmer 1.1s ease-in-out infinite}.node-placeholder:first-child{margin-top:0}.node-spacer{width:100%}.fade-node,.typewriter-node{opacity:0;animation:node-enter-fade var(--fade-duration, var(--typewriter-fade-duration, .28s)) var(--fade-ease, var(--typewriter-fade-ease, cubic-bezier(.33, 0, .67, 1))) forwards}.unknown-node{color:#6a737d;font-style:italic;margin:1rem 0}.text-node{display:inline;font-weight:inherit;vertical-align:baseline;white-space:pre-wrap;word-break:break-word}.text-node.text-node-center{display:inline-flex;justify-content:center;width:100%}.text-node-stream-delta{animation-duration:var(--stream-update-fade-duration, var(--fade-duration, var(--typewriter-fade-duration, .28s)));animation-timing-function:var(--stream-update-fade-ease, var(--fade-ease, var(--typewriter-fade-ease, cubic-bezier(.33, 0, .67, 1))));animation-fill-mode:both;will-change:opacity}.text-node-stream-delta--a{animation-name:text-node-stream-update-fade-a}.text-node-stream-delta--b{animation-name:text-node-stream-update-fade-b}.paragraph-node{margin:1.25em 0;line-height:1.625}li .paragraph-node{margin:0}.blockquote-node{font-weight:500;font-style:italic;border-left:.25rem solid var(--blockquote-border-color,#e2e8f0);quotes:"“" "”" "‘" "’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.blockquote-node .markdown-renderer{content-visibility:visible;contain:content;contain-intrinsic-size:0px 0px}.heading-node{font-weight:600}.heading-1{margin-top:0;margin-bottom:calc(8 / 9 * 1em);font-size:2.25rem;line-height:calc(10 / 9 * 1);font-weight:800}.heading-2{margin-top:2rem;margin-bottom:1rem;font-size:1.5rem;line-height:calc(4 / 3 * 1)}.heading-3{margin-top:1.6em;margin-bottom:calc(3 / 5 * 1em);font-size:1.25rem;line-height:calc(5 / 3 * 1)}.heading-4,.heading-5,.heading-6{margin-top:1.5rem;margin-bottom:.5rem;font-size:1rem}.heading-5,.heading-6{margin-top:0;margin-bottom:0}.link-node{color:var(--link-color, #0366d6);text-decoration:none}.link-node:hover{text-decoration:underline;text-underline-offset:.2rem}.link-loading{color:var(--link-color, #0366d6)}.link-loading .link-text-wrapper{position:relative}.link-loading .link-text{position:relative;z-index:2}.link-loading-indicator{position:absolute;left:0;right:0;height:var(--underline-height, 2px);bottom:var(--underline-bottom, -3px);background:currentColor;border-radius:999px;will-change:opacity;opacity:var(--underline-rest-opacity, .18);animation:markstream-react-link-loading-pulse var(--underline-duration, 1.6s) var(--underline-timing, ease-in-out) var(--underline-iteration, infinite)}@keyframes markstream-react-link-loading-pulse{0%,to{opacity:var(--underline-rest-opacity, .18)}50%{opacity:var(--underline-opacity, .35)}}@keyframes text-node-stream-update-fade-a{0%{opacity:0}to{opacity:1}}@keyframes text-node-stream-update-fade-b{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){.link-loading-indicator{animation:none!important;opacity:var(--underline-rest-opacity, .18)}.text-node-stream-delta{animation:none!important}.fade-node,.typewriter-node,.typewriter-cursor{animation:none!important;opacity:1}}.inline-code{padding:.125rem .375rem;border-radius:.375rem;background:#f3f4f6;font-size:.875rem}.image-node__img{display:inline-block;max-width:none;width:auto;height:auto;min-height:0;vertical-align:middle;border-radius:.75rem;opacity:0;transition:opacity .2s ease}.image-node__img.is-loaded{opacity:1}.image-node__placeholder,.image-node__error{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;width:auto;padding:1.5rem;border-radius:.75rem;vertical-align:middle}.image-node__placeholder{background:linear-gradient(120deg,#94a3b833,#e2e8f059);color:#475569;box-shadow:inset 0 0 0 1px #94a3b833}.image-node__error{color:#dc2626;background:#f8717114}.image-node__spinner{width:1rem;height:1rem;border-radius:999px;border:2px solid currentColor;border-top-color:transparent;animation:spin 1s linear infinite}.image-node__placeholder-text{font-size:.875rem;color:currentColor}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.footnote-node{display:flex;margin-top:var(--ms-flow-footnote-y, .5em);margin-bottom:var(--ms-flow-footnote-y, .5em);padding-top:.5rem;border-top:1px solid var(--footnote-border, hsl(var(--border)));font-size:.875rem;line-height:1.625}.footnote-reference{font-size:.75em;line-height:0}.footnote-link{color:var(--link-color, #0366d6);text-decoration:none}.footnote-link:hover{text-decoration:underline}.footnote-anchor{margin-left:.5rem;color:var(--link-color, #0366d6);text-decoration:none;cursor:pointer}.footnote-anchor:hover{text-decoration:underline}.admonition-node{border-left:4px solid #e5e7eb;border-radius:.5rem;padding:.75rem 1rem;margin:1.5rem 0;background:#f9fafbe6}.admonition-node__title{font-weight:600;margin-bottom:.5rem}.table-node-wrapper{position:relative;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;overscroll-behavior-y:auto;scrollbar-gutter:stable}.table-node{width:100%;border-collapse:collapse}.table-node th,.table-node td{white-space:normal;overflow-wrap:break-word;word-break:normal}.table-node thead th{position:relative}.table-node__resize-handle{position:absolute;top:0;right:-4px;bottom:0;z-index:1;width:8px;padding:0;border:0;background:transparent;cursor:col-resize;touch-action:none}.table-node__resize-handle:after{content:"";position:absolute;top:.35em;bottom:.35em;left:50%;width:2px;border-radius:9999px;background:#5e68798c;opacity:0;transform:translate(-50%);transition:opacity .12s ease}.table-node__resize-handle:hover:after,.table-node__resize-handle:focus-visible:after{opacity:1}.table-node .text-node,.table-node code{white-space:inherit;overflow-wrap:inherit;word-break:inherit;max-width:none}.table-node--loading tbody td{position:relative;overflow:hidden}.table-node--loading tbody td>*{visibility:hidden}.table-node--loading tbody td:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:.25rem;background:linear-gradient(90deg,#94a3b829 25%,#94a3b847,#94a3b829 75%);background-size:200% 100%;animation:table-node-shimmer 1.2s linear infinite;will-change:background-position}.table-node__loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.table-node__spinner{width:2.5rem;height:2.5rem;border-radius:999px;border:2px solid rgba(94,104,121,.25);border-top-color:#5e6879cc;animation:spin 1s linear infinite;will-change:transform}.table-node .markdown-renderer{display:contents;content-visibility:visible;contain:content;contain-intrinsic-size:0px 0px}.table-node .markdown-renderer .node-slot,.table-node .markdown-renderer .node-content,.table-node .markdown-renderer .node-space{display:contents}.markdown-renderer .markdown-renderer{content-visibility:visible;contain-intrinsic-size:auto}@keyframes table-node-shimmer{0%{background-position:0% 0%}50%{background-position:100% 0%}to{background-position:200% 0%}}.hr+.table-node-wrapper{margin-top:0}.hr+.table-node-wrapper .table-node{margin-top:0}.code-block-node{background:#0f172a;color:#fff;border-radius:.75rem;padding:1rem;margin:1.25rem 0;overflow-x:auto;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.code-block{border-radius:.75rem;background:#0f172a;color:#e2e8f0;margin:1.25rem 0;overflow:hidden;position:relative}.code-block--expanded{max-height:none}.code-block-header{display:flex;align-items:center;justify-content:space-between;padding:.65rem .9rem;background:#0f172ad9;border-bottom:1px solid rgba(148,163,184,.2)}.code-block-meta{display:flex;align-items:center;gap:.5rem}.code-block-language{font-size:.825rem;letter-spacing:.08em;text-transform:uppercase;color:#e2e8f0d9}.code-block-badge{font-size:.7rem;padding:.1rem .4rem;border-radius:9999px;background:#3b82f633;color:#bfdbfe}.code-block-actions{display:flex;gap:.35rem}.code-block-btn{border:1px solid rgba(148,163,184,.4);background:#0f172a99;color:#f8fafc;font-size:.75rem;padding:.25rem .65rem;border-radius:.35rem;cursor:pointer;transition:background .2s ease,color .2s ease,border-color .2s ease}.code-block-btn:hover{background:#3b82f6cc;border-color:#3b82f699}.code-block-body{position:relative}.code-block-body--expanded{max-height:none}.code-block-body--collapsed{min-height:0;height:0;overflow:hidden}.code-block-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0f172a99;backdrop-filter:blur(2px)}.code-block-spinner{width:2rem;height:2rem;border:2px solid rgba(255,255,255,.3);border-top-color:#ffffffe6;border-radius:9999px;animation:spin 1s linear infinite}.code-block-footer{padding:.35rem .9rem .7rem;border-top:1px solid rgba(148,163,184,.2);font-size:.75rem;color:#e2e8f0cc}.mermaid-block{border:1px solid rgba(148,163,184,.3);border-radius:1rem;background:#fff;color:#0f172a;margin:1.25rem 0;overflow:hidden}.dark .mermaid-block{background:#0f172a;color:#e2e8f0;border-color:#94a3b866}.mermaid-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;flex-direction:column;background:#0009}.mermaid-modal-panel{position:relative;width:min(64rem,calc(100% - 2rem));margin:2rem auto;border-radius:.75rem;overflow:hidden;background:#fff;color:#0f172a;box-shadow:0 24px 60px #00000038}.mermaid-modal-panel.is-dark{background:#0f172a;color:#e2e8f0}.mermaid-modal-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;border-bottom:1px solid rgba(148,163,184,.25)}.mermaid-modal-panel.is-dark .mermaid-modal-header{border-bottom-color:#94a3b840}.mermaid-modal-title{font-size:.875rem;font-weight:600}.mermaid-modal-close{font-size:.875rem;padding:.25rem .5rem;border-radius:.375rem;cursor:pointer;opacity:.9}.mermaid-modal-close:hover{opacity:1;background:#94a3b829}.mermaid-modal-body{padding:1rem;max-height:80vh;overflow:auto}.mermaid-modal-content{width:100%;height:100%;display:flex;justify-content:center}.fullscreen{width:100%;max-height:100%!important;height:100%!important}.mermaid-header{display:flex;align-items:center;justify-content:space-between;padding:.65rem .9rem;border-bottom:1px solid rgba(148,163,184,.3);background:#f8fafcd9}.dark .mermaid-header{background:#0f172ad9;border-color:#47556999}.mermaid-title__text{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:inherit}.mermaid-actions{display:flex;align-items:center;gap:.35rem}.mermaid-btn{border:1px solid rgba(148,163,184,.4);background:transparent;color:inherit;font-size:.75rem;padding:.2rem .65rem;border-radius:.35rem;cursor:pointer;transition:background .2s ease,color .2s ease}.mermaid-btn:hover{background:#3b82f626;color:#1d4ed8}.dark .mermaid-btn:hover{background:#3b82f64d;color:#bfdbfe}.mermaid-toggle{display:inline-flex;border-radius:9999px;border:1px solid rgba(148,163,184,.3);overflow:hidden}.mermaid-toggle-btn{border:none;background:transparent;color:inherit;font-size:.75rem;padding:.2rem .65rem;cursor:pointer;transition:background .2s ease}.mermaid-toggle-btn--active{background:#3b82f62e;color:#1d4ed8}.dark .mermaid-toggle-btn--active{background:#3b82f64d;color:#bfdbfe}.mermaid-body{position:relative;padding:1rem}.mermaid-preview{width:100%;min-height:180px;display:flex;align-items:center;justify-content:center;text-align:center}.mermaid-preview svg{width:100%;height:auto}.mermaid-source{background:#0f172af2;color:#e2e8f0;border-radius:.5rem;padding:1rem;overflow-x:auto}.mermaid-error{padding:.85rem 1rem;color:#b91c1c;background:#f8717126;border-top:1px solid rgba(248,113,113,.25)}.mermaid-loading{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem 1rem;font-size:.85rem;color:#0f172a99}.dark .mermaid-loading{color:#e2e8f0b3}.mermaid-spinner{width:1.2rem;height:1.2rem;border:2px solid rgba(59,130,246,.4);border-top-color:#3b82f6e6;border-radius:9999px;animation:spin .9s linear infinite}.math-block-node{margin:1rem 0}.math-inline-wrapper{position:relative;display:inline-block}.math-inline{display:inline-block;vertical-align:middle}.math-inline--hidden{visibility:hidden}.math-inline__loading{display:inline-flex;align-items:center;justify-content:center;pointer-events:none}.math-inline__spinner{width:1rem;height:1rem;border-radius:9999px;border:2px solid rgba(94,104,121,.25);border-top-color:#5e6879cc;animation:spin 1s linear infinite}.math-block{position:relative;text-align:center;overflow-x:auto;min-height:40px;padding:.5rem}.math-rendering{opacity:.3;transition:opacity .2s ease}.thematic-break{margin:3rem 0;border-top:1px solid #e2e8f0}.hr-node{margin:3rem 0;border-top:1px solid var(--hr-border-color, #e2e8f0)}.hard-break{display:block}.checkbox-node{margin-right:.5rem;vertical-align:middle}.checkbox-input{margin:0;cursor:default}.html-inline-node{display:inline}.html-inline-node--loading{opacity:.85}.html-block-node__placeholder{display:flex;flex-direction:column;gap:.35rem;padding:.5rem 0}.html-block-node__placeholder-bar{display:block;height:.8rem;border-radius:9999px;background-image:linear-gradient(90deg,#94a3b859,#94a3b81a,#94a3b859);background-size:200% 100%;animation:html-block-node-shimmer 1.2s ease infinite}@keyframes html-block-node-shimmer{0%{background-position:0% 0%}to{background-position:200% 0%}}.vmr-container{border-radius:.5rem;border:1px solid rgba(148,163,184,.35);padding:1rem;margin:1rem 0;border-left-width:4px}.admonition{--admonition-bg: #f8f8f8;--admonition-border: #eaecef;--admonition-header-bg: rgba(0, 0, 0, .03);--admonition-text: #111827;--admonition-muted: #374151;--admonition-note-color: #448aff;--admonition-tip-color: #00bfa5;--admonition-warning-color: #ff9100;--admonition-danger-color: #ff5252;margin:1rem 0;padding:0;border-radius:4px;border-left:4px solid var(--admonition-border);background-color:var(--admonition-bg);color:var(--admonition-text);overflow:hidden}.admonition-header{padding:.5rem 1rem;font-weight:600;display:flex;align-items:center;background-color:var(--admonition-header-bg);color:var(--admonition-muted)}.admonition-icon{margin-right:.5rem;color:inherit}.admonition-content{padding:.5rem 1rem 1rem;color:var(--admonition-text)}.admonition-note{border-left-color:var(--admonition-note-color)}.admonition-note .admonition-header{background-color:#448aff0f;color:var(--admonition-note-color)}.admonition-info{border-left-color:var(--admonition-note-color)}.admonition-info .admonition-header{background-color:#448aff0f;color:var(--admonition-note-color)}.admonition-tip{border-left-color:var(--admonition-tip-color)}.admonition-tip .admonition-header{background-color:#00bfa50f;color:var(--admonition-tip-color)}.admonition-warning{border-left-color:var(--admonition-warning-color)}.admonition-warning .admonition-header{background-color:#ff91000f;color:var(--admonition-warning-color)}.admonition-danger{border-left-color:var(--admonition-danger-color)}.admonition-danger .admonition-header{background-color:#ff52520f;color:var(--admonition-danger-color)}.admonition-error{border-left-color:var(--admonition-danger-color)}.admonition-error .admonition-header{background-color:#ff52520f;color:var(--admonition-danger-color)}.admonition-caution{border-left-color:var(--admonition-warning-color)}.admonition-caution .admonition-header{background-color:#ff91000f;color:var(--admonition-warning-color)}.admonition-toggle{margin-left:auto;background:transparent;border:none;color:inherit;cursor:pointer;padding:.25rem .5rem;border-radius:4px;font-size:.9rem}.admonition-toggle:focus{outline:2px solid rgba(0,0,0,.08);outline-offset:2px}.admonition.is-dark{--admonition-bg: #0b1220;--admonition-border: rgba(255, 255, 255, .06);--admonition-header-bg: rgba(255, 255, 255, .03);--admonition-text: #e6eef8;--admonition-muted: #cbd5e1}.code-block-container{contain:content;content-visibility:auto;contain-intrinsic-size:320px 180px;container-type:inline-size;--markstream-code-fallback-bg: #ffffff;--markstream-code-fallback-fg: #111827;--markstream-code-border-color: rgb(229 231 235);--markstream-code-fallback-selection-bg: rgba(0, 0, 0, .06);--vscode-editor-selectionBackground: var(--markstream-code-fallback-selection-bg);--markstream-diff-frame-border: rgb(203 213 225 / .56);--markstream-diff-frame-shadow: 0 16px 40px -32px rgb(15 23 42 / .18);--markstream-diff-shell-fg: #0f172a;--markstream-diff-shell-muted: #64748b;--markstream-diff-shell-border: rgb(148 163 184 / .18);--markstream-diff-shell-shadow: 0 30px 70px -48px rgb(15 23 42 / .42);--markstream-diff-shell-bg: radial-gradient( circle at top center, rgb(255 255 255 / .9), transparent 55% ), linear-gradient(180deg, #fffdfa 0%, #fbfcfe 100%);--markstream-diff-header-border: rgb(226 232 240 / .92);--markstream-diff-stage-bg: radial-gradient( circle at top center, rgb(255 255 255 / .95), transparent 60% ), linear-gradient(180deg, #fcfdff 0%, #f6f8fb 100%);--markstream-diff-editor-bg: #ffffff;--markstream-diff-editor-fg: #435266;--markstream-diff-unchanged-fg: lab(36.247 .0071872 -.000424832);--markstream-diff-unchanged-bg: lab(95.9989 .0180531 -.0010643);--markstream-diff-unchanged-divider: rgb(255 255 255 / .94);--markstream-diff-focus: rgb(14 165 233 / .42);--markstream-diff-widget-shadow: rgb(15 23 42 / .26);--markstream-diff-action-hover: rgb(15 23 42 / .06);--markstream-diff-panel-bg: linear-gradient(180deg, #ffffff 0%, #fbfcfe 100%);--markstream-diff-panel-bg-soft: #ffffff;--markstream-diff-panel-bg-strong: #ffffff;--markstream-diff-panel-border: rgb(226 232 240 / .3);--markstream-diff-pane-divider: rgb(226 232 240 / .42);--markstream-diff-gutter-bg: transparent;--markstream-diff-gutter-guide: transparent;--markstream-diff-gutter-gap: 16px;--markstream-diff-line-number: rgb(82 82 82 / .88);--markstream-diff-line-number-active: rgb(82 82 82 / .88);--markstream-diff-added-fg: #14b8a6;--markstream-diff-removed-fg: #ff3658;--markstream-diff-added-line: rgb(232 249 245 / .98);--markstream-diff-removed-line: rgb(255 241 241 / .98);--markstream-diff-added-inline: rgb(197 245 219 / .96);--markstream-diff-removed-inline: rgb(255 215 217 / .92);--markstream-diff-added-inline-border: transparent;--markstream-diff-removed-inline-border: transparent;--markstream-diff-added-gutter: linear-gradient( 90deg, var(--markstream-diff-added-fg) 0 var(--stream-monaco-gutter-marker-width, 4px), rgb(20 184 166 / .08) var(--stream-monaco-gutter-marker-width, 4px) 100% );--markstream-diff-removed-gutter: repeating-linear-gradient( 180deg, var(--markstream-diff-removed-fg) 0 2px, transparent 2px 4px ) left / var(--stream-monaco-gutter-marker-width, 4px) 100% no-repeat, linear-gradient(90deg, rgb(255 54 88 / .08) 0 100%);--markstream-diff-added-line-fill: rgb(231 248 244 / .96);--markstream-diff-removed-line-fill: rgb(255 241 241 / .98)}.code-block-container.is-dark{--markstream-code-fallback-bg: #111827;--markstream-code-fallback-fg: #e5e7eb;--markstream-code-border-color: rgb(55 65 81 / .3);--markstream-code-fallback-selection-bg: rgba(255, 255, 255, .08);--markstream-diff-frame-border: rgb(82 82 91 / .56);--markstream-diff-frame-shadow: 0 18px 40px -30px rgb(0 0 0 / .84);--markstream-diff-shell-fg: #e2e8f0;--markstream-diff-shell-muted: #94a3b8;--markstream-diff-shell-border: rgb(82 82 91 / .56);--markstream-diff-shell-shadow: 0 34px 80px -52px rgb(0 0 0 / .72);--markstream-diff-shell-bg: rgb(10 10 11 / .99);--markstream-diff-header-border: rgb(63 63 70 / .82);--markstream-diff-stage-bg: rgb(10 10 11 / .99);--markstream-diff-editor-bg: rgb(12 12 14 / .99);--markstream-diff-editor-fg: #b6c2d3;--markstream-diff-unchanged-fg: #cbd5e1;--markstream-diff-unchanged-bg: rgb(24 24 27 / .92);--markstream-diff-unchanged-divider: rgb(255 255 255 / .18);--markstream-diff-focus: rgb(96 165 250 / .42);--markstream-diff-widget-shadow: rgb(0 0 0 / .72);--markstream-diff-action-hover: rgb(255 255 255 / .08);--markstream-diff-panel-bg: rgb(10 10 11 / .99);--markstream-diff-panel-bg-soft: rgb(10 10 11 / .99);--markstream-diff-panel-bg-strong: rgb(10 10 11 / .99);--markstream-diff-panel-border: rgb(82 82 91 / .3);--markstream-diff-pane-divider: rgb(82 82 91 / .34);--markstream-diff-gutter-bg: linear-gradient( 180deg, rgb(13 13 15 / .94) 0%, rgb(9 9 10 / .98) 100% );--markstream-diff-gutter-guide: rgb(161 161 170 / .08);--markstream-diff-gutter-gap: 16px;--markstream-diff-line-number: rgb(161 161 170 / .68);--markstream-diff-line-number-active: rgb(228 228 231 / .82);--markstream-diff-added-fg: #5eead4;--markstream-diff-removed-fg: #fda4af;--markstream-diff-added-line: rgb(13 148 136 / .18);--markstream-diff-removed-line: rgb(225 29 72 / .18);--markstream-diff-added-inline: rgb(45 212 191 / .24);--markstream-diff-removed-inline: rgb(251 113 133 / .24);--markstream-diff-added-inline-border: transparent;--markstream-diff-removed-inline-border: transparent;--markstream-diff-added-gutter: linear-gradient( 90deg, var(--markstream-diff-added-fg) 0 var(--stream-monaco-gutter-marker-width, 4px), rgb(94 234 212 / .2) var(--stream-monaco-gutter-marker-width, 4px) 100% );--markstream-diff-removed-gutter: repeating-linear-gradient( 180deg, var(--markstream-diff-removed-fg) 0 2px, transparent 2px 4px ) left / var(--stream-monaco-gutter-marker-width, 4px) 100% no-repeat, linear-gradient(90deg, rgb(253 164 175 / .18) 0 100%);--markstream-diff-added-line-fill: linear-gradient( 90deg, rgb(15 118 110 / .38) 0%, rgb(13 148 136 / .28) 100% );--markstream-diff-removed-line-fill: linear-gradient( 90deg, rgb(159 18 57 / .38) 0%, rgb(225 29 72 / .28) 100% )}.code-editor-container{transition:height .18s ease,max-height .18s ease}.code-block-container.is-plain-text:not(.is-diff) .monaco-editor,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .monaco-editor-background,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .margin,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .lines-content{background:var(--vscode-editor-background, var(--markstream-code-fallback-bg))!important}.code-block-container.is-plain-text:not(.is-diff) .monaco-editor,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .margin,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .view-lines,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .view-line,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .view-line span,.code-block-container.is-plain-text:not(.is-diff) .monaco-editor .line-numbers{color:var(--vscode-editor-foreground, var(--markstream-code-fallback-fg))!important}.code-action-btn{cursor:pointer;opacity:.7;transition:opacity .2s}.code-action-btn:hover{opacity:1}.code-action-btn:disabled{opacity:.5;cursor:not-allowed}.code-action-btn:disabled:hover{background-color:transparent}.icon-slot{display:inline-flex;align-items:center;justify-content:center}.icon-slot svg,.icon-slot img{display:block;width:100%;height:100%}.code-editor-layer{display:grid;min-width:0}.code-editor-layer>.code-editor-container,.code-editor-layer>.code-editor-fallback-surface{grid-area:1 / 1}.code-editor-fallback-surface{overflow:auto;padding:1rem}.code-block-container.is-diff .code-editor-fallback-surface{padding:0;background:var(--markstream-diff-editor-bg)}.code-block-container.is-diff{background:var(--markstream-diff-shell-bg);box-shadow:var(--markstream-diff-shell-shadow);border-color:var(--markstream-diff-shell-border);--vscode-editor-selectionBackground: var(--markstream-diff-action-hover)}.code-block-container.is-diff .code-block-header{padding:18px 20px 14px;color:var(--markstream-diff-shell-fg);background:transparent;border-bottom-color:var(--markstream-diff-header-border)}.code-block-container.is-diff .code-editor-layer{padding:4px 4px 8px;background:var(--markstream-diff-stage-bg);--vscode-editor-background: var(--markstream-diff-editor-bg);--vscode-editor-foreground: var(--markstream-diff-editor-fg);--vscode-diffEditor-unchangedRegionForeground: var(--markstream-diff-unchanged-fg);--vscode-diffEditor-unchangedRegionBackground: var(--markstream-diff-unchanged-bg);--vscode-focusBorder: var(--markstream-diff-focus);--vscode-widget-shadow: var(--markstream-diff-widget-shadow)}.code-block-container .monaco-diff-editor .diffOverview{background-color:var(--vscode-editor-background, #111827)}.code-block-container .stream-monaco-diff-root .monaco-diff-editor .diffOverview,.code-block-container .stream-monaco-diff-root .decorationsOverviewRuler{display:none!important;width:0!important;min-width:0!important;max-width:0!important;border:0!important;background:transparent!important;opacity:0!important;pointer-events:none!important;overflow:hidden!important}.code-block-container .stream-monaco-diff-root .monaco-diff-editor{border:0!important;border-radius:0!important;box-shadow:none!important}.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center:not(.stream-monaco-clickable)>*:not(a){visibility:hidden!important}.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines-compact .text{opacity:0!important}.code-block-container .stream-monaco-diff-root{--stream-monaco-gutter-gap: var(--markstream-diff-gutter-gap) !important;--stream-monaco-line-number: var(--markstream-diff-line-number) !important;--stream-monaco-line-number-active: var(--markstream-diff-line-number-active) !important;--stream-monaco-added-fg: var(--markstream-diff-added-fg) !important;--stream-monaco-removed-fg: var(--markstream-diff-removed-fg) !important;--stream-monaco-added-line: var(--markstream-diff-added-line) !important;--stream-monaco-removed-line: var(--markstream-diff-removed-line) !important;--stream-monaco-added-inline: var(--markstream-diff-added-inline) !important;--stream-monaco-removed-inline: var(--markstream-diff-removed-inline) !important;--stream-monaco-added-inline-border: var(--markstream-diff-added-inline-border) !important;--stream-monaco-removed-inline-border: var(--markstream-diff-removed-inline-border) !important;--stream-monaco-added-line-fill: var(--markstream-diff-added-line-fill) !important;--stream-monaco-removed-line-fill: var(--markstream-diff-removed-line-fill) !important;--stream-monaco-added-gutter: var(--markstream-diff-added-gutter) !important;--stream-monaco-removed-gutter: var(--markstream-diff-removed-gutter) !important;--stream-monaco-added-line-shadow: none !important;--stream-monaco-removed-line-shadow: none !important;--stream-monaco-unchanged-bg: var(--markstream-diff-unchanged-bg) !important;--stream-monaco-unchanged-fg: var(--markstream-diff-unchanged-fg) !important}.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center:not(.stream-monaco-unchanged-bridge-source),.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge{--stream-monaco-unchanged-bg: var(--markstream-diff-unchanged-bg) !important;--stream-monaco-unchanged-fg: var(--markstream-diff-unchanged-fg) !important;background:var(--stream-monaco-unchanged-bg)!important;color:var(--stream-monaco-unchanged-fg)!important}.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge{right:calc(var(--stream-monaco-gutter-marker-width) - var(--stream-monaco-unchanged-rail-width) / 2 + (var(--stream-monaco-gutter-gap) * 2))!important;width:auto!important}.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary:hover,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary:focus-visible,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-summary.stream-monaco-focus-visible{background:var(--stream-monaco-unchanged-bg)!important;color:var(--markstream-diff-unchanged-fg)!important;padding-left:calc(var(--stream-monaco-gutter-marker-width) + (var(--stream-monaco-gutter-gap) * 2))!important;padding-right:calc(var(--stream-monaco-gutter-marker-width) + (var(--stream-monaco-gutter-gap) * 2))!important}.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-rail,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge.stream-monaco-diff-unchanged-bridge-line-info .stream-monaco-unchanged-rail,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal:hover,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal:focus-visible,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal.stream-monaco-focus-visible{background:var(--stream-monaco-unchanged-bg)!important}.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-rail{border-right-color:var(--markstream-diff-unchanged-divider)!important}.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal{border-bottom-color:transparent!important}.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{border-bottom-color:var(--markstream-diff-unchanged-divider)!important}.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,.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{border-bottom:0!important}.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center .stream-monaco-unchanged-meta,.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center .stream-monaco-unchanged-count,.code-block-container .stream-monaco-diff-root .monaco-editor .diff-hidden-lines .center .stream-monaco-unchanged-metadata-label,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-meta,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-count,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-metadata-label,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal:hover,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal:focus-visible,.code-block-container .stream-monaco-diff-root .stream-monaco-diff-unchanged-bridge .stream-monaco-unchanged-reveal.stream-monaco-focus-visible{color:var(--markstream-diff-unchanged-fg)!important}.code-block-content{display:grid;max-height:min(70vh,500px);overflow:auto;transition:max-height .3s ease;font-family:var(--vscode-editor-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);line-height:var(--vscode-editor-line-height, 1.5)}.code-block-render,.code-fallback-plain{grid-area:1 / 1;min-width:0}.code-block-render{min-height:1px}.code-block-render pre,.code-block-content .shiki{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}.code-block-content .shiki-fallback{margin:0;padding:1rem;background:inherit;color:inherit;white-space:pre;font-family:inherit;font-size:inherit;line-height:inherit}.code-fallback-plain{position:relative;z-index:1;white-space:pre;overflow:auto;background:var(--vscode-editor-background, var(--markstream-code-fallback-bg));color:var(--vscode-editor-foreground, var(--markstream-code-fallback-fg));font-size:inherit;line-height:inherit;font-family:inherit;font-weight:var(--vscode-editor-font-weight, 400)}.code-fallback-plain>code{font-size:inherit;line-height:inherit;font-family:inherit;font-weight:inherit}.code-fallback-plain.markstream-pre--diff-preview{box-sizing:border-box;width:100%;padding-left:0;padding-right:0;color:var(--markstream-diff-editor-fg, var(--vscode-editor-foreground, inherit));background:var(--markstream-diff-editor-bg, var(--vscode-editor-background, transparent));font-variant-ligatures:none;-moz-tab-size:var(--markstream-pre-tab-size, 4);-o-tab-size:var(--markstream-pre-tab-size, 4);tab-size:var(--markstream-pre-tab-size, 4);--markstream-pre-diff-gutter-marker-width: var(--stream-monaco-gutter-marker-width, 4px);--markstream-pre-diff-gutter-gap: var(--stream-monaco-gutter-gap, 8px);--markstream-pre-diff-line-number-width: var(--stream-monaco-line-number-width, 28px);--markstream-pre-diff-scrollable-left: var( --stream-monaco-original-scrollable-left, calc( var(--markstream-pre-diff-gutter-marker-width) + (var(--markstream-pre-diff-gutter-gap) * 2) + var(--markstream-pre-diff-line-number-width) ) );--markstream-pre-diff-line-number-gap-to-code: var( --stream-monaco-original-line-number-gap-to-code, var(--stream-monaco-line-number-gap-to-code, var(--markstream-pre-diff-gutter-gap)) );--markstream-pre-diff-line-number-left: calc( var(--markstream-pre-diff-scrollable-left) - var(--markstream-pre-diff-line-number-gap-to-code) - var(--markstream-pre-diff-line-number-width) );--markstream-pre-diff-line-number-align: var(--markstream-diff-line-number-align, right)}.code-fallback-plain.markstream-pre--diff-preview>.markstream-pre__diff-code{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);width:100%;min-width:100%;font:inherit;line-height:inherit}.code-fallback-plain.markstream-pre--diff-preview.markstream-pre--diff-inline>.markstream-pre__diff-code{grid-template-columns:minmax(0,1fr)}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-pane{min-width:0;overflow:hidden}.code-fallback-plain.markstream-pre--diff-preview:not(.markstream-pre--diff-inline) .markstream-pre__diff-pane{overflow-x:auto;overflow-y:hidden}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-pane--modified{--markstream-pre-diff-scrollable-left: var( --stream-monaco-modified-scrollable-left, var(--stream-monaco-original-scrollable-left) );--markstream-pre-diff-line-number-gap-to-code: var( --stream-monaco-modified-line-number-gap-to-code, var(--stream-monaco-line-number-gap-to-code, var(--markstream-pre-diff-gutter-gap)) );--markstream-pre-diff-line-number-left: calc( var(--markstream-pre-diff-scrollable-left) - var(--markstream-pre-diff-line-number-gap-to-code) - var(--markstream-pre-diff-line-number-width) );box-shadow:inset 1px 0 var(--markstream-diff-pane-divider, rgb(148 163 184 / .18))}.code-fallback-plain.markstream-pre--diff-preview.markstream-pre--diff-inline .markstream-pre__diff-pane--modified{box-shadow:none}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-line{position:relative;display:block;box-sizing:border-box;min-height:var(--markstream-pre-diff-line-height, 18px);padding-left:var(--markstream-pre-diff-scrollable-left);line-height:var(--markstream-pre-diff-line-height, 18px)}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-line:before{content:"";position:absolute;inset-inline:0;top:0;height:var(--markstream-pre-diff-line-height, 18px);z-index:0;pointer-events:none;background:transparent}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-rail{position:absolute;z-index:2;top:0;left:0;width:var(--markstream-pre-diff-gutter-marker-width, 4px);min-width:var(--markstream-pre-diff-gutter-marker-width, 4px);height:var(--markstream-pre-diff-line-height, 18px)}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-number{position:absolute;z-index:1;top:0;left:var(--markstream-pre-diff-line-number-left);width:var(--markstream-pre-diff-line-number-width);color:var(--stream-monaco-line-number, var(--markstream-diff-line-number, #6b7280));font-variant-numeric:tabular-nums;line-height:var(--markstream-pre-diff-line-height, 18px);text-align:var(--markstream-pre-diff-line-number-align, right);-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-content{position:relative;z-index:1;display:block;min-width:-moz-max-content;min-width:max-content;line-height:var(--markstream-pre-diff-line-height, 18px);white-space:inherit;overflow-wrap:normal;word-break:normal;line-break:auto}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-content-inner{white-space:inherit;overflow-wrap:inherit;word-break:inherit;line-break:inherit;-webkit-box-decoration-break:clone;box-decoration-break:clone}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-line--added{color:var(--stream-monaco-added-fg, var(--markstream-diff-added-fg, inherit))}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-line--removed{color:var(--stream-monaco-removed-fg, var(--markstream-diff-removed-fg, inherit))}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-line--hunk{color:var(--stream-monaco-unchanged-fg, var(--markstream-diff-unchanged-fg, var(--markstream-diff-line-number, currentColor)))}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-line--hunk:before{background:var(--stream-monaco-unchanged-bg, var(--markstream-diff-unchanged-bg, transparent))}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-line--added:not(.markstream-pre__diff-line--empty):before{background:var(--stream-monaco-added-line-fill, var(--markstream-diff-added-line-fill, transparent))}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-line--removed:not(.markstream-pre__diff-line--empty):before{background:var(--stream-monaco-removed-line-fill, var(--markstream-diff-removed-line-fill, transparent))}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-line--added:not(.markstream-pre__diff-line--empty)>.markstream-pre__diff-rail{background:var(--stream-monaco-added-gutter, var(--markstream-diff-added-gutter, currentColor))}.code-fallback-plain.markstream-pre--diff-preview .markstream-pre__diff-line--removed:not(.markstream-pre__diff-line--empty)>.markstream-pre__diff-rail{background:var(--stream-monaco-removed-gutter, var(--markstream-diff-removed-gutter, currentColor))}.code-loading-placeholder{padding:1rem;min-height:120px}.loading-skeleton{display:flex;flex-direction:column;gap:.75rem}.skeleton-line{height:1rem;background:linear-gradient(90deg,#0000000f 25%,#0000001f 37%,#0000000f 63%);background-size:400% 100%;animation:code-skeleton-shimmer 1.2s ease-in-out infinite;border-radius:.25rem}.code-block-container.is-dark .skeleton-line{background:linear-gradient(90deg,#ffffff0f 25%,#ffffff1f 37%,#ffffff0f 63%);background-size:400% 100%}.skeleton-line.short{width:60%}@keyframes code-skeleton-shimmer{0%{background-position:100% 0}to{background-position:0 0}}.markstream-react pre[class^=language-],.markstream-react pre[class*=" language-"]{white-space:pre;overflow:auto;-moz-tab-size:2;-o-tab-size:2;tab-size:2;font-variant-ligatures:none;contain:content;backface-visibility:hidden;transform:translateZ(0);-webkit-font-smoothing:antialiased}.markstream-react pre[class^=language-]>code,.markstream-react pre[class*=" language-"]>code{display:block}.markstream-react pre[class^=language-]:focus,.markstream-react pre[class*=" language-"]:focus{outline:2px solid var(--vmdr-focus, #3b82f6);outline-offset:2px}.html-preview-frame__backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:50}.html-preview-frame__backdrop--dark{background-color:#0f172acc}.html-preview-frame{width:80vw;max-width:960px;height:70vh;background-color:#fff;border-radius:.5rem;overflow:hidden;box-shadow:0 10px 40px #00000040;display:flex;flex-direction:column}.html-preview-frame--dark{background-color:#020617;color:#e5e7eb;box-shadow:0 10px 40px #0009}.html-preview-frame__header{display:flex;justify-content:space-between;align-items:center;padding:.4rem .75rem;border-bottom:1px solid rgba(0,0,0,.06)}.html-preview-frame--dark .html-preview-frame__header{border-bottom-color:#94a3b859}.html-preview-frame__title{display:inline-flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:500;letter-spacing:.02em;text-transform:uppercase;opacity:.85}.html-preview-frame__dot{width:.5rem;height:.5rem;border-radius:999px;background-color:#22c55e}.html-preview-frame--dark .html-preview-frame__dot{background-color:#4ade80}.html-preview-frame__label{white-space:nowrap}.html-preview-frame__close{border:none;background:transparent;font-size:1.25rem;line-height:1;cursor:pointer}.html-preview-frame__close--dark{color:#e5e7eb}.html-preview-frame__iframe{width:100%;height:100%;border:none;display:block}@media(max-width:640px){.html-preview-frame{width:100vw;height:80vh;border-radius:0}}.ms-tooltip{position:fixed;padding:.4rem .65rem;font-size:.875rem;border-radius:.375rem;border-width:1px;border-style:solid;box-shadow:0 10px 15px #00000014;pointer-events:none;z-index:9999;opacity:0;transition:opacity .12s linear,transform .22s cubic-bezier(.16,1,.3,1)}.ms-tooltip[data-visible=true]{opacity:1}.ms-tooltip[data-dark=true]{background-color:#111827;color:#f9fafb;border-color:#374151}.ms-tooltip[data-dark=false],.ms-tooltip:not([data-dark=true]){background-color:#fff;color:#111827;border-color:#e5e7eb}@keyframes node-placeholder-shimmer{0%{background-position:200% 0%}to{background-position:-200% 0%}}@keyframes node-enter-fade{0%{opacity:0}to{opacity:1}}@keyframes typewriter-fade{0%{opacity:0}to{opacity:1}}.typewriter-cursor{position:absolute;left:0;top:0;display:inline-block;width:.55em;height:1em;margin-left:.08em;vertical-align:-.12em;border-right:2px solid currentColor;pointer-events:none;animation:typewriter-cursor-blink 1s steps(1,end) infinite}@keyframes typewriter-cursor-blink{0%,49%{opacity:1}50%,to{opacity:0}}.markstream-react .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes spin{to{transform:rotate(360deg)}}.d2-block-body{position:relative}.d2-source{font-family:var(--vscode-editor-font-family, "Fira Code", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace)}.d2-code{white-space:pre;font-size:.875rem;line-height:1.5}.d2-render{overflow:auto}.d2-svg svg.markstream-d2-root-svg{width:100%;max-width:100%;height:auto;display:block}.mode-btn{opacity:.7;transition:opacity .2s}.mode-btn.is-active{opacity:1;font-weight:600}.d2-action-btn{opacity:.7;transition:opacity .2s}.d2-action-btn:hover{opacity:1}.d2-action-btn:disabled{opacity:.3;cursor:not-allowed}.d2-error{color:#dc2626}body>div[id^=dmermaid-]{position:fixed;top:-10000px;left:0;width:100%;visibility:hidden;pointer-events:none}.markstream-react .hover\:bg-\[hsl\(var\(--secondary\)\)\]:hover{background-color:hsl(var(--secondary))}.markstream-react .hover\:bg-\[var\(--vscode-editor-selectionBackground\)\]:hover{background-color:var(--vscode-editor-selectionBackground)}.markstream-react .hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.markstream-react .hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity, 1))}.markstream-react .hover\:text-gray-200:hover{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity, 1))}.markstream-react .hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.markstream-react .hover\:underline:hover{text-decoration-line:underline}@media not all and (min-width:1024px){.markstream-react .max-lg\:my-\[calc\(4\/3\*1em\)\]{margin-top:calc(4 / 3 * 1em);margin-bottom:calc(4 / 3 * 1em)}.markstream-react .max-lg\:pl-\[calc\(14\/9\*1em\)\]{padding-left:calc(14 / 9 * 1em)}}
package/dist/next.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import React, { ComponentType } from 'react';
1
+ import React, { ComponentType, CSSProperties } from 'react';
2
2
  import * as stream_markdown_parser from 'stream-markdown-parser';
3
3
  import { CodeBlockNode as CodeBlockNode$1, BaseNode, ParseOptions, MarkdownIt, HtmlPolicy, ParsedNode } from 'stream-markdown-parser';
4
4
  import { SmoothMarkdownStreamOptions } from 'markstream-core';
@@ -38,6 +38,19 @@ interface CodeBlockMonacoThemeObject {
38
38
  }
39
39
  type CodeBlockMonacoTheme = string | CodeBlockMonacoThemeObject;
40
40
  type CodeBlockMonacoLanguage = string | ((...args: unknown[]) => unknown);
41
+ interface CommonCodeBlockProps {
42
+ showHeader?: boolean;
43
+ showCopyButton?: boolean;
44
+ showExpandButton?: boolean;
45
+ }
46
+ interface ShikiCodeBlockProps extends CommonCodeBlockProps {
47
+ themes?: readonly string[];
48
+ /**
49
+ * Shiki language preload request forwarded to stream-markdown's registerHighlight().
50
+ * This is not a rendering allow-list; already available Shiki languages may still highlight.
51
+ */
52
+ langs?: readonly string[];
53
+ }
41
54
  interface CodeBlockDiffHideUnchangedRegionsOptions {
42
55
  enabled?: boolean;
43
56
  contextLineCount?: number;
@@ -93,7 +106,7 @@ interface CodeBlockMonacoOptions {
93
106
  scrollbar?: Record<string, unknown>;
94
107
  [key: string]: unknown;
95
108
  }
96
- interface CodeBlockNodeProps {
109
+ interface CodeBlockNodeProps extends CommonCodeBlockProps {
97
110
  node: CodeBlockNode$1;
98
111
  isDark?: boolean;
99
112
  loading?: boolean;
@@ -106,9 +119,6 @@ interface CodeBlockNodeProps {
106
119
  minWidth?: string | number;
107
120
  maxWidth?: string | number;
108
121
  themes?: CodeBlockMonacoTheme[];
109
- showHeader?: boolean;
110
- showCopyButton?: boolean;
111
- showExpandButton?: boolean;
112
122
  showPreviewButton?: boolean;
113
123
  showCollapseButton?: boolean;
114
124
  showFontSizeButtons?: boolean;
@@ -157,6 +167,10 @@ interface LinkNodeProps {
157
167
  }
158
168
  interface PreCodeNodeProps {
159
169
  node: CodeBlockNode$1;
170
+ className?: string;
171
+ style?: CSSProperties;
172
+ showLineNumbers?: boolean;
173
+ diffInline?: boolean;
160
174
  }
161
175
  interface MermaidBlockNodeProps {
162
176
  node: CodeBlockNode$1;
@@ -182,6 +196,7 @@ interface MermaidBlockNodeProps {
182
196
  showZoomControls?: boolean;
183
197
  enableWheelZoom?: boolean;
184
198
  isStrict?: boolean;
199
+ enableMermaidInteractions?: boolean;
185
200
  showTooltips?: boolean;
186
201
  onRenderError?: (error: unknown, code: string, container: HTMLElement) => boolean | void;
187
202
  }
@@ -245,7 +260,10 @@ interface InfographicBlockNodeProps {
245
260
  showZoomControls?: boolean;
246
261
  }
247
262
 
248
- type NodeRendererCodeBlockProps = Partial<Omit<CodeBlockNodeProps, 'node'>> & Record<string, unknown>;
263
+ type NodeRendererCodeBlockThemes = CodeBlockNodeProps['themes'] | ShikiCodeBlockProps['themes'];
264
+ type NodeRendererCodeBlockProps = Partial<Omit<CodeBlockNodeProps, 'node' | 'themes'>> & Partial<Omit<ShikiCodeBlockProps, 'themes'>> & {
265
+ themes?: NodeRendererCodeBlockThemes;
266
+ } & Record<string, unknown>;
249
267
  interface NodeRendererProps {
250
268
  content?: string;
251
269
  nodes?: readonly BaseNode[] | null;
@@ -277,7 +295,19 @@ interface NodeRendererProps {
277
295
  d2Props?: Partial<Omit<D2BlockNodeProps, 'node' | 'loading' | 'isDark'>>;
278
296
  infographicProps?: Partial<Omit<InfographicBlockNodeProps, 'node' | 'loading' | 'isDark'>>;
279
297
  showTooltips?: boolean;
298
+ /**
299
+ * Theme names or theme objects preloaded for Monaco-backed code blocks.
300
+ * When Shiki code blocks are used, only string theme names are forwarded to
301
+ * MarkdownCodeBlockNode / stream-markdown; theme objects are ignored.
302
+ */
280
303
  themes?: CodeBlockMonacoTheme[];
304
+ /**
305
+ * Shiki language preload list forwarded to MarkdownCodeBlockNode.
306
+ *
307
+ * The default React code block renderer is Monaco-backed. This prop is used
308
+ * when a custom `code_block` or language renderer uses MarkdownCodeBlockNode.
309
+ */
310
+ langs?: readonly string[];
281
311
  isDark?: boolean;
282
312
  customId?: string;
283
313
  indexKey?: number | string;
@@ -336,6 +366,7 @@ interface RenderContext {
336
366
  monacoOptions?: CodeBlockMonacoOptions;
337
367
  minWidth?: string | number;
338
368
  maxWidth?: string | number;
369
+ langs?: readonly string[];
339
370
  };
340
371
  events: {
341
372
  onCopy?: (code: string) => void;
@@ -344,7 +375,7 @@ interface RenderContext {
344
375
  }
345
376
  type RenderNodeFn = (node: ParsedNode, key: React.Key, ctx: RenderContext) => React.ReactNode;
346
377
 
347
- interface MarkdownCodeBlockNodeProps {
378
+ interface MarkdownCodeBlockNodeProps extends ShikiCodeBlockProps {
348
379
  node: {
349
380
  type: 'code_block';
350
381
  language: string;
@@ -363,10 +394,6 @@ interface MarkdownCodeBlockNodeProps {
363
394
  enableFontSizeControl?: boolean;
364
395
  minWidth?: string | number;
365
396
  maxWidth?: string | number;
366
- themes?: string[];
367
- showHeader?: boolean;
368
- showCopyButton?: boolean;
369
- showExpandButton?: boolean;
370
397
  showPreviewButton?: boolean;
371
398
  showCollapseButton?: boolean;
372
399
  showFontSizeButtons?: boolean;
@@ -785,4 +812,4 @@ declare const VmrContainerNode: {
785
812
  displayName: string;
786
813
  };
787
814
 
788
- export { AdmonitionNode, BackpressureOptions, BlockquoteNode, CheckboxNode, CodeBlockDiffAppearance, CodeBlockDiffHideUnchangedRegions, CodeBlockDiffHideUnchangedRegionsOptions, CodeBlockDiffHunkActionContext, CodeBlockDiffHunkActionKind, CodeBlockDiffHunkSide, CodeBlockDiffLineStyle, CodeBlockDiffUnchangedRegionStyle, CodeBlockMonacoLanguage, CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockMonacoThemeObject, CodeBlockNode, CodeBlockNodeProps, CodeBlockPreviewPayload, D2BlockNode, D2BlockNodeProps, D2Constructor, D2Instance, D2Loader, D2Module, DefinitionListNode, EmojiNode, EmphasisNode, FallbackComponent, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, HtmlPreviewFrame, HtmlPreviewFrameProps, ImageNode, ImageNodeProps, InfographicBlockNode, InfographicBlockNodeProps, InlineCodeNode, InsertNode, LanguageIconResolver, LinkNode, LinkNodeProps, LinkNodeStyleProps, ListItemNode, ListItemNodeProps, ListNode, MERMAID_WORKER_BUSY_CODE, MarkdownCodeBlockNode, MarkdownCodeBlockNodeProps, MathBlockNode, MathBlockNodeProps, MathInlineNode, MathInlineNodeProps, MermaidBlockEvent, MermaidBlockNode, MermaidBlockNodeProps, NodeComponentProps, NodeRenderer, NodeRendererCodeBlockProps, NodeRendererProps, ParagraphNode, PreCodeNode, PreCodeNodeProps, ReactCodeBlockNode, ReferenceNode, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TableNode, TextNode, ThematicBreakNode, Tooltip, TooltipPlacement, TooltipProps, VmrContainerNode, WORKER_BUSY_CODE, canParseOffthread, clearGlobalCustomComponents, clearKaTeXCache, clearKaTeXWorker, clearMermaidWorker, NodeRenderer as default, disableD2, enableD2, findPrefixOffthread, getCustomNodeComponents, getD2, getKaTeXBackpressureDefaults, getLanguageIcon, getMermaidWorkerLoad, isD2Enabled, languageMap, normalizeLanguageIdentifier, preloadExtendedLanguageIcons, removeCustomComponents, renderKaTeXInWorker, renderKaTeXWithBackpressure, renderNode, resolveMonacoLanguageId, setCustomComponents, setD2Loader, setDefaultI18nMap, setKaTeXBackpressureDefaults, setKaTeXCache, setKaTeXConcurrencyLimit, setKaTeXWorker, setKaTeXWorkerDebug, setLanguageIconResolver, setMermaidWorker, setMermaidWorkerClientDebug, setMermaidWorkerMaxConcurrency, subscribeLanguageIconsRevision, terminateWorker, useSafeI18n, waitForKaTeXWorkerSlot };
815
+ export { AdmonitionNode, BackpressureOptions, BlockquoteNode, CheckboxNode, CodeBlockDiffAppearance, CodeBlockDiffHideUnchangedRegions, CodeBlockDiffHideUnchangedRegionsOptions, CodeBlockDiffHunkActionContext, CodeBlockDiffHunkActionKind, CodeBlockDiffHunkSide, CodeBlockDiffLineStyle, CodeBlockDiffUnchangedRegionStyle, CodeBlockMonacoLanguage, CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockMonacoThemeObject, CodeBlockNode, CodeBlockNodeProps, CodeBlockPreviewPayload, CommonCodeBlockProps, D2BlockNode, D2BlockNodeProps, D2Constructor, D2Instance, D2Loader, D2Module, DefinitionListNode, EmojiNode, EmphasisNode, FallbackComponent, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, HtmlPreviewFrame, HtmlPreviewFrameProps, ImageNode, ImageNodeProps, InfographicBlockNode, InfographicBlockNodeProps, InlineCodeNode, InsertNode, LanguageIconResolver, LinkNode, LinkNodeProps, LinkNodeStyleProps, ListItemNode, ListItemNodeProps, ListNode, MERMAID_WORKER_BUSY_CODE, MarkdownCodeBlockNode, MarkdownCodeBlockNodeProps, MathBlockNode, MathBlockNodeProps, MathInlineNode, MathInlineNodeProps, MermaidBlockEvent, MermaidBlockNode, MermaidBlockNodeProps, NodeComponentProps, NodeRenderer, NodeRendererCodeBlockProps, NodeRendererProps, ParagraphNode, PreCodeNode, PreCodeNodeProps, ReactCodeBlockNode, ReferenceNode, ShikiCodeBlockProps, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TableNode, TextNode, ThematicBreakNode, Tooltip, TooltipPlacement, TooltipProps, VmrContainerNode, WORKER_BUSY_CODE, canParseOffthread, clearGlobalCustomComponents, clearKaTeXCache, clearKaTeXWorker, clearMermaidWorker, NodeRenderer as default, disableD2, enableD2, findPrefixOffthread, getCustomNodeComponents, getD2, getKaTeXBackpressureDefaults, getLanguageIcon, getMermaidWorkerLoad, isD2Enabled, languageMap, normalizeLanguageIdentifier, preloadExtendedLanguageIcons, removeCustomComponents, renderKaTeXInWorker, renderKaTeXWithBackpressure, renderNode, resolveMonacoLanguageId, setCustomComponents, setD2Loader, setDefaultI18nMap, setKaTeXBackpressureDefaults, setKaTeXCache, setKaTeXConcurrencyLimit, setKaTeXWorker, setKaTeXWorkerDebug, setLanguageIconResolver, setMermaidWorker, setMermaidWorkerClientDebug, setMermaidWorkerMaxConcurrency, subscribeLanguageIconsRevision, terminateWorker, useSafeI18n, waitForKaTeXWorkerSlot };
package/dist/next.js CHANGED
@@ -1,2 +1,2 @@
1
1
  'use client';
2
- import a,{useState as s,useEffect as e}from"react";import{A as r,B as o,C as t,a as n,D as i,b as m,E as l,c as u,F as c,d,e as g,f,H as p,g as C,h as T,i as k,j as D,k as E,I as K,l as M,m as W,n as I,L as _,o as L,p as R,q as X,r as b,s as y,t as S,N as h,P as x,u as A,R as B,S as N,v,w as j,x as O,T as P,y as w,z,G as F,V as H}from"./Tooltip-DOyIMYde.js";import{M as Y,W as q,J as G,K as U,O as V,Q as $,U as J,X as Q,Y as Z,ah as aa,Z as sa,_ as ea,$ as ra,a0 as oa,a1 as ta,a2 as na,a3 as ia,a4 as ma,a5 as la,a6 as ua,a7 as ca,a8 as da,a9 as ga,aa as fa,ab as pa,ac as Ca,ad as Ta,ae as ka,ag as Da}from"./Tooltip-DOyIMYde.js";import{c as Ea,a as Ka,b as Ma,l as Wa,n as Ia,p as _a,r as La,d as Ra,s as Xa,e as ba,f as ya}from"./customHtmlTag-BRT4eqd8.js";import{A as Sa,B as ha,C as xa,a as Aa,D as Ba,b as Na,E as va,c as ja,F as Oa,d as Pa,e as wa,f as za,H as Fa,g as Ha,h as Ya,i as qa,j as Ga,k as Ua,I as Va,l as $a,m as Ja,n as Qa,L as Za,o as as,p as ss,M as es,q as rs,r as os,s as ts,N as ns,P as is,t as ms,R as ls,S as us,u as cs,v as ds,w as gs,T as fs,x as ps,y as Cs,z as Ts,V as ks}from"./index-DI8pPos8.js";function Ds(r,o){function t(t){const[n,i]=s(!1);return e(()=>{i(!0)},[]),n?a.createElement(r,t):function(a){const s="__MARKSTREAM_REACT_DISABLE_SYNC_KATEX__",e=globalThis,r=e[s];e[s]=!0;try{return o(a)}finally{void 0===r?delete e[s]:e[s]=r}}(t)}return t.displayName=`MarkstreamNextEntry(${r.displayName||r.name||"Component"})`,t}const Es=Ds(r,Sa),Ks=Ds(o,ha),Ms=Ds(t,xa),Ws=Ds(n,Aa),Is=Ws,_s=Ds(E,Ua),Ls=Ds(i,Ba),Rs=Ds(m,Na),Xs=Ds(l,va),bs=Ds(u,ja),ys=Ds(d,Pa),Ss=Ds(g,wa),hs=Ds(f,za),xs=Ds(p,Fa),As=Ds(C,Ha),Bs=Ds(T,Ya),Ns=Ds(k,qa),vs=Ds(D,Ga),js=Ds(K,Va),Os=Ds(M,$a),Ps=Ds(W,Ja),ws=Ds(I,Qa),zs=Ds(_,Za),Fs=Ds(L,as),Hs=Ds(R,ss),Ys=Ds(X,es),qs=Ds(b,rs),Gs=Ds(y,os),Us=Ds(S,ts),Vs=Ds(h,ns),$s=Ds(c,Oa),Js=Ds(x,is),Qs=Ds(A,ms),Zs=Ds(B,ls),ae=Ds(N,us),se=Ds(v,cs),ee=Ds(j,ds),re=Ds(O,gs),oe=Ds(P,fs),te=Ds(w,ps),ne=Ds(z,Cs),ie=Ds(F,Ts),me=Ds(H,ks);export{Es as AdmonitionNode,Ks as BlockquoteNode,Ms as CheckboxNode,Ws as CodeBlockNode,Ls as D2BlockNode,Rs as DefinitionListNode,Xs as EmojiNode,bs as EmphasisNode,$s as FallbackComponent,ys as FootnoteAnchorNode,Ss as FootnoteNode,hs as FootnoteReferenceNode,xs as HardBreakNode,As as HeadingNode,Bs as HighlightNode,Ns as HtmlBlockNode,vs as HtmlInlineNode,_s as HtmlPreviewFrame,js as ImageNode,Os as InfographicBlockNode,Ps as InlineCodeNode,ws as InsertNode,zs as LinkNode,Fs as ListItemNode,Hs as ListNode,Y as MERMAID_WORKER_BUSY_CODE,Ys as MarkdownCodeBlockNode,qs as MathBlockNode,Gs as MathInlineNode,Us as MermaidBlockNode,Vs as NodeRenderer,Js as ParagraphNode,Qs as PreCodeNode,Is as ReactCodeBlockNode,Zs as ReferenceNode,ae as StrikethroughNode,se as StrongNode,ee as SubscriptNode,re as SuperscriptNode,oe as TableNode,te as TextNode,ne as ThematicBreakNode,ie as Tooltip,me as VmrContainerNode,q as WORKER_BUSY_CODE,G as canParseOffthread,Ea as clearGlobalCustomComponents,U as clearKaTeXCache,V as clearKaTeXWorker,$ as clearMermaidWorker,Vs as default,J as disableD2,Q as enableD2,Z as findPrefixOffthread,Ka as getCustomNodeComponents,aa as getD2,sa as getKaTeXBackpressureDefaults,Ma as getLanguageIcon,ea as getMermaidWorkerLoad,ra as isD2Enabled,Wa as languageMap,Ia as normalizeLanguageIdentifier,_a as preloadExtendedLanguageIcons,La as removeCustomComponents,oa as renderKaTeXInWorker,ta as renderKaTeXWithBackpressure,na as renderNode,Ra as resolveMonacoLanguageId,Xa as setCustomComponents,ia as setD2Loader,ma as setDefaultI18nMap,la as setKaTeXBackpressureDefaults,ua as setKaTeXCache,ca as setKaTeXConcurrencyLimit,da as setKaTeXWorker,ga as setKaTeXWorkerDebug,ba as setLanguageIconResolver,fa as setMermaidWorker,pa as setMermaidWorkerClientDebug,Ca as setMermaidWorkerMaxConcurrency,ya as subscribeLanguageIconsRevision,Ta as terminateWorker,ka as useSafeI18n,Da as waitForKaTeXWorkerSlot};
2
+ import a,{useState as s,useEffect as e}from"react";import{A as r,B as o,C as t,a as n,D as i,b as m,E as l,c,F as u,d,e as g,f as p,H as f,g as C,h as T,i as k,j as D,k as E,I as K,l as M,m as W,n as I,L as _,o as L,p as R,q as X,r as b,s as x,t as y,N as B,P as S,u as h,R as A,S as N,v,w as j,x as O,T as P,y as w,z,G as F,V as Y}from"./Tooltip-D786qxIk.js";import{M as q,W as G,J as H,K as U,O as V,Q as $,U as J,X as Q,Y as Z,ah as aa,Z as sa,_ as ea,$ as ra,a0 as oa,a1 as ta,a2 as na,a3 as ia,a4 as ma,a5 as la,a6 as ca,a7 as ua,a8 as da,a9 as ga,aa as pa,ab as fa,ac as Ca,ad as Ta,ae as ka,ag as Da}from"./Tooltip-D786qxIk.js";import{c as Ea,a as Ka,b as Ma,l as Wa,n as Ia,p as _a,r as La,d as Ra,s as Xa,e as ba,f as xa}from"./codeBlockExtraProps-7n9FWJXk.js";import{A as ya,B as Ba,C as Sa,a as ha,D as Aa,b as Na,E as va,c as ja,F as Oa,d as Pa,e as wa,f as za,H as Fa,g as Ya,h as qa,i as Ga,j as Ha,k as Ua,I as Va,l as $a,m as Ja,n as Qa,L as Za,o as as,p as ss,M as es,q as rs,r as os,s as ts,N as ns,P as is,t as ms,R as ls,S as cs,u as us,v as ds,w as gs,T as ps,x as fs,y as Cs,z as Ts,V as ks}from"./index-o_DISWz2.js";function Ds(r,o){function t(t){const[n,i]=s(!1);return e(()=>{i(!0)},[]),n?a.createElement(r,t):function(a){const s="__MARKSTREAM_REACT_DISABLE_SYNC_KATEX__",e=globalThis,r=e[s];e[s]=!0;try{return o(a)}finally{void 0===r?delete e[s]:e[s]=r}}(t)}return t.displayName=`MarkstreamNextEntry(${r.displayName||r.name||"Component"})`,t}const Es=Ds(r,ya),Ks=Ds(o,Ba),Ms=Ds(t,Sa),Ws=Ds(n,ha),Is=Ws,_s=Ds(E,Ua),Ls=Ds(i,Aa),Rs=Ds(m,Na),Xs=Ds(l,va),bs=Ds(c,ja),xs=Ds(d,Pa),ys=Ds(g,wa),Bs=Ds(p,za),Ss=Ds(f,Fa),hs=Ds(C,Ya),As=Ds(T,qa),Ns=Ds(k,Ga),vs=Ds(D,Ha),js=Ds(K,Va),Os=Ds(M,$a),Ps=Ds(W,Ja),ws=Ds(I,Qa),zs=Ds(_,Za),Fs=Ds(L,as),Ys=Ds(R,ss),qs=Ds(X,es),Gs=Ds(b,rs),Hs=Ds(x,os),Us=Ds(y,ts),Vs=Ds(B,ns),$s=Ds(u,Oa),Js=Ds(S,is),Qs=Ds(h,ms),Zs=Ds(A,ls),ae=Ds(N,cs),se=Ds(v,us),ee=Ds(j,ds),re=Ds(O,gs),oe=Ds(P,ps),te=Ds(w,fs),ne=Ds(z,Cs),ie=Ds(F,Ts),me=Ds(Y,ks);export{Es as AdmonitionNode,Ks as BlockquoteNode,Ms as CheckboxNode,Ws as CodeBlockNode,Ls as D2BlockNode,Rs as DefinitionListNode,Xs as EmojiNode,bs as EmphasisNode,$s as FallbackComponent,xs as FootnoteAnchorNode,ys as FootnoteNode,Bs as FootnoteReferenceNode,Ss as HardBreakNode,hs as HeadingNode,As as HighlightNode,Ns as HtmlBlockNode,vs as HtmlInlineNode,_s as HtmlPreviewFrame,js as ImageNode,Os as InfographicBlockNode,Ps as InlineCodeNode,ws as InsertNode,zs as LinkNode,Fs as ListItemNode,Ys as ListNode,q as MERMAID_WORKER_BUSY_CODE,qs as MarkdownCodeBlockNode,Gs as MathBlockNode,Hs as MathInlineNode,Us as MermaidBlockNode,Vs as NodeRenderer,Js as ParagraphNode,Qs as PreCodeNode,Is as ReactCodeBlockNode,Zs as ReferenceNode,ae as StrikethroughNode,se as StrongNode,ee as SubscriptNode,re as SuperscriptNode,oe as TableNode,te as TextNode,ne as ThematicBreakNode,ie as Tooltip,me as VmrContainerNode,G as WORKER_BUSY_CODE,H as canParseOffthread,Ea as clearGlobalCustomComponents,U as clearKaTeXCache,V as clearKaTeXWorker,$ as clearMermaidWorker,Vs as default,J as disableD2,Q as enableD2,Z as findPrefixOffthread,Ka as getCustomNodeComponents,aa as getD2,sa as getKaTeXBackpressureDefaults,Ma as getLanguageIcon,ea as getMermaidWorkerLoad,ra as isD2Enabled,Wa as languageMap,Ia as normalizeLanguageIdentifier,_a as preloadExtendedLanguageIcons,La as removeCustomComponents,oa as renderKaTeXInWorker,ta as renderKaTeXWithBackpressure,na as renderNode,Ra as resolveMonacoLanguageId,Xa as setCustomComponents,ia as setD2Loader,ma as setDefaultI18nMap,la as setKaTeXBackpressureDefaults,ca as setKaTeXCache,ua as setKaTeXConcurrencyLimit,da as setKaTeXWorker,ga as setKaTeXWorkerDebug,ba as setLanguageIconResolver,pa as setMermaidWorker,fa as setMermaidWorkerClientDebug,Ca as setMermaidWorkerMaxConcurrency,xa as subscribeLanguageIconsRevision,Ta as terminateWorker,ka as useSafeI18n,Da as waitForKaTeXWorkerSlot};
package/dist/server.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { CodeBlockNode as CodeBlockNode$1, BaseNode, ParseOptions, MarkdownIt, HtmlPolicy, ParsedNode, ListItemNode as ListItemNode$1, TableRowNode, DefinitionItemNode } from 'stream-markdown-parser';
2
- import React, { ComponentType } from 'react';
2
+ import React, { ComponentType, CSSProperties } from 'react';
3
3
  import { SmoothMarkdownStreamOptions } from 'markstream-core';
4
4
  import * as react_jsx_runtime from 'react/jsx-runtime';
5
5
 
@@ -37,6 +37,19 @@ interface CodeBlockMonacoThemeObject {
37
37
  }
38
38
  type CodeBlockMonacoTheme = string | CodeBlockMonacoThemeObject;
39
39
  type CodeBlockMonacoLanguage = string | ((...args: unknown[]) => unknown);
40
+ interface CommonCodeBlockProps {
41
+ showHeader?: boolean;
42
+ showCopyButton?: boolean;
43
+ showExpandButton?: boolean;
44
+ }
45
+ interface ShikiCodeBlockProps extends CommonCodeBlockProps {
46
+ themes?: readonly string[];
47
+ /**
48
+ * Shiki language preload request forwarded to stream-markdown's registerHighlight().
49
+ * This is not a rendering allow-list; already available Shiki languages may still highlight.
50
+ */
51
+ langs?: readonly string[];
52
+ }
40
53
  interface CodeBlockDiffHideUnchangedRegionsOptions {
41
54
  enabled?: boolean;
42
55
  contextLineCount?: number;
@@ -92,7 +105,7 @@ interface CodeBlockMonacoOptions {
92
105
  scrollbar?: Record<string, unknown>;
93
106
  [key: string]: unknown;
94
107
  }
95
- interface CodeBlockNodeProps {
108
+ interface CodeBlockNodeProps extends CommonCodeBlockProps {
96
109
  node: CodeBlockNode$1;
97
110
  isDark?: boolean;
98
111
  loading?: boolean;
@@ -105,9 +118,6 @@ interface CodeBlockNodeProps {
105
118
  minWidth?: string | number;
106
119
  maxWidth?: string | number;
107
120
  themes?: CodeBlockMonacoTheme[];
108
- showHeader?: boolean;
109
- showCopyButton?: boolean;
110
- showExpandButton?: boolean;
111
121
  showPreviewButton?: boolean;
112
122
  showCollapseButton?: boolean;
113
123
  showFontSizeButtons?: boolean;
@@ -156,6 +166,10 @@ interface LinkNodeProps {
156
166
  }
157
167
  interface PreCodeNodeProps {
158
168
  node: CodeBlockNode$1;
169
+ className?: string;
170
+ style?: CSSProperties;
171
+ showLineNumbers?: boolean;
172
+ diffInline?: boolean;
159
173
  }
160
174
  interface MermaidBlockNodeProps {
161
175
  node: CodeBlockNode$1;
@@ -181,6 +195,7 @@ interface MermaidBlockNodeProps {
181
195
  showZoomControls?: boolean;
182
196
  enableWheelZoom?: boolean;
183
197
  isStrict?: boolean;
198
+ enableMermaidInteractions?: boolean;
184
199
  showTooltips?: boolean;
185
200
  onRenderError?: (error: unknown, code: string, container: HTMLElement) => boolean | void;
186
201
  }
@@ -244,7 +259,10 @@ interface InfographicBlockNodeProps {
244
259
  showZoomControls?: boolean;
245
260
  }
246
261
 
247
- type NodeRendererCodeBlockProps = Partial<Omit<CodeBlockNodeProps, 'node'>> & Record<string, unknown>;
262
+ type NodeRendererCodeBlockThemes = CodeBlockNodeProps['themes'] | ShikiCodeBlockProps['themes'];
263
+ type NodeRendererCodeBlockProps = Partial<Omit<CodeBlockNodeProps, 'node' | 'themes'>> & Partial<Omit<ShikiCodeBlockProps, 'themes'>> & {
264
+ themes?: NodeRendererCodeBlockThemes;
265
+ } & Record<string, unknown>;
248
266
  interface NodeRendererProps {
249
267
  content?: string;
250
268
  nodes?: readonly BaseNode[] | null;
@@ -276,7 +294,19 @@ interface NodeRendererProps {
276
294
  d2Props?: Partial<Omit<D2BlockNodeProps, 'node' | 'loading' | 'isDark'>>;
277
295
  infographicProps?: Partial<Omit<InfographicBlockNodeProps, 'node' | 'loading' | 'isDark'>>;
278
296
  showTooltips?: boolean;
297
+ /**
298
+ * Theme names or theme objects preloaded for Monaco-backed code blocks.
299
+ * When Shiki code blocks are used, only string theme names are forwarded to
300
+ * MarkdownCodeBlockNode / stream-markdown; theme objects are ignored.
301
+ */
279
302
  themes?: CodeBlockMonacoTheme[];
303
+ /**
304
+ * Shiki language preload list forwarded to MarkdownCodeBlockNode.
305
+ *
306
+ * The default React code block renderer is Monaco-backed. This prop is used
307
+ * when a custom `code_block` or language renderer uses MarkdownCodeBlockNode.
308
+ */
309
+ langs?: readonly string[];
280
310
  isDark?: boolean;
281
311
  customId?: string;
282
312
  indexKey?: number | string;
@@ -335,6 +365,7 @@ interface RenderContext {
335
365
  monacoOptions?: CodeBlockMonacoOptions;
336
366
  minWidth?: string | number;
337
367
  maxWidth?: string | number;
368
+ langs?: readonly string[];
338
369
  };
339
370
  events: {
340
371
  onCopy?: (code: string) => void;
@@ -376,7 +407,7 @@ interface ListItemNodeProps extends NodeComponentProps<ListItemNodeData> {
376
407
  value?: number;
377
408
  }
378
409
 
379
- interface MarkdownCodeBlockNodeProps {
410
+ interface MarkdownCodeBlockNodeProps extends ShikiCodeBlockProps {
380
411
  node: {
381
412
  type: 'code_block';
382
413
  language: string;
@@ -395,10 +426,6 @@ interface MarkdownCodeBlockNodeProps {
395
426
  enableFontSizeControl?: boolean;
396
427
  minWidth?: string | number;
397
428
  maxWidth?: string | number;
398
- themes?: string[];
399
- showHeader?: boolean;
400
- showCopyButton?: boolean;
401
- showExpandButton?: boolean;
402
429
  showPreviewButton?: boolean;
403
430
  showCollapseButton?: boolean;
404
431
  showFontSizeButtons?: boolean;
@@ -584,4 +611,4 @@ declare function FallbackComponent(props: NodeComponentProps<{
584
611
  declare function renderNode(node: ParsedNode, key: React.Key, ctx: RenderContext): react_jsx_runtime.JSX.Element;
585
612
  declare function NodeRenderer(props: NodeRendererProps): react_jsx_runtime.JSX.Element;
586
613
 
587
- export { AdmonitionNode, BlockquoteNode, CheckboxNode, CodeBlockDiffAppearance, CodeBlockDiffHideUnchangedRegions, CodeBlockDiffHideUnchangedRegionsOptions, CodeBlockDiffHunkActionContext, CodeBlockDiffHunkActionKind, CodeBlockDiffHunkSide, CodeBlockDiffLineStyle, CodeBlockDiffUnchangedRegionStyle, CodeBlockMonacoLanguage, CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockMonacoThemeObject, CodeBlockNode, CodeBlockNodeProps, CodeBlockPreviewPayload, CustomComponentDisplayMode, D2BlockNode, D2BlockNodeProps, DefinitionListNode, EmojiNode, EmphasisNode, FallbackComponent, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, HtmlPreviewFrame, HtmlPreviewFrameProps, ImageNode, ImageNodeProps, InfographicBlockNode, InfographicBlockNodeProps, InlineCodeNode, InsertNode, LinkNode, LinkNodeProps, LinkNodeStyleProps, ListItemNode, ListItemNodeProps, ListNode, MarkdownCodeBlockNode, MarkdownCodeBlockNodeProps, MarkstreamCustomComponent, MathBlockNode, MathBlockNodeProps, MathInlineNode, MathInlineNodeProps, MermaidBlockEvent, MermaidBlockNode, MermaidBlockNodeProps, NodeComponentProps, NodeRenderer, NodeRendererCodeBlockProps, NodeRendererProps, ParagraphNode, PreCodeNode, PreCodeNodeProps, CodeBlockNode as ReactCodeBlockNode, ReferenceNode, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TableNode, TextNode, ThematicBreakNode, Tooltip, TooltipPlacement, TooltipProps, VmrContainerNode, clearGlobalCustomComponents, NodeRenderer as default, getCustomComponentDisplay, getCustomNodeComponents, removeCustomComponents, renderNode, setCustomComponents, withMarkstreamComponentDisplay };
614
+ export { AdmonitionNode, BlockquoteNode, CheckboxNode, CodeBlockDiffAppearance, CodeBlockDiffHideUnchangedRegions, CodeBlockDiffHideUnchangedRegionsOptions, CodeBlockDiffHunkActionContext, CodeBlockDiffHunkActionKind, CodeBlockDiffHunkSide, CodeBlockDiffLineStyle, CodeBlockDiffUnchangedRegionStyle, CodeBlockMonacoLanguage, CodeBlockMonacoOptions, CodeBlockMonacoTheme, CodeBlockMonacoThemeObject, CodeBlockNode, CodeBlockNodeProps, CodeBlockPreviewPayload, CommonCodeBlockProps, CustomComponentDisplayMode, D2BlockNode, D2BlockNodeProps, DefinitionListNode, EmojiNode, EmphasisNode, FallbackComponent, FootnoteAnchorNode, FootnoteNode, FootnoteReferenceNode, HardBreakNode, HeadingNode, HighlightNode, HtmlBlockNode, HtmlInlineNode, HtmlPreviewFrame, HtmlPreviewFrameProps, ImageNode, ImageNodeProps, InfographicBlockNode, InfographicBlockNodeProps, InlineCodeNode, InsertNode, LinkNode, LinkNodeProps, LinkNodeStyleProps, ListItemNode, ListItemNodeProps, ListNode, MarkdownCodeBlockNode, MarkdownCodeBlockNodeProps, MarkstreamCustomComponent, MathBlockNode, MathBlockNodeProps, MathInlineNode, MathInlineNodeProps, MermaidBlockEvent, MermaidBlockNode, MermaidBlockNodeProps, NodeComponentProps, NodeRenderer, NodeRendererCodeBlockProps, NodeRendererProps, ParagraphNode, PreCodeNode, PreCodeNodeProps, CodeBlockNode as ReactCodeBlockNode, ReferenceNode, ShikiCodeBlockProps, StrikethroughNode, StrongNode, SubscriptNode, SuperscriptNode, TableNode, TextNode, ThematicBreakNode, Tooltip, TooltipPlacement, TooltipProps, VmrContainerNode, clearGlobalCustomComponents, NodeRenderer as default, getCustomComponentDisplay, getCustomNodeComponents, removeCustomComponents, renderNode, setCustomComponents, withMarkstreamComponentDisplay };
package/dist/server.js CHANGED
@@ -1 +1 @@
1
- import{c as o,g as e,a,r as s,s as d,w as t}from"./customHtmlTag-BRT4eqd8.js";import{A as N,B as n,C as r,a as i,D as m,b as l,E as c,c as p,F as C,d as k,e as h,f as g,H as u,g as B,h as f,i as H,j as I,k as b,I as F,l as M,m as T,n as w,L as x,o as D,p as L,M as R,q as S,r as j,s as P,N as v,P as y,t as A,a as E,R as q,S as G,u as V,v as z,w as J,T as K,x as O,y as Q,z as U,V as W,N as X,G as Y}from"./index-DI8pPos8.js";export{N as AdmonitionNode,n as BlockquoteNode,r as CheckboxNode,i as CodeBlockNode,m as D2BlockNode,l as DefinitionListNode,c as EmojiNode,p as EmphasisNode,C as FallbackComponent,k as FootnoteAnchorNode,h as FootnoteNode,g as FootnoteReferenceNode,u as HardBreakNode,B as HeadingNode,f as HighlightNode,H as HtmlBlockNode,I as HtmlInlineNode,b as HtmlPreviewFrame,F as ImageNode,M as InfographicBlockNode,T as InlineCodeNode,w as InsertNode,x as LinkNode,D as ListItemNode,L as ListNode,R as MarkdownCodeBlockNode,S as MathBlockNode,j as MathInlineNode,P as MermaidBlockNode,v as NodeRenderer,y as ParagraphNode,A as PreCodeNode,E as ReactCodeBlockNode,q as ReferenceNode,G as StrikethroughNode,V as StrongNode,z as SubscriptNode,J as SuperscriptNode,K as TableNode,O as TextNode,Q as ThematicBreakNode,U as Tooltip,W as VmrContainerNode,o as clearGlobalCustomComponents,X as default,e as getCustomComponentDisplay,a as getCustomNodeComponents,s as removeCustomComponents,Y as renderNode,d as setCustomComponents,t as withMarkstreamComponentDisplay};
1
+ import{c as o,g as e,a,r as s,s as d,w as t}from"./codeBlockExtraProps-7n9FWJXk.js";import{A as N,B as n,C as r,a as i,D as m,b as l,E as c,c as p,F as C,d as k,e as h,f as B,H as g,g as u,h as f,i as I,j as H,k as b,I as x,l as F,m as M,n as w,L as D,o as L,p as P,M as R,q as S,r as T,s as j,N as E,P as v,t as y,a as A,R as q,S as G,u as V,v as z,w as J,T as K,x as O,y as Q,z as U,V as W,N as X,G as Y}from"./index-o_DISWz2.js";export{N as AdmonitionNode,n as BlockquoteNode,r as CheckboxNode,i as CodeBlockNode,m as D2BlockNode,l as DefinitionListNode,c as EmojiNode,p as EmphasisNode,C as FallbackComponent,k as FootnoteAnchorNode,h as FootnoteNode,B as FootnoteReferenceNode,g as HardBreakNode,u as HeadingNode,f as HighlightNode,I as HtmlBlockNode,H as HtmlInlineNode,b as HtmlPreviewFrame,x as ImageNode,F as InfographicBlockNode,M as InlineCodeNode,w as InsertNode,D as LinkNode,L as ListItemNode,P as ListNode,R as MarkdownCodeBlockNode,S as MathBlockNode,T as MathInlineNode,j as MermaidBlockNode,E as NodeRenderer,v as ParagraphNode,y as PreCodeNode,A as ReactCodeBlockNode,q as ReferenceNode,G as StrikethroughNode,V as StrongNode,z as SubscriptNode,J as SuperscriptNode,K as TableNode,O as TextNode,Q as ThematicBreakNode,U as Tooltip,W as VmrContainerNode,o as clearGlobalCustomComponents,X as default,e as getCustomComponentDisplay,a as getCustomNodeComponents,s as removeCustomComponents,Y as renderNode,d as setCustomComponents,t as withMarkstreamComponentDisplay};
package/dist/tailwind.ts CHANGED
@@ -1,3 +1,3 @@
1
- export const safeList = `use client react string cannot delete global call clearGlobalCustomComponents stream-markdown-parser auto code_block next.type typeof window.requestIdleCallback [data-node-index] node-spacer dark virtualized data-custom-id node-slot data-node-index data-node-type fade-node typewriter-node node-placeholder typewriterCursorRef typewriter-cursor admonition math_block html_block image object [data-node-type="code_block"] [data-node-type="admonition"] [data-node-type="table"] [data-node-type="math_block"] [data-node-type="html_block"] [data-node-type="image"] performance [markstream-react][perf] mermaid theme name markdown-renderer boolean safe note is-dark data-index-key headerId admonition-header admonition-icon admonition-title admonition-toggle aria-expanded aria-controls collapsed admonition-content aria-labelledby blockquote-node checkbox-node checkbox checkbox-input emoji-node clsx heading-node font-semibold dependency is not install it to enable footnote-node flex text-sm leading-relaxed border-t border-[var(--footnote-border,#eaecef)] pt-2 flex-1 smooth footnote-reference handleScroll footnote-link cursor-pointer emphasis-node dl definition-list indexKey mb-4 dt definition-term ctx renderNode ?? definition dd definition-desc ml-4 footnote-anchor hover:underline ↩︎ hard-break mark highlight-node html-block-node escape html-block html-block-node__placeholder html-block-node__placeholder-bar w-4/5 w-2/3 setHostEl shouldRender useDynamic reactNodes href xlink:href markstream-d2-root-svg number window.requestAnimationFrame instance.render instance missing render returned empty top d2-block my-4 rounded-lg border overflow-hidden shadow-sm border-gray-700/30 bg-gray-900 text-gray-100 border-gray-200 bg-white text-gray-900 d2-block-header justify-between items-center px-4 py-2.5 border-b border-gray-400/5 gap-x-2 font-medium font-mono gap-x-1 rounded-md p-0.5 bg-gray-700 bg-gray-100 mode-btn px-2 py-1 text-xs rounded !showSource is-active showSource d2-action-btn p-2 transition-colors hover:bg-[var(--vscode-editor-selectionBackground)] copying w-3 h-3 none currentColor round aria-pressed m9 bodyRef d2-block-body bodyStyle !hasPreview d2-source py-4 d2-code d2-error mt-2 d2-render d2-svg pb-3 line-info diffUnchangedRegionStyle line-info-basic metadata legacy off never background night moon black dracula mocha frappe macchiato palenight ocean poimandres monokai laserwave tokyo slack-dark rose-pine github-dark material-theme one-dark catppuccin-mocha catppuccin-frappe catppuccin-macchiato light latte dawn lotus plaintext diff visible view.getModifiedEditor explicit on same helpers.cleanupEditor canonicalLanguage single window.cancelAnimationFrame clientX navigator.clipboard navigator.clipboard.writeText code-block-container is-rendering is-diff is-plain-text code-block-header space-x-2 icon-slot h-4 w-4 flex-shrink-0 truncate code-action-btn copied m14 evenodd code-block-body--collapsed code-block-body--expanded code-editor-layer code-height-placeholder hidden aria-hidden code-editor-fallback-surface code-fallback-plain m-0 aria-busy aria-label no code-loading-placeholder loading-skeleton skeleton-line short sr-only polite status is-loaded lazy eager async image-node__placeholder image-node__spinner image-node__placeholder-text image… placeholder image-node__error failed load react-dom library text-red-500 p-4">Failed instanceof error.message error keydown transform ease center fullscreen touches text-gray-400 hover:bg-gray-700 hover:text-gray-200 text-gray-600 hover:bg-gray-200 hover:text-gray-700 source hasPreview preview pending bg-gray-800 bg-gray-50 px-2.5 bg-gray-600 text-gray-200 text-gray-700 text-gray-500 m16 isCollapsed opacity-50 cursor-not-allowed m7 whitespace-pre-wrap text-gray-300 baseCode relative absolute top-2 right-2 z-10 gap-2 backdrop-blur infographic-preview min-h-[360px] transition-all duration-100 block inset-0 cursor-grab isDragging containerRef w-full text-center justify-center min-h-full fixed z-50 bg-black/70 p-4 closeModal dialog h-full max-w-full max-h-full shadow-lg top-6 right-6 !isDragging cursor-grabbing markstream-core inline-code inline text-[85%] px-1 py-0.5 bg-[hsl(var(--secondary))] whitespace-normal break-words text-node-stream-delta text-node-stream-delta--a text-node-stream-delta--b ease-in-out infinite node.title link-loading inline-flex items-baseline gap-1.5 link-text-wrapper leading-[normal] link-text text link-loading-indicator link-node noopener noreferrer list-node my-5 pl-[calc(13/8*1em)] list-decimal list-disc max-lg:my-[calc(4/3*1em)] max-lg:pl-[calc(14/9*1em)] list insert-node subscript-node superscript-node vitesse-dark vitesse-light shiki shiki-fallback stream-markdown code-block-content rendererTargetRef code-block-render list-item pl-1.5 my-2 valueAttr children hr-node thematic-break text-node text-node-center strong-node in out zoom afterbegin viewBox loose strict gantt open-modal [data-mermaid-wrapper] mermaid-action-btn toggle-mode common.zoomIn common.zoomOut common.resetZoom transition-[height] duration-150 ease-out data-mermaid-wrapper mermaid-loading mermaid-spinner diagram… mermaid-block-header space-x-1 common.preview common.source common.export mermaid-error hasRenderedOnce mermaid-block modeContainerRef mermaid-modal-overlay mermaid-modal-panel mermaid-modal-header mermaid-modal-title mermaid-modal-close mermaid-modal-body modalContentRef mermaid-modal-content available default abort timed window.matchMedia ms-tooltip z-[9999] inline-block text-base py-2 px-3 shadow-md whitespace-nowrap pointer-events-none tooltip-element text-white border-gray-700 tooltip right text-right text-left pointermove pointerup pointercancel table-node-wrapper my-8 table-node table-node--loading colgroup border-[var(--table-border,#cbd5e1)] p-[calc(4/7*1em)] table-node__resize-handle table-node__loading table-node__spinner unknown-node italic node strikethrough-node paragraph-node paragraph reference-node bg-[hsl(var(--muted))] px-1.5 mx-0.5 hover:bg-[hsl(var(--secondary))] event.key infographic d2 language d2lang node.type html_inline text_special node.content heading list_item definition_list footnote footnote_reference footnote_anchor hardbreak inline_code emphasis strikethrough highlight insert subscript superscript checkbox_input emoji thematic_break math_inline reference vmr_container label_open label_close containerClass vmr-container javascript typescript python ruby shell plain cpp markdown document stream-monaco [mermaidWorkerClient] messageerror cleared worker inject via busy canParse findPrefix [markstream-react] htmlPreviewSandbox contains both allow-scripts and this only fully trusted content served an isolated en utf-8 viewport content="width=device-width initial-scale=1 html-preview-frame__backdrop--dark html-preview-frame--dark html-preview-frame__header html-preview-frame__title html-preview-frame__dot html-preview-frame__label html-preview-frame__close--dark html-preview-frame__iframe no-referrer about:blank thinking htmlFor class className data-ssr-fallback normalizedLanguage data-language renderNodeProp classAttr node.cite value void rowIdx bodyRows.length isOpen thematic-break-node cssVars image-node__img code-block-node code-block markdown-code-block-node markdown-code-block mermaid-block-node d2-block-node infographic-block-node math-block overflow-x-auto min-h-[40px] $$ math-inline-wrapper math-inline data-reference-id customComponents server-renderer node-content self_closing tag_open tag_close parse dynamic template html-inline-node html-inline-node--loading role aria-describedby mathRef math-inline--hidden math-inline__loading math-inline__spinner rendering math-rendering globalThis.requestAnimationFrame globalThis.cancelAnimationFrame sequencediagram classdiagram kind statediagram erdiagram flowchart graph module did expected normalizedType [katexWorkerClient] init cache-hit timeout waiting slot existingEnv.getWorkerUrl process katex °C`
1
+ export const safeList = `use client react string cannot delete global call clearGlobalCustomComponents blockquote-node auto note is-dark data-index-key headerId admonition-header admonition-icon admonition-title admonition-toggle aria-expanded aria-controls collapsed admonition-content aria-labelledby markstream-core stream-markdown-parser plaintext ?? data-ssr-fallback aria-busy normalizedLanguage block data-language no safe html-block-node boolean none mermaid infographic d2 language d2lang langs whitespace-pre-wrap text-node-center text image paragraph-node renderNodeProp ctx paragraph heading-node font-semibold classAttr object node.cite children list-item pl-1.5 my-2 value void list-node my-5 pl-[calc(13/8*1em)] list-decimal list-disc max-lg:my-[calc(4/3*1em)] max-lg:pl-[calc(14/9*1em)] list right text-right center text-center text-left table-node-wrapper text-sm table-node--loading border-[var(--table-border,#cbd5e1)] border-b p-[calc(4/7*1em)] rowIdx bodyRows.length table-node__loading status polite table-node__spinner sr-only dl definition-list indexKey mb-4 dt definition-term definition dd definition-desc ml-4 footnote-node flex leading-relaxed border-t border-[var(--footnote-border,#eaecef)] pt-2 flex-1 footnote-reference href footnote-link cursor-pointer footnote-anchor hover:underline ↩︎ isOpen checkbox-node checkbox checkbox-input emoji-node strong-node emphasis-node emphasis strikethrough-node strikethrough mark highlight-node highlight insert-node insert subscript-node subscript superscript-node superscript thematic-break-node inline-code inline text-[85%] px-1 py-0.5 rounded font-mono bg-[hsl(var(--secondary))] whitespace-normal break-words max-w-full number ease-in-out typeof infinite node.title link-loading inline-flex items-baseline gap-1.5 cssVars link-text-wrapper relative leading-[normal] link-text link-loading-indicator link-node aria-label noopener noreferrer image-node__img is-loaded eager lazy async code-block-node code-block markdown-code-block-node markdown-code-block mermaid-block-node d2-block-node infographic-block-node math-block overflow-x-auto min-h-[40px] node.content $$ math-inline-wrapper math-inline reference-node bg-[hsl(var(--muted))] text-xs rounded-md px-1.5 mx-0.5 hover:bg-[hsl(var(--secondary))] data-reference-id html-block customComponents vmr-container unknown-node text-gray-500 italic node code_block html_block node.type html_inline text_special heading list_item definition_list footnote footnote_reference footnote_anchor admonition hardbreak inline_code checkbox_input emoji thematic_break math_inline math_block reference vmr_container label_open label_close server-renderer markdown-renderer dark data-custom-id node-slot data-node-index data-node-type node-content next.type window.requestIdleCallback [data-node-index] node-spacer virtualized fade-node typewriter-node node-placeholder typewriterCursorRef typewriter-cursor [data-node-type="code_block"] [data-node-type="admonition"] [data-node-type="table"] [data-node-type="math_block"] [data-node-type="html_block"] [data-node-type="image"] performance [markstream-react][perf] theme name dependency is not install it to enable smooth renderNode handleScroll clsx hard-break text-node-stream-delta text-node-stream-delta--a text-node-stream-delta--b valueAttr primary fallback failed image-node__placeholder image-node__spinner image-node__placeholder-text image… placeholder image-node__error currentColor load xlink:href markstream-d2-root-svg window.requestAnimationFrame instance.render instance missing render returned empty top d2-block my-4 rounded-lg border overflow-hidden shadow-sm border-gray-700/30 bg-gray-900 text-gray-100 border-gray-200 bg-white text-gray-900 d2-block-header justify-between items-center px-4 py-2.5 border-gray-400/5 gap-x-2 font-medium gap-x-1 p-0.5 bg-gray-700 bg-gray-100 mode-btn px-2 py-1 !showSource is-active showSource d2-action-btn p-2 transition-colors hover:bg-[var(--vscode-editor-selectionBackground)] copying w-3 h-3 round aria-pressed m9 bodyRef d2-block-body bodyStyle !hasPreview d2-source py-4 d2-code d2-error mt-2 d2-render d2-svg pb-3 style.visibility hidden line-info legacy off never background night moon black dracula mocha frappe macchiato palenight ocean poimandres monokai laserwave tokyo slack-dark rose-pine github-dark material-theme one-dark catppuccin-mocha catppuccin-frappe catppuccin-macchiato light latte dawn lotus diff important max-height visible height onDidUpdateDiff onDidContentSizeChange onDidLayoutChange window.MutationObserver childList record.type attributes class explicit fontSize lineHeight paddingBottom paddingTop tabSize on same helpers.cleanupEditor canonicalLanguage single window.cancelAnimationFrame clientX navigator.clipboard navigator.clipboard.writeText code-fallback-plain m-0 code-block-container is-rendering is-diff is-plain-text code-block-header space-x-2 icon-slot h-4 w-4 flex-shrink-0 truncate code-action-btn copied m14 evenodd code-block-body--collapsed code-block-body--expanded code-editor-layer code-height-placeholder aria-hidden code-editor-fallback-surface code-loading-placeholder loading-skeleton skeleton-line short react-dom library text-red-500 p-4">Failed instanceof error.message error keydown transform ease fullscreen touches text-gray-400 hover:bg-gray-700 hover:text-gray-200 text-gray-600 hover:bg-gray-200 hover:text-gray-700 source hasPreview preview pending bg-gray-800 bg-gray-50 px-2.5 bg-gray-600 text-gray-200 text-gray-700 m16 isCollapsed opacity-50 cursor-not-allowed m7 text-gray-300 baseCode absolute top-2 right-2 z-10 gap-2 backdrop-blur infographic-preview min-h-[360px] transition-all duration-100 inset-0 cursor-grab isDragging containerRef w-full justify-center min-h-full fixed z-50 bg-black/70 p-4 closeModal dialog h-full max-h-full shadow-lg top-6 right-6 !isDragging cursor-grabbing escape html-block-node__placeholder html-block-node__placeholder-bar w-4/5 w-2/3 setHostEl shouldRender useDynamic reactNodes vitesse-dark vitesse-light shiki shiki-fallback [MarkdownCodeBlockNode] dispose stream-markdown stream-markdown.createShikiStreamRenderer available stale ready requires with ignoring and using default register configured retrying without code-block-content rendererTargetRef code-block-render event.key loose strict viewBox gantt open-modal [data-mermaid-wrapper] mermaid-action-btn toggle-mode common.zoomIn common.zoomOut common.resetZoom transition-[height] duration-150 ease-out data-mermaid-wrapper mermaid-loading mermaid-spinner diagram… mermaid-block-header space-x-1 common.preview common.source common.export mermaid-error hasRenderedOnce mermaid-block modeContainerRef mermaid-modal-overlay mermaid-modal-panel mermaid-modal-header mermaid-modal-title mermaid-modal-close mermaid-modal-body modalContentRef mermaid-modal-content abort timed out text-node window.matchMedia ms-tooltip z-[9999] inline-block text-base py-2 px-3 shadow-md whitespace-nowrap pointer-events-none tooltip-element text-white border-gray-700 tooltip in zoom hr-node thematic-break containerClass javascript typescript go python ruby shell powershell plain cpp csharp objectivec objectivecpp yaml markdown rust kotlin [mermaidWorkerClient] messageerror cleared worker inject via busy canParse findPrefix pointermove pointerup pointercancel my-8 table-node colgroup table-node__resize-handle key ref prototype constructor normalizedType sequencediagram classdiagram kind statediagram erdiagram flowchart graph thinking htmlFor className self_closing tag_open stream-monaco process katex document [markstream-react] htmlPreviewSandbox contains both allow-scripts this only fully trusted content served an isolated en utf-8 viewport content="width=device-width initial-scale=1 html-preview-frame__backdrop--dark html-preview-frame--dark html-preview-frame__header html-preview-frame__title html-preview-frame__dot html-preview-frame__label html-preview-frame__close--dark html-preview-frame__iframe no-referrer about:blank role aria-describedby tag_close parse dynamic template html-inline-node html-inline-node--loading hunk context removed added markstream-pre__diff-pane--inline original markstream-pre__diff-pane--original modified markstream-pre__diff-pane--modified markstream-pre--line-numbers markstream-pre--diff-preview markstream-pre--diff-inline showLineNumbers markstream-pre__diff-code markstream-pre__diff-rail markstream-pre__diff-number markstream-pre__diff-content markstream-pre__diff-content-inner mathRef rendering math-rendering math-inline--hidden math-inline__loading math-inline__spinner globalThis.requestAnimationFrame globalThis.cancelAnimationFrame module did expected [katexWorkerClient] init cache-hit timeout waiting slot npm development existingEnv.getWorkerUrl °C`
2
2
  module.exports = safeList;
3
3
  export default safeList;