@mkbabb/glass-ui 3.12.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/dist/CardAction-XH4YBVEK.js +158 -0
  2. package/dist/{CommandShortcut-CefCj5mt.js → CommandShortcut-DdtWXxOK.js} +58 -53
  3. package/dist/{ContextMenuSubContent-Bhg4f5jX.js → ContextMenuSubContent-B0Vs6atR.js} +4 -4
  4. package/dist/{DataTable-CUHMukiQ.js → DataTable-C464Zbqd.js} +99 -97
  5. package/dist/DialogContent-DDE6pQBU.js +103 -0
  6. package/dist/{DialogFooter-Gprw8H_A.js → DialogFooter-8eZbdmPc.js} +2 -2
  7. package/dist/FadingScroll-DwNnvKMs.js +76 -0
  8. package/dist/{HoverPopover-2LOIW34a.js → HoverPopover-Dpzwvc4t.js} +1 -1
  9. package/dist/IconChip-BDw1j5mu.js +54 -0
  10. package/dist/{IconTooltip-Cus0fvK0.js → IconTooltip-DSjasZIt.js} +1 -1
  11. package/dist/MetricBadge-BpC0R_Ec.js +79 -0
  12. package/dist/{Notification-DLMhblXR.js → Notification-DKjKsQq8.js} +10 -10
  13. package/dist/{NumberFieldContent-BbLOh8RU.js → NumberFieldContent-1VtwDSgf.js} +3 -3
  14. package/dist/PopoverContent-BTorlp--.js +127 -0
  15. package/dist/{Progress-iEuD9pxG.js → Progress-hAT4gqGH.js} +97 -77
  16. package/dist/{ScrollingText-BPP84wKo.js → ScrollingText-CUVFTWk2.js} +2 -2
  17. package/dist/{SelectScrollDownButton-T32cVFeM.js → SelectScrollDownButton-C1jb3b3K.js} +24 -8
  18. package/dist/{Switch-Ch-k3Rv-.js → Switch-Dr--uLGH.js} +2 -2
  19. package/dist/{Toaster-1rYWrmAm.js → Toaster-Bm_HQSpc.js} +55 -52
  20. package/dist/{ToggleGroupItem-COu_4IW4.js → ToggleGroupItem-Dzk9hWsF.js} +18 -22
  21. package/dist/animated-digit.js +3 -3
  22. package/dist/api/index.d.ts +10 -4
  23. package/dist/api.js +1 -1
  24. package/dist/aurora.js +113 -98
  25. package/dist/{badge-CaoFJzRb.js → badge-UILT_3pZ.js} +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/{button-DN39cGqL.js → button-BNDWhAZb.js} +12 -12
  28. package/dist/button.js +1 -1
  29. package/dist/card.js +1 -1
  30. package/dist/carousel.d.ts +1 -1
  31. package/dist/carousel.js +101 -145
  32. package/dist/{check-BBKKKSTf.js → check-njhk-vfu.js} +1 -1
  33. package/dist/{chevron-down-BSkTP2aL.js → chevron-down-DKkxb4VV.js} +1 -1
  34. package/dist/{chevron-right-sDM0Yvrf.js → chevron-right-CPXbqQQz.js} +1 -1
  35. package/dist/{chevron-up-CCOD_FTz.js → chevron-up-n_24SqI-.js} +1 -1
  36. package/dist/coalesceMetric-5qIeZnTx.js +13 -0
  37. package/dist/collapsible.js +1 -1
  38. package/dist/{color-C5ls_QF7.js → color-DweYl7pE.js} +9 -7
  39. package/dist/color-swatch.d.ts +1 -0
  40. package/dist/color-swatch.js +47 -0
  41. package/dist/color.js +1 -1
  42. package/dist/command.js +1 -1
  43. package/dist/components/custom/animated-digit/AnimatedDigit.vue.d.ts +8 -0
  44. package/dist/components/custom/aurora/constants/presets.d.ts +16 -45
  45. package/dist/components/custom/aurora/constants/renderMode.d.ts +2 -0
  46. package/dist/components/custom/aurora/constants/shaders/mediums.glsl.d.ts +1 -1
  47. package/dist/components/custom/aurora/constants/shaders/vangogh-medium.glsl.d.ts +1 -0
  48. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  49. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  50. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  51. package/dist/components/custom/configurator/ConfiguratorRow.vue.d.ts +16 -0
  52. package/dist/components/custom/constellation/Constellation.vue.d.ts +23 -143
  53. package/dist/components/custom/constellation/composables/createConstellationField.d.ts +41 -0
  54. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  55. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +35 -0
  56. package/dist/components/custom/constellation/constants.d.ts +61 -0
  57. package/dist/components/custom/constellation/constellationDraw.d.ts +30 -0
  58. package/dist/components/custom/constellation/constellationField.d.ts +3 -403
  59. package/dist/components/custom/constellation/constellationInteraction.d.ts +132 -0
  60. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  61. package/dist/components/custom/constellation/index.d.ts +5 -2
  62. package/dist/components/custom/controls/DarkModeToggle.vue.d.ts +11 -0
  63. package/dist/components/custom/dock/DockRail.vue.d.ts +89 -0
  64. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  65. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  66. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -6
  67. package/dist/components/custom/dock/GlassDock.vue.d.ts +5 -118
  68. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +36 -0
  69. package/dist/components/custom/dock/composables/index.d.ts +1 -0
  70. package/dist/components/custom/dock/composables/useDockClickIntegrity.d.ts +23 -0
  71. package/dist/components/custom/dock/composables/useDockMorphWindow.d.ts +15 -0
  72. package/dist/components/custom/dock/composables/useDockOrientationMorph.d.ts +44 -0
  73. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +165 -0
  74. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +44 -0
  75. package/dist/components/custom/dock/constants.d.ts +83 -0
  76. package/dist/components/custom/dock/index.d.ts +5 -0
  77. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +15 -37
  78. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  79. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  80. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  81. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  82. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +7 -0
  83. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  84. package/dist/components/custom/fourier-field/math.d.ts +34 -0
  85. package/dist/components/custom/fourier-field/presets.d.ts +54 -0
  86. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +8 -0
  87. package/dist/components/custom/goo-blob/composables/buildMetaballProgram.d.ts +18 -0
  88. package/dist/components/custom/goo-blob/composables/uploadBlobUniforms.d.ts +41 -0
  89. package/dist/components/custom/goo-blob/composables/useBlobPointer.d.ts +4 -3
  90. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +21 -8
  91. package/dist/components/custom/goo-blob/constants.d.ts +57 -0
  92. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -0
  93. package/dist/components/custom/handmark/brush.d.ts +33 -6
  94. package/dist/components/custom/handmark/{useHandMark.d.ts → composables/useHandMark.d.ts} +6 -4
  95. package/dist/components/custom/handmark/constants.d.ts +39 -0
  96. package/dist/components/custom/handmark/geometry.d.ts +14 -12
  97. package/dist/components/custom/handmark/index.d.ts +8 -2
  98. package/dist/components/custom/handmark/types.d.ts +9 -0
  99. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  100. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  101. package/dist/components/custom/icon-chip/types.d.ts +72 -0
  102. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -4
  103. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +37 -0
  104. package/dist/components/custom/labeled-field/LabeledSelect.vue.d.ts +6 -0
  105. package/dist/components/custom/labeled-field/LabeledSlider.vue.d.ts +6 -0
  106. package/dist/components/custom/labeled-field/LabeledSwitch.vue.d.ts +6 -0
  107. package/dist/components/custom/metric-badge/MetricBadge.vue.d.ts +11 -18
  108. package/dist/components/custom/metric-badge/index.d.ts +1 -0
  109. package/dist/components/custom/metric-cell/MetricCell.vue.d.ts +15 -4
  110. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +6 -4
  111. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  112. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  113. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +20 -25
  114. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  115. package/dist/components/custom/tabs/constants.d.ts +18 -0
  116. package/dist/components/custom/tabs/index.d.ts +1 -1
  117. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +14 -0
  118. package/dist/components/ui/_shared/index.d.ts +2 -0
  119. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  120. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  121. package/dist/components/ui/card/Card.vue.d.ts +16 -4
  122. package/dist/components/ui/carousel/index.d.ts +0 -1
  123. package/dist/components/ui/command/Command.vue.d.ts +3 -0
  124. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  125. package/dist/components/ui/drawer/Drawer.vue.d.ts +1 -0
  126. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +5 -0
  127. package/dist/components/ui/dropdown-menu/DropdownMenuSubContent.vue.d.ts +2 -2
  128. package/dist/components/ui/index.d.ts +0 -1
  129. package/dist/components/ui/metric-pill/MetricPill.vue.d.ts +6 -3
  130. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  131. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  132. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  133. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  134. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  135. package/dist/components/ui/slider/index.d.ts +22 -19
  136. package/dist/components/ui/tabs/TabsIndicator.vue.d.ts +4 -1
  137. package/dist/components/ui/toast/use-toast.d.ts +2 -2
  138. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  139. package/dist/components/ui/toggle/index.d.ts +1 -1
  140. package/dist/components/ui/toggle-group/ToggleGroup.vue.d.ts +1 -7
  141. package/dist/components/ui/toggle-group/ToggleGroupItem.vue.d.ts +1 -3
  142. package/dist/components/ui/toggle-group/toggleGroupContext.d.ts +0 -13
  143. package/dist/composables/color/index.d.ts +12 -0
  144. package/dist/composables/dark/useGlobalDark.d.ts +14 -12
  145. package/dist/composables/glass/index.d.ts +0 -1
  146. package/dist/composables/glass/useGlassBackdropLuminance.d.ts +59 -0
  147. package/dist/composables/glass/useSpecularTracking.d.ts +12 -3
  148. package/dist/composables/motion/core/index.d.ts +1 -1
  149. package/dist/composables/motion/curves.d.ts +48 -0
  150. package/dist/composables/motion/index.d.ts +2 -0
  151. package/dist/composables/motion/springPresets.d.ts +33 -0
  152. package/dist/composables/motion/suite.d.ts +2 -0
  153. package/dist/composables/motion/useLiquidFlex.d.ts +85 -0
  154. package/dist/composables/motion/useSpringMount.d.ts +1 -1
  155. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  156. package/dist/configurator.js +1 -1
  157. package/dist/confirm-dialog.js +3 -3
  158. package/dist/constellation.js +373 -261
  159. package/dist/context-menu.js +2 -2
  160. package/dist/controls.js +48 -14
  161. package/dist/dark.js +1 -1
  162. package/dist/data-table.js +1 -1
  163. package/dist/dialog.js +2 -2
  164. package/dist/dock.js +901 -372
  165. package/dist/dockContext-Bu1Avy-a.js +17 -0
  166. package/dist/dom.js +5 -5
  167. package/dist/{dropdown-menu-D77jX6Df.js → dropdown-menu-BJ7E9js_.js} +11 -8
  168. package/dist/dropdown-menu.js +1 -1
  169. package/dist/expandable-container.js +44 -81
  170. package/dist/fading-scroll.d.ts +1 -0
  171. package/dist/fading-scroll.js +2 -0
  172. package/dist/forms.js +5 -5
  173. package/dist/fourier-field.js +140 -104
  174. package/dist/fourier-math.js +2 -2
  175. package/dist/glass-panel.js +90 -21
  176. package/dist/glass-ui.css +1 -1
  177. package/dist/glass-ui.js +230 -236
  178. package/dist/goo-blob.js +264 -228
  179. package/dist/handmark.js +203 -159
  180. package/dist/header-ribbon.js +1 -1
  181. package/dist/hover-card.js +1 -1
  182. package/dist/hover-popover.js +1 -1
  183. package/dist/icon-chip.d.ts +1 -0
  184. package/dist/icon-chip.js +2 -0
  185. package/dist/icon-tooltip.js +1 -1
  186. package/dist/index.d.ts +3 -5
  187. package/dist/instrument-chassis.js +1 -1
  188. package/dist/keyboard.js +1 -1
  189. package/dist/label.js +1 -1
  190. package/dist/labeled-field.js +28 -18
  191. package/dist/{math-DTpRVC0e.js → math-DeuJwLFx.js} +26 -2
  192. package/dist/{menuItemVariants-CCoBNkU5.js → menuItemVariants-DWRQXBxJ.js} +10 -4
  193. package/dist/metric-badge.js +1 -1
  194. package/dist/metric-cell.js +29 -22
  195. package/dist/metric-stack.js +35 -34
  196. package/dist/{minimize-2-lcXOuc6V.js → minimize-2-BV31Ob_h.js} +1 -1
  197. package/dist/motion-core.js +32 -136
  198. package/dist/motion-curves.d.ts +1 -0
  199. package/dist/motion-curves.js +130 -0
  200. package/dist/motion.js +38 -37
  201. package/dist/notification.js +1 -1
  202. package/dist/number-field.js +1 -1
  203. package/dist/pager-dots.d.ts +1 -0
  204. package/dist/pager-dots.js +91 -0
  205. package/dist/paper-backdrop.js +1 -1
  206. package/dist/popover.js +1 -1
  207. package/dist/progress.js +1 -1
  208. package/dist/pulse.js +1 -1
  209. package/dist/reactive.js +2 -2
  210. package/dist/scrolling-text.js +1 -1
  211. package/dist/{search-nbkvr2dC.js → search-BSGrf2Sk.js} +1 -1
  212. package/dist/search.js +10 -10
  213. package/dist/select.js +3 -3
  214. package/dist/separator.js +1 -1
  215. package/dist/sheet-CquRYOAw.js +218 -0
  216. package/dist/sheet.js +1 -1
  217. package/dist/{slider-ClgpP7EB.js → slider-DQ95MET2.js} +8 -8
  218. package/dist/slider.js +1 -1
  219. package/dist/sortable-list.js +3 -3
  220. package/dist/springPresets-WXaLbu8u.js +40 -0
  221. package/dist/stacked-icons.js +6 -6
  222. package/dist/styles/animations.css +25 -125
  223. package/dist/styles/cards.css +55 -0
  224. package/dist/styles/components.css +4 -1
  225. package/dist/styles/configurator.css +77 -0
  226. package/dist/styles/dock/density.css +19 -0
  227. package/dist/styles/dock/layer-group.css +83 -25
  228. package/dist/styles/dock/layers.css +23 -1
  229. package/dist/styles/dock/morph-bridge.css +123 -0
  230. package/dist/styles/dock/morph.css +175 -45
  231. package/dist/styles/dock/overflow.css +66 -1
  232. package/dist/styles/dock/rail-extend.css +397 -0
  233. package/dist/styles/dock/section.css +59 -0
  234. package/dist/styles/dock/shell.css +97 -110
  235. package/dist/styles/dock-controls/dark-mode-toggle.css +109 -0
  236. package/dist/styles/dock-controls/icon-button.css +143 -0
  237. package/dist/styles/dock-controls/tab-button.css +143 -0
  238. package/dist/styles/dock-controls/touch-floor.css +94 -0
  239. package/dist/styles/dock-controls/triggers.css +135 -0
  240. package/dist/styles/dock-controls.css +30 -595
  241. package/dist/styles/dock.css +8 -3
  242. package/dist/styles/drawer.css +48 -0
  243. package/dist/styles/feedback-tone.css +104 -0
  244. package/dist/styles/floating-panel.css +17 -0
  245. package/dist/styles/glass/a11y-fallback.css +245 -0
  246. package/dist/styles/glass/ladder.css +383 -0
  247. package/dist/styles/glass/material.css +238 -0
  248. package/dist/styles/glass/progress-rail.css +78 -0
  249. package/dist/styles/glass/squircle.css +66 -0
  250. package/dist/styles/glass/surface-axis.css +113 -0
  251. package/dist/styles/glass/surfaces.css +382 -0
  252. package/dist/styles/glass-refract.css +2 -0
  253. package/dist/styles/glass.css +34 -1188
  254. package/dist/styles/hover-popover.css +2 -0
  255. package/dist/styles/icon-chip.css +149 -0
  256. package/dist/styles/index.css +94 -18
  257. package/dist/styles/instrument-chassis.css +46 -0
  258. package/dist/styles/menu.css +127 -0
  259. package/dist/styles/paper.css +2 -68
  260. package/dist/styles/segmented-tabs.css +346 -0
  261. package/dist/styles/select.css +50 -0
  262. package/dist/styles/theme/bridges.css +347 -0
  263. package/dist/styles/theme/dark.css +7 -0
  264. package/dist/styles/theme/literals.css +94 -0
  265. package/dist/styles/theme/radius.css +95 -0
  266. package/dist/styles/theme.css +26 -529
  267. package/dist/styles/tokens/color-radius.css +287 -0
  268. package/dist/styles/tokens/dark-arm.css +308 -0
  269. package/dist/styles/tokens/glass.css +500 -0
  270. package/dist/styles/tokens/light-dark.css +187 -0
  271. package/dist/styles/tokens/offsets-sizing.css +562 -0
  272. package/dist/styles/tokens/property-regs.css +162 -0
  273. package/dist/styles/tokens/scale-paper.css +409 -0
  274. package/dist/styles/tokens/scheme-motion.css +352 -0
  275. package/dist/styles/tokens/shadow.css +166 -0
  276. package/dist/styles/tokens.css +22 -2360
  277. package/dist/styles/transitions.css +7 -7
  278. package/dist/styles/typography/scale.css +153 -0
  279. package/dist/styles/typography/semantic.css +220 -0
  280. package/dist/styles/typography/utilities.css +159 -0
  281. package/dist/styles/typography.css +23 -453
  282. package/dist/styles/utilities/a11y-overrides.css +169 -0
  283. package/dist/styles/utilities/animate.css +26 -0
  284. package/dist/styles/utilities/base.css +541 -0
  285. package/dist/styles/utilities/btn.css +218 -0
  286. package/dist/styles/utilities/components.css +317 -0
  287. package/dist/styles/utilities.css +19 -1318
  288. package/dist/styles/view-transition.css +4 -52
  289. package/dist/switch.js +1 -1
  290. package/dist/tabs.js +161 -181
  291. package/dist/timeline.js +2 -2
  292. package/dist/toast.js +1 -1
  293. package/dist/toggle-chip.js +3 -1
  294. package/dist/toggle-group.js +1 -1
  295. package/dist/tooltip.js +1 -1
  296. package/dist/typewriter.js +1 -1
  297. package/dist/{useAnimatedNumber-Bcpy5Etf.js → useAnimatedNumber-C_3wZLx4.js} +1 -1
  298. package/dist/useConfiguratorState-kiIlun8I.js +303 -0
  299. package/dist/useLiquidFlex-C12hXwOZ.js +30 -0
  300. package/dist/useRAFLoop-CdwJ7284.js +109 -0
  301. package/dist/{useScrollProgress-CffFGLa5.js → useScrollProgress-D7bYU2RK.js} +1 -1
  302. package/dist/useSpecularTracking-Bo5su68i.js +32 -0
  303. package/dist/useSpringMount-CvopqiFr.js +108 -0
  304. package/dist/useSurfaceAxis-CMnF2zHb.js +7 -0
  305. package/dist/{useTouchGate-WFyJYsth.js → useTouchGate-28Tk2-t2.js} +1 -1
  306. package/dist/useViewTransition-COsPjQVZ.js +47 -0
  307. package/dist/utils/coalesceMetric.d.ts +29 -0
  308. package/dist/utils/index.d.ts +1 -0
  309. package/dist/vReveal-D9k0jADx.js +10 -0
  310. package/dist/watercolor-dot.js +22 -13
  311. package/dist/{x-Dfsegz9Y.js → x-BUwTKe50.js} +1 -1
  312. package/package.json +134 -50
  313. package/src/styles/animations.css +25 -125
  314. package/src/styles/cards.css +53 -0
  315. package/src/styles/configurator.css +77 -0
  316. package/src/styles/dock/density.css +19 -0
  317. package/src/styles/dock/layer-group.css +83 -25
  318. package/src/styles/dock/layers.css +23 -1
  319. package/src/styles/dock/morph-bridge.css +123 -0
  320. package/src/styles/dock/morph.css +175 -45
  321. package/src/styles/dock/overflow.css +66 -1
  322. package/src/styles/dock/rail-extend.css +397 -0
  323. package/src/styles/dock/section.css +59 -0
  324. package/src/styles/dock/shell.css +97 -110
  325. package/src/styles/dock-controls/dark-mode-toggle.css +109 -0
  326. package/src/styles/dock-controls/icon-button.css +143 -0
  327. package/src/styles/dock-controls/tab-button.css +143 -0
  328. package/src/styles/dock-controls/touch-floor.css +94 -0
  329. package/src/styles/dock-controls/triggers.css +135 -0
  330. package/src/styles/dock-controls.css +30 -595
  331. package/src/styles/dock.css +8 -3
  332. package/src/styles/drawer.css +42 -0
  333. package/src/styles/feedback-tone.css +104 -0
  334. package/src/styles/floating-panel.css +15 -0
  335. package/src/styles/glass/a11y-fallback.css +245 -0
  336. package/src/styles/glass/ladder.css +383 -0
  337. package/src/styles/glass/material.css +238 -0
  338. package/src/styles/glass/progress-rail.css +78 -0
  339. package/src/styles/glass/squircle.css +66 -0
  340. package/src/styles/glass/surface-axis.css +113 -0
  341. package/src/styles/glass/surfaces.css +382 -0
  342. package/src/styles/glass.css +34 -1188
  343. package/src/styles/icon-chip.css +149 -0
  344. package/src/styles/index.css +93 -17
  345. package/src/styles/instrument-chassis.css +42 -0
  346. package/src/styles/menu.css +127 -0
  347. package/src/styles/paper.css +2 -68
  348. package/src/styles/segmented-tabs.css +340 -0
  349. package/src/styles/select.css +50 -0
  350. package/src/styles/theme/bridges.css +347 -0
  351. package/src/styles/theme/dark.css +7 -0
  352. package/src/styles/theme/literals.css +94 -0
  353. package/src/styles/theme/radius.css +95 -0
  354. package/src/styles/theme.css +26 -529
  355. package/src/styles/tokens/color-radius.css +287 -0
  356. package/src/styles/tokens/dark-arm.css +308 -0
  357. package/src/styles/tokens/glass.css +500 -0
  358. package/src/styles/tokens/light-dark.css +187 -0
  359. package/src/styles/tokens/offsets-sizing.css +562 -0
  360. package/src/styles/tokens/property-regs.css +162 -0
  361. package/src/styles/tokens/scale-paper.css +409 -0
  362. package/src/styles/tokens/scheme-motion.css +352 -0
  363. package/src/styles/tokens/shadow.css +166 -0
  364. package/src/styles/tokens.css +22 -2360
  365. package/src/styles/transitions.css +7 -7
  366. package/src/styles/typography/scale.css +153 -0
  367. package/src/styles/typography/semantic.css +220 -0
  368. package/src/styles/typography/utilities.css +159 -0
  369. package/src/styles/typography.css +23 -453
  370. package/src/styles/utilities/a11y-overrides.css +169 -0
  371. package/src/styles/utilities/animate.css +26 -0
  372. package/src/styles/utilities/base.css +541 -0
  373. package/src/styles/utilities/btn.css +218 -0
  374. package/src/styles/utilities/components.css +317 -0
  375. package/src/styles/utilities.css +19 -1318
  376. package/src/styles/view-transition.css +4 -52
  377. package/dist/CardAction-DuArVky-.js +0 -157
  378. package/dist/DeckProgress-Dmk4_AKN.js +0 -23
  379. package/dist/DialogContent-BRkT1cjP.js +0 -100
  380. package/dist/InstrumentRail-CUJ05YVG.js +0 -44
  381. package/dist/MetricBadge-BZVWIxNy.js +0 -80
  382. package/dist/PopoverContent-BId6ggf_.js +0 -121
  383. package/dist/TabsList-B8CVOQPC.js +0 -101
  384. package/dist/components/custom/deck-progress/DeckProgress.vue.d.ts +0 -27
  385. package/dist/components/custom/deck-progress/index.d.ts +0 -2
  386. package/dist/components/custom/dialog-native/GlassDialogNative.vue.d.ts +0 -57
  387. package/dist/components/custom/dialog-native/index.d.ts +0 -1
  388. package/dist/components/custom/instrument-rail/InstrumentRail.vue.d.ts +0 -91
  389. package/dist/components/custom/instrument-rail/index.d.ts +0 -2
  390. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  391. package/dist/composables/motion/useRouteTransition.d.ts +0 -42
  392. package/dist/deck-progress.d.ts +0 -1
  393. package/dist/deck-progress.js +0 -2
  394. package/dist/dockContext-BKeIMmNk.js +0 -9
  395. package/dist/instrument-rail.d.ts +0 -1
  396. package/dist/instrument-rail.js +0 -2
  397. package/dist/sheet-VZEtNFvO.js +0 -214
  398. package/dist/styles/instrument-rail.css +0 -127
  399. package/dist/useConfiguratorState-DxAqksK6.js +0 -287
  400. package/dist/useGlassRenderer-D7YGOYiM.js +0 -69
  401. package/dist/useSpecularTracking-BVRZsRHA.js +0 -26
  402. package/dist/useSpringMount-BJSHcLl3.js +0 -113
  403. package/dist/useViewTransition-DaN5Zrox.js +0 -21
  404. package/dist/vReveal-zUIQk-rJ.js +0 -53
  405. package/src/styles/instrument-rail.css +0 -127
  406. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-C_s6fG7r.js} +0 -0
  407. /package/dist/{ContextMenuContent-DDa0v27s.js → ContextMenuContent-ON3x7cuk.js} +0 -0
  408. /package/dist/{HoverCardContent-B6CcQ8He.js → HoverCardContent-DkMaQzH5.js} +0 -0
  409. /package/dist/{Input-xuDwALQR.js → Input-DVG_J0ne.js} +0 -0
  410. /package/dist/{InstrumentChassis-C2f6cBaQ.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  411. /package/dist/{Label-zRfbQdCn.js → Label-Ck9SWEKM.js} +0 -0
  412. /package/dist/{ModalOverlay-B1GkAjNb.js → ModalOverlay-CkPRRgl_.js} +0 -0
  413. /package/dist/{PaperBackdrop-CqwjnfLv.js → PaperBackdrop-nBKe0vkB.js} +0 -0
  414. /package/dist/{SelectGroup-BFiod7X2.js → SelectGroup-Dcczq44n.js} +0 -0
  415. /package/dist/{SelectSeparator-C4Ql0gzV.js → SelectSeparator-DK2y1Bun.js} +0 -0
  416. /package/dist/{Separator-D7sD7RKj.js → Separator-BArl4OaB.js} +0 -0
  417. /package/dist/{TooltipProvider-CmZzCuaG.js → TooltipProvider-B3MkB_8P.js} +0 -0
  418. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-CBt_VvXa.js} +0 -0
  419. /package/dist/{compile-BOXjLUxu.js → compile-EXXzEr1q.js} +0 -0
  420. /package/dist/{constants-yKeKnE84.js → constants-BPOqYJAm.js} +0 -0
  421. /package/dist/{createContext-B44Sah_H.js → createContext-B2RaZ-b8.js} +0 -0
  422. /package/dist/{createLucideIcon-B6uNAU9G.js → createLucideIcon-DydS2qgk.js} +0 -0
  423. /package/dist/{presets-BP_ALM0m.js → presets-BW2b-fr1.js} +0 -0
  424. /package/dist/{prng-D27-B3tK.js → prng-Cg22zv8g.js} +0 -0
  425. /package/dist/{supportsCssTimeline-C5oe0lnD.js → supportsCssTimeline-BWenxvHU.js} +0 -0
  426. /package/dist/{useGlobalDark-CAhOXNLO.js → useGlobalDark-C28t0VWJ.js} +0 -0
  427. /package/dist/{useIntersectionPause-Cck5Uxk8.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  428. /package/dist/{useInterval-Dsmqwi03.js → useInterval-CNdua40W.js} +0 -0
  429. /package/dist/{useKeyboardShortcuts-CyIYrndH.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  430. /package/dist/{useResizeObserver-CWCbk5Px.js → useResizeObserver-V6nq5gJb.js} +0 -0
  431. /package/dist/{useResolveTokenColor-r9pnNjqK.js → useResolveTokenColor-NUG2zYAW.js} +0 -0
  432. /package/dist/{useSortable-C8ReQ50P.js → useSortable-BVqlJRBR.js} +0 -0
  433. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-NmBM5V_4.js} +0 -0
  434. /package/dist/{useTimer-3xqf_54b.js → useTimer-B_PAasDL.js} +0 -0
  435. /package/dist/{useUserInvalidAria-DoJKMZ3s.js → useUserInvalidAria-CDfJuakL.js} +0 -0
  436. /package/dist/{useViewportReady-RIr5Wgkh.js → useViewportReady-CvBcCYDf.js} +0 -0
@@ -0,0 +1,162 @@
1
+ /* tokens/property-regs.css
2
+ §18 Houdini @property registrations (progress/phase/ripple/specular/glass-level/ui-scale) + §11b the pointer-anchored moving-specular :root/.dark magnitude cohort. LAST — registrations + the magnitude cohort that reads them.
3
+ Carved from the tokens.css cascade root; @import-ed by tokens.css in
4
+ cascade order. Same :root cascade context as its siblings. */
5
+ /* ═══════════════════════════════════════════════
6
+ §18 TYPED CSS PROPERTIES — Houdini @property registrations
7
+ (AI.W4 grammar — adjacent to §2.C tokens above)
8
+
9
+ Three typed custom properties register with the CSS Houdini @property
10
+ API so transitions interpolate VALUES (percentage / length) rather
11
+ than the textual representation. Unregistered fallback is safe — the
12
+ `initial-value` provides a sensible default for any consumer that
13
+ imports this stylesheet on a browser that doesn't yet support the
14
+ typed @property registration (the cross-fade collapses to the
15
+ initial value, then re-paints at the new state).
16
+
17
+ Browser support: Chromium 85+, Safari 16.4+, Firefox 128+. The
18
+ speedtest deployment target sits well within the floor.
19
+
20
+ • --progress-crescendo (percentage) — the leading-edge brightness
21
+ ramp on `<Progress variant="gradient">` past 85% modelValue.
22
+ `inherits: false` because the value is consumed at one
23
+ declaration only (the gradient stop calculation); inheriting
24
+ would let an unrelated ancestor accidentally drive a sibling
25
+ progress bar.
26
+
27
+ • --phase-tint-amount (percentage) — the chassis depth-of-tint
28
+ companion to `--phase-color`. `inherits: true` because the
29
+ value cascades from the chassis root through every region
30
+ wrapper that reads it for a sympathetic tint (matches the
31
+ `--phase-color` inheritance pattern).
32
+
33
+ • --ripple-radius — RETIRED at BA.W-GLASS-CAL (H2a) with the disco recipe
34
+ family: the typed press-ripple was `btn-audacious`-private and has no
35
+ surviving consumer (the calm CTA register's press is the §6 scale beat).
36
+ ═══════════════════════════════════════════════ */
37
+
38
+ @property --progress-crescendo {
39
+ syntax: "<percentage>";
40
+ inherits: false;
41
+ initial-value: 0%;
42
+ }
43
+
44
+ @property --phase-tint-amount {
45
+ syntax: "<percentage>";
46
+ inherits: true;
47
+ initial-value: 0%;
48
+ }
49
+
50
+ /* ═══════════════════════════════════════════════
51
+ §11b POINTER-ANCHORED MOVING SPECULAR (AV.W15)
52
+
53
+ The iOS-26 Liquid Glass "light travels around the material /
54
+ illuminate under your fingertip" behaviour. A masked radial-gradient
55
+ catch-light rides the surface at (--specular-x, --specular-y), driven
56
+ by the consumer's pointer-tracked --mouse-x/--mouse-y write. Registered
57
+ as typed custom properties so the position INTERPOLATES smoothly between
58
+ pointer samples (a bare unregistered var() snaps; the @property reg lets
59
+ the engine animate the percentage stop).
60
+
61
+ • --specular-x / --specular-y (percentage) — the catch-light centre.
62
+ `inherits: false` because each glass surface owns its own pointer
63
+ position (a hovered parent must not push its specular onto a child —
64
+ the no-glass-on-glass discipline made mechanical).
65
+
66
+ • --specular-intensity (number) — the catch-light alpha multiplier.
67
+ `inherits: false` for the same per-surface-ownership reason; rises on
68
+ hover/active, settles to its rest floor on leave.
69
+
70
+ @property crosses Baseline 2024-07-09. The consumption (the masked
71
+ radial + the reduced-motion static bracket + the var() fallback) lives
72
+ in glass-specular-track.css; the registrations live here alongside the
73
+ other three regs so the typed-property tier has one home.
74
+ ═══════════════════════════════════════════════ */
75
+
76
+ @property --specular-x {
77
+ syntax: "<percentage>";
78
+ inherits: false;
79
+ initial-value: 50%;
80
+ }
81
+
82
+ @property --specular-y {
83
+ syntax: "<percentage>";
84
+ inherits: false;
85
+ initial-value: 50%;
86
+ }
87
+
88
+ @property --specular-intensity {
89
+ syntax: "<number>";
90
+ inherits: false;
91
+ initial-value: 0;
92
+ }
93
+
94
+ /* AX.W54 — the GLASS-FIRST single knob. `--glass-level` is the ONE clarity
95
+ scalar threaded through BOTH glass ladders at their single sites (the
96
+ `--glass-bg-*` opacity recipe + the `--glass-blur-*` radii). It is a typed,
97
+ INHERITING <number> so a host setting it on any ancestor retunes every
98
+ descendant glass surface (the @container-free cascade path) — and so it
99
+ animates smoothly rather than snapping. The level acts as a clarity multiplier
100
+ that PRESERVES level=1 (byte-identical to the hand-tuned ladder):
101
+ • level 1 — the calibrated glass (today's surfaces, unchanged).
102
+ • level 0 — the OPAQUE escape: solid `--card` + `blur(0)` through the SAME
103
+ machinery (the `.glass-opaque` rung + the a11y brackets ride it).
104
+ • level >1 — clearer (more transparent + more diffuse) in lockstep.
105
+ Glass is the DEFAULT surface register for EVERY band (USER-DECIDED MAXIMAL);
106
+ the opaque level-0 rung is the explicit opt-out. W55 carries the over-light
107
+ legibility on the SEPARATE `--glass-tint-*` axis (the `--glass-backdrop` probe
108
+ lifts the tint toward ink — level = opacity+blur, tint = darken-over-light, the
109
+ two axes coordinate but never collapse: the a11y Clear↔Tinted escape rides
110
+ level-up here AND tint-toward-ink under `prefers-contrast: more`). */
111
+ @property --glass-level {
112
+ syntax: "<number>";
113
+ inherits: true;
114
+ initial-value: 1;
115
+ }
116
+
117
+ /* AX.W51 D18 — the master comfortable-sizing scalar registered typed. The
118
+ `<number>` syntax guarantees `calc(<base> * var(--ui-scale))` is always valid (a
119
+ malformed override CLAMPS to the initial value 1, not an invalidated calc — the
120
+ fail-safe); `inherits: true` (unlike the per-element specular @property cohort)
121
+ so a SCOPED override (a dense data-table region) cascades to every descendant
122
+ control without a per-element set; the type makes it animatable (a density
123
+ toggle COULD spring it). Mirrors the `--glass-level` registration above (the
124
+ cascading-scalar idiom), distinct from the per-element specular @property cohort
125
+ (those are `inherits: false`). */
126
+ @property --ui-scale {
127
+ syntax: "<number>";
128
+ inherits: true;
129
+ initial-value: 1;
130
+ }
131
+
132
+ /* ── The specular-intensity magnitude cohort (AX.W09) ──────────────────────
133
+ The catch-light alpha multiplier at each interaction state, as a SINGLE
134
+ overridable token cohort (was three buried literals across glass.css —
135
+ `0.35` rest floor / `0.6` hover / `0.85` active — and the `.dark` arm's
136
+ `0.22`). `glass.css`'s `.glass-material::before` rest/hover/active rules READ
137
+ these, so the subtle-vs-extreme magnitude is a knob a consumer (or the dark
138
+ arm) retunes ON THE CASCADE — never a re-buried literal. Override on `:root`
139
+ to retune library-wide; the cartoon-shadow override contract is the precedent.
140
+
141
+ Re-baselined AGAIN at AX.W52 D19 — with the central screen-disc replaced by a
142
+ BOUNDED plus-lighter edge gleam (glass.css), the gleam is a whisper at every
143
+ rung, so the cohort drops further (the W09 0.22/0.32 ceiling still lifted the
144
+ whole-tile disc on hover):
145
+ • rest 0 — static, unwired surfaces are CLEAN; the gleam wakes only on
146
+ hover/active or on a pointer-wired surface. Aligns the painted
147
+ rest with the @property `--specular-intensity { initial-value:
148
+ 0 }` dormancy.
149
+ • hover 0.10 — a whisper edge gleam, not a bloom.
150
+ • active 0.16 — the press whisper. */
151
+ :root {
152
+ --glass-specular-intensity-rest: 0;
153
+ --glass-specular-intensity-hover: 0.1;
154
+ --glass-specular-intensity-active: 0.16;
155
+ }
156
+
157
+ /* Over the deep canvas `plus-lighter` still lifts, so the dark arm runs a touch
158
+ softer on the interaction rungs (rest already 0). */
159
+ .dark {
160
+ --glass-specular-intensity-hover: 0.08;
161
+ --glass-specular-intensity-active: 0.12;
162
+ }
@@ -0,0 +1,409 @@
1
+ /* tokens/scale-paper.css
2
+ §11 interactive scales & focus · §12 paper textures · §13 gold · §14 rainbow · §16 timeline · §17 metric · §19 table density · §20 platform motion.
3
+ Carved from the tokens.css cascade root; @import-ed by tokens.css in
4
+ cascade order. Same :root cascade context as its siblings. */
5
+ :root {
6
+ /* ═══════════════════════════════════════════════
7
+ §11 INTERACTIVE SCALES & FOCUS
8
+ ═══════════════════════════════════════════════ */
9
+ --scale-hover: 1.08;
10
+ /* AX.W52 — the restrained BUTTON hover lift. `--scale-hover` (1.08) is an
11
+ 8% jump — emphatic for a marquee CTA, jarring as the general hover. The
12
+ button family (the audacious CTAs + `btn-interactive`) lifts on the
13
+ smaller `--scale-hover-btn` routed through `--spring-smooth` (the
14
+ sub-perceptual settle, not the snappy bounce), so the hover reads as ONE
15
+ coherent glide with the surface-leg cross-fade rather than a mechanical
16
+ pop. The dock keeps its proportionally-larger `--scale-hover-dock` (small
17
+ icon, bigger lift reads smaller).
18
+ AX.W54 Q3 — lifted 1.035 → 1.05: the 1.035 overshot DOWN (W52 tamed the
19
+ 1.08 snap so hard the lift read as nothing), so the glass hover now reads
20
+ as THREE legs together on hover — the specular gleam waking, a perceptible
21
+ scale, and the bg/border cross-fade — distinguishable from rest BEFORE the
22
+ click. Still sub-perceptual-bounce on `--spring-smooth`; the magnitude
23
+ moved, the easing register did not. */
24
+ --scale-hover-btn: 1.05;
25
+ --scale-hover-dock: 1.1;
26
+ --scale-press: 0.96;
27
+
28
+ /* Press-scale rungs. `--scale-press` (0.96) is the canonical iOS Liquid
29
+ Glass press value every primitive reaches for unless it has a documented
30
+ reason (DESIGN.md §L3); `--scale-press-btn` aliases the slightly-softer
31
+ `--scale-press-sm` (0.97) the button + slider recipes consume.
32
+
33
+ AT.W7-dock-b — press canon. `--scale-press-dock` previously hard-coded a
34
+ deeper 0.92 (a second magic press value with no documented rationale),
35
+ so a dock control pressed visibly harder than every other primitive. It
36
+ now references the canonical `--scale-press` (0.96) — ONE source for the
37
+ press scale across the system. A consumer wanting the dock's old deeper
38
+ press overrides `--scale-press-dock` on the dock instance. */
39
+ --scale-press-dock: var(--scale-press);
40
+ --scale-press-sm: 0.97;
41
+ --scale-press-btn: var(--scale-press-sm);
42
+
43
+ /* AX.W53 — the SegmentedTabs travel-squish cap. The active indicator
44
+ (segmented/pill slider OR the underline rule) STRETCHES along its travel
45
+ axis as it glides between tabs, then settles to fit — the Material 3
46
+ ELASTIC / Apple Liquid-Glass "controls insist on animating themselves"
47
+ register, kept RESTRAINED. The deform is volume-preserving (stretch X,
48
+ compress Y in lockstep: `scale: var(--stretch) calc(1 / var(--stretch))`)
49
+ so it reads as an elastic warp, never a size pump. The cap holds the peak
50
+ LOW (1.08 ≈ +8%) — iOS 26.2 dialed motion DOWN; a high-frequency control
51
+ wants a whisper of squish, not a bounce. A consumer dials the elasticity
52
+ (or to 1 for none) without touching source. */
53
+ --tab-indicator-max-stretch: 1.08;
54
+ /* BA.W-TABS — the indicator's OWN travel clock, re-pointed off the generic
55
+ `--duration-normal` (0.3s, which dragged a ~190ms sub-pixel undershoot tail
56
+ past the ~100ms 90%-travel point — the R10-2 "too slow" read) onto the
57
+ CALIBRATED `--spring-snappy-duration` (the W-GLASS-CAL Unit 3 per-spring
58
+ 2%-band envelope-settle clock for the snappy curve, ~0.34s). The glide +
59
+ squish both read this ONE clock so they cannot desync; consume, never
60
+ re-mint the spring-duration primitive (W-GLASS-CAL owns it). */
61
+ --tab-indicator-duration: var(--spring-snappy-duration);
62
+ --opacity-disabled: 0.5;
63
+ --opacity-icon-muted: 0.8;
64
+
65
+ --focus-ring-width: 2px;
66
+ --focus-ring-shadow: 0 0 0 var(--focus-ring-width) color-mix(in srgb, var(--ring) 30%, transparent),
67
+ 0 0 8px color-mix(in srgb, var(--ring) 15%, transparent);
68
+ --focus-ring: var(--focus-ring-shadow);
69
+
70
+ /* ═══════════════════════════════════════════════
71
+ §12 PAPER TEXTURES
72
+ ═══════════════════════════════════════════════ */
73
+ /* Canonical subtle paper-texture opacity — restored from fourier-original
74
+ (`4df1a06:web/src/style.css:53-54`) after A.W3.5.ab confirmed the
75
+ heretofore `opacity='1'` URI rendered as an overt grain field in every
76
+ downstream consumer of `.paper-texture`. The SVG `opacity` attribute is
77
+ baked at parse-time and cannot read a CSS var, so the subtle value must
78
+ be inlined; if a consumer needs a heavier overlay, they should layer
79
+ a wrapper element with its own `opacity:`/`mix-blend-mode:` atop. */
80
+ --paper-clean-texture: url("data:image/svg+xml,%3Csvg width='200' height='200' viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
81
+ --paper-aged-texture: url("data:image/svg+xml,%3Csvg width='200' height='200' viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.5' numOctaves='5' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
82
+
83
+ /* ═══════════════════════════════════════════════
84
+ §13 GOLD (accent family kept for consumers using it)
85
+ ═══════════════════════════════════════════════ */
86
+ --gold: oklch(0.751 0.147 84.2);
87
+ --gold-light: oklch(0.890 0.183 96.1);
88
+ --gold-dark: oklch(0.599 0.132 64.2);
89
+ /* AY.W-PRIM-POLISH D1 — the saturated CTA plate the AW.W13 gold-CTA contract
90
+ names. A FIXED deep gold (mode-INVARIANT — the gold-CTA hover backplate must
91
+ be dark in BOTH modes so the white label clears ≥4.5:1; deepening toward the
92
+ mode-flipping `--foreground` brightened the dark plate to a cream-gold and
93
+ broke dark). ~`--gold-dark` deepened toward warm-ink → ~rgb(120,87,45),
94
+ 6.5:1 white in light / 5.5:1 in dark. The opaque base of `btn-audacious-gold`
95
+ :hover. */
96
+ --gold-deep: oklch(0.487 0.103 63.0);
97
+
98
+ --color-gold: var(--gold);
99
+ --color-gold-light: var(--gold-light);
100
+ --color-gold-dark: var(--gold-dark);
101
+ --color-gold-deep: var(--gold-deep);
102
+
103
+ /* ═══════════════════════════════════════════════
104
+ §13b SILVER (the structure metal — BA.W-ATLAS-RECONCILE C-3, d6 register C)
105
+ ═══════════════════════════════════════════════ */
106
+ /* The cool polished-steel STRUCTURE quad — gold's mirror for the industrial
107
+ housing register (the InstrumentChassis `variant="structure"` consumer #2).
108
+ Gold ships; the structure metal never did. The cascade EXACTLY mirrors gold's
109
+ (scale-paper raw → bridges `--color-silver*` alias → both dark arms).
110
+
111
+ BA.W-NO-GRAY NAMED EXCEPTION (the ONE sanctioned cool-neutral). W-NO-GRAY
112
+ moved the library's NEUTRAL ladder to a warm OKLab H~70° register (no gray).
113
+ Silver is DELIBERATELY COOL near-achromatic (hue ~255, the blue-steel of a
114
+ milled panel) — it is NOT a neutral, it is a brand METAL identity (like gold).
115
+ Calibrated AGAINST the new warm floor: the very-low chroma (C ≤ 0.016) reads
116
+ as polished metal, not a tinted cast, and the cool hue distinguishes it from
117
+ the warm-cream glass plate so the structure register reads as a DIFFERENT
118
+ material, not a desaturated default. Recorded as the warm-floor exception in
119
+ the W-ATLAS-RECONCILE DELTA. */
120
+ --silver: oklch(0.760 0.012 255);
121
+ --silver-light: oklch(0.902 0.010 255);
122
+ --silver-dark: oklch(0.582 0.014 255);
123
+ /* The mode-INVARIANT deep structure plate (mirrors `--gold-deep`'s contract —
124
+ a fixed dark cool-steel so a white label clears ≥4.5:1 in BOTH modes; it does
125
+ NOT flip with `--foreground`). The would-be saturated CTA twin of the metal. */
126
+ --silver-deep: oklch(0.462 0.016 258);
127
+
128
+ --color-silver: var(--silver);
129
+ --color-silver-light: var(--silver-light);
130
+ --color-silver-dark: var(--silver-dark);
131
+ --color-silver-deep: var(--silver-deep);
132
+
133
+ /* ═══════════════════════════════════════════════
134
+ §14 RAINBOW PALETTE — oklch (AV.W16 TW2; mode-independent, no .dark
135
+ mirror; hue preserved from the prior hsl() cadence)
136
+ ═══════════════════════════════════════════════ */
137
+ --rainbow-red: oklch(0.636 0.210 25.5);
138
+ --rainbow-orange: oklch(0.737 0.163 58.9);
139
+ --rainbow-yellow: oklch(0.900 0.183 103.7);
140
+ --rainbow-green: oklch(0.772 0.233 144.8);
141
+ --rainbow-blue: oklch(0.633 0.162 252.1);
142
+ --rainbow-indigo: oklch(0.566 0.206 294.1);
143
+ --rainbow-violet: oklch(0.684 0.250 327.9);
144
+
145
+ --rainbow-pastel-red: oklch(0.793 0.066 18.7);
146
+ --rainbow-pastel-orange: oklch(0.823 0.059 57.3);
147
+ --rainbow-pastel-yellow: oklch(0.889 0.068 98.1);
148
+ --rainbow-pastel-green: oklch(0.826 0.072 149.5);
149
+ --rainbow-pastel-blue: oklch(0.783 0.056 264.2);
150
+ --rainbow-pastel-indigo: oklch(0.772 0.062 300.2);
151
+ --rainbow-pastel-violet: oklch(0.799 0.070 314.4);
152
+
153
+ /* ═══════════════════════════════════════════════
154
+ §16 TIMELINE
155
+ Timeline primitive tokens. All three variants (scrubber +
156
+ segmented + continuous) compose these. Both segmented + continuous
157
+ arrays carry the same `TimelineSegment[]` data shape; only the
158
+ rendering geometry differs. See DESIGN.md `## Timeline Primitive`.
159
+ ═══════════════════════════════════════════════ */
160
+
161
+ /* Heights — per-variant rail thickness */
162
+ --timeline-scrubber-height: 0.5rem; /* 8px — single-track scrubber */
163
+ --timeline-segmented-height: 0.625rem; /* 10px — N adjacent bands */
164
+ --timeline-continuous-height: 0.75rem; /* 12px — ONE pill, N regions */
165
+
166
+ /* Geometry — shared across all variants */
167
+ --timeline-dot-size: 0.875rem; /* 14px — boundary dot diameter (pointer: fine) */
168
+ --timeline-dot-size-touch: 1.25rem; /* 20px — boundary dot diameter (pointer: coarse) */
169
+ --timeline-touch-target: 44px; /* AC.W6d F2.I-04 — WCAG 2.5.5 target-size floor.
170
+ The `::before` halo around each dot extends to
171
+ this dimension so finger-precision users meet
172
+ the (target-size: 44×44 minimum) clause without
173
+ the visible dot growing to that footprint at
174
+ pointer: fine. */
175
+ --timeline-segment-flex: 1 1 0; /* per-cell flex distribution (segmented) */
176
+
177
+ /* Boundary-dot glass knobs (Q.W4 Lane B — promoted from
178
+ ContinuousTimeline.vue SFC fallbacks; `3cb70db` minted these as a
179
+ private dialect). The continuous-variant dot is a GLASS primitive:
180
+ a translucent tinted fill over a backdrop blur with a hairline
181
+ ring. These knobs let consumers retune the resting glass + the
182
+ per-state tints without a `:deep()` reach.
183
+ fill — resting translucent fill
184
+ blur — backdrop blur tier behind the dot
185
+ ring — hairline glass ring (border-color)
186
+ tint-current — wash colour for the active-phase dot
187
+ tint-completed — wash colour for the completed-phase dot
188
+ check-color — completion-tick stroke (defaults to the
189
+ completed tint) */
190
+ --timeline-dot-fill: var(--surface-tint-12);
191
+ --timeline-dot-blur: var(--glass-blur-quiet);
192
+ --timeline-dot-ring: var(--glass-border-floating);
193
+ --timeline-dot-tint-current: var(--accent, var(--foreground));
194
+ --timeline-dot-tint-completed: var(--success, var(--foreground));
195
+ --timeline-dot-check-color: var(--timeline-dot-tint-completed);
196
+
197
+ /* Continuous-variant specific — seam dividers between regions.
198
+ Set `--timeline-continuous-seam-opacity: 0` to suppress the
199
+ inter-region 1px dividers entirely. Default `0.25` reads as a
200
+ subtle hairline; the `--timeline-continuous-seam-color` knob lets
201
+ consumers override the seam tint independently of opacity. */
202
+ --timeline-continuous-seam-opacity: 0.25;
203
+ --timeline-continuous-seam-color: color-mix(
204
+ in srgb,
205
+ var(--foreground) calc(var(--timeline-continuous-seam-opacity) * 100%),
206
+ transparent
207
+ );
208
+
209
+ /* Per-segment default gradient fallback — applied when a segment
210
+ omits its `gradient` field. Consumers can override per-phase via
211
+ the `--timeline-segment-gradient-{key}` knobs below. */
212
+ --timeline-segment-default-gradient: linear-gradient(
213
+ 90deg,
214
+ var(--surface-tint-15),
215
+ var(--surface-tint-25)
216
+ );
217
+
218
+ /* Per-phase gradient defaults — paint the canonical chart palette
219
+ at the gradient leading edge, fading to a 60%-opacity tail. The
220
+ speedtest consumer wires these via `gradient: "var(--timeline-segment-gradient-ping)"`
221
+ per segment; the same names work for any consumer who follows the
222
+ ping/download/upload/jitter taxonomy. */
223
+ --timeline-segment-gradient-ping: linear-gradient(
224
+ 90deg,
225
+ var(--chart-ping),
226
+ color-mix(in srgb, var(--chart-ping) 60%, transparent)
227
+ );
228
+ --timeline-segment-gradient-download: linear-gradient(
229
+ 90deg,
230
+ var(--chart-download),
231
+ color-mix(in srgb, var(--chart-download) 60%, transparent)
232
+ );
233
+ --timeline-segment-gradient-upload: linear-gradient(
234
+ 90deg,
235
+ var(--chart-upload),
236
+ color-mix(in srgb, var(--chart-upload) 60%, transparent)
237
+ );
238
+ --timeline-segment-gradient-jitter: linear-gradient(
239
+ 90deg,
240
+ var(--chart-jitter),
241
+ color-mix(in srgb, var(--chart-jitter) 60%, transparent)
242
+ );
243
+
244
+ /* ═══════════════════════════════════════════════
245
+ §17 METRIC
246
+
247
+ MetricRow / MetricStack value-clamp dialect. The declared values are the
248
+ `audacious` poster register — the hero-scale clamp for a single giant
249
+ number; MetricStack's `[data-register="result"]` selector overrides it
250
+ locally for the compact multi-row ledger. Three clamp arms each: `min`
251
+ (floor), `cqi` (the binding container-query middle term), `max`
252
+ (ceiling); unit carries min/max only (its cqi is a fixed 6cqi).
253
+ ═══════════════════════════════════════════════ */
254
+
255
+ /* Value register — audacious-poster hero clamp */
256
+ --metric-row-value-clamp-min: 4.5rem;
257
+ --metric-row-value-clamp-cqi: 34cqi;
258
+ --metric-row-value-clamp-max: var(--type-display-hero);
259
+
260
+ /* Unit register — one tier below the value it qualifies */
261
+ --metric-row-unit-clamp-min: 1.5rem;
262
+ --metric-row-unit-clamp-max: 3.25rem;
263
+
264
+ /* Label register — uppercase, the binding row-height term in the
265
+ compact `result` register */
266
+ --metric-row-label-clamp-min: 1.125rem;
267
+ --metric-row-label-clamp-cqi: 5cqi;
268
+ --metric-row-label-clamp-max: 2.75rem;
269
+
270
+ /* ═══════════════════════════════════════════════
271
+ §2.D INSTRUMENT-CLUSTER COMPOSITION RHYTHM
272
+
273
+ The instrument-chassis family owns the under-meter / progress-cluster
274
+ grammar.
275
+
276
+ • `--meter-progress-inset` — the negative-margin inset that pulls the
277
+ under-meter bar INTO the unpainted ring lane around the dial canvas
278
+ (~4% of meter-size). Consumed at `.phase-progress` via
279
+ `margin-block-start: calc(-1 * var(--meter-progress-inset))`. The
280
+ `--meter-size` reference resolves against the consumer's own
281
+ declaration; the 200px fallback keeps the calc well-defined.
282
+ • `--progress-stack-gap` — vertical rhythm between any two stacked
283
+ progress rails inside one cluster.
284
+ ═══════════════════════════════════════════════ */
285
+ --meter-progress-inset: calc(var(--meter-size, 200px) * 0.04);
286
+ --progress-stack-gap: clamp(0.1875rem, 0.4cqi, 0.375rem);
287
+
288
+ /* ═══════════════════════════════════════════════
289
+ §2.E CELEBRATION-TIER REGISTER
290
+
291
+ Shared peak for any "completion" / "thank-you" surface.
292
+
293
+ • `--celebration-row-rhythm` — gap between the cluster's rows (cqi-axis).
294
+ • `--text-celebration-headline-size` — the single designed peak both
295
+ celebration surfaces clamp toward (cqi-axis).
296
+ • `--complete-headline-size` — the per-consumer font-size hook a consumer
297
+ assigns the canon clamp to so its headline pegs at the shared peak;
298
+ the default falls back to a smaller hero-rung clamp.
299
+ ═══════════════════════════════════════════════ */
300
+ --celebration-row-rhythm: clamp(0.5rem, 1.6cqi, 1rem);
301
+ --text-celebration-headline-size: clamp(2.5rem, 12cqi, 9rem);
302
+ --complete-headline-size: clamp(2.25rem, 11cqi, 4rem);
303
+
304
+ /* ═══════════════════════════════════════════════
305
+ §19 TABLE DENSITY
306
+
307
+ A single unitless knob `--table-density` scales the cell padding +
308
+ header row height of the Table / DataTable primitive. Default `1`
309
+ resolves to 1rem cell padding + 3rem header height; 0.75 is a compact
310
+ admin table, 1.25 is comfortable/touch-friendly. The derived tokens are
311
+ read by the `table-cell` / `table-head` utilities; changing the knob
312
+ cascades instantly via CSS inheritance — no JS prop needed.
313
+ ═══════════════════════════════════════════════ */
314
+ --table-density: 1;
315
+ --table-cell-px: calc(1rem * var(--table-density));
316
+ --table-cell-py: calc(1rem * var(--table-density));
317
+ --table-head-h: calc(3rem * var(--table-density));
318
+ --table-head-px: calc(1rem * var(--table-density));
319
+
320
+ /* ═══════════════════════════════════════════════
321
+ §20 PLATFORM MOTION (AQ.W5)
322
+
323
+ The native-platform motion substrate axes. Three families, each read
324
+ by a `@supports`-gated CSS recipe in `scroll-driven.css`,
325
+ `animations.css` (§TOP-LAYER), and `view-transition.css` — every visual
326
+ knob a token so a consumer retunes without editing library source.
327
+
328
+ SCROLL-DRIVEN (scroll-driven.css). Values mirror the JS-fallback
329
+ composable defaults (`useScrollProgress` / `useStaggerReveal`) so the
330
+ native CSS path and the fallback path read identically — no visual seam
331
+ at the `@supports` boundary.
332
+
333
+ TOP-LAYER (animations.css §TOP-LAYER). The `@starting-style` entry/exit
334
+ grammar for native `<dialog>` / `[popover]` glass surfaces. The backdrop dim
335
+ uses the house alpha-derivative `color-mix(in srgb, var(--background) Npct,
336
+ transparent)` (AZ.W-ADAPTIVE-AUTO A5-1). It is NOT the `hsl(var(--background)
337
+ / α)` channel form: `--background` is a COMPLETE `hsl()` color
338
+ (`= hsl(48 12% 98%)`), so `hsl(var(--background) / α)` double-wraps to
339
+ `hsl(hsl(…) / α)` — invalid, never paints (the modal dim was silently dead).
340
+ The genuine channel form would require `--background` declared as a bare
341
+ `H S% L%` triple, which it never is — hence the alpha-derivative mix.
342
+
343
+ VIEW-TRANSITION (view-transition.css). The shared `.gl-list-item` group
344
+ recipe + the `--vt-*` axes the `useViewTransition` substrate consumers
345
+ (dock layer swap, muster J's verdict re-rank) tune their swap against.
346
+ ═══════════════════════════════════════════════ */
347
+ --scroll-progress-scroller: root;
348
+ --scroll-reveal-rise: 6px;
349
+ --scroll-reveal-range-end: 60%;
350
+
351
+ --top-layer-enter-scale: 0.96;
352
+ --top-layer-backdrop-blur: 8px;
353
+ --top-layer-backdrop-dim: 0.5;
354
+
355
+ --vt-duration: var(--duration-normal);
356
+ /* AX.W05 — ONE iOS-spring vocabulary: every spring-flavored transition reads
357
+ a governed `--spring-*` register. The legacy apple-spring cubic-bezier
358
+ (+27.5% overshoot) was a SECOND authority beside the regen `--spring-*`
359
+ cohort; it is EXCISED. Its emphatic-overshoot register maps to the playful
360
+ `--spring-bouncy` (the closest `linear()` overshoot stop-set), so the VT
361
+ default + the cards/top-layer transitions share one spring primitive
362
+ (CPU + GPU sample the same curve). No cubic-bezier fallback seed survives —
363
+ the `linear()` spring degrades to `ease` where `linear()` is unsupported. */
364
+ --vt-ease: var(--spring-bouncy);
365
+ --vt-rise: 8px;
366
+
367
+ /* AT.W6-dock-c / AU.W8 — the dock layer-swap morph timing, minted ONCE so
368
+ both engine paths are timing-IDENTICAL: the FLIP fallback (via
369
+ `--dock-motion-resize`), the native View-Transition group (its
370
+ `animation-timing-function`), AND the runtime SpringProgress driver
371
+ (AU.W8.3) consume this same `(0.32, 0.7)` source curve. Retires the AQ.W6
372
+ fork where the VT path ran `--vt-ease` (apple-spring, +27.5% overshoot)
373
+ while the FLIP ran the snappy spring. `--vt-ease` still defaults the
374
+ other VT recipes (`.gl-list-item`).
375
+
376
+ AU.W8 — RETARGET snappy → dock. `--spring-snappy` (ζ=0.65, +6.8%) read as
377
+ mechanical: a stiff plateau at ~48% with too little overshoot to feel
378
+ alive ("not iOS-smooth"). AW.W2 then retuned the dock spring to the
379
+ iOS-control register: `--spring-dock` ((0.32, 0.7), ~+4.6%) settles snappy
380
+ with a restrained overshoot — the felt iOS dock morph, off the prior
381
+ playful +18.5% register. The runtime driver's DOCK_SPRING const MIRRORS the
382
+ (0.32, 0.7) PRESETS row, so the CSS token and the JS-driven morph are
383
+ bit-identical. */
384
+ --dock-resize-spring: var(--spring-dock);
385
+
386
+ /* AT.W7-dock-b — dock-control press micro-feedback spring. A TRANSFORM-ONLY
387
+ spring (`scale`/`rotate`) the dock controls apply to their hover/press
388
+ activation so the squish reads with a touch of spring-back rather than a
389
+ flat ease. STRICTLY transform-scoped: it must never touch the surface-tier
390
+ `[data-held]` fades (background/border/box-shadow), which stay on
391
+ `--duration-fast var(--ease-standard)`. The duration pairs with
392
+ `--duration-fast`; consumers retune the whole feel via this one token.
393
+
394
+ AY.W-DOCK2 (D6) — the register is `--spring-smooth`, the §6 easing-doctrine
395
+ transform-press register (tokens.css §2: transform hover/press/active →
396
+ `--spring-smooth`/`--spring-snappy`, NEVER `--spring-bouncy`; a press must
397
+ settle, never overshoot into a visible bounce). The prior `--spring-bouncy`
398
+ ROOT default was off-doctrine, shadowed for the four named controls by a
399
+ per-surface re-point in dock-controls.css — the exact per-surface fork the
400
+ doctrine kills. The re-point is now a DEAD byte-identical redeclaration and is
401
+ DELETED; the ROOT token IS the doctrine register, so any other consumer of
402
+ `--dock-press-spring` inherits the correct smooth register.
403
+
404
+ BA.W-GLASS-CAL Unit 3 — the duration leg re-times off the generic
405
+ `--duration-fast` (0.2s) onto `--spring-smooth-duration` (0.36s, the
406
+ smooth spring's OWN 2%-band envelope settle), so the press transform plays
407
+ at its physical settle rather than a generic clock. */
408
+ --dock-press-spring: var(--spring-smooth-duration) var(--spring-smooth);
409
+ }