@bytechain.cn/colamd 1.5.0 → 1.5.1-beta.2

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 (193) hide show
  1. package/.trae/specs/optimize-theme-loading/checklist.md +20 -0
  2. package/.trae/specs/optimize-theme-loading/spec.md +103 -0
  3. package/.trae/specs/optimize-theme-loading/tasks.md +40 -0
  4. package/CHANGELOG.md +323 -0
  5. package/CLAUDE.md +56 -0
  6. package/README.md +422 -26
  7. package/README_CN.md +480 -28
  8. package/android/app/build/.npmkeep +0 -0
  9. package/android/app/build.gradle +76 -0
  10. package/android/app/capacitor.build.gradle +24 -0
  11. package/android/app/proguard-rules.pro +21 -0
  12. package/android/app/release.keystore +0 -0
  13. package/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +26 -0
  14. package/android/app/src/main/AndroidManifest.xml +64 -0
  15. package/android/app/src/main/java/cn/bytechain/colamd/MainActivity.java +180 -0
  16. package/android/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  17. package/android/app/src/main/res/drawable/splash.png +0 -0
  18. package/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  19. package/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  20. package/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  21. package/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  22. package/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  23. package/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  24. package/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  25. package/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  26. package/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  27. package/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  28. package/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +34 -0
  29. package/android/app/src/main/res/layout/activity_main.xml +12 -0
  30. package/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
  31. package/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
  32. package/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  33. package/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  34. package/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  35. package/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  36. package/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  37. package/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  38. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  39. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  40. package/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  41. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  42. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  43. package/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  44. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  45. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  46. package/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  47. package/android/app/src/main/res/values/ic_launcher_background.xml +4 -0
  48. package/android/app/src/main/res/values/strings.xml +7 -0
  49. package/android/app/src/main/res/values/styles.xml +22 -0
  50. package/android/app/src/main/res/xml/file_paths.xml +5 -0
  51. package/android/app/src/main/res/xml/network_security_config.xml +8 -0
  52. package/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +18 -0
  53. package/android/build.gradle +29 -0
  54. package/android/capacitor.settings.gradle +21 -0
  55. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  56. package/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  57. package/android/gradle.properties +22 -0
  58. package/android/gradlew +248 -0
  59. package/android/gradlew.bat +92 -0
  60. package/android/settings.gradle +5 -0
  61. package/android/variables.gradle +16 -0
  62. package/bytechain.cn-colamd-1.5.1-beta.2.tgz +0 -0
  63. package/capacitor.config.js +29 -0
  64. package/capacitor.config.ts +30 -0
  65. package/demo.md +191 -484
  66. package/dist/main/index.js +77 -46
  67. package/dist/renderer/assets/{arc-tTbbM8LO.js → arc-CPdeInCG.js} +1 -1
  68. package/dist/renderer/assets/{architectureDiagram-3BPJPVTR-CEgYow6c.js → architectureDiagram-3BPJPVTR-BAbnaR9G.js} +4 -3
  69. package/dist/renderer/assets/{blockDiagram-GPEHLZMM-LHyVtPwW.js → blockDiagram-GPEHLZMM-CYSWjnJg.js} +5 -4
  70. package/dist/renderer/assets/{c4Diagram-AAUBKEIU-C1P1eJrf.js → c4Diagram-AAUBKEIU-Rb1tstnr.js} +3 -2
  71. package/dist/renderer/assets/{channel-upve91Tq.js → channel-DpG2A6fE.js} +1 -1
  72. package/dist/renderer/assets/{chunk-2J33WTMH-lag2vhq9.js → chunk-2J33WTMH-DFc0Jxy_.js} +1 -1
  73. package/dist/renderer/assets/{chunk-4BX2VUAB-BXJ8Ggh-.js → chunk-4BX2VUAB-BhRxDTNn.js} +1 -1
  74. package/dist/renderer/assets/{chunk-55IACEB6-CiBpxRa1.js → chunk-55IACEB6-DEgMVBk8.js} +1 -1
  75. package/dist/renderer/assets/{chunk-727SXJPM-ODeKQFXC.js → chunk-727SXJPM-bjBIfiz8.js} +5 -5
  76. package/dist/renderer/assets/{chunk-AQP2D5EJ-BK7xJolB.js → chunk-AQP2D5EJ-DwQMzTzD.js} +3 -3
  77. package/dist/renderer/assets/{chunk-FMBD7UC4-BxpCZPtz.js → chunk-FMBD7UC4-CkphwJzs.js} +1 -1
  78. package/dist/renderer/assets/{chunk-ND2GUHAM-CqqaU9Ue.js → chunk-ND2GUHAM-oU09z4y4.js} +1 -1
  79. package/dist/renderer/assets/{chunk-QZHKN3VN-Biq_K124.js → chunk-QZHKN3VN-rCbVuPBn.js} +1 -1
  80. package/dist/renderer/assets/{classDiagram-v2-Q7XG4LA2-Cq95X99o.js → classDiagram-4FO5ZUOK-DGS2faoM.js} +7 -6
  81. package/dist/renderer/assets/{classDiagram-4FO5ZUOK-Cq95X99o.js → classDiagram-v2-Q7XG4LA2-DGS2faoM.js} +7 -6
  82. package/dist/renderer/assets/{cose-bilkent-S5V4N54A-XasiD0bu.js → cose-bilkent-S5V4N54A-iqY6-EwA.js} +2 -1
  83. package/dist/renderer/assets/{dagre-BM42HDAG-Nq84Gfx4.js → dagre-BM42HDAG-5t3X5sDa.js} +4 -3
  84. package/dist/renderer/assets/{diagram-2AECGRRQ-DwuB1GWt.js → diagram-2AECGRRQ-DzHiYDPh.js} +4 -3
  85. package/dist/renderer/assets/{diagram-5GNKFQAL-C2tgeI1h.js → diagram-5GNKFQAL-BiNv6Keq.js} +5 -4
  86. package/dist/renderer/assets/{diagram-KO2AKTUF-D5KzjNBc.js → diagram-KO2AKTUF-ClzeDG6f.js} +4 -3
  87. package/dist/renderer/assets/{diagram-LMA3HP47-C12xHS1c.js → diagram-LMA3HP47-CGkw7wII.js} +4 -3
  88. package/dist/renderer/assets/{diagram-OG6HWLK6-CnxI9oEa.js → diagram-OG6HWLK6-Dl-Hyk1_.js} +5 -4
  89. package/dist/renderer/assets/{erDiagram-TEJ5UH35-D_uPaKwn.js → erDiagram-TEJ5UH35-BxUN79Qb.js} +5 -4
  90. package/dist/renderer/assets/{flowDiagram-I6XJVG4X-B6q_1-tE.js → flowDiagram-I6XJVG4X-CzFk-KNI.js} +7 -6
  91. package/dist/renderer/assets/{ganttDiagram-6RSMTGT7-CFo7ifF9.js → ganttDiagram-6RSMTGT7-C2xl6Igx.js} +3 -2
  92. package/dist/renderer/assets/{gitGraphDiagram-PVQCEYII-WSexHTnq.js → gitGraphDiagram-PVQCEYII-_fn7XCa7.js} +5 -4
  93. package/dist/renderer/assets/{graph-DyX_9f6d.js → graph-CDoHYrHm.js} +1 -1
  94. package/dist/renderer/assets/index-B4uDgADr.js +530 -0
  95. package/dist/renderer/assets/index-CBcVpA3d.js +30 -0
  96. package/dist/renderer/assets/index-CGj1spkU.js +27 -0
  97. package/dist/renderer/assets/{index-dyHEFYvY.css → index-CeFpoCKV.css} +443 -400
  98. package/dist/renderer/assets/index-D4CPFkph.js +9 -0
  99. package/dist/renderer/assets/{index-DW7LS8C1.js → index-DAlXyxzt.js} +1183 -346
  100. package/dist/renderer/assets/index-DxOzbfR-.js +110 -0
  101. package/dist/renderer/assets/index-Y89U1ptl.js +9 -0
  102. package/dist/renderer/assets/{infoDiagram-5YYISTIA-DaeJdLRq.js → infoDiagram-5YYISTIA-DL6XIxLz.js} +3 -2
  103. package/dist/renderer/assets/{ishikawaDiagram-YF4QCWOH-DDCZc35f.js → ishikawaDiagram-YF4QCWOH-BUZLjRo-.js} +2 -1
  104. package/dist/renderer/assets/{journeyDiagram-JHISSGLW-BEdmpAgl.js → journeyDiagram-JHISSGLW-C4rH_mQM.js} +5 -4
  105. package/dist/renderer/assets/{kanban-definition-UN3LZRKU-BEFtQcFb.js → kanban-definition-UN3LZRKU-DRbrBcWV.js} +3 -2
  106. package/dist/renderer/assets/{layout-CAJgQHdw.js → layout-DZl4n4qu.js} +2 -2
  107. package/dist/renderer/assets/{linear-B2ggJ8Am.js → linear-B0Krxg21.js} +1 -1
  108. package/dist/renderer/assets/{mindmap-definition-RKZ34NQL-DSxVgHB5.js → mindmap-definition-RKZ34NQL-DdmPsWrn.js} +4 -3
  109. package/dist/renderer/assets/{pieDiagram-4H26LBE5-CwYoJBuL.js → pieDiagram-4H26LBE5-BPZLqwG0.js} +5 -4
  110. package/dist/renderer/assets/preload-helper-tXtZnHb0.js +88 -0
  111. package/dist/renderer/assets/{quadrantDiagram-W4KKPZXB-CST9Fvg9.js → quadrantDiagram-W4KKPZXB-Dr-oWRk9.js} +3 -2
  112. package/dist/renderer/assets/{requirementDiagram-4Y6WPE33-DtrH52jS.js → requirementDiagram-4Y6WPE33-B6QZd0lo.js} +4 -3
  113. package/dist/renderer/assets/{sankeyDiagram-5OEKKPKP-ca1tPzJ_.js → sankeyDiagram-5OEKKPKP-Cyl9ojEt.js} +2 -1
  114. package/dist/renderer/assets/{sequenceDiagram-3UESZ5HK-Dfp1EJZ7.js → sequenceDiagram-3UESZ5HK-D48Yr9T6.js} +4 -3
  115. package/dist/renderer/assets/{stateDiagram-AJRCARHV-Bha2QoNB.js → stateDiagram-AJRCARHV-qyb8ETsa.js} +7 -6
  116. package/dist/renderer/assets/{stateDiagram-v2-BHNVJYJU-DWgFUYu1.js → stateDiagram-v2-BHNVJYJU-DmDOyyrJ.js} +5 -4
  117. package/dist/renderer/assets/{timeline-definition-PNZ67QCA-C3h_-OTj.js → timeline-definition-PNZ67QCA-C-KQxTi1.js} +3 -2
  118. package/dist/renderer/assets/{vennDiagram-CIIHVFJN-DFzjSrZi.js → vennDiagram-CIIHVFJN-BdaZlnH-.js} +2 -1
  119. package/dist/renderer/assets/{wardley-L42UT6IY-Cx-VbqoS.js → wardley-L42UT6IY-b-_GPpqL.js} +1 -1
  120. package/dist/renderer/assets/{wardleyDiagram-YWT4CUSO-S2D9XqX6.js → wardleyDiagram-YWT4CUSO-B2hBE-EE.js} +4 -3
  121. package/dist/renderer/assets/web-BKE0SH0E.js +36 -0
  122. package/dist/renderer/assets/web-CBsFp24u.js +564 -0
  123. package/dist/renderer/assets/web-Dc8YgoHP.js +24 -0
  124. package/dist/renderer/assets/web-TfDzToU7.js +58 -0
  125. package/dist/renderer/assets/{xychartDiagram-2RQKCTM6-Cfxigbts.js → xychartDiagram-2RQKCTM6-CSvswDTY.js} +3 -2
  126. package/dist/renderer/index.html +62 -3
  127. package/docs/academic-demo.md +566 -0
  128. package/docs/demo.html +748 -0
  129. package/docs/demo.md +546 -0
  130. package/docs/demo.pdf +0 -0
  131. package/docs/theme-paradigm.md +658 -0
  132. package/electron-builder.yml +7 -0
  133. package/electron.vite.config.js +31 -0
  134. package/electron.vite.config.ts +1 -1
  135. package/ios/App/App/AppDelegate.swift +49 -0
  136. package/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png +0 -0
  137. package/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json +14 -0
  138. package/ios/App/App/Assets.xcassets/Contents.json +6 -0
  139. package/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json +23 -0
  140. package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png +0 -0
  141. package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png +0 -0
  142. package/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png +0 -0
  143. package/ios/App/App/Base.lproj/LaunchScreen.storyboard +32 -0
  144. package/ios/App/App/Base.lproj/Main.storyboard +19 -0
  145. package/ios/App/App/Info.plist +49 -0
  146. package/ios/App/App.xcodeproj/project.pbxproj +408 -0
  147. package/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  148. package/ios/App/Podfile +28 -0
  149. package/package.json +23 -3
  150. package/resources/templates/slides/template-forest-ink.html +540 -0
  151. package/scripts/generate-icons.js +102 -0
  152. package/src/main/index.ts +87 -63
  153. package/src/preload/index.d.ts +51 -0
  154. package/src/preload/index.js +70 -0
  155. package/src/renderer/capacitor-api.ts +713 -0
  156. package/src/renderer/editor/editor.ts +87 -4
  157. package/src/renderer/editor/plugins/index.ts +24 -32
  158. package/src/renderer/editor/plugins/math-plugin.ts +1 -1
  159. package/src/renderer/editor/plugins/mermaid-plugin-custom.css +13 -398
  160. package/src/renderer/editor/plugins/mermaid-plugin.ts +62 -71
  161. package/src/renderer/editor/plugins/themes/base/dark.css +23 -0
  162. package/src/renderer/editor/plugins/themes/base/elegant.css +32 -0
  163. package/src/renderer/editor/plugins/themes/base/light.css +20 -0
  164. package/src/renderer/editor/plugins/themes/base/newsprint.css +27 -0
  165. package/src/renderer/editor/plugins/themes/components/mermaid/academic.css +43 -0
  166. package/src/renderer/editor/plugins/themes/components/mermaid/dark.css +20 -0
  167. package/src/renderer/editor/plugins/themes/components/mermaid/elegant.css +24 -0
  168. package/src/renderer/editor/plugins/themes/components/mermaid/light.css +21 -0
  169. package/src/renderer/editor/plugins/themes/components/mermaid/newsprint.css +26 -0
  170. package/src/renderer/editor/plugins/themes/components/mermaid/variables.css +592 -0
  171. package/src/renderer/editor/plugins/themes/foundation.css +143 -0
  172. package/src/renderer/editor/plugins/themes/theme-manager.ts +92 -0
  173. package/src/renderer/env.d.ts +4 -1
  174. package/src/renderer/index.html +59 -1
  175. package/src/renderer/main.ts +432 -57
  176. package/src/renderer/mobile.css +429 -0
  177. package/themes/README.md +3 -0
  178. package/themes/academic-paper.css +1321 -0
  179. package/themes/elegant.css +14 -7
  180. package/themes/forest-ink.css +664 -0
  181. package/themes/pixso-design.css +1261 -0
  182. package/themes/swiss-design.css +596 -0
  183. package/themes/template.css +498 -0
  184. package/tsconfig.main.json +1 -0
  185. package/tsconfig.main.tsbuildinfo +1 -0
  186. package/tsconfig.preload.json +1 -0
  187. package/tsconfig.preload.tsbuildinfo +1 -0
  188. package/tsconfig.renderer.json +1 -0
  189. package/tsconfig.renderer.tsbuildinfo +1 -0
  190. package/tsconfig.tsbuildinfo +1 -0
  191. package/.trae/documents/fix-mermaid-colors-and-sankey.md +0 -50
  192. package/src/renderer/themes/theme-manager.ts +0 -40
  193. /package/src/renderer/{themes → editor/plugins/themes}/base.css +0 -0
@@ -1186,24 +1186,30 @@ body.theme-newsprint .mermaid-preview svg .c4 span {
1186
1186
  body.theme-newsprint .mermaid-preview svg .person-man text,
1187
1187
  body.theme-newsprint .mermaid-preview svg .person-man span {
1188
1188
  font-family: 'PT Serif', Georgia, serif !important;
1189
- }body.theme-custom .mermaid-preview svg text {
1189
+ }/* === 字体 & 文字颜色基础定义 === */
1190
+ body.theme-custom .mermaid-preview svg text {
1190
1191
  fill: var(--mermaid-text-color, var(--text-color)) !important;
1191
1192
  font-family: var(--mermaid-font-family, inherit) !important;
1192
1193
  font-size: var(--mermaid-font-size, 12px) !important;
1193
1194
  }
1194
1195
 
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
-
1196
+ /* === ForeignObject 文字 === */
1201
1197
  body.theme-custom .mermaid-preview svg foreignObject span {
1202
1198
  color: var(--mermaid-text-color, var(--text-color)) !important;
1203
1199
  font-family: var(--mermaid-font-family, inherit) !important;
1204
1200
  font-size: var(--mermaid-font-size, 14px) !important;
1205
1201
  }
1206
1202
 
1203
+ /* === Person-Man 强制白色 === */
1204
+ body.theme-custom .mermaid-preview svg .person-man text {
1205
+ fill: #ffffff !important;
1206
+ }
1207
+
1208
+ body.theme-custom .mermaid-preview svg .person-man span {
1209
+ color: #ffffff !important;
1210
+ }
1211
+
1212
+ /* === 文字偏移样式(custom 主题特有) === */
1207
1213
  body.theme-custom .mermaid-preview svg .label text,
1208
1214
  body.theme-custom .mermaid-preview svg .nodeLabel text,
1209
1215
  body.theme-custom .mermaid-preview svg .state-title,
@@ -1225,399 +1231,7 @@ body.theme-custom .mermaid-preview svg .edgeLabel {
1225
1231
  display: inline-block !important;
1226
1232
  position: relative !important;
1227
1233
  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 {
1234
+ }.ProseMirror {
1621
1235
  position: relative;
1622
1236
  }
1623
1237
 
@@ -2182,3 +1796,432 @@ textarea.math-block-raw:focus {
2182
1796
  background: var(--accent-soft, rgba(241, 117, 45, 0.12));
2183
1797
  color: #F1752D;
2184
1798
  }
1799
+ @media (max-width: 768px) {
1800
+ :root {
1801
+ --mobile-header-height: 48px;
1802
+ }
1803
+
1804
+ html, body {
1805
+ height: 100%;
1806
+ overflow: hidden;
1807
+ -webkit-text-size-adjust: 100%;
1808
+ -webkit-tap-highlight-color: transparent;
1809
+ touch-action: manipulation;
1810
+ }
1811
+
1812
+ #titlebar {
1813
+ position: fixed;
1814
+ top: 0;
1815
+ left: 0;
1816
+ right: 0;
1817
+ height: var(--mobile-header-height);
1818
+ z-index: 1000;
1819
+ display: flex;
1820
+ align-items: center;
1821
+ justify-content: space-between;
1822
+ padding: 0 12px;
1823
+ background: var(--bg-color, #fff);
1824
+ border-bottom: 1px solid var(--border-color, #e0e0e0);
1825
+ }
1826
+
1827
+ #menu-btn {
1828
+ -webkit-app-region: no-drag;
1829
+ display: flex;
1830
+ width: 36px;
1831
+ height: 36px;
1832
+ border: none;
1833
+ background: transparent;
1834
+ color: var(--text-color);
1835
+ border-radius: 8px;
1836
+ align-items: center;
1837
+ justify-content: center;
1838
+ cursor: pointer;
1839
+ padding: 8px;
1840
+ transition: background 0.15s;
1841
+ }
1842
+ #menu-btn:active {
1843
+ background: var(--accent-soft, rgba(241,117,45,0.12));
1844
+ }
1845
+
1846
+ #agent-dot {
1847
+ width: 10px;
1848
+ height: 10px;
1849
+ border-radius: 50%;
1850
+ background: #ccc;
1851
+ }
1852
+ #agent-dot.active { background: #f97316; animation: pulse-mobile 1s infinite; }
1853
+ #agent-dot.cooldown { background: #22c55e; animation: pulse-mobile 0.3s ease 2; }
1854
+
1855
+ @keyframes pulse-mobile {
1856
+ 0%, 100% { opacity: 1; transform: scale(1); }
1857
+ 50% { opacity: 0.6; transform: scale(1.2); }
1858
+ }
1859
+
1860
+ #slides-btn {
1861
+ display: none;
1862
+ }
1863
+
1864
+ #mobile-menu {
1865
+ display: block;
1866
+ position: fixed;
1867
+ top: 0;
1868
+ left: 0;
1869
+ right: 0;
1870
+ bottom: 0;
1871
+ z-index: 2000;
1872
+ pointer-events: none;
1873
+ }
1874
+
1875
+ #mobile-menu.open {
1876
+ pointer-events: auto;
1877
+ }
1878
+
1879
+ #menu-overlay {
1880
+ position: absolute;
1881
+ top: 0;
1882
+ left: 0;
1883
+ right: 0;
1884
+ bottom: 0;
1885
+ background: rgba(0, 0, 0, 0.4);
1886
+ opacity: 0;
1887
+ transition: opacity 0.25s ease;
1888
+ }
1889
+
1890
+ #mobile-menu.open #menu-overlay {
1891
+ opacity: 1;
1892
+ }
1893
+
1894
+ #menu-panel {
1895
+ position: absolute;
1896
+ top: 0;
1897
+ left: 0;
1898
+ bottom: 0;
1899
+ width: min(300px, 80vw);
1900
+ background: var(--bg-color, #fff);
1901
+ transform: translateX(-100%);
1902
+ transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
1903
+ display: flex;
1904
+ flex-direction: column;
1905
+ box-shadow: 4px 0 24px rgba(0, 0, 0, 0.15);
1906
+ overflow-y: auto;
1907
+ -webkit-overflow-scrolling: touch;
1908
+ }
1909
+
1910
+ #mobile-menu.open #menu-panel {
1911
+ transform: translateX(0);
1912
+ }
1913
+
1914
+ #menu-header {
1915
+ display: flex;
1916
+ align-items: center;
1917
+ justify-content: space-between;
1918
+ padding: 16px 20px;
1919
+ border-bottom: 1px solid var(--border-color, #e0e0e0);
1920
+ flex-shrink: 0;
1921
+ }
1922
+
1923
+ #menu-title {
1924
+ font-size: 17px;
1925
+ font-weight: 700;
1926
+ color: var(--text-color);
1927
+ }
1928
+
1929
+ #menu-close-btn {
1930
+ width: 32px;
1931
+ height: 32px;
1932
+ border: none;
1933
+ background: transparent;
1934
+ color: var(--text-muted);
1935
+ border-radius: 8px;
1936
+ display: flex;
1937
+ align-items: center;
1938
+ justify-content: center;
1939
+ cursor: pointer;
1940
+ padding: 6px;
1941
+ transition: background 0.15s;
1942
+ }
1943
+ #menu-close-btn:active {
1944
+ background: var(--accent-soft, rgba(241,117,45,0.12));
1945
+ }
1946
+
1947
+ #menu-body {
1948
+ padding: 8px 0;
1949
+ flex: 1;
1950
+ overflow-y: auto;
1951
+ }
1952
+
1953
+ .menu-section {
1954
+ padding: 4px 0;
1955
+ border-bottom: 1px solid var(--border-color, rgba(0,0,0,0.06));
1956
+ }
1957
+ .menu-section:last-child {
1958
+ border-bottom: none;
1959
+ }
1960
+
1961
+ .menu-section-title {
1962
+ padding: 8px 20px 4px;
1963
+ font-size: 11px;
1964
+ font-weight: 600;
1965
+ text-transform: uppercase;
1966
+ letter-spacing: 0.05em;
1967
+ color: var(--text-muted);
1968
+ }
1969
+
1970
+ .menu-item {
1971
+ display: block;
1972
+ width: 100%;
1973
+ padding: 12px 20px;
1974
+ border: none;
1975
+ background: transparent;
1976
+ color: var(--text-color);
1977
+ font-size: 15px;
1978
+ text-align: left;
1979
+ cursor: pointer;
1980
+ -webkit-user-select: none;
1981
+ user-select: none;
1982
+ transition: background 0.12s;
1983
+ }
1984
+ .menu-item:active {
1985
+ background: var(--accent-soft, rgba(241,117,45,0.08));
1986
+ }
1987
+
1988
+ .menu-theme-item,
1989
+ .menu-plugin-item {
1990
+ display: flex;
1991
+ align-items: center;
1992
+ justify-content: space-between;
1993
+ padding: 12px 20px;
1994
+ font-size: 15px;
1995
+ color: var(--text-color);
1996
+ cursor: pointer;
1997
+ -webkit-user-select: none;
1998
+ user-select: none;
1999
+ transition: background 0.12s;
2000
+ }
2001
+ .menu-theme-item:active,
2002
+ .menu-plugin-item:active {
2003
+ background: var(--accent-soft, rgba(241,117,45,0.08));
2004
+ }
2005
+
2006
+ .menu-theme-item.active {
2007
+ color: #F1752D;
2008
+ font-weight: 600;
2009
+ }
2010
+
2011
+ .menu-plugin-toggle {
2012
+ width: 44px;
2013
+ height: 26px;
2014
+ border-radius: 13px;
2015
+ background: var(--border-color, #d0d7de);
2016
+ position: relative;
2017
+ transition: background 0.2s;
2018
+ flex-shrink: 0;
2019
+ }
2020
+ .menu-plugin-toggle::after {
2021
+ content: '';
2022
+ position: absolute;
2023
+ top: 3px;
2024
+ left: 3px;
2025
+ width: 20px;
2026
+ height: 20px;
2027
+ border-radius: 50%;
2028
+ background: #fff;
2029
+ box-shadow: 0 1px 3px rgba(0,0,0,0.2);
2030
+ transition: transform 0.2s;
2031
+ }
2032
+ .menu-plugin-toggle.on {
2033
+ background: #F1752D;
2034
+ }
2035
+ .menu-plugin-toggle.on::after {
2036
+ transform: translateX(18px);
2037
+ }
2038
+
2039
+ #editor {
2040
+ position: fixed;
2041
+ top: var(--mobile-header-height);
2042
+ left: 0;
2043
+ right: 0;
2044
+ bottom: 0;
2045
+ overflow-y: auto;
2046
+ overflow-x: hidden;
2047
+ -webkit-overflow-scrolling: touch;
2048
+ padding: 16px !important;
2049
+ padding-bottom: 80px !important;
2050
+ }
2051
+
2052
+ .ProseMirror {
2053
+ min-height: calc(100vh - var(--mobile-header-height) - 32px) !important;
2054
+ font-size: 16px !important;
2055
+ line-height: 1.7 !important;
2056
+ padding: 4px 0 !important;
2057
+ -webkit-user-select: text;
2058
+ user-select: text;
2059
+ touch-action: manipulation;
2060
+ /* Explicitly set read-write for rich text IME (CJK composition).
2061
+ Some Android WebView versions default to plaintext-only which
2062
+ downgrades contenteditable and breaks IME composition. */
2063
+ -webkit-user-modify: read-write;
2064
+ }
2065
+
2066
+ /* REMOVED: .ProseMirror-focused { -webkit-user-modify: read-write-plaintext-only } */
2067
+
2068
+ .ProseMirror h1 { font-size: 1.5em !important; margin-top: 0.8em !important; }
2069
+ .ProseMirror h2 { font-size: 1.25em !important; margin-top: 0.7em !important; }
2070
+ .ProseMirror h3 { font-size: 1.1em !important; }
2071
+ .ProseMirror p { margin: 0.4em 0 !important; }
2072
+ .ProseMirror pre {
2073
+ font-size: 13px !important;
2074
+ padding: 12px !important;
2075
+ overflow-x: auto !important;
2076
+ -webkit-overflow-scrolling: touch;
2077
+ }
2078
+ .ProseMirror code { font-size: 14px !important; word-break: break-word; }
2079
+ .ProseMirror table {
2080
+ display: block;
2081
+ overflow-x: auto;
2082
+ white-space: nowrap;
2083
+ }
2084
+ .ProseMirror th,
2085
+ .ProseMirror td {
2086
+ padding: 6px 8px !important;
2087
+ font-size: 14px !important;
2088
+ }
2089
+
2090
+ .math-block {
2091
+ overflow-x: auto;
2092
+ -webkit-overflow-scrolling: touch;
2093
+ padding: 12px !important;
2094
+ }
2095
+
2096
+ .mermaid-block {
2097
+ overflow-x: auto;
2098
+ -webkit-overflow-scrolling: touch;
2099
+ padding: 12px !important;
2100
+ }
2101
+
2102
+ .mermaid-preview svg {
2103
+ max-width: 100% !important;
2104
+ height: auto !important;
2105
+ }
2106
+
2107
+ #source-editor {
2108
+ position: fixed;
2109
+ top: var(--mobile-header-height);
2110
+ left: 0;
2111
+ right: 0;
2112
+ bottom: 0;
2113
+ width: 100% !important;
2114
+ height: auto !important;
2115
+ border: none !important;
2116
+ resize: none !important;
2117
+ font-size: 15px !important;
2118
+ line-height: 1.6 !important;
2119
+ padding: 16px !important;
2120
+ font-family: 'SF Mono', 'Fira Code', Menlo, monospace !important;
2121
+ }
2122
+
2123
+ .math-inline-raw {
2124
+ font-size: 14px !important;
2125
+ max-width: 90vw !important;
2126
+ }
2127
+
2128
+ .math-block-raw {
2129
+ font-size: 14px !important;
2130
+ max-width: 90vw !important;
2131
+ }
2132
+
2133
+ textarea.mermaid-source {
2134
+ font-size: 13px !important;
2135
+ max-width: 90vw !important;
2136
+ }
2137
+
2138
+ #cola-context-menu {
2139
+ position: fixed !important;
2140
+ z-index: 9999;
2141
+ background: #fff;
2142
+ border: 1px solid #ddd;
2143
+ border-radius: 8px;
2144
+ box-shadow: 0 4px 20px rgba(0,0,0,0.15);
2145
+ padding: 6px 0;
2146
+ min-width: 160px;
2147
+ max-width: 80vw;
2148
+ }
2149
+
2150
+ .cola-menu-item {
2151
+ padding: 12px 16px;
2152
+ cursor: pointer;
2153
+ font-size: 15px;
2154
+ color: #333;
2155
+ -webkit-user-select: none;
2156
+ user-select: none;
2157
+ }
2158
+
2159
+ .cola-menu-item:active {
2160
+ background: #f0f0f0;
2161
+ }
2162
+
2163
+ .hidden { display: none !important; }
2164
+ .visible { display: block !important; }
2165
+ }
2166
+
2167
+ @media (min-width: 769px) {
2168
+ #menu-btn {
2169
+ display: none;
2170
+ }
2171
+
2172
+ #mobile-menu {
2173
+ display: none;
2174
+ }
2175
+ }
2176
+
2177
+ @media (max-width: 480px) {
2178
+ .ProseMirror { font-size: 15px !important; }
2179
+ .ProseMirror pre { font-size: 12px !important; padding: 10px !important; }
2180
+ #editor { padding: 12px !important; }
2181
+ #source-editor { padding: 12px !important; font-size: 14px !important; }
2182
+ }
2183
+
2184
+ .safe-area-inset {
2185
+ padding-top: env(safe-area-inset-top);
2186
+ padding-bottom: env(safe-area-inset-bottom);
2187
+ padding-left: env(safe-area-inset-left);
2188
+ padding-right: env(safe-area-inset-right);
2189
+ }
2190
+
2191
+ @media print {
2192
+ #titlebar,
2193
+ #menu-btn,
2194
+ #agent-dot,
2195
+ #slides-btn,
2196
+ #mobile-menu,
2197
+ #cola-context-menu,
2198
+ .mermaid-error,
2199
+ .mermaid-loading,
2200
+ .mermaid-source,
2201
+ textarea.mermaid-source,
2202
+ .math-block-raw,
2203
+ .math-inline-raw,
2204
+ .hidden {
2205
+ display: none !important;
2206
+ }
2207
+
2208
+ #editor {
2209
+ position: static !important;
2210
+ overflow: visible !important;
2211
+ padding: 0 !important;
2212
+ }
2213
+
2214
+ .ProseMirror {
2215
+ min-height: auto !important;
2216
+ font-size: 14px !important;
2217
+ }
2218
+
2219
+ .mermaid-preview svg {
2220
+ max-height: none !important;
2221
+ }
2222
+
2223
+ @page {
2224
+ margin: 15mm;
2225
+ size: A4;
2226
+ }
2227
+ }