markopress 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/bin/cli.js +16 -0
  2. package/dist/build/index.d.ts +83 -0
  3. package/dist/build/index.d.ts.map +1 -0
  4. package/dist/build/index.js +1553 -0
  5. package/dist/build/index.js.map +1 -0
  6. package/dist/build/manifest-generator.d.ts +34 -0
  7. package/dist/build/manifest-generator.d.ts.map +1 -0
  8. package/dist/build/manifest-generator.js +86 -0
  9. package/dist/build/manifest-generator.js.map +1 -0
  10. package/dist/build/security.test.d.ts +6 -0
  11. package/dist/build/security.test.d.ts.map +1 -0
  12. package/dist/build/security.test.js +88 -0
  13. package/dist/build/security.test.js.map +1 -0
  14. package/dist/build/types.d.ts +21 -0
  15. package/dist/build/types.d.ts.map +1 -0
  16. package/dist/build/types.js +5 -0
  17. package/dist/build/types.js.map +1 -0
  18. package/dist/build/vite-config.test.d.ts +2 -0
  19. package/dist/build/vite-config.test.d.ts.map +1 -0
  20. package/dist/build/vite-config.test.js +53 -0
  21. package/dist/build/vite-config.test.js.map +1 -0
  22. package/dist/build/vite-markdown-plugin.d.ts +13 -0
  23. package/dist/build/vite-markdown-plugin.d.ts.map +1 -0
  24. package/dist/build/vite-markdown-plugin.js +134 -0
  25. package/dist/build/vite-markdown-plugin.js.map +1 -0
  26. package/dist/build/vite-markdown-plugin.test.d.ts +2 -0
  27. package/dist/build/vite-markdown-plugin.test.d.ts.map +1 -0
  28. package/dist/build/vite-markdown-plugin.test.js +41 -0
  29. package/dist/build/vite-markdown-plugin.test.js.map +1 -0
  30. package/dist/cli/index.d.ts +6 -0
  31. package/dist/cli/index.d.ts.map +1 -0
  32. package/dist/cli/index.js +75 -0
  33. package/dist/cli/index.js.map +1 -0
  34. package/dist/config/app-root.d.ts +11 -0
  35. package/dist/config/app-root.d.ts.map +1 -0
  36. package/dist/config/app-root.js +24 -0
  37. package/dist/config/app-root.js.map +1 -0
  38. package/dist/config/app-root.test.d.ts +2 -0
  39. package/dist/config/app-root.test.d.ts.map +1 -0
  40. package/dist/config/app-root.test.js +71 -0
  41. package/dist/config/app-root.test.js.map +1 -0
  42. package/dist/config/index.d.ts +6 -0
  43. package/dist/config/index.d.ts.map +1 -0
  44. package/dist/config/index.js +6 -0
  45. package/dist/config/index.js.map +1 -0
  46. package/dist/config/loader.d.ts +25 -0
  47. package/dist/config/loader.d.ts.map +1 -0
  48. package/dist/config/loader.js +187 -0
  49. package/dist/config/loader.js.map +1 -0
  50. package/dist/config/loader.test.d.ts +2 -0
  51. package/dist/config/loader.test.d.ts.map +1 -0
  52. package/dist/config/loader.test.js +24 -0
  53. package/dist/config/loader.test.js.map +1 -0
  54. package/dist/config/types.d.ts +149 -0
  55. package/dist/config/types.d.ts.map +1 -0
  56. package/dist/config/types.js +5 -0
  57. package/dist/config/types.js.map +1 -0
  58. package/dist/config/validation.d.ts +188 -0
  59. package/dist/config/validation.d.ts.map +1 -0
  60. package/dist/config/validation.js +139 -0
  61. package/dist/config/validation.js.map +1 -0
  62. package/dist/content/index.d.ts +6 -0
  63. package/dist/content/index.d.ts.map +1 -0
  64. package/dist/content/index.js +6 -0
  65. package/dist/content/index.js.map +1 -0
  66. package/dist/content/registry.d.ts +29 -0
  67. package/dist/content/registry.d.ts.map +1 -0
  68. package/dist/content/registry.js +45 -0
  69. package/dist/content/registry.js.map +1 -0
  70. package/dist/content/scanner.d.ts +9 -0
  71. package/dist/content/scanner.d.ts.map +1 -0
  72. package/dist/content/scanner.js +115 -0
  73. package/dist/content/scanner.js.map +1 -0
  74. package/dist/content/types.d.ts +41 -0
  75. package/dist/content/types.d.ts.map +1 -0
  76. package/dist/content/types.js +5 -0
  77. package/dist/content/types.js.map +1 -0
  78. package/dist/dev/index.d.ts +18 -0
  79. package/dist/dev/index.d.ts.map +1 -0
  80. package/dist/dev/index.js +93 -0
  81. package/dist/dev/index.js.map +1 -0
  82. package/dist/index.d.ts +14 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +17 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/markdown/code.d.ts +79 -0
  87. package/dist/markdown/code.d.ts.map +1 -0
  88. package/dist/markdown/code.js +305 -0
  89. package/dist/markdown/code.js.map +1 -0
  90. package/dist/markdown/containers.d.ts +17 -0
  91. package/dist/markdown/containers.d.ts.map +1 -0
  92. package/dist/markdown/containers.js +143 -0
  93. package/dist/markdown/containers.js.map +1 -0
  94. package/dist/markdown/includes.d.ts +18 -0
  95. package/dist/markdown/includes.d.ts.map +1 -0
  96. package/dist/markdown/includes.js +9 -0
  97. package/dist/markdown/includes.js.map +1 -0
  98. package/dist/markdown/index.d.ts +8 -0
  99. package/dist/markdown/index.d.ts.map +1 -0
  100. package/dist/markdown/index.js +8 -0
  101. package/dist/markdown/index.js.map +1 -0
  102. package/dist/markdown/loader.d.ts +31 -0
  103. package/dist/markdown/loader.d.ts.map +1 -0
  104. package/dist/markdown/loader.js +325 -0
  105. package/dist/markdown/loader.js.map +1 -0
  106. package/dist/markdown/preserve-tags.d.ts +16 -0
  107. package/dist/markdown/preserve-tags.d.ts.map +1 -0
  108. package/dist/markdown/preserve-tags.js +233 -0
  109. package/dist/markdown/preserve-tags.js.map +1 -0
  110. package/dist/markdown/renderer.d.ts +28 -0
  111. package/dist/markdown/renderer.d.ts.map +1 -0
  112. package/dist/markdown/renderer.js +146 -0
  113. package/dist/markdown/renderer.js.map +1 -0
  114. package/dist/markdown/tag-validator.d.ts +64 -0
  115. package/dist/markdown/tag-validator.d.ts.map +1 -0
  116. package/dist/markdown/tag-validator.js +118 -0
  117. package/dist/markdown/tag-validator.js.map +1 -0
  118. package/dist/markdown/types.d.ts +44 -0
  119. package/dist/markdown/types.d.ts.map +1 -0
  120. package/dist/markdown/types.js +5 -0
  121. package/dist/markdown/types.js.map +1 -0
  122. package/dist/plugin/compat.d.ts +14 -0
  123. package/dist/plugin/compat.d.ts.map +1 -0
  124. package/dist/plugin/compat.js +78 -0
  125. package/dist/plugin/compat.js.map +1 -0
  126. package/dist/plugin/context.d.ts +38 -0
  127. package/dist/plugin/context.d.ts.map +1 -0
  128. package/dist/plugin/context.js +103 -0
  129. package/dist/plugin/context.js.map +1 -0
  130. package/dist/plugin/index.d.ts +6 -0
  131. package/dist/plugin/index.d.ts.map +1 -0
  132. package/dist/plugin/index.js +6 -0
  133. package/dist/plugin/index.js.map +1 -0
  134. package/dist/plugin/manager.d.ts +112 -0
  135. package/dist/plugin/manager.d.ts.map +1 -0
  136. package/dist/plugin/manager.js +385 -0
  137. package/dist/plugin/manager.js.map +1 -0
  138. package/dist/plugin/types.d.ts +182 -0
  139. package/dist/plugin/types.d.ts.map +1 -0
  140. package/dist/plugin/types.js +5 -0
  141. package/dist/plugin/types.js.map +1 -0
  142. package/dist/plugins/blog-index/index.d.ts +18 -0
  143. package/dist/plugins/blog-index/index.d.ts.map +1 -0
  144. package/dist/plugins/blog-index/index.js +158 -0
  145. package/dist/plugins/blog-index/index.js.map +1 -0
  146. package/dist/plugins/sidenav/index.d.ts +36 -0
  147. package/dist/plugins/sidenav/index.d.ts.map +1 -0
  148. package/dist/plugins/sidenav/index.js +86 -0
  149. package/dist/plugins/sidenav/index.js.map +1 -0
  150. package/dist/plugins/toc/index.d.ts +38 -0
  151. package/dist/plugins/toc/index.d.ts.map +1 -0
  152. package/dist/plugins/toc/index.js +79 -0
  153. package/dist/plugins/toc/index.js.map +1 -0
  154. package/dist/preview/index.d.ts +7 -0
  155. package/dist/preview/index.d.ts.map +1 -0
  156. package/dist/preview/index.js +25 -0
  157. package/dist/preview/index.js.map +1 -0
  158. package/dist/theme/default/build/generate-all.d.ts +9 -0
  159. package/dist/theme/default/build/generate-all.d.ts.map +1 -0
  160. package/dist/theme/default/build/generate-all.js +85 -0
  161. package/dist/theme/default/build/generate-all.js.map +1 -0
  162. package/dist/theme/default/build/generate-css.d.ts +19 -0
  163. package/dist/theme/default/build/generate-css.d.ts.map +1 -0
  164. package/dist/theme/default/build/generate-css.js +199 -0
  165. package/dist/theme/default/build/generate-css.js.map +1 -0
  166. package/dist/theme/default/build/index.d.ts +5 -0
  167. package/dist/theme/default/build/index.d.ts.map +1 -0
  168. package/dist/theme/default/build/index.js +5 -0
  169. package/dist/theme/default/build/index.js.map +1 -0
  170. package/dist/theme/default/design-systems/default.d.ts +12 -0
  171. package/dist/theme/default/design-systems/default.d.ts.map +1 -0
  172. package/dist/theme/default/design-systems/default.js +289 -0
  173. package/dist/theme/default/design-systems/default.js.map +1 -0
  174. package/dist/theme/default/design-systems/docusaurus.d.ts +12 -0
  175. package/dist/theme/default/design-systems/docusaurus.d.ts.map +1 -0
  176. package/dist/theme/default/design-systems/docusaurus.js +299 -0
  177. package/dist/theme/default/design-systems/docusaurus.js.map +1 -0
  178. package/dist/theme/default/design-systems/index.d.ts +50 -0
  179. package/dist/theme/default/design-systems/index.d.ts.map +1 -0
  180. package/dist/theme/default/design-systems/index.js +54 -0
  181. package/dist/theme/default/design-systems/index.js.map +1 -0
  182. package/dist/theme/default/design-systems/rspress.d.ts +12 -0
  183. package/dist/theme/default/design-systems/rspress.d.ts.map +1 -0
  184. package/dist/theme/default/design-systems/rspress.js +299 -0
  185. package/dist/theme/default/design-systems/rspress.js.map +1 -0
  186. package/dist/theme/default/design-systems/types.d.ts +238 -0
  187. package/dist/theme/default/design-systems/types.d.ts.map +1 -0
  188. package/dist/theme/default/design-systems/types.js +6 -0
  189. package/dist/theme/default/design-systems/types.js.map +1 -0
  190. package/dist/theme/default/design-systems/vitepress.d.ts +12 -0
  191. package/dist/theme/default/design-systems/vitepress.d.ts.map +1 -0
  192. package/dist/theme/default/design-systems/vitepress.js +299 -0
  193. package/dist/theme/default/design-systems/vitepress.js.map +1 -0
  194. package/dist/theme/default/index.d.ts +60 -0
  195. package/dist/theme/default/index.d.ts.map +1 -0
  196. package/dist/theme/default/index.js +44 -0
  197. package/dist/theme/default/index.js.map +1 -0
  198. package/dist/theme/default/theme.d.ts +14 -0
  199. package/dist/theme/default/theme.d.ts.map +1 -0
  200. package/dist/theme/default/theme.js +58 -0
  201. package/dist/theme/default/theme.js.map +1 -0
  202. package/dist/theme/index.d.ts +6 -0
  203. package/dist/theme/index.d.ts.map +1 -0
  204. package/dist/theme/index.js +6 -0
  205. package/dist/theme/index.js.map +1 -0
  206. package/dist/theme/loader.d.ts +21 -0
  207. package/dist/theme/loader.d.ts.map +1 -0
  208. package/dist/theme/loader.js +125 -0
  209. package/dist/theme/loader.js.map +1 -0
  210. package/dist/theme/types.d.ts +73 -0
  211. package/dist/theme/types.d.ts.map +1 -0
  212. package/dist/theme/types.js +5 -0
  213. package/dist/theme/types.js.map +1 -0
  214. package/dist/vite/index.d.ts +6 -0
  215. package/dist/vite/index.d.ts.map +1 -0
  216. package/dist/vite/index.js +6 -0
  217. package/dist/vite/index.js.map +1 -0
  218. package/dist/vite/markdownPlugin.d.ts +15 -0
  219. package/dist/vite/markdownPlugin.d.ts.map +1 -0
  220. package/dist/vite/markdownPlugin.js +111 -0
  221. package/dist/vite/markdownPlugin.js.map +1 -0
  222. package/dist/vite/plugin.d.ts +18 -0
  223. package/dist/vite/plugin.d.ts.map +1 -0
  224. package/dist/vite/plugin.js +94 -0
  225. package/dist/vite/plugin.js.map +1 -0
  226. package/marko.json +3 -0
  227. package/package.json +109 -0
  228. package/src/theme/default/build/generate-all.ts +99 -0
  229. package/src/theme/default/build/generate-css.ts +234 -0
  230. package/src/theme/default/build/index.ts +5 -0
  231. package/src/theme/default/components/doc-footer.marko +180 -0
  232. package/src/theme/default/components/footer.marko +32 -0
  233. package/src/theme/default/components/header.marko +49 -0
  234. package/src/theme/default/components/nav-bar.marko +191 -0
  235. package/src/theme/default/components/page-header.marko +20 -0
  236. package/src/theme/default/components/reading-progress.marko +36 -0
  237. package/src/theme/default/components/search.marko +239 -0
  238. package/src/theme/default/components/sidebar.marko +211 -0
  239. package/src/theme/default/components/site-footer.marko +211 -0
  240. package/src/theme/default/components/skip-link.marko +49 -0
  241. package/src/theme/default/components/theme/theme-aside-bottom.marko +1 -0
  242. package/src/theme/default/components/theme/theme-aside-top.marko +1 -0
  243. package/src/theme/default/components/theme/theme-body-bottom.marko +1 -0
  244. package/src/theme/default/components/theme/theme-body-top.marko +1 -0
  245. package/src/theme/default/components/theme/theme-doc-bottom.marko +1 -0
  246. package/src/theme/default/components/theme/theme-doc-footer-after.marko +1 -0
  247. package/src/theme/default/components/theme/theme-doc-footer-before.marko +1 -0
  248. package/src/theme/default/components/theme/theme-doc-top.marko +1 -0
  249. package/src/theme/default/components/theme/theme-head-bottom.marko +1 -0
  250. package/src/theme/default/components/theme/theme-head-top.marko +1 -0
  251. package/src/theme/default/components/theme/theme-home-features-after.marko +1 -0
  252. package/src/theme/default/components/theme/theme-home-hero-after.marko +1 -0
  253. package/src/theme/default/components/theme/theme-home-hero-before.marko +1 -0
  254. package/src/theme/default/components/theme/theme-navbar-center.marko +5 -0
  255. package/src/theme/default/components/theme/theme-navbar-end.marko +30 -0
  256. package/src/theme/default/components/theme/theme-navbar-start.marko +1 -0
  257. package/src/theme/default/components/theme/theme-page-bottom.marko +1 -0
  258. package/src/theme/default/components/theme/theme-page-top.marko +1 -0
  259. package/src/theme/default/components/theme/theme-sidebar-bottom.marko +1 -0
  260. package/src/theme/default/components/theme/theme-sidebar-top.marko +1 -0
  261. package/src/theme/default/components/theme/theme-toc-item.marko +1 -0
  262. package/src/theme/default/components/theme-toggle.marko +122 -0
  263. package/src/theme/default/components/toc.marko +140 -0
  264. package/src/theme/default/design-systems/default.ts +331 -0
  265. package/src/theme/default/design-systems/docusaurus.ts +341 -0
  266. package/src/theme/default/design-systems/index.ts +67 -0
  267. package/src/theme/default/design-systems/rspress.ts +341 -0
  268. package/src/theme/default/design-systems/types.ts +296 -0
  269. package/src/theme/default/design-systems/vitepress.ts +341 -0
  270. package/src/theme/default/index.ts +107 -0
  271. package/src/theme/default/layouts/blog.marko +65 -0
  272. package/src/theme/default/layouts/content-page.marko +41 -0
  273. package/src/theme/default/layouts/default.marko +209 -0
  274. package/src/theme/default/layouts/docs.marko +81 -0
  275. package/src/theme/default/layouts/home-page.marko +19 -0
  276. package/src/theme/default/layouts/page.marko +51 -0
  277. package/src/theme/default/public/theme-default.css +1081 -0
  278. package/src/theme/default/public/theme-docusaurus.css +1081 -0
  279. package/src/theme/default/public/theme-vitepress.css +1081 -0
  280. package/src/theme/default/public/theme.css +2 -0
  281. package/src/theme/default/routes/+layout.marko +57 -0
  282. package/src/theme/default/styles/main.css +249 -0
  283. package/src/theme/default/styles-base.css +757 -0
  284. package/src/theme/default/styles.css +899 -0
  285. package/src/theme/default/taglib.json +18 -0
  286. package/src/theme/default/tags/doc-footer.marko +180 -0
  287. package/src/theme/default/tags/footer.marko +32 -0
  288. package/src/theme/default/tags/header.marko +49 -0
  289. package/src/theme/default/tags/nav-bar.marko +191 -0
  290. package/src/theme/default/tags/page-header.marko +20 -0
  291. package/src/theme/default/tags/reading-progress.marko +36 -0
  292. package/src/theme/default/tags/search.marko +239 -0
  293. package/src/theme/default/tags/sidebar.marko +211 -0
  294. package/src/theme/default/tags/site-footer.marko +211 -0
  295. package/src/theme/default/tags/skip-link.marko +49 -0
  296. package/src/theme/default/tags/theme-aside-bottom.marko +1 -0
  297. package/src/theme/default/tags/theme-aside-top.marko +1 -0
  298. package/src/theme/default/tags/theme-body-bottom.marko +1 -0
  299. package/src/theme/default/tags/theme-body-top.marko +1 -0
  300. package/src/theme/default/tags/theme-doc-bottom.marko +1 -0
  301. package/src/theme/default/tags/theme-doc-footer-after.marko +1 -0
  302. package/src/theme/default/tags/theme-doc-footer-before.marko +1 -0
  303. package/src/theme/default/tags/theme-doc-top.marko +1 -0
  304. package/src/theme/default/tags/theme-head-bottom.marko +1 -0
  305. package/src/theme/default/tags/theme-head-top.marko +1 -0
  306. package/src/theme/default/tags/theme-home-features-after.marko +1 -0
  307. package/src/theme/default/tags/theme-home-hero-after.marko +1 -0
  308. package/src/theme/default/tags/theme-home-hero-before.marko +1 -0
  309. package/src/theme/default/tags/theme-navbar-center.marko +5 -0
  310. package/src/theme/default/tags/theme-navbar-end.marko +30 -0
  311. package/src/theme/default/tags/theme-navbar-start.marko +1 -0
  312. package/src/theme/default/tags/theme-page-bottom.marko +1 -0
  313. package/src/theme/default/tags/theme-page-top.marko +1 -0
  314. package/src/theme/default/tags/theme-sidebar-bottom.marko +1 -0
  315. package/src/theme/default/tags/theme-sidebar-top.marko +1 -0
  316. package/src/theme/default/tags/theme-toc-item.marko +1 -0
  317. package/src/theme/default/tags/theme-toggle.marko +122 -0
  318. package/src/theme/default/tags/toc.marko +140 -0
  319. package/src/theme/default/theme.ts +83 -0
  320. package/templates/blog-post.marko.template +13 -0
  321. package/templates/catch-all-handler.js.template +90 -0
  322. package/templates/catch-all-page.marko.template +69 -0
  323. package/templates/doc.marko.template +6 -0
  324. package/templates/example-tags/README.md +212 -0
  325. package/templates/example-tags/alert-box.marko +98 -0
  326. package/templates/example-tags/button-primary.marko +28 -0
  327. package/templates/example-tags/button-secondary.marko +28 -0
  328. package/templates/example-tags/button.marko +6 -0
  329. package/templates/example-tags/card-body.marko +8 -0
  330. package/templates/example-tags/card-footer.marko +7 -0
  331. package/templates/example-tags/card-header.marko +7 -0
  332. package/templates/example-tags/card.marko +20 -0
  333. package/templates/example-tags/icon.marko +149 -0
  334. package/templates/layout.marko.template +64 -0
  335. package/templates/page.marko.template +6 -0
@@ -0,0 +1,1081 @@
1
+ /*
2
+ * docusaurus Design System
3
+ * Version: 1.0.0
4
+ * Docusaurus design system (Infima framework - Blue-based)
5
+ * Auto-generated from design tokens
6
+ */
7
+
8
+ :root,
9
+ html {
10
+ --color-primary-1: #1e80c4;
11
+ --color-primary-2: #2970c9;
12
+ --color-primary-3: #3e6cd4;
13
+ --color-primary-soft: rgba(30, 128, 196, 0.1);
14
+ --color-success-1: #00bfa5;
15
+ --color-success-2: #00d4a4;
16
+ --color-success-3: #00e4a5;
17
+ --color-success-soft: rgba(0, 191, 165, 0.1);
18
+ --color-warning-1: #e66c00;
19
+ --color-warning-2: #ff7b00;
20
+ --color-warning-3: #ff8d00;
21
+ --color-warning-soft: rgba(230, 108, 0, 0.1);
22
+ --color-danger-1: #c41818;
23
+ --color-danger-2: #dc1e1e;
24
+ --color-danger-3: #e62525;
25
+ --color-danger-soft: rgba(196, 24, 24, 0.1);
26
+ --color-info-1: #1877f2;
27
+ --color-info-2: #2d88ff;
28
+ --color-info-3: #4c8dff;
29
+ --color-info-soft: rgba(24, 119, 242, 0.1);
30
+ --color-gray-1: #d8d8d8;
31
+ --color-gray-2: #e8e8e8;
32
+ --color-gray-3: #f0f0f0;
33
+ --color-gray-soft: rgba(168, 168, 168, 0.15);
34
+ --bg-default: #ffffff;
35
+ --bg-alt: #fafafa;
36
+ --bg-elevated: #ffffff;
37
+ --bg-soft: #f5f5f5;
38
+ --text-1: #1b1b1b;
39
+ --text-2: #5a5a5a;
40
+ --text-3: #8a8a8a;
41
+ --border-default: #dcdcdc;
42
+ --border-divider: #eaeaea;
43
+ --border-gutter: #eaeaea;
44
+ --divider: #eaeaea;
45
+ --soft-brand: rgba(30, 128, 196, 0.1);
46
+ --soft-gray: rgba(168, 168, 168, 0.15);
47
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
48
+ --font-mono: 'Roboto Mono', 'Courier New', 'Courier', monospace;
49
+ --font-size-xs: 0.75rem;
50
+ --font-size-sm: 0.875rem;
51
+ --font-size-base: 1rem;
52
+ --font-size-lg: 1.125rem;
53
+ --font-size-xl: 1.25rem;
54
+ --font-size-2xl: 1.5rem;
55
+ --font-size-3xl: 1.875rem;
56
+ --font-size-4xl: 2.25rem;
57
+ --font-weight-normal: 400;
58
+ --font-weight-medium: 500;
59
+ --font-weight-semibold: 600;
60
+ --font-weight-bold: 700;
61
+ --line-height-tight: 1.25;
62
+ --line-height-normal: 1.6;
63
+ --line-height-relaxed: 1.75;
64
+ --space-xs: 0.5rem;
65
+ --space-sm: 0.75rem;
66
+ --space-md: 1rem;
67
+ --space-lg: 1.5rem;
68
+ --space-xl: 2rem;
69
+ --space-2xl: 3rem;
70
+ --space-3xl: 4rem;
71
+ --space-4xl: 5rem;
72
+ --shadow-1: 0 2px 4px rgba(0, 0, 0, 0.04);
73
+ --shadow-2: 0 4px 8px rgba(0, 0, 0, 0.08);
74
+ --shadow-3: 0 8px 16px rgba(0, 0, 0, 0.12);
75
+ --shadow-4: 0 12px 24px rgba(0, 0, 0, 0.16);
76
+ --shadow-5: 0 16px 32px rgba(0, 0, 0, 0.2);
77
+ --radius-sm: 4px;
78
+ --radius-md: 8px;
79
+ --radius-lg: 12px;
80
+ --transition-base: 0.2s ease;
81
+ --transition-fast: 0.1s ease;
82
+ --transition-slow: 0.3s ease;
83
+ --layout-max-width: 1400px;
84
+ --navbar-height: 68px;
85
+ --sidebar-width: 300px;
86
+ --toc-width: 260px;
87
+ --z-footer: 10;
88
+ --z-local-nav: 20;
89
+ --z-nav: 30;
90
+ --z-layout-top: 40;
91
+ --z-backdrop: 50;
92
+ --z-sidebar: 60;
93
+ }
94
+
95
+ :root.dark,
96
+ html.dark {
97
+ --color-primary-1: #4facfe;
98
+ --color-primary-2: #00f2fe;
99
+ --color-primary-3: #1e80c4;
100
+ --color-primary-soft: rgba(79, 172, 254, 0.15);
101
+ --color-success-1: #00ffdb;
102
+ --color-success-2: #00e4a5;
103
+ --color-success-3: #00c294;
104
+ --color-success-soft: rgba(0, 255, 219, 0.15);
105
+ --color-warning-1: #ffb347;
106
+ --color-warning-2: #ff9500;
107
+ --color-warning-3: #cc7700;
108
+ --color-warning-soft: rgba(255, 179, 71, 0.15);
109
+ --color-danger-1: #ff6b6b;
110
+ --color-danger-2: #ee5a5a;
111
+ --color-danger-3: #c41818;
112
+ --color-danger-soft: rgba(255, 107, 107, 0.15);
113
+ --color-info-1: #74b9ff;
114
+ --color-info-2: #4facfe;
115
+ --color-info-3: #1877f2;
116
+ --color-info-soft: rgba(116, 185, 255, 0.15);
117
+ --color-gray-1: #5a5a5a;
118
+ --color-gray-2: #4a4a4a;
119
+ --color-gray-3: #3a3a3a;
120
+ --color-gray-soft: rgba(138, 138, 138, 0.15);
121
+ --bg-default: #1b1b1d;
122
+ --bg-alt: #242526;
123
+ --bg-elevated: #2b2b2d;
124
+ --bg-soft: #242526;
125
+ --text-1: #f5f5f5;
126
+ --text-2: #c9c9c9;
127
+ --text-3: #8a8a8a;
128
+ --border-default: #4a4a4a;
129
+ --border-divider: #303030;
130
+ --border-gutter: #303030;
131
+ --divider: #303030;
132
+ --soft-brand: rgba(79, 172, 254, 0.15);
133
+ --soft-gray: rgba(138, 138, 138, 0.15);
134
+ --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
135
+ --font-mono: 'Roboto Mono', 'Courier New', 'Courier', monospace;
136
+ --font-size-xs: 0.75rem;
137
+ --font-size-sm: 0.875rem;
138
+ --font-size-base: 1rem;
139
+ --font-size-lg: 1.125rem;
140
+ --font-size-xl: 1.25rem;
141
+ --font-size-2xl: 1.5rem;
142
+ --font-size-3xl: 1.875rem;
143
+ --font-size-4xl: 2.25rem;
144
+ --font-weight-normal: 400;
145
+ --font-weight-medium: 500;
146
+ --font-weight-semibold: 600;
147
+ --font-weight-bold: 700;
148
+ --line-height-tight: 1.25;
149
+ --line-height-normal: 1.6;
150
+ --line-height-relaxed: 1.75;
151
+ --space-xs: 0.5rem;
152
+ --space-sm: 0.75rem;
153
+ --space-md: 1rem;
154
+ --space-lg: 1.5rem;
155
+ --space-xl: 2rem;
156
+ --space-2xl: 3rem;
157
+ --space-3xl: 4rem;
158
+ --space-4xl: 5rem;
159
+ --shadow-1: 0 2px 4px rgba(0, 0, 0, 0.04);
160
+ --shadow-2: 0 4px 8px rgba(0, 0, 0, 0.08);
161
+ --shadow-3: 0 8px 16px rgba(0, 0, 0, 0.12);
162
+ --shadow-4: 0 12px 24px rgba(0, 0, 0, 0.16);
163
+ --shadow-5: 0 16px 32px rgba(0, 0, 0, 0.2);
164
+ --radius-sm: 4px;
165
+ --radius-md: 8px;
166
+ --radius-lg: 12px;
167
+ --transition-base: 0.2s ease;
168
+ --transition-fast: 0.1s ease;
169
+ --transition-slow: 0.3s ease;
170
+ --layout-max-width: 1400px;
171
+ --navbar-height: 68px;
172
+ --sidebar-width: 300px;
173
+ --toc-width: 260px;
174
+ --z-footer: 10;
175
+ --z-local-nav: 20;
176
+ --z-nav: 30;
177
+ --z-layout-top: 40;
178
+ --z-backdrop: 50;
179
+ --z-sidebar: 60;
180
+ }
181
+
182
+ /* Component Styles */
183
+ /**
184
+ * MarkoPress Default Theme Styles
185
+ * Hybrid approach: VitePress aesthetics + Docusaurus features
186
+ * Minimal, clean, elegant design with powerful features
187
+ */
188
+
189
+ /* ============================================
190
+ CSS VARIABLES - Light & Dark Themes
191
+ ============================================ */
192
+
193
+ :root {
194
+ /* Colors - Light Mode */
195
+ --c-white: #ffffff;
196
+ --c-black: #000000;
197
+ --c-gray-50: #f9fafb;
198
+ --c-gray-100: #f3f4f6;
199
+ --c-gray-200: #e5e7eb;
200
+ --c-gray-300: #d1d5db;
201
+ --c-gray-400: #9ca3af;
202
+ --c-gray-500: #6b7280;
203
+ --c-gray-600: #4b5563;
204
+ --c-gray-700: #374151;
205
+ --c-gray-800: #1f2937;
206
+ --c-gray-900: #111827;
207
+
208
+ /* Accent Colors */
209
+ --c-brand: #3b82f6;
210
+ --c-brand-light: #60a5fa;
211
+ --c-brand-dark: #2563eb;
212
+ --c-success: #10b981;
213
+ --c-warning: #f59e0b;
214
+ --c-danger: #ef4444;
215
+ --c-info: #06b6d4;
216
+
217
+ /* Semantic Mappings - fallbacks to design system variables */
218
+ --bg-primary: var(--bg-default, #ffffff);
219
+ --bg-secondary: var(--bg-alt, #f9fafb);
220
+ --bg-tertiary: var(--bg-soft, #f3f4f6);
221
+ --bg-code: var(--c-gray-900);
222
+ --bg-code-inline: var(--bg-soft, #f3f4f6);
223
+
224
+ --text-primary: var(--text-1, #111827);
225
+ --text-secondary: var(--text-2, #4b5563);
226
+ --text-tertiary: var(--text-3, #6b7280);
227
+ --text-code: var(--c-gray-100);
228
+ --text-inverse: var(--c-white);
229
+
230
+ --border-color: var(--border-default, #e5e7eb);
231
+ --border-hover: var(--border-divider, #e5e7eb);
232
+
233
+ --accent-primary: var(--color-primary-3);
234
+ --accent-hover: var(--color-primary-1);
235
+ --accent-bg: rgba(59, 130, 246, 0.1);
236
+
237
+ /* Shadows */
238
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
239
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
240
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
241
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
242
+
243
+ /* Spacing */
244
+ --space-xs: 0.25rem;
245
+ --space-sm: 0.5rem;
246
+ --space-md: 1rem;
247
+ --space-lg: 1.5rem;
248
+ --space-xl: 2rem;
249
+ --space-2xl: 3rem;
250
+ --space-3xl: 4rem;
251
+
252
+ /* Layout */
253
+ --navbar-height: 64px;
254
+ --sidebar-width: 280px;
255
+ --toc-width: 240px;
256
+ --container-max-width: 1440px;
257
+ --content-max-width: 960px;
258
+
259
+ /* Typography */
260
+ --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
261
+ --font-mono: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
262
+
263
+ --text-xs: 0.75rem;
264
+ --text-sm: 0.875rem;
265
+ --text-base: 1rem;
266
+ --text-lg: 1.125rem;
267
+ --text-xl: 1.25rem;
268
+ --text-2xl: 1.5rem;
269
+ --text-3xl: 1.875rem;
270
+ --text-4xl: 2.25rem;
271
+
272
+ --font-light: 300;
273
+ --font-normal: 400;
274
+ --font-medium: 500;
275
+ --font-semibold: 600;
276
+ --font-bold: 700;
277
+
278
+ --leading-tight: 1.25;
279
+ --leading-normal: 1.5;
280
+ --leading-relaxed: 1.75;
281
+
282
+ /* Transitions */
283
+ --transition-fast: 150ms ease-in-out;
284
+ --transition-base: 250ms ease-in-out;
285
+ --transition-slow: 350ms ease-in-out;
286
+
287
+ /* Border Radius */
288
+ --radius-sm: 0.25rem;
289
+ --radius-md: 0.375rem;
290
+ --radius-lg: 0.5rem;
291
+ --radius-xl: 0.75rem;
292
+ --radius-2xl: 1rem;
293
+ --radius-full: 9999px;
294
+ }
295
+
296
+ /* Dark Mode */
297
+ .dark {
298
+ --bg-primary: var(--bg-default);
299
+ --bg-secondary: var(--bg-alt);
300
+ --bg-tertiary: var(--bg-soft);
301
+ --bg-code: var(--c-gray-950);
302
+ --bg-code-inline: var(--bg-soft);
303
+
304
+ --text-primary: var(--text-1);
305
+ --text-secondary: var(--text-2);
306
+ --text-tertiary: var(--text-3);
307
+ --text-code: var(--c-gray-100);
308
+ --text-inverse: var(--c-gray-900);
309
+
310
+ --border-color: var(--border-default);
311
+ --border-hover: var(--border-divider);
312
+
313
+ --accent-bg: rgba(96, 165, 250, 0.15);
314
+ }
315
+
316
+ /* ============================================
317
+ RESET & BASE STYLES
318
+ ============================================ */
319
+
320
+ *,
321
+ *::before,
322
+ *::after {
323
+ box-sizing: border-box;
324
+ margin: 0;
325
+ padding: 0;
326
+ }
327
+
328
+ html {
329
+ font-size: 16px;
330
+ scroll-behavior: smooth;
331
+ -webkit-font-smoothing: antialiased;
332
+ -moz-osx-font-smoothing: grayscale;
333
+ }
334
+
335
+ body {
336
+ font-family: var(--font-sans);
337
+ font-size: var(--text-base);
338
+ line-height: var(--leading-normal);
339
+ color: var(--text-primary);
340
+ background-color: var(--bg-primary);
341
+ transition: background-color var(--transition-base), color var(--transition-base);
342
+ }
343
+
344
+ /* Focus visible for accessibility */
345
+ *:focus-visible {
346
+ outline: 2px solid var(--accent-primary);
347
+ outline-offset: 2px;
348
+ }
349
+
350
+ /* Links */
351
+ a {
352
+ color: var(--accent-primary);
353
+ text-decoration: none;
354
+ transition: color var(--transition-fast);
355
+ }
356
+
357
+ a:hover {
358
+ color: var(--accent-hover);
359
+ }
360
+
361
+ /* Skip to content (accessibility) */
362
+ .skip-to-content {
363
+ position: absolute;
364
+ top: -40px;
365
+ left: 0;
366
+ padding: var(--space-sm) var(--space-md);
367
+ background: var(--accent-primary);
368
+ color: var(--text-inverse);
369
+ text-decoration: none;
370
+ z-index: 9999;
371
+ }
372
+
373
+ .skip-to-content:focus {
374
+ top: 0;
375
+ }
376
+
377
+ /* ============================================
378
+ LAYOUT COMPONENTS
379
+ ============================================ */
380
+
381
+ .app-container {
382
+ min-height: 100vh;
383
+ display: flex;
384
+ flex-direction: column;
385
+ }
386
+
387
+ .background-pattern {
388
+ position: fixed;
389
+ top: 0;
390
+ left: 0;
391
+ right: 0;
392
+ bottom: 0;
393
+ opacity: 0.03;
394
+ background-image: radial-gradient(var(--text-primary) 1px, transparent 1px);
395
+ background-size: 24px 24px;
396
+ pointer-events: none;
397
+ z-index: -1;
398
+ }
399
+
400
+ .layout-container {
401
+ display: flex;
402
+ flex: 1;
403
+ margin-top: var(--navbar-height);
404
+ }
405
+
406
+ /* ============================================
407
+ NAVBAR
408
+ ============================================ */
409
+
410
+ .navbar {
411
+ position: fixed;
412
+ top: 0;
413
+ left: 0;
414
+ right: 0;
415
+ height: var(--navbar-height);
416
+ background: var(--bg-primary);
417
+ border-bottom: 1px solid var(--border-color);
418
+ z-index: 50;
419
+ transition: background-color var(--transition-base), border-color var(--transition-base);
420
+ }
421
+
422
+ .navbar-container {
423
+ max-width: var(--container-max-width);
424
+ margin: 0 auto;
425
+ height: 100%;
426
+ padding: 0 var(--space-lg);
427
+ display: flex;
428
+ align-items: center;
429
+ justify-content: space-between;
430
+ gap: var(--space-lg);
431
+ }
432
+
433
+ .navbar-brand {
434
+ display: flex;
435
+ align-items: center;
436
+ gap: var(--space-sm);
437
+ font-weight: var(--font-semibold);
438
+ font-size: var(--text-lg);
439
+ color: var(--text-primary);
440
+ }
441
+
442
+ .navbar-logo {
443
+ width: 32px;
444
+ height: 32px;
445
+ }
446
+
447
+ .navbar-title {
448
+ white-space: nowrap;
449
+ }
450
+
451
+ .navbar-nav {
452
+ display: none;
453
+ gap: var(--space-md);
454
+ align-items: center;
455
+ }
456
+
457
+ @media (min-width: 768px) {
458
+ .navbar-nav {
459
+ display: flex;
460
+ }
461
+ }
462
+
463
+ /* Navigation links */
464
+ .nav-link {
465
+ color: var(--text-2);
466
+ padding: var(--space-xs) var(--space-sm);
467
+ border-radius: var(--radius-sm);
468
+ transition: all var(--transition-fast);
469
+ font-size: var(--font-size-sm);
470
+ font-weight: var(--font-weight-medium);
471
+ }
472
+
473
+ .nav-link:hover {
474
+ color: var(--color-primary-3);
475
+ background: var(--bg-soft);
476
+ }
477
+
478
+ .nav-link.active {
479
+ color: var(--color-primary-3);
480
+ background: var(--color-primary-soft);
481
+ }
482
+
483
+ .navbar-actions {
484
+ display: flex;
485
+ align-items: center;
486
+ gap: var(--space-sm);
487
+ }
488
+
489
+ .btn-icon {
490
+ display: inline-flex;
491
+ align-items: center;
492
+ justify-content: center;
493
+ width: 40px;
494
+ height: 40px;
495
+ padding: 0;
496
+ border: none;
497
+ background: transparent;
498
+ color: var(--text-secondary);
499
+ cursor: pointer;
500
+ border-radius: var(--radius-md);
501
+ transition: background-color var(--transition-fast), color var(--transition-fast);
502
+ }
503
+
504
+ .btn-icon:hover {
505
+ background: var(--bg-tertiary);
506
+ color: var(--text-primary);
507
+ }
508
+
509
+ .mobile-menu-toggle {
510
+ display: flex;
511
+ }
512
+
513
+ @media (min-width: 768px) {
514
+ .mobile-menu-toggle {
515
+ display: none;
516
+ }
517
+ }
518
+
519
+ .navbar-mobile-menu {
520
+ display: flex;
521
+ flex-direction: column;
522
+ padding: var(--space-md);
523
+ background: var(--bg-primary);
524
+ border-top: 1px solid var(--border-color);
525
+ }
526
+
527
+ @media (min-width: 768px) {
528
+ .navbar-mobile-menu {
529
+ display: none;
530
+ }
531
+ }
532
+
533
+ /* ============================================
534
+ SIDEBAR
535
+ ============================================ */
536
+
537
+ .sidebar {
538
+ position: fixed;
539
+ top: var(--navbar-height);
540
+ left: 0;
541
+ bottom: 0;
542
+ width: var(--sidebar-width);
543
+ background: var(--bg-secondary);
544
+ border-right: 1px solid var(--border-color);
545
+ overflow-y: auto;
546
+ overflow-x: hidden;
547
+ transition: transform var(--transition-base);
548
+ z-index: 40;
549
+ }
550
+
551
+ .sidebar.collapsed {
552
+ transform: translateX(-100%);
553
+ }
554
+
555
+ .sidebar-container {
556
+ padding: var(--space-lg);
557
+ }
558
+
559
+ .sidebar-toggle-btn {
560
+ display: flex;
561
+ align-items: center;
562
+ justify-content: center;
563
+ width: 32px;
564
+ height: 32px;
565
+ margin-bottom: var(--space-md);
566
+ padding: 0;
567
+ border: 1px solid var(--border-color);
568
+ background: var(--bg-primary);
569
+ color: var(--text-secondary);
570
+ cursor: pointer;
571
+ border-radius: var(--radius-md);
572
+ transition: all var(--transition-fast);
573
+ }
574
+
575
+ .sidebar-toggle-btn:hover {
576
+ border-color: var(--accent-primary);
577
+ color: var(--accent-primary);
578
+ }
579
+
580
+ /* Sidebar navigation */
581
+ .sidebar-nav {
582
+ display: flex;
583
+ flex-direction: column;
584
+ gap: var(--space-xs);
585
+ padding: var(--space-md);
586
+ }
587
+
588
+ .sidebar-link {
589
+ display: block;
590
+ padding: var(--space-sm) var(--space-md);
591
+ color: var(--text-2);
592
+ text-decoration: none;
593
+ border-radius: var(--radius-md);
594
+ transition: all var(--transition-fast);
595
+ font-size: var(--font-size-sm);
596
+ font-weight: var(--font-weight-normal);
597
+ line-height: 1.4;
598
+ min-height: 36px;
599
+ word-wrap: break-word;
600
+ overflow-wrap: break-word;
601
+ white-space: normal;
602
+ }
603
+
604
+ .sidebar-link:hover {
605
+ color: var(--text-1);
606
+ background: var(--bg-soft);
607
+ }
608
+
609
+ .sidebar-link.active {
610
+ color: var(--color-primary-1);
611
+ background: var(--color-primary-soft);
612
+ font-weight: var(--font-weight-semibold);
613
+ border-left: 2px solid var(--color-primary-1);
614
+ padding-left: calc(var(--space-md) - 2px);
615
+ }
616
+
617
+ /* ============================================
618
+ MAIN CONTENT
619
+ ============================================ */
620
+
621
+ .main-wrapper {
622
+ display: flex;
623
+ flex: 1;
624
+ margin-top: var(--navbar-height);
625
+ min-height: calc(100vh - var(--navbar-height));
626
+ }
627
+
628
+ @media (min-width: 1024px) {
629
+ .main-wrapper.has-sidebar {
630
+ padding-left: var(--sidebar-width);
631
+ }
632
+ }
633
+
634
+ .main-content {
635
+ flex: 1;
636
+ min-width: 0;
637
+ padding: var(--space-xl) var(--space-lg);
638
+ }
639
+
640
+ @media (min-width: 1024px) {
641
+ .main-content {
642
+ max-width: var(--content-max-width);
643
+ margin: 0 auto;
644
+ }
645
+ }
646
+
647
+ /* Container */
648
+ .container {
649
+ max-width: var(--content-max-width);
650
+ margin: 0 auto;
651
+ }
652
+
653
+ /* Breadcrumbs */
654
+ .breadcrumbs {
655
+ display: flex;
656
+ flex-wrap: wrap;
657
+ gap: var(--space-xs);
658
+ margin-bottom: var(--space-lg);
659
+ font-size: var(--text-sm);
660
+ color: var(--text-secondary);
661
+ }
662
+
663
+ .breadcrumb-item {
664
+ display: flex;
665
+ align-items: center;
666
+ gap: var(--space-xs);
667
+ }
668
+
669
+ .breadcrumb-item:not(:last-child)::after {
670
+ content: '/';
671
+ opacity: 0.5;
672
+ }
673
+
674
+ .breadcrumb-link {
675
+ color: var(--text-secondary);
676
+ }
677
+
678
+ .breadcrumb-link:hover {
679
+ color: var(--accent-primary);
680
+ }
681
+
682
+ .breadcrumb-current {
683
+ color: var(--text-primary);
684
+ font-weight: var(--font-medium);
685
+ }
686
+
687
+ /* Prev/Next Navigation */
688
+ .page-nav {
689
+ display: grid;
690
+ grid-template-columns: 1fr 1fr;
691
+ gap: var(--space-md);
692
+ margin-top: var(--space-3xl);
693
+ padding-top: var(--space-xl);
694
+ border-top: 1px solid var(--border-color);
695
+ }
696
+
697
+ .page-nav-prev,
698
+ .page-nav-next {
699
+ display: flex;
700
+ flex-direction: column;
701
+ gap: var(--space-xs);
702
+ padding: var(--space-md);
703
+ background: var(--bg-secondary);
704
+ border: 1px solid var(--border-color);
705
+ border-radius: var(--radius-lg);
706
+ text-decoration: none;
707
+ color: var(--text-primary);
708
+ transition: all var(--transition-fast);
709
+ }
710
+
711
+ .page-nav-prev:hover,
712
+ .page-nav-next:hover {
713
+ border-color: var(--accent-primary);
714
+ background: var(--bg-tertiary);
715
+ }
716
+
717
+ .page-nav-prev {
718
+ grid-column: 1;
719
+ text-align: left;
720
+ }
721
+
722
+ .page-nav-next {
723
+ grid-column: 2;
724
+ text-align: right;
725
+ }
726
+
727
+ .page-nav-label {
728
+ font-size: var(--text-xs);
729
+ font-weight: var(--font-semibold);
730
+ text-transform: uppercase;
731
+ color: var(--text-secondary);
732
+ }
733
+
734
+ .page-nav-title {
735
+ font-size: var(--text-base);
736
+ font-weight: var(--font-medium);
737
+ }
738
+
739
+ /* ============================================
740
+ TABLE OF CONTENTS
741
+ ============================================ */
742
+
743
+ .toc-aside {
744
+ display: none;
745
+ position: fixed;
746
+ top: calc(var(--navbar-height) + var(--space-xl));
747
+ right: var(--space-lg);
748
+ width: var(--toc-width);
749
+ max-height: calc(100vh - var(--navbar-height) - var(--space-2xl));
750
+ overflow-y: auto;
751
+ }
752
+
753
+ @media (min-width: 1440px) {
754
+ .toc-aside {
755
+ display: block;
756
+ }
757
+ }
758
+
759
+ .toc-container {
760
+ padding: var(--space-md);
761
+ background: var(--bg-secondary);
762
+ border: 1px solid var(--border-color);
763
+ border-radius: var(--radius-lg);
764
+ }
765
+
766
+ .toc-title {
767
+ font-size: var(--text-sm);
768
+ font-weight: var(--font-semibold);
769
+ margin-bottom: var(--space-md);
770
+ color: var(--text-secondary);
771
+ text-transform: uppercase;
772
+ }
773
+
774
+ /* ============================================
775
+ FOOTER
776
+ ============================================ */
777
+
778
+ .footer {
779
+ padding: var(--space-3xl) var(--space-lg);
780
+ background: var(--bg-secondary);
781
+ border-top: 1px solid var(--border-color);
782
+ margin-top: auto;
783
+ }
784
+
785
+ .footer-content {
786
+ max-width: var(--container-max-width);
787
+ margin: 0 auto;
788
+ text-align: center;
789
+ color: var(--text-secondary);
790
+ font-size: var(--text-sm);
791
+ }
792
+
793
+ /* ============================================
794
+ CUSTOM CONTAINERS
795
+ ============================================ */
796
+
797
+ .custom-container {
798
+ margin: var(--space-lg) 0;
799
+ padding: var(--space-md) var(--space-lg);
800
+ border-left: 4px solid;
801
+ border-radius: var(--radius-md);
802
+ background: var(--bg-secondary);
803
+ }
804
+
805
+ .custom-container.tip {
806
+ border-color: var(--c-success);
807
+ background: rgba(16, 185, 129, 0.05);
808
+ }
809
+
810
+ .custom-container.warning {
811
+ border-color: var(--c-warning);
812
+ background: rgba(245, 158, 11, 0.05);
813
+ }
814
+
815
+ .custom-container.danger {
816
+ border-color: var(--c-danger);
817
+ background: rgba(239, 68, 68, 0.05);
818
+ }
819
+
820
+ .custom-container.info,
821
+ .custom-container.note {
822
+ border-color: var(--c-info);
823
+ background: rgba(6, 182, 212, 0.05);
824
+ }
825
+
826
+ .custom-container-title {
827
+ font-weight: var(--font-semibold);
828
+ margin-bottom: var(--space-sm);
829
+ }
830
+
831
+ /* ============================================
832
+ CODE BLOCKS - VitePress Style
833
+ ============================================ */
834
+
835
+ /* Inline code */
836
+ :not(pre) > code {
837
+ padding: 3px 6px;
838
+ background: rgba(142, 150, 170, 0.14);
839
+ color: var(--accent-primary);
840
+ font-family: var(--font-mono);
841
+ font-size: 0.875em;
842
+ border-radius: 4px;
843
+ transition: color 0.25s, background-color 0.5s;
844
+ }
845
+
846
+ /* Code blocks - VitePress style */
847
+ pre {
848
+ position: relative;
849
+ margin: 16px 0;
850
+ padding: 20px 24px;
851
+ font-family: var(--font-mono);
852
+ font-size: 0.875em;
853
+ line-height: 1.7;
854
+ overflow-x: auto;
855
+ border-radius: 8px;
856
+ }
857
+
858
+ /* Shiki syntax highlighting - override Shiki's inline styles for visible backgrounds */
859
+ pre.shiki {
860
+ background: #f6f8fa !important; /* Override Shiki's white background */
861
+ color: var(--text-secondary, #4b5563);
862
+ }
863
+
864
+ /* Dark mode - Shiki uses --shiki-dark-bg variable */
865
+ .dark pre.shiki,
866
+ html.dark pre.shiki {
867
+ background: #1e1e1e !important;
868
+ color: #e1e4e8;
869
+ }
870
+
871
+ /* Fallback for non-Shiki code blocks */
872
+ pre:not(.shiki) {
873
+ background: var(--bg-alt, #f6f8fa);
874
+ color: var(--text-secondary, #4b5563);
875
+ }
876
+
877
+ /* Code blocks with line numbers - override padding */
878
+ pre.line-numbers {
879
+ padding-left: 24px;
880
+ padding-right: 24px;
881
+ }
882
+
883
+ /* Line numbers */
884
+ .line-numbers .line {
885
+ position: relative;
886
+ padding-left: 44px;
887
+ display: block;
888
+ }
889
+
890
+ .line-numbers .line::before {
891
+ content: attr(data-line);
892
+ position: absolute;
893
+ left: 8px;
894
+ width: 28px;
895
+ text-align: right;
896
+ color: var(--text-3);
897
+ font-size: 0.75em;
898
+ user-select: none;
899
+ opacity: 0.6;
900
+ }
901
+
902
+ /* Code title */
903
+ .code-block {
904
+ margin: 16px 0;
905
+ }
906
+
907
+ .code-title {
908
+ padding: 0.25rem 0.5rem;
909
+ background: var(--bg-alt);
910
+ color: var(--text-secondary);
911
+ font-size: 12px;
912
+ font-family: var(--font-mono);
913
+ border: 1px solid var(--border-color);
914
+ border-bottom: none;
915
+ border-radius: 8px 8px 0 0;
916
+ }
917
+
918
+ .code-block pre {
919
+ margin: 0;
920
+ border-radius: 0 0 8px 8px;
921
+ }
922
+
923
+ /* ============================================
924
+ DESIGN SYSTEM ACCENTS
925
+ ============================================ */
926
+
927
+ /* Selected text */
928
+ ::selection {
929
+ background: var(--color-primary-soft);
930
+ color: var(--text-1);
931
+ }
932
+
933
+ /* Primary buttons */
934
+ .btn-primary {
935
+ background: var(--color-primary-3);
936
+ color: var(--bg-default);
937
+ border: none;
938
+ padding: var(--space-sm) var(--space-md);
939
+ border-radius: var(--radius-md);
940
+ font-weight: var(--font-weight-medium);
941
+ cursor: pointer;
942
+ transition: background var(--transition-fast);
943
+ }
944
+
945
+ .btn-primary:hover {
946
+ background: var(--color-primary-2);
947
+ }
948
+
949
+ /* Blockquotes */
950
+ blockquote {
951
+ border-left: 4px solid var(--color-primary-3);
952
+ padding-left: var(--space-md);
953
+ color: var(--text-2);
954
+ margin: var(--space-md) 0;
955
+ }
956
+
957
+ /* Header anchors */
958
+ a.header-anchor {
959
+ color: var(--color-primary-3);
960
+ opacity: 0;
961
+ transition: opacity var(--transition-fast);
962
+ padding-left: 0.25em;
963
+ }
964
+
965
+ h1:hover .header-anchor,
966
+ h2:hover .header-anchor,
967
+ h3:hover .header-anchor,
968
+ h4:hover .header-anchor {
969
+ opacity: 1;
970
+ }
971
+
972
+ /* Tables */
973
+ table {
974
+ width: 100%;
975
+ border-collapse: collapse;
976
+ margin: var(--space-lg) 0;
977
+ }
978
+
979
+ table th,
980
+ table td {
981
+ padding: var(--space-sm) var(--space-md);
982
+ text-align: left;
983
+ border-bottom: 1px solid var(--border-color);
984
+ }
985
+
986
+ table th {
987
+ background: var(--color-primary-soft);
988
+ color: var(--text-1);
989
+ font-weight: var(--font-weight-semibold);
990
+ }
991
+
992
+ table tr:hover {
993
+ background: var(--bg-soft);
994
+ }
995
+
996
+ /* Focus rings */
997
+ *:focus-visible {
998
+ outline: 2px solid var(--color-primary-3);
999
+ outline-offset: 2px;
1000
+ }
1001
+
1002
+ /* ============================================
1003
+ RESPONSIVE DESIGN
1004
+ ============================================ */
1005
+
1006
+ @media (max-width: 1024px) {
1007
+ .sidebar {
1008
+ transform: translateX(-100%);
1009
+ }
1010
+
1011
+ .sidebar:not(.collapsed) {
1012
+ transform: translateX(0);
1013
+ box-shadow: var(--shadow-xl);
1014
+ }
1015
+
1016
+ .main-content {
1017
+ margin-left: 0 !important;
1018
+ }
1019
+ }
1020
+
1021
+ @media (max-width: 768px) {
1022
+ :root {
1023
+ --navbar-height: 56px;
1024
+ }
1025
+
1026
+ .navbar-container {
1027
+ padding: 0 var(--space-md);
1028
+ }
1029
+
1030
+ .main-content {
1031
+ padding: var(--space-lg) var(--space-md);
1032
+ }
1033
+
1034
+ .page-nav {
1035
+ grid-template-columns: 1fr;
1036
+ }
1037
+
1038
+ .page-nav-next {
1039
+ grid-column: 1;
1040
+ }
1041
+ }
1042
+
1043
+ /* ============================================
1044
+ UTILITY CLASSES
1045
+ ============================================ */
1046
+
1047
+ .sr-only {
1048
+ position: absolute;
1049
+ width: 1px;
1050
+ height: 1px;
1051
+ padding: 0;
1052
+ margin: -1px;
1053
+ overflow: hidden;
1054
+ clip: rect(0, 0, 0, 0);
1055
+ white-space: nowrap;
1056
+ border-width: 0;
1057
+ }
1058
+
1059
+ .text-center { text-align: center; }
1060
+ .text-left { text-align: left; }
1061
+ .text-right { text-align: right; }
1062
+
1063
+ .font-bold { font-weight: var(--font-bold); }
1064
+ .font-semibold { font-weight: var(--font-semibold); }
1065
+ .font-medium { font-weight: var(--font-medium); }
1066
+
1067
+ .text-xs { font-size: var(--text-xs); }
1068
+ .text-sm { font-size: var(--text-sm); }
1069
+ .text-lg { font-size: var(--text-lg); }
1070
+ .text-xl { font-size: var(--text-xl); }
1071
+ .text-2xl { font-size: var(--text-2xl); }
1072
+
1073
+ .mt-sm { margin-top: var(--space-sm); }
1074
+ .mt-md { margin-top: var(--space-md); }
1075
+ .mt-lg { margin-top: var(--space-lg); }
1076
+ .mt-xl { margin-top: var(--space-xl); }
1077
+
1078
+ .mb-sm { margin-bottom: var(--space-sm); }
1079
+ .mb-md { margin-bottom: var(--space-md); }
1080
+ .mb-lg { margin-bottom: var(--space-lg); }
1081
+ .mb-xl { margin-bottom: var(--space-xl); }