@master/internal-site 0.0.0-stage → 0.1.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 (687) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +66 -2
  3. package/dist/astro.d.mts +3 -0
  4. package/dist/astro.mjs +510 -0
  5. package/dist/config.d.mts +64 -0
  6. package/dist/config.mjs +10 -0
  7. package/package.json +384 -4
  8. package/src/astro/Page.astro +12 -0
  9. package/src/astro/content-pages.ts +75 -0
  10. package/src/astro/index.ts +124 -0
  11. package/src/astro/module-id.ts +4 -0
  12. package/src/astro/propagated-assets.ts +29 -0
  13. package/src/astro/route-paths.ts +78 -0
  14. package/src/astro/routes.template.ts +110 -0
  15. package/src/astro/server-styles.ts +26 -0
  16. package/src/astro/site-context.ts +27 -0
  17. package/src/astro/source-url.ts +22 -0
  18. package/src/astro/svelte-renderer.ts +45 -0
  19. package/src/astro/svg-markup.ts +23 -0
  20. package/src/benchmarks/BenchmarkBarRows.astro +34 -0
  21. package/src/benchmarks/BenchmarkBars.astro +14 -0
  22. package/src/benchmarks/BenchmarkChart.astro +53 -0
  23. package/src/benchmarks/BenchmarkChartGroup.astro +24 -0
  24. package/src/benchmarks/BenchmarkDataTable.astro +24 -0
  25. package/src/benchmarks/BenchmarkDelta.astro +23 -0
  26. package/src/benchmarks/BenchmarkFigure.astro +30 -0
  27. package/src/benchmarks/BenchmarkMetricTable.astro +38 -0
  28. package/src/benchmarks/BenchmarkMetrics.astro +23 -0
  29. package/src/benchmarks/BenchmarkSampleSummary.astro +30 -0
  30. package/src/benchmarks/BenchmarkScrollRegion.svelte +27 -0
  31. package/src/benchmarks/BenchmarkSource.astro +20 -0
  32. package/src/benchmarks/BenchmarkStackedBars.astro +54 -0
  33. package/src/benchmarks/BenchmarkStatus.astro +16 -0
  34. package/src/benchmarks/types.ts +98 -0
  35. package/src/benchmarks/utils.ts +42 -0
  36. package/src/blog/BlogAuthors.astro +25 -0
  37. package/src/blog/article/BlogArticleContents.svelte +24 -0
  38. package/src/blog/article/BlogArticleEnd.astro +55 -0
  39. package/src/blog/article/BlogArticleMasthead.astro +61 -0
  40. package/src/blog/article/language.ts +29 -0
  41. package/src/blog/article/neighbors.ts +27 -0
  42. package/src/blog/article/title-lines.astro +14 -0
  43. package/src/blog/article/title-parts.ts +9 -0
  44. package/src/components.d.ts +5 -0
  45. package/src/config.ts +66 -0
  46. package/src/css/ButtonPreview.astro +22 -0
  47. package/src/css/ConfiguredExample.astro +15 -0
  48. package/src/css/NamespaceUtilityTable.astro +50 -0
  49. package/src/css/StylesheetExample.astro +15 -0
  50. package/src/css/ThemeNumberVariableTable.astro +57 -0
  51. package/src/css/configured-example.ts +53 -0
  52. package/src/css/foundation-data/elevation/shadow-data.ts +52 -0
  53. package/src/css/foundation-data/sizing/scale-data.ts +37 -0
  54. package/src/css/foundation-data/specimen-content.ts +10 -0
  55. package/src/css/foundation-data/specimens.ts +96 -0
  56. package/src/css/foundation-data/tokens.ts +32 -0
  57. package/src/css/generate-preset-css.ts +12 -0
  58. package/src/css/highlight.ts +34 -0
  59. package/src/css/manifest-utilities.ts +29 -0
  60. package/src/css/markdown.ts +279 -0
  61. package/src/css/preset-css.ts +15 -0
  62. package/src/css/preset-manifest.ts +3 -0
  63. package/src/css/stylesheet-example.ts +26 -0
  64. package/src/css/theme-variables.ts +74 -0
  65. package/src/css/variable-namespace-sources.ts +20 -0
  66. package/src/demo/Demo.svelte +55 -0
  67. package/src/demo/DemoAsset.astro +38 -0
  68. package/src/demo/DemoAxes.svelte +22 -0
  69. package/src/demo/DemoBadge.svelte +18 -0
  70. package/src/demo/DemoCatalog.astro +36 -0
  71. package/src/demo/DemoComparison.svelte +36 -0
  72. package/src/demo/DemoConfiguredExample.astro +48 -0
  73. package/src/demo/DemoContainer.svelte +48 -0
  74. package/src/demo/DemoControls.svelte +16 -0
  75. package/src/demo/DemoCopyButton.svelte +50 -0
  76. package/src/demo/DemoCopyGroup.svelte +15 -0
  77. package/src/demo/DemoExample.astro +27 -0
  78. package/src/demo/DemoFeatureSupport.svelte +18 -0
  79. package/src/demo/DemoGeneratedCSS.svelte +8 -0
  80. package/src/demo/DemoIndex.astro +23 -0
  81. package/src/demo/DemoInstallation.astro +17 -0
  82. package/src/demo/DemoItem.svelte +17 -0
  83. package/src/demo/DemoLabel.svelte +15 -0
  84. package/src/demo/DemoLegend.svelte +15 -0
  85. package/src/demo/DemoMeasure.svelte +28 -0
  86. package/src/demo/DemoMedia.svelte +43 -0
  87. package/src/demo/DemoMotion.svelte +41 -0
  88. package/src/demo/DemoPageViewport.astro +17 -0
  89. package/src/demo/DemoPalette.astro +29 -0
  90. package/src/demo/DemoPaletteGroups.svelte +15 -0
  91. package/src/demo/DemoScrollArea.svelte +15 -0
  92. package/src/demo/DemoStyleComparison.astro +25 -0
  93. package/src/demo/DemoSurface.svelte +15 -0
  94. package/src/demo/DemoSwatch.svelte +19 -0
  95. package/src/demo/DemoThemeComparison.astro +30 -0
  96. package/src/demo/DemoTokenTable.astro +34 -0
  97. package/src/demo/DemoViewTransition.astro +18 -0
  98. package/src/demo/DemoViewport.svelte +324 -0
  99. package/src/demo/DemoWaterfall.astro +30 -0
  100. package/src/demo/FoundationBreakpoint.astro +12 -0
  101. package/src/demo/ProjectStyleExample.astro +13 -0
  102. package/src/demo/copy-feedback.ts +10 -0
  103. package/src/demo/demo-waterfall.ts +17 -0
  104. package/src/demo/drag-readings.ts +20 -0
  105. package/src/demo/foundations/FoundationAxes.astro +12 -0
  106. package/src/demo/foundations/FoundationColorRoles.astro +5 -0
  107. package/src/demo/foundations/FoundationContainerGrid.astro +24 -0
  108. package/src/demo/foundations/FoundationDialog.astro +14 -0
  109. package/src/demo/foundations/FoundationElevation.astro +5 -0
  110. package/src/demo/foundations/FoundationElevationState.astro +5 -0
  111. package/src/demo/foundations/FoundationHue.astro +5 -0
  112. package/src/demo/foundations/FoundationLines.astro +5 -0
  113. package/src/demo/foundations/FoundationMedia.astro +28 -0
  114. package/src/demo/foundations/FoundationMotion.astro +5 -0
  115. package/src/demo/foundations/FoundationPalette.astro +8 -0
  116. package/src/demo/foundations/FoundationRadius.astro +13 -0
  117. package/src/demo/foundations/FoundationShapes.astro +12 -0
  118. package/src/demo/foundations/FoundationShrink.astro +14 -0
  119. package/src/demo/foundations/FoundationSizing.astro +19 -0
  120. package/src/demo/foundations/FoundationSpecimen.astro +20 -0
  121. package/src/demo/foundations/FoundationSurfaces.astro +5 -0
  122. package/src/demo/foundations/FoundationTextHue.astro +5 -0
  123. package/src/demo/foundations/FoundationTextRoles.astro +5 -0
  124. package/src/demo/foundations/FoundationTokens.astro +22 -0
  125. package/src/demo/foundations/FoundationTokensView.astro +65 -0
  126. package/src/demo/foundations/FoundationTransition.astro +5 -0
  127. package/src/demo/foundations/FoundationTypeComparison.astro +12 -0
  128. package/src/demo/foundations/FoundationTypography.astro +5 -0
  129. package/src/demo/foundations/Palette.svelte +37 -0
  130. package/src/demo/foundations/ShadowScaleDemo.astro +22 -0
  131. package/src/demo/illustration-materials.ts +180 -0
  132. package/src/demo/maintenance-example.ts +62 -0
  133. package/src/demo/playback.ts +75 -0
  134. package/src/demo/project-style-examples.ts +128 -0
  135. package/src/demo/reference/alignment.ts +42 -0
  136. package/src/demo/reference/animations.ts +30 -0
  137. package/src/demo/reference/backgrounds.ts +39 -0
  138. package/src/demo/reference/border-paint.ts +31 -0
  139. package/src/demo/reference/clipping.ts +26 -0
  140. package/src/demo/reference/document.ts +55 -0
  141. package/src/demo/reference/edges.ts +40 -0
  142. package/src/demo/reference/effects.ts +27 -0
  143. package/src/demo/reference/flexbox.ts +33 -0
  144. package/src/demo/reference/frame.css +118 -0
  145. package/src/demo/reference/grid.ts +42 -0
  146. package/src/demo/reference/html.ts +40 -0
  147. package/src/demo/reference/interaction.ts +42 -0
  148. package/src/demo/reference/layout-html.ts +10 -0
  149. package/src/demo/reference/layout.ts +102 -0
  150. package/src/demo/reference/media.ts +29 -0
  151. package/src/demo/reference/positioning.ts +90 -0
  152. package/src/demo/reference/scenes.ts +197 -0
  153. package/src/demo/reference/scrolling.ts +66 -0
  154. package/src/demo/reference/shapes.ts +22 -0
  155. package/src/demo/reference/sizing.ts +43 -0
  156. package/src/demo/reference/source.ts +8 -0
  157. package/src/demo/reference/text-effects.ts +37 -0
  158. package/src/demo/reference/text-flow.ts +41 -0
  159. package/src/demo/reference/transforms.ts +26 -0
  160. package/src/demo/reference/transitions.ts +24 -0
  161. package/src/demo/reference/type-specimens.ts +56 -0
  162. package/src/demo/reference/types.ts +30 -0
  163. package/src/demo/reference/typography.ts +32 -0
  164. package/src/demo/specimens/accent-color.json +50 -0
  165. package/src/demo/specimens/align-items.json +56 -0
  166. package/src/demo/specimens/animation-delay.json +55 -0
  167. package/src/demo/specimens/animation-direction.json +49 -0
  168. package/src/demo/specimens/animation-fill-mode.json +55 -0
  169. package/src/demo/specimens/animation-iteration-count.json +55 -0
  170. package/src/demo/specimens/animation-play-state.json +83 -0
  171. package/src/demo/specimens/animation-timing-function.json +48 -0
  172. package/src/demo/specimens/appearance.json +44 -0
  173. package/src/demo/specimens/aspect-ratio.json +28 -0
  174. package/src/demo/specimens/backdrop-filter.json +44 -0
  175. package/src/demo/specimens/background-attachment.json +49 -0
  176. package/src/demo/specimens/background-image.json +25 -0
  177. package/src/demo/specimens/background-origin.json +36 -0
  178. package/src/demo/specimens/background-size.json +29 -0
  179. package/src/demo/specimens/border-collapse.json +45 -0
  180. package/src/demo/specimens/border-color.json +35 -0
  181. package/src/demo/specimens/border-image-repeat.json +50 -0
  182. package/src/demo/specimens/border-image-slice.json +45 -0
  183. package/src/demo/specimens/border-radius.json +30 -0
  184. package/src/demo/specimens/box-decoration-break.json +35 -0
  185. package/src/demo/specimens/box-shadow.json +33 -0
  186. package/src/demo/specimens/clear.json +77 -0
  187. package/src/demo/specimens/clip-path.json +38 -0
  188. package/src/demo/specimens/content.json +27 -0
  189. package/src/demo/specimens/counter-set.json +31 -0
  190. package/src/demo/specimens/fill.json +23 -0
  191. package/src/demo/specimens/filter.json +23 -0
  192. package/src/demo/specimens/flex-direction.json +27 -0
  193. package/src/demo/specimens/flex-grow.json +27 -0
  194. package/src/demo/specimens/font-style.json +23 -0
  195. package/src/demo/specimens/font-variant-numeric.json +28 -0
  196. package/src/demo/specimens/grid-auto-columns.json +29 -0
  197. package/src/demo/specimens/grid-auto-flow.json +37 -0
  198. package/src/demo/specimens/grid-template-areas.json +34 -0
  199. package/src/demo/specimens/grid-template-columns.json +36 -0
  200. package/src/demo/specimens/isolation.json +25 -0
  201. package/src/demo/specimens/justify-content.json +36 -0
  202. package/src/demo/specimens/line-height.json +28 -0
  203. package/src/demo/specimens/list-style-position.json +36 -0
  204. package/src/demo/specimens/mask-image.json +54 -0
  205. package/src/demo/specimens/min-width.json +39 -0
  206. package/src/demo/specimens/mix-blend-mode.json +43 -0
  207. package/src/demo/specimens/object-fit.json +27 -0
  208. package/src/demo/specimens/object-position.json +27 -0
  209. package/src/demo/specimens/opacity.json +37 -0
  210. package/src/demo/specimens/order.json +28 -0
  211. package/src/demo/specimens/overflow-wrap.json +26 -0
  212. package/src/demo/specimens/overflow.json +53 -0
  213. package/src/demo/specimens/overscroll-behavior.json +29 -0
  214. package/src/demo/specimens/padding.json +84 -0
  215. package/src/demo/specimens/place-content.json +31 -0
  216. package/src/demo/specimens/pointer-events.json +46 -0
  217. package/src/demo/specimens/position.json +29 -0
  218. package/src/demo/specimens/resize.json +32 -0
  219. package/src/demo/specimens/screen-readers.json +37 -0
  220. package/src/demo/specimens/scroll-padding.json +29 -0
  221. package/src/demo/specimens/scroll-snap-stop.json +33 -0
  222. package/src/demo/specimens/shape-image-threshold.json +37 -0
  223. package/src/demo/specimens/shape-margin.json +40 -0
  224. package/src/demo/specimens/shape-outside.json +37 -0
  225. package/src/demo/specimens/stroke-width.json +27 -0
  226. package/src/demo/specimens/text-fill-color.json +23 -0
  227. package/src/demo/specimens/text-stroke-width.json +32 -0
  228. package/src/demo/specimens/touch-action.json +45 -0
  229. package/src/demo/specimens/transform-box.json +37 -0
  230. package/src/demo/specimens/transform-origin.json +56 -0
  231. package/src/demo/specimens/transform-style.json +55 -0
  232. package/src/demo/specimens/transform.json +47 -0
  233. package/src/demo/specimens/transition-delay.json +57 -0
  234. package/src/demo/specimens/transition-duration.json +60 -0
  235. package/src/demo/specimens/transition-property.json +60 -0
  236. package/src/demo/specimens/transition-timing-function.json +65 -0
  237. package/src/demo/specimens/user-drag.json +28 -0
  238. package/src/demo/specimens/user-select.json +25 -0
  239. package/src/demo/specimens/vertical-align.json +28 -0
  240. package/src/demo/specimens/width.json +56 -0
  241. package/src/demo/specimens/will-change.json +50 -0
  242. package/src/demo/specimens/writing-mode.json +26 -0
  243. package/src/demo/specimens/z-index.json +35 -0
  244. package/src/demo/style.ts +15 -0
  245. package/src/demo/tone.ts +4 -0
  246. package/src/demo/useDemoViewTransition.svelte.ts +71 -0
  247. package/src/docs-shell/common/i18n.config.d.ts +2 -0
  248. package/src/docs-shell/common/i18n.config.js +13 -0
  249. package/src/docs-shell/common/svgo.config.d.ts +2 -0
  250. package/src/docs-shell/common/svgo.config.js +11 -0
  251. package/src/docs-shell/components/ArticleHeader.astro +65 -0
  252. package/src/docs-shell/components/ArticleTOC.astro +18 -0
  253. package/src/docs-shell/components/Callout.astro +26 -0
  254. package/src/docs-shell/components/Code.astro +25 -0
  255. package/src/docs-shell/components/CodeCopyButton.astro +25 -0
  256. package/src/docs-shell/components/CodeTabBar.astro +40 -0
  257. package/src/docs-shell/components/CodeTabs.astro +53 -0
  258. package/src/docs-shell/components/CodeView.astro +23 -0
  259. package/src/docs-shell/components/Do.astro +5 -0
  260. package/src/docs-shell/components/DoNot.astro +5 -0
  261. package/src/docs-shell/components/DocArticle.astro +14 -0
  262. package/src/docs-shell/components/DocHeader.svelte +87 -0
  263. package/src/docs-shell/components/DocHeading.astro +28 -0
  264. package/src/docs-shell/components/DocMain.astro +19 -0
  265. package/src/docs-shell/components/DocMenuButton.svelte +95 -0
  266. package/src/docs-shell/components/DocSidebar.svelte +62 -0
  267. package/src/docs-shell/components/DocVersionSelect.svelte +22 -0
  268. package/src/docs-shell/components/DocWrapper.astro +11 -0
  269. package/src/docs-shell/components/DocumentAPIIndex.astro +24 -0
  270. package/src/docs-shell/components/DocumentChoices.astro +24 -0
  271. package/src/docs-shell/components/DocumentCodeExample.astro +20 -0
  272. package/src/docs-shell/components/DocumentCodeExampleView.astro +35 -0
  273. package/src/docs-shell/components/DocumentCodeTable.astro +19 -0
  274. package/src/docs-shell/components/DocumentComparison.astro +7 -0
  275. package/src/docs-shell/components/DocumentCopyButton.svelte +41 -0
  276. package/src/docs-shell/components/DocumentDeclaration.astro +17 -0
  277. package/src/docs-shell/components/DocumentDeclarationView.astro +12 -0
  278. package/src/docs-shell/components/DocumentDisclosure.astro +14 -0
  279. package/src/docs-shell/components/DocumentFileTree.astro +34 -0
  280. package/src/docs-shell/components/DocumentFlow.astro +27 -0
  281. package/src/docs-shell/components/DocumentIdentifier.astro +14 -0
  282. package/src/docs-shell/components/DocumentIllustration.astro +46 -0
  283. package/src/docs-shell/components/DocumentKeyList.astro +22 -0
  284. package/src/docs-shell/components/DocumentNamespaceTable.astro +20 -0
  285. package/src/docs-shell/components/DocumentOptionEntry.astro +15 -0
  286. package/src/docs-shell/components/DocumentOptionList.astro +11 -0
  287. package/src/docs-shell/components/DocumentOptions.astro +23 -0
  288. package/src/docs-shell/components/DocumentParameters.astro +30 -0
  289. package/src/docs-shell/components/DocumentPrompt.astro +16 -0
  290. package/src/docs-shell/components/DocumentValueList.astro +25 -0
  291. package/src/docs-shell/components/DocumentationIndex.svelte +144 -0
  292. package/src/docs-shell/components/Dropped.astro +21 -0
  293. package/src/docs-shell/components/ExpandContent.svelte +21 -0
  294. package/src/docs-shell/components/ExplorerView.astro +37 -0
  295. package/src/docs-shell/components/FileIcon.astro +123 -0
  296. package/src/docs-shell/components/Footer.svelte +80 -0
  297. package/src/docs-shell/components/GeneratedCSS.astro +8 -0
  298. package/src/docs-shell/components/Header.svelte +121 -0
  299. package/src/docs-shell/components/HeaderIcon.astro +14 -0
  300. package/src/docs-shell/components/HeaderNav.svelte +18 -0
  301. package/src/docs-shell/components/Image.svelte +56 -0
  302. package/src/docs-shell/components/Info.astro +5 -0
  303. package/src/docs-shell/components/InlineCode.astro +30 -0
  304. package/src/docs-shell/components/InteractingIndicator.astro +19 -0
  305. package/src/docs-shell/components/LanguageButton.svelte +18 -0
  306. package/src/docs-shell/components/LanguageSelect.svelte +44 -0
  307. package/src/docs-shell/components/Link.svelte +127 -0
  308. package/src/docs-shell/components/ModeImg.astro +11 -0
  309. package/src/docs-shell/components/NotFound.astro +21 -0
  310. package/src/docs-shell/components/OverviewButtons.astro +36 -0
  311. package/src/docs-shell/components/PMAction.astro +25 -0
  312. package/src/docs-shell/components/PackageBadges.astro +39 -0
  313. package/src/docs-shell/components/PageContent.svelte +38 -0
  314. package/src/docs-shell/components/PageContentBootstrap.astro +13 -0
  315. package/src/docs-shell/components/PageContentDisclosure.astro +25 -0
  316. package/src/docs-shell/components/PageContentList.svelte +70 -0
  317. package/src/docs-shell/components/PageContentProvider.svelte +15 -0
  318. package/src/docs-shell/components/PageContentTitle.svelte +16 -0
  319. package/src/docs-shell/components/PageNavs.astro +40 -0
  320. package/src/docs-shell/components/PreparedCodeView.astro +12 -0
  321. package/src/docs-shell/components/RenderNode.astro +16 -0
  322. package/src/docs-shell/components/RouteLayers.astro +17 -0
  323. package/src/docs-shell/components/SearchButton.svelte +31 -0
  324. package/src/docs-shell/components/SearchDialog.svelte +174 -0
  325. package/src/docs-shell/components/Segments.svelte +62 -0
  326. package/src/docs-shell/components/Step.astro +13 -0
  327. package/src/docs-shell/components/StepL.astro +10 -0
  328. package/src/docs-shell/components/StepR.astro +10 -0
  329. package/src/docs-shell/components/StepSection.astro +12 -0
  330. package/src/docs-shell/components/Tab.astro +8 -0
  331. package/src/docs-shell/components/Tabs.astro +10 -0
  332. package/src/docs-shell/components/ThemeIcon.astro +19 -0
  333. package/src/docs-shell/components/ThemeSelect.svelte +20 -0
  334. package/src/docs-shell/components/TimeAgo.svelte +32 -0
  335. package/src/docs-shell/components/Translate.astro +14 -0
  336. package/src/docs-shell/components/Warn.astro +5 -0
  337. package/src/docs-shell/components/code-props.ts +28 -0
  338. package/src/docs-shell/components/document-types.ts +119 -0
  339. package/src/docs-shell/components/markdown/Anchor.astro +5 -0
  340. package/src/docs-shell/components/markdown/Heading2.astro +5 -0
  341. package/src/docs-shell/components/markdown/Heading3.astro +5 -0
  342. package/src/docs-shell/components/markdown/Table.astro +6 -0
  343. package/src/docs-shell/components/markdown-components.ts +36 -0
  344. package/src/docs-shell/components/page-content-bootstrap.ts +115 -0
  345. package/src/docs-shell/components/page-content.svelte.ts +125 -0
  346. package/src/docs-shell/contexts/search.ts +18 -0
  347. package/src/docs-shell/contexts/theme-mode.svelte.ts +61 -0
  348. package/src/docs-shell/data/authors.ts +17 -0
  349. package/src/docs-shell/data/base-colors.ts +29 -0
  350. package/src/docs-shell/data/brands.ts +79 -0
  351. package/src/docs-shell/data/color-names.ts +1 -0
  352. package/src/docs-shell/data/color-palette.ts +50 -0
  353. package/src/docs-shell/data/colors.ts +1 -0
  354. package/src/docs-shell/factories/Page.astro +35 -0
  355. package/src/docs-shell/factories/create-page.ts +31 -0
  356. package/src/docs-shell/layouts/BlogArticle.astro +53 -0
  357. package/src/docs-shell/layouts/Doc.astro +41 -0
  358. package/src/docs-shell/remark/markdown-components.d.ts +2 -0
  359. package/src/docs-shell/remark/markdown-components.js +101 -0
  360. package/src/docs-shell/remark/slug-and-toc.d.ts +2 -0
  361. package/src/docs-shell/remark/slug-and-toc.js +53 -0
  362. package/src/docs-shell/scripts/code-tabs-bootstrap.ts +34 -0
  363. package/src/docs-shell/scripts/code.ts +124 -0
  364. package/src/docs-shell/scripts/document-anchor.ts +57 -0
  365. package/src/docs-shell/scripts/document.ts +47 -0
  366. package/src/docs-shell/site.ts +67 -0
  367. package/src/docs-shell/types/IllustrationImages.ts +2 -0
  368. package/src/docs-shell/types/Metadata.ts +17 -0
  369. package/src/docs-shell/types/Props.ts +9 -0
  370. package/src/docs-shell/types/StaticImage.ts +6 -0
  371. package/src/docs-shell/uses/use-selected-preview-syntax.svelte.ts +16 -0
  372. package/src/docs-shell/utils/anchor.ts +24 -0
  373. package/src/docs-shell/utils/beautify-css.ts +14 -0
  374. package/src/docs-shell/utils/beautify-html.ts +12 -0
  375. package/src/docs-shell/utils/beautify-js.ts +9 -0
  376. package/src/docs-shell/utils/create-highlighter.ts +50 -0
  377. package/src/docs-shell/utils/css-modern-grammar.ts +339 -0
  378. package/src/docs-shell/utils/documentation-search.ts +68 -0
  379. package/src/docs-shell/utils/generate-metadata.ts +60 -0
  380. package/src/docs-shell/utils/group-page-content.ts +10 -0
  381. package/src/docs-shell/utils/head.ts +72 -0
  382. package/src/docs-shell/utils/highlight-code-core.ts +146 -0
  383. package/src/docs-shell/utils/highlight-code.ts +1 -0
  384. package/src/docs-shell/utils/highlighted-code-text.ts +27 -0
  385. package/src/docs-shell/utils/i18n-pathname.ts +98 -0
  386. package/src/docs-shell/utils/i18n.ts +12 -0
  387. package/src/docs-shell/utils/is-date-within-seven-days.ts +16 -0
  388. package/src/docs-shell/utils/isBrowser.ts +1 -0
  389. package/src/docs-shell/utils/isInteractOutside.ts +16 -0
  390. package/src/docs-shell/utils/markdown-tree.ts +22 -0
  391. package/src/docs-shell/utils/metadata.ts +25 -0
  392. package/src/docs-shell/utils/prepared-code.ts +21 -0
  393. package/src/docs-shell/utils/resolve-heading.d.ts +1 -0
  394. package/src/docs-shell/utils/resolve-heading.js +19 -0
  395. package/src/docs-shell/utils/search-pages.ts +271 -0
  396. package/src/docs-shell/utils/slot-text.ts +15 -0
  397. package/src/docs-shell/utils/snackbar.ts +39 -0
  398. package/src/docs-shell/utils/syntax-theme.ts +53 -0
  399. package/src/docs-shell/utils/transformer-notation-word-mark.ts +146 -0
  400. package/src/docs-shell/utils/unique-id.ts +11 -0
  401. package/src/examples/article-transitions/page.astro +7 -0
  402. package/src/examples/article-transitions/transitions.css +10 -0
  403. package/src/examples/components/ArticleTransitionScene.svelte +83 -0
  404. package/src/examples/components/ViewTransitionScene.svelte +31 -0
  405. package/src/examples/images/article-aurora.jpg +0 -0
  406. package/src/examples/images/article-coast.jpg +0 -0
  407. package/src/examples/images/article-grid.jpg +0 -0
  408. package/src/examples/images/article-studio.jpg +0 -0
  409. package/src/examples/layout-system/page.astro +59 -0
  410. package/src/examples/scene.css +3 -0
  411. package/src/examples/view-transitions/page.astro +7 -0
  412. package/src/examples/view-transitions/transitions.css +9 -0
  413. package/src/home/HeroCanvas.svelte +617 -0
  414. package/src/home/HomeAction.astro +17 -0
  415. package/src/home/HomeBentoFrame.astro +9 -0
  416. package/src/home/HomeBentoGrid.astro +9 -0
  417. package/src/home/HomeCompactIcon.astro +15 -0
  418. package/src/home/HomeFooter.svelte +63 -0
  419. package/src/home/HomeIllustration.astro +17 -0
  420. package/src/home/HomeIllustrationArt.svelte +15 -0
  421. package/src/home/HomeLamp.svelte +18 -0
  422. package/src/home/design.css +532 -0
  423. package/src/home/footer.css +225 -0
  424. package/src/home/hero-shaders.ts +460 -0
  425. package/src/home/hero-title-mask.ts +175 -0
  426. package/src/home/hero.css +547 -0
  427. package/src/home/home-illustration.ts +5 -0
  428. package/src/home/home-lamp.ts +225 -0
  429. package/src/home/home.css +1077 -0
  430. package/src/home/icons/agent-check-preview-apply.svg +24 -0
  431. package/src/home/icons/agent-clients.svg +26 -0
  432. package/src/home/icons/agent-project-tools.svg +23 -0
  433. package/src/home/icons/artwork/agent-check-preview-apply-dark.webp +0 -0
  434. package/src/home/icons/artwork/agent-check-preview-apply-light.webp +0 -0
  435. package/src/home/icons/artwork/agent-clients-dark.webp +0 -0
  436. package/src/home/icons/artwork/agent-clients-light.webp +0 -0
  437. package/src/home/icons/artwork/agent-edit-file-dark.webp +0 -0
  438. package/src/home/icons/artwork/agent-edit-file-light.webp +0 -0
  439. package/src/home/icons/artwork/agent-project-tools-dark.webp +0 -0
  440. package/src/home/icons/artwork/agent-project-tools-light.webp +0 -0
  441. package/src/home/icons/artwork/design-cascade-layers-dark.webp +0 -0
  442. package/src/home/icons/artwork/design-cascade-layers-light.webp +0 -0
  443. package/src/home/icons/artwork/design-layout-motion-dark.webp +0 -0
  444. package/src/home/icons/artwork/design-layout-motion-light.webp +0 -0
  445. package/src/home/icons/artwork/design-p3-gamut-dark.webp +0 -0
  446. package/src/home/icons/artwork/design-p3-gamut-light.webp +0 -0
  447. package/src/home/icons/artwork/design-theme-modes-dark.webp +0 -0
  448. package/src/home/icons/artwork/design-theme-modes-light.webp +0 -0
  449. package/src/home/icons/artwork/design-theme-tokens-dark.webp +0 -0
  450. package/src/home/icons/artwork/design-theme-tokens-light.webp +0 -0
  451. package/src/home/icons/artwork/editor-color-tools-dark.webp +0 -0
  452. package/src/home/icons/artwork/editor-color-tools-light.webp +0 -0
  453. package/src/home/icons/artwork/editor-focused-highlighting-dark.webp +0 -0
  454. package/src/home/icons/artwork/editor-focused-highlighting-light.webp +0 -0
  455. package/src/home/icons/artwork/editor-hover-inspection-dark.webp +0 -0
  456. package/src/home/icons/artwork/editor-hover-inspection-light.webp +0 -0
  457. package/src/home/icons/artwork/editor-manifest-completions-dark.webp +0 -0
  458. package/src/home/icons/artwork/editor-manifest-completions-light.webp +0 -0
  459. package/src/home/icons/artwork/lint-class-order-dark.webp +0 -0
  460. package/src/home/icons/artwork/lint-class-order-light.webp +0 -0
  461. package/src/home/icons/artwork/lint-conflicting-classes-dark.webp +0 -0
  462. package/src/home/icons/artwork/lint-conflicting-classes-light.webp +0 -0
  463. package/src/home/icons/artwork/lint-fix-previews-dark.webp +0 -0
  464. package/src/home/icons/artwork/lint-fix-previews-light.webp +0 -0
  465. package/src/home/icons/artwork/lint-invalid-classes-dark.webp +0 -0
  466. package/src/home/icons/artwork/lint-invalid-classes-light.webp +0 -0
  467. package/src/home/icons/artwork/lint-strict-vocabulary-dark.webp +0 -0
  468. package/src/home/icons/artwork/lint-strict-vocabulary-light.webp +0 -0
  469. package/src/home/icons/artwork/lint-theme-tokens-dark.webp +0 -0
  470. package/src/home/icons/artwork/lint-theme-tokens-light.webp +0 -0
  471. package/src/home/icons/artwork/mcp-apply-preview-dark.webp +0 -0
  472. package/src/home/icons/artwork/mcp-apply-preview-light.webp +0 -0
  473. package/src/home/icons/artwork/mcp-css-compare-dark.webp +0 -0
  474. package/src/home/icons/artwork/mcp-css-compare-light.webp +0 -0
  475. package/src/home/icons/artwork/mcp-inspect-class-dark.webp +0 -0
  476. package/src/home/icons/artwork/mcp-inspect-class-light.webp +0 -0
  477. package/src/home/icons/artwork/mcp-lint-project-dark.webp +0 -0
  478. package/src/home/icons/artwork/mcp-lint-project-light.webp +0 -0
  479. package/src/home/icons/artwork/mcp-manifest-query-dark.webp +0 -0
  480. package/src/home/icons/artwork/mcp-manifest-query-light.webp +0 -0
  481. package/src/home/icons/artwork/mcp-preview-fixes-dark.webp +0 -0
  482. package/src/home/icons/artwork/mcp-preview-fixes-light.webp +0 -0
  483. package/src/home/icons/artwork/mcp-render-css-dark.webp +0 -0
  484. package/src/home/icons/artwork/mcp-render-css-light.webp +0 -0
  485. package/src/home/icons/artwork/mcp-scan-project-dark.webp +0 -0
  486. package/src/home/icons/artwork/mcp-scan-project-light.webp +0 -0
  487. package/src/home/icons/artwork/mcp-trace-class-dark.webp +0 -0
  488. package/src/home/icons/artwork/mcp-trace-class-light.webp +0 -0
  489. package/src/home/icons/artwork/render-progressive-dark.webp +0 -0
  490. package/src/home/icons/artwork/render-progressive-light.webp +0 -0
  491. package/src/home/icons/artwork/render-runtime-dark.webp +0 -0
  492. package/src/home/icons/artwork/render-runtime-light.webp +0 -0
  493. package/src/home/icons/artwork/render-static-dark.webp +0 -0
  494. package/src/home/icons/artwork/render-static-light.webp +0 -0
  495. package/src/home/icons/artwork/section-ai-agents-dark.webp +0 -0
  496. package/src/home/icons/artwork/section-ai-agents-light.webp +0 -0
  497. package/src/home/icons/artwork/section-css-size-dark.webp +0 -0
  498. package/src/home/icons/artwork/section-css-size-light.webp +0 -0
  499. package/src/home/icons/artwork/section-design-system-dark.webp +0 -0
  500. package/src/home/icons/artwork/section-design-system-light.webp +0 -0
  501. package/src/home/icons/artwork/section-editor-dark.webp +0 -0
  502. package/src/home/icons/artwork/section-editor-light.webp +0 -0
  503. package/src/home/icons/artwork/section-lint-dark.webp +0 -0
  504. package/src/home/icons/artwork/section-lint-light.webp +0 -0
  505. package/src/home/icons/artwork/section-rendering-dark.webp +0 -0
  506. package/src/home/icons/artwork/section-rendering-light.webp +0 -0
  507. package/src/home/icons/artwork/section-workflow-dark.webp +0 -0
  508. package/src/home/icons/artwork/section-workflow-light.webp +0 -0
  509. package/src/home/icons/artwork/source.json +303 -0
  510. package/src/home/icons/artwork/workflow-integrations-dark.webp +0 -0
  511. package/src/home/icons/artwork/workflow-integrations-light.webp +0 -0
  512. package/src/home/icons/artwork/workflow-monorepo-dark.webp +0 -0
  513. package/src/home/icons/artwork/workflow-monorepo-light.webp +0 -0
  514. package/src/home/icons/artwork/workflow-route-styles-dark.webp +0 -0
  515. package/src/home/icons/artwork/workflow-route-styles-light.webp +0 -0
  516. package/src/home/icons/artwork/workflow-trace-change-dark.webp +0 -0
  517. package/src/home/icons/artwork/workflow-trace-change-light.webp +0 -0
  518. package/src/home/icons/artwork.css +4 -0
  519. package/src/home/icons/artwork.ts +131 -0
  520. package/src/home/icons/catalog.ts +381 -0
  521. package/src/home/icons/design-cascade-layers.svg +32 -0
  522. package/src/home/icons/design-layout-motion.svg +16 -0
  523. package/src/home/icons/design-p3-gamut.svg +12 -0
  524. package/src/home/icons/design-theme-modes.svg +12 -0
  525. package/src/home/icons/design-theme-tokens.svg +20 -0
  526. package/src/home/icons/editor-color-tools.svg +18 -0
  527. package/src/home/icons/editor-focused-highlighting.svg +15 -0
  528. package/src/home/icons/editor-hover-inspection.svg +19 -0
  529. package/src/home/icons/editor-manifest-completions.svg +24 -0
  530. package/src/home/icons/lint-class-order-compact.svg +15 -0
  531. package/src/home/icons/lint-class-order.svg +28 -0
  532. package/src/home/icons/lint-conflicting-classes-compact.svg +11 -0
  533. package/src/home/icons/lint-conflicting-classes.svg +24 -0
  534. package/src/home/icons/lint-fix-previews-compact.svg +9 -0
  535. package/src/home/icons/lint-fix-previews.svg +19 -0
  536. package/src/home/icons/lint-invalid-classes-compact.svg +7 -0
  537. package/src/home/icons/lint-invalid-classes.svg +17 -0
  538. package/src/home/icons/lint-strict-vocabulary-compact.svg +8 -0
  539. package/src/home/icons/lint-strict-vocabulary.svg +16 -0
  540. package/src/home/icons/lint-theme-tokens-compact.svg +7 -0
  541. package/src/home/icons/lint-theme-tokens.svg +14 -0
  542. package/src/home/icons/mcp-apply-preview-compact.svg +9 -0
  543. package/src/home/icons/mcp-apply-preview.svg +18 -0
  544. package/src/home/icons/mcp-css-compare-compact.svg +9 -0
  545. package/src/home/icons/mcp-css-compare.svg +20 -0
  546. package/src/home/icons/mcp-inspect-class-compact.svg +9 -0
  547. package/src/home/icons/mcp-inspect-class.svg +18 -0
  548. package/src/home/icons/mcp-lint-project-compact.svg +14 -0
  549. package/src/home/icons/mcp-lint-project.svg +30 -0
  550. package/src/home/icons/mcp-manifest-query-compact.svg +14 -0
  551. package/src/home/icons/mcp-manifest-query.svg +27 -0
  552. package/src/home/icons/mcp-preview-fixes-compact.svg +9 -0
  553. package/src/home/icons/mcp-preview-fixes.svg +15 -0
  554. package/src/home/icons/mcp-render-css-compact.svg +13 -0
  555. package/src/home/icons/mcp-render-css.svg +30 -0
  556. package/src/home/icons/mcp-scan-project-compact.svg +7 -0
  557. package/src/home/icons/mcp-scan-project.svg +13 -0
  558. package/src/home/icons/mcp-trace-class-compact.svg +11 -0
  559. package/src/home/icons/mcp-trace-class.svg +24 -0
  560. package/src/home/icons/render-progressive.svg +17 -0
  561. package/src/home/icons/render-runtime.svg +23 -0
  562. package/src/home/icons/render-static.svg +29 -0
  563. package/src/home/icons/section-ai-agents.svg +24 -0
  564. package/src/home/icons/section-css-size.svg +13 -0
  565. package/src/home/icons/section-design-system.svg +24 -0
  566. package/src/home/icons/section-editor.svg +14 -0
  567. package/src/home/icons/section-lint.svg +14 -0
  568. package/src/home/icons/section-rendering.svg +30 -0
  569. package/src/home/icons/section-workflow.svg +22 -0
  570. package/src/home/icons/workflow-integrations.svg +15 -0
  571. package/src/home/icons/workflow-monorepo.svg +27 -0
  572. package/src/home/icons/workflow-route-styles.svg +24 -0
  573. package/src/home/icons/workflow-trace-change.svg +21 -0
  574. package/src/layouts/Document.astro +71 -0
  575. package/src/public/brand/v2/logo/mark/master-mark-small-on-dark.svg +1 -0
  576. package/src/public/brand/v2/logo/master-css/master-css-horizontal-on-dark.svg +1 -0
  577. package/src/public/brand/v2/logo/master-css/master-css-horizontal-on-light.svg +1 -0
  578. package/src/public/demo/border-grid.svg +7 -0
  579. package/src/public/demo/landscape.svg +1 -0
  580. package/src/public/demo/marker.svg +1 -0
  581. package/src/public/demo/mask.svg +1 -0
  582. package/src/public/fonts/Geist-Medium.ttf +0 -0
  583. package/src/public/fonts/Geist-Regular.ttf +0 -0
  584. package/src/public/fonts/GeistVariable.woff2 +0 -0
  585. package/src/public/fonts/IBMPlexMono-Bold.woff2 +0 -0
  586. package/src/public/fonts/IBMPlexMono-Medium.woff2 +0 -0
  587. package/src/public/fonts/IBMPlexMono-Regular.woff2 +0 -0
  588. package/src/public/fonts/IBMPlexMono-SemiBold.woff2 +0 -0
  589. package/src/public/fonts/index.css +40 -0
  590. package/src/public/icons/csharp.svg +1 -0
  591. package/src/public/icons/css.svg +1 -0
  592. package/src/public/icons/eslint.svg +1 -0
  593. package/src/public/icons/folder.svg +12 -0
  594. package/src/public/icons/html.svg +1 -0
  595. package/src/public/icons/php.svg +1 -0
  596. package/src/public/icons/sass.svg +1 -0
  597. package/src/public/icons/storybook.svg +1 -0
  598. package/src/public/icons/visualstudiocode.svg +41 -0
  599. package/src/public/images/authors/aron.jpg +0 -0
  600. package/src/public/images/authors/benseage.jpg +0 -0
  601. package/src/public/images/authors/joy.jpg +0 -0
  602. package/src/public/images/authors/lola.jpg +0 -0
  603. package/src/public/images/authors/miles.jpg +0 -0
  604. package/src/public/images/bootstrap.svg +23 -0
  605. package/src/public/images/build-tools/rsbuild.svg +1 -0
  606. package/src/public/images/build-tools/rspack.svg +1 -0
  607. package/src/public/images/build-tools/vite.svg +15 -0
  608. package/src/public/images/build-tools/webpack.svg +10 -0
  609. package/src/public/images/cdns/esm-sh.svg +1 -0
  610. package/src/public/images/chevron-left.svg +4 -0
  611. package/src/public/images/cover-bg.jpg +0 -0
  612. package/src/public/images/emotion.svg +1 -0
  613. package/src/public/images/frameworks/angular.svg +29 -0
  614. package/src/public/images/frameworks/astro.svg +4 -0
  615. package/src/public/images/frameworks/blazor.svg +22 -0
  616. package/src/public/images/frameworks/express.svg +1 -0
  617. package/src/public/images/frameworks/laravel.svg +8 -0
  618. package/src/public/images/frameworks/line-liff.svg +1 -0
  619. package/src/public/images/frameworks/lit.svg +1 -0
  620. package/src/public/images/frameworks/nextjs.svg +16 -0
  621. package/src/public/images/frameworks/nuxtjs.svg +3 -0
  622. package/src/public/images/frameworks/rails.svg +1 -0
  623. package/src/public/images/frameworks/react.svg +8 -0
  624. package/src/public/images/frameworks/remix.svg +5 -0
  625. package/src/public/images/frameworks/shopify.svg +1 -0
  626. package/src/public/images/frameworks/svelte.svg +6 -0
  627. package/src/public/images/frameworks/tanstack.svg +1 -0
  628. package/src/public/images/frameworks/vuejs.svg +11 -0
  629. package/src/public/images/frameworks/wordpress.svg +1 -0
  630. package/src/public/images/mui.svg +1 -0
  631. package/src/public/images/styled-components.svg +4 -0
  632. package/src/public/images/tailwindcss.svg +1 -0
  633. package/src/scripts/bundler-imports.ts +25 -0
  634. package/src/scripts/static-social.ts +333 -0
  635. package/src/scripts/write-if-changed.ts +26 -0
  636. package/src/sections/blog.astro +11 -0
  637. package/src/sections/design-system.astro +14 -0
  638. package/src/sections/document.astro +8 -0
  639. package/src/sections/examples.astro +6 -0
  640. package/src/sections/guide.astro +26 -0
  641. package/src/sections/home.astro +7 -0
  642. package/src/sections/page.astro +12 -0
  643. package/src/styles/base.css +57 -0
  644. package/src/styles/benchmarks.css +20 -0
  645. package/src/styles/blog-article.css +670 -0
  646. package/src/styles/blog-materials.css +399 -0
  647. package/src/styles/blog.css +568 -0
  648. package/src/styles/demo.css +30 -0
  649. package/src/styles/design-system.css +15 -0
  650. package/src/styles/docs-shell/code.css +61 -0
  651. package/src/styles/docs-shell/docs.css +79 -0
  652. package/src/styles/docs-shell/documentation-search.css +42 -0
  653. package/src/styles/docs-shell/footer.css +38 -0
  654. package/src/styles/docs-shell/header.css +69 -0
  655. package/src/styles/docs-shell/materials.css +25 -0
  656. package/src/styles/docs-shell/menu.css +19 -0
  657. package/src/styles/docs-shell/not-found.css +10 -0
  658. package/src/styles/docs-shell/page-content.css +37 -0
  659. package/src/styles/docs-shell/prose.css +89 -0
  660. package/src/styles/docs-shell/segments.css +13 -0
  661. package/src/styles/docs-shell/steps.css +39 -0
  662. package/src/styles/docs-shell/syntax-theme.css +18 -0
  663. package/src/styles/docs-shell/theme.css +68 -0
  664. package/src/styles/docs-shell/wrapper.css +10 -0
  665. package/src/styles/document-comparison.css +7 -0
  666. package/src/styles/documentation-illustration.css +34 -0
  667. package/src/styles/documentation-index.css +100 -0
  668. package/src/styles/documents.css +4 -0
  669. package/src/styles/documents.ts +2 -0
  670. package/src/styles/foundation.css +4 -0
  671. package/src/styles/globals.css +2 -0
  672. package/src/styles/interface.css +3 -0
  673. package/src/styles/interface.ts +2 -0
  674. package/src/styles/site.ts +2 -0
  675. package/src/styles/system/DESIGN.md +108 -0
  676. package/src/styles/system/buttons.css +51 -0
  677. package/src/styles/system/code.css +85 -0
  678. package/src/styles/system/controls.css +110 -0
  679. package/src/styles/system/data.css +134 -0
  680. package/src/styles/system/mixins.css +7 -0
  681. package/src/styles/system/prose.css +75 -0
  682. package/src/styles/system/shell.css +102 -0
  683. package/src/styles/system/specimens.css +98 -0
  684. package/src/styles/system/surfaces.css +104 -0
  685. package/src/styles/system/tokens.css +136 -0
  686. package/src/utils/cloudflare-image-loader.js +85 -0
  687. package/src/virtual.d.ts +36 -0
@@ -0,0 +1,79 @@
1
+ /*
2
+ * The documentation frame under the sticky header: a sticky sidebar, the article column and the page's contents rail.
3
+ * Chrome stays on the canvas; hairlines separate the rails.
4
+ *
5
+ * The article has two widths on one start edge. Running text keeps the reading measure (`--docs-text`); steps, tabs,
6
+ * the pager and framed surfaces span the wide column (`--docs-wide`), and framed surfaces hang past both of its
7
+ * edges by the prose bleed. Where the contents rail shows, a page with contents gives the rail the room the wide column
8
+ * would take, so its wide column is the text column. The article and the rail centre together: every page starts its
9
+ * column on the same edge.
10
+ */
11
+ @layer components {
12
+ .ui-docs, .ui-docs-main { --docs-header: calc(3.75rem + env(safe-area-inset-top)); --docs-gutter: max(1.25rem, env(safe-area-inset-left), env(safe-area-inset-right)); --docs-rail: 15.75rem;
13
+ --docs-text: 41rem; --docs-wide: calc(var(--docs-text) + var(--docs-rail)); }
14
+ @media (--sm) { .ui-docs, .ui-docs-main { --docs-gutter: 2.5rem; } }
15
+ /* Beside the sidebar the gutter opens from 40px to 80px as the window grows. */
16
+ @media (--md) { .ui-docs, .ui-docs-main { --docs-gutter: clamp(2.5rem, (100vw - 64rem) / 4 + 2.5rem, 5rem); } }
17
+ .ui-docs { display: flex; width: 100%; background: var(--ui-surface-canvas); }
18
+
19
+ .ui-docs .ui-sidebar {
20
+ position: sticky; top: var(--docs-header); flex: none; align-self: start; width: 17.25rem; height: calc(100dvh - var(--docs-header));
21
+ overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: var(--ui-line-divider) transparent;
22
+ box-shadow: inset -1px 0 0 var(--ui-line-hair);
23
+ }
24
+ /* The first group caption stands level with the page kicker and the contents caption. */
25
+ @media (--md) { .ui-docs .ui-sidebar { padding-top: calc(3.5rem - .5rem); } }
26
+ /* The rail clips its overflow, so focus rings inside it sit on the element's edge. */
27
+ .ui-docs .ui-sidebar .ui-nav-link:focus-visible { outline-offset: -2px; }
28
+ @media (width < 64rem) { .ui-docs .ui-sidebar { display: none; } }
29
+ .ui-sidebar .ui-nav-link { overflow-wrap: anywhere; }
30
+ .ui-sidebar .ui-nav-link > small { margin-left: .5em; color: var(--ui-text-muted); font-size: .75rem; font-weight: var(--ui-weight-regular); }
31
+ /* A disabled entry renders as a button. */
32
+ .ui-nav-link:is(button) { appearance: none; width: 100%; border: 0; background: none; color: var(--ui-text-disabled); font: inherit; font-size: var(--ui-text-small); text-align: start; cursor: not-allowed; }
33
+ @media (pointer: coarse) { .ui-nav-link { min-height: 2.75rem; } }
34
+
35
+ .ui-docs-main { container: docs-main / inline-size; display: flex; flex: 1; flex-direction: column; min-width: 0; }
36
+ .ui-docs-body { display: flex; justify-content: center; width: 100%; }
37
+ .ui-docs-article { flex: 0 1 auto; width: 100%; min-width: 0; max-width: calc(var(--docs-wide) + var(--docs-gutter) * 2); padding: var(--ui-space-xl) var(--docs-gutter) var(--ui-space-3xl); }
38
+ @media (--sm) { .ui-docs-article { padding-bottom: 5rem; } }
39
+ @media (--md) { .ui-docs-article { padding-top: 3.5rem; padding-bottom: 6rem; } }
40
+ /* Where the rail shows, a page with contents gives it the wide column's room. */
41
+ @media (width >= 80rem) { .ui-docs-article[data-aside] { max-width: calc(var(--docs-text) + var(--docs-gutter) * 2); } }
42
+
43
+ /* The page head (`ui-pagehead`): an integration's mark beside the title, about a title and a half tall so it never
44
+ squeezes the heading; on a phone it leads, smaller. */
45
+ .ui-pagehead-title { display: flex; align-items: center; gap: var(--ui-space-lg); }
46
+ .ui-pagehead-title > h1 { flex: 1; min-width: 0; overflow-wrap: anywhere; }
47
+ .ui-pagehead-title > h1:lang(zh) { letter-spacing: 0; }
48
+ .ui-pagehead-icon { display: grid; flex: none; place-content: center; width: 3.5rem; height: 3.5rem; }
49
+ @media (width < 37.5rem) { .ui-pagehead-title { flex-direction: column-reverse; align-items: start; gap: var(--ui-space-md); } .ui-pagehead-icon { width: 3rem; height: 3rem; } }
50
+ .ui-pagehead-unfinished { margin-left: .5em; font-size: .5em; vertical-align: top; }
51
+ a.ui-pagehead-kicker { display: inline-flex; align-items: center; gap: var(--ui-space-3xs); width: fit-content; text-decoration: none; transition: color var(--ui-duration-quick); }
52
+ a.ui-pagehead-kicker:hover { color: var(--ui-text-strong); }
53
+ a.ui-pagehead-kicker:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-xs); }
54
+ .ui-pagehead-kicker > svg { width: 12px; height: 12px; margin-left: -2px; stroke: currentColor; stroke-width: 2; }
55
+ /* Han text breaks between any two characters: break at spaces and punctuation, and balance the lines. */
56
+ .ui-pagehead > p:lang(zh) { text-wrap: balance; word-break: keep-all; overflow-wrap: anywhere; }
57
+ .ui-pagehead > .ui-callout { margin-top: var(--ui-space-xs); }
58
+ .ui-pagehead[data-align="center"] { justify-items: center; text-align: center; }
59
+
60
+ /* The pager: a lone next document keeps to the end column. */
61
+ .ui-pager > a[rel="next"]:only-child { grid-column: 2; }
62
+ .ui-pager > a { min-width: 0; overflow-wrap: anywhere; }
63
+
64
+ /* The contents rail stands still beside the article; a long list scrolls inside it. */
65
+ :is(.ui-docs-body > .ui-toc, .ui-docs-body > site-island > .ui-toc) {
66
+ position: sticky; top: var(--docs-header); display: flex; flex: none; flex-direction: column; align-self: start; width: var(--docs-rail); max-height: calc(100dvh - var(--docs-header));
67
+ padding: 3.5rem var(--ui-space-lg) var(--ui-space-xl) 0;
68
+ }
69
+ :is(.ui-docs-body > .ui-toc, .ui-docs-body > site-island > .ui-toc) > ol { flex: 0 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: none; }
70
+ @media (width < 80rem) { :is(.ui-docs-body > .ui-toc, .ui-docs-body > site-island > .ui-toc) { display: none; } }
71
+ @container docs-main (width < 48rem) { .ui-toc[data-rail] { display: none; } }
72
+
73
+ @media print {
74
+ .ui-docs .ui-sidebar, .ui-toc { display: none; }
75
+ .ui-docs-main, .ui-docs-body { display: block; max-width: none; }
76
+ .ui-docs-article { max-width: none; padding: 3.75rem 1.875rem; }
77
+ }
78
+
79
+ }
@@ -0,0 +1,42 @@
1
+ /*
2
+ * The documentation search (`ui-dialog` with `ui-dialog-search`, `ui-results` and `ui-dialog-foot`): a floating sheet
3
+ * near the top of the viewport whose results scroll between the field and the key hints; a full screen on phones.
4
+ */
5
+ @layer components {
6
+ html:has(.ui-dialog[data-variant="search"][open]) { overflow: hidden; scrollbar-gutter: stable; }
7
+ .ui-dialog[data-variant="search"] { flex-direction: column; width: min(42.5rem, calc(100% - 2rem)); max-height: min(72dvh, 42rem); margin: min(14dvh, 8rem) auto auto; container: search / inline-size; }
8
+ .ui-dialog[data-variant="search"][open] { display: flex; }
9
+ .ui-dialog[data-variant="search"] .ui-dialog-search { flex: none; }
10
+ .ui-dialog-search > svg { flex: none; color: var(--ui-text-muted); }
11
+ .ui-dialog-search input { appearance: none; padding: .5rem 0; }
12
+ .ui-dialog-search input::placeholder { color: var(--ui-text-muted); }
13
+ .ui-dialog-search input::-webkit-search-cancel-button { display: none; }
14
+ .ui-dialog-close > span:last-child { display: none; }
15
+ .ui-dialog-close > .ui-kbd { box-shadow: none; background: none; }
16
+ .ui-dialog[data-variant="search"] > .ui-dialog-body { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
17
+ .ui-dialog-status { margin: 0; padding: var(--ui-space-sm) var(--ui-space-md) 0; color: var(--ui-text-muted); @apply --ui-label-type; }
18
+ .ui-dialog-note { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-xs); padding: var(--ui-space-sm) var(--ui-space-md) var(--ui-space-lg); }
19
+ .ui-dialog-note > p { width: 100%; margin: 0; color: var(--ui-text-body); font-size: .8125rem; line-height: 1.6; }
20
+ .ui-dialog-note > .ui-button code { font: var(--ui-weight-regular) .75rem/1 var(--font-family-mono); }
21
+ .ui-dialog-note > .ui-button svg { width: 14px; height: 14px; color: var(--ui-text-muted); }
22
+ .ui-dialog-note[data-align="center"] { flex-direction: column; padding-block: var(--ui-space-xl); color: var(--ui-text-muted); text-align: center; }
23
+ .ui-dialog-note[data-align="center"] > b { color: var(--ui-text-strong); font-size: var(--ui-text-small); font-weight: var(--ui-weight-strong); }
24
+ .ui-results:empty { display: none; }
25
+ .ui-results > li > a { scroll-margin-block: var(--ui-inset); }
26
+ .ui-results > li > a > b { overflow-wrap: anywhere; }
27
+ .ui-results > li > a > span { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; color: var(--ui-text-body); font-size: .8125rem; line-height: 1.55; overflow-wrap: anywhere; }
28
+ .ui-results mark { background: none; color: var(--ui-text-strong); text-decoration: underline; text-decoration-color: var(--ui-line-mark); text-underline-offset: .2em; }
29
+ .ui-results > li > a:focus-visible { @apply --ui-focus-ring; outline-offset: -2px; }
30
+ .ui-dialog-foot { flex: none; }
31
+ .ui-dialog-foot > span:last-child { margin-left: auto; }
32
+ .ui-dialog-foot .ui-kbd svg { width: 12px; height: 12px; }
33
+ @media (width < 48rem) {
34
+ .ui-dialog[data-variant="search"] { width: 100%; max-width: 100%; height: 100dvh; max-height: 100dvh; margin: 0; border-radius: 0; }
35
+ .ui-dialog-close > .ui-kbd, .ui-dialog-foot { display: none; }
36
+ .ui-dialog-close > span:last-child { display: inline; }
37
+ }
38
+ @media (forced-colors: active) {
39
+ .ui-dialog[data-variant="search"] { border: 1px solid CanvasText; }
40
+ .ui-results > li > a[aria-selected="true"] { outline: 2px solid Highlight; outline-offset: -2px; }
41
+ }
42
+ }
@@ -0,0 +1,38 @@
1
+ /*
2
+ * The site footer: link groups under eyebrow titles on the canvas (the license and trademark policy among them), then
3
+ * one quiet base row in 12px tracked type — the notice at the start, the theme and language preferences at the end. In
4
+ * the documentation it takes the article's wide column, from the text's start edge.
5
+ */
6
+ @layer components {
7
+ .ui-footer { container-type: inline-size; display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--ui-space-3xl); padding: 4rem max(1.25rem, env(safe-area-inset-right)) max(var(--ui-space-2xl), env(safe-area-inset-bottom)) max(1.25rem, env(safe-area-inset-left)); box-shadow: inset 0 1px 0 var(--ui-line-hair); color: var(--ui-text-muted); font-size: var(--ui-text-small); }
8
+ @media (--sm) { .ui-footer { padding-inline: 2.5rem; } }
9
+ .ui-footer > * { width: 100%; max-width: 72rem; margin-inline: auto; }
10
+ /* The footer is an island inside the main column, so these reach it as a descendant. */
11
+ .ui-docs-main .ui-footer { padding-inline: var(--docs-gutter); }
12
+ .ui-docs-main .ui-footer > * { max-width: var(--docs-wide); }
13
+
14
+ /* Groups keep a column of their own width from the start edge; a wide footer leaves the rest to the canvas. */
15
+ .ui-footer-nav { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 11rem), 1fr)); gap: var(--ui-space-2xl) var(--ui-space-xl); }
16
+ /* Two columns only while each can hold a link; enlarged text falls back to the intrinsic single column. */
17
+ @container (18rem <= width < 30rem) { .ui-footer-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
18
+ .ui-footer-nav > * { min-width: 0; }
19
+ .ui-footer-group > h2 { margin: 0 0 var(--ui-space-md); color: var(--ui-text-strong); @apply --ui-eyebrow-type; }
20
+ .ui-footer-group > ul { display: grid; gap: var(--ui-space-sm); margin: 0; padding: 0; list-style: none; }
21
+ .ui-footer-group li { min-width: 0; line-height: 1.25rem; }
22
+ .ui-footer a { color: var(--ui-text-body); text-decoration: none; transition: color var(--ui-duration-quick); }
23
+ .ui-footer a:hover { color: var(--ui-text-strong); }
24
+ .ui-footer :is(a, button):focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-xs); }
25
+ .ui-footer-group button { padding: 0; border: 0; background: none; color: var(--ui-text-disabled); font: inherit; cursor: not-allowed; }
26
+
27
+ /* Every word in the base row is one size, 12px, tracked open so the small type keeps its air. */
28
+ .ui-footer-legal { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-xs) var(--ui-space-lg); padding-top: var(--ui-space-lg); box-shadow: inset 0 1px 0 var(--ui-line-hair); font-size: var(--ui-text-label); line-height: 1.25rem; letter-spacing: .04em; }
29
+ .ui-footer-notice { margin: 0 auto 0 0; }
30
+ .ui-footer-preference { position: relative; display: inline-flex; color: var(--ui-text-muted); align-items: center; gap: var(--ui-space-3xs); border-radius: var(--ui-radius-xs); cursor: pointer; transition: color var(--ui-duration-quick); }
31
+ .ui-footer-preference:hover { color: var(--ui-text-strong); }
32
+ .ui-footer-preference > svg { flex: none; width: 12px; height: 12px; }
33
+ /* The leading icon names the preference in place of a label; the value follows it. */
34
+ .ui-footer-preference > svg:first-child { width: 14px; height: 14px; margin-right: 2px; }
35
+ @media (width < 64rem) { .ui-footer-preference { display: none; } }
36
+ @media (pointer: coarse) { .ui-footer-group a { display: inline-flex; align-items: center; min-height: 2.75rem; } .ui-footer-group > ul { gap: 0; } .ui-footer-group > h2 { margin-bottom: var(--ui-space-xs); } }
37
+ @media print { .ui-footer { display: none; } }
38
+ }
@@ -0,0 +1,69 @@
1
+ /*
2
+ * The site header (`ui-header`, styles/system/shell.css) placed for the site: it sticks above documentation pages and
3
+ * overlays the homepage and blog as a stickable header that slides away while reading down (`data-tucked`) and is
4
+ * transparent at the top of the page (`data-background="transparent"`).
5
+ */
6
+ @layer components {
7
+ .ui-header { padding-top: env(safe-area-inset-top); padding-inline: max(var(--ui-space-xl), env(safe-area-inset-left)) max(var(--ui-space-xl), env(safe-area-inset-right)); height: calc(3.75rem + env(safe-area-inset-top)); box-sizing: border-box; }
8
+ .ui-header[data-variant="stickable"] { position: fixed; inset: 0 0 auto; width: 100%; transition: translate var(--ui-duration-base) var(--ui-ease), background-color var(--ui-duration-base), box-shadow var(--ui-duration-base); }
9
+ .ui-header[data-tucked] { translate: 0 -100%; }
10
+ /* A focused control stays on screen after the header has tucked away, revealed at once. */
11
+ .ui-header:focus-within { translate: none; transition-duration: 0s; }
12
+ .ui-header[data-background="transparent"] { background: transparent; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
13
+ /* Without scripts the header never leaves its transparent top state, so it scrolls away instead of covering content. */
14
+ @media (scripting: none) { .ui-header[data-background="transparent"] { position: absolute; } }
15
+ @media (prefers-reduced-motion: reduce) { .ui-header, .ui-header[data-variant="stickable"] { transition: none; } }
16
+ @media print { .ui-header { display: none; } }
17
+
18
+ .ui-header-brand { display: inline-flex; align-items: center; min-height: 2.75rem; border-radius: var(--ui-radius-sm); }
19
+ .ui-header-brand:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
20
+ /* The version chip opens the native version list laid over it. */
21
+ .ui-header .ui-version { position: relative; cursor: pointer; }
22
+ .ui-header .ui-version > svg { width: 12px; height: 12px; color: var(--ui-text-muted); }
23
+ .ui-header .ui-version:hover { color: var(--ui-text-strong); }
24
+ .ui-header-nav > a > .ui-badge { margin-left: var(--ui-space-2xs); }
25
+ .ui-header-end > .ui-button[data-disabled] { color: var(--ui-text-disabled); pointer-events: none; }
26
+ /* The community and preference icons are words in the bar, not buttons: ink under the pointer, no material. */
27
+ .ui-header-end > .ui-button[data-shape="icon"] { width: 2.25rem; min-height: 2.25rem; }
28
+ .ui-header-end > .ui-button > svg, .ui-header-menu > svg, .ui-dialog-bar > .ui-button > svg { width: 1.125rem; height: 1.125rem; }
29
+ .ui-header-end > .ui-button[data-variant="quiet"]:where(:hover):not(:disabled) { background: transparent; box-shadow: none; }
30
+
31
+ /* Icon-only controls name themselves with an ink tooltip under the pointer or keyboard focus. */
32
+ .ui-header-end > :is(a, button, label) { position: relative; }
33
+ .ui-header-end > * > .ui-tooltip { top: calc(100% + 8px); left: 50%; translate: -50% 0; opacity: 0; visibility: hidden; transition: opacity var(--ui-duration-quick), visibility 0s linear var(--ui-duration-quick); }
34
+ .ui-header-end > :is(:hover, :focus-visible, :has(:focus-visible)) > .ui-tooltip { opacity: 1; visibility: visible; transition-delay: 400ms, 400ms; }
35
+ .ui-header-end > :last-child > .ui-tooltip { left: auto; right: 0; translate: none; }
36
+ .ui-header-end > :last-child > .ui-tooltip::before { left: auto; right: calc(1rem - 4px); translate: none; }
37
+ @media (hover: none) { .ui-header-end > * > .ui-tooltip { display: none; } }
38
+
39
+ /* Search: a quiet hairline pill that leads the end group — the glass and its shortcut, ink under the pointer. */
40
+ /* The round end takes a little more room than the glass's side; the gap to the first icon matches the icons' own spacing. */
41
+ .ui-header-search { appearance: none; display: inline-flex; align-items: center; gap: .4375rem; height: 1.875rem; margin-right: var(--ui-space-xs); padding: 0 .8125rem 0 .6875rem; border: 0; border-radius: var(--ui-radius-pill);
42
+ background: transparent; color: var(--ui-text-muted); box-shadow: inset 0 0 0 1px var(--ui-line-contour); font: var(--ui-weight-regular) .75rem/1 var(--font-family-sans); cursor: pointer;
43
+ transition: color var(--ui-duration-quick), box-shadow var(--ui-duration-quick), background-color var(--ui-duration-quick); }
44
+ .ui-header-search:hover { color: var(--ui-text-strong); background: var(--ui-surface-chip); box-shadow: inset 0 0 0 1px var(--ui-line-strong); }
45
+ .ui-header-search:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; }
46
+ .ui-header-search > svg { flex: none; width: 1rem; height: 1rem; }
47
+ .ui-header-search > .ui-kbd { min-width: 0; height: auto; padding: 0; background: none; color: inherit; box-shadow: none; font: var(--ui-weight-regular) .6875rem/1 var(--font-family-sans); letter-spacing: .04em; }
48
+
49
+ /* The compact header: the menu at the start, the brand centred, search at the end. */
50
+ .ui-header-menu { display: none; }
51
+ @media (width < 64rem) {
52
+ .ui-header { gap: var(--ui-space-xs); padding-inline: max(var(--ui-space-xs), env(safe-area-inset-left)) max(var(--ui-space-xs), env(safe-area-inset-right)); }
53
+ .ui-header-menu { display: inline-flex; }
54
+ .ui-header-brand { margin-inline: auto; }
55
+ .ui-header > :is(.ui-version, .ui-header-nav), .ui-header-end > :not(.ui-header-search) { display: none; }
56
+ .ui-header-end { margin-left: 0; }
57
+ /* On a phone search is a plain glass in a full target. */
58
+ .ui-header-search { justify-content: center; width: 2.375rem; height: 2.375rem; margin: 0; padding: 0; border-radius: var(--ui-radius-md); box-shadow: none; }
59
+ .ui-header-search:hover { background: transparent; box-shadow: none; }
60
+ .ui-header-search > svg { width: 1.125rem; height: 1.125rem; }
61
+ .ui-header-search > .ui-kbd { display: none; }
62
+ /* The menu and search buttons keep the brand centred between equal ends. */
63
+ .ui-header:not(:has(.ui-header-search)) .ui-header-end { width: 2.375rem; }
64
+ }
65
+ @media (width >= 64rem) {
66
+ /* The homepage's wide header leaves search out. */
67
+ .ui-header-search[data-compact] { display: none; }
68
+ }
69
+ }
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Site utility tokens. The design system lives in styles/system (--ui-* roles, ui-* components);
3
+ * these @theme names only expose that ladder to Master CSS utilities used in content and on the homepage
4
+ * (bg-surface-canvas, b-line-contour, shadow-raised …). Values always resolve to the system roles.
5
+ */
6
+ @theme {
7
+ --color-surface-canvas: var(--ui-surface-canvas);
8
+ --color-surface-shell: var(--ui-surface-tray);
9
+ --color-surface-ink: var(--ui-surface-ink);
10
+ --color-text-subtle: var(--ui-text-muted);
11
+ --color-line-contour: var(--ui-line-contour);
12
+ /* Media uses a quiet 10% black/white perimeter in the active theme. */
13
+ --opacity-media-ring: 0.1;
14
+ --color-line-media: light-dark(color(srgb 0 0 0 / var(--opacity-media-ring)), color(srgb 1 1 1 / var(--opacity-media-ring)));
15
+ }
16
+
17
+ @theme {
18
+ --shadow-edge: inset 0 1px 0 var(--ui-highlight);
19
+ --shadow-contact: 0 1px 1px -.5px var(--ui-shade-1), 0 2px 2px -1px var(--ui-shade-2), 0 4px 4px -2px var(--ui-shade-3);
20
+ --shadow-raised: var(--ui-elevation-rise-1);
21
+ --shadow-floating-contact: 0 1px 1px -.5px var(--ui-shade-1), 0 3px 3px -1.5px var(--ui-shade-2), 0 6px 6px -3px var(--ui-shade-3), 0 12px 12px -6px var(--ui-shade-4), 0 24px 24px -12px var(--ui-shade-4), 0 48px 48px -24px var(--ui-shade-5);
22
+ --shadow-floating: var(--ui-elevation-rise-3);
23
+ --shadow-pressed-contact: inset 0 1px 2px light-dark(oklch(18% 0 none / .07), oklch(0% 0 none / .5));
24
+ --shadow-pressed: var(--ui-elevation-sink);
25
+ }
@@ -0,0 +1,19 @@
1
+ /*
2
+ * The compact header's menu: a `ui-dialog` that fills the viewport below 64rem (`data-variant="sheet"`), with a bar
3
+ * (close, brand) and a reading-width body of navigation groups, the section's chapters and the preferences.
4
+ */
5
+ @layer components {
6
+ html:has(.ui-dialog[data-variant="sheet"][open]) { overflow: hidden; scrollbar-gutter: stable; }
7
+ .ui-dialog[data-variant="sheet"] { position: fixed; inset: 0; width: 100%; max-width: 100%; height: 100dvh; max-height: 100dvh; margin: 0; overflow-y: auto; overscroll-behavior: contain; border-radius: 0; background: var(--ui-surface-canvas); box-shadow: none; }
8
+ .ui-dialog[data-variant="sheet"]::backdrop { background: transparent; }
9
+ .ui-dialog-bar { position: sticky; top: 0; z-index: 1; display: grid; grid-template-columns: 2.375rem minmax(0, 1fr) 2.375rem; align-items: center; height: calc(3.75rem + env(safe-area-inset-top)); padding: env(safe-area-inset-top) max(var(--ui-space-xs), env(safe-area-inset-right)) 0 max(var(--ui-space-xs), env(safe-area-inset-left));
10
+ background: color-mix(in oklab, var(--ui-surface-canvas) 82%, transparent); -webkit-backdrop-filter: blur(16px) saturate(1.3); backdrop-filter: blur(16px) saturate(1.3); box-shadow: inset 0 -1px 0 var(--ui-line-hair); }
11
+ .ui-dialog-bar > .ui-header-brand { justify-self: center; }
12
+ .ui-dialog[data-variant="sheet"] > .ui-dialog-body { display: grid; gap: var(--ui-space-xl); max-width: 36rem; margin-inline: auto; padding: var(--ui-space-lg) max(var(--ui-space-md), env(safe-area-inset-right)) max(var(--ui-space-2xl), env(safe-area-inset-bottom)) max(var(--ui-space-md), env(safe-area-inset-left)); }
13
+ .ui-dialog[data-variant="sheet"] .ui-nav-link { gap: .625rem; min-height: 2.75rem; }
14
+ .ui-dialog[data-variant="sheet"] .ui-nav-link > svg { flex: none; color: var(--ui-text-muted); }
15
+ .ui-dialog[data-variant="sheet"] .ui-nav-link > svg:last-child:not(:first-child) { margin-left: auto; }
16
+ .ui-dialog[data-variant="sheet"] .ui-disclosure > .ui-sidebar { padding: 0 0 var(--ui-space-md); }
17
+ .ui-dialog-fields { display: grid; gap: var(--ui-space-md); }
18
+ .ui-dialog-fields > h4 { margin: 0; padding-left: .625rem; color: var(--ui-text-muted); @apply --ui-label-type; }
19
+ }
@@ -0,0 +1,10 @@
1
+ /* The missing page: a centred page head, the search field and a way back to the Guide. */
2
+ @layer components {
3
+ .ui-not-found { display: grid; grid-template-columns: minmax(0, 1fr); place-content: center; justify-items: center; gap: var(--ui-space-md); min-height: calc(100dvh - 3.75rem); max-width: 44rem; margin-inline: auto; padding: var(--ui-space-2xl) clamp(20px, 4vw, 40px); overflow-wrap: anywhere; }
4
+ .ui-not-found > .ui-pagehead { justify-items: center; margin-bottom: var(--ui-space-sm); text-align: center; }
5
+ /* Centred short copy balances its lines, so a phrase never ends on one stranded character. */
6
+ .ui-not-found :is(h1, p) { text-wrap: balance; overflow-wrap: anywhere; }
7
+ .ui-not-found:lang(zh) :is(h1, p) { word-break: keep-all; }
8
+ /* The trigger arrives inside an island, so it is reached as a descendant. */
9
+ .ui-not-found .ui-search-trigger { width: min(100%, 20rem); }
10
+ }
@@ -0,0 +1,37 @@
1
+ /*
2
+ * The page's contents (`ui-toc`, styles/system/shell.css) as the site uses them: the documentation rail (docs.css
3
+ * places it), the narrow-screen disclosure under the page head, and a blog post's margin contents. Sections nest
4
+ * their subsections; the entry being read carries `aria-current="location"`.
5
+ */
6
+ @layer components {
7
+ .ui-toc a { overflow-wrap: anywhere; text-wrap: pretty; }
8
+ .ui-toc a code { font-family: var(--font-family-mono); font-size: .9em; }
9
+ /* A section whose subsection is being read keeps a step of ink. */
10
+ .ui-toc li:has(> ol [aria-current="location"]) > a { color: var(--ui-text-body); }
11
+ /* A long list folds: every section stays listed, only the one being read opens its subsections. */
12
+ .ui-toc ol[data-fold] > li:not(:has([aria-current="location"])) > ol { display: none; }
13
+ .ui-toc-actions > a:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-xs); }
14
+ .ui-toc-actions > a { text-decoration: none; transition: color var(--ui-duration-quick); }
15
+ .ui-toc-actions > a:hover { color: var(--ui-text-strong); }
16
+ /* The rail scrolls and clips, so its rings sit inside the entry. */
17
+ .ui-toc[data-rail] a:focus-visible { outline-offset: -2px; }
18
+ @media (pointer: coarse) {
19
+ .ui-toc { --toc-row-padding: .8125rem; }
20
+ .ui-toc a { min-height: 2.75rem; }
21
+ .ui-toc-actions > a { min-height: 2.75rem; }
22
+ }
23
+ @media (forced-colors: active) { .ui-toc a[aria-current="location"] { text-decoration: underline; } }
24
+ @media print { .ui-toc { display: none; } }
25
+
26
+ /* Narrow screens: the same contents, closed between hairlines under the page head. */
27
+ [data-contents-disclosure] { margin-block: 0 var(--ui-space-xl); }
28
+ [data-contents-disclosure] > .ui-toc { padding: 0 0 var(--ui-space-md); }
29
+ @media (width >= 80rem) { [data-contents-disclosure] { display: none; } }
30
+ /* Hidden beside the rail, the disclosure no longer closes the text before the next section, so that heading takes its own hairline again. The page head
31
+ already parts the page from its first section, and the blog switches its disclosure by its own width. */
32
+ @media (width >= 80rem) {
33
+ .ui-docs-article > [data-contents-disclosure]:not(:first-child, .ui-pagehead + *) + h2, .ui-docs-article > [data-contents-disclosure]:not(:first-child, .ui-pagehead + *) + a[id]:empty + h2,
34
+ .ui-docs-article > [data-contents-disclosure]:not(:first-child, .ui-pagehead + *) + hr + h2, .ui-docs-article > [data-contents-disclosure]:not(:first-child, .ui-pagehead + *) + hr + a[id]:empty + h2 { --section-rule: block; }
35
+ }
36
+ @media print { [data-contents-disclosure] { display: none; } }
37
+ }
@@ -0,0 +1,89 @@
1
+ /*
2
+ * The reading column (`ui-prose`, styles/system/prose.css) as the site's documents use it.
3
+ *
4
+ * Wide surfaces bleed past the text column by `--prose-bleed`, so prose keeps its measure while code, examples,
5
+ * tables, figures and media gain room. They bleed as direct children or through up to two class-less wrappers
6
+ * (data-only divs, sections and island hosts); demos bleed the same way from their own styles. The rest adds what
7
+ * Markdown and the site's content bring to the flow: media, Han typesetting, link marks and paper.
8
+ */
9
+ @layer components {
10
+ .ui-prose { --prose-bleed: 0rem; --bleed: var(--prose-bleed); }
11
+ @media (width >= 52rem) { .ui-prose { --prose-bleed: 2rem; } }
12
+ @media print { .ui-prose { --prose-bleed: 0rem; } }
13
+ /* A documentation article sets running text on its reading measure; everything else takes the wide column. */
14
+ .ui-prose.ui-docs-article { --measure: var(--docs-text); }
15
+ /* A surface hangs by up to 2rem but always leaves a 1rem gutter to the window. */
16
+ @media (width >= 52rem) { .ui-prose.ui-docs-article { --prose-bleed: min(2rem, var(--docs-gutter) - 1rem); } }
17
+
18
+ :is(.ui-tray, .ui-code, .ui-table, .ui-params, .ui-prompt, .ui-tree, figure, img, video, iframe, picture, p:has(> img:only-child, > video:only-child, > picture:only-child, > a:only-child > img:only-child)):is(
19
+ .ui-prose > :is(div, section, site-island):not([class]) > *,
20
+ .ui-prose > :is(div, section, site-island):not([class]) > :is(div, site-island):not([class]) > *
21
+ ),
22
+ :is(figure, img, video, iframe, picture, p:has(> img:only-child, > video:only-child, > picture:only-child, > a:only-child > img:only-child)):is(.ui-prose > *) {
23
+ margin-inline: calc(var(--prose-bleed) * -1);
24
+ }
25
+ /* A component that wraps its surface in an unclassed element keeps the article's line of air around it, as a direct
26
+ child would (the margins collapse through the wrapper). */
27
+ :is(.ui-tray, .ui-code, .ui-table, .ui-params, .ui-prompt, .ui-tree):is(
28
+ .ui-prose > :is(div, section, site-island):not([class]) > *,
29
+ .ui-prose > :is(div, section, site-island):not([class]) > :is(div, site-island):not([class]) > *
30
+ ) { margin-block: var(--line); }
31
+ /* Document steps reach the hanging edge on the end side, so their code ends where every other surface ends. */
32
+ .ui-docs-article > .ui-steps[data-variant="document"] { margin-right: calc(var(--prose-bleed) * -1); }
33
+ /* A result shown after a step (a preview) hangs on both sides like any surface; the rail runs on into it. */
34
+ .ui-docs-article > .ui-steps[data-variant="document"] > :not(li) { margin: 0 0 0 calc(var(--prose-bleed) * -1); }
35
+ :is(img, video, iframe):is(.ui-prose > *, .ui-prose > :is(div, section, site-island):not([class]) > *) { width: calc(100% + var(--prose-bleed) * 2); max-width: none; }
36
+ /* A table its author wrapped in a scroll region bleeds as the region. */
37
+ .ui-prose > [role="region"]:has(> :is(.ui-table, table)) { margin: var(--ui-space-xl) calc(var(--prose-bleed) * -1); }
38
+ .ui-prose > [role="region"][tabindex]:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-xs); }
39
+
40
+ /* Media: whole pictures on the code panels' corner, with the quiet perimeter every image keeps — except an
41
+ illustration, which is a tray's stage and is told apart by its tone alone. */
42
+ .ui-prose :is(img, video):not(:where(.site-demo *, [data-demo-container] *)) { height: auto; }
43
+ .ui-prose :is(img, video):not(:where(.site-demo *, [data-demo-container] *, .document-illustration *, :focus-visible)) { outline: 1px solid var(--color-line-media); outline-offset: -1px; }
44
+ :is(figure, p, a, picture):is(.ui-prose > *) :is(img, video):not(:where(.site-demo *, [data-demo-container] *)), :is(img, video):is(.ui-prose > *) { display: block; width: 100%; max-width: none; border-radius: var(--ui-radius-xl); }
45
+ :is(a, picture):is(.ui-prose > *) { display: block; }
46
+
47
+ /* Running text */
48
+ .ui-prose > :is(p, ul, ol, h2, h3, h4) { overflow-wrap: anywhere; }
49
+ .ui-prose > :is(p, ul, ol) { text-wrap: pretty; }
50
+ .ui-prose :is(h4, a[id]:not([href])) { scroll-margin-top: 5rem; }
51
+ /* In-page links move focus to their heading; its ring stands clear of the text. */
52
+ .ui-prose > :is(h2, h3):focus-visible { @apply --ui-focus-ring; outline-offset: .25rem; border-radius: var(--ui-radius-xs); }
53
+ /* A single token (`data-token`, set by the inline code renderer) moves to the next line whole. */
54
+ .ui-prose > :is(p, ul, ol) code[data-token] { display: inline-block; max-width: 100%; line-height: 1.5; vertical-align: baseline; }
55
+ /* A run of inline code that wraps keeps its chip on both lines instead of an open cut. */
56
+ .ui-inline-code { -webkit-box-decoration-break: clone; box-decoration-break: clone; }
57
+ .ui-prose > :is(p, ul, ol) del { text-decoration-color: var(--ui-status-danger); }
58
+ .ui-prose > details:not([class]) { max-width: var(--measure); margin-block: var(--ui-space-xl); border-block: 1px solid var(--ui-line-hair); }
59
+ .ui-prose > details:not([class]) > summary { padding: var(--ui-space-sm) 0; color: var(--ui-text-strong); font-weight: var(--ui-weight-strong); font-size: var(--ui-text-small); cursor: pointer; }
60
+ .ui-prose > details:not([class]) > summary:focus-visible { @apply --ui-focus-ring; outline-offset: 2px; border-radius: var(--ui-radius-xs); }
61
+
62
+ /* Han text keeps the body's double leading; its headings keep their natural spacing. */
63
+ .ui-prose:lang(zh) { text-autospace: normal; }
64
+ .ui-prose:lang(zh) > :is(h2, h3, h4) { letter-spacing: 0; }
65
+
66
+ /* Phones have no margin for the heading anchor: it follows the heading instead. */
67
+ /* Narrow screens put the anchor after the heading, so the heading leaves it room inside the column. */
68
+ @media (width < 40rem) { .ui-prose > :is(h2, h3):has(> .ui-anchor) { max-width: calc(100% - 1.875rem); } .ui-prose > :is(h2, h3) > .ui-anchor { right: auto; left: 100%; translate: .375rem -50%; } .ui-prose > h2:has(> .ui-anchor) { --rule-end: -1.875rem; } }
69
+
70
+ .ui-prose ::selection { background: color-mix(in oklab, var(--ui-text-strong) 16%, transparent); }
71
+
72
+ @media (forced-colors: active) { .ui-prose > hr { height: 0; border-top: 1px solid CanvasText; background: none; } }
73
+ }
74
+
75
+ /* A link's mark after it (`Link` with `indicate`): an arrow for another site, a hash for this page. */
76
+ /* The mark rides in the link's end margin out of flow: it can never wrap away from the word, or take a line of its own
77
+ before the punctuation that follows the link, and the link's underline does not reach it. */
78
+ a[data-indicate] { margin-inline-end: .4em; }
79
+ a[data-indicate]::after { position: absolute; margin-left: .06em; color: var(--ui-text-muted); font-size: .7em; line-height: 1; text-decoration: none; }
80
+ a[data-indicate="external"]::after { content: "↗"; }
81
+ a[data-indicate="hash"]::after { content: "#"; }
82
+ .ui-prose :is(td, th) a[href^="#"] { white-space: nowrap; }
83
+
84
+ /* Paper is white whatever the screen's scheme; an outside link keeps its destination in place of the arrow. */
85
+ @media print {
86
+ :root:has(.ui-prose) > body { background-color: #fff; }
87
+ .ui-prose { color-scheme: light; }
88
+ .ui-prose > :is(p, ul, ol) a[href^="http"]::after { display: inline-block; max-width: 100%; margin: 0; color: #555; font-size: .8em; vertical-align: baseline; content: " (" attr(href) ")"; overflow-wrap: anywhere; }
89
+ }
@@ -0,0 +1,13 @@
1
+ @layer components {
2
+ /* Related views switch with the system's segmented control; the panels keep their own frames. */
3
+ .segment-views, .segment-panel { min-width: 0; }
4
+ .segment-views > .ui-segmented { margin-bottom: var(--ui-space-sm); }
5
+ .segment-panel-label { display: none; }
6
+ .segment-panel:focus-visible { @apply --ui-focus-ring; outline-offset: 3px; border-radius: var(--ui-radius-sm); }
7
+ @media (scripting: none), print {
8
+ .segment-views > .ui-segmented { display: none; }
9
+ .segment-panel[hidden] { display: block !important; }
10
+ .segment-panel + .segment-panel { margin-top: var(--ui-space-xl); }
11
+ .segment-panel-label { display: block; margin-bottom: var(--ui-space-md); color: var(--ui-text-strong); font-size: var(--ui-text-small); font-weight: var(--ui-weight-medium); }
12
+ }
13
+ }
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Document steps (`StepSection`) on `ui-steps` (styles/system/data.css): a step's content holds an authored heading,
3
+ * its text and, in a row step, the code beside it once the column has room.
4
+ */
5
+ @layer components {
6
+ .ui-steps[data-variant="document"] { container-type: inline-size; margin-block: var(--ui-space-xl) var(--line, var(--ui-space-xl)); }
7
+ .ui-steps-content, .ui-steps-text, .ui-steps-source { min-width: 0; }
8
+ .ui-steps-content { display: grid; align-content: start; gap: var(--ui-space-md); }
9
+ .ui-steps-content[data-columns] { gap: var(--ui-space-md) var(--ui-space-xl); }
10
+ .ui-steps-content :is(h2, h3, h4) {
11
+ position: static; width: auto; margin: .125rem 0 var(--ui-space-2xs);
12
+ color: var(--ui-text-strong); font-size: var(--ui-text-base); font-weight: var(--ui-weight-medium); line-height: 1.5rem; letter-spacing: -.006em;
13
+ }
14
+ .ui-steps-content :is(h2, h3, h4) > .ui-anchor { display: none; }
15
+ .ui-steps-content > :is(h2, h3, h4), .ui-steps-text > :is(h2, h3, h4) { margin-bottom: calc(var(--ui-space-md) * -1 + var(--ui-space-2xs)); }
16
+ .ui-steps-content :is(h2, h3, h4) + p { margin-top: 0; }
17
+ .ui-steps-content :is(p, li) { font-size: var(--ui-text-small); line-height: var(--ui-leading-small); }
18
+ .ui-steps-content :is(p, ul, ol) { margin-block: 0; }
19
+ .ui-steps-text { display: grid; align-content: start; gap: var(--ui-space-md); }
20
+ /* Several files under one step part by a small gap, never contour against contour. */
21
+ .ui-steps-source { display: grid; align-content: start; gap: var(--ui-space-sm); }
22
+ /* A note inside a step is part of its text: the icon leads a muted paragraph, without a frame of its own in the narrow column. */
23
+ .ui-steps-content .ui-callout { padding: 0; background: none; box-shadow: none; color: var(--ui-text-muted); }
24
+ /* Only reset panels placed by the step grid; nested trays own their internal spacing. */
25
+ :is(.ui-steps-content, .ui-steps-text, .ui-steps-source) > :is(.ui-code, .ui-tray) { margin: 0; }
26
+ :is(.ui-steps-content, .ui-steps-text, .ui-steps-source) > :is(.ui-code, p):first-child { margin-top: 0; }
27
+ :is(.ui-steps-content, .ui-steps-text, .ui-steps-source) > :is(.ui-code, p):last-child { margin-bottom: 0; }
28
+
29
+ @container (width < 20rem) {
30
+ .ui-steps[data-variant="document"] > li { grid-template-columns: minmax(0, 1fr); }
31
+ .ui-steps[data-variant="document"] > li::before, .ui-steps[data-variant="document"] > li::after { display: none; }
32
+ }
33
+
34
+ /* A row step reads beside its code once the list has room for both (46rem): the text on two fifths, the code on three.
35
+ Narrower, the code stacks under its text at full width rather than scrolling in a sliver. */
36
+ @container (min-width: 46rem) {
37
+ .ui-steps-content[data-columns] { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); }
38
+ }
39
+ }
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Documentation code takes its syntax colors from the system's --ui-code-* roles (styles/system/tokens.css), which
3
+ * Shiki writes into each token's inline style. The homepage's editor figures still alias these @theme names.
4
+ */
5
+ @theme static {
6
+ --color-code-function: var(--ui-code-function);
7
+ --color-code-keyword: var(--ui-code-keyword);
8
+ --color-code-number: var(--ui-code-number);
9
+ --color-code-property: var(--ui-code-property);
10
+ --color-code-string: var(--ui-code-string);
11
+ --color-code-surface: light-dark(var(--color-zinc-0), var(--color-zinc-95));
12
+ }
13
+
14
+ @layer components {
15
+ .shiki {
16
+ color: var(--ui-code-text);
17
+ }
18
+ }
@@ -0,0 +1,68 @@
1
+ @import './materials.css';
2
+ @import './syntax-theme.css';
3
+
4
+ @mixin --site-light { &:where(.light, .light *) { @contents; } }
5
+ @mixin --site-dark { &:where(.dark, .dark *) { @contents; } }
6
+
7
+ .light { color-scheme: light; }
8
+ .dark { color-scheme: dark; }
9
+
10
+ @theme {
11
+ --font-sans: "Geist", "Noto Sans TC";
12
+ --font-mono: "IBM Plex Mono";
13
+ --font-feature-sans: "ss02", "ss03", "ss04", "ss06", "ss07", "ss08";
14
+ --font-feature-mono: "cv01", "cv02", "cv29";
15
+ --radius-card: 0.75rem;
16
+ --radius-panel: 1rem;
17
+ }
18
+
19
+ @keyframes slide-to-right {
20
+ from {
21
+ transform: translateX(-100%);
22
+ }
23
+
24
+ to {
25
+ transform: translateX(100%);
26
+ }
27
+ }
28
+
29
+ /* Color roles follow the system scheme until the theme class arrives, like the preset's own tokens. */
30
+ @theme {
31
+ --stripe-image: linear-gradient(135deg, var(--color-line-subtle) 4.5%, transparent 0, transparent 50%, var(--color-line-subtle) 0, var(--color-line-subtle) 54.5%, transparent 0);
32
+ --tiny-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cg fill='black' fill-opacity='0.1'%3E%3Cpath fill-rule='evenodd' d='M0 0h4v4H0V0zm4 4h4v4H4V4z'/%3E%3C/g%3E%3C/svg%3E");
33
+ --color-primary: light-dark(var(--color-yellow-40), var(--color-yellow-50));
34
+ --color-accent: light-dark(var(--color-zinc-90), var(--color-zinc-5));
35
+ --color-focus: light-dark(var(--color-zinc-90), var(--color-zinc-5));
36
+ --color-text-success: light-dark(var(--color-green-70), var(--color-green-40));
37
+ --color-text-danger: light-dark(var(--color-red-60), var(--color-red-30));
38
+ --color-info: light-dark(var(--color-cyan-40), var(--color-cyan-50));
39
+ --color-text-info: light-dark(var(--color-cyan-70), var(--color-cyan-40));
40
+ }
41
+
42
+ @layer defaults {
43
+ .light {
44
+ --stripe-image: linear-gradient(135deg, var(--color-line-subtle) 4.5%, transparent 0, transparent 50%, var(--color-line-subtle) 0, var(--color-line-subtle) 54.5%, transparent 0);
45
+ --tiny-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cg fill='black' fill-opacity='0.1'%3E%3Cpath fill-rule='evenodd' d='M0 0h4v4H0V0zm4 4h4v4H4V4z'/%3E%3C/g%3E%3C/svg%3E");
46
+ --color-primary: var(--color-yellow-40);
47
+ --color-accent: var(--color-zinc-90);
48
+ --color-focus: var(--color-zinc-90);
49
+ --color-text-success: var(--color-green-70);
50
+ --color-text-danger: var(--color-red-60);
51
+ --color-info: var(--color-cyan-40);
52
+ --color-text-info: var(--color-cyan-70);
53
+ }
54
+ }
55
+
56
+ @layer defaults {
57
+ .dark {
58
+ --stripe-image: linear-gradient(135deg, var(--color-line-subtle) 4.5%, transparent 0, transparent 50%, var(--color-line-subtle) 0, var(--color-line-subtle) 54.5%, transparent 0);
59
+ --tiny-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3E%3Cg fill='white' fill-opacity='0.1'%3E%3Cpath fill-rule='evenodd' d='M0 0h4v4H0V0zm4 4h4v4H4V4z'/%3E%3C/g%3E%3C/svg%3E");
60
+ --color-primary: var(--color-yellow-50);
61
+ --color-accent: var(--color-zinc-5);
62
+ --color-focus: var(--color-zinc-5);
63
+ --color-text-success: var(--color-green-40);
64
+ --color-text-danger: var(--color-red-30);
65
+ --color-info: var(--color-cyan-50);
66
+ --color-text-info: var(--color-cyan-40);
67
+ }
68
+ }
@@ -0,0 +1,10 @@
1
+ @layer components {
2
+ .app-wrapper {
3
+ margin-inline: auto;
4
+ padding-inline: 1.25rem;
5
+
6
+ @media (--sm) {
7
+ padding-inline: 2.5rem;
8
+ }
9
+ }
10
+ }
@@ -0,0 +1,7 @@
1
+ /* A two-column reading comparison inside the shared table: fixed columns, long syntax wraps. */
2
+ @layer components {
3
+ .document-comparison table { table-layout: fixed; }
4
+ .document-comparison :is(th, td) { white-space: normal; overflow-wrap: anywhere; }
5
+ .document-comparison :is(th, td):first-child { width: 40%; }
6
+ .document-comparison code { white-space: normal; }
7
+ }
@@ -0,0 +1,34 @@
1
+ /* One accessible illustration: the bitmap for the current scheme fills the tray's 18px frame. */
2
+ @layer components {
3
+ .document-illustration { overflow: hidden; border-radius: var(--ui-radius-xl); }
4
+ .document-illustration img { display: block; width: 100%; height: auto; margin: 0; }
5
+ .document-illustration img[data-scheme="dark"] { display: none; }
6
+ .ui-tray[data-illustration-expandable] .ui-tray-title { flex: 1; }
7
+ .document-illustration-expand { flex: none; }
8
+ .document-illustration-expand[data-scheme="dark"] { display: none; }
9
+ /* A quiet caption-level entry, independent of the demo's generated-code panel. */
10
+ .ui-tray > .ui-disclosure[data-variant="text-description"] { margin-top: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
11
+ .ui-tray > .ui-disclosure[data-variant="text-description"] > summary { width: fit-content; max-width: calc(100% - 2 * var(--ui-space-sm)); min-height: 2rem; margin-inline: var(--ui-space-sm); padding: 0; gap: var(--ui-space-2xs); color: var(--ui-text-muted); font-size: var(--ui-text-label); font-weight: var(--ui-weight-regular); }
12
+ .ui-tray > .ui-disclosure[data-variant="text-description"] > summary::before { width: 12px; height: 12px; }
13
+ .ui-tray > .ui-disclosure[data-variant="text-description"] > summary:hover { color: var(--ui-text-strong); }
14
+ .ui-tray > .ui-disclosure[data-variant="text-description"] > .ui-disclosure-body { margin-inline: 0; padding-top: var(--ui-space-xs); }
15
+ /* The text description reads at caption size inside the tray. */
16
+ .ui-tray-caption > ol { margin: 0; padding-left: 1.25em; }
17
+ .ui-tray-caption > ol > li + li { margin-top: var(--ui-space-2xs); }
18
+ .ui-tray-caption strong { color: var(--ui-text-body); font-weight: var(--ui-weight-strong); }
19
+ .dark .document-illustration img[data-scheme="light"] { display: none; }
20
+ .dark .document-illustration img[data-scheme="dark"] { display: block; }
21
+ .dark .document-illustration-expand[data-scheme="light"] { display: none; }
22
+ .dark .document-illustration-expand[data-scheme="dark"] { display: inline-flex; }
23
+ @media screen and (prefers-color-scheme: dark) {
24
+ :root:not(.light, .dark) .document-illustration img[data-scheme="light"] { display: none; }
25
+ :root:not(.light, .dark) .document-illustration img[data-scheme="dark"] { display: block; }
26
+ :root:not(.light, .dark) .document-illustration-expand[data-scheme="light"] { display: none; }
27
+ :root:not(.light, .dark) .document-illustration-expand[data-scheme="dark"] { display: inline-flex; }
28
+ }
29
+ @media print {
30
+ .document-illustration img[data-scheme="light"] { display: block !important; }
31
+ .document-illustration img[data-scheme="dark"] { display: none !important; }
32
+ .document-illustration-expand { display: none !important; }
33
+ }
34
+ }