@bytechain.cn/colamd 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/.github/workflows/release.yml +66 -0
  2. package/.trae/documents/fix-mermaid-colors-and-sankey.md +50 -0
  3. package/CLAUDE.md +87 -0
  4. package/LICENSE +21 -0
  5. package/README.md +540 -0
  6. package/README_CN.md +543 -0
  7. package/demo.md +486 -0
  8. package/dist/main/index.js +735 -0
  9. package/dist/preload/index.js +71 -0
  10. package/dist/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  11. package/dist/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  12. package/dist/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  13. package/dist/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  14. package/dist/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  15. package/dist/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  16. package/dist/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  17. package/dist/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  18. package/dist/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  19. package/dist/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  20. package/dist/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  21. package/dist/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  22. package/dist/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  23. package/dist/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  24. package/dist/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  25. package/dist/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  26. package/dist/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  27. package/dist/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  28. package/dist/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  29. package/dist/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  30. package/dist/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  31. package/dist/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  32. package/dist/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  33. package/dist/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  34. package/dist/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  35. package/dist/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  36. package/dist/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  37. package/dist/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  38. package/dist/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  39. package/dist/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  40. package/dist/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  41. package/dist/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  42. package/dist/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  43. package/dist/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  44. package/dist/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  45. package/dist/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  46. package/dist/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  47. package/dist/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  48. package/dist/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  49. package/dist/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  50. package/dist/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  51. package/dist/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  52. package/dist/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  53. package/dist/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  54. package/dist/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  55. package/dist/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  56. package/dist/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  57. package/dist/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  58. package/dist/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  59. package/dist/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  60. package/dist/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  61. package/dist/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  62. package/dist/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  63. package/dist/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  64. package/dist/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  65. package/dist/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  66. package/dist/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  67. package/dist/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  68. package/dist/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  69. package/dist/renderer/assets/arc-tTbbM8LO.js +131 -0
  70. package/dist/renderer/assets/architectureDiagram-3BPJPVTR-CEgYow6c.js +8720 -0
  71. package/dist/renderer/assets/blockDiagram-GPEHLZMM-LHyVtPwW.js +3825 -0
  72. package/dist/renderer/assets/c4Diagram-AAUBKEIU-C1P1eJrf.js +2482 -0
  73. package/dist/renderer/assets/channel-upve91Tq.js +7 -0
  74. package/dist/renderer/assets/chunk-2J33WTMH-lag2vhq9.js +24 -0
  75. package/dist/renderer/assets/chunk-4BX2VUAB-BXJ8Ggh-.js +16 -0
  76. package/dist/renderer/assets/chunk-55IACEB6-CiBpxRa1.js +13 -0
  77. package/dist/renderer/assets/chunk-727SXJPM-ODeKQFXC.js +2016 -0
  78. package/dist/renderer/assets/chunk-AQP2D5EJ-BK7xJolB.js +1953 -0
  79. package/dist/renderer/assets/chunk-FMBD7UC4-BxpCZPtz.js +19 -0
  80. package/dist/renderer/assets/chunk-ND2GUHAM-CqqaU9Ue.js +116 -0
  81. package/dist/renderer/assets/chunk-QZHKN3VN-Biq_K124.js +19 -0
  82. package/dist/renderer/assets/classDiagram-4FO5ZUOK-Cq95X99o.js +23 -0
  83. package/dist/renderer/assets/classDiagram-v2-Q7XG4LA2-Cq95X99o.js +23 -0
  84. package/dist/renderer/assets/cose-bilkent-S5V4N54A-XasiD0bu.js +4942 -0
  85. package/dist/renderer/assets/cytoscape.esm-CpHeHM5e.js +30269 -0
  86. package/dist/renderer/assets/dagre-BM42HDAG-Nq84Gfx4.js +705 -0
  87. package/dist/renderer/assets/defaultLocale-B2RvLBDe.js +206 -0
  88. package/dist/renderer/assets/diagram-2AECGRRQ-DwuB1GWt.js +301 -0
  89. package/dist/renderer/assets/diagram-5GNKFQAL-C2tgeI1h.js +169 -0
  90. package/dist/renderer/assets/diagram-KO2AKTUF-D5KzjNBc.js +632 -0
  91. package/dist/renderer/assets/diagram-LMA3HP47-C12xHS1c.js +212 -0
  92. package/dist/renderer/assets/diagram-OG6HWLK6-CnxI9oEa.js +851 -0
  93. package/dist/renderer/assets/erDiagram-TEJ5UH35-D_uPaKwn.js +1227 -0
  94. package/dist/renderer/assets/flowDiagram-I6XJVG4X-B6q_1-tE.js +2332 -0
  95. package/dist/renderer/assets/ganttDiagram-6RSMTGT7-CFo7ifF9.js +3720 -0
  96. package/dist/renderer/assets/gitGraphDiagram-PVQCEYII-WSexHTnq.js +1373 -0
  97. package/dist/renderer/assets/graph-DyX_9f6d.js +1988 -0
  98. package/dist/renderer/assets/index-DW7LS8C1.js +72292 -0
  99. package/dist/renderer/assets/index-dyHEFYvY.css +2184 -0
  100. package/dist/renderer/assets/infoDiagram-5YYISTIA-DaeJdLRq.js +31 -0
  101. package/dist/renderer/assets/init-ZxktEp_H.js +16 -0
  102. package/dist/renderer/assets/ishikawaDiagram-YF4QCWOH-DDCZc35f.js +967 -0
  103. package/dist/renderer/assets/journeyDiagram-JHISSGLW-BEdmpAgl.js +1255 -0
  104. package/dist/renderer/assets/kanban-definition-UN3LZRKU-BEFtQcFb.js +1052 -0
  105. package/dist/renderer/assets/layout-CAJgQHdw.js +2610 -0
  106. package/dist/renderer/assets/linear-B2ggJ8Am.js +340 -0
  107. package/dist/renderer/assets/mindmap-definition-RKZ34NQL-DSxVgHB5.js +1180 -0
  108. package/dist/renderer/assets/ordinal-DSZU4PqD.js +76 -0
  109. package/dist/renderer/assets/pieDiagram-4H26LBE5-CwYoJBuL.js +246 -0
  110. package/dist/renderer/assets/quadrantDiagram-W4KKPZXB-CST9Fvg9.js +1344 -0
  111. package/dist/renderer/assets/requirementDiagram-4Y6WPE33-DtrH52jS.js +1204 -0
  112. package/dist/renderer/assets/sankeyDiagram-5OEKKPKP-ca1tPzJ_.js +1274 -0
  113. package/dist/renderer/assets/sequenceDiagram-3UESZ5HK-Dfp1EJZ7.js +4514 -0
  114. package/dist/renderer/assets/stateDiagram-AJRCARHV-Bha2QoNB.js +450 -0
  115. package/dist/renderer/assets/stateDiagram-v2-BHNVJYJU-DWgFUYu1.js +21 -0
  116. package/dist/renderer/assets/timeline-definition-PNZ67QCA-C3h_-OTj.js +1596 -0
  117. package/dist/renderer/assets/vennDiagram-CIIHVFJN-DFzjSrZi.js +2486 -0
  118. package/dist/renderer/assets/wardley-L42UT6IY-Cx-VbqoS.js +30699 -0
  119. package/dist/renderer/assets/wardleyDiagram-YWT4CUSO-S2D9XqX6.js +975 -0
  120. package/dist/renderer/assets/xychartDiagram-2RQKCTM6-Cfxigbts.js +1932 -0
  121. package/dist/renderer/index.html +19 -0
  122. package/docs/agent-diff-view.md +48 -0
  123. package/electron-builder.yml +57 -0
  124. package/electron.vite.config.ts +30 -0
  125. package/package.json +40 -0
  126. package/resources/entitlements.mac.plist +12 -0
  127. package/resources/icon.icns +0 -0
  128. package/resources/icon.png +0 -0
  129. package/resources/icon.svg +23 -0
  130. package/resources/templates/slides/icon.png +0 -0
  131. package/resources/templates/slides/slides-template.md +74 -0
  132. package/resources/templates/slides/template.html +535 -0
  133. package/scripts/afterPack.js +13 -0
  134. package/src/main/index.ts +881 -0
  135. package/src/preload/index.ts +110 -0
  136. package/src/renderer/editor/editor.ts +204 -0
  137. package/src/renderer/editor/html-view.ts +15 -0
  138. package/src/renderer/editor/plugins/index.ts +76 -0
  139. package/src/renderer/editor/plugins/math-plugin.ts +297 -0
  140. package/src/renderer/editor/plugins/mermaid-plugin-custom.css +431 -0
  141. package/src/renderer/editor/plugins/mermaid-plugin-dark.css +428 -0
  142. package/src/renderer/editor/plugins/mermaid-plugin-elegant.css +443 -0
  143. package/src/renderer/editor/plugins/mermaid-plugin-newsprint.css +208 -0
  144. package/src/renderer/editor/plugins/mermaid-plugin.css +111 -0
  145. package/src/renderer/editor/plugins/mermaid-plugin.ts +679 -0
  146. package/src/renderer/env.d.ts +7 -0
  147. package/src/renderer/index.html +18 -0
  148. package/src/renderer/main.ts +303 -0
  149. package/src/renderer/themes/base.css +509 -0
  150. package/src/renderer/themes/theme-manager.ts +40 -0
  151. package/themes/README.md +280 -0
  152. package/themes/elegant.css +664 -0
  153. package/themes/guizang.css +732 -0
  154. package/tsconfig.json +14 -0
  155. package/tsconfig.main.json +11 -0
  156. package/tsconfig.preload.json +11 -0
  157. package/tsconfig.renderer.json +12 -0
@@ -0,0 +1,2184 @@
1
+ @font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(./KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(./KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(./KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(./KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(./KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(./KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(./KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(./KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(./KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(./KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(./KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(./KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(./KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(./KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(./KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(./KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(./KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(./KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(./KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(./KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(./KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(./KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(./KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(./KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(./KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(./KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(./KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(./KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(./KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(./KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(./KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(./KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(./KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(./KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(./KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(./KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(./KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(./KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(./KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(./KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(./KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(./KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(./KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(./KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(./KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(./KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(./KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(./KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(./KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(./KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(./KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(./KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(./KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(./KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(./KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(./KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(./KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(./KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(./KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.46"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
2
+ .mermaid-block {
3
+ display: block;
4
+ padding: 0.875em 16px;
5
+ margin: 1em 0;
6
+ border-radius: 6px;
7
+ background: var(--code-block-bg);
8
+ border: 1px solid var(--border-color);
9
+ min-height: 100px;
10
+ }
11
+
12
+ .mermaid-preview {
13
+ display: flex;
14
+ justify-content: center;
15
+ align-items: center;
16
+ }
17
+
18
+ .mermaid-preview svg {
19
+ max-width: 100%;
20
+ height: auto;
21
+ max-height: 600px;
22
+ }
23
+
24
+ .mermaid-preview svg text {
25
+ line-height: 1;
26
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif;
27
+ }
28
+
29
+ .mermaid-preview svg .nodeLabel span,
30
+ .mermaid-preview svg .edgeLabel span {
31
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif;
32
+ }
33
+
34
+ .mermaid-preview svg .node rect,
35
+ .mermaid-preview svg .node circle,
36
+ .mermaid-preview svg .node ellipse,
37
+ .mermaid-preview svg .node polygon {
38
+ stroke: var(--border-color);
39
+ }
40
+
41
+ .mermaid-preview svg .edgePath .path {
42
+ stroke: var(--border-color);
43
+ }
44
+
45
+ .mermaid-preview svg .edgeLabel text {
46
+ fill: var(--text-color);
47
+ }
48
+
49
+ .mermaid-preview svg .edgeLabel rect {
50
+ fill: var(--code-block-bg);
51
+ }
52
+
53
+ .mermaid-preview svg .edgeLabel span {
54
+ color: var(--text-color);
55
+ }
56
+
57
+ .mermaid-preview svg .label text,
58
+ .mermaid-preview svg .nodeLabel text {
59
+ fill: var(--text-color);
60
+ }
61
+
62
+ .mermaid-preview svg text {
63
+ fill: var(--text-color);
64
+ }
65
+
66
+ .mermaid-preview svg .label text,
67
+ .mermaid-preview svg .nodeLabel text,
68
+ .mermaid-preview svg .state-title,
69
+ .mermaid-preview svg .state-description,
70
+ .mermaid-preview svg .pieTitleText,
71
+ .mermaid-preview svg .titleText {
72
+ transform: translateY(-3px);
73
+ }
74
+
75
+ .mermaid-preview svg .nodeLabel,
76
+ .mermaid-preview svg .edgeLabel {
77
+ display: inline-block;
78
+ position: relative;
79
+ top: -3px;
80
+ }
81
+
82
+ .mermaid-source {
83
+ width: 100%;
84
+ min-height: 100px;
85
+ border: 1px solid var(--border-color);
86
+ border-radius: 6px;
87
+ padding: 14px;
88
+ font-size: 0.875em;
89
+ font-family: 'SF Mono', 'Fira Code', Menlo, monospace;
90
+ color: var(--code-block-text, var(--text-color));
91
+ background: var(--code-block-bg);
92
+ outline: none;
93
+ resize: vertical;
94
+ line-height: 1.6;
95
+ white-space: pre-wrap;
96
+ }
97
+
98
+ .mermaid-source:focus {
99
+ border-color: var(--link-color);
100
+ }
101
+
102
+ .mermaid-loading {
103
+ color: var(--text-muted);
104
+ font-style: italic;
105
+ }
106
+
107
+ .mermaid-error {
108
+ color: #e74c3c;
109
+ font-family: monospace;
110
+ font-size: 0.875em;
111
+ white-space: pre-wrap;
112
+ }
113
+ body.theme-dark .mermaid-preview svg text {
114
+ fill: #e6edf3;
115
+ }
116
+
117
+ body.theme-dark .mermaid-preview svg .nodeLabel span,
118
+ body.theme-dark .mermaid-preview svg .edgeLabel span {
119
+ color: #e6edf3 !important;
120
+ }
121
+
122
+ body.theme-dark .mermaid-preview svg foreignObject span {
123
+ color: #e6edf3 !important;
124
+ }
125
+
126
+ /* ── 通用节点 ── */
127
+ body.theme-dark .mermaid-preview svg .node rect,
128
+ body.theme-dark .mermaid-preview svg .node circle,
129
+ body.theme-dark .mermaid-preview svg .node ellipse,
130
+ body.theme-dark .mermaid-preview svg .node polygon,
131
+ body.theme-dark .mermaid-preview svg .node path {
132
+ stroke: #8b949e;
133
+ }
134
+
135
+ body.theme-dark .mermaid-preview svg .edgePath .path {
136
+ stroke: #8b949e;
137
+ }
138
+
139
+ body.theme-dark .mermaid-preview svg .cluster rect,
140
+ body.theme-dark .mermaid-preview svg .cluster path {
141
+ stroke: #8b949e;
142
+ }
143
+
144
+ body.theme-dark .mermaid-preview svg defs marker path {
145
+ fill: #8b949e;
146
+ stroke: #8b949e;
147
+ }
148
+
149
+ /* ── 硬编码色值覆盖 ── */
150
+ body.theme-dark .mermaid-preview svg rect[stroke="#444444"] {
151
+ stroke: #8b949e !important;
152
+ }
153
+
154
+ body.theme-dark .mermaid-preview svg path[stroke="#444444"] {
155
+ stroke: #8b949e !important;
156
+ }
157
+
158
+ body.theme-dark .mermaid-preview svg line[stroke="#444444"] {
159
+ stroke: #8b949e !important;
160
+ }
161
+
162
+ body.theme-dark .mermaid-preview svg rect[stroke="#000000"] {
163
+ stroke: #8b949e !important;
164
+ }
165
+
166
+ body.theme-dark .mermaid-preview svg path[stroke="#000000"] {
167
+ stroke: #8b949e !important;
168
+ }
169
+
170
+ body.theme-dark .mermaid-preview svg line[stroke="#000000"] {
171
+ stroke: #8b949e !important;
172
+ }
173
+
174
+ /* ── 标签 & 文本 ── */
175
+ body.theme-dark .mermaid-preview svg .label text {
176
+ fill: #e6edf3 !important;
177
+ }
178
+
179
+ body.theme-dark .mermaid-preview svg .nodeLabel text {
180
+ fill: #e6edf3 !important;
181
+ }
182
+
183
+ body.theme-dark .mermaid-preview svg .nodeLabel span {
184
+ color: #e6edf3 !important;
185
+ }
186
+
187
+ body.theme-dark .mermaid-preview svg .edgeLabel text {
188
+ fill: #e6edf3 !important;
189
+ }
190
+
191
+ body.theme-dark .mermaid-preview svg .edgeLabel rect {
192
+ fill: #161b22 !important;
193
+ }
194
+
195
+ body.theme-dark .mermaid-preview svg .edgeLabel span {
196
+ color: #e6edf3 !important;
197
+ }
198
+
199
+ /* ════════════════════════════════════════════
200
+ 状态图 (State Diagram)
201
+ ════════════════════════════════════════════ */
202
+ body.theme-dark .mermaid-preview svg .statediagram-state rect,
203
+ body.theme-dark .mermaid-preview svg .statediagram-state circle {
204
+ stroke: #8b949e;
205
+ }
206
+
207
+ body.theme-dark .mermaid-preview svg .statediagram-state .nodeLabel text,
208
+ body.theme-dark .mermaid-preview svg .statediagram-state .nodeLabel span {
209
+ fill: #e6edf3 !important;
210
+ color: #e6edf3 !important;
211
+ }
212
+
213
+ body.theme-dark .mermaid-preview svg .statediagram-cluster rect {
214
+ stroke: #8b949e;
215
+ }
216
+
217
+ body.theme-dark .mermaid-preview svg .statediagram-cluster .outer-title text {
218
+ fill: #e6edf3 !important;
219
+ }
220
+
221
+ body.theme-dark .mermaid-preview svg .transition {
222
+ stroke: #8b949e;
223
+ }
224
+
225
+ body.theme-dark .mermaid-preview svg .edgeLabel .label text {
226
+ fill: #e6edf3 !important;
227
+ }
228
+
229
+ /* ════════════════════════════════════════════
230
+ 饼图 (Pie Chart)
231
+ ════════════════════════════════════════════ */
232
+ body.theme-dark .mermaid-preview svg .pieCircle {
233
+ stroke: #8b949e;
234
+ }
235
+
236
+ body.theme-dark .mermaid-preview svg .slice {
237
+ stroke: #8b949e;
238
+ }
239
+
240
+ body.theme-dark .mermaid-preview svg .pieTitleText {
241
+ fill: #e6edf3 !important;
242
+ }
243
+
244
+ body.theme-dark .mermaid-preview svg .legend text {
245
+ fill: #e6edf3 !important;
246
+ }
247
+
248
+ /* ════════════════════════════════════════════
249
+ 四象限图 (Quadrant Chart)
250
+ ════════════════════════════════════════════ */
251
+ body.theme-dark .mermaid-preview svg .quadrant rect {
252
+ stroke: #8b949e;
253
+ }
254
+
255
+ body.theme-dark .mermaid-preview svg .quadrant text,
256
+ body.theme-dark .mermaid-preview svg .quadrant .titleText {
257
+ fill: #e6edf3 !important;
258
+ }
259
+
260
+ body.theme-dark .mermaid-preview svg .quadrant .axis text {
261
+ fill: #8b949e !important;
262
+ }
263
+
264
+ body.theme-dark .mermaid-preview svg .quadrant .axis line,
265
+ body.theme-dark .mermaid-preview svg .quadrant .axis path {
266
+ stroke: #8b949e;
267
+ }
268
+
269
+ body.theme-dark .mermaid-preview svg .quadrant .point {
270
+ fill: #58a6ff;
271
+ stroke: #8b949e;
272
+ }
273
+
274
+ /* ════════════════════════════════════════════
275
+ XY Chart / 柱状图
276
+ ════════════════════════════════════════════ */
277
+ body.theme-dark .mermaid-preview svg .xychart .axis text {
278
+ fill: #8b949e !important;
279
+ }
280
+
281
+ body.theme-dark .mermaid-preview svg .xychart .axis line,
282
+ body.theme-dark .mermaid-preview svg .xychart .axis path {
283
+ stroke: #8b949e;
284
+ }
285
+
286
+ body.theme-dark .mermaid-preview svg .xychart .plot rect {
287
+ stroke: #8b949e;
288
+ }
289
+
290
+ body.theme-dark .mermaid-preview svg .xychart .plot line {
291
+ stroke: #8b949e;
292
+ }
293
+
294
+ body.theme-dark .mermaid-preview svg .xychart .titleText {
295
+ fill: #e6edf3 !important;
296
+ }
297
+
298
+ /* ════════════════════════════════════════════
299
+ Sankey 图
300
+ ════════════════════════════════════════════ */
301
+ body.theme-dark .mermaid-preview svg .sankey .link {
302
+ stroke: #8b949e;
303
+ }
304
+
305
+ body.theme-dark .mermaid-preview svg .sankey text {
306
+ fill: #e6edf3 !important;
307
+ }
308
+
309
+ /* ════════════════════════════════════════════
310
+ 时序图 (Sequence Diagram)
311
+ ════════════════════════════════════════════ */
312
+ body.theme-dark .mermaid-preview svg .actor rect,
313
+ body.theme-dark .mermaid-preview svg .actor path {
314
+ stroke: #8b949e;
315
+ }
316
+
317
+ body.theme-dark .mermaid-preview svg text.actor {
318
+ fill: #e6edf3 !important;
319
+ }
320
+
321
+ body.theme-dark .mermaid-preview svg .messageLine0,
322
+ body.theme-dark .mermaid-preview svg .messageLine1 {
323
+ stroke: #8b949e !important;
324
+ }
325
+
326
+ body.theme-dark .mermaid-preview svg .messageText {
327
+ fill: #e6edf3 !important;
328
+ }
329
+
330
+ body.theme-dark .mermaid-preview svg .loopText,
331
+ body.theme-dark .mermaid-preview svg .altText,
332
+ body.theme-dark .mermaid-preview svg .optText {
333
+ fill: #8b949e !important;
334
+ }
335
+
336
+ body.theme-dark .mermaid-preview svg .loopLine,
337
+ body.theme-dark .mermaid-preview svg .altLine,
338
+ body.theme-dark .mermaid-preview svg .optLine {
339
+ stroke: #8b949e !important;
340
+ }
341
+
342
+ body.theme-dark .mermaid-preview svg .labelBox {
343
+ stroke: #8b949e;
344
+ }
345
+
346
+ body.theme-dark .mermaid-preview svg .labelText,
347
+ body.theme-dark .mermaid-preview svg .loopText tspan,
348
+ body.theme-dark .mermaid-preview svg .altText tspan,
349
+ body.theme-dark .mermaid-preview svg .optText tspan {
350
+ fill: #e6edf3 !important;
351
+ }
352
+
353
+ /* ════════════════════════════════════════════
354
+ 类图 (Class Diagram)
355
+ ════════════════════════════════════════════ */
356
+ body.theme-dark .mermaid-preview svg .classBox rect,
357
+ body.theme-dark .mermaid-preview svg .classBox path {
358
+ stroke: #8b949e;
359
+ }
360
+
361
+ body.theme-dark .mermaid-preview svg .classTitle text,
362
+ body.theme-dark .mermaid-preview svg .classTitle span {
363
+ fill: #e6edf3 !important;
364
+ color: #e6edf3 !important;
365
+ }
366
+
367
+ body.theme-dark .mermaid-preview svg .classText text,
368
+ body.theme-dark .mermaid-preview svg .classText span {
369
+ fill: #8b949e !important;
370
+ color: #8b949e !important;
371
+ }
372
+
373
+ body.theme-dark .mermaid-preview svg .divider {
374
+ stroke: #8b949e;
375
+ }
376
+
377
+ body.theme-dark .mermaid-preview svg .relation {
378
+ stroke: #8b949e;
379
+ }
380
+
381
+ /* ════════════════════════════════════════════
382
+ 甘特图 (Gantt Chart)
383
+ ════════════════════════════════════════════ */
384
+ body.theme-dark .mermaid-preview svg .task {
385
+ stroke: #8b949e;
386
+ }
387
+
388
+ body.theme-dark .mermaid-preview svg .taskText,
389
+ body.theme-dark .mermaid-preview svg .taskTextOutsideRight,
390
+ body.theme-dark .mermaid-preview svg .taskTextOutsideLeft {
391
+ fill: #e6edf3 !important;
392
+ }
393
+
394
+ body.theme-dark .mermaid-preview svg .section rect {
395
+ stroke: #8b949e;
396
+ }
397
+
398
+ body.theme-dark .mermaid-preview svg .sectionText,
399
+ body.theme-dark .mermaid-preview svg .sectionTitle {
400
+ fill: #e6edf3 !important;
401
+ }
402
+
403
+ body.theme-dark .mermaid-preview svg .today {
404
+ stroke: #58a6ff !important;
405
+ }
406
+
407
+ body.theme-dark .mermaid-preview svg .grid .tick line {
408
+ stroke: #8b949e;
409
+ }
410
+
411
+ body.theme-dark .mermaid-preview svg .grid .domain {
412
+ stroke: #8b949e;
413
+ }
414
+
415
+ body.theme-dark .mermaid-preview svg .tick text {
416
+ fill: #8b949e;
417
+ }
418
+
419
+ /* ════════════════════════════════════════════
420
+ 思维导图 (Mind Map)
421
+ ════════════════════════════════════════════ */
422
+ body.theme-dark .mermaid-preview svg .mindmap-node rect,
423
+ body.theme-dark .mermaid-preview svg .mindmap-node circle,
424
+ body.theme-dark .mermaid-preview svg .mindmap-node ellipse,
425
+ body.theme-dark .mermaid-preview svg .mindmap-node polygon,
426
+ body.theme-dark .mermaid-preview svg .mindmap-node path {
427
+ stroke: #8b949e;
428
+ }
429
+
430
+ body.theme-dark .mermaid-preview svg .mindmap-node text,
431
+ body.theme-dark .mermaid-preview svg .mindmap-node .nodeLabel text,
432
+ body.theme-dark .mermaid-preview svg .mindmap-node .nodeLabel span {
433
+ fill: #e6edf3 !important;
434
+ color: #e6edf3 !important;
435
+ }
436
+
437
+ body.theme-dark .mermaid-preview svg .mindmap-edge {
438
+ stroke: #8b949e;
439
+ }
440
+
441
+ /* ════════════════════════════════════════════
442
+ Block 图
443
+ ════════════════════════════════════════════ */
444
+ body.theme-dark .mermaid-preview svg .block rect,
445
+ body.theme-dark .mermaid-preview svg .block path {
446
+ stroke: #8b949e;
447
+ }
448
+
449
+ body.theme-dark .mermaid-preview svg .block text,
450
+ body.theme-dark .mermaid-preview svg .block .nodeLabel text,
451
+ body.theme-dark .mermaid-preview svg .block .nodeLabel span {
452
+ fill: #e6edf3 !important;
453
+ color: #e6edf3 !important;
454
+ }
455
+
456
+ /* ════════════════════════════════════════════
457
+ ER 图
458
+ ════════════════════════════════════════════ */
459
+ body.theme-dark .mermaid-preview svg .er .entityBox rect,
460
+ body.theme-dark .mermaid-preview svg .er .entityBox path {
461
+ stroke: #8b949e;
462
+ }
463
+
464
+ body.theme-dark .mermaid-preview svg .er text,
465
+ body.theme-dark .mermaid-preview svg .er .relationshipLabel {
466
+ fill: #e6edf3 !important;
467
+ }
468
+
469
+ body.theme-dark .mermaid-preview svg .er .relationshipLine {
470
+ stroke: #8b949e;
471
+ }
472
+
473
+ /* ════════════════════════════════════════════
474
+ Git 图
475
+ ════════════════════════════════════════════ */
476
+ body.theme-dark .mermaid-preview svg .git .commit rect,
477
+ body.theme-dark .mermaid-preview svg .git .commit circle {
478
+ stroke: #8b949e;
479
+ }
480
+
481
+ body.theme-dark .mermaid-preview svg .git text,
482
+ body.theme-dark .mermaid-preview svg .git .branchLabel text {
483
+ fill: #e6edf3 !important;
484
+ }
485
+
486
+ /* ════════════════════════════════════════════
487
+ 用户旅程图 (Journey)
488
+ ════════════════════════════════════════════ */
489
+ body.theme-dark .mermaid-preview svg .journey .task rect {
490
+ stroke: #8b949e;
491
+ }
492
+
493
+ body.theme-dark .mermaid-preview svg .journey text {
494
+ fill: #e6edf3 !important;
495
+ }
496
+
497
+ /* ════════════════════════════════════════════
498
+ 时间线 (Timeline)
499
+ ════════════════════════════════════════════ */
500
+ body.theme-dark .mermaid-preview svg .timeline rect {
501
+ stroke: #8b949e;
502
+ }
503
+
504
+ body.theme-dark .mermaid-preview svg .timeline text {
505
+ fill: #e6edf3 !important;
506
+ }
507
+
508
+ /* ════════════════════════════════════════════
509
+ C4 架构图
510
+ ════════════════════════════════════════════ */
511
+ body.theme-dark .mermaid-preview svg .c4 .person rect,
512
+ body.theme-dark .mermaid-preview svg .c4 .person path,
513
+ body.theme-dark .mermaid-preview svg .c4 .system rect,
514
+ body.theme-dark .mermaid-preview svg .c4 .system path,
515
+ body.theme-dark .mermaid-preview svg .c4 .container rect,
516
+ body.theme-dark .mermaid-preview svg .c4 .container path,
517
+ body.theme-dark .mermaid-preview svg .c4 .boundary rect,
518
+ body.theme-dark .mermaid-preview svg .c4 .boundary path {
519
+ stroke: #8b949e;
520
+ }
521
+
522
+ body.theme-dark .mermaid-preview svg .c4 text,
523
+ body.theme-dark .mermaid-preview svg .c4 span {
524
+ fill: #e6edf3 !important;
525
+ color: #e6edf3 !important;
526
+ }
527
+
528
+ /* ── 人物节点 ── */
529
+ body.theme-dark .mermaid-preview svg .person rect,
530
+ body.theme-dark .mermaid-preview svg .person path {
531
+ stroke: #8b949e !important;
532
+ }
533
+
534
+ body.theme-dark .mermaid-preview svg .person-man text {
535
+ fill: #e6edf3 !important;
536
+ }
537
+
538
+ body.theme-dark .mermaid-preview svg .person-man span {
539
+ color: #e6edf3 !important;
540
+ }body.theme-elegant .mermaid-preview svg text {
541
+ fill: #3d3530;
542
+ font-family: 'LXGW WenKai', 'Noto Serif SC', 'Source Han Serif SC', 'Songti SC', Georgia, serif;
543
+ }
544
+
545
+ body.theme-elegant .mermaid-preview svg .nodeLabel span,
546
+ body.theme-elegant .mermaid-preview svg .edgeLabel span {
547
+ font-family: 'LXGW WenKai', 'Noto Serif SC', 'Source Han Serif SC', 'Songti SC', Georgia, serif;
548
+ }
549
+
550
+ body.theme-elegant .mermaid-preview svg foreignObject span {
551
+ color: #3d3530 !important;
552
+ font-family: 'LXGW WenKai', 'Noto Serif SC', 'Source Han Serif SC', 'Songti SC', Georgia, serif !important;
553
+ font-size: 14px !important;
554
+ }
555
+
556
+ /* ── 通用节点 ── */
557
+ body.theme-elegant .mermaid-preview svg .node rect,
558
+ body.theme-elegant .mermaid-preview svg .node circle,
559
+ body.theme-elegant .mermaid-preview svg .node ellipse,
560
+ body.theme-elegant .mermaid-preview svg .node polygon,
561
+ body.theme-elegant .mermaid-preview svg .node path {
562
+ stroke: #b0a89f;
563
+ }
564
+
565
+ body.theme-elegant .mermaid-preview svg .edgePath .path {
566
+ stroke: #b0a89f;
567
+ }
568
+
569
+ body.theme-elegant .mermaid-preview svg .cluster rect,
570
+ body.theme-elegant .mermaid-preview svg .cluster path {
571
+ stroke: #c4bbb0;
572
+ }
573
+
574
+ body.theme-elegant .mermaid-preview svg defs marker path {
575
+ fill: #b0a89f;
576
+ stroke: #b0a89f;
577
+ }
578
+
579
+ /* ── 硬编码色值覆盖 ── */
580
+ body.theme-elegant .mermaid-preview svg rect[stroke="#444444"] {
581
+ stroke: #b0a89f !important;
582
+ }
583
+
584
+ body.theme-elegant .mermaid-preview svg path[stroke="#444444"] {
585
+ stroke: #b0a89f !important;
586
+ }
587
+
588
+ body.theme-elegant .mermaid-preview svg line[stroke="#444444"] {
589
+ stroke: #b0a89f !important;
590
+ }
591
+
592
+ body.theme-elegant .mermaid-preview svg rect[stroke="#000000"] {
593
+ stroke: #b0a89f !important;
594
+ }
595
+
596
+ body.theme-elegant .mermaid-preview svg path[stroke="#000000"] {
597
+ stroke: #b0a89f !important;
598
+ }
599
+
600
+ body.theme-elegant .mermaid-preview svg line[stroke="#000000"] {
601
+ stroke: #b0a89f !important;
602
+ }
603
+
604
+ /* ── 标签 & 文本 ── */
605
+ body.theme-elegant .mermaid-preview svg .label text,
606
+ body.theme-elegant .mermaid-preview svg .nodeLabel text {
607
+ fill: #3d3530 !important;
608
+ }
609
+
610
+ body.theme-elegant .mermaid-preview svg .nodeLabel span {
611
+ color: #3d3530 !important;
612
+ }
613
+
614
+ body.theme-elegant .mermaid-preview svg .edgeLabel text {
615
+ fill: #3d3530 !important;
616
+ }
617
+
618
+ body.theme-elegant .mermaid-preview svg .edgeLabel rect {
619
+ fill: #4f4d4b !important;
620
+ }
621
+
622
+ body.theme-elegant .mermaid-preview svg .edgeLabel span {
623
+ color: #3d3530 !important;
624
+ }
625
+
626
+ /* ── 文本偏移 ── */
627
+ body.theme-elegant .mermaid-preview svg .label text,
628
+ body.theme-elegant .mermaid-preview svg .nodeLabel text {
629
+ transform: translateY(-3px) !important;
630
+ }
631
+
632
+ body.theme-elegant .mermaid-preview svg .nodeLabel,
633
+ body.theme-elegant .mermaid-preview svg .edgeLabel {
634
+ display: inline-block !important;
635
+ position: relative !important;
636
+ top: -3px !important;
637
+ }
638
+
639
+ /* ════════════════════════════════════════════
640
+ 状态图 (State Diagram)
641
+ ════════════════════════════════════════════ */
642
+ body.theme-elegant .mermaid-preview svg .statediagram-state rect,
643
+ body.theme-elegant .mermaid-preview svg .statediagram-state circle {
644
+ stroke: #b0a89f;
645
+ }
646
+
647
+ body.theme-elegant .mermaid-preview svg .statediagram-state .nodeLabel text,
648
+ body.theme-elegant .mermaid-preview svg .statediagram-state .nodeLabel span {
649
+ fill: #3d3530 !important;
650
+ color: #3d3530 !important;
651
+ }
652
+
653
+ body.theme-elegant .mermaid-preview svg .statediagram-cluster rect {
654
+ stroke: #c4bbb0;
655
+ }
656
+
657
+ body.theme-elegant .mermaid-preview svg .statediagram-cluster .outer-title text {
658
+ fill: #3d3530 !important;
659
+ }
660
+
661
+ body.theme-elegant .mermaid-preview svg .transition {
662
+ stroke: #b0a89f;
663
+ }
664
+
665
+ body.theme-elegant .mermaid-preview svg .edgeLabel .label text {
666
+ fill: #3d3530 !important;
667
+ }
668
+
669
+ /* ════════════════════════════════════════════
670
+ 饼图 (Pie Chart)
671
+ ════════════════════════════════════════════ */
672
+ body.theme-elegant .mermaid-preview svg .pieCircle {
673
+ stroke: #b0a89f;
674
+ }
675
+
676
+ body.theme-elegant .mermaid-preview svg .slice {
677
+ stroke: #b0a89f;
678
+ }
679
+
680
+ body.theme-elegant .mermaid-preview svg .pieTitleText {
681
+ fill: #3d3530 !important;
682
+ }
683
+
684
+ body.theme-elegant .mermaid-preview svg .legend text {
685
+ fill: #3d3530 !important;
686
+ }
687
+
688
+ /* ════════════════════════════════════════════
689
+ 四象限图 (Quadrant Chart)
690
+ ════════════════════════════════════════════ */
691
+ body.theme-elegant .mermaid-preview svg .quadrant rect {
692
+ stroke: #b0a89f;
693
+ }
694
+
695
+ body.theme-elegant .mermaid-preview svg .quadrant text,
696
+ body.theme-elegant .mermaid-preview svg .quadrant .titleText {
697
+ fill: #3d3530 !important;
698
+ }
699
+
700
+ body.theme-elegant .mermaid-preview svg .quadrant .axis text {
701
+ fill: #7a7068 !important;
702
+ }
703
+
704
+ body.theme-elegant .mermaid-preview svg .quadrant .axis line,
705
+ body.theme-elegant .mermaid-preview svg .quadrant .axis path {
706
+ stroke: #b0a89f;
707
+ }
708
+
709
+ body.theme-elegant .mermaid-preview svg .quadrant .point {
710
+ fill: #c44b2b;
711
+ stroke: #b0a89f;
712
+ }
713
+
714
+ /* ════════════════════════════════════════════
715
+ XY Chart / 柱状图
716
+ ════════════════════════════════════════════ */
717
+ body.theme-elegant .mermaid-preview svg .xychart .axis text {
718
+ fill: #7a7068 !important;
719
+ }
720
+
721
+ body.theme-elegant .mermaid-preview svg .xychart .axis line,
722
+ body.theme-elegant .mermaid-preview svg .xychart .axis path {
723
+ stroke: #b0a89f;
724
+ }
725
+
726
+ body.theme-elegant .mermaid-preview svg .xychart .plot rect {
727
+ stroke: #b0a89f;
728
+ }
729
+
730
+ body.theme-elegant .mermaid-preview svg .xychart .plot line {
731
+ stroke: #b0a89f;
732
+ }
733
+
734
+ body.theme-elegant .mermaid-preview svg .xychart .titleText {
735
+ fill: #3d3530 !important;
736
+ }
737
+
738
+ /* ════════════════════════════════════════════
739
+ Sankey 图
740
+ ════════════════════════════════════════════ */
741
+ body.theme-elegant .mermaid-preview svg .sankey .link {
742
+ stroke: #b0a89f;
743
+ }
744
+
745
+ body.theme-elegant .mermaid-preview svg .sankey text {
746
+ fill: #3d3530 !important;
747
+ }
748
+
749
+ /* ════════════════════════════════════════════
750
+ 时序图 (Sequence Diagram)
751
+ ════════════════════════════════════════════ */
752
+ body.theme-elegant .mermaid-preview svg .actor rect,
753
+ body.theme-elegant .mermaid-preview svg .actor path {
754
+ stroke: #b0a89f;
755
+ }
756
+
757
+ body.theme-elegant .mermaid-preview svg text.actor {
758
+ fill: #3d3530 !important;
759
+ }
760
+
761
+ body.theme-elegant .mermaid-preview svg .messageLine0,
762
+ body.theme-elegant .mermaid-preview svg .messageLine1 {
763
+ stroke: #b0a89f !important;
764
+ }
765
+
766
+ body.theme-elegant .mermaid-preview svg .messageText {
767
+ fill: #3d3530 !important;
768
+ }
769
+
770
+ body.theme-elegant .mermaid-preview svg .loopText,
771
+ body.theme-elegant .mermaid-preview svg .altText,
772
+ body.theme-elegant .mermaid-preview svg .optText {
773
+ fill: #7a7068 !important;
774
+ }
775
+
776
+ body.theme-elegant .mermaid-preview svg .loopLine,
777
+ body.theme-elegant .mermaid-preview svg .altLine,
778
+ body.theme-elegant .mermaid-preview svg .optLine {
779
+ stroke: #b0a89f !important;
780
+ }
781
+
782
+ body.theme-elegant .mermaid-preview svg .labelBox {
783
+ stroke: #b0a89f;
784
+ }
785
+
786
+ body.theme-elegant .mermaid-preview svg .labelText,
787
+ body.theme-elegant .mermaid-preview svg .loopText tspan,
788
+ body.theme-elegant .mermaid-preview svg .altText tspan,
789
+ body.theme-elegant .mermaid-preview svg .optText tspan {
790
+ fill: #3d3530 !important;
791
+ }
792
+
793
+ /* ════════════════════════════════════════════
794
+ 类图 (Class Diagram)
795
+ ════════════════════════════════════════════ */
796
+ body.theme-elegant .mermaid-preview svg .classBox rect,
797
+ body.theme-elegant .mermaid-preview svg .classBox path {
798
+ stroke: #b0a89f;
799
+ }
800
+
801
+ body.theme-elegant .mermaid-preview svg .classTitle text,
802
+ body.theme-elegant .mermaid-preview svg .classTitle span {
803
+ fill: #3d3530 !important;
804
+ color: #3d3530 !important;
805
+ }
806
+
807
+ body.theme-elegant .mermaid-preview svg .classText text,
808
+ body.theme-elegant .mermaid-preview svg .classText span {
809
+ fill: #7a7068 !important;
810
+ color: #7a7068 !important;
811
+ }
812
+
813
+ body.theme-elegant .mermaid-preview svg .divider {
814
+ stroke: #b0a89f;
815
+ }
816
+
817
+ body.theme-elegant .mermaid-preview svg .relation {
818
+ stroke: #b0a89f;
819
+ }
820
+
821
+ /* ════════════════════════════════════════════
822
+ 甘特图 (Gantt Chart)
823
+ ════════════════════════════════════════════ */
824
+ body.theme-elegant .mermaid-preview svg .task {
825
+ stroke: #b0a89f;
826
+ }
827
+
828
+ body.theme-elegant .mermaid-preview svg .taskText,
829
+ body.theme-elegant .mermaid-preview svg .taskTextOutsideRight,
830
+ body.theme-elegant .mermaid-preview svg .taskTextOutsideLeft {
831
+ fill: #3d3530 !important;
832
+ }
833
+
834
+ body.theme-elegant .mermaid-preview svg .section rect {
835
+ stroke: #b0a89f;
836
+ }
837
+
838
+ body.theme-elegant .mermaid-preview svg .sectionText,
839
+ body.theme-elegant .mermaid-preview svg .sectionTitle {
840
+ fill: #3d3530 !important;
841
+ }
842
+
843
+ body.theme-elegant .mermaid-preview svg .today {
844
+ stroke: #c44b2b !important;
845
+ }
846
+
847
+ body.theme-elegant .mermaid-preview svg .grid .tick line {
848
+ stroke: #b0a89f;
849
+ }
850
+
851
+ body.theme-elegant .mermaid-preview svg .grid .domain {
852
+ stroke: #b0a89f;
853
+ }
854
+
855
+ body.theme-elegant .mermaid-preview svg .tick text {
856
+ fill: #7a7068;
857
+ }
858
+
859
+ /* ════════════════════════════════════════════
860
+ 思维导图 (Mind Map)
861
+ ════════════════════════════════════════════ */
862
+ body.theme-elegant .mermaid-preview svg .mindmap-node rect,
863
+ body.theme-elegant .mermaid-preview svg .mindmap-node circle,
864
+ body.theme-elegant .mermaid-preview svg .mindmap-node ellipse,
865
+ body.theme-elegant .mermaid-preview svg .mindmap-node polygon,
866
+ body.theme-elegant .mermaid-preview svg .mindmap-node path {
867
+ stroke: #b0a89f;
868
+ }
869
+
870
+ body.theme-elegant .mermaid-preview svg .mindmap-node text,
871
+ body.theme-elegant .mermaid-preview svg .mindmap-node .nodeLabel text,
872
+ body.theme-elegant .mermaid-preview svg .mindmap-node .nodeLabel span {
873
+ fill: #3d3530 !important;
874
+ color: #3d3530 !important;
875
+ }
876
+
877
+ body.theme-elegant .mermaid-preview svg .mindmap-edge {
878
+ stroke: #b0a89f;
879
+ }
880
+
881
+ /* ════════════════════════════════════════════
882
+ Block 图
883
+ ════════════════════════════════════════════ */
884
+ body.theme-elegant .mermaid-preview svg .block rect,
885
+ body.theme-elegant .mermaid-preview svg .block path {
886
+ stroke: #b0a89f;
887
+ }
888
+
889
+ body.theme-elegant .mermaid-preview svg .block text,
890
+ body.theme-elegant .mermaid-preview svg .block .nodeLabel text,
891
+ body.theme-elegant .mermaid-preview svg .block .nodeLabel span {
892
+ fill: #3d3530 !important;
893
+ color: #3d3530 !important;
894
+ }
895
+
896
+ /* ════════════════════════════════════════════
897
+ ER 图
898
+ ════════════════════════════════════════════ */
899
+ body.theme-elegant .mermaid-preview svg .er .entityBox rect,
900
+ body.theme-elegant .mermaid-preview svg .er .entityBox path {
901
+ stroke: #b0a89f;
902
+ }
903
+
904
+ body.theme-elegant .mermaid-preview svg .er text,
905
+ body.theme-elegant .mermaid-preview svg .er .relationshipLabel {
906
+ fill: #3d3530 !important;
907
+ }
908
+
909
+ body.theme-elegant .mermaid-preview svg .er .relationshipLine {
910
+ stroke: #b0a89f;
911
+ }
912
+
913
+ /* ════════════════════════════════════════════
914
+ Git 图
915
+ ════════════════════════════════════════════ */
916
+ body.theme-elegant .mermaid-preview svg .git .commit rect,
917
+ body.theme-elegant .mermaid-preview svg .git .commit circle {
918
+ stroke: #b0a89f;
919
+ }
920
+
921
+ body.theme-elegant .mermaid-preview svg .git text,
922
+ body.theme-elegant .mermaid-preview svg .git .branchLabel text {
923
+ fill: #3d3530 !important;
924
+ }
925
+
926
+ /* ════════════════════════════════════════════
927
+ 用户旅程图 (Journey)
928
+ ════════════════════════════════════════════ */
929
+ body.theme-elegant .mermaid-preview svg .journey .task rect {
930
+ stroke: #b0a89f;
931
+ }
932
+
933
+ body.theme-elegant .mermaid-preview svg .journey text {
934
+ fill: #3d3530 !important;
935
+ }
936
+
937
+ /* ════════════════════════════════════════════
938
+ 时间线 (Timeline)
939
+ ════════════════════════════════════════════ */
940
+ body.theme-elegant .mermaid-preview svg .timeline rect {
941
+ stroke: #b0a89f;
942
+ }
943
+
944
+ body.theme-elegant .mermaid-preview svg .timeline text {
945
+ fill: #3d3530 !important;
946
+ }
947
+
948
+ /* ════════════════════════════════════════════
949
+ C4 架构图
950
+ ════════════════════════════════════════════ */
951
+ body.theme-elegant .mermaid-preview svg .c4 .person rect,
952
+ body.theme-elegant .mermaid-preview svg .c4 .person path,
953
+ body.theme-elegant .mermaid-preview svg .c4 .system rect,
954
+ body.theme-elegant .mermaid-preview svg .c4 .system path,
955
+ body.theme-elegant .mermaid-preview svg .c4 .container rect,
956
+ body.theme-elegant .mermaid-preview svg .c4 .container path,
957
+ body.theme-elegant .mermaid-preview svg .c4 .boundary rect,
958
+ body.theme-elegant .mermaid-preview svg .c4 .boundary path {
959
+ stroke: #b0a89f;
960
+ }
961
+
962
+ body.theme-elegant .mermaid-preview svg .c4 text,
963
+ body.theme-elegant .mermaid-preview svg .c4 span {
964
+ fill: #3d3530 !important;
965
+ color: #3d3530 !important;
966
+ }
967
+
968
+ /* ════════════════════════════════════════════
969
+ 人物节点
970
+ ════════════════════════════════════════════ */
971
+ body.theme-elegant .mermaid-preview svg .person rect,
972
+ body.theme-elegant .mermaid-preview svg .person path {
973
+ stroke: #3d3530;
974
+ }
975
+
976
+ body.theme-elegant .mermaid-preview svg .person-man text {
977
+ fill: #ffffff !important;
978
+ }
979
+
980
+ body.theme-elegant .mermaid-preview svg .person-man span {
981
+ color: #ffffff !important;
982
+ }body.theme-newsprint .mermaid-preview svg text {
983
+ font-family: 'PT Serif', Georgia, serif;
984
+ }
985
+
986
+ body.theme-newsprint .mermaid-preview svg .nodeLabel span,
987
+ body.theme-newsprint .mermaid-preview svg .edgeLabel span {
988
+ font-family: 'PT Serif', Georgia, serif;
989
+ }
990
+
991
+ body.theme-newsprint .mermaid-preview svg foreignObject span {
992
+ font-family: 'PT Serif', Georgia, serif !important;
993
+ }
994
+
995
+ /* ── 标签 & 文本 ── */
996
+ body.theme-newsprint .mermaid-preview svg .edgeLabel text {
997
+ fill: var(--text-color) !important;
998
+ }
999
+
1000
+ body.theme-newsprint .mermaid-preview svg .edgeLabel rect {
1001
+ fill: var(--code-block-bg) !important;
1002
+ }
1003
+
1004
+ body.theme-newsprint .mermaid-preview svg .edgeLabel span {
1005
+ color: var(--text-color) !important;
1006
+ }
1007
+
1008
+ body.theme-newsprint .mermaid-preview svg .label text,
1009
+ body.theme-newsprint .mermaid-preview svg .nodeLabel text {
1010
+ fill: var(--text-color) !important;
1011
+ }
1012
+
1013
+ body.theme-newsprint .mermaid-preview svg .nodeLabel span {
1014
+ color: var(--text-color) !important;
1015
+ }
1016
+
1017
+ /* ════════════════════════════════════════════
1018
+ 状态图 (State Diagram)
1019
+ ════════════════════════════════════════════ */
1020
+ body.theme-newsprint .mermaid-preview svg .statediagram-state .nodeLabel text,
1021
+ body.theme-newsprint .mermaid-preview svg .statediagram-state .nodeLabel span {
1022
+ font-family: 'PT Serif', Georgia, serif !important;
1023
+ }
1024
+
1025
+ body.theme-newsprint .mermaid-preview svg .statediagram-cluster .outer-title text {
1026
+ font-family: 'PT Serif', Georgia, serif !important;
1027
+ }
1028
+
1029
+ body.theme-newsprint .mermaid-preview svg .edgeLabel .label text {
1030
+ font-family: 'PT Serif', Georgia, serif !important;
1031
+ }
1032
+
1033
+ /* ════════════════════════════════════════════
1034
+ 饼图 (Pie Chart)
1035
+ ════════════════════════════════════════════ */
1036
+ body.theme-newsprint .mermaid-preview svg .pieTitleText {
1037
+ font-family: 'PT Serif', Georgia, serif !important;
1038
+ }
1039
+
1040
+ body.theme-newsprint .mermaid-preview svg .legend text {
1041
+ font-family: 'PT Serif', Georgia, serif !important;
1042
+ }
1043
+
1044
+ /* ════════════════════════════════════════════
1045
+ 四象限图 (Quadrant Chart)
1046
+ ════════════════════════════════════════════ */
1047
+ body.theme-newsprint .mermaid-preview svg .quadrant text,
1048
+ body.theme-newsprint .mermaid-preview svg .quadrant .titleText {
1049
+ font-family: 'PT Serif', Georgia, serif !important;
1050
+ }
1051
+
1052
+ body.theme-newsprint .mermaid-preview svg .quadrant .axis text {
1053
+ font-family: 'PT Serif', Georgia, serif !important;
1054
+ }
1055
+
1056
+ /* ════════════════════════════════════════════
1057
+ XY Chart / 柱状图
1058
+ ════════════════════════════════════════════ */
1059
+ body.theme-newsprint .mermaid-preview svg .xychart .axis text {
1060
+ font-family: 'PT Serif', Georgia, serif !important;
1061
+ }
1062
+
1063
+ body.theme-newsprint .mermaid-preview svg .xychart .titleText {
1064
+ font-family: 'PT Serif', Georgia, serif !important;
1065
+ }
1066
+
1067
+ /* ════════════════════════════════════════════
1068
+ Sankey 图
1069
+ ════════════════════════════════════════════ */
1070
+ body.theme-newsprint .mermaid-preview svg .sankey text {
1071
+ font-family: 'PT Serif', Georgia, serif !important;
1072
+ }
1073
+
1074
+ /* ════════════════════════════════════════════
1075
+ 时序图 (Sequence Diagram)
1076
+ ════════════════════════════════════════════ */
1077
+ body.theme-newsprint .mermaid-preview svg text.actor {
1078
+ font-family: 'PT Serif', Georgia, serif !important;
1079
+ }
1080
+
1081
+ body.theme-newsprint .mermaid-preview svg .messageText {
1082
+ font-family: 'PT Serif', Georgia, serif !important;
1083
+ }
1084
+
1085
+ body.theme-newsprint .mermaid-preview svg .loopText,
1086
+ body.theme-newsprint .mermaid-preview svg .altText,
1087
+ body.theme-newsprint .mermaid-preview svg .optText {
1088
+ font-family: 'PT Serif', Georgia, serif !important;
1089
+ }
1090
+
1091
+ body.theme-newsprint .mermaid-preview svg .labelText,
1092
+ body.theme-newsprint .mermaid-preview svg .loopText tspan,
1093
+ body.theme-newsprint .mermaid-preview svg .altText tspan,
1094
+ body.theme-newsprint .mermaid-preview svg .optText tspan {
1095
+ font-family: 'PT Serif', Georgia, serif !important;
1096
+ }
1097
+
1098
+ /* ════════════════════════════════════════════
1099
+ 类图 (Class Diagram)
1100
+ ════════════════════════════════════════════ */
1101
+ body.theme-newsprint .mermaid-preview svg .classTitle text,
1102
+ body.theme-newsprint .mermaid-preview svg .classTitle span {
1103
+ font-family: 'PT Serif', Georgia, serif !important;
1104
+ }
1105
+
1106
+ body.theme-newsprint .mermaid-preview svg .classText text,
1107
+ body.theme-newsprint .mermaid-preview svg .classText span {
1108
+ font-family: 'PT Serif', Georgia, serif !important;
1109
+ }
1110
+
1111
+ /* ════════════════════════════════════════════
1112
+ 甘特图 (Gantt Chart)
1113
+ ════════════════════════════════════════════ */
1114
+ body.theme-newsprint .mermaid-preview svg .taskText,
1115
+ body.theme-newsprint .mermaid-preview svg .taskTextOutsideRight,
1116
+ body.theme-newsprint .mermaid-preview svg .taskTextOutsideLeft {
1117
+ font-family: 'PT Serif', Georgia, serif !important;
1118
+ }
1119
+
1120
+ body.theme-newsprint .mermaid-preview svg .sectionText,
1121
+ body.theme-newsprint .mermaid-preview svg .sectionTitle {
1122
+ font-family: 'PT Serif', Georgia, serif !important;
1123
+ }
1124
+
1125
+ body.theme-newsprint .mermaid-preview svg .tick text {
1126
+ font-family: 'PT Serif', Georgia, serif !important;
1127
+ }
1128
+
1129
+ /* ════════════════════════════════════════════
1130
+ 思维导图 (Mind Map)
1131
+ ════════════════════════════════════════════ */
1132
+ body.theme-newsprint .mermaid-preview svg .mindmap-node text,
1133
+ body.theme-newsprint .mermaid-preview svg .mindmap-node .nodeLabel text,
1134
+ body.theme-newsprint .mermaid-preview svg .mindmap-node .nodeLabel span {
1135
+ font-family: 'PT Serif', Georgia, serif !important;
1136
+ }
1137
+
1138
+ /* ════════════════════════════════════════════
1139
+ Block 图
1140
+ ════════════════════════════════════════════ */
1141
+ body.theme-newsprint .mermaid-preview svg .block text,
1142
+ body.theme-newsprint .mermaid-preview svg .block .nodeLabel text,
1143
+ body.theme-newsprint .mermaid-preview svg .block .nodeLabel span {
1144
+ font-family: 'PT Serif', Georgia, serif !important;
1145
+ }
1146
+
1147
+ /* ════════════════════════════════════════════
1148
+ ER 图
1149
+ ════════════════════════════════════════════ */
1150
+ body.theme-newsprint .mermaid-preview svg .er text,
1151
+ body.theme-newsprint .mermaid-preview svg .er .relationshipLabel {
1152
+ font-family: 'PT Serif', Georgia, serif !important;
1153
+ }
1154
+
1155
+ /* ════════════════════════════════════════════
1156
+ Git 图
1157
+ ════════════════════════════════════════════ */
1158
+ body.theme-newsprint .mermaid-preview svg .git text,
1159
+ body.theme-newsprint .mermaid-preview svg .git .branchLabel text {
1160
+ font-family: 'PT Serif', Georgia, serif !important;
1161
+ }
1162
+
1163
+ /* ════════════════════════════════════════════
1164
+ 用户旅程图 (Journey)
1165
+ ════════════════════════════════════════════ */
1166
+ body.theme-newsprint .mermaid-preview svg .journey text {
1167
+ font-family: 'PT Serif', Georgia, serif !important;
1168
+ }
1169
+
1170
+ /* ════════════════════════════════════════════
1171
+ 时间线 (Timeline)
1172
+ ════════════════════════════════════════════ */
1173
+ body.theme-newsprint .mermaid-preview svg .timeline text {
1174
+ font-family: 'PT Serif', Georgia, serif !important;
1175
+ }
1176
+
1177
+ /* ════════════════════════════════════════════
1178
+ C4 架构图
1179
+ ════════════════════════════════════════════ */
1180
+ body.theme-newsprint .mermaid-preview svg .c4 text,
1181
+ body.theme-newsprint .mermaid-preview svg .c4 span {
1182
+ font-family: 'PT Serif', Georgia, serif !important;
1183
+ }
1184
+
1185
+ /* ── 人物节点 ── */
1186
+ body.theme-newsprint .mermaid-preview svg .person-man text,
1187
+ body.theme-newsprint .mermaid-preview svg .person-man span {
1188
+ font-family: 'PT Serif', Georgia, serif !important;
1189
+ }body.theme-custom .mermaid-preview svg text {
1190
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1191
+ font-family: var(--mermaid-font-family, inherit) !important;
1192
+ font-size: var(--mermaid-font-size, 12px) !important;
1193
+ }
1194
+
1195
+ body.theme-custom .mermaid-preview svg .nodeLabel span,
1196
+ body.theme-custom .mermaid-preview svg .edgeLabel span {
1197
+ font-family: var(--mermaid-font-family, inherit) !important;
1198
+ font-size: var(--mermaid-font-size, 14px) !important;
1199
+ }
1200
+
1201
+ body.theme-custom .mermaid-preview svg foreignObject span {
1202
+ color: var(--mermaid-text-color, var(--text-color)) !important;
1203
+ font-family: var(--mermaid-font-family, inherit) !important;
1204
+ font-size: var(--mermaid-font-size, 14px) !important;
1205
+ }
1206
+
1207
+ body.theme-custom .mermaid-preview svg .label text,
1208
+ body.theme-custom .mermaid-preview svg .nodeLabel text,
1209
+ body.theme-custom .mermaid-preview svg .state-title,
1210
+ body.theme-custom .mermaid-preview svg .state-description,
1211
+ body.theme-custom .mermaid-preview svg .pieTitleText {
1212
+ transform: translateY(-3px) !important;
1213
+ }
1214
+
1215
+ body.theme-custom .mermaid-preview svg .titleText {
1216
+ transform: translateY(-3px) !important;
1217
+ }
1218
+
1219
+ body.theme-custom .mermaid-preview svg .xychart .axis text {
1220
+ transform: translateY(0) !important;
1221
+ }
1222
+
1223
+ body.theme-custom .mermaid-preview svg .nodeLabel,
1224
+ body.theme-custom .mermaid-preview svg .edgeLabel {
1225
+ display: inline-block !important;
1226
+ position: relative !important;
1227
+ top: -3px !important;
1228
+ }
1229
+
1230
+ body.theme-custom .mermaid-preview svg .node rect,
1231
+ body.theme-custom .mermaid-preview svg .node circle,
1232
+ body.theme-custom .mermaid-preview svg .node ellipse,
1233
+ body.theme-custom .mermaid-preview svg .node polygon,
1234
+ body.theme-custom .mermaid-preview svg .node path {
1235
+ stroke: var(--mermaid-node-border, var(--border-color));
1236
+ }
1237
+
1238
+ body.theme-custom .mermaid-preview svg .edgePath .path {
1239
+ stroke: var(--mermaid-line-color, var(--border-color));
1240
+ }
1241
+
1242
+ body.theme-custom .mermaid-preview svg .cluster rect,
1243
+ body.theme-custom .mermaid-preview svg .cluster path {
1244
+ stroke: var(--mermaid-cluster-border, var(--border-color));
1245
+ }
1246
+
1247
+ body.theme-custom .mermaid-preview svg defs marker path {
1248
+ fill: var(--mermaid-arrowhead-color, var(--mermaid-line-color, var(--border-color)));
1249
+ stroke: var(--mermaid-arrowhead-color, var(--mermaid-line-color, var(--border-color)));
1250
+ }
1251
+
1252
+ body.theme-custom .mermaid-preview svg rect[stroke="#444444"] {
1253
+ stroke: var(--mermaid-node-border, var(--border-color)) !important;
1254
+ }
1255
+
1256
+ body.theme-custom .mermaid-preview svg path[stroke="#444444"] {
1257
+ stroke: var(--mermaid-node-border, var(--border-color)) !important;
1258
+ }
1259
+
1260
+ body.theme-custom .mermaid-preview svg rect[stroke="#000000"] {
1261
+ stroke: var(--mermaid-node-border, var(--border-color)) !important;
1262
+ }
1263
+
1264
+ body.theme-custom .mermaid-preview svg path[stroke="#000000"] {
1265
+ stroke: var(--mermaid-node-border, var(--border-color)) !important;
1266
+ }
1267
+
1268
+ body.theme-custom .mermaid-preview svg line[stroke="#444444"] {
1269
+ stroke: var(--mermaid-node-border, var(--border-color)) !important;
1270
+ }
1271
+
1272
+ body.theme-custom .mermaid-preview svg line[stroke="#000000"] {
1273
+ stroke: var(--mermaid-node-border, var(--border-color)) !important;
1274
+ }
1275
+
1276
+ body.theme-custom .mermaid-preview svg .edgeLabel text {
1277
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1278
+ }
1279
+
1280
+ body.theme-custom .mermaid-preview svg .edgeLabel rect {
1281
+ fill: var(--mermaid-edge-label-background, var(--code-block-bg)) !important;
1282
+ }
1283
+
1284
+ body.theme-custom .mermaid-preview svg .edgeLabel span {
1285
+ color: var(--mermaid-text-color, var(--text-color)) !important;
1286
+ }
1287
+
1288
+ body.theme-custom .mermaid-preview svg .label text {
1289
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1290
+ }
1291
+
1292
+ body.theme-custom .mermaid-preview svg .nodeLabel text {
1293
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1294
+ }
1295
+
1296
+ body.theme-custom .mermaid-preview svg .nodeLabel span {
1297
+ color: var(--mermaid-text-color, var(--text-color)) !important;
1298
+ }
1299
+
1300
+ body.theme-custom .mermaid-preview svg .person rect,
1301
+ body.theme-custom .mermaid-preview svg .person path {
1302
+ stroke: var(--mermaid-person-border, var(--text-color));
1303
+ }
1304
+
1305
+ body.theme-custom .mermaid-preview svg .person-man text {
1306
+ fill: #ffffff !important;
1307
+ }
1308
+
1309
+ body.theme-custom .mermaid-preview svg .person-man span {
1310
+ color: #ffffff !important;
1311
+ }
1312
+
1313
+ body.theme-custom .mermaid-preview svg .actor rect,
1314
+ body.theme-custom .mermaid-preview svg .actor path {
1315
+ stroke: var(--mermaid-node-border, var(--border-color));
1316
+ }
1317
+
1318
+ body.theme-custom .mermaid-preview svg text.actor {
1319
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1320
+ }
1321
+
1322
+ body.theme-custom .mermaid-preview svg .messageLine0,
1323
+ body.theme-custom .mermaid-preview svg .messageLine1 {
1324
+ stroke: var(--mermaid-line-color, var(--border-color)) !important;
1325
+ }
1326
+
1327
+ body.theme-custom .mermaid-preview svg .messageText {
1328
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1329
+ }
1330
+
1331
+ body.theme-custom .mermaid-preview svg .loopText,
1332
+ body.theme-custom .mermaid-preview svg .altText,
1333
+ body.theme-custom .mermaid-preview svg .optText {
1334
+ fill: var(--mermaid-text-color, var(--text-muted)) !important;
1335
+ }
1336
+
1337
+ body.theme-custom .mermaid-preview svg .loopLine,
1338
+ body.theme-custom .mermaid-preview svg .altLine,
1339
+ body.theme-custom .mermaid-preview svg .optLine {
1340
+ stroke: var(--mermaid-line-color, var(--border-color)) !important;
1341
+ }
1342
+
1343
+ body.theme-custom .mermaid-preview svg .labelBox {
1344
+ stroke: var(--mermaid-node-border, var(--border-color));
1345
+ }
1346
+
1347
+ body.theme-custom .mermaid-preview svg .labelText {
1348
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1349
+ }
1350
+
1351
+ body.theme-custom .mermaid-preview svg .loopText tspan,
1352
+ body.theme-custom .mermaid-preview svg .altText tspan,
1353
+ body.theme-custom .mermaid-preview svg .optText tspan {
1354
+ fill: var(--mermaid-text-color, var(--text-muted)) !important;
1355
+ }
1356
+
1357
+ body.theme-custom .mermaid-preview svg .classBox rect,
1358
+ body.theme-custom .mermaid-preview svg .classBox path {
1359
+ stroke: var(--mermaid-node-border, var(--border-color));
1360
+ }
1361
+
1362
+ body.theme-custom .mermaid-preview svg .classTitle text {
1363
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1364
+ }
1365
+
1366
+ body.theme-custom .mermaid-preview svg .classTitle span {
1367
+ color: var(--mermaid-text-color, var(--text-color)) !important;
1368
+ }
1369
+
1370
+ body.theme-custom .mermaid-preview svg .classText text {
1371
+ fill: var(--mermaid-text-color, var(--text-muted)) !important;
1372
+ }
1373
+
1374
+ body.theme-custom .mermaid-preview svg .classText span {
1375
+ color: var(--mermaid-text-color, var(--text-muted)) !important;
1376
+ }
1377
+
1378
+ body.theme-custom .mermaid-preview svg .divider {
1379
+ stroke: var(--mermaid-node-border, var(--border-color));
1380
+ }
1381
+
1382
+ body.theme-custom .mermaid-preview svg .relation {
1383
+ stroke: var(--mermaid-line-color, var(--border-color));
1384
+ }
1385
+
1386
+ body.theme-custom .mermaid-preview svg .statediagram-state rect,
1387
+ body.theme-custom .mermaid-preview svg .statediagram-state circle {
1388
+ stroke: var(--mermaid-node-border, var(--border-color));
1389
+ }
1390
+
1391
+ body.theme-custom .mermaid-preview svg .statediagram-state .nodeLabel text,
1392
+ body.theme-custom .mermaid-preview svg .statediagram-state .nodeLabel span {
1393
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1394
+ color: var(--mermaid-text-color, var(--text-color)) !important;
1395
+ }
1396
+
1397
+ body.theme-custom .mermaid-preview svg .statediagram-cluster rect {
1398
+ stroke: var(--mermaid-cluster-border, var(--border-color));
1399
+ }
1400
+
1401
+ body.theme-custom .mermaid-preview svg .transition {
1402
+ stroke: var(--mermaid-line-color, var(--border-color));
1403
+ }
1404
+
1405
+ body.theme-custom .mermaid-preview svg .edgeLabel .label text {
1406
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1407
+ }
1408
+
1409
+ body.theme-custom .mermaid-preview svg .statediagram-cluster .outer-title text {
1410
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1411
+ }
1412
+
1413
+ body.theme-custom .mermaid-preview svg .pieTitleText {
1414
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1415
+ }
1416
+
1417
+ body.theme-custom .mermaid-preview svg .pieCircle {
1418
+ stroke: var(--mermaid-node-border, var(--border-color));
1419
+ }
1420
+
1421
+ body.theme-custom .mermaid-preview svg .slice {
1422
+ stroke: var(--mermaid-node-border, var(--border-color));
1423
+ }
1424
+
1425
+ body.theme-custom .mermaid-preview svg .legend text {
1426
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1427
+ }
1428
+
1429
+ body.theme-custom .mermaid-preview svg .task {
1430
+ stroke: var(--mermaid-node-border, var(--border-color));
1431
+ }
1432
+
1433
+ body.theme-custom .mermaid-preview svg .taskText,
1434
+ body.theme-custom .mermaid-preview svg .taskTextOutsideRight,
1435
+ body.theme-custom .mermaid-preview svg .taskTextOutsideLeft {
1436
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1437
+ }
1438
+
1439
+ body.theme-custom .mermaid-preview svg .section rect {
1440
+ stroke: var(--mermaid-node-border, var(--border-color));
1441
+ }
1442
+
1443
+ body.theme-custom .mermaid-preview svg .sectionText,
1444
+ body.theme-custom .mermaid-preview svg .sectionTitle {
1445
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1446
+ }
1447
+
1448
+ body.theme-custom .mermaid-preview svg .today {
1449
+ stroke: var(--mermaid-line-color, var(--border-color)) !important;
1450
+ }
1451
+
1452
+ body.theme-custom .mermaid-preview svg .grid .tick line {
1453
+ stroke: var(--mermaid-line-color, var(--border-color));
1454
+ }
1455
+
1456
+ body.theme-custom .mermaid-preview svg .grid .domain {
1457
+ stroke: var(--mermaid-line-color, var(--border-color));
1458
+ }
1459
+
1460
+ body.theme-custom .mermaid-preview svg .tick text {
1461
+ fill: var(--mermaid-text-color, var(--text-muted));
1462
+ }
1463
+
1464
+ body.theme-custom .mermaid-preview svg .mindmap-node rect,
1465
+ body.theme-custom .mermaid-preview svg .mindmap-node circle,
1466
+ body.theme-custom .mermaid-preview svg .mindmap-node ellipse,
1467
+ body.theme-custom .mermaid-preview svg .mindmap-node polygon,
1468
+ body.theme-custom .mermaid-preview svg .mindmap-node path {
1469
+ stroke: var(--mermaid-node-border, var(--border-color));
1470
+ }
1471
+
1472
+ body.theme-custom .mermaid-preview svg .mindmap-node text {
1473
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1474
+ }
1475
+
1476
+ body.theme-custom .mermaid-preview svg .mindmap-node .nodeLabel text,
1477
+ body.theme-custom .mermaid-preview svg .mindmap-node .nodeLabel span {
1478
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1479
+ color: var(--mermaid-text-color, var(--text-color)) !important;
1480
+ }
1481
+
1482
+ body.theme-custom .mermaid-preview svg .mindmap-edge {
1483
+ stroke: var(--mermaid-line-color, var(--border-color));
1484
+ }
1485
+
1486
+ body.theme-custom .mermaid-preview svg .quadrant rect {
1487
+ stroke: var(--mermaid-node-border, var(--border-color));
1488
+ }
1489
+
1490
+ body.theme-custom .mermaid-preview svg .quadrant text {
1491
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1492
+ }
1493
+
1494
+ body.theme-custom .mermaid-preview svg .quadrant .titleText {
1495
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1496
+ }
1497
+
1498
+ body.theme-custom .mermaid-preview svg .quadrant .axis text {
1499
+ fill: var(--mermaid-text-color, var(--text-muted)) !important;
1500
+ }
1501
+
1502
+ body.theme-custom .mermaid-preview svg .quadrant .axis line,
1503
+ body.theme-custom .mermaid-preview svg .quadrant .axis path {
1504
+ stroke: var(--mermaid-line-color, var(--border-color));
1505
+ }
1506
+
1507
+ body.theme-custom .mermaid-preview svg .quadrant .point {
1508
+ fill: var(--mermaid-primary-color, var(--link-color));
1509
+ stroke: var(--mermaid-node-border, var(--border-color));
1510
+ }
1511
+
1512
+ body.theme-custom .mermaid-preview svg .xychart .axis text {
1513
+ fill: var(--mermaid-text-color, var(--text-muted)) !important;
1514
+ }
1515
+
1516
+ body.theme-custom .mermaid-preview svg .xychart .axis line,
1517
+ body.theme-custom .mermaid-preview svg .xychart .axis path {
1518
+ stroke: var(--mermaid-line-color, var(--border-color));
1519
+ }
1520
+
1521
+ body.theme-custom .mermaid-preview svg .xychart .plot rect {
1522
+ stroke: var(--mermaid-node-border, var(--border-color));
1523
+ }
1524
+
1525
+ body.theme-custom .mermaid-preview svg .xychart .plot line {
1526
+ stroke: var(--mermaid-line-color, var(--border-color));
1527
+ }
1528
+
1529
+ body.theme-custom .mermaid-preview svg .xychart .titleText {
1530
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1531
+ }
1532
+
1533
+ body.theme-custom .mermaid-preview svg .sankey .link {
1534
+ stroke: var(--mermaid-line-color, var(--border-color));
1535
+ }
1536
+
1537
+ body.theme-custom .mermaid-preview svg .sankey text {
1538
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1539
+ }
1540
+
1541
+ body.theme-custom .mermaid-preview svg .block rect,
1542
+ body.theme-custom .mermaid-preview svg .block path {
1543
+ stroke: var(--mermaid-node-border, var(--border-color));
1544
+ }
1545
+
1546
+ body.theme-custom .mermaid-preview svg .block text {
1547
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1548
+ }
1549
+
1550
+ body.theme-custom .mermaid-preview svg .block .nodeLabel text,
1551
+ body.theme-custom .mermaid-preview svg .block .nodeLabel span {
1552
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1553
+ color: var(--mermaid-text-color, var(--text-color)) !important;
1554
+ }
1555
+
1556
+ body.theme-custom .mermaid-preview svg .er .entityBox rect,
1557
+ body.theme-custom .mermaid-preview svg .er .entityBox path {
1558
+ stroke: var(--mermaid-node-border, var(--border-color));
1559
+ }
1560
+
1561
+ body.theme-custom .mermaid-preview svg .er text {
1562
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1563
+ }
1564
+
1565
+ body.theme-custom .mermaid-preview svg .er .relationshipLabel {
1566
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1567
+ }
1568
+
1569
+ body.theme-custom .mermaid-preview svg .er .relationshipLine {
1570
+ stroke: var(--mermaid-line-color, var(--border-color));
1571
+ }
1572
+
1573
+ body.theme-custom .mermaid-preview svg .git .commit rect,
1574
+ body.theme-custom .mermaid-preview svg .git .commit circle {
1575
+ stroke: var(--mermaid-node-border, var(--border-color));
1576
+ }
1577
+
1578
+ body.theme-custom .mermaid-preview svg .git text {
1579
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1580
+ }
1581
+
1582
+ body.theme-custom .mermaid-preview svg .git .branchLabel text {
1583
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1584
+ }
1585
+
1586
+ body.theme-custom .mermaid-preview svg .journey .task rect {
1587
+ stroke: var(--mermaid-node-border, var(--border-color));
1588
+ }
1589
+
1590
+ body.theme-custom .mermaid-preview svg .journey text {
1591
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1592
+ }
1593
+
1594
+ body.theme-custom .mermaid-preview svg .timeline rect {
1595
+ stroke: var(--mermaid-node-border, var(--border-color));
1596
+ }
1597
+
1598
+ body.theme-custom .mermaid-preview svg .timeline text {
1599
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1600
+ }
1601
+
1602
+ body.theme-custom .mermaid-preview svg .c4 .person rect,
1603
+ body.theme-custom .mermaid-preview svg .c4 .person path,
1604
+ body.theme-custom .mermaid-preview svg .c4 .system rect,
1605
+ body.theme-custom .mermaid-preview svg .c4 .system path,
1606
+ body.theme-custom .mermaid-preview svg .c4 .container rect,
1607
+ body.theme-custom .mermaid-preview svg .c4 .container path,
1608
+ body.theme-custom .mermaid-preview svg .c4 .boundary rect,
1609
+ body.theme-custom .mermaid-preview svg .c4 .boundary path {
1610
+ stroke: var(--mermaid-node-border, var(--border-color));
1611
+ }
1612
+
1613
+ body.theme-custom .mermaid-preview svg .c4 text {
1614
+ fill: var(--mermaid-text-color, var(--text-color)) !important;
1615
+ }
1616
+
1617
+ body.theme-custom .mermaid-preview svg .c4 span {
1618
+ color: var(--mermaid-text-color, var(--text-color)) !important;
1619
+ }
1620
+ .ProseMirror {
1621
+ position: relative;
1622
+ }
1623
+
1624
+ .ProseMirror {
1625
+ word-wrap: break-word;
1626
+ white-space: pre-wrap;
1627
+ white-space: break-spaces;
1628
+ -webkit-font-variant-ligatures: none;
1629
+ font-variant-ligatures: none;
1630
+ font-feature-settings: "liga" 0; /* the above doesn't seem to work in Edge */
1631
+ }
1632
+
1633
+ .ProseMirror pre {
1634
+ white-space: pre-wrap;
1635
+ }
1636
+
1637
+ .ProseMirror li {
1638
+ position: relative;
1639
+ }
1640
+
1641
+ .ProseMirror-hideselection *::selection { background: transparent; }
1642
+
1643
+ .ProseMirror-hideselection *::-moz-selection { background: transparent; }
1644
+
1645
+ .ProseMirror-hideselection { caret-color: transparent; }
1646
+
1647
+ /* See https://github.com/ProseMirror/prosemirror/issues/1421#issuecomment-1759320191 */
1648
+
1649
+ .ProseMirror [draggable][contenteditable=false] { user-select: text }
1650
+
1651
+ .ProseMirror-selectednode {
1652
+ outline: 2px solid #8cf;
1653
+ }
1654
+
1655
+ /* Make sure li selections wrap around markers */
1656
+
1657
+ li.ProseMirror-selectednode {
1658
+ outline: none;
1659
+ }
1660
+
1661
+ li.ProseMirror-selectednode:after {
1662
+ content: "";
1663
+ position: absolute;
1664
+ left: -32px;
1665
+ right: -2px; top: -2px; bottom: -2px;
1666
+ border: 2px solid #8cf;
1667
+ pointer-events: none;
1668
+ }
1669
+
1670
+ /* Protect against generic img rules */
1671
+
1672
+ img.ProseMirror-separator {
1673
+ display: inline !important;
1674
+ border: none !important;
1675
+ margin: 0 !important;
1676
+ }*, *::before, *::after {
1677
+ box-sizing: border-box;
1678
+ margin: 0;
1679
+ padding: 0;
1680
+ }
1681
+
1682
+ html, body {
1683
+ height: 100%;
1684
+ overflow: hidden;
1685
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif;
1686
+ background: var(--bg-color);
1687
+ color: var(--text-color);
1688
+ }
1689
+
1690
+ #titlebar {
1691
+ -webkit-app-region: drag;
1692
+ height: 52px;
1693
+ flex-shrink: 0;
1694
+ position: relative;
1695
+ }
1696
+
1697
+ #agent-dot {
1698
+ position: absolute;
1699
+ top: 22px;
1700
+ right: 16px;
1701
+ width: 8px;
1702
+ height: 8px;
1703
+ border-radius: 50%;
1704
+ background: var(--text-muted);
1705
+ opacity: 0.3;
1706
+ -webkit-app-region: no-drag;
1707
+ transition: background 0.3s ease, opacity 0.3s ease;
1708
+ }
1709
+
1710
+ #slides-btn {
1711
+ position: absolute;
1712
+ top: 14px;
1713
+ right: 32px;
1714
+ width: 28px;
1715
+ height: 28px;
1716
+ border-radius: 6px;
1717
+ border: none;
1718
+ background: transparent;
1719
+ color: var(--text-muted);
1720
+ font-size: 13px;
1721
+ cursor: pointer;
1722
+ display: none;
1723
+ align-items: center;
1724
+ justify-content: center;
1725
+ -webkit-app-region: no-drag;
1726
+ transition: background 0.15s, color 0.15s;
1727
+ }
1728
+
1729
+ #slides-btn:hover {
1730
+ background: var(--accent-soft, rgba(241,117,45,0.12));
1731
+ color: #F1752D;
1732
+ }
1733
+
1734
+ #slides-btn.visible {
1735
+ display: flex;
1736
+ }
1737
+
1738
+ #agent-dot.active {
1739
+ background: #e8913a;
1740
+ opacity: 1;
1741
+ animation: agent-breathe 2s ease-in-out infinite;
1742
+ }
1743
+
1744
+ #agent-dot.cooldown {
1745
+ background: #3dba5c;
1746
+ opacity: 1;
1747
+ animation: none;
1748
+ }
1749
+
1750
+ @keyframes agent-breathe {
1751
+ 0%, 100% { opacity: 0.45; transform: scale(0.95); }
1752
+ 50% { opacity: 1; transform: scale(1.05); }
1753
+ }
1754
+
1755
+ #editor {
1756
+ height: calc(100vh - 52px);
1757
+ overflow-y: auto;
1758
+ padding: 0 40px 40px;
1759
+ }
1760
+
1761
+ #source-editor {
1762
+ display: none;
1763
+ height: calc(100vh - 52px);
1764
+ width: 100%;
1765
+ padding: 40px;
1766
+ box-sizing: border-box;
1767
+ border: none;
1768
+ outline: none;
1769
+ resize: none;
1770
+ background: var(--bg-color);
1771
+ color: var(--text-color);
1772
+ font-family: 'SF Mono', 'Fira Code', Menlo, Monaco, monospace;
1773
+ font-size: 14px;
1774
+ line-height: 1.7;
1775
+ tab-size: 2;
1776
+ }
1777
+
1778
+ #source-editor.visible {
1779
+ display: block;
1780
+ }
1781
+
1782
+ #editor.hidden {
1783
+ display: none;
1784
+ }
1785
+
1786
+ #editor .ProseMirror {
1787
+ outline: none;
1788
+ max-width: 780px;
1789
+ margin: 0 auto;
1790
+ min-height: calc(100vh - 92px);
1791
+ font-size: 16px;
1792
+ line-height: 1.75;
1793
+ color: var(--text-color);
1794
+ }
1795
+
1796
+ #editor .ProseMirror > * + * {
1797
+ margin-top: 0.75em;
1798
+ }
1799
+
1800
+ /* Typography */
1801
+ #editor .ProseMirror h1 {
1802
+ font-size: 2em;
1803
+ font-weight: 700;
1804
+ margin-top: 1.5em;
1805
+ margin-bottom: 0.5em;
1806
+ line-height: 1.25;
1807
+ padding-bottom: 0.3em;
1808
+ border-bottom: 1px solid var(--border-color);
1809
+ }
1810
+
1811
+ #editor .ProseMirror h2 {
1812
+ font-size: 1.5em;
1813
+ font-weight: 600;
1814
+ margin-top: 1.25em;
1815
+ margin-bottom: 0.5em;
1816
+ line-height: 1.3;
1817
+ padding-bottom: 0.25em;
1818
+ border-bottom: 1px solid var(--border-color);
1819
+ }
1820
+
1821
+ #editor .ProseMirror h3 {
1822
+ font-size: 1.25em;
1823
+ font-weight: 600;
1824
+ margin-top: 1em;
1825
+ margin-bottom: 0.5em;
1826
+ }
1827
+
1828
+ #editor .ProseMirror h4,
1829
+ #editor .ProseMirror h5,
1830
+ #editor .ProseMirror h6 {
1831
+ font-weight: 600;
1832
+ margin-top: 1em;
1833
+ margin-bottom: 0.5em;
1834
+ }
1835
+
1836
+ #editor .ProseMirror p {
1837
+ margin: 0.5em 0;
1838
+ }
1839
+
1840
+ #editor .ProseMirror a {
1841
+ color: var(--link-color);
1842
+ text-decoration: none;
1843
+ }
1844
+
1845
+ #editor .ProseMirror a:hover {
1846
+ text-decoration: underline;
1847
+ }
1848
+
1849
+ #editor .ProseMirror strong {
1850
+ font-weight: 600;
1851
+ }
1852
+
1853
+ /* Code */
1854
+ #editor .ProseMirror code {
1855
+ background: var(--code-bg);
1856
+ padding: 2px 6px;
1857
+ border-radius: 3px;
1858
+ font-size: 0.875em;
1859
+ font-family: 'SF Mono', 'Fira Code', Menlo, monospace;
1860
+ }
1861
+
1862
+ #editor .ProseMirror pre {
1863
+ background: var(--code-block-bg);
1864
+ color: var(--code-block-text, var(--text-color));
1865
+ padding: 16px;
1866
+ border-radius: 6px;
1867
+ overflow-x: auto;
1868
+ margin: 1em 0;
1869
+ }
1870
+
1871
+ #editor .ProseMirror pre code {
1872
+ background: none;
1873
+ padding: 0;
1874
+ font-size: 0.875em;
1875
+ line-height: 1.6;
1876
+ }
1877
+
1878
+ /* Blockquote */
1879
+ #editor .ProseMirror blockquote {
1880
+ border-left: 4px solid var(--blockquote-border);
1881
+ padding-left: 16px;
1882
+ margin: 1em 0;
1883
+ color: var(--text-muted);
1884
+ }
1885
+
1886
+ /* Lists */
1887
+ #editor .ProseMirror ul,
1888
+ #editor .ProseMirror ol {
1889
+ padding-left: 24px;
1890
+ margin: 0.5em 0;
1891
+ }
1892
+
1893
+ #editor .ProseMirror li {
1894
+ margin: 0.25em 0;
1895
+ }
1896
+
1897
+ #editor .ProseMirror li > p {
1898
+ margin: 0;
1899
+ }
1900
+
1901
+ /* Table */
1902
+ #editor .ProseMirror table {
1903
+ border-collapse: collapse;
1904
+ width: 100%;
1905
+ margin: 1em 0;
1906
+ }
1907
+
1908
+ #editor .ProseMirror th,
1909
+ #editor .ProseMirror td {
1910
+ border: 1px solid var(--border-color);
1911
+ padding: 8px 12px;
1912
+ text-align: left;
1913
+ }
1914
+
1915
+ #editor .ProseMirror th {
1916
+ background: var(--table-header-bg);
1917
+ font-weight: 600;
1918
+ }
1919
+
1920
+ /* HR */
1921
+ #editor .ProseMirror hr {
1922
+ border: none;
1923
+ border-top: 2px solid var(--border-color);
1924
+ margin: 2em 0;
1925
+ }
1926
+
1927
+ /* Image */
1928
+ #editor .ProseMirror img {
1929
+ max-width: 100%;
1930
+ border-radius: 4px;
1931
+ }
1932
+
1933
+ #editor .ProseMirror ::selection {
1934
+ background: var(--selection-bg);
1935
+ }
1936
+
1937
+ /* ======= THEMES ======= */
1938
+
1939
+ body, body.theme-light {
1940
+ --bg-color: #ffffff;
1941
+ --text-color: #24292f;
1942
+ --text-muted: #656d76;
1943
+ --border-color: #d0d7de;
1944
+ --link-color: #0969da;
1945
+ --code-bg: rgba(175, 184, 193, 0.2);
1946
+ --code-block-bg: #f6f8fa;
1947
+ --blockquote-border: #d0d7de;
1948
+ --table-header-bg: #f6f8fa;
1949
+ --selection-bg: rgba(9, 105, 218, 0.15);
1950
+ }
1951
+
1952
+ body.theme-dark {
1953
+ --bg-color: #0d1117;
1954
+ --text-color: #e6edf3;
1955
+ --text-muted: #8b949e;
1956
+ --border-color: #30363d;
1957
+ --link-color: #58a6ff;
1958
+ --code-bg: rgba(110, 118, 129, 0.3);
1959
+ --code-block-bg: #161b22;
1960
+ --blockquote-border: #30363d;
1961
+ --table-header-bg: #161b22;
1962
+ --selection-bg: rgba(88, 166, 255, 0.2);
1963
+ }
1964
+
1965
+ body.theme-elegant {
1966
+ --bg-color: #f0edea;
1967
+ --text-color: #2c2c2c;
1968
+ --text-muted: #777;
1969
+ --border-color: #d8d3ce;
1970
+ --link-color: #c44b2b;
1971
+ --code-bg: #e0d8cf;
1972
+ --code-block-bg: #e8e2db;
1973
+ --code-block-text: #3d3530;
1974
+ --blockquote-border: #c44b2b;
1975
+ --blockquote-bg: #eae6e1;
1976
+ --table-header-bg: #eae6e1;
1977
+ --table-border: #d8d3ce;
1978
+ --selection-bg: rgba(196, 75, 43, 0.2);
1979
+ }
1980
+
1981
+ body.theme-elegant #editor .ProseMirror {
1982
+ font-family: 'LXGW WenKai', 'Noto Serif SC', 'Source Han Serif SC', 'Songti SC', Georgia, serif;
1983
+ line-height: 1.9;
1984
+ }
1985
+
1986
+ body.theme-elegant #editor .ProseMirror strong {
1987
+ color: #c44b2b;
1988
+ }
1989
+
1990
+ body.theme-elegant #editor .ProseMirror code {
1991
+ color: #c44b2b;
1992
+ }
1993
+
1994
+ body.theme-elegant #editor .ProseMirror pre {
1995
+ color: var(--code-block-text);
1996
+ }
1997
+
1998
+ body.theme-elegant #editor .ProseMirror pre code {
1999
+ color: inherit;
2000
+ }
2001
+
2002
+ body.theme-elegant #editor .ProseMirror blockquote {
2003
+ background: var(--blockquote-bg);
2004
+ padding: 15px 20px 15px 25px;
2005
+ }
2006
+
2007
+ body.theme-elegant #editor .ProseMirror table th {
2008
+ border-bottom: 2px solid #c44b2b;
2009
+ }
2010
+
2011
+ body.theme-elegant #editor .ProseMirror table td {
2012
+ border-left: none;
2013
+ border-right: none;
2014
+ }
2015
+
2016
+ body.theme-newsprint {
2017
+ --bg-color: #f5f2eb;
2018
+ --text-color: #1a1a1a;
2019
+ --text-muted: #666;
2020
+ --border-color: #d4d0c8;
2021
+ --link-color: #2c5f8a;
2022
+ --code-bg: rgba(0, 0, 0, 0.05);
2023
+ --code-block-bg: #eae6de;
2024
+ --blockquote-border: #999;
2025
+ --table-header-bg: #eae6de;
2026
+ --selection-bg: rgba(44, 95, 138, 0.15);
2027
+ }
2028
+
2029
+ body.theme-newsprint #editor .ProseMirror {
2030
+ font-family: 'PT Serif', Georgia, serif;
2031
+ }
2032
+
2033
+ /* Scrollbar */
2034
+ ::-webkit-scrollbar {
2035
+ width: 6px;
2036
+ }
2037
+
2038
+ ::-webkit-scrollbar-track {
2039
+ background: transparent;
2040
+ }
2041
+
2042
+ ::-webkit-scrollbar-thumb {
2043
+ background: var(--border-color);
2044
+ border-radius: 3px;
2045
+ }
2046
+
2047
+ /* Math blocks */
2048
+ .math-inline {
2049
+ display: inline;
2050
+ padding: 2px 4px;
2051
+ border-radius: 3px;
2052
+ background: var(--code-bg);
2053
+ cursor: default;
2054
+ }
2055
+
2056
+ .math-inline .katex {
2057
+ font-size: 1.1em;
2058
+ }
2059
+
2060
+ .math-block {
2061
+ display: block;
2062
+ padding: 0.875em;
2063
+ margin: 1em 0;
2064
+ border-radius: 6px;
2065
+ background: var(--code-block-bg);
2066
+ text-align: center;
2067
+ overflow-x: auto;
2068
+ }
2069
+
2070
+ .math-block .katex {
2071
+ font-size: 1.2em;
2072
+ }
2073
+
2074
+ /* Dark theme: KaTeX color overrides */
2075
+ body.theme-dark .math-inline,
2076
+ body.theme-dark .math-block {
2077
+ color: var(--text-color);
2078
+ }
2079
+
2080
+ body.theme-dark .katex {
2081
+ color: var(--text-color);
2082
+ }
2083
+
2084
+ body.theme-dark .katex .mord,
2085
+ body.theme-dark .katex .mbin,
2086
+ body.theme-dark .katex .mrel,
2087
+ body.theme-dark .katex .mopen,
2088
+ body.theme-dark .katex .mclose,
2089
+ body.theme-dark .katex .mpunct,
2090
+ body.theme-dark .katex .minner {
2091
+ color: var(--text-color);
2092
+ }
2093
+
2094
+ /* KaTeX scrollbar in block math for dark theme */
2095
+ body.theme-dark .math-block::-webkit-scrollbar-thumb {
2096
+ background: #30363d;
2097
+ }
2098
+
2099
+ body.theme-elegant .math-block::-webkit-scrollbar-thumb {
2100
+ background: #c4bbb0;
2101
+ }
2102
+
2103
+ /* Elegant theme: KaTeX color overrides */
2104
+ body.theme-elegant .math-inline,
2105
+ body.theme-elegant .math-block {
2106
+ color: var(--text-color);
2107
+ }
2108
+
2109
+ body.theme-elegant .katex {
2110
+ color: #3d3530;
2111
+ }
2112
+
2113
+ body.theme-elegant .katex .mord,
2114
+ body.theme-elegant .katex .mbin,
2115
+ body.theme-elegant .katex .mrel,
2116
+ body.theme-elegant .katex .mopen,
2117
+ body.theme-elegant .katex .mclose,
2118
+ body.theme-elegant .katex .mpunct,
2119
+ body.theme-elegant .katex .minner {
2120
+ color: #3d3530;
2121
+ }
2122
+
2123
+ /* Plugin raw mode — editable inputs */
2124
+ .math-inline-raw {
2125
+ width: auto;
2126
+ min-width: 60px;
2127
+ border: 1px solid var(--border-color);
2128
+ border-radius: 4px;
2129
+ padding: 2px 6px;
2130
+ font-size: 0.875em;
2131
+ font-family: 'SF Mono', 'Fira Code', Menlo, monospace;
2132
+ color: var(--text-color);
2133
+ background: var(--code-bg);
2134
+ outline: none;
2135
+ }
2136
+ .math-inline-raw:focus {
2137
+ border-color: var(--link-color);
2138
+ }
2139
+
2140
+ textarea.math-block-raw {
2141
+ width: 100%;
2142
+ min-height: 60px;
2143
+ border: 1px solid var(--border-color);
2144
+ border-radius: 6px;
2145
+ padding: 14px;
2146
+ font-size: 0.875em;
2147
+ font-family: 'SF Mono', 'Fira Code', Menlo, monospace;
2148
+ color: var(--code-block-text, var(--text-color));
2149
+ background: var(--code-block-bg);
2150
+ outline: none;
2151
+ resize: vertical;
2152
+ line-height: 1.6;
2153
+ white-space: pre-wrap;
2154
+ }
2155
+ textarea.math-block-raw:focus {
2156
+ border-color: var(--link-color);
2157
+ }
2158
+
2159
+ /* Inline context menu for PNG export */
2160
+ #cola-context-menu {
2161
+ position: fixed;
2162
+ display: none;
2163
+ z-index: 99999;
2164
+ background: var(--bg-color);
2165
+ border: 1px solid var(--border-color);
2166
+ border-radius: 6px;
2167
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
2168
+ padding: 4px;
2169
+ min-width: 180px;
2170
+ }
2171
+
2172
+ .cola-menu-item {
2173
+ padding: 6px 16px;
2174
+ border-radius: 4px;
2175
+ cursor: pointer;
2176
+ font-size: 13px;
2177
+ color: var(--text-color);
2178
+ white-space: nowrap;
2179
+ }
2180
+
2181
+ .cola-menu-item:hover {
2182
+ background: var(--accent-soft, rgba(241, 117, 45, 0.12));
2183
+ color: #F1752D;
2184
+ }