@fairgarden/design 0.1.0-alpha.1 → 0.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (517) hide show
  1. package/LICENSE +21 -0
  2. package/Readme.md +51 -27
  3. package/actions/button/Button.d.ts.map +1 -1
  4. package/actions/button/Button.js +13 -1
  5. package/actions/button/Button.js.map +1 -1
  6. package/actions/button/button.module.css +85 -25
  7. package/actions/chip/Chip.d.ts +2 -2
  8. package/actions/chip/Chip.js +2 -2
  9. package/actions/chip/chip.module.css +12 -18
  10. package/actions/link/Link.d.ts +1 -1
  11. package/actions/link/link.module.css +22 -19
  12. package/actions/toggle/Toggle.js +1 -1
  13. package/actions/toggle/toggle.module.css +27 -23
  14. package/content/card/card.module.css +27 -27
  15. package/content/card-grid/CardGrid.js +1 -1
  16. package/content/card-grid/card-grid.module.css +3 -3
  17. package/content/carousel/Carousel.d.ts.map +1 -1
  18. package/content/carousel/Carousel.js +1 -4
  19. package/content/carousel/Carousel.js.map +1 -1
  20. package/content/carousel/carousel.module.css +19 -9
  21. package/content/code-block/CodeActionsMenu.d.ts +34 -0
  22. package/content/code-block/CodeActionsMenu.d.ts.map +1 -0
  23. package/content/code-block/CodeActionsMenu.js +102 -0
  24. package/content/code-block/CodeActionsMenu.js.map +1 -0
  25. package/content/code-block/CodeBlock.d.ts +37 -0
  26. package/content/code-block/CodeBlock.d.ts.map +1 -0
  27. package/content/code-block/CodeBlock.js +30 -0
  28. package/content/code-block/CodeBlock.js.map +1 -0
  29. package/content/code-block/CodeBlockFrame.d.ts +54 -0
  30. package/content/code-block/CodeBlockFrame.d.ts.map +1 -0
  31. package/content/code-block/CodeBlockFrame.js +80 -0
  32. package/content/code-block/CodeBlockFrame.js.map +1 -0
  33. package/content/code-block/CodeBlockHeader.d.ts +26 -0
  34. package/content/code-block/CodeBlockHeader.d.ts.map +1 -0
  35. package/content/code-block/CodeBlockHeader.js +16 -0
  36. package/content/code-block/CodeBlockHeader.js.map +1 -0
  37. package/content/code-block/CodeBlockLazy.d.ts +11 -0
  38. package/content/code-block/CodeBlockLazy.d.ts.map +1 -0
  39. package/content/code-block/CodeBlockLazy.js +14 -0
  40. package/content/code-block/CodeBlockLazy.js.map +1 -0
  41. package/content/code-block/CodeBlockLoading.d.ts +31 -0
  42. package/content/code-block/CodeBlockLoading.d.ts.map +1 -0
  43. package/content/code-block/CodeBlockLoading.js +90 -0
  44. package/content/code-block/CodeBlockLoading.js.map +1 -0
  45. package/content/code-block/CodeBlockSection.d.ts +40 -0
  46. package/content/code-block/CodeBlockSection.d.ts.map +1 -0
  47. package/content/code-block/CodeBlockSection.js +105 -0
  48. package/content/code-block/CodeBlockSection.js.map +1 -0
  49. package/content/code-block/CodeBlockToasts.d.ts +26 -0
  50. package/content/code-block/CodeBlockToasts.d.ts.map +1 -0
  51. package/content/code-block/CodeBlockToasts.js +88 -0
  52. package/content/code-block/CodeBlockToasts.js.map +1 -0
  53. package/content/code-block/code-block.module.css +949 -0
  54. package/content/code-block/index.d.ts +4 -0
  55. package/content/code-block/index.d.ts.map +1 -0
  56. package/content/code-block/index.js +4 -0
  57. package/content/code-block/index.js.map +1 -0
  58. package/content/demo/DemoContent.d.ts +32 -0
  59. package/content/demo/DemoContent.d.ts.map +1 -0
  60. package/content/demo/DemoContent.js +87 -0
  61. package/content/demo/DemoContent.js.map +1 -0
  62. package/content/demo/DemoFrame.d.ts +6 -0
  63. package/content/demo/DemoFrame.d.ts.map +1 -0
  64. package/content/demo/DemoFrame.js +17 -0
  65. package/content/demo/DemoFrame.js.map +1 -0
  66. package/content/demo/DemoLazy.d.ts +11 -0
  67. package/content/demo/DemoLazy.d.ts.map +1 -0
  68. package/content/demo/DemoLazy.js +14 -0
  69. package/content/demo/DemoLazy.js.map +1 -0
  70. package/content/demo/DemoLoading.d.ts +23 -0
  71. package/content/demo/DemoLoading.d.ts.map +1 -0
  72. package/content/demo/DemoLoading.js +26 -0
  73. package/content/demo/DemoLoading.js.map +1 -0
  74. package/content/demo/demo.module.css +163 -0
  75. package/content/demo/index.d.ts +4 -0
  76. package/content/demo/index.d.ts.map +1 -0
  77. package/content/demo/index.js +4 -0
  78. package/content/demo/index.js.map +1 -0
  79. package/content/empty-state/EmptyState.d.ts +1 -1
  80. package/content/empty-state/EmptyState.js +1 -1
  81. package/content/empty-state/empty-state.module.css +11 -11
  82. package/content/feature-grid/feature-grid.module.css +22 -22
  83. package/content/index-rows/IndexRows.d.ts +2 -2
  84. package/content/index-rows/IndexRows.d.ts.map +1 -1
  85. package/content/index-rows/IndexRows.js +1 -1
  86. package/content/index-rows/index-rows.module.css +29 -29
  87. package/content/pricing/Pricing.d.ts +4 -4
  88. package/content/pricing/Pricing.d.ts.map +1 -1
  89. package/content/pricing/Pricing.js +4 -4
  90. package/content/pricing/Pricing.js.map +1 -1
  91. package/content/pricing/pricing.module.css +22 -22
  92. package/content/profile/Profile.d.ts +1 -1
  93. package/content/profile/Profile.js +2 -2
  94. package/content/profile/profile.module.css +13 -13
  95. package/content/quote/Quote.d.ts +1 -1
  96. package/content/quote/quote.module.css +9 -9
  97. package/content/timeline/Timeline.d.ts +1 -1
  98. package/content/timeline/Timeline.d.ts.map +1 -1
  99. package/content/timeline/Timeline.js +5 -5
  100. package/content/timeline/Timeline.js.map +1 -1
  101. package/content/timeline/timeline.module.css +12 -12
  102. package/content/types-table/TypePre.d.ts +11 -0
  103. package/content/types-table/TypePre.d.ts.map +1 -0
  104. package/content/types-table/TypePre.js +13 -0
  105. package/content/types-table/TypePre.js.map +1 -0
  106. package/content/types-table/TypesTable.d.ts +22 -0
  107. package/content/types-table/TypesTable.d.ts.map +1 -0
  108. package/content/types-table/TypesTable.js +124 -0
  109. package/content/types-table/TypesTable.js.map +1 -0
  110. package/content/types-table/index.d.ts +3 -0
  111. package/content/types-table/index.d.ts.map +1 -0
  112. package/content/types-table/index.js +3 -0
  113. package/content/types-table/index.js.map +1 -0
  114. package/content/types-table/types-table.module.css +160 -0
  115. package/data/chart/Chart.d.ts +8 -1
  116. package/data/chart/Chart.d.ts.map +1 -1
  117. package/data/chart/Chart.js +28 -15
  118. package/data/chart/Chart.js.map +1 -1
  119. package/data/chart/chart.module.css +20 -6
  120. package/data/figure/Figure.d.ts +1 -1
  121. package/data/figure/Figure.js +1 -1
  122. package/data/figure/figure.module.css +7 -7
  123. package/data/map/Map.d.ts +3 -3
  124. package/data/map/Map.d.ts.map +1 -1
  125. package/data/map/Map.js +10 -8
  126. package/data/map/Map.js.map +1 -1
  127. package/data/map/MapCanvas.d.ts.map +1 -1
  128. package/data/map/MapCanvas.js +5 -9
  129. package/data/map/MapCanvas.js.map +1 -1
  130. package/data/map/map.module.css +39 -14
  131. package/data/map/mapStyle.d.ts +2 -2
  132. package/data/map/mapStyle.d.ts.map +1 -1
  133. package/data/map/mapStyle.js +5 -5
  134. package/data/map/mapStyle.js.map +1 -1
  135. package/data/scroll-area/ScrollArea.d.ts.map +1 -1
  136. package/data/scroll-area/ScrollArea.js +8 -4
  137. package/data/scroll-area/ScrollArea.js.map +1 -1
  138. package/data/scroll-area/scroll-area.module.css +28 -9
  139. package/data/spec-grid/spec-grid.module.css +8 -8
  140. package/data/spec-list/spec-list.module.css +3 -3
  141. package/data/spec-sheet/SpecSheet.d.ts +2 -2
  142. package/data/spec-sheet/SpecSheet.js +1 -1
  143. package/data/spec-sheet/spec-sheet.module.css +9 -9
  144. package/data/stat/Stat.d.ts +1 -1
  145. package/data/stat/Stat.d.ts.map +1 -1
  146. package/data/stat/stat.module.css +4 -4
  147. package/data/table/Table.d.ts +6 -5
  148. package/data/table/Table.d.ts.map +1 -1
  149. package/data/table/Table.js.map +1 -1
  150. package/data/table/table.module.css +43 -46
  151. package/disclosure/accordion/Accordion.d.ts +1 -1
  152. package/disclosure/accordion/Accordion.js +1 -1
  153. package/disclosure/accordion/accordion.module.css +12 -12
  154. package/disclosure/collapsible/Collapsible.d.ts +4 -4
  155. package/disclosure/collapsible/Collapsible.js +4 -4
  156. package/disclosure/collapsible/collapsible.module.css +10 -10
  157. package/disclosure/faq/FAQ.d.ts +3 -3
  158. package/disclosure/faq/FAQ.d.ts.map +1 -1
  159. package/disclosure/faq/FAQ.js +3 -3
  160. package/disclosure/faq/FAQ.js.map +1 -1
  161. package/disclosure/faq/faq.module.css +20 -20
  162. package/feedback/alert/alert.module.css +4 -4
  163. package/feedback/avatar/avatar-group.module.css +2 -2
  164. package/feedback/avatar/avatar.module.css +9 -9
  165. package/feedback/badge/Badge.d.ts +1 -1
  166. package/feedback/badge/badge.module.css +7 -7
  167. package/feedback/meter/Meter.d.ts +2 -2
  168. package/feedback/meter/meter.module.css +14 -14
  169. package/feedback/progress/Progress.d.ts +1 -1
  170. package/feedback/progress/progress.module.css +7 -7
  171. package/feedback/tag/tag.module.css +7 -7
  172. package/feedback/toast/Toast.d.ts +3 -3
  173. package/feedback/toast/Toast.d.ts.map +1 -1
  174. package/feedback/toast/Toast.js +17 -7
  175. package/feedback/toast/Toast.js.map +1 -1
  176. package/feedback/toast/toast.module.css +31 -20
  177. package/forms/autocomplete/Autocomplete.d.ts +11 -0
  178. package/forms/autocomplete/Autocomplete.d.ts.map +1 -1
  179. package/forms/autocomplete/Autocomplete.js +27 -6
  180. package/forms/autocomplete/Autocomplete.js.map +1 -1
  181. package/forms/autocomplete/autocomplete.module.css +35 -41
  182. package/forms/checkbox/Checkbox.js +1 -1
  183. package/forms/checkbox/checkbox.module.css +29 -25
  184. package/forms/checkbox-group/checkbox-group.module.css +4 -4
  185. package/forms/combobox/Combobox.d.ts +10 -0
  186. package/forms/combobox/Combobox.d.ts.map +1 -1
  187. package/forms/combobox/Combobox.js +28 -7
  188. package/forms/combobox/Combobox.js.map +1 -1
  189. package/forms/combobox/combobox.module.css +34 -41
  190. package/forms/field/field.module.css +1 -1
  191. package/forms/fieldset/Fieldset.d.ts +1 -1
  192. package/forms/fieldset/Fieldset.js +2 -2
  193. package/forms/fieldset/fieldset.module.css +14 -14
  194. package/forms/form/form.module.css +2 -2
  195. package/forms/input/Input.d.ts +10 -3
  196. package/forms/input/Input.d.ts.map +1 -1
  197. package/forms/input/Input.js +10 -4
  198. package/forms/input/Input.js.map +1 -1
  199. package/forms/input/input.module.css +38 -21
  200. package/forms/number-field/number-field.module.css +24 -23
  201. package/forms/radio/Radio.d.ts +1 -1
  202. package/forms/radio/Radio.d.ts.map +1 -1
  203. package/forms/radio/Radio.js +5 -3
  204. package/forms/radio/Radio.js.map +1 -1
  205. package/forms/radio/radio.module.css +38 -30
  206. package/forms/radio-group/RadioGroup.d.ts +1 -1
  207. package/forms/radio-group/radio-group.module.css +3 -3
  208. package/forms/search/Search.d.ts +10 -0
  209. package/forms/search/Search.d.ts.map +1 -1
  210. package/forms/search/Search.js +25 -6
  211. package/forms/search/Search.js.map +1 -1
  212. package/forms/search/search.module.css +25 -33
  213. package/forms/select/Select.d.ts +10 -2
  214. package/forms/select/Select.d.ts.map +1 -1
  215. package/forms/select/Select.js +27 -12
  216. package/forms/select/Select.js.map +1 -1
  217. package/forms/select/select.module.css +42 -48
  218. package/forms/slider/Slider.js +2 -2
  219. package/forms/slider/slider.module.css +23 -23
  220. package/forms/switch/Switch.js +1 -1
  221. package/forms/switch/switch.module.css +23 -19
  222. package/foundations/expanding-box/ExpandingBox.d.ts +86 -0
  223. package/foundations/expanding-box/ExpandingBox.d.ts.map +1 -0
  224. package/foundations/expanding-box/ExpandingBox.js +179 -0
  225. package/foundations/expanding-box/ExpandingBox.js.map +1 -0
  226. package/foundations/expanding-box/expanding-box.module.css +415 -0
  227. package/foundations/expanding-box/index.d.ts +3 -0
  228. package/foundations/expanding-box/index.d.ts.map +1 -0
  229. package/foundations/expanding-box/index.js +3 -0
  230. package/foundations/expanding-box/index.js.map +1 -0
  231. package/foundations/expanding-box/startExpandingTransition.d.ts +33 -0
  232. package/foundations/expanding-box/startExpandingTransition.d.ts.map +1 -0
  233. package/foundations/expanding-box/startExpandingTransition.js +82 -0
  234. package/foundations/expanding-box/startExpandingTransition.js.map +1 -0
  235. package/foundations/ground/Ground.d.ts +1 -1
  236. package/foundations/ground/ground.module.css +4 -4
  237. package/foundations/icon/Icon.d.ts +1 -1
  238. package/foundations/icon/Icon.js +1 -1
  239. package/foundations/icon/icon.module.css +1 -1
  240. package/foundations/outline-morph/OutlineMorph.d.ts +112 -0
  241. package/foundations/outline-morph/OutlineMorph.d.ts.map +1 -0
  242. package/foundations/outline-morph/OutlineMorph.js +83 -0
  243. package/foundations/outline-morph/OutlineMorph.js.map +1 -0
  244. package/foundations/outline-morph/index.d.ts +3 -0
  245. package/foundations/outline-morph/index.d.ts.map +1 -0
  246. package/foundations/outline-morph/index.js +3 -0
  247. package/foundations/outline-morph/index.js.map +1 -0
  248. package/foundations/outline-morph/morphEngine.d.ts +219 -0
  249. package/foundations/outline-morph/morphEngine.d.ts.map +1 -0
  250. package/foundations/outline-morph/morphEngine.js +1331 -0
  251. package/foundations/outline-morph/morphEngine.js.map +1 -0
  252. package/foundations/outline-morph/outline-morph.module.css +113 -0
  253. package/foundations/outline-morph/useOutlineMorphRoot.d.ts +50 -0
  254. package/foundations/outline-morph/useOutlineMorphRoot.d.ts.map +1 -0
  255. package/foundations/outline-morph/useOutlineMorphRoot.js +55 -0
  256. package/foundations/outline-morph/useOutlineMorphRoot.js.map +1 -0
  257. package/foundations/separator/separator.module.css +10 -10
  258. package/foundations/sticker/Sticker.d.ts +4 -4
  259. package/foundations/sticker/Sticker.d.ts.map +1 -1
  260. package/foundations/sticker/Sticker.js +3 -3
  261. package/foundations/sticker/sticker.module.css +10 -10
  262. package/icons/paths.d.ts +1 -1
  263. package/icons/paths.d.ts.map +1 -1
  264. package/icons/paths.js +50 -0
  265. package/icons/paths.js.map +1 -1
  266. package/navigation/breadcrumb/Breadcrumb.d.ts +7 -1
  267. package/navigation/breadcrumb/Breadcrumb.d.ts.map +1 -1
  268. package/navigation/breadcrumb/Breadcrumb.js +8 -8
  269. package/navigation/breadcrumb/Breadcrumb.js.map +1 -1
  270. package/navigation/breadcrumb/breadcrumb.module.css +14 -14
  271. package/navigation/file-tabs/FileTabs.d.ts +169 -0
  272. package/navigation/file-tabs/FileTabs.d.ts.map +1 -0
  273. package/navigation/file-tabs/FileTabs.js +253 -0
  274. package/navigation/file-tabs/FileTabs.js.map +1 -0
  275. package/navigation/file-tabs/file-tabs.module.css +868 -0
  276. package/navigation/file-tabs/index.d.ts +2 -0
  277. package/navigation/file-tabs/index.d.ts.map +1 -0
  278. package/navigation/file-tabs/index.js +2 -0
  279. package/navigation/file-tabs/index.js.map +1 -0
  280. package/navigation/nav-drawer/NavDrawer.d.ts +32 -6
  281. package/navigation/nav-drawer/NavDrawer.d.ts.map +1 -1
  282. package/navigation/nav-drawer/NavDrawer.js +94 -28
  283. package/navigation/nav-drawer/NavDrawer.js.map +1 -1
  284. package/navigation/nav-drawer/nav-drawer.module.css +78 -55
  285. package/navigation/navigation-bar/NavigationBar.d.ts +31 -11
  286. package/navigation/navigation-bar/NavigationBar.d.ts.map +1 -1
  287. package/navigation/navigation-bar/NavigationBar.js +40 -17
  288. package/navigation/navigation-bar/NavigationBar.js.map +1 -1
  289. package/navigation/navigation-bar/navigation-bar.module.css +58 -27
  290. package/navigation/navigation-menu/NavigationMenu.d.ts +9 -9
  291. package/navigation/navigation-menu/NavigationMenu.d.ts.map +1 -1
  292. package/navigation/navigation-menu/NavigationMenu.js +15 -15
  293. package/navigation/navigation-menu/navigation-menu.module.css +39 -53
  294. package/navigation/pagination/Pagination.js +1 -1
  295. package/navigation/pagination/pagination.module.css +24 -24
  296. package/navigation/sidebar-nav/SidebarNav.d.ts +71 -0
  297. package/navigation/sidebar-nav/SidebarNav.d.ts.map +1 -0
  298. package/navigation/sidebar-nav/SidebarNav.js +169 -0
  299. package/navigation/sidebar-nav/SidebarNav.js.map +1 -0
  300. package/navigation/sidebar-nav/index.d.ts +2 -0
  301. package/navigation/sidebar-nav/index.d.ts.map +1 -0
  302. package/navigation/sidebar-nav/index.js +2 -0
  303. package/navigation/sidebar-nav/index.js.map +1 -0
  304. package/navigation/sidebar-nav/sidebar-nav.module.css +270 -0
  305. package/navigation/table-of-contents/TableOfContents.d.ts +92 -0
  306. package/navigation/table-of-contents/TableOfContents.d.ts.map +1 -0
  307. package/navigation/table-of-contents/TableOfContents.js +211 -0
  308. package/navigation/table-of-contents/TableOfContents.js.map +1 -0
  309. package/navigation/table-of-contents/index.d.ts +3 -0
  310. package/navigation/table-of-contents/index.d.ts.map +1 -0
  311. package/navigation/table-of-contents/index.js +3 -0
  312. package/navigation/table-of-contents/index.js.map +1 -0
  313. package/navigation/table-of-contents/table-of-contents.module.css +322 -0
  314. package/navigation/table-of-contents/useActiveHeading.d.ts +37 -0
  315. package/navigation/table-of-contents/useActiveHeading.d.ts.map +1 -0
  316. package/navigation/table-of-contents/useActiveHeading.js +111 -0
  317. package/navigation/table-of-contents/useActiveHeading.js.map +1 -0
  318. package/navigation/tabs/Tabs.d.ts +2 -2
  319. package/navigation/tabs/Tabs.js +3 -3
  320. package/navigation/tabs/tabs.module.css +22 -19
  321. package/navigation/toolbar/Toolbar.d.ts +7 -1
  322. package/navigation/toolbar/Toolbar.d.ts.map +1 -1
  323. package/navigation/toolbar/Toolbar.js +3 -3
  324. package/navigation/toolbar/Toolbar.js.map +1 -1
  325. package/navigation/toolbar/toolbar.module.css +6 -6
  326. package/overlays/alert-dialog/AlertDialog.d.ts +14 -4
  327. package/overlays/alert-dialog/AlertDialog.d.ts.map +1 -1
  328. package/overlays/alert-dialog/AlertDialog.js +15 -5
  329. package/overlays/alert-dialog/AlertDialog.js.map +1 -1
  330. package/overlays/alert-dialog/alert-dialog.module.css +4 -4
  331. package/overlays/context-menu/ContextMenu.d.ts +1 -1
  332. package/overlays/context-menu/ContextMenu.js +1 -1
  333. package/overlays/dialog/Dialog.d.ts +26 -11
  334. package/overlays/dialog/Dialog.d.ts.map +1 -1
  335. package/overlays/dialog/Dialog.js +36 -17
  336. package/overlays/dialog/Dialog.js.map +1 -1
  337. package/overlays/dialog/dialog.module.css +32 -31
  338. package/overlays/dialog/morph.d.ts +17 -0
  339. package/overlays/dialog/morph.d.ts.map +1 -0
  340. package/overlays/dialog/morph.js +44 -0
  341. package/overlays/dialog/morph.js.map +1 -0
  342. package/overlays/menu/Menu.d.ts +18 -7
  343. package/overlays/menu/Menu.d.ts.map +1 -1
  344. package/overlays/menu/Menu.js +35 -12
  345. package/overlays/menu/Menu.js.map +1 -1
  346. package/overlays/menu/menu.module.css +26 -50
  347. package/overlays/menu/morph.d.ts +16 -0
  348. package/overlays/menu/morph.d.ts.map +1 -0
  349. package/overlays/menu/morph.js +36 -0
  350. package/overlays/menu/morph.js.map +1 -0
  351. package/overlays/menu/popup.d.ts +2 -0
  352. package/overlays/menu/popup.d.ts.map +1 -1
  353. package/overlays/menu/popup.js +11 -3
  354. package/overlays/menu/popup.js.map +1 -1
  355. package/overlays/menubar/Menubar.d.ts +10 -1
  356. package/overlays/menubar/Menubar.d.ts.map +1 -1
  357. package/overlays/menubar/Menubar.js +22 -12
  358. package/overlays/menubar/Menubar.js.map +1 -1
  359. package/overlays/menubar/menubar.module.css +13 -13
  360. package/overlays/popover/Popover.d.ts +22 -8
  361. package/overlays/popover/Popover.d.ts.map +1 -1
  362. package/overlays/popover/Popover.js +51 -16
  363. package/overlays/popover/Popover.js.map +1 -1
  364. package/overlays/popover/popover.module.css +73 -47
  365. package/overlays/preview-card/PreviewCard.d.ts +3 -3
  366. package/overlays/preview-card/PreviewCard.d.ts.map +1 -1
  367. package/overlays/preview-card/PreviewCard.js +5 -6
  368. package/overlays/preview-card/PreviewCard.js.map +1 -1
  369. package/overlays/preview-card/preview-card.module.css +19 -54
  370. package/overlays/search-dialog/SearchDialog.d.ts +89 -0
  371. package/overlays/search-dialog/SearchDialog.d.ts.map +1 -0
  372. package/overlays/search-dialog/SearchDialog.js +220 -0
  373. package/overlays/search-dialog/SearchDialog.js.map +1 -0
  374. package/overlays/search-dialog/SearchDialogPopup.d.ts +39 -0
  375. package/overlays/search-dialog/SearchDialogPopup.d.ts.map +1 -0
  376. package/overlays/search-dialog/SearchDialogPopup.js +80 -0
  377. package/overlays/search-dialog/SearchDialogPopup.js.map +1 -0
  378. package/overlays/search-dialog/SearchDialogTrigger.d.ts +24 -0
  379. package/overlays/search-dialog/SearchDialogTrigger.d.ts.map +1 -0
  380. package/overlays/search-dialog/SearchDialogTrigger.js +32 -0
  381. package/overlays/search-dialog/SearchDialogTrigger.js.map +1 -0
  382. package/overlays/search-dialog/index.d.ts +3 -0
  383. package/overlays/search-dialog/index.d.ts.map +1 -0
  384. package/overlays/search-dialog/index.js +3 -0
  385. package/overlays/search-dialog/index.js.map +1 -0
  386. package/overlays/search-dialog/search-dialog.module.css +492 -0
  387. package/overlays/search-dialog/useShortcutLabel.d.ts +13 -0
  388. package/overlays/search-dialog/useShortcutLabel.d.ts.map +1 -0
  389. package/overlays/search-dialog/useShortcutLabel.js +19 -0
  390. package/overlays/search-dialog/useShortcutLabel.js.map +1 -0
  391. package/overlays/search-dialog/variants.d.ts +25 -0
  392. package/overlays/search-dialog/variants.d.ts.map +1 -0
  393. package/overlays/search-dialog/variants.js +31 -0
  394. package/overlays/search-dialog/variants.js.map +1 -0
  395. package/overlays/tooltip/Tooltip.d.ts +3 -3
  396. package/overlays/tooltip/Tooltip.d.ts.map +1 -1
  397. package/overlays/tooltip/Tooltip.js +3 -3
  398. package/overlays/tooltip/Tooltip.js.map +1 -1
  399. package/overlays/tooltip/tooltip.module.css +2 -2
  400. package/package.json +27 -19
  401. package/page/announcement-bar/AnnouncementBar.d.ts +1 -1
  402. package/page/announcement-bar/AnnouncementBar.js +4 -4
  403. package/page/announcement-bar/AnnouncementBar.js.map +1 -1
  404. package/page/announcement-bar/announcement-bar.module.css +11 -17
  405. package/page/cta-block/CTABlock.d.ts +5 -5
  406. package/page/cta-block/CTABlock.d.ts.map +1 -1
  407. package/page/cta-block/CTABlock.js +2 -2
  408. package/page/cta-block/cta-block.module.css +26 -26
  409. package/page/docs-layout/DocsLayout.d.ts +83 -0
  410. package/page/docs-layout/DocsLayout.d.ts.map +1 -0
  411. package/page/docs-layout/DocsLayout.js +108 -0
  412. package/page/docs-layout/DocsLayout.js.map +1 -0
  413. package/page/docs-layout/docs-layout.module.css +266 -0
  414. package/page/docs-layout/index.d.ts +2 -0
  415. package/page/docs-layout/index.d.ts.map +1 -0
  416. package/page/docs-layout/index.js +2 -0
  417. package/page/docs-layout/index.js.map +1 -0
  418. package/page/footer/Footer.d.ts +1 -1
  419. package/page/footer/Footer.js +1 -1
  420. package/page/footer/footer.module.css +31 -31
  421. package/page/hero/Hero.d.ts +3 -3
  422. package/page/hero/Hero.d.ts.map +1 -1
  423. package/page/hero/Hero.js +1 -1
  424. package/page/hero/hero.module.css +36 -36
  425. package/page/marquee/Marquee.d.ts +2 -2
  426. package/page/marquee/Marquee.js +1 -1
  427. package/page/marquee/marquee.module.css +11 -11
  428. package/page/newsletter/Newsletter.d.ts.map +1 -1
  429. package/page/newsletter/Newsletter.js +4 -59
  430. package/page/newsletter/Newsletter.js.map +1 -1
  431. package/page/newsletter/newsletter.module.css +44 -22
  432. package/page/section-bar/SectionBar.d.ts +10 -3
  433. package/page/section-bar/SectionBar.d.ts.map +1 -1
  434. package/page/section-bar/SectionBar.js +21 -11
  435. package/page/section-bar/SectionBar.js.map +1 -1
  436. package/page/section-bar/section-bar.module.css +43 -46
  437. package/page/section-divider/SectionDivider.d.ts +2 -2
  438. package/page/section-divider/SectionDivider.js +4 -4
  439. package/page/section-divider/SectionDivider.js.map +1 -1
  440. package/page/section-divider/section-divider.module.css +18 -18
  441. package/page/section-header/SectionHeader.d.ts +7 -7
  442. package/page/section-header/SectionHeader.d.ts.map +1 -1
  443. package/page/section-header/SectionHeader.js +3 -3
  444. package/page/section-header/SectionHeader.js.map +1 -1
  445. package/page/section-header/section-header.module.css +16 -16
  446. package/utils/Ornament.d.ts +1 -1
  447. package/utils/Ornament.js +2 -2
  448. package/utils/assignRef.d.ts +7 -1
  449. package/utils/assignRef.d.ts.map +1 -1
  450. package/utils/assignRef.js +18 -0
  451. package/utils/assignRef.js.map +1 -1
  452. package/utils/docs/DemoTitle.d.ts +12 -0
  453. package/utils/docs/DemoTitle.d.ts.map +1 -0
  454. package/utils/docs/DemoTitle.js +11 -0
  455. package/utils/docs/DemoTitle.js.map +1 -0
  456. package/utils/docs/Pre.d.ts +39 -0
  457. package/utils/docs/Pre.d.ts.map +1 -0
  458. package/utils/docs/Pre.js +26 -0
  459. package/utils/docs/Pre.js.map +1 -0
  460. package/utils/docs/createDemo.d.ts +89 -0
  461. package/utils/docs/createDemo.d.ts.map +1 -0
  462. package/utils/docs/createDemo.js +51 -0
  463. package/utils/docs/createDemo.js.map +1 -0
  464. package/utils/docs/createMdxComponents.d.ts +52 -0
  465. package/utils/docs/createMdxComponents.d.ts.map +1 -0
  466. package/utils/docs/createMdxComponents.js +59 -0
  467. package/utils/docs/createMdxComponents.js.map +1 -0
  468. package/utils/docs/createTypes.d.ts +23 -0
  469. package/utils/docs/createTypes.d.ts.map +1 -0
  470. package/utils/docs/createTypes.js +27 -0
  471. package/utils/docs/createTypes.js.map +1 -0
  472. package/utils/docs/index.d.ts +8 -0
  473. package/utils/docs/index.d.ts.map +1 -0
  474. package/utils/docs/index.js +16 -0
  475. package/utils/docs/index.js.map +1 -0
  476. package/utils/docs/mdx.module.css +201 -0
  477. package/utils/docs/serverSourceEnhancers.d.ts +26 -0
  478. package/utils/docs/serverSourceEnhancers.d.ts.map +1 -0
  479. package/utils/docs/serverSourceEnhancers.js +32 -0
  480. package/utils/docs/serverSourceEnhancers.js.map +1 -0
  481. package/utils/docs/toSidebarItems.d.ts +23 -0
  482. package/utils/docs/toSidebarItems.d.ts.map +1 -0
  483. package/utils/docs/toSidebarItems.js +36 -0
  484. package/utils/docs/toSidebarItems.js.map +1 -0
  485. package/utils/font-fallbacks.css +176 -0
  486. package/utils/fonts.d.ts +1 -0
  487. package/utils/fonts.d.ts.map +1 -1
  488. package/utils/fonts.js +12 -0
  489. package/utils/fonts.js.map +1 -1
  490. package/utils/frame.d.ts +4 -0
  491. package/utils/frame.d.ts.map +1 -0
  492. package/utils/frame.js +11 -0
  493. package/utils/frame.js.map +1 -0
  494. package/utils/global.css +480 -266
  495. package/utils/line.module.css +17 -17
  496. package/utils/media.css +1 -1
  497. package/utils/ornament.module.css +19 -19
  498. package/utils/overlay.d.ts +4 -4
  499. package/utils/overlay.js +4 -4
  500. package/utils/pattern.module.css +45 -45
  501. package/utils/print.css +48 -34
  502. package/utils/reset.css +9 -2
  503. package/utils/roles.css +29 -29
  504. package/utils/seriesPatterns.js +3 -3
  505. package/utils/syntax.module.css +92 -0
  506. package/utils/theme.css +6 -6
  507. package/utils/tokens.css +262 -192
  508. package/utils/tokens.d.ts +51 -8
  509. package/utils/tokens.d.ts.map +1 -1
  510. package/utils/tokens.js +46 -9
  511. package/utils/tokens.js.map +1 -1
  512. package/utils/type.module.css +87 -87
  513. package/utils/useReleaseMark.d.ts +13 -0
  514. package/utils/useReleaseMark.d.ts.map +1 -0
  515. package/utils/useReleaseMark.js +44 -0
  516. package/utils/useReleaseMark.js.map +1 -0
  517. package/utils/view-transitions.css +122 -0
package/utils/global.css CHANGED
@@ -26,13 +26,20 @@
26
26
  margin: 0;
27
27
  }
28
28
 
29
+ /*
30
+ * The page's scrollbar gutter is always reserved [D201], so the content
31
+ * never moves sideways when the scrollbar comes or goes: a popup's scroll
32
+ * lock hiding it, a popup or a filter changing the page's height. With
33
+ * overlay scrollbars nothing is reserved.
34
+ */
29
35
  :where(html) {
36
+ scrollbar-gutter: stable;
30
37
  -webkit-text-size-adjust: none;
31
38
  text-size-adjust: none;
32
39
  block-size: 100%;
33
40
  color: var(--primary12);
34
41
  background-color: var(--role-ground);
35
- font-family: var(--ds-font-ui);
42
+ font-family: var(--fgd-font-ui);
36
43
  font-size: 100%;
37
44
  line-height: var(--font-lineheight-3);
38
45
  tab-size: 2;
@@ -111,7 +118,7 @@
111
118
  color: inherit;
112
119
  text-decoration-line: underline;
113
120
  text-decoration-color: var(--role-accent);
114
- text-decoration-thickness: var(--ds-stroke-1-5);
121
+ text-decoration-thickness: var(--border-size-1-5);
115
122
  text-underline-offset: 0.15em;
116
123
  }
117
124
 
@@ -140,10 +147,13 @@
140
147
  }
141
148
  }
142
149
  /*
143
- * Tokens (§1.5): Open Props non-color primitives, used as shipped, plus every
144
- * --ds- system extension. --ds- never holds a color [D112]. Units [D123]:
145
- * text rem, tracking em, leading unitless; spacing, strokes, radii and sizes
146
- * px; measure ch; print pt and mm (print values: print.css).
150
+ * Tokens (§1.5): Open Props non-color primitives, used as shipped, plus the
151
+ * system's own [D193]. A step between two Open Props steps joins its scale,
152
+ * named by its position to the nearest quarter: --size-px-2-5 (12 px) sits
153
+ * halfway between --size-px-2 (8 px) and --size-px-3 (16 px). Every other
154
+ * FairGarden-only token takes --fgd-, and none holds a color [D112].
155
+ * Units [D123]: text rem, tracking em, leading unitless; spacing, strokes,
156
+ * radii and sizes px; measure ch; print pt and mm (print values: print.css).
147
157
  */
148
158
  @layer tokens{
149
159
  :where(html){--size-000:-.5rem;--size-00:-.25rem;--size-1:.25rem;--size-2:.5rem;--size-3:1rem;--size-4:1.25rem;--size-5:1.5rem;--size-6:1.75rem;--size-7:2rem;--size-8:3rem;--size-9:4rem;--size-10:5rem;--size-11:7.5rem;--size-12:10rem;--size-13:15rem;--size-14:20rem;--size-15:30rem;--size-px-000:-8px;--size-px-00:-4px;--size-px-1:4px;--size-px-2:8px;--size-px-3:16px;--size-px-4:20px;--size-px-5:24px;--size-px-6:28px;--size-px-7:32px;--size-px-8:48px;--size-px-9:64px;--size-px-10:80px;--size-px-11:120px;--size-px-12:160px;--size-px-13:240px;--size-px-14:320px;--size-px-15:480px;--size-fluid-1:max(.5rem,min(1vw,1rem));--size-fluid-2:max(1rem,min(2vw,1.5rem));--size-fluid-3:max(1.5rem,min(3vw,2rem));--size-fluid-4:max(2rem,min(4vw,3rem));--size-fluid-5:max(4rem,min(5vw,5rem));--size-fluid-6:max(5rem,min(7vw,7.5rem));--size-fluid-7:max(7.5rem,min(10vw,10rem));--size-fluid-8:max(10rem,min(20vw,15rem));--size-fluid-9:max(15rem,min(30vw,20rem));--size-fluid-10:max(20rem,min(40vw,30rem));--size-content-1:20ch;--size-content-2:45ch;--size-content-3:60ch;--size-header-1:20ch;--size-header-2:25ch;--size-header-3:35ch;--size-xxs:240px;--size-xs:360px;--size-sm:480px;--size-md:768px;--size-lg:1024px;--size-xl:1440px;--size-xxl:1920px;--size-relative-000:-.5ch;--size-relative-00:-.25ch;--size-relative-1:.25ch;--size-relative-2:.5ch;--size-relative-3:1ch;--size-relative-4:1.25ch;--size-relative-5:1.5ch;--size-relative-6:1.75ch;--size-relative-7:2ch;--size-relative-8:3ch;--size-relative-9:4ch;--size-relative-10:5ch;--size-relative-11:7.5ch;--size-relative-12:10ch;--size-relative-13:15ch;--size-relative-14:20ch;--size-relative-15:30ch}
@@ -165,270 +175,337 @@
165
175
  }
166
176
  @layer tokens {
167
177
  :root {
168
- /* Spacing (§1.5.10): Open Props --size-px-* plus the system steps. */
169
- --ds-space-12: 12px;
170
- --ds-space-40: 40px;
171
- --ds-space-56: 56px;
172
- --ds-space-stack: 36px; /* named exception: H2 baseline → chapter hairline */
173
- --ds-space-eyebrow-rule: 14px; /* named exception [D100] */
174
- --ds-space-eyebrow-content: 19px; /* named exception [D100] */
175
- --ds-space-halo: var(--size-px-2);
176
- --ds-space-section: var(--ds-space-56);
177
- --ds-space-margin: var(--size-px-3);
178
-
179
- /* Strokes (§1.5.7): with --border-size-1 and --border-size-2. */
180
- --ds-stroke-0-75: 0.75px;
181
- --ds-stroke-1-25: 1.25px;
182
- --ds-stroke-1-5: 1.5px;
183
- --ds-stroke-3: 3px;
184
- --ds-stroke-4: 4px;
185
- --ds-stroke-8: 8px;
178
+ /* Spacing (§1.5.10): Open Props --size-px-* plus the in-between steps. */
179
+ --size-px-2-5: 12px;
180
+ --size-px-7-5: 40px;
181
+ --size-px-8-5: 56px;
182
+ --fgd-space-stack: 36px; /* named exception: H2 baseline → chapter hairline */
183
+ --fgd-space-eyebrow-rule: 14px; /* named exception [D100] */
184
+ --fgd-space-eyebrow-content: 19px; /* named exception [D100] */
185
+ --fgd-space-halo: var(--size-px-2);
186
+ --fgd-space-section: var(--size-px-8-5);
187
+ --fgd-space-margin: var(--size-px-3);
188
+
189
+ /* Strokes and borders (§1.5.7): Open Props --border-size-* plus the in-between steps. */
190
+ --border-size-0-75: 0.75px;
191
+ --border-size-1-25: 1.25px;
192
+ --border-size-1-5: 1.5px;
193
+ --border-size-2-25: 3px;
194
+ --border-size-2-75: 4px;
195
+ --border-size-3-5: 8px;
186
196
 
187
197
  /* Line geometry (§1.5.8, §4.6–§4.8). */
188
- --ds-dot-fine: 1px;
189
- --ds-dot-fine-pitch: 3px;
190
- --ds-dot: 2px;
191
- --ds-dot-pitch: 5px;
192
- --ds-dot-bold: 4px;
193
- --ds-dot-bold-pitch: 9px;
194
- --ds-dash-fine: 4px;
195
- --ds-dash-fine-gap: 3px;
196
- --ds-dash: 5px;
197
- --ds-dash-gap: 4px;
198
- --ds-double-gap: 4px;
199
- --ds-double-hair-gap: 3px;
198
+ --fgd-dot-fine: 1px;
199
+ --fgd-dot-fine-pitch: 3px;
200
+ --fgd-dot: 2px;
201
+ --fgd-dot-pitch: 5px;
202
+ --fgd-dot-bold: 4px;
203
+ --fgd-dot-bold-pitch: 9px;
204
+ --fgd-dash-fine: 4px;
205
+ --fgd-dash-fine-gap: 3px;
206
+ --fgd-dash: 5px;
207
+ --fgd-dash-gap: 4px;
208
+ --fgd-double-gap: 4px;
209
+ --fgd-double-hair-gap: 3px;
200
210
 
201
211
  /* Pattern geometry (§1.5.9). */
202
- --ds-speckle-grid: 16px;
203
- --ds-speckle-dot: 2px;
204
- --ds-sunburst-dot: 2.5px;
205
- --ds-sunburst-radius: 290px;
206
- --ds-sunburst-pitch: 6.5px;
207
- --ds-awning-stripe: 24px;
208
- --ds-dotgrid-dot: 1.5px;
209
- --ds-dotgrid-pitch: 16px;
210
- --ds-dotgrid-fine-dot: 1px;
211
- --ds-dotgrid-fine-pitch: 8px;
212
- --ds-graph-pitch: 16px;
213
- --ds-ruled-pitch: 27px;
214
- --ds-hatch-pitch: 6px;
215
- --ds-hatch-tile: 8px;
216
- --ds-dotscreen-dot: 1.25px;
217
- --ds-dotscreen-dot-heavy: 2px;
218
- --ds-dotscreen-pitch-1: 6px;
219
- --ds-dotscreen-pitch-2: 5px;
220
- --ds-dotscreen-pitch-3: 4px;
212
+ --fgd-speckle-grid: 16px;
213
+ --fgd-speckle-dot: 2px;
214
+ --fgd-sunburst-dot: 2.5px;
215
+ --fgd-sunburst-radius: 290px;
216
+ --fgd-sunburst-pitch: 6.5px;
217
+ --fgd-awning-stripe: 24px;
218
+ --fgd-dotgrid-dot: 1.5px;
219
+ --fgd-dotgrid-pitch: 16px;
220
+ --fgd-dotgrid-fine-dot: 1px;
221
+ --fgd-dotgrid-fine-pitch: 8px;
222
+ --fgd-graph-pitch: 16px;
223
+ --fgd-ruled-pitch: 27px;
224
+ --fgd-hatch-pitch: 6px;
225
+ --fgd-hatch-tile: 8px;
226
+ --fgd-dotscreen-dot: 1.25px;
227
+ --fgd-dotscreen-dot-heavy: 2px;
228
+ --fgd-dotscreen-pitch-1: 6px;
229
+ --fgd-dotscreen-pitch-2: 5px;
230
+ --fgd-dotscreen-pitch-3: 4px;
221
231
 
222
232
  /* Ornaments, terminals and markers (§1.5.16). */
223
- --ds-ornament-dot: 5px;
224
- --ds-ornament-dot-gap: 10px;
225
- --ds-ornament-star: 9px;
226
- --ds-zigzag-amplitude: 6px;
227
- --ds-zigzag-period: 12px;
228
- --ds-fringe-tick: 6px;
229
- --ds-fringe-pitch: 4px;
233
+ --fgd-ornament-dot: 5px;
234
+ --fgd-ornament-dot-gap: 10px;
235
+ --fgd-ornament-star: 9px;
236
+ --fgd-zigzag-amplitude: 6px;
237
+ --fgd-zigzag-period: 12px;
238
+ --fgd-fringe-tick: 6px;
239
+ --fgd-fringe-pitch: 4px;
230
240
  /*
231
241
  * The hill [D189]: amplitude 4.6% of the band's width, clamped between
232
242
  * these (the max is reached at about 1391 px); crest at 0.667 × width,
233
243
  * the right end falling 30% of the rise; no horizon rule on screen.
234
244
  */
235
- --ds-edge-hill-min: 12px;
236
- --ds-edge-hill-max: var(--size-px-9); /* 64 px */
237
- --ds-arrow-head: 6px;
238
- --ds-arrow-tick: 8px;
239
- --ds-mark-arm: 12px;
240
- --ds-mark-overhang: 6px;
241
- --ds-marker-trail: 5px;
242
- --ds-marker-timeline: 8px;
243
- --ds-marker-waypoint: 9px;
244
- --ds-marker-current: 10px;
245
-
246
- /* Radii (§1.5.11): with --radius-1 (2 px) and --radius-round. */
247
- --ds-radius-none: 0;
248
- --ds-radius-8: 8px;
249
- --ds-radius-20: 20px;
245
+ --fgd-edge-hill-min: 12px;
246
+ --fgd-edge-hill-max: var(--size-px-9); /* 64 px */
247
+ --fgd-arrow-head: 6px;
248
+ --fgd-arrow-tick: 8px;
249
+ --fgd-mark-arm: 12px;
250
+ --fgd-mark-overhang: 6px;
251
+ --fgd-marker-trail: 5px;
252
+ --fgd-marker-timeline: 8px;
253
+ --fgd-marker-waypoint: 9px;
254
+ --fgd-marker-current: 10px;
255
+
256
+ /* Radii (§1.5.11): Open Props --radius-1 (2 px) and --radius-round plus these steps. */
257
+ --radius-0: 0;
258
+ --radius-2-25: 8px;
259
+ /* File Tabs' folder tabs, shaped as paper tabs (the source's 12 px tab radius); frames keep --radius-2-25. */
260
+ --radius-2-75: 12px;
261
+ --radius-3-25: 20px;
250
262
  /* ≈ 1/7 of the frame's width, max 64 px; the frame's parent is its container. */
251
- --ds-radius-feature: min(calc(100cqi / 7), var(--size-px-9));
252
- /* Conditional radii [D171]: full radius while narrower than the viewport, 0 when full-bleed. */
253
- --ds-radius-conditional-8: clamp(0px, calc(100vw - 100%) * 1e5, var(--ds-radius-8));
254
- --ds-radius-conditional-20: clamp(0px, calc(100vw - 100%) * 1e5, var(--ds-radius-20));
255
-
256
- /* Type families (§1.5.5) [D159]; --ds-font-fine is set per mode (theme.css). */
257
- --ds-font-display: 'Fraunces Variable', 'Source Serif 4 Variable', var(--font-old-style);
258
- --ds-font-text: 'Source Serif 4 Variable', var(--font-transitional);
259
- --ds-font-ui: 'Figtree Variable', var(--font-geometric-humanist);
260
- --ds-font-mono: 'IBM Plex Mono', var(--font-mono);
261
- --ds-font-display-settings: 'SOFT' 0, 'WONK' 0;
262
- --ds-font-accent-settings: 'SOFT' 100, 'WONK' 1;
263
+ --fgd-radius-feature: min(calc(100cqi / 7), var(--size-px-9));
264
+ /* Conditional radii [D171], Open Props' --radius-conditional-* pattern: full radius while narrower than the viewport, 0 when full-bleed. */
265
+ --radius-conditional-2-25: clamp(0px, calc(100vw - 100%) * 1e5, var(--radius-2-25));
266
+ --radius-conditional-3-25: clamp(0px, calc(100vw - 100%) * 1e5, var(--radius-3-25));
267
+
268
+ /* Type families (§1.5.5) [D159]; --fgd-font-fine is set per mode (theme.css). Each webfont's metric-matched fallback follows it (utils/font-fallbacks.css) [D201]. */
269
+ --fgd-font-display: 'Fraunces Variable', 'Fraunces Fallback', 'Source Serif 4 Variable', var(--font-old-style);
270
+ --fgd-font-text: 'Source Serif 4 Variable', 'Source Serif 4 Fallback', var(--font-transitional);
271
+ --fgd-font-ui: 'Figtree Variable', 'Figtree Fallback', var(--font-geometric-humanist);
272
+ --fgd-font-mono: 'IBM Plex Mono', 'IBM Plex Mono Fallback', var(--font-mono);
273
+ --fgd-font-display-settings: 'SOFT' 0, 'WONK' 0;
274
+ --fgd-font-accent-settings: 'SOFT' 100, 'WONK' 1;
263
275
 
264
276
  /* Type sizes (§1.5.6): rem, fluid from 360 px to 1024 px. */
265
- --ds-font-size-display-xl: clamp(2.5625rem, calc(2.5625rem + 1.125 * (100vw - 22.5rem) / 41.5), 3.6875rem); /* 41 → 59 px */
266
- --ds-font-size-display: clamp(2.125rem, calc(2.125rem + 0.9375 * (100vw - 22.5rem) / 41.5), 3.0625rem); /* 34 → 49 px */
267
- --ds-font-size-h2: clamp(1.75rem, calc(1.75rem + 0.375 * (100vw - 22.5rem) / 41.5), 2.125rem); /* 28 → 34 px */
268
- --ds-font-size-itemhead: clamp(1.375rem, calc(1.375rem + 0.125 * (100vw - 22.5rem) / 41.5), var(--font-size-4)); /* 22 → 24 px */
269
- --ds-font-size-kicker: clamp(1.125rem, calc(1.125rem + 0.125 * (100vw - 22.5rem) / 41.5), var(--font-size-3)); /* 18 → 20 px */
270
- --ds-font-size-subhead: clamp(1.125rem, calc(1.125rem + 0.0625 * (100vw - 22.5rem) / 41.5), 1.1875rem); /* 18 → 19 px */
271
- --ds-font-size-lead: clamp(var(--font-size-3), calc(1.25rem + 0.125 * (100vw - 22.5rem) / 41.5), 1.375rem); /* 20 → 22 px */
272
- --ds-font-size-quote: clamp(var(--font-size-4), calc(1.5rem + 0.5 * (100vw - 22.5rem) / 41.5), var(--font-size-5)); /* 24 → 32 px */
273
- --ds-font-size-body: clamp(1.0625rem, calc(1.0625rem + 0.0625 * (100vw - 22.5rem) / 41.5), 1.125rem); /* 17 → 18 px */
274
- --ds-font-size-body-ui: clamp(var(--font-size-1), calc(1rem + 0.0625 * (100vw - 22.5rem) / 41.5), 1.0625rem); /* 16 → 17 px */
275
- --ds-font-size-marquee: clamp(1.375rem, calc(1.375rem + 0.25 * (100vw - 22.5rem) / 41.5), 1.625rem); /* 22 → 26 px */
276
- --ds-font-size-button-lg: 1.0625rem; /* 17 px */
277
- --ds-font-size-button: clamp(0.875rem, calc(0.875rem + 0.0625 * (100vw - 22.5rem) / 41.5), 0.9375rem); /* 14 → 15 px */
278
- --ds-font-size-footnote: 0.9375rem; /* 15 px */
279
- --ds-font-size-caption: 0.875rem; /* 14 px */
280
- --ds-font-size-eyebrow: clamp(0.8125rem, calc(0.8125rem + 0.0625 * (100vw - 22.5rem) / 41.5), 0.875rem); /* 13 → 14 px */
281
- --ds-font-size-label: 0.8125rem; /* 13 px */
282
- --ds-font-size-url: 8pt; /* print only */
277
+ --fgd-font-size-display-xl: clamp(2.5625rem, calc(2.5625rem + 1.125 * (100vw - 22.5rem) / 41.5), 3.6875rem); /* 41 → 59 px */
278
+ --fgd-font-size-display: clamp(2.125rem, calc(2.125rem + 0.9375 * (100vw - 22.5rem) / 41.5), 3.0625rem); /* 34 → 49 px */
279
+ --fgd-font-size-h2: clamp(1.75rem, calc(1.75rem + 0.375 * (100vw - 22.5rem) / 41.5), 2.125rem); /* 28 → 34 px */
280
+ --fgd-font-size-itemhead: clamp(1.375rem, calc(1.375rem + 0.125 * (100vw - 22.5rem) / 41.5), var(--font-size-4)); /* 22 → 24 px */
281
+ --fgd-font-size-kicker: clamp(1.125rem, calc(1.125rem + 0.125 * (100vw - 22.5rem) / 41.5), var(--font-size-3)); /* 18 → 20 px */
282
+ --fgd-font-size-subhead: clamp(1.125rem, calc(1.125rem + 0.0625 * (100vw - 22.5rem) / 41.5), 1.1875rem); /* 18 → 19 px */
283
+ --fgd-font-size-lead: clamp(var(--font-size-3), calc(1.25rem + 0.125 * (100vw - 22.5rem) / 41.5), 1.375rem); /* 20 → 22 px */
284
+ --fgd-font-size-quote: clamp(var(--font-size-4), calc(1.5rem + 0.5 * (100vw - 22.5rem) / 41.5), var(--font-size-5)); /* 24 → 32 px */
285
+ --fgd-font-size-body: clamp(1.0625rem, calc(1.0625rem + 0.0625 * (100vw - 22.5rem) / 41.5), 1.125rem); /* 17 → 18 px */
286
+ --fgd-font-size-body-ui: clamp(var(--font-size-1), calc(1rem + 0.0625 * (100vw - 22.5rem) / 41.5), 1.0625rem); /* 16 → 17 px */
287
+ --fgd-font-size-marquee: clamp(1.375rem, calc(1.375rem + 0.25 * (100vw - 22.5rem) / 41.5), 1.625rem); /* 22 → 26 px */
288
+ --fgd-font-size-button-lg: 1.0625rem; /* 17 px */
289
+ --fgd-font-size-button: clamp(0.875rem, calc(0.875rem + 0.0625 * (100vw - 22.5rem) / 41.5), 0.9375rem); /* 14 → 15 px */
290
+ --fgd-font-size-footnote: 0.9375rem; /* 15 px */
291
+ --fgd-font-size-caption: 0.875rem; /* 14 px */
292
+ --fgd-font-size-eyebrow: clamp(0.8125rem, calc(0.8125rem + 0.0625 * (100vw - 22.5rem) / 41.5), 0.875rem); /* 13 → 14 px */
293
+ --fgd-font-size-label: 0.8125rem; /* 13 px */
294
+ --fgd-font-size-url: 8pt; /* print only */
283
295
  /* type-stat: display-xl on screen, 24 pt in print (§1.5.6, §8.8), where display-xl prints 26 pt (print.css). */
284
- --ds-font-size-stat: var(--ds-font-size-display-xl);
285
- --ds-lockup-accent-factor: 1.45; /* provisional: compute from font metrics [D64] */
296
+ --fgd-font-size-stat: var(--fgd-font-size-display-xl);
297
+ --fgd-lockup-accent-factor: 1.45; /* provisional: compute from font metrics [D64] */
286
298
 
287
299
  /* Leading, tracking, numerals, measure (§1.5.6). */
288
- --ds-leading-display: 1;
289
- --ds-leading-compact: 1.4;
290
- --ds-leading-reading: 1.6;
291
- --ds-tracking-tight: -0.01em;
292
- --ds-numerals-prose: oldstyle-nums proportional-nums;
293
- --ds-numerals-data: lining-nums tabular-nums;
294
- --ds-measure-reading: 66ch;
295
- --ds-measure-print: 66ch;
300
+ --fgd-leading-display: 1;
301
+ --fgd-leading-compact: 1.4;
302
+ --fgd-leading-reading: 1.6;
303
+ --font-letterspacing-0-5: -0.01em; /* between Open Props' --font-letterspacing-0 (-0.05em) and --font-letterspacing-1 (0.025em) */
304
+ --fgd-numerals-prose: oldstyle-nums proportional-nums;
305
+ --fgd-numerals-data: lining-nums tabular-nums;
306
+ --fgd-measure-reading: 66ch;
307
+ --fgd-measure-print: 66ch;
296
308
 
297
309
  /* Sizing and hit targets (§1.5.12). */
298
- --ds-size-control-md: 40px;
299
- --ds-size-control-xl: 56px;
300
- --ds-size-hit: 44px;
301
- --ds-size-icon-block: 36px;
310
+ --fgd-size-control-md: 40px;
311
+ --fgd-size-control-xl: 56px;
312
+ --fgd-size-hit: 44px;
313
+ /* The room a hanging File Tabs control (the code block's ⋮) needs past its host's edge: its 20 px ear and clearance; hosts leave it free and unclipped (§9.13). */
314
+ --fgd-size-file-tabs-control: var(--size-px-5);
315
+ --fgd-size-icon-block: 36px;
302
316
  /* The logo mark in a lockup, a prominent mark sized to the header bar: 40 px, 48 px from --lg-n-above, 32 px below --xs-n-below (§1.5.12). */
303
- --ds-size-logo: var(--ds-size-control-md);
304
- --ds-size-bar-utility: 36px;
305
- --ds-size-art-s: 152px;
306
- --ds-size-art-l: 312px;
307
- --ds-size-art-plate-wide: 640px;
308
- --ds-size-thumb: 72px;
309
- --ds-size-avatar-xl: 128px;
310
- --ds-size-tick-minor: 6px; /* slider minor tick */
311
- --ds-size-pager-dot: 10px; /* step pager position dot, outlined (§9.9) */
312
- --ds-size-pager-dot-current: 12px; /* the current dot, solid (§9.9) */
317
+ --fgd-size-logo: var(--fgd-size-control-md);
318
+ --fgd-size-bar-utility: 36px;
319
+ --fgd-size-art-s: 152px;
320
+ --fgd-size-art-l: 312px;
321
+ --fgd-size-art-plate-wide: 640px;
322
+ --fgd-size-thumb: 72px;
323
+ --fgd-size-avatar-xl: 128px;
324
+ --fgd-size-tick-minor: 6px; /* slider minor tick */
325
+ --fgd-size-pager-dot: 10px; /* step pager position dot, outlined (§9.9) */
326
+ --fgd-size-pager-dot-current: 12px; /* the current dot, solid (§9.9) */
313
327
 
314
328
  /* Overlay panels (§10.1, §9.7, §10.16). JS mirrors: utils/tokens.ts. */
315
- --ds-size-tooltip: 280px; /* tooltip max width */
316
- --ds-size-overlay-max: 360px; /* anchored panel max width (popover, preview card, select list) */
317
- --ds-size-menu-min: 200px; /* menu min width */
318
- --ds-popup-offset: var(--size-px-2); /* 8 px, panel to trigger */
319
- --ds-popup-clearance: var(--size-px-3); /* 16 px, panel to viewport edge (base --ds-space-margin) */
329
+ --fgd-size-tooltip: 280px; /* tooltip max width */
330
+ --fgd-size-overlay-max: 360px; /* anchored panel max width (popover, preview card, select list) */
331
+ --fgd-size-menu-min: 200px; /* menu min width */
332
+ --fgd-popup-offset: var(--size-px-2); /* 8 px, panel to trigger */
333
+ --fgd-popup-clearance: var(--size-px-3); /* 16 px, panel to viewport edge (base --fgd-space-margin) */
320
334
 
321
335
  /*
322
336
  * Table density (§8.2, §1.5.16) [D83, D169]: cell padding, the minimum
323
337
  * row pitch and the row-rule switch, so a Ground's data-density reaches
324
- * every Table inside it (the density sets below). --ds-table-row-rule is
338
+ * every Table inside it (the density sets below). --fgd-table-row-rule is
325
339
  * the width of the --role-rule row rule that replaces the --role-hairline
326
- * one: 0 while padding holds --ds-space-12, --border-size-1 when compact.
340
+ * one: 0 while padding holds --size-px-2-5, --border-size-1 when compact.
327
341
  */
328
- --ds-table-pad-block: var(--ds-space-12);
329
- --ds-table-pad-inline: var(--size-px-3);
330
- --ds-table-row-min: 0px;
331
- --ds-table-row-rule: 0px;
342
+ --fgd-table-pad-block: var(--size-px-2-5);
343
+ --fgd-table-pad-inline: var(--size-px-3);
344
+ --fgd-table-row-min: 0px;
345
+ --fgd-table-row-rule: 0px;
332
346
 
333
347
  /* Containers (§1.5.13): with --size-sm (480 px) and --size-content-2. */
334
- --ds-container-content: 1120px;
335
- --ds-container-wide: 1360px;
348
+ --fgd-container-content: 1120px;
349
+ --fgd-container-wide: 1360px;
336
350
 
337
351
  /* Focus (§1.5.14): 2 px ring at a 2 px offset, color --primary12. */
338
- --ds-focus-width: var(--border-size-2);
339
- --ds-focus-offset: var(--border-size-2);
352
+ --fgd-focus-width: var(--border-size-2);
353
+ --fgd-focus-offset: var(--border-size-2);
340
354
 
341
355
  /* Motion (§1.5.15): with --ease-out-3. */
342
- --ds-duration-instant: 0ms;
343
- --ds-duration-quick: 120ms;
344
- --ds-duration-disclosure: 200ms;
345
- --ds-delay-tooltip: 500ms;
346
- --ds-duration-toast: 6s;
356
+ --fgd-duration-instant: 0ms;
357
+ --fgd-duration-quick: 120ms;
358
+ --fgd-duration-disclosure: 200ms;
359
+ --fgd-delay-tooltip: 500ms;
360
+ --fgd-duration-toast: 6s;
361
+ /*
362
+ * The expanding box's View Transitions morph (a field-like trigger into
363
+ * its dialog). Open runs --fgd-duration-expand on --fgd-ease-expand;
364
+ * close runs --fgd-duration-disclosure, so it stays the faster. The ease
365
+ * is a critically damped spring (stiffness 0.3, damping 1) sampled as
366
+ * linear() stops, its one undershoot stop clipped to 0 so the curve
367
+ * never leaves [0, 1]: no overshoot. JS mirror: utils/tokens.ts.
368
+ */
369
+ --fgd-duration-expand: 333ms;
370
+ /*
371
+ * The anchored morph's close (the outline morph, §9.17) [D204]: an alias
372
+ * of --fgd-duration-disclosure (200 ms), so the Morph tier owns its own
373
+ * name and a close is never slower than its open. The outline morph reads
374
+ * it, --fgd-duration-expand and --fgd-ease-expand from the trigger at each
375
+ * open and close; 0ms turns the morph off. JS mirror: utils/tokens.ts.
376
+ */
377
+ --fgd-duration-collapse: var(--fgd-duration-disclosure);
378
+ /*
379
+ * The modal morph (the outline morph on Dialog, Alert Dialog and the
380
+ * drawer's sheets, §9.17) [D206]: the same curve, stretched for the
381
+ * longer travel from a trigger to a panel or a full sheet; the close is
382
+ * 0.6 × the open, the ratio of 333 to 200. 0ms turns that morph off.
383
+ * JS mirror: SURFACE_DURATION_MS in utils/tokens.ts.
384
+ */
385
+ --fgd-duration-expand-surface: 400ms;
386
+ --fgd-duration-collapse-surface: 240ms;
387
+ --fgd-ease-expand: linear(
388
+ 0,
389
+ 0,
390
+ 0.294,
391
+ 0.401,
392
+ 0.58,
393
+ 0.706,
394
+ 0.75,
395
+ 0.825,
396
+ 0.878,
397
+ 0.896,
398
+ 0.927,
399
+ 0.949,
400
+ 0.957,
401
+ 0.97,
402
+ 0.979,
403
+ 0.982,
404
+ 0.987,
405
+ 0.991,
406
+ 0.992,
407
+ 0.995,
408
+ 0.996,
409
+ 0.998,
410
+ 0.999,
411
+ 0.999,
412
+ 1
413
+ );
414
+ /*
415
+ * The code block's variant and JS/TS swap: the rendered code swaps after
416
+ * this delay while its changed lines grow or shrink over it. JS mirror
417
+ * (useCode's transformDelay / variantSwapDelay): utils/tokens.ts.
418
+ */
419
+ --fgd-duration-swap: 350ms;
347
420
  /* Desktop Navigation Menu hover intent [D182]; JS mirror: utils/tokens.ts. */
348
- --ds-delay-nav-open: 150ms;
349
- --ds-delay-nav-close: 300ms;
421
+ --fgd-delay-nav-open: 150ms;
422
+ --fgd-delay-nav-close: 300ms;
350
423
 
351
- /* Media (§1.5.16): with --ratio-widescreen, --ratio-portrait, --ratio-square. */
352
- --ds-ratio-photo: 3 / 2;
424
+ /* Media (§1.5.16): joins Open Props' --ratio-widescreen, --ratio-portrait and --ratio-square. */
425
+ --ratio-photo: 3 / 2;
353
426
 
354
427
  /* Print (§1.5.13, §1.5.16). */
355
- --ds-print-margin-inline: 18mm;
356
- --ds-print-margin-block: 20mm;
357
- --ds-print-live-width: 174mm;
358
- --ds-print-figure-max: 100mm;
359
- --ds-print-hero-max: 60mm;
360
- --ds-print-qr: 22mm;
428
+ --fgd-print-margin-inline: 18mm;
429
+ --fgd-print-margin-block: 20mm;
430
+ --fgd-print-live-width: 174mm;
431
+ --fgd-print-figure-max: 100mm;
432
+ --fgd-print-hero-max: 60mm;
433
+ --fgd-print-qr: 22mm;
361
434
  /* The trail and timeline spines in print: 0.75 pt, 3 pt dash, 2.5 pt gap (§1.5.8, §4.7.1) [D142]. */
362
- --ds-print-trail-stroke: 0.75pt;
363
- --ds-print-trail-dash: 3pt;
364
- --ds-print-trail-gap: 2.5pt;
435
+ --fgd-print-trail-stroke: 0.75pt;
436
+ --fgd-print-trail-dash: 3pt;
437
+ --fgd-print-trail-gap: 2.5pt;
365
438
  }
366
439
 
367
440
  @media (min-width: 480px) {
368
441
  :root {
369
- --ds-space-margin: var(--size-px-5);
442
+ --fgd-space-margin: var(--size-px-5);
370
443
  }
371
444
  }
372
445
 
373
446
  @media (min-width: 768px) {
374
447
  :root {
375
- --ds-space-margin: var(--size-px-7);
448
+ --fgd-space-margin: var(--size-px-7);
376
449
  }
377
450
  }
378
451
 
379
452
  @media (max-width: 359.98px) {
380
453
  :root {
381
- --ds-size-logo: var(--size-px-7);
454
+ --fgd-size-logo: var(--size-px-7);
382
455
  }
383
456
  }
384
457
 
385
458
  @media (min-width: 1024px) {
386
459
  :root {
387
- --ds-size-logo: var(--size-px-8);
388
- --ds-space-margin: var(--ds-space-40);
389
- --ds-space-section: var(--size-px-10);
390
- --ds-ruled-pitch: 29px;
460
+ --fgd-size-logo: var(--size-px-8);
461
+ --fgd-space-margin: var(--size-px-7-5);
462
+ --fgd-space-section: var(--size-px-10);
463
+ --fgd-ruled-pitch: 29px;
391
464
  }
392
465
  }
393
466
 
394
467
  /* Reduced motion: every duration is instant (§1.5.15). */
395
468
  @media (prefers-reduced-motion: reduce) {
396
469
  :root {
397
- --ds-duration-quick: var(--ds-duration-instant);
398
- --ds-duration-disclosure: var(--ds-duration-instant);
470
+ --fgd-duration-quick: var(--fgd-duration-instant);
471
+ --fgd-duration-disclosure: var(--fgd-duration-instant);
472
+ --fgd-duration-expand: var(--fgd-duration-instant);
473
+ --fgd-duration-expand-surface: var(--fgd-duration-instant);
474
+ --fgd-duration-collapse-surface: var(--fgd-duration-instant);
475
+ --fgd-duration-swap: var(--fgd-duration-instant);
399
476
  }
400
477
  }
401
478
 
402
479
  /* Density sets (§1.5.16), set per module, never by breakpoint (§5.8). */
403
480
  [data-density='spacious'] {
404
- --ds-space-section: var(--size-px-10);
481
+ --fgd-space-section: var(--size-px-10);
405
482
  }
406
483
 
407
484
  /* Default and spacious keep the default table; restated so a nested module resets a compact parent. */
408
485
  [data-density='default'],
409
486
  [data-density='spacious'] {
410
- --ds-table-pad-block: var(--ds-space-12);
411
- --ds-table-pad-inline: var(--size-px-3);
412
- --ds-table-row-min: 0px;
413
- --ds-table-row-rule: 0px;
487
+ --fgd-table-pad-block: var(--size-px-2-5);
488
+ --fgd-table-pad-inline: var(--size-px-3);
489
+ --fgd-table-row-min: 0px;
490
+ --fgd-table-row-rule: 0px;
414
491
  }
415
492
 
416
- /* Compact: cells --size-px-2 × --ds-space-12, rows ≥ 32 px, --role-rule row rules [D83]. */
493
+ /* Compact: cells --size-px-2 × --size-px-2-5, rows ≥ 32 px, --role-rule row rules [D83]. */
417
494
  [data-density='compact'] {
418
- --ds-space-section: var(--size-px-7);
419
- --ds-table-pad-block: var(--size-px-2);
420
- --ds-table-pad-inline: var(--ds-space-12);
421
- --ds-table-row-min: var(--size-px-7);
422
- --ds-table-row-rule: var(--border-size-1);
495
+ --fgd-space-section: var(--size-px-7);
496
+ --fgd-table-pad-block: var(--size-px-2);
497
+ --fgd-table-pad-inline: var(--size-px-2-5);
498
+ --fgd-table-row-min: var(--size-px-7);
499
+ --fgd-table-row-rule: var(--border-size-1);
423
500
  }
424
501
 
425
502
  @media (min-width: 1024px) {
426
503
  [data-density='spacious'] {
427
- --ds-space-section: var(--size-px-11);
504
+ --fgd-space-section: var(--size-px-11);
428
505
  }
429
506
 
430
507
  [data-density='compact'] {
431
- --ds-space-section: var(--ds-space-40);
508
+ --fgd-space-section: var(--size-px-7-5);
432
509
  }
433
510
  }
434
511
  }
@@ -444,31 +521,31 @@
444
521
  * every other scope, and on the night band wherever its --role-seam turns
445
522
  * visible (dark mode), so the band shows its straight seam rule instead.
446
523
  */
447
- --ds-edge-shaped: block;
524
+ --fgd-edge-shaped: block;
448
525
 
449
526
  /*
450
527
  * Hover underline switches [D181], `none` or `underline`, set per scope
451
- * by the role maps (roles.css), like --ds-edge-shaped:
452
- * - --ds-link-hover-line: `underline` where --role-link-hover is
528
+ * by the role maps (roles.css), like --fgd-edge-shaped:
529
+ * - --fgd-link-hover-line: `underline` where --role-link-hover is
453
530
  * --primary12 (saturated fields, royal, brick, dark rose and heather),
454
531
  * so a hover that would change only an ink also underlines;
455
- * - --ds-soft-hover-line: `underline` where soft fills drop (the
532
+ * - --fgd-soft-hover-line: `underline` where soft fills drop (the
456
533
  * pastels, forest, the solid fields), so the outline Button's hover
457
534
  * takes the bare-text underline instead of its --primary3 fill.
458
535
  */
459
- --ds-link-hover-line: none;
460
- --ds-soft-hover-line: none;
536
+ --fgd-link-hover-line: none;
537
+ --fgd-soft-hover-line: none;
461
538
 
462
539
  /*
463
540
  * Chart sequential-cell switches (§8.7) [D125, D167], `display` values
464
- * set per scope by the role maps (roles.css), like --ds-edge-shaped: a
541
+ * set per scope by the role maps (roles.css), like --fgd-edge-shaped: a
465
542
  * light base ground (and a `white` plate) shows the flat screen fills
466
- * (--ds-series-fill: inline); every other ground shows the one-ink
467
- * patterns on screen (--ds-series-pattern: inline). The odd-slot ink is
543
+ * (--fgd-series-fill: inline); every other ground shows the one-ink
544
+ * patterns on screen (--fgd-series-pattern: inline). The odd-slot ink is
468
545
  * the --role-series-odd alias.
469
546
  */
470
- --ds-series-fill: inline;
471
- --ds-series-pattern: none;
547
+ --fgd-series-fill: inline;
548
+ --fgd-series-pattern: none;
472
549
  }
473
550
  }
474
551
  /* Generated by scripts/build-colors.js. Do not edit. */
@@ -2922,21 +2999,21 @@
2922
2999
  :root,
2923
3000
  [data-theme='light'] {
2924
3001
  color-scheme: light;
2925
- --ds-font-fine: var(--ds-font-text);
2926
- --ds-muted-weight-step: 0;
3002
+ --fgd-font-fine: var(--fgd-font-text);
3003
+ --fgd-muted-weight-step: 0;
2927
3004
  }
2928
3005
 
2929
3006
  [data-theme='dark'] {
2930
3007
  color-scheme: dark;
2931
- --ds-font-fine: var(--ds-font-ui);
2932
- --ds-muted-weight-step: 100;
3008
+ --fgd-font-fine: var(--fgd-font-ui);
3009
+ --fgd-muted-weight-step: 100;
2933
3010
  }
2934
3011
 
2935
3012
  @media only screen and (prefers-color-scheme: dark) {
2936
3013
  :root:not([data-theme='light']) {
2937
3014
  color-scheme: dark;
2938
- --ds-font-fine: var(--ds-font-ui);
2939
- --ds-muted-weight-step: 100;
3015
+ --fgd-font-fine: var(--fgd-font-ui);
3016
+ --fgd-muted-weight-step: 100;
2940
3017
  }
2941
3018
  }
2942
3019
  }
@@ -2998,7 +3075,7 @@
2998
3075
  *
2999
3076
  * Charts [D125]: --role-series-odd is the odd series slots' ink,
3000
3077
  * --secondary11 on light base grounds (and a `white` plate) and --primary12
3001
- * elsewhere (§8.7); the --ds-series-fill / --ds-series-pattern switches
3078
+ * elsewhere (§8.7); the --fgd-series-fill / --fgd-series-pattern switches
3002
3079
  * (tokens.css) pick the sequential cells' screen fill or one-ink pattern.
3003
3080
  */
3004
3081
  @layer roles {
@@ -3114,11 +3191,11 @@
3114
3191
  --role-danger-hover: var(--danger12);
3115
3192
  --role-danger-text: var(--danger11);
3116
3193
  /* Switches (tokens.css): shaped edges only on the night band in light mode [D179]. */
3117
- --ds-edge-shaped: none;
3118
- --ds-link-hover-line: none;
3119
- --ds-soft-hover-line: none;
3120
- --ds-series-fill: none;
3121
- --ds-series-pattern: inline;
3194
+ --fgd-edge-shaped: none;
3195
+ --fgd-link-hover-line: none;
3196
+ --fgd-soft-hover-line: none;
3197
+ --fgd-series-fill: none;
3198
+ --fgd-series-pattern: inline;
3122
3199
  }
3123
3200
 
3124
3201
  /* Tone-resolved aliases [D155, D141]. */
@@ -3128,8 +3205,8 @@
3128
3205
  --role-status-fill: var(--secondary4);
3129
3206
  /* Two-ink charts: odd slots --secondary11 and the sequential screen fills, in both modes (§8.7). */
3130
3207
  --role-series-odd: var(--secondary11);
3131
- --ds-series-fill: inline;
3132
- --ds-series-pattern: none;
3208
+ --fgd-series-fill: inline;
3209
+ --fgd-series-pattern: none;
3133
3210
  }
3134
3211
 
3135
3212
  [data-tone='tinted'] {
@@ -3148,7 +3225,7 @@
3148
3225
  [data-tone='solid-dark'] {
3149
3226
  --role-soft-hover: var(--role-ground);
3150
3227
  --role-soft-hover-face: var(--role-halo);
3151
- --ds-soft-hover-line: underline;
3228
+ --fgd-soft-hover-line: underline;
3152
3229
  }
3153
3230
 
3154
3231
  /* Dark fixed scopes: a pill fill that reaches 3:1 is its own edge. */
@@ -3169,7 +3246,7 @@
3169
3246
  /* One ink [D14]: link hover is that ink plus the underline; selection hovers the inverse pair [D181]. */
3170
3247
  --role-link-hover: var(--primary12);
3171
3248
  --role-select-hover: var(--primary11);
3172
- --ds-link-hover-line: underline;
3249
+ --fgd-link-hover-line: underline;
3173
3250
  /* The ink pill. */
3174
3251
  --role-pill: var(--primary12);
3175
3252
  --role-pill-label: var(--role-inverse);
@@ -3240,7 +3317,7 @@
3240
3317
  --role-grain-light: var(--primary4);
3241
3318
  --role-grain-dark: var(--primary1);
3242
3319
  /* The one seam tone separates (from a light page ground): the shaped edge may sit here [D179]. */
3243
- --ds-edge-shaped: block;
3320
+ --fgd-edge-shaped: block;
3244
3321
  }
3245
3322
 
3246
3323
  [data-ground='forest'] {
@@ -3262,7 +3339,7 @@
3262
3339
  --role-grain-light: var(--primary8);
3263
3340
  --role-grain-dark: var(--primary6);
3264
3341
  --role-disabled-edge: var(--primary12); /* one text ink [D85, D115] */
3265
- --ds-muted-weight-step: 0; /* no muted tier [D175] */
3342
+ --fgd-muted-weight-step: 0; /* no muted tier [D175] */
3266
3343
  }
3267
3344
 
3268
3345
  [data-ground='leaf'] {
@@ -3281,7 +3358,7 @@
3281
3358
  --role-action-edge: var(--primary12);
3282
3359
  --role-grain-light: var(--secondary8);
3283
3360
  --role-grain-dark: var(--secondary10);
3284
- --ds-muted-weight-step: 0; /* no muted tier [D175] */
3361
+ --fgd-muted-weight-step: 0; /* no muted tier [D175] */
3285
3362
  }
3286
3363
 
3287
3364
  [data-ground='amber'] {
@@ -3300,7 +3377,7 @@
3300
3377
  --role-action-edge: var(--primary12);
3301
3378
  --role-grain-light: var(--secondary6);
3302
3379
  --role-grain-dark: var(--secondary8);
3303
- --ds-muted-weight-step: 0; /* no muted tier [D175] */
3380
+ --fgd-muted-weight-step: 0; /* no muted tier [D175] */
3304
3381
  }
3305
3382
 
3306
3383
  [data-ground='clay'] {
@@ -3319,7 +3396,7 @@
3319
3396
  --role-action-edge: var(--primary12);
3320
3397
  --role-grain-light: var(--secondary8);
3321
3398
  --role-grain-dark: var(--secondary10);
3322
- --ds-muted-weight-step: 0; /* no muted tier [D175] */
3399
+ --fgd-muted-weight-step: 0; /* no muted tier [D175] */
3323
3400
  }
3324
3401
 
3325
3402
  [data-ground='pink'] {
@@ -3337,7 +3414,7 @@
3337
3414
  --role-action-label: var(--primary1);
3338
3415
  --role-action-edge: var(--primary12);
3339
3416
  --role-grain-light: var(--secondary7);
3340
- --ds-muted-weight-step: 0; /* no muted tier [D175] */
3417
+ --fgd-muted-weight-step: 0; /* no muted tier [D175] */
3341
3418
  }
3342
3419
 
3343
3420
  [data-ground='royal'] {
@@ -3355,7 +3432,7 @@
3355
3432
  --role-action-label: var(--secondary-contrast);
3356
3433
  --role-action-edge: var(--secondary9);
3357
3434
  --role-grain-dark: var(--secondary7);
3358
- --ds-muted-weight-step: 0; /* no muted tier [D175] */
3435
+ --fgd-muted-weight-step: 0; /* no muted tier [D175] */
3359
3436
  }
3360
3437
 
3361
3438
  [data-ground='brick'] {
@@ -3376,7 +3453,7 @@
3376
3453
  --role-status-text: var(--secondary12);
3377
3454
  --role-grain-light: var(--secondary8);
3378
3455
  --role-grain-dark: var(--secondary6);
3379
- --ds-muted-weight-step: 0; /* no muted tier [D175] */
3456
+ --fgd-muted-weight-step: 0; /* no muted tier [D175] */
3380
3457
  }
3381
3458
 
3382
3459
  /*
@@ -3425,7 +3502,7 @@
3425
3502
  */
3426
3503
  [data-theme='dark']:not([data-ground]) [data-ground='night'] {
3427
3504
  --role-seam: var(--primary12);
3428
- --ds-edge-shaped: none;
3505
+ --fgd-edge-shaped: none;
3429
3506
  }
3430
3507
 
3431
3508
  /*
@@ -3456,7 +3533,7 @@
3456
3533
  --role-pill: var(--secondary9);
3457
3534
  --role-pill-label: var(--secondary-contrast);
3458
3535
  --role-pill-edge: var(--secondary9);
3459
- --ds-link-hover-line: none;
3536
+ --fgd-link-hover-line: none;
3460
3537
  }
3461
3538
 
3462
3539
  [data-theme='dark'] [data-ground='white'][data-scheme='page'] {
@@ -3492,14 +3569,14 @@
3492
3569
  --role-select-text-label: var(--role-select-mark);
3493
3570
  --role-select-text-edge: var(--role-select-edge);
3494
3571
  --role-select-text-hover: var(--role-select-hover);
3495
- --ds-link-hover-line: none;
3572
+ --fgd-link-hover-line: none;
3496
3573
  }
3497
3574
 
3498
3575
  [data-theme='dark'] [data-ground='rose'][data-scheme='page'],
3499
3576
  [data-theme='dark'] [data-ground='heather'][data-scheme='page'] {
3500
3577
  /* No text-safe accent (--red9 4.17, --purple10 3.55): links stay ink, and hover adds the underline [D176, D181]. */
3501
3578
  --role-link-hover: var(--primary12);
3502
- --ds-link-hover-line: underline;
3579
+ --fgd-link-hover-line: underline;
3503
3580
  }
3504
3581
 
3505
3582
  [data-theme='dark'] [data-ground='heather'][data-scheme='page'] {
@@ -3561,7 +3638,7 @@
3561
3638
  --role-pill: var(--secondary9);
3562
3639
  --role-pill-label: var(--secondary-contrast);
3563
3640
  --role-pill-edge: var(--secondary9);
3564
- --ds-link-hover-line: none;
3641
+ --fgd-link-hover-line: none;
3565
3642
  }
3566
3643
 
3567
3644
  :root:not([data-theme='light']) [data-ground='white'][data-scheme='page'] {
@@ -3596,14 +3673,14 @@
3596
3673
  --role-select-text-label: var(--role-select-mark);
3597
3674
  --role-select-text-edge: var(--role-select-edge);
3598
3675
  --role-select-text-hover: var(--role-select-hover);
3599
- --ds-link-hover-line: none;
3676
+ --fgd-link-hover-line: none;
3600
3677
  }
3601
3678
 
3602
3679
  :root:not([data-theme='light']) [data-ground='rose'][data-scheme='page'],
3603
3680
  :root:not([data-theme='light']) [data-ground='heather'][data-scheme='page'] {
3604
3681
  /* No text-safe accent (--red9 4.17, --purple10 3.55): links stay ink, and hover adds the underline [D176, D181]. */
3605
3682
  --role-link-hover: var(--primary12);
3606
- --ds-link-hover-line: underline;
3683
+ --fgd-link-hover-line: underline;
3607
3684
  }
3608
3685
 
3609
3686
  :root:not([data-theme='light']) [data-ground='heather'][data-scheme='page'] {
@@ -3620,7 +3697,7 @@
3620
3697
 
3621
3698
  :root:not([data-theme='light']) [data-ground='night'] {
3622
3699
  --role-seam: var(--primary12);
3623
- --ds-edge-shaped: none;
3700
+ --fgd-edge-shaped: none;
3624
3701
  }
3625
3702
  }
3626
3703
 
@@ -3654,7 +3731,7 @@
3654
3731
  --role-pill: var(--secondary9);
3655
3732
  --role-pill-label: var(--secondary-contrast);
3656
3733
  --role-pill-edge: var(--secondary11);
3657
- --ds-link-hover-line: none;
3734
+ --fgd-link-hover-line: none;
3658
3735
  }
3659
3736
 
3660
3737
  [data-ground='white'],
@@ -3693,7 +3770,7 @@
3693
3770
  --role-pill: var(--secondary9);
3694
3771
  --role-pill-label: var(--secondary-contrast);
3695
3772
  --role-pill-edge: var(--secondary11);
3696
- --ds-link-hover-line: none;
3773
+ --fgd-link-hover-line: none;
3697
3774
  }
3698
3775
 
3699
3776
  [data-ground='rose'],
@@ -3736,58 +3813,182 @@
3736
3813
  */
3737
3814
  :root [data-theme='light']:not([data-ground]) [data-ground='night'] {
3738
3815
  --role-seam: var(--role-ground);
3739
- --ds-edge-shaped: block;
3816
+ --fgd-edge-shaped: block;
3740
3817
  }
3741
3818
  }
3819
+ /*
3820
+ * View Transitions: the expanding box's morph (foundations/expanding-box),
3821
+ * a field-like trigger growing into its dialog and back. The
3822
+ * `::view-transition-*` pseudo-elements carry no local class, so their rules
3823
+ * cannot live in a CSS Module; they live here, imported once by global.css.
3824
+ *
3825
+ * ExpandingBox sets each piece's view-transition-name per instance (never
3826
+ * in CSS) and gives every piece the class `fgd-xb` plus its kind
3827
+ * (`fgd-xb-corner`, `-edge`, `-face`, `-content`, `-main`, `-end`,
3828
+ * `-extra`, `-focus`), so these rules select by class only.
3829
+ * startExpandingTransition marks the running morph on the root element,
3830
+ * <html data-fgd-expanding="open|close">, and the pieces add `closing`
3831
+ * while it reads `close`.
3832
+ *
3833
+ * Only group geometry animates, never opacity: the pieces' images take no
3834
+ * animation and their old images are hidden, so each piece shows its new
3835
+ * state from the first frame while its group travels; while the flag is
3836
+ * set, no image in the transition (the root snapshot included) crossfades.
3837
+ * Timing: --fgd-duration-expand on --fgd-ease-expand to open,
3838
+ * --fgd-duration-collapse (an alias of --fgd-duration-disclosure) to close,
3839
+ * so the close stays the faster; startExpandingTransition reads the same
3840
+ * tokens on the trigger, and a 0 duration there applies the change at once. The
3841
+ * focus ring's new image is held hidden for --fgd-duration-disclosure (a
3842
+ * discrete visibility hold, not a fade), so the ring shows once the frame
3843
+ * has landed. Under reduced motion the morph never starts.
3844
+ */
3845
+ @layer base {
3846
+ /*
3847
+ * Groups: geometry only, stacked as the box paints: the face (and the
3848
+ * ring's piece) lowest, the corners and the four edges over it, the
3849
+ * content on top. Left to document order, the face would paint over the
3850
+ * head corners' straight run.
3851
+ */
3852
+ ::view-transition-group(*.fgd-xb) {
3853
+ z-index: var(--layer-1);
3854
+ animation-duration: var(--fgd-duration-expand);
3855
+ animation-timing-function: var(--fgd-ease-expand);
3856
+ }
3857
+
3858
+ ::view-transition-group(*.fgd-xb-corner),
3859
+ ::view-transition-group(*.fgd-xb-edge) {
3860
+ z-index: var(--layer-2);
3861
+ }
3862
+
3863
+ ::view-transition-group(*.fgd-xb-content),
3864
+ ::view-transition-group(*.fgd-xb-main),
3865
+ ::view-transition-group(*.fgd-xb-end),
3866
+ ::view-transition-group(*.fgd-xb-extra) {
3867
+ z-index: var(--layer-3);
3868
+ }
3869
+
3870
+ ::view-transition-group(*.fgd-xb.closing) {
3871
+ animation-duration: var(--fgd-duration-collapse);
3872
+ }
3873
+
3874
+ /* Images: no crossfade. The old image is hidden; the new one shows at once. */
3875
+ ::view-transition-old(*.fgd-xb),
3876
+ ::view-transition-new(*.fgd-xb) {
3877
+ animation: none;
3878
+ }
3879
+
3880
+ ::view-transition-old(*.fgd-xb) {
3881
+ display: none;
3882
+ }
3883
+
3884
+ /* Content and main keep their proportions and hug the left edge. */
3885
+ ::view-transition-new(*.fgd-xb-content),
3886
+ ::view-transition-new(*.fgd-xb-main) {
3887
+ block-size: 100%;
3888
+ inline-size: fit-content;
3889
+ object-position: left;
3890
+ }
3891
+
3892
+ /* The end piece keeps its size and rides the right edge. */
3893
+ ::view-transition-new(*.fgd-xb-end) {
3894
+ inline-size: fit-content;
3895
+ object-position: right;
3896
+ }
3897
+
3898
+ /* The extra grows from the main piece's foot. */
3899
+ ::view-transition-new(*.fgd-xb-extra) {
3900
+ block-size: 100%;
3901
+ object-position: left;
3902
+ }
3903
+
3904
+ /*
3905
+ * The four edges fill their groups, which change only in length (an edge
3906
+ * strip keeps its thickness), so they stretch along it at a constant
3907
+ * weight; the borderless face fills freely; corners keep their size.
3908
+ */
3909
+ ::view-transition-new(*.fgd-xb-face),
3910
+ ::view-transition-new(*.fgd-xb-edge) {
3911
+ block-size: 100%;
3912
+ }
3913
+
3914
+ /* While the morph runs, nothing else crossfades either: not the root snapshot, not a stray name. */
3915
+ :root[data-fgd-expanding]::view-transition-old(*),
3916
+ :root[data-fgd-expanding]::view-transition-new(*) {
3917
+ animation: none;
3918
+ }
3919
+
3920
+ :root[data-fgd-expanding]::view-transition-old(*) {
3921
+ display: none;
3922
+ }
3923
+
3924
+ /* The root does not move; its group adds no time to the morph. */
3925
+ :root[data-fgd-expanding]::view-transition-group(root) {
3926
+ animation: none;
3927
+ }
3928
+
3929
+ /* The ring hand-off: hidden while the frame travels, then shown (after the rules above, and as specific). */
3930
+ :root[data-fgd-expanding]::view-transition-new(*.fgd-xb-focus) {
3931
+ animation: fgd-xb-hold var(--fgd-duration-disclosure) linear;
3932
+ }
3933
+ }
3934
+
3935
+ @keyframes fgd-xb-hold {
3936
+ from,
3937
+ to {
3938
+ visibility: hidden;
3939
+ }
3940
+ }
3941
+
3742
3942
  /*
3743
3943
  * The print remap (§1.11.6, §1.4.5). Print always renders light, whatever
3744
3944
  * the screen mode, including inside a data-theme="dark" band: steps 1–5 of
3745
- * the role scales go white and 6–12 black; contrast inks and label aliases
3746
- * black; halo, grounds, tints and grain white; the seam black. Browsers drop
3747
- * backgrounds by default, so fills and decorative patterns vanish; borders
3748
- * and inline SVG print. Modules add structural print rules only.
3945
+ * the role scales (danger included) go white and 6–12 black, so the danger
3946
+ * roles print black; contrast inks and label aliases black; halo, grounds,
3947
+ * tints and grain white; the seam black. Browsers drop backgrounds by
3948
+ * default, so fills and decorative patterns vanish; borders and inline SVG
3949
+ * print. Modules add structural print rules only.
3749
3950
  */
3750
3951
  @layer print {
3751
3952
  @media print {
3752
3953
  @page {
3753
- margin: var(--ds-print-margin-block) var(--ds-print-margin-inline);
3954
+ margin: var(--fgd-print-margin-block) var(--fgd-print-margin-inline);
3754
3955
  }
3755
3956
 
3756
3957
  :root {
3757
3958
  color-scheme: light;
3758
- --ds-font-fine: var(--ds-font-text);
3759
- --ds-muted-weight-step: 0;
3959
+ --fgd-font-fine: var(--fgd-font-text);
3960
+ --fgd-muted-weight-step: 0;
3760
3961
 
3761
3962
  /* Print values of the tokens (§1.5). 1 px = 0.75 pt, so most px values already map exactly. */
3762
- --ds-font-size-display-xl: 26pt;
3763
- --ds-font-size-stat: 24pt; /* type-stat (§1.5.6, §8.8); type-display-xl keeps 26 pt */
3764
- --ds-font-size-display: 22pt;
3765
- --ds-font-size-h2: 17pt;
3766
- --ds-font-size-itemhead: 13pt;
3767
- --ds-font-size-kicker: 10.5pt;
3768
- --ds-font-size-subhead: 11pt;
3769
- --ds-font-size-lead: 12pt;
3770
- --ds-font-size-quote: 14pt;
3771
- --ds-font-size-body: 10.5pt;
3772
- --ds-font-size-body-ui: 10pt;
3773
- --ds-font-size-marquee: 11pt;
3774
- --ds-font-size-button-lg: 10pt;
3775
- --ds-font-size-button: 9pt;
3776
- --ds-font-size-footnote: 8.5pt;
3777
- --ds-font-size-caption: 8.5pt;
3778
- --ds-font-size-eyebrow: 8pt;
3779
- --ds-font-size-label: 8pt;
3780
- --ds-leading-reading: var(--ds-leading-compact);
3781
- --ds-space-56: 36pt;
3782
- --ds-space-section: 36pt;
3963
+ --fgd-font-size-display-xl: 26pt;
3964
+ --fgd-font-size-stat: 24pt; /* type-stat (§1.5.6, §8.8); type-display-xl keeps 26 pt */
3965
+ --fgd-font-size-display: 22pt;
3966
+ --fgd-font-size-h2: 17pt;
3967
+ --fgd-font-size-itemhead: 13pt;
3968
+ --fgd-font-size-kicker: 10.5pt;
3969
+ --fgd-font-size-subhead: 11pt;
3970
+ --fgd-font-size-lead: 12pt;
3971
+ --fgd-font-size-quote: 14pt;
3972
+ --fgd-font-size-body: 10.5pt;
3973
+ --fgd-font-size-body-ui: 10pt;
3974
+ --fgd-font-size-marquee: 11pt;
3975
+ --fgd-font-size-button-lg: 10pt;
3976
+ --fgd-font-size-button: 9pt;
3977
+ --fgd-font-size-footnote: 8.5pt;
3978
+ --fgd-font-size-caption: 8.5pt;
3979
+ --fgd-font-size-eyebrow: 8pt;
3980
+ --fgd-font-size-label: 8pt;
3981
+ --fgd-leading-reading: var(--fgd-leading-compact);
3982
+ --size-px-8-5: 36pt;
3983
+ --fgd-space-section: 36pt;
3783
3984
  --size-px-10: 36pt;
3784
3985
  --size-px-11: 48pt;
3785
- --ds-space-margin: 0;
3786
- --ds-stroke-0-75: 0.75pt;
3787
- --ds-stroke-1-25: 1pt;
3788
- --ds-stroke-1-5: 1.1pt;
3789
- --ds-stroke-8: 4pt;
3790
- --ds-measure-reading: var(--ds-measure-print);
3986
+ --fgd-space-margin: 0;
3987
+ --border-size-0-75: 0.75pt;
3988
+ --border-size-1-25: 1pt;
3989
+ --border-size-1-5: 1.1pt;
3990
+ --border-size-3-5: 4pt;
3991
+ --fgd-measure-reading: var(--fgd-measure-print);
3791
3992
  }
3792
3993
 
3793
3994
  :root,
@@ -3828,12 +4029,25 @@
3828
4029
  --action10: #000;
3829
4030
  --action11: #000;
3830
4031
  --action12: #000;
4032
+ --danger1: #fff;
4033
+ --danger2: #fff;
4034
+ --danger3: #fff;
4035
+ --danger4: #fff;
4036
+ --danger5: #fff;
4037
+ --danger6: #000;
4038
+ --danger7: #000;
4039
+ --danger8: #000;
4040
+ --danger9: #000;
4041
+ --danger10: #000;
4042
+ --danger11: #000;
4043
+ --danger12: #000;
3831
4044
  --primary-contrast: #000;
3832
4045
  --secondary-contrast: #000;
3833
4046
  --action-contrast: #000;
3834
4047
  --role-inverse: #000;
3835
4048
  --role-action-label: #000;
3836
4049
  --role-action-pressed-label: #000;
4050
+ --role-danger-label: #000;
3837
4051
  --role-select-mark: #000;
3838
4052
  --role-status-text: #000;
3839
4053
  --role-halo: #fff;