@takazudo/zudo-doc 3.2.0 → 4.0.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 (439) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +2 -2
  3. package/bin/tag-cli-config.ts +126 -0
  4. package/bin/tags-audit-runner.ts +60 -76
  5. package/bin/tags-audit.mjs +17 -36
  6. package/bin/tags-suggest-runner.ts +429 -0
  7. package/bin/tags-suggest.mjs +30 -0
  8. package/bin/zudo-doc.mjs +78 -25
  9. package/dist/breadcrumb/breadcrumb.d.ts +4 -4
  10. package/dist/breadcrumb/find-path.d.ts +2 -2
  11. package/dist/breadcrumb/index.d.ts +1 -1
  12. package/dist/breadcrumb/types.d.ts +0 -5
  13. package/dist/chrome/derive.d.ts +16 -4
  14. package/dist/chrome/derive.js +64 -4
  15. package/dist/chrome/index.d.ts +13 -10
  16. package/dist/chrome/index.js +12 -6
  17. package/dist/chrome/primary-slots.d.ts +21 -0
  18. package/dist/chrome/primary-slots.js +59 -0
  19. package/dist/chrome-bindings.d.ts +227 -0
  20. package/dist/chrome-bindings.js +6 -0
  21. package/dist/code-syntax/code-block-enhancer-script.d.ts +4 -0
  22. package/dist/code-syntax/code-block-enhancer-script.js +7 -4
  23. package/dist/code-syntax/code-block-enhancer.d.ts +2 -2
  24. package/dist/code-syntax/code-block-enhancer.js +1 -3
  25. package/dist/code-syntax/index.d.ts +5 -5
  26. package/dist/code-syntax/index.js +4 -13
  27. package/dist/code-syntax/mermaid-init-script.d.ts +1 -22
  28. package/dist/code-syntax/mermaid-init-script.js +0 -2
  29. package/dist/code-syntax/mermaid-init.d.ts +0 -1
  30. package/dist/code-syntax/mermaid-init.js +3 -4
  31. package/dist/code-syntax/tabs-init.d.ts +0 -1
  32. package/dist/code-syntax/tabs-init.js +1 -3
  33. package/dist/code-syntax/tabs.d.ts +0 -1
  34. package/dist/code-syntax/tabs.js +1 -3
  35. package/dist/color-scheme-utils.d.ts +72 -4
  36. package/dist/color-scheme-utils.js +137 -0
  37. package/dist/color-schemes-defaults/index.d.ts +23 -0
  38. package/dist/color-schemes-defaults/index.js +134 -0
  39. package/dist/config.d.ts +459 -0
  40. package/dist/config.js +125 -0
  41. package/dist/content/component-map.d.ts +0 -16
  42. package/dist/content/component-map.js +2 -4
  43. package/dist/content/index.d.ts +1 -1
  44. package/dist/content/index.js +2 -3
  45. package/dist/content.css +1 -1
  46. package/dist/design-token-panel-bootstrap.d.ts +82 -27
  47. package/dist/design-token-panel-bootstrap.js +110 -21
  48. package/dist/design-token-panel-config/index.d.ts +49 -0
  49. package/dist/design-token-panel-config/index.js +211 -0
  50. package/dist/design-token-panel-config/manifest.d.ts +46 -0
  51. package/dist/design-token-panel-config/manifest.js +105 -0
  52. package/dist/directive-vocabulary-defaults/index.d.ts +16 -0
  53. package/dist/directive-vocabulary-defaults/index.js +12 -0
  54. package/dist/doc-body-end-islands/design-token-panel-island.d.ts +15 -0
  55. package/dist/doc-body-end-islands/design-token-panel-island.js +31 -0
  56. package/dist/doc-body-end-islands/index.d.ts +52 -7
  57. package/dist/doc-body-end-islands/index.js +19 -0
  58. package/dist/doc-body-end-islands/theme-pack-switcher-island.d.ts +37 -0
  59. package/dist/doc-body-end-islands/theme-pack-switcher-island.js +18 -0
  60. package/dist/doc-content-header/index.js +1 -1
  61. package/dist/doc-history-area/index.d.ts +10 -4
  62. package/dist/doc-history-area/index.js +3 -2
  63. package/dist/doc-metainfo-area/index.d.ts +1 -0
  64. package/dist/doc-page-props/index.d.ts +7 -23
  65. package/dist/doc-page-renderer/index.d.ts +1 -0
  66. package/dist/doc-page-renderer/index.js +1 -0
  67. package/dist/doc-page-shell/index.js +19 -12
  68. package/dist/doc-pager/index.js +1 -1
  69. package/dist/doc-route-entries/index.d.ts +2 -2
  70. package/dist/doclayout/doc-layout-with-defaults.js +4 -4
  71. package/dist/doclayout/doc-layout.d.ts +8 -0
  72. package/dist/doclayout/doc-layout.js +10 -1
  73. package/dist/docs-schema/index.d.ts +67 -0
  74. package/dist/docs-schema/index.js +43 -0
  75. package/dist/eject/index.d.ts +16 -0
  76. package/dist/eject/index.js +122 -28
  77. package/dist/extract-headings/index.d.ts +5 -8
  78. package/dist/extract-headings/index.js +2 -9
  79. package/dist/factory-context/index.d.ts +56 -4
  80. package/dist/features.css +65 -43
  81. package/dist/find-in-page/find-bar.d.ts +9 -0
  82. package/dist/find-in-page/find-bar.js +114 -0
  83. package/dist/find-in-page/find-in-page.d.ts +17 -0
  84. package/dist/find-in-page/find-in-page.js +131 -0
  85. package/dist/find-in-page/index.d.ts +11 -0
  86. package/dist/find-in-page/index.js +49 -0
  87. package/dist/footer/footer.js +1 -0
  88. package/dist/frontmatter-preview-defaults/index.d.ts +16 -0
  89. package/dist/frontmatter-preview-defaults/index.js +25 -0
  90. package/dist/head-with-defaults/index.d.ts +2 -0
  91. package/dist/head-with-defaults/index.js +16 -0
  92. package/dist/header/header.d.ts +10 -5
  93. package/dist/header/header.js +45 -5
  94. package/dist/header/index.d.ts +1 -1
  95. package/dist/header/types.d.ts +30 -1
  96. package/dist/header-with-defaults/index.js +1 -0
  97. package/dist/home-page/index.d.ts +2 -0
  98. package/dist/home-page/index.js +11 -5
  99. package/dist/home-page/prepare-home-data.js +1 -1
  100. package/dist/i18n-defaults/index.d.ts +22 -0
  101. package/dist/i18n-defaults/index.js +167 -0
  102. package/dist/locale-merge/index.d.ts +9 -14
  103. package/dist/locale-merge/index.js +6 -4
  104. package/dist/mdx-components/index.js +4 -4
  105. package/dist/plugins/claude-resources.d.ts +1 -0
  106. package/dist/plugins/claude-resources.js +4 -2
  107. package/dist/plugins/doc-history.js +1 -1
  108. package/dist/{integrations → plugins/internal}/claude-resources/index.d.ts +1 -16
  109. package/dist/{integrations → plugins/internal}/claude-resources/index.js +0 -9
  110. package/dist/{integrations → plugins/internal}/doc-history/index.d.ts +0 -17
  111. package/dist/{integrations → plugins/internal}/doc-history/index.js +0 -4
  112. package/dist/{integrations → plugins/internal}/doc-history/pre-build.d.ts +2 -4
  113. package/dist/plugins/internal/llms-txt/index.d.ts +7 -0
  114. package/dist/{integrations → plugins/internal}/llms-txt/load.d.ts +1 -1
  115. package/dist/{integrations → plugins/internal}/llms-txt/load.js +2 -2
  116. package/dist/{integrations → plugins/internal}/llms-txt/strip.d.ts +2 -3
  117. package/dist/{integrations → plugins/internal}/llms-txt/strip.js +1 -1
  118. package/dist/{integrations → plugins/internal}/llms-txt/types.d.ts +13 -22
  119. package/dist/{integrations → plugins/internal}/search-index/collect.js +1 -1
  120. package/dist/plugins/internal/theme-packs/copy.d.ts +32 -0
  121. package/dist/plugins/internal/theme-packs/copy.js +45 -0
  122. package/dist/plugins/internal/theme-packs/dev-middleware.d.ts +22 -0
  123. package/dist/plugins/internal/theme-packs/dev-middleware.js +80 -0
  124. package/dist/plugins/internal/theme-packs/index.d.ts +6 -0
  125. package/dist/plugins/internal/theme-packs/index.js +9 -0
  126. package/dist/plugins/internal/theme-packs/resolve.d.ts +17 -0
  127. package/dist/plugins/internal/theme-packs/resolve.js +17 -0
  128. package/dist/plugins/internal/theme-packs/types.d.ts +22 -0
  129. package/dist/plugins/internal/theme-packs/types.js +0 -0
  130. package/dist/plugins/llms-txt.js +1 -1
  131. package/dist/plugins/routes.js +55 -21
  132. package/dist/plugins/search-index.js +1 -1
  133. package/dist/plugins/theme-packs.d.ts +3 -0
  134. package/dist/plugins/theme-packs.js +40 -0
  135. package/dist/preset.d.ts +28 -14
  136. package/dist/preset.js +24 -9
  137. package/dist/route-context/index.js +4 -6
  138. package/dist/route-enumerators/index.d.ts +6 -18
  139. package/dist/route-enumerators/index.js +8 -6
  140. package/dist/routes/404.js +3 -1
  141. package/dist/routes/_chrome.js +3 -2
  142. package/dist/routes/_context.d.ts +7 -3
  143. package/dist/routes/_context.js +2 -0
  144. package/dist/routes/_docs-helpers.js +9 -21
  145. package/dist/safelist.css +1 -1
  146. package/dist/settings.d.ts +64 -12
  147. package/dist/sidebar-tree/build-tree.d.ts +3 -4
  148. package/dist/sidebar-tree/build-tree.js +4 -3
  149. package/dist/sidebar-tree/index.d.ts +2 -2
  150. package/dist/sidebar-tree/types.d.ts +6 -17
  151. package/dist/site-tree-nav-island/index.d.ts +3 -1
  152. package/dist/site-tree-nav-island/index.js +17 -5
  153. package/dist/site-tree-nav-island/state.d.ts +4 -0
  154. package/dist/site-tree-nav-island/state.js +10 -0
  155. package/dist/tag-helpers/index.d.ts +6 -13
  156. package/dist/tag-helpers/index.js +5 -23
  157. package/dist/tag-pages/index.d.ts +8 -21
  158. package/dist/tag-pages/index.js +14 -10
  159. package/dist/tags-audit.d.ts +16 -44
  160. package/dist/tags-audit.js +9 -172
  161. package/dist/theme/color-scheme-provider.d.ts +2 -3
  162. package/dist/theme/color-scheme-provider.js +2 -10
  163. package/dist/theme/index.d.ts +1 -4
  164. package/dist/theme/index.js +2 -30
  165. package/dist/theme/theme-pack-provider.d.ts +42 -0
  166. package/dist/theme/theme-pack-provider.js +75 -0
  167. package/dist/theme-cli/apply.d.ts +16 -0
  168. package/dist/theme-cli/apply.js +61 -0
  169. package/dist/theme-cli/config-io.d.ts +15 -0
  170. package/dist/theme-cli/config-io.js +51 -0
  171. package/dist/theme-cli/config-rewriter.d.ts +21 -0
  172. package/dist/theme-cli/config-rewriter.js +141 -0
  173. package/dist/theme-cli/config-scanner.d.ts +63 -0
  174. package/dist/theme-cli/config-scanner.js +288 -0
  175. package/dist/theme-cli/index.d.ts +7 -0
  176. package/dist/theme-cli/index.js +38 -0
  177. package/dist/theme-cli/list.d.ts +27 -0
  178. package/dist/theme-cli/list.js +64 -0
  179. package/dist/theme-cli/provenance.d.ts +17 -0
  180. package/dist/theme-cli/provenance.js +35 -0
  181. package/dist/theme-cli/registry.d.ts +14 -0
  182. package/dist/theme-cli/registry.js +13 -0
  183. package/dist/theme-pack-dialog/dialog-state.d.ts +25 -0
  184. package/dist/theme-pack-dialog/dialog-state.js +40 -0
  185. package/dist/theme-pack-dialog/index.d.ts +5 -0
  186. package/dist/theme-pack-dialog/index.js +152 -0
  187. package/dist/theme-pack-dialog/theme-pack-card.d.ts +25 -0
  188. package/dist/theme-pack-dialog/theme-pack-card.js +72 -0
  189. package/dist/theme-pack-switcher/index.d.ts +49 -0
  190. package/dist/theme-pack-switcher/index.js +205 -0
  191. package/dist/theme-pack-switcher/switcher-state.d.ts +56 -0
  192. package/dist/theme-pack-switcher/switcher-state.js +43 -0
  193. package/dist/theme-pack-switcher/theme-pack-sync.d.ts +85 -0
  194. package/dist/theme-pack-switcher/theme-pack-sync.js +121 -0
  195. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegible-400-latin.woff2 +0 -0
  196. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegible-700-latin.woff2 +0 -0
  197. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegible-italic-400-latin.woff2 +0 -0
  198. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegible-italic-700-latin.woff2 +0 -0
  199. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegibleMono-italic-latin.woff2 +0 -0
  200. package/dist/theme-packs/beacon/fonts/AtkinsonHyperlegibleMono-latin.woff2 +0 -0
  201. package/dist/theme-packs/beacon/fonts/OFL.txt +94 -0
  202. package/dist/theme-packs/beacon/meta.json +37 -0
  203. package/dist/theme-packs/beacon/pack.css +442 -0
  204. package/dist/theme-packs/broadsheet/fonts/CourierPrime-400-latin.woff2 +0 -0
  205. package/dist/theme-packs/broadsheet/fonts/CourierPrime-700-latin.woff2 +0 -0
  206. package/dist/theme-packs/broadsheet/fonts/OFL.txt +95 -0
  207. package/dist/theme-packs/broadsheet/fonts/PlayfairDisplay-italic-latin.woff2 +0 -0
  208. package/dist/theme-packs/broadsheet/fonts/PlayfairDisplay-latin.woff2 +0 -0
  209. package/dist/theme-packs/broadsheet/fonts/SourceSerif4-italic-latin.woff2 +0 -0
  210. package/dist/theme-packs/broadsheet/fonts/SourceSerif4-latin.woff2 +0 -0
  211. package/dist/theme-packs/broadsheet/meta.json +38 -0
  212. package/dist/theme-packs/broadsheet/pack.css +448 -0
  213. package/dist/theme-packs/brutalist/fonts/ArchivoBlack-latin.woff2 +0 -0
  214. package/dist/theme-packs/brutalist/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  215. package/dist/theme-packs/brutalist/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  216. package/dist/theme-packs/brutalist/fonts/IBMPlexMono-700-latin.woff2 +0 -0
  217. package/dist/theme-packs/brutalist/fonts/OFL.txt +95 -0
  218. package/dist/theme-packs/brutalist/fonts/SpaceGrotesk-latin.woff2 +0 -0
  219. package/dist/theme-packs/brutalist/meta.json +38 -0
  220. package/dist/theme-packs/brutalist/pack.css +546 -0
  221. package/dist/theme-packs/default/meta.json +37 -0
  222. package/dist/theme-packs/drift/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  223. package/dist/theme-packs/drift/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  224. package/dist/theme-packs/drift/fonts/IBMPlexMono-500-latin-ext.woff2 +0 -0
  225. package/dist/theme-packs/drift/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  226. package/dist/theme-packs/drift/fonts/IBMPlexSans-italic-latin.woff2 +0 -0
  227. package/dist/theme-packs/drift/fonts/IBMPlexSans-latin-ext.woff2 +0 -0
  228. package/dist/theme-packs/drift/fonts/IBMPlexSans-latin.woff2 +0 -0
  229. package/dist/theme-packs/drift/fonts/OFL.txt +93 -0
  230. package/dist/theme-packs/drift/meta.json +37 -0
  231. package/dist/theme-packs/drift/pack.css +478 -0
  232. package/dist/theme-packs/fjord/fonts/Inter-latin-ext.woff2 +0 -0
  233. package/dist/theme-packs/fjord/fonts/Inter-latin.woff2 +0 -0
  234. package/dist/theme-packs/fjord/fonts/JetBrainsMono-latin-ext.woff2 +0 -0
  235. package/dist/theme-packs/fjord/fonts/JetBrainsMono-latin.woff2 +0 -0
  236. package/dist/theme-packs/fjord/fonts/OFL.txt +94 -0
  237. package/dist/theme-packs/fjord/meta.json +37 -0
  238. package/dist/theme-packs/fjord/pack.css +375 -0
  239. package/dist/theme-packs/foundry/fonts/Inter-latin-ext.woff2 +0 -0
  240. package/dist/theme-packs/foundry/fonts/Inter-latin.woff2 +0 -0
  241. package/dist/theme-packs/foundry/fonts/OFL.txt +93 -0
  242. package/dist/theme-packs/foundry/meta.json +37 -0
  243. package/dist/theme-packs/foundry/pack.css +202 -0
  244. package/dist/theme-packs/futura-editorial/fonts/Jost-latin.woff2 +0 -0
  245. package/dist/theme-packs/futura-editorial/fonts/NotoSans-italic-latin.woff2 +0 -0
  246. package/dist/theme-packs/futura-editorial/fonts/NotoSans-latin.woff2 +0 -0
  247. package/dist/theme-packs/futura-editorial/fonts/OFL.txt +95 -0
  248. package/dist/theme-packs/futura-editorial/fonts/SpaceMono-400-latin.woff2 +0 -0
  249. package/dist/theme-packs/futura-editorial/fonts/SpaceMono-700-latin.woff2 +0 -0
  250. package/dist/theme-packs/futura-editorial/meta.json +38 -0
  251. package/dist/theme-packs/futura-editorial/pack.css +313 -0
  252. package/dist/theme-packs/hearth/fonts/Fraunces-italic-latin.woff2 +0 -0
  253. package/dist/theme-packs/hearth/fonts/Fraunces-latin.woff2 +0 -0
  254. package/dist/theme-packs/hearth/fonts/Nunito-latin.woff2 +0 -0
  255. package/dist/theme-packs/hearth/fonts/OFL.txt +95 -0
  256. package/dist/theme-packs/hearth/fonts/SplineSansMono-latin.woff2 +0 -0
  257. package/dist/theme-packs/hearth/meta.json +38 -0
  258. package/dist/theme-packs/hearth/pack.css +385 -0
  259. package/dist/theme-packs/hollow/fonts/OFL.txt +94 -0
  260. package/dist/theme-packs/hollow/fonts/SpaceGrotesk-latin.woff2 +0 -0
  261. package/dist/theme-packs/hollow/fonts/SpaceMono-400-italic-latin.woff2 +0 -0
  262. package/dist/theme-packs/hollow/fonts/SpaceMono-400-latin.woff2 +0 -0
  263. package/dist/theme-packs/hollow/fonts/SpaceMono-700-latin.woff2 +0 -0
  264. package/dist/theme-packs/hollow/meta.json +37 -0
  265. package/dist/theme-packs/hollow/pack.css +428 -0
  266. package/dist/theme-packs/ledger/fonts/CrimsonPro-latin-ext-italic.woff2 +0 -0
  267. package/dist/theme-packs/ledger/fonts/CrimsonPro-latin-ext.woff2 +0 -0
  268. package/dist/theme-packs/ledger/fonts/CrimsonPro-latin-italic.woff2 +0 -0
  269. package/dist/theme-packs/ledger/fonts/CrimsonPro-latin.woff2 +0 -0
  270. package/dist/theme-packs/ledger/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  271. package/dist/theme-packs/ledger/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  272. package/dist/theme-packs/ledger/fonts/IBMPlexMono-500-latin-ext.woff2 +0 -0
  273. package/dist/theme-packs/ledger/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  274. package/dist/theme-packs/ledger/fonts/OFL.txt +94 -0
  275. package/dist/theme-packs/ledger/meta.json +37 -0
  276. package/dist/theme-packs/ledger/pack.css +463 -0
  277. package/dist/theme-packs/manuscript/fonts/CourierPrime-400-latin-ext.woff2 +0 -0
  278. package/dist/theme-packs/manuscript/fonts/CourierPrime-400-latin.woff2 +0 -0
  279. package/dist/theme-packs/manuscript/fonts/CourierPrime-700-latin-ext.woff2 +0 -0
  280. package/dist/theme-packs/manuscript/fonts/CourierPrime-700-latin.woff2 +0 -0
  281. package/dist/theme-packs/manuscript/fonts/EBGaramond-latin-italic.woff2 +0 -0
  282. package/dist/theme-packs/manuscript/fonts/EBGaramond-latin.woff2 +0 -0
  283. package/dist/theme-packs/manuscript/fonts/OFL.txt +94 -0
  284. package/dist/theme-packs/manuscript/meta.json +37 -0
  285. package/dist/theme-packs/manuscript/pack.css +376 -0
  286. package/dist/theme-packs/matcha/fonts/MPLUS1Code-latin.woff2 +0 -0
  287. package/dist/theme-packs/matcha/fonts/OFL.txt +95 -0
  288. package/dist/theme-packs/matcha/fonts/ShipporiMincho-500-latin.woff2 +0 -0
  289. package/dist/theme-packs/matcha/fonts/ShipporiMincho-700-latin.woff2 +0 -0
  290. package/dist/theme-packs/matcha/fonts/ZenKakuGothicNew-400-latin.woff2 +0 -0
  291. package/dist/theme-packs/matcha/fonts/ZenKakuGothicNew-500-latin.woff2 +0 -0
  292. package/dist/theme-packs/matcha/meta.json +38 -0
  293. package/dist/theme-packs/matcha/pack.css +409 -0
  294. package/dist/theme-packs/nocturne/fonts/CormorantGaramond-italic-latin.woff2 +0 -0
  295. package/dist/theme-packs/nocturne/fonts/CormorantGaramond-latin.woff2 +0 -0
  296. package/dist/theme-packs/nocturne/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  297. package/dist/theme-packs/nocturne/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  298. package/dist/theme-packs/nocturne/fonts/IBMPlexMono-italic-latin.woff2 +0 -0
  299. package/dist/theme-packs/nocturne/fonts/Manrope-latin.woff2 +0 -0
  300. package/dist/theme-packs/nocturne/fonts/OFL.txt +95 -0
  301. package/dist/theme-packs/nocturne/meta.json +38 -0
  302. package/dist/theme-packs/nocturne/pack.css +502 -0
  303. package/dist/theme-packs/observatory/fonts/JosefinSans-latin.woff2 +0 -0
  304. package/dist/theme-packs/observatory/fonts/Jost-italic-latin.woff2 +0 -0
  305. package/dist/theme-packs/observatory/fonts/Jost-latin.woff2 +0 -0
  306. package/dist/theme-packs/observatory/fonts/OFL.txt +95 -0
  307. package/dist/theme-packs/observatory/fonts/SpaceMono-400-latin.woff2 +0 -0
  308. package/dist/theme-packs/observatory/fonts/SpaceMono-700-latin.woff2 +0 -0
  309. package/dist/theme-packs/observatory/fonts/SpaceMono-italic-latin.woff2 +0 -0
  310. package/dist/theme-packs/observatory/meta.json +38 -0
  311. package/dist/theme-packs/observatory/pack.css +728 -0
  312. package/dist/theme-packs/onyx/fonts/CormorantGaramond-italic-latin.woff2 +0 -0
  313. package/dist/theme-packs/onyx/fonts/CormorantGaramond-latin.woff2 +0 -0
  314. package/dist/theme-packs/onyx/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  315. package/dist/theme-packs/onyx/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  316. package/dist/theme-packs/onyx/fonts/IBMPlexMono-500-latin-ext.woff2 +0 -0
  317. package/dist/theme-packs/onyx/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  318. package/dist/theme-packs/onyx/fonts/Jost-latin.woff2 +0 -0
  319. package/dist/theme-packs/onyx/fonts/OFL.txt +95 -0
  320. package/dist/theme-packs/onyx/meta.json +38 -0
  321. package/dist/theme-packs/onyx/pack.css +497 -0
  322. package/dist/theme-packs/phosphor/fonts/JetBrainsMono-latin-ext.woff2 +0 -0
  323. package/dist/theme-packs/phosphor/fonts/JetBrainsMono-latin.woff2 +0 -0
  324. package/dist/theme-packs/phosphor/fonts/OFL.txt +94 -0
  325. package/dist/theme-packs/phosphor/fonts/VT323-latin-ext.woff2 +0 -0
  326. package/dist/theme-packs/phosphor/fonts/VT323-latin.woff2 +0 -0
  327. package/dist/theme-packs/phosphor/meta.json +38 -0
  328. package/dist/theme-packs/phosphor/pack.css +493 -0
  329. package/dist/theme-packs/solar/fonts/OFL.txt +94 -0
  330. package/dist/theme-packs/solar/fonts/SourceCodePro-italic-latin.woff2 +0 -0
  331. package/dist/theme-packs/solar/fonts/SourceCodePro-latin.woff2 +0 -0
  332. package/dist/theme-packs/solar/fonts/SourceSans3-italic-latin.woff2 +0 -0
  333. package/dist/theme-packs/solar/fonts/SourceSans3-latin.woff2 +0 -0
  334. package/dist/theme-packs/solar/meta.json +37 -0
  335. package/dist/theme-packs/solar/pack.css +380 -0
  336. package/dist/theme-packs/sumi/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  337. package/dist/theme-packs/sumi/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  338. package/dist/theme-packs/sumi/fonts/IBMPlexMono-500-latin-ext.woff2 +0 -0
  339. package/dist/theme-packs/sumi/fonts/IBMPlexMono-500-latin.woff2 +0 -0
  340. package/dist/theme-packs/sumi/fonts/OFL.txt +95 -0
  341. package/dist/theme-packs/sumi/fonts/ShipporiMinchoB1-600-latin.woff2 +0 -0
  342. package/dist/theme-packs/sumi/fonts/ShipporiMinchoB1-700-latin.woff2 +0 -0
  343. package/dist/theme-packs/sumi/fonts/ShipporiMinchoB1-800-latin.woff2 +0 -0
  344. package/dist/theme-packs/sumi/fonts/ZenKakuGothicNew-400-latin.woff2 +0 -0
  345. package/dist/theme-packs/sumi/fonts/ZenKakuGothicNew-500-latin.woff2 +0 -0
  346. package/dist/theme-packs/sumi/meta.json +38 -0
  347. package/dist/theme-packs/sumi/pack.css +502 -0
  348. package/dist/theme-packs/swissgrid/fonts/IBMPlexMono-400-latin-ext.woff2 +0 -0
  349. package/dist/theme-packs/swissgrid/fonts/IBMPlexMono-400-latin.woff2 +0 -0
  350. package/dist/theme-packs/swissgrid/fonts/IBMPlexMono-600-latin.woff2 +0 -0
  351. package/dist/theme-packs/swissgrid/fonts/Inter-latin-ext.woff2 +0 -0
  352. package/dist/theme-packs/swissgrid/fonts/Inter-latin.woff2 +0 -0
  353. package/dist/theme-packs/swissgrid/fonts/InterTight-latin.woff2 +0 -0
  354. package/dist/theme-packs/swissgrid/fonts/OFL.txt +95 -0
  355. package/dist/theme-packs/swissgrid/meta.json +38 -0
  356. package/dist/theme-packs/swissgrid/pack.css +518 -0
  357. package/dist/theme-packs/washi/fonts/MPlus1Code-400-latin.woff2 +0 -0
  358. package/dist/theme-packs/washi/fonts/MPlus1Code-500-latin.woff2 +0 -0
  359. package/dist/theme-packs/washi/fonts/OFL.txt +95 -0
  360. package/dist/theme-packs/washi/fonts/ShipporiMincho-500-latin.woff2 +0 -0
  361. package/dist/theme-packs/washi/fonts/ShipporiMincho-600-latin.woff2 +0 -0
  362. package/dist/theme-packs/washi/fonts/ShipporiMincho-700-latin.woff2 +0 -0
  363. package/dist/theme-packs/washi/fonts/ZenKakuGothicNew-400-latin.woff2 +0 -0
  364. package/dist/theme-packs/washi/fonts/ZenKakuGothicNew-500-latin.woff2 +0 -0
  365. package/dist/theme-packs/washi/fonts/ZenKakuGothicNew-700-latin.woff2 +0 -0
  366. package/dist/theme-packs/washi/meta.json +38 -0
  367. package/dist/theme-packs/washi/pack.css +479 -0
  368. package/dist/theme-packs-registry/index.d.ts +5 -0
  369. package/dist/theme-packs-registry/index.js +30 -0
  370. package/dist/theme-packs-registry/load-registry.d.ts +23 -0
  371. package/dist/theme-packs-registry/load-registry.js +64 -0
  372. package/dist/theme-packs-registry/meta-schema.d.ts +70 -0
  373. package/dist/theme-packs-registry/meta-schema.js +38 -0
  374. package/dist/theme-packs-registry/resolve-enabled-packs.d.ts +25 -0
  375. package/dist/theme-packs-registry/resolve-enabled-packs.js +43 -0
  376. package/dist/theme-packs-registry/token-manifest.d.ts +19 -0
  377. package/dist/theme-packs-registry/token-manifest.js +57 -0
  378. package/dist/theme-packs-registry/validator.d.ts +35 -0
  379. package/dist/theme-packs-registry/validator.js +284 -0
  380. package/dist/theme-toggle/color-scheme-sync.d.ts +2 -4
  381. package/dist/theme.css +319 -0
  382. package/dist/versions-page/index.d.ts +2 -2
  383. package/dist/versions-page/index.js +8 -8
  384. package/dist/z-index-defaults/index.d.ts +45 -0
  385. package/dist/z-index-defaults/index.js +34 -0
  386. package/eject/breadcrumb/breadcrumb.tsx +4 -4
  387. package/eject/breadcrumb/find-path.ts +2 -2
  388. package/eject/breadcrumb/index.ts +1 -1
  389. package/eject/breadcrumb/types.ts +0 -6
  390. package/eject/code-group/index.tsx +2 -2
  391. package/eject/doc-history/index.tsx +1 -1
  392. package/eject/doc-pager/index.tsx +1 -1
  393. package/eject/footer/footer.tsx +1 -0
  394. package/eject/header/header.tsx +86 -21
  395. package/eject/header/index.ts +3 -0
  396. package/eject/header/types.ts +39 -1
  397. package/eject/site-tree-nav-island/index.tsx +15 -3
  398. package/eject/site-tree-nav-island/state.ts +9 -0
  399. package/eject/theme-toggle/color-scheme-sync.ts +2 -4
  400. package/package.json +82 -29
  401. package/routes-src/404.tsx +4 -1
  402. package/routes-src/_chrome.tsx +31 -8
  403. package/routes-src/_context.ts +4 -0
  404. package/routes-src/_docs-helpers.ts +9 -29
  405. package/routes-src/_virtual.d.ts +38 -2
  406. package/tsconfig.base.json +29 -0
  407. package/virtual-modules.d.ts +83 -0
  408. package/zfb-config-shim.d.ts +210 -0
  409. package/dist/integrations/llms-txt/index.d.ts +0 -33
  410. package/dist/theme/color-tweak-export-modal.d.ts +0 -16
  411. package/dist/theme/color-tweak-export-modal.js +0 -138
  412. package/dist/theme/design-token-serde.d.ts +0 -183
  413. package/dist/theme/design-token-serde.js +0 -346
  414. package/dist/theme/design-token-types.d.ts +0 -13
  415. package/dist/theme/design-token-types.js +0 -6
  416. package/dist/theme/iframe-bridge.d.ts +0 -42
  417. package/dist/theme/iframe-bridge.js +0 -72
  418. /package/dist/{integrations → plugins/internal}/claude-resources/escape-for-mdx.d.ts +0 -0
  419. /package/dist/{integrations → plugins/internal}/claude-resources/escape-for-mdx.js +0 -0
  420. /package/dist/{integrations → plugins/internal}/claude-resources/generate.d.ts +0 -0
  421. /package/dist/{integrations → plugins/internal}/claude-resources/generate.js +0 -0
  422. /package/dist/{integrations → plugins/internal}/doc-history/pre-build.js +0 -0
  423. /package/dist/{integrations → plugins/internal}/llms-txt/dev-middleware.d.ts +0 -0
  424. /package/dist/{integrations → plugins/internal}/llms-txt/dev-middleware.js +0 -0
  425. /package/dist/{integrations → plugins/internal}/llms-txt/emit.d.ts +0 -0
  426. /package/dist/{integrations → plugins/internal}/llms-txt/emit.js +0 -0
  427. /package/dist/{integrations → plugins/internal}/llms-txt/generate.d.ts +0 -0
  428. /package/dist/{integrations → plugins/internal}/llms-txt/generate.js +0 -0
  429. /package/dist/{integrations → plugins/internal}/llms-txt/index.js +0 -0
  430. /package/dist/{integrations → plugins/internal}/llms-txt/types.js +0 -0
  431. /package/dist/{integrations → plugins/internal}/search-index/build-emitter.d.ts +0 -0
  432. /package/dist/{integrations → plugins/internal}/search-index/build-emitter.js +0 -0
  433. /package/dist/{integrations → plugins/internal}/search-index/collect.d.ts +0 -0
  434. /package/dist/{integrations → plugins/internal}/search-index/dev-middleware.d.ts +0 -0
  435. /package/dist/{integrations → plugins/internal}/search-index/dev-middleware.js +0 -0
  436. /package/dist/{integrations → plugins/internal}/search-index/index.d.ts +0 -0
  437. /package/dist/{integrations → plugins/internal}/search-index/index.js +0 -0
  438. /package/dist/{integrations → plugins/internal}/search-index/types.d.ts +0 -0
  439. /package/dist/{integrations → plugins/internal}/search-index/types.js +0 -0
@@ -0,0 +1,728 @@
1
+ /* ============================================================
2
+ Observatory — zudo-doc theme pack (ADR docs/adr/theme-packs.md)
3
+
4
+ Night-sky atlas: star-field depth, constellation-line rules,
5
+ nebula violet and comet gold over astronomer's navy. Dark mode
6
+ is a night session at the eyepiece — navy-black sky, star-white
7
+ text, comet-gold accents, nebula violet. Light mode is the day
8
+ atlas: the same chart printed as navy ink and gilt on pale
9
+ celestial-blue paper. Josefin Sans chart-label headings (thin,
10
+ tracked, uppercase h2s) over a Jost reading face and Space Mono
11
+ code. Signature moves: fixed-attachment multi-depth star-dot sky
12
+ with nebula washes on page, sidebar, code blocks and flyout;
13
+ constellation-line rules — h1/h2 borders, pager cards and flyout
14
+ carry glowing gold star nodes joined by fading lines; dashed gold
15
+ ecliptic hr with a sun node; square chart-plate radii.
16
+
17
+ RADIUS DECISION: SQUARE — chart plates and instrument panels;
18
+ cards/admonitions/code at 0, flyout chrome at 2px.
19
+
20
+ Every rule below is scoped under html[data-theme-pack="observatory"]
21
+ — this is what makes the runtime pack swap atomic (Decision 3)
22
+ and lets the validator prove a pack can never leak styles while
23
+ inactive (Decision 6.7). The @font-face blocks are the sole
24
+ exception (at-rules can't be selector-scoped).
25
+
26
+ Prototype-selector adaptations against the REAL DOM (tokens-dump
27
+ §6 + component sources), noted inline where they matter:
28
+ - `.lead` → `p[data-doc-description]` (#2873 stable
29
+ hook on the description paragraph
30
+ DocContentHeader renders; only present when
31
+ the page has a frontmatter description)
32
+ - `.toc-active` → `nav[data-zd-toc] a[aria-current="true"]`
33
+ (toc/toc.tsx marks the active entry with
34
+ aria-current, not a mock class)
35
+ - `.doc-pager` → `.zd-content > nav[data-doc-pager] > a`
36
+ (#2873 stable hook on the DocPager nav)
37
+ - `footer[data-footer]` → `footer[data-footer]` (#2873 stable hook;
38
+ the wrapper-descendant form is no longer
39
+ needed)
40
+ - `.hdr-search` / `.hdr-icon-btn` / `.sb-group > p` / `.toc-title`
41
+ — prototype-mock markup with no stable
42
+ hook; NOT ported.
43
+ - `.tp-flyout` → `div[data-switcher-card]` (#2873 stable
44
+ hook); its title is `p[aria-live="polite"]`.
45
+ The launcher now has a stable hook too but
46
+ remains NOT ported (unchanged design
47
+ decision).
48
+ - the prototype's `--obs-*` helper properties are not part of the
49
+ token manifest; their values are inlined at each use site:
50
+ gold = var(--zd-accent)
51
+ violet = light-dark(oklch(0.48 0.125 300), oklch(0.74 0.115 300))
52
+ node = light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88))
53
+ node-glow = light-dark(oklch(0.52 0.11 80 / 0.35), oklch(0.86 0.13 88 / 0.55))
54
+ line = light-dark(oklch(0.33 0.05 268 / 0.4), oklch(0.86 0.05 265 / 0.34))
55
+ hairline = light-dark(oklch(0.33 0.05 268 / 0.22), oklch(0.88 0.04 265 / 0.16))
56
+ star-a = light-dark(oklch(0.32 0.05 268 / 0.22), oklch(0.96 0.015 255 / 0.4))
57
+ star-b = light-dark(oklch(0.32 0.05 268 / 0.12), oklch(0.96 0.015 255 / 0.2))
58
+ star-gold = light-dark(oklch(0.52 0.11 80 / 0.28), oklch(0.85 0.13 88 / 0.45))
59
+ star-violet = light-dark(oklch(0.48 0.125 300 / 0.2), oklch(0.74 0.12 300 / 0.36))
60
+ nebula = light-dark(oklch(0.6 0.1 300 / 0.06), oklch(0.43 0.17 300 / 0.15))
61
+ nebula-gold = light-dark(oklch(0.6 0.11 85 / 0.05), oklch(0.6 0.14 85 / 0.07))
62
+ indicator = light-dark(oklch(0.415 0.088 76), oklch(0.84 0.13 88))
63
+ - the prototype's `--font-sans` second entry (a commercial
64
+ geometric-humanist face on the Decision 5 denylist) was
65
+ dropped; Jost is the loaded face, system-ui covers the rest.
66
+ - the light syntax comment ink runs a step darker than the
67
+ prototype (L .52 → .50) to clear WCAG AA (≥4.5:1) on the pale
68
+ celestial code panel.
69
+ ============================================================ */
70
+
71
+ /* ---- Josefin Sans — the chart-label display face: h1 (thin 200),
72
+ uppercase h2s (300), h3s / admonition titles / table headers
73
+ (400), logo and flyout title. Variable 100–700.
74
+ Latin subsets only (all three families): a stray latin-ext
75
+ or CJK glyph falls through to the stack's system face. ---- */
76
+
77
+ @font-face {
78
+ font-family: "Josefin Sans";
79
+ font-style: normal;
80
+ font-weight: 100 700;
81
+ font-display: swap;
82
+ src: url("./fonts/JosefinSans-latin.woff2") format("woff2");
83
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
84
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
85
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
86
+ }
87
+
88
+ /* ---- Jost — the geometric reading face (the body prose, nav, UI).
89
+ Variable 100–900, plus a true italic for blockquote margin
90
+ notes. ---- */
91
+
92
+ @font-face {
93
+ font-family: "Jost";
94
+ font-style: normal;
95
+ font-weight: 100 900;
96
+ font-display: swap;
97
+ src: url("./fonts/Jost-latin.woff2") format("woff2");
98
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
99
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
100
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
101
+ }
102
+
103
+ @font-face {
104
+ font-family: "Jost";
105
+ font-style: italic;
106
+ font-weight: 100 900;
107
+ font-display: swap;
108
+ src: url("./fonts/Jost-italic-latin.woff2") format("woff2");
109
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
110
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
111
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
112
+ }
113
+
114
+ /* ---- Space Mono — code. Static 400/700 + a true 400 italic for
115
+ comments (no variable file exists). ---- */
116
+
117
+ @font-face {
118
+ font-family: "Space Mono";
119
+ font-style: normal;
120
+ font-weight: 400;
121
+ font-display: swap;
122
+ src: url("./fonts/SpaceMono-400-latin.woff2") format("woff2");
123
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
124
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
125
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
126
+ }
127
+
128
+ @font-face {
129
+ font-family: "Space Mono";
130
+ font-style: normal;
131
+ font-weight: 700;
132
+ font-display: swap;
133
+ src: url("./fonts/SpaceMono-700-latin.woff2") format("woff2");
134
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
135
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
136
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
137
+ }
138
+
139
+ @font-face {
140
+ font-family: "Space Mono";
141
+ font-style: italic;
142
+ font-weight: 400;
143
+ font-display: swap;
144
+ src: url("./fonts/SpaceMono-italic-latin.woff2") format("woff2");
145
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
146
+ U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191,
147
+ U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
148
+ }
149
+
150
+ html[data-theme-pack="observatory"] {
151
+ /* Tier-2 semantic roles — pale celestial-blue day atlas / navy
152
+ night sky. Both modes always via light-dark(). */
153
+ --zd-bg: light-dark(oklch(0.965 0.012 255), oklch(0.155 0.028 268));
154
+ --zd-fg: light-dark(oklch(0.235 0.045 268), oklch(0.93 0.015 255));
155
+ --zd-selection-bg: light-dark(oklch(0.855 0.07 300), oklch(0.405 0.13 300));
156
+ --zd-selection-fg: light-dark(oklch(0.22 0.06 300), oklch(0.965 0.01 300));
157
+ --zd-surface: light-dark(oklch(0.94 0.018 255), oklch(0.18 0.033 268));
158
+ --zd-muted: light-dark(oklch(0.44 0.038 266), oklch(0.705 0.032 262));
159
+ --zd-accent: light-dark(oklch(0.47 0.1 75), oklch(0.82 0.13 86));
160
+ --zd-accent-hover: light-dark(oklch(0.4 0.09 72), oklch(0.88 0.12 90));
161
+ --zd-code-bg: light-dark(oklch(0.93 0.02 260), oklch(0.128 0.028 270));
162
+ --zd-code-fg: light-dark(oklch(0.25 0.042 268), oklch(0.92 0.018 258));
163
+ --zd-success: light-dark(oklch(0.45 0.105 162), oklch(0.78 0.118 162));
164
+ --zd-danger: light-dark(oklch(0.49 0.16 22), oklch(0.7 0.15 22));
165
+ --zd-warning: light-dark(oklch(0.5 0.105 80), oklch(0.82 0.13 86));
166
+ --zd-info: light-dark(oklch(0.46 0.12 288), oklch(0.75 0.105 288));
167
+
168
+ /* syntax — spectral classes of the night sky, all 9 roles in both
169
+ modes: nebula-violet keywords, aurora-green strings, comet-gold
170
+ numbers/types, Rigel-blue callables, dim atmospheric-grey
171
+ comments. inserted/deleted reuse the success/danger hues. */
172
+ --zd-syntax-comment: light-dark(oklch(0.5 0.03 265), oklch(0.61 0.038 265));
173
+ --zd-syntax-string: light-dark(oklch(0.45 0.1 162), oklch(0.8 0.112 162));
174
+ --zd-syntax-number: light-dark(oklch(0.5 0.105 80), oklch(0.845 0.13 88));
175
+ --zd-syntax-keyword: light-dark(oklch(0.46 0.14 300), oklch(0.76 0.118 300));
176
+ --zd-syntax-callable: light-dark(oklch(0.46 0.11 250), oklch(0.78 0.095 240));
177
+ --zd-syntax-type: light-dark(oklch(0.5 0.085 60), oklch(0.865 0.068 78));
178
+ --zd-syntax-name: light-dark(oklch(0.27 0.04 268), oklch(0.93 0.015 255));
179
+ --zd-syntax-inserted: light-dark(oklch(0.45 0.105 162), oklch(0.78 0.118 162));
180
+ --zd-syntax-deleted: light-dark(oklch(0.49 0.16 22), oklch(0.7 0.15 22));
181
+
182
+ /* fonts — Jost reading face, Space Mono code, Josefin Sans
183
+ chart-label display face. */
184
+ --font-sans: "Jost", system-ui, sans-serif;
185
+ --font-mono: "Space Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
186
+ --font-display: "Josefin Sans", "Jost", system-ui, sans-serif;
187
+
188
+ /* Tier-3 component seams — thin tracked display headings, square
189
+ chart plates, gold nav marker. */
190
+ --zdc-doc-title-font: var(--font-display);
191
+ --zdc-doc-title-weight: 200;
192
+ --zdc-doc-title-tracking: 0.045em;
193
+ --zdc-doc-h2-font: var(--font-display);
194
+ --zdc-doc-h2-weight: 300;
195
+ --zdc-doc-h2-tracking: 0.1em;
196
+ --zdc-admonition-radius: 0;
197
+ --zdc-admonition-border-width: 2px;
198
+ --zdc-card-radius: 0;
199
+ --zdc-nav-active-indicator-color: light-dark(oklch(0.415 0.088 76), oklch(0.84 0.13 88));
200
+ }
201
+
202
+ /* ---- Observatory extras ---- */
203
+
204
+ /* faint star-dot field, three depths + two nebula washes; fixed
205
+ attachment so the sky holds still while the page scrolls */
206
+ html[data-theme-pack="observatory"] body {
207
+ background-image:
208
+ radial-gradient(
209
+ 70rem 46rem at 84% -12%,
210
+ light-dark(oklch(0.6 0.1 300 / 0.06), oklch(0.43 0.17 300 / 0.15)),
211
+ transparent 62%
212
+ ),
213
+ radial-gradient(
214
+ 52rem 36rem at -12% 108%,
215
+ light-dark(oklch(0.6 0.11 85 / 0.05), oklch(0.6 0.14 85 / 0.07)),
216
+ transparent 60%
217
+ ),
218
+ radial-gradient(
219
+ 1.5px 1.5px at 73px 210px,
220
+ light-dark(oklch(0.52 0.11 80 / 0.28), oklch(0.85 0.13 88 / 0.45)),
221
+ transparent
222
+ ),
223
+ radial-gradient(
224
+ 1.5px 1.5px at 246px 66px,
225
+ light-dark(oklch(0.48 0.125 300 / 0.2), oklch(0.74 0.12 300 / 0.36)),
226
+ transparent
227
+ ),
228
+ radial-gradient(
229
+ 1px 1px at 22px 34px,
230
+ light-dark(oklch(0.32 0.05 268 / 0.22), oklch(0.96 0.015 255 / 0.4)),
231
+ transparent
232
+ ),
233
+ radial-gradient(
234
+ 1px 1px at 191px 122px,
235
+ light-dark(oklch(0.32 0.05 268 / 0.22), oklch(0.96 0.015 255 / 0.4)),
236
+ transparent
237
+ ),
238
+ radial-gradient(
239
+ 1px 1px at 118px 250px,
240
+ light-dark(oklch(0.32 0.05 268 / 0.12), oklch(0.96 0.015 255 / 0.2)),
241
+ transparent
242
+ ),
243
+ radial-gradient(
244
+ 1px 1px at 301px 172px,
245
+ light-dark(oklch(0.32 0.05 268 / 0.12), oklch(0.96 0.015 255 / 0.2)),
246
+ transparent
247
+ );
248
+ background-size:
249
+ auto,
250
+ auto,
251
+ 420px 420px,
252
+ 380px 380px,
253
+ 260px 260px,
254
+ 300px 300px,
255
+ 340px 340px,
256
+ 360px 360px;
257
+ background-attachment: fixed;
258
+ letter-spacing: 0.005em;
259
+ }
260
+
261
+ /* header — observatory signage over a gold→violet ecliptic rule */
262
+ html[data-theme-pack="observatory"] header[data-header] {
263
+ border-image: linear-gradient(
264
+ to right,
265
+ var(--zd-accent),
266
+ light-dark(oklch(0.48 0.125 300), oklch(0.74 0.115 300)) 34%,
267
+ light-dark(oklch(0.33 0.05 268 / 0.22), oklch(0.88 0.04 265 / 0.16)) 72%,
268
+ transparent
269
+ )
270
+ 1;
271
+ background-image: linear-gradient(
272
+ to bottom,
273
+ color-mix(
274
+ in oklch,
275
+ light-dark(oklch(0.48 0.125 300), oklch(0.74 0.115 300)) 7%,
276
+ transparent
277
+ ),
278
+ transparent
279
+ );
280
+ }
281
+ html[data-theme-pack="observatory"] [data-header-logo] {
282
+ font-family: var(--font-display);
283
+ font-weight: 300;
284
+ font-size: 1.05rem;
285
+ letter-spacing: 0.16em;
286
+ text-transform: uppercase;
287
+ }
288
+ html[data-theme-pack="observatory"] [data-header-logo]::after {
289
+ content: " ✦";
290
+ color: var(--zd-accent);
291
+ font-size: 0.8em;
292
+ }
293
+ html[data-theme-pack="observatory"] [data-nav-item] {
294
+ letter-spacing: 0.03em;
295
+ }
296
+
297
+ /* sidebar — dimmer star field behind the catalog */
298
+ html[data-theme-pack="observatory"] #desktop-sidebar {
299
+ border-right-color: light-dark(oklch(0.33 0.05 268 / 0.22), oklch(0.88 0.04 265 / 0.16));
300
+ background-image:
301
+ radial-gradient(
302
+ 1px 1px at 31px 44px,
303
+ light-dark(oklch(0.32 0.05 268 / 0.12), oklch(0.96 0.015 255 / 0.2)),
304
+ transparent
305
+ ),
306
+ radial-gradient(
307
+ 1px 1px at 140px 170px,
308
+ light-dark(oklch(0.32 0.05 268 / 0.12), oklch(0.96 0.015 255 / 0.2)),
309
+ transparent
310
+ ),
311
+ radial-gradient(
312
+ 1.5px 1.5px at 88px 236px,
313
+ light-dark(oklch(0.48 0.125 300 / 0.2), oklch(0.74 0.12 300 / 0.36)),
314
+ transparent
315
+ );
316
+ background-size:
317
+ 220px 220px,
318
+ 260px 260px,
319
+ 320px 320px;
320
+ background-attachment: fixed;
321
+ }
322
+ html[data-theme-pack="observatory"] #desktop-sidebar a {
323
+ border-radius: 0;
324
+ }
325
+ html[data-theme-pack="observatory"] #desktop-sidebar a:hover {
326
+ color: var(--zd-accent);
327
+ }
328
+ /* active item: the gold indicator token fills it; square plate */
329
+ html[data-theme-pack="observatory"] a[data-nav-active] {
330
+ border-radius: 0;
331
+ }
332
+
333
+ /* breadcrumb: gilded hover */
334
+ html[data-theme-pack="observatory"] main nav[aria-label="Breadcrumb"] a:hover {
335
+ color: var(--zd-accent);
336
+ }
337
+
338
+ /* h1 — constellation underline: gold star nodes joined by a fading
339
+ line, glowing faintly */
340
+ html[data-theme-pack="observatory"] .zd-content h1 {
341
+ position: relative;
342
+ padding-bottom: 0.8rem;
343
+ }
344
+ html[data-theme-pack="observatory"] .zd-content h1::after {
345
+ content: "";
346
+ position: absolute;
347
+ left: 0;
348
+ bottom: 0;
349
+ width: min(24rem, 100%);
350
+ height: 7px;
351
+ background:
352
+ radial-gradient(
353
+ circle,
354
+ light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)) 0 2.2px,
355
+ transparent 2.8px
356
+ )
357
+ 0% 50% / 7px 7px no-repeat,
358
+ radial-gradient(
359
+ circle,
360
+ light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)) 0 1.7px,
361
+ transparent 2.3px
362
+ )
363
+ 36% 50% / 6px 6px no-repeat,
364
+ radial-gradient(
365
+ circle,
366
+ light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)) 0 1.4px,
367
+ transparent 2px
368
+ )
369
+ 68% 50% / 5px 5px no-repeat,
370
+ radial-gradient(
371
+ circle,
372
+ light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)) 0 1.7px,
373
+ transparent 2.3px
374
+ )
375
+ 100% 50% / 6px 6px no-repeat,
376
+ linear-gradient(
377
+ to right,
378
+ light-dark(oklch(0.33 0.05 268 / 0.4), oklch(0.86 0.05 265 / 0.34)) 0%,
379
+ light-dark(oklch(0.33 0.05 268 / 0.4), oklch(0.86 0.05 265 / 0.34)) 60%,
380
+ transparent
381
+ )
382
+ 0 50% / 100% 1px no-repeat;
383
+ filter: drop-shadow(
384
+ 0 0 4px light-dark(oklch(0.52 0.11 80 / 0.35), oklch(0.86 0.13 88 / 0.55))
385
+ );
386
+ }
387
+
388
+ /* the lead: a light-weight opening line under the title. Targets the
389
+ `data-doc-description` hook (#2873). */
390
+ html[data-theme-pack="observatory"] .zd-content > p[data-doc-description] {
391
+ font-weight: 300;
392
+ }
393
+
394
+ /* h2 — chart-label caps over a constellation line with star nodes.
395
+ The SSR-inlined `style="border-image:linear-gradient(...)"` bar is
396
+ defeated with border-image none !important (Decision 6.6's sole
397
+ allowlisted carve-out) + a zeroed border-top; the node-to-line rule
398
+ is then painted as a top-anchored background gradient, with the two
399
+ glowing star nodes as pseudo-element dots. */
400
+ html[data-theme-pack="observatory"] .zd-content h2 {
401
+ border-image: none !important;
402
+ border-top-width: 0;
403
+ position: relative;
404
+ text-transform: uppercase;
405
+ background-image: linear-gradient(
406
+ to right,
407
+ light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)),
408
+ light-dark(oklch(0.33 0.05 268 / 0.4), oklch(0.86 0.05 265 / 0.34)) 45%,
409
+ transparent 85%
410
+ );
411
+ background-size: 100% 1px;
412
+ background-repeat: no-repeat;
413
+ background-position: top left;
414
+ }
415
+ html[data-theme-pack="observatory"] .zd-content h2::before,
416
+ html[data-theme-pack="observatory"] .zd-content h2::after {
417
+ content: "";
418
+ position: absolute;
419
+ border-radius: 50%;
420
+ background: light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88));
421
+ box-shadow: 0 0 6px light-dark(oklch(0.52 0.11 80 / 0.35), oklch(0.86 0.13 88 / 0.55));
422
+ }
423
+ html[data-theme-pack="observatory"] .zd-content h2::before {
424
+ top: -3px;
425
+ left: 0;
426
+ width: 5px;
427
+ height: 5px;
428
+ }
429
+ html[data-theme-pack="observatory"] .zd-content h2::after {
430
+ top: -2.5px;
431
+ left: 38%;
432
+ width: 4px;
433
+ height: 4px;
434
+ opacity: 0.85;
435
+ }
436
+
437
+ /* h3 — chart labels with a small gold star marker */
438
+ html[data-theme-pack="observatory"] .zd-content h3 {
439
+ font-family: var(--font-display);
440
+ font-weight: 400;
441
+ letter-spacing: 0.05em;
442
+ }
443
+ html[data-theme-pack="observatory"] .zd-content h3::before {
444
+ content: "✦ ";
445
+ color: var(--zd-accent);
446
+ font-size: 0.75em;
447
+ vertical-align: 0.12em;
448
+ }
449
+
450
+ /* links — gilt underlines */
451
+ html[data-theme-pack="observatory"] .zd-content a {
452
+ text-underline-offset: 3px;
453
+ text-decoration-color: color-mix(in oklch, var(--zd-accent) 55%, transparent);
454
+ }
455
+ html[data-theme-pack="observatory"] .zd-content a:hover {
456
+ text-decoration-color: var(--zd-accent-hover);
457
+ }
458
+
459
+ /* blockquote — a violet margin note in the observer's log */
460
+ html[data-theme-pack="observatory"] .zd-content blockquote {
461
+ border-left-color: light-dark(oklch(0.48 0.125 300), oklch(0.74 0.115 300));
462
+ font-style: italic;
463
+ }
464
+
465
+ /* gold ecliptic hr — dashed orbit path with a sun node and outriders */
466
+ html[data-theme-pack="observatory"] .zd-content hr {
467
+ border: none;
468
+ height: 9px;
469
+ margin: 2.75rem 0;
470
+ background:
471
+ radial-gradient(circle, var(--zd-accent) 0 2.6px, transparent 3.2px) 50% 50% / 9px 9px
472
+ no-repeat,
473
+ radial-gradient(circle, var(--zd-accent) 0 1.4px, transparent 2px) 18% 50% / 5px 5px
474
+ no-repeat,
475
+ radial-gradient(circle, var(--zd-accent) 0 1.4px, transparent 2px) 82% 50% / 5px 5px
476
+ no-repeat,
477
+ repeating-linear-gradient(
478
+ to right,
479
+ color-mix(in oklch, var(--zd-accent) 55%, transparent) 0 12px,
480
+ transparent 12px 22px
481
+ )
482
+ 0 50% / 100% 1px no-repeat;
483
+ filter: drop-shadow(
484
+ 0 0 5px light-dark(oklch(0.52 0.11 80 / 0.35), oklch(0.86 0.13 88 / 0.55))
485
+ );
486
+ }
487
+
488
+ /* inline code — hairline instrument tag, square */
489
+ html[data-theme-pack="observatory"] .zd-content code:not(pre code) {
490
+ border: 1px solid light-dark(oklch(0.33 0.05 268 / 0.22), oklch(0.88 0.04 265 / 0.16));
491
+ border-radius: 0;
492
+ }
493
+
494
+ /* code block — a deep-space viewport: darker than the page, its own
495
+ stars, a violet frame lit from its top edge */
496
+ html[data-theme-pack="observatory"] pre.hi-root {
497
+ border-radius: 0;
498
+ border-color: color-mix(
499
+ in oklch,
500
+ light-dark(oklch(0.48 0.125 300), oklch(0.74 0.115 300)) 38%,
501
+ transparent
502
+ );
503
+ background-image:
504
+ radial-gradient(
505
+ 1px 1px at 34px 26px,
506
+ light-dark(oklch(0.32 0.05 268 / 0.12), oklch(0.96 0.015 255 / 0.2)),
507
+ transparent
508
+ ),
509
+ radial-gradient(
510
+ 1px 1px at 150px 74px,
511
+ light-dark(oklch(0.32 0.05 268 / 0.12), oklch(0.96 0.015 255 / 0.2)),
512
+ transparent
513
+ ),
514
+ radial-gradient(
515
+ 1.5px 1.5px at 220px 40px,
516
+ light-dark(oklch(0.48 0.125 300 / 0.2), oklch(0.74 0.12 300 / 0.36)),
517
+ transparent
518
+ );
519
+ background-size:
520
+ 200px 120px,
521
+ 260px 140px,
522
+ 340px 160px;
523
+ box-shadow: inset 0 1px 0
524
+ color-mix(
525
+ in oklch,
526
+ light-dark(oklch(0.48 0.125 300), oklch(0.74 0.115 300)) 22%,
527
+ transparent
528
+ );
529
+ }
530
+ html[data-theme-pack="observatory"] .hi-com {
531
+ font-style: italic;
532
+ }
533
+
534
+ /* admonitions — framed chart plates, astronomical marginalia glyphs
535
+ for note/tip/warning; the other variants keep the stock icons */
536
+ html[data-theme-pack="observatory"] [data-admonition] {
537
+ border-top: 1px solid light-dark(oklch(0.33 0.05 268 / 0.22), oklch(0.88 0.04 265 / 0.16));
538
+ border-right: 1px solid light-dark(oklch(0.33 0.05 268 / 0.22), oklch(0.88 0.04 265 / 0.16));
539
+ border-bottom: 1px solid light-dark(oklch(0.33 0.05 268 / 0.22), oklch(0.88 0.04 265 / 0.16));
540
+ }
541
+ html[data-theme-pack="observatory"] [data-admonition] .admonition-title {
542
+ font-family: var(--font-display);
543
+ font-weight: 400;
544
+ font-size: 0.85rem;
545
+ text-transform: uppercase;
546
+ letter-spacing: 0.12em;
547
+ }
548
+ html[data-theme-pack="observatory"] [data-admonition="note"] .admonition-title::before {
549
+ content: "✦ ";
550
+ }
551
+ html[data-theme-pack="observatory"] [data-admonition="tip"] .admonition-title::before {
552
+ content: "☄\fe0e ";
553
+ }
554
+ html[data-theme-pack="observatory"] [data-admonition="warning"] .admonition-title::before {
555
+ content: "⚠\fe0e ";
556
+ }
557
+
558
+ /* table — catalog columns under a gilt rule */
559
+ html[data-theme-pack="observatory"] .zd-content th {
560
+ font-family: var(--font-display);
561
+ font-weight: 400;
562
+ font-size: 0.8rem;
563
+ text-transform: uppercase;
564
+ letter-spacing: 0.1em;
565
+ border-bottom: 1px solid color-mix(in oklch, var(--zd-accent) 55%, transparent);
566
+ color: color-mix(in oklch, var(--zd-accent) 40%, var(--zd-fg));
567
+ }
568
+ html[data-theme-pack="observatory"] .zd-content td {
569
+ border-bottom-color: light-dark(oklch(0.33 0.05 268 / 0.22), oklch(0.88 0.04 265 / 0.16));
570
+ }
571
+
572
+ /* TOC — meridian line with a gold active marker. The real DOM marks
573
+ the active entry with aria-current="true" (toc/toc.tsx); the entry
574
+ pulls back to the ul's padding edge (it clips at padding, foundry
575
+ note) so the gold plate sits snug against the rail. */
576
+ html[data-theme-pack="observatory"] nav[data-zd-toc] ul {
577
+ border-left-color: light-dark(oklch(0.33 0.05 268 / 0.22), oklch(0.88 0.04 265 / 0.16));
578
+ }
579
+ html[data-theme-pack="observatory"] nav[data-zd-toc] a:hover {
580
+ color: var(--zd-accent);
581
+ }
582
+ html[data-theme-pack="observatory"] nav[data-zd-toc] a[aria-current="true"] {
583
+ background: light-dark(oklch(0.415 0.088 76), oklch(0.84 0.13 88));
584
+ color: var(--zd-bg);
585
+ font-weight: 500;
586
+ margin-left: calc(-1 * var(--spacing-hsp-lg, 1rem));
587
+ padding-left: var(--spacing-hsp-lg, 1rem);
588
+ }
589
+
590
+ /* pager — constellation cards: glowing nodes pinned to opposite
591
+ corners; gilt frame and node-glow on hover. Targets the DocPager's
592
+ `data-doc-pager` hook (#2873) directly. */
593
+ html[data-theme-pack="observatory"] .zd-content > nav[data-doc-pager] > a {
594
+ border-radius: 0;
595
+ border-color: light-dark(oklch(0.33 0.05 268 / 0.22), oklch(0.88 0.04 265 / 0.16));
596
+ background-color: color-mix(in oklch, var(--zd-surface) 60%, transparent);
597
+ background-image:
598
+ radial-gradient(
599
+ circle,
600
+ light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)) 0 1.8px,
601
+ transparent 2.4px
602
+ ),
603
+ radial-gradient(
604
+ circle,
605
+ light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88)) 0 1.8px,
606
+ transparent 2.4px
607
+ );
608
+ background-position:
609
+ 9px 9px,
610
+ calc(100% - 9px) calc(100% - 9px);
611
+ background-size: 6px 6px;
612
+ background-repeat: no-repeat;
613
+ transition:
614
+ box-shadow 0.18s ease,
615
+ border-color 0.18s ease;
616
+ }
617
+ html[data-theme-pack="observatory"]
618
+ .zd-content
619
+ > nav[data-doc-pager]
620
+ > a:hover {
621
+ border-color: color-mix(in oklch, var(--zd-accent) 65%, transparent);
622
+ box-shadow: 0 0 16px -4px
623
+ light-dark(oklch(0.52 0.11 80 / 0.35), oklch(0.86 0.13 88 / 0.55));
624
+ }
625
+ html[data-theme-pack="observatory"] .zd-content > nav[data-doc-pager] > a div {
626
+ text-transform: uppercase;
627
+ letter-spacing: 0.08em;
628
+ font-size: 0.72rem;
629
+ }
630
+
631
+ /* footer — the horizon: gilt rule fading at both ends, last stars.
632
+ Targets the `data-footer` hook (#2873) directly. */
633
+ html[data-theme-pack="observatory"] footer[data-footer] {
634
+ border-image: linear-gradient(
635
+ to right,
636
+ transparent,
637
+ color-mix(in oklch, var(--zd-accent) 60%, transparent) 30% 70%,
638
+ transparent
639
+ )
640
+ 1;
641
+ background-image:
642
+ radial-gradient(
643
+ 1px 1px at 60px 30px,
644
+ light-dark(oklch(0.32 0.05 268 / 0.12), oklch(0.96 0.015 255 / 0.2)),
645
+ transparent
646
+ ),
647
+ radial-gradient(
648
+ 1px 1px at 220px 70px,
649
+ light-dark(oklch(0.32 0.05 268 / 0.12), oklch(0.96 0.015 255 / 0.2)),
650
+ transparent
651
+ );
652
+ background-size:
653
+ 280px 110px,
654
+ 340px 130px;
655
+ }
656
+
657
+ /* theme-pack flyout — a framed star chart: violet frame, nebula wash,
658
+ its own stars, glowing gold nodes on opposing corners; Josefin
659
+ chart-label title. Targets the `data-switcher-card` hook (#2873);
660
+ the launcher now has a stable hook too but remains NOT ported. */
661
+ html[data-theme-pack="observatory"] div[data-switcher-card] {
662
+ /* the dialog is a static flex child of the fixed wrapper — anchor
663
+ the corner-node pseudos to the card itself */
664
+ position: relative;
665
+ border: 1px solid
666
+ color-mix(
667
+ in oklch,
668
+ light-dark(oklch(0.48 0.125 300), oklch(0.74 0.115 300)) 45%,
669
+ transparent
670
+ );
671
+ border-radius: 2px;
672
+ background-image:
673
+ radial-gradient(
674
+ 26rem 16rem at 100% 0%,
675
+ light-dark(oklch(0.6 0.1 300 / 0.06), oklch(0.43 0.17 300 / 0.15)),
676
+ transparent 65%
677
+ ),
678
+ radial-gradient(
679
+ 1px 1px at 40px 30px,
680
+ light-dark(oklch(0.32 0.05 268 / 0.22), oklch(0.96 0.015 255 / 0.4)),
681
+ transparent
682
+ ),
683
+ radial-gradient(
684
+ 1.5px 1.5px at 150px 62px,
685
+ light-dark(oklch(0.52 0.11 80 / 0.28), oklch(0.85 0.13 88 / 0.45)),
686
+ transparent
687
+ ),
688
+ radial-gradient(
689
+ 1px 1px at 250px 104px,
690
+ light-dark(oklch(0.32 0.05 268 / 0.12), oklch(0.96 0.015 255 / 0.2)),
691
+ transparent
692
+ );
693
+ box-shadow:
694
+ 0 10px 34px -6px rgb(2 6 20 / 0.5),
695
+ 0 0 22px -8px light-dark(oklch(0.52 0.11 80 / 0.35), oklch(0.86 0.13 88 / 0.55));
696
+ }
697
+ html[data-theme-pack="observatory"]
698
+ div[data-switcher-card]::before,
699
+ html[data-theme-pack="observatory"]
700
+ div[data-switcher-card]::after {
701
+ content: "";
702
+ position: absolute;
703
+ width: 5px;
704
+ height: 5px;
705
+ border-radius: 50%;
706
+ background: light-dark(oklch(0.5 0.105 78), oklch(0.87 0.13 88));
707
+ box-shadow: 0 0 6px light-dark(oklch(0.52 0.11 80 / 0.35), oklch(0.86 0.13 88 / 0.55));
708
+ pointer-events: none;
709
+ }
710
+ html[data-theme-pack="observatory"]
711
+ div[data-switcher-card]::before {
712
+ top: -2.5px;
713
+ left: -2.5px;
714
+ }
715
+ html[data-theme-pack="observatory"]
716
+ div[data-switcher-card]::after {
717
+ bottom: -2.5px;
718
+ right: -2.5px;
719
+ }
720
+ html[data-theme-pack="observatory"]
721
+ div[data-switcher-card]
722
+ p[aria-live="polite"] {
723
+ font-family: var(--font-display);
724
+ font-weight: 300;
725
+ letter-spacing: 0.14em;
726
+ text-transform: uppercase;
727
+ color: var(--zd-accent);
728
+ }