@mkbabb/glass-ui 3.13.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (507) hide show
  1. package/README.md +3 -1
  2. package/dist/CardAction-CW7a0m8M.js +253 -0
  3. package/dist/{CommandShortcut-RowNEO6i.js → CommandShortcut-DvZNQ_HF.js} +58 -53
  4. package/dist/ConfiguratorRow-BR4l-ixA.js +143 -0
  5. package/dist/{ContextMenuContent-CT3AS1WX.js → ContextMenuContent-uWnVxDab.js} +1 -1
  6. package/dist/{ContextMenuSubContent-BQmxTAdw.js → ContextMenuSubContent-xol4sD2q.js} +32 -37
  7. package/dist/{DataTable-BCddn3T3.js → DataTable-CuKwF7wr.js} +99 -97
  8. package/dist/DialogContent-DcKK8k9i.js +103 -0
  9. package/dist/{DialogFooter-Blu4t7tJ.js → DialogFooter-BZNX5aVr.js} +3 -3
  10. package/dist/FadingScroll-DI6hQhT9.js +76 -0
  11. package/dist/{HoverCardContent-Csywg3YF.js → HoverCardContent-b2uaAMRR.js} +1 -1
  12. package/dist/{HoverPopover-CISOJQuZ.js → HoverPopover-CbqbNwgU.js} +2 -2
  13. package/dist/IconChip-BTD-nay5.js +55 -0
  14. package/dist/{IconTooltip-DPzE09X9.js → IconTooltip-Bl8gFZ8d.js} +1 -1
  15. package/dist/{Input-DWQQIOC4.js → Input-h9v5LeXf.js} +1 -1
  16. package/dist/{MetricBadge-C9QMz1KT.js → MetricBadge-RHdBP72w.js} +1 -1
  17. package/dist/Notification-VUwexFUf.js +43 -0
  18. package/dist/NumberFieldContent-Cq7EzX-U.js +138 -0
  19. package/dist/PopoverContent-DL7E6vJP.js +127 -0
  20. package/dist/{Progress-DwlUKGbr.js → Progress-DctG61iZ.js} +98 -78
  21. package/dist/{ScrollingText-DfFrwSph.js → ScrollingText-yOpBzFYq.js} +2 -2
  22. package/dist/{SelectScrollDownButton-CiDUxfEj.js → SelectScrollDownButton-CrA8F0iV.js} +35 -20
  23. package/dist/{Switch-CsIuYP_e.js → Switch-CwYNf8bo.js} +1 -1
  24. package/dist/Toaster-Bw4xR8xV.js +274 -0
  25. package/dist/{ToggleGroupItem-D_AHlRw9.js → ToggleGroupItem-pEM9vIhs.js} +50 -37
  26. package/dist/{TooltipProvider-B3MkB_8P.js → TooltipProvider-rzvnXz60.js} +1 -1
  27. package/dist/animated-digit.js +2 -2
  28. package/dist/api/index.d.ts +16 -8
  29. package/dist/api/types-extra.d.ts +6 -0
  30. package/dist/api.js +2 -2
  31. package/dist/aurora.js +888 -230
  32. package/dist/badge.js +1 -1
  33. package/dist/border-progress.d.ts +1 -0
  34. package/dist/border-progress.js +106 -0
  35. package/dist/button-DYCUa-tH.js +126 -0
  36. package/dist/button.js +1 -1
  37. package/dist/canvas.js +2 -2
  38. package/dist/card.js +2 -2
  39. package/dist/carousel.d.ts +1 -1
  40. package/dist/carousel.js +90 -151
  41. package/dist/collapsible.js +1 -1
  42. package/dist/color-swatch.d.ts +1 -0
  43. package/dist/color-swatch.js +47 -0
  44. package/dist/color.js +1 -1
  45. package/dist/command.js +1 -1
  46. package/dist/compile-CQEFRTmx.js +19 -0
  47. package/dist/components/custom/aurora/composables/atoms-fields.d.ts +39 -0
  48. package/dist/components/custom/aurora/composables/auroraFallbackGround.d.ts +108 -0
  49. package/dist/components/custom/aurora/composables/runtime.d.ts +19 -0
  50. package/dist/components/custom/aurora/composables/uniformBridge.d.ts +5 -1
  51. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +51 -0
  52. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +29 -0
  53. package/dist/components/custom/aurora/constants/budget.d.ts +21 -0
  54. package/dist/components/custom/aurora/constants/presets.d.ts +30 -2
  55. package/dist/components/custom/aurora/constants/renderMode.d.ts +63 -10
  56. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -0
  57. package/dist/components/custom/aurora/constants/shaders/oil-modes.glsl.d.ts +1 -0
  58. package/dist/components/custom/aurora/constants/shaders/procedural-color.wgsl.d.ts +4 -0
  59. package/dist/components/custom/aurora/index.d.ts +3 -2
  60. package/dist/components/custom/border-progress/BorderProgress.vue.d.ts +46 -0
  61. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +22 -0
  62. package/dist/components/custom/border-progress/constants.d.ts +59 -0
  63. package/dist/components/custom/border-progress/index.d.ts +4 -0
  64. package/dist/components/custom/color-swatch/ColorSwatch.vue.d.ts +22 -0
  65. package/dist/components/custom/color-swatch/index.d.ts +1 -0
  66. package/dist/components/custom/concentric/Concentric.vue.d.ts +39 -0
  67. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +11 -0
  68. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  69. package/dist/components/custom/concentric/composables/ringField.d.ts +44 -0
  70. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +13 -0
  71. package/dist/components/custom/concentric/composables/useConcentric.d.ts +35 -0
  72. package/dist/components/custom/concentric/constants.d.ts +43 -0
  73. package/dist/components/custom/concentric/index.d.ts +5 -0
  74. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +4 -0
  75. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -0
  76. package/dist/components/custom/configurator/Configurator.vue.d.ts +19 -8
  77. package/dist/components/custom/constellation/Constellation.vue.d.ts +18 -206
  78. package/dist/components/custom/constellation/composables/useConstellation.d.ts +26 -0
  79. package/dist/components/custom/constellation/constellationField.d.ts +2 -369
  80. package/dist/components/custom/constellation/constellationTypes.d.ts +369 -0
  81. package/dist/components/custom/constellation/index.d.ts +1 -1
  82. package/dist/components/custom/dock/DockIconButton.vue.d.ts +13 -4
  83. package/dist/components/custom/dock/DockLayerGroup.vue.d.ts +10 -2
  84. package/dist/components/custom/dock/DockRail.vue.d.ts +17 -16
  85. package/dist/components/custom/dock/DockSection.vue.d.ts +69 -0
  86. package/dist/components/custom/dock/DockSeparator.vue.d.ts +49 -1
  87. package/dist/components/custom/dock/DockTabButton.vue.d.ts +5 -5
  88. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +75 -0
  89. package/dist/components/custom/dock/composables/useLayerTransition.d.ts +13 -0
  90. package/dist/components/custom/dock/constants.d.ts +35 -0
  91. package/dist/components/custom/dock/index.d.ts +2 -0
  92. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +38 -0
  93. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +41 -0
  94. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +24 -0
  95. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +34 -0
  96. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +18 -0
  97. package/dist/components/custom/dot-flow-field/constants.d.ts +48 -0
  98. package/dist/components/custom/dot-flow-field/index.d.ts +5 -0
  99. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -0
  100. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +20 -0
  101. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +1 -0
  102. package/dist/components/custom/easing/EasingConfigurator.vue.d.ts +33 -0
  103. package/dist/components/custom/easing/EasingPicker.vue.d.ts +49 -0
  104. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +75 -0
  105. package/dist/components/custom/easing/constants.d.ts +28 -0
  106. package/dist/components/custom/easing/index.d.ts +3 -0
  107. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +10 -0
  108. package/dist/components/custom/fading-scroll/FadingScroll.vue.d.ts +25 -0
  109. package/dist/components/custom/fading-scroll/composables/useFadingScroll.d.ts +31 -0
  110. package/dist/components/custom/fading-scroll/constants.d.ts +19 -0
  111. package/dist/components/custom/fading-scroll/index.d.ts +2 -0
  112. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +19 -2
  113. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +39 -0
  114. package/dist/components/custom/fourier-field/constants.d.ts +7 -0
  115. package/dist/components/custom/fourier-field/index.d.ts +1 -1
  116. package/dist/components/custom/fourier-field/math.d.ts +17 -0
  117. package/dist/components/custom/glass-panel/GlassPanel.vue.d.ts +9 -1
  118. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +4 -2
  119. package/dist/components/custom/goo-blob/composables/uniformBridgeWGPU.d.ts +24 -0
  120. package/dist/components/custom/goo-blob/composables/useMetaballRenderer.d.ts +29 -12
  121. package/dist/components/custom/goo-blob/composables/wgpuSetup.d.ts +23 -0
  122. package/dist/components/custom/goo-blob/constants.d.ts +6 -1
  123. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -0
  124. package/dist/components/custom/handmark/HandMark.vue.d.ts +29 -0
  125. package/dist/components/custom/handmark/brush.d.ts +269 -0
  126. package/dist/components/custom/handmark/composables/useHandMark.d.ts +89 -0
  127. package/dist/components/custom/handmark/constants.d.ts +39 -0
  128. package/dist/components/custom/handmark/freehand.d.ts +69 -0
  129. package/dist/components/custom/handmark/geometry.d.ts +52 -0
  130. package/dist/components/custom/handmark/index.d.ts +27 -0
  131. package/dist/components/custom/handmark/ink.d.ts +11 -0
  132. package/dist/components/custom/handmark/texture.d.ts +39 -0
  133. package/dist/components/custom/handmark/types.d.ts +62 -0
  134. package/dist/components/custom/icon-chip/IconChip.vue.d.ts +4 -0
  135. package/dist/components/custom/icon-chip/index.d.ts +2 -0
  136. package/dist/components/custom/icon-chip/types.d.ts +82 -0
  137. package/dist/components/custom/instrument-chassis/InstrumentChassis.vue.d.ts +17 -2
  138. package/dist/components/custom/metric-stack/MetricStack.vue.d.ts +1 -1
  139. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +39 -0
  140. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  141. package/dist/components/custom/spa-view/SpaView.vue.d.ts +50 -0
  142. package/dist/components/custom/spa-view/index.d.ts +2 -0
  143. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +29 -24
  144. package/dist/components/custom/tabs/composables/useTabDragMorph.d.ts +42 -0
  145. package/dist/components/custom/tabs/composables/useTabIndicator.d.ts +30 -21
  146. package/dist/components/custom/tabs/constants.d.ts +9 -3
  147. package/dist/components/custom/tabs/index.d.ts +1 -1
  148. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +15 -1
  149. package/dist/components/ui/_shared/index.d.ts +2 -0
  150. package/dist/components/ui/_shared/menuItemVariants.d.ts +19 -0
  151. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +41 -0
  152. package/dist/components/ui/badge/index.d.ts +1 -1
  153. package/dist/components/ui/button/Button.vue.d.ts +5 -2
  154. package/dist/components/ui/button/index.d.ts +2 -2
  155. package/dist/components/ui/card/Card.vue.d.ts +34 -4
  156. package/dist/components/ui/card/CardHeader.vue.d.ts +42 -16
  157. package/dist/components/ui/card/ScrollCard.vue.d.ts +33 -0
  158. package/dist/components/ui/card/ScrollCardHeader.vue.d.ts +17 -0
  159. package/dist/components/ui/card/index.d.ts +2 -0
  160. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +2 -2
  161. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +2 -2
  162. package/dist/components/ui/carousel/GlassCarouselPager.vue.d.ts +2 -2
  163. package/dist/components/ui/carousel/index.d.ts +0 -1
  164. package/dist/components/ui/command/Command.vue.d.ts +4 -1
  165. package/dist/components/ui/dialog/DialogContent.vue.d.ts +8 -3
  166. package/dist/components/ui/drawer/Drawer.vue.d.ts +46 -33
  167. package/dist/components/ui/drawer/DrawerContent.vue.d.ts +12 -8
  168. package/dist/components/ui/drawer/DrawerDescription.vue.d.ts +2 -2
  169. package/dist/components/ui/drawer/DrawerOverlay.vue.d.ts +1 -1
  170. package/dist/components/ui/drawer/DrawerTitle.vue.d.ts +2 -2
  171. package/dist/components/ui/drawer/composables/drawerSnapContext.d.ts +26 -0
  172. package/dist/components/ui/drawer/composables/useDrawerSnap.d.ts +17 -0
  173. package/dist/components/ui/drawer/constants.d.ts +45 -0
  174. package/dist/components/ui/drawer/index.d.ts +23 -15
  175. package/dist/components/ui/focus-scope/FocusScope.vue.d.ts +20 -0
  176. package/dist/components/ui/focus-scope/index.d.ts +2 -0
  177. package/dist/components/ui/index.d.ts +1 -1
  178. package/dist/components/ui/popover/PopoverContent.vue.d.ts +3 -0
  179. package/dist/components/ui/progress/ProgressDefault.vue.d.ts +3 -2
  180. package/dist/components/ui/progress/ProgressSectioned.vue.d.ts +14 -3
  181. package/dist/components/ui/select/SelectContent.vue.d.ts +1 -1
  182. package/dist/components/ui/select/SelectTrigger.vue.d.ts +27 -4
  183. package/dist/components/ui/sheet/SheetContent.vue.d.ts +6 -0
  184. package/dist/components/ui/sheet/index.d.ts +1 -1
  185. package/dist/components/ui/skeleton/Skeleton.vue.d.ts +3 -0
  186. package/dist/components/ui/tags-input/TagsInput.vue.d.ts +2 -2
  187. package/dist/components/ui/toast/Toast.vue.d.ts +5 -2
  188. package/dist/components/ui/toast/use-toast.d.ts +14 -0
  189. package/dist/components/ui/toggle/Toggle.vue.d.ts +1 -1
  190. package/dist/composables/dark/index.d.ts +1 -1
  191. package/dist/composables/dark/useGlobalDark.d.ts +23 -1
  192. package/dist/composables/glass/canvas2d/useCanvas2D.d.ts +13 -6
  193. package/dist/composables/glass/index.d.ts +5 -2
  194. package/dist/composables/glass/useSpecularPointer.d.ts +33 -0
  195. package/dist/composables/glass/useSpecularTracking.d.ts +20 -0
  196. package/dist/composables/glass/vSpecular.d.ts +2 -0
  197. package/dist/composables/glass/webgl/shaders/flow.glsl.d.ts +1 -0
  198. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +16 -0
  199. package/dist/composables/glass/webgpu/index.d.ts +2 -0
  200. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +54 -0
  201. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +84 -0
  202. package/dist/composables/motion/core/index.d.ts +1 -0
  203. package/dist/composables/motion/index.d.ts +4 -0
  204. package/dist/composables/motion/useDockCtaReceive.d.ts +59 -0
  205. package/dist/composables/motion/useDragMorph.d.ts +77 -0
  206. package/dist/composables/motion/useLiquidFlex.d.ts +11 -0
  207. package/dist/composables/motion/useLiquidPress.d.ts +71 -0
  208. package/dist/composables/motion/useLiquidReveal.d.ts +51 -0
  209. package/dist/composables/motion/useNumericTransition.d.ts +3 -3
  210. package/dist/composables/motion/usePointerVelocityField.d.ts +98 -0
  211. package/dist/composables/motion/useViewTransition.d.ts +36 -1
  212. package/dist/concentric.d.ts +1 -0
  213. package/dist/concentric.js +562 -0
  214. package/dist/configurator.js +3 -2
  215. package/dist/confirm-dialog.js +22 -24
  216. package/dist/constellation.js +93 -95
  217. package/dist/context-menu.js +3 -3
  218. package/dist/controls.js +10 -4
  219. package/dist/createCanvasLifecycle-CHD5XrDW.js +82 -0
  220. package/dist/dark.d.ts +1 -1
  221. package/dist/dark.js +1 -1
  222. package/dist/data-table.js +1 -1
  223. package/dist/dialog.js +2 -2
  224. package/dist/dock.js +738 -442
  225. package/dist/{dockContext-BegmJVmx.js → dockContext-BNfyPLe9.js} +1 -1
  226. package/dist/dom.js +5 -5
  227. package/dist/dot-flow-field.d.ts +1 -0
  228. package/dist/dot-flow-field.js +604 -0
  229. package/dist/drawer.d.ts +1 -0
  230. package/dist/drawer.js +380 -0
  231. package/dist/{dropdown-menu-DzkkyBwX.js → dropdown-menu-CofSZuk8.js} +14 -15
  232. package/dist/dropdown-menu.js +1 -1
  233. package/dist/easing.d.ts +1 -0
  234. package/dist/easing.js +463 -0
  235. package/dist/expandable-container.js +45 -38
  236. package/dist/fading-scroll.d.ts +1 -0
  237. package/dist/fading-scroll.js +2 -0
  238. package/dist/focus-scope.d.ts +1 -0
  239. package/dist/focus-scope.js +23 -0
  240. package/dist/forms.js +7 -7
  241. package/dist/fourier-field.js +135 -122
  242. package/dist/fourier-math.js +2 -2
  243. package/dist/glass-panel.js +39 -36
  244. package/dist/glass-ui.css +1 -1
  245. package/dist/glass-ui.js +154 -362
  246. package/dist/goo-blob.js +838 -227
  247. package/dist/handmark.d.ts +1 -0
  248. package/dist/handmark.js +707 -0
  249. package/dist/header-ribbon.js +1 -1
  250. package/dist/hover-card.js +1 -1
  251. package/dist/hover-popover.js +1 -1
  252. package/dist/icon-chip.d.ts +1 -0
  253. package/dist/icon-chip.js +2 -0
  254. package/dist/icon-tooltip.js +1 -1
  255. package/dist/index.d.ts +3 -3
  256. package/dist/instrument-chassis.js +1 -1
  257. package/dist/keyboard.js +1 -1
  258. package/dist/label.js +1 -1
  259. package/dist/labeled-field.js +6 -6
  260. package/dist/{math-U6-RrLmV.js → math-BINYmg5z.js} +11 -3
  261. package/dist/{menuItemVariants-DPiEarb0.js → menuItemVariants-D8VNHq22.js} +10 -4
  262. package/dist/metric-badge.js +1 -1
  263. package/dist/metric-cell.js +25 -22
  264. package/dist/metric-stack.js +4 -8
  265. package/dist/motion-core.js +36 -35
  266. package/dist/motion-curves.js +1 -1
  267. package/dist/motion.js +157 -55
  268. package/dist/notification.js +1 -1
  269. package/dist/number-field.js +1 -1
  270. package/dist/pager-dots.d.ts +1 -0
  271. package/dist/pager-dots.js +91 -0
  272. package/dist/paper-backdrop.js +1 -1
  273. package/dist/popover.js +1 -1
  274. package/dist/{presets-BKVyQfbt.js → presets-BW2b-fr1.js} +14 -1
  275. package/dist/{compile-B7NGOBcP.js → procedural-color.glsl-CIFsJhwI.js} +1 -155
  276. package/dist/procedural-color.wgsl-CToRHugY.js +224 -0
  277. package/dist/progress.js +1 -1
  278. package/dist/pulse.js +1 -1
  279. package/dist/reactive.js +2 -2
  280. package/dist/scrolling-text.js +1 -1
  281. package/dist/search.js +10 -12
  282. package/dist/select.js +3 -3
  283. package/dist/separator.js +1 -1
  284. package/dist/sheet-tZMg0E0w.js +218 -0
  285. package/dist/sheet.js +1 -1
  286. package/dist/{slider-B-JP2JlI.js → slider-DVb4HXU-.js} +7 -7
  287. package/dist/slider.js +1 -1
  288. package/dist/sortable-list.js +3 -3
  289. package/dist/spa-view.d.ts +1 -0
  290. package/dist/spa-view.js +46 -0
  291. package/dist/styles/animations.css +40 -31
  292. package/dist/styles/border-progress.css +109 -0
  293. package/dist/styles/cards.css +76 -0
  294. package/dist/styles/components.css +1 -1
  295. package/dist/styles/configurator.css +35 -0
  296. package/dist/styles/critical-partition.mjs +140 -0
  297. package/dist/styles/critical.css +12 -0
  298. package/dist/styles/deferred.css +31 -0
  299. package/dist/styles/dock/density.css +64 -0
  300. package/dist/styles/dock/layers.css +54 -30
  301. package/dist/styles/dock/morph.css +124 -7
  302. package/dist/styles/dock/overflow.css +31 -2
  303. package/dist/styles/dock/rail-extend.css +168 -71
  304. package/dist/styles/dock/section.css +59 -0
  305. package/dist/styles/dock/shell.css +83 -16
  306. package/dist/styles/dock-controls/icon-button.css +11 -1
  307. package/dist/styles/dock-controls/tab-button.css +24 -83
  308. package/dist/styles/dock-controls/triggers.css +7 -0
  309. package/dist/styles/dock.css +38 -3
  310. package/dist/styles/drawer.css +127 -35
  311. package/dist/styles/feedback-tone.css +104 -0
  312. package/dist/styles/glass/deep.css +44 -0
  313. package/dist/styles/glass/ladder.css +154 -52
  314. package/dist/styles/glass/material.css +78 -15
  315. package/dist/styles/glass/reveal.css +136 -0
  316. package/dist/styles/glass/rim.css +100 -0
  317. package/dist/styles/glass/surface-axis.css +113 -0
  318. package/dist/styles/glass/surfaces.css +189 -15
  319. package/dist/styles/glass-refract.css +96 -44
  320. package/dist/styles/glass-specular-track.css +7 -0
  321. package/dist/styles/glass.css +8 -2
  322. package/dist/styles/hover-popover.css +7 -6
  323. package/dist/styles/icon-chip.css +211 -0
  324. package/dist/styles/index.css +78 -4
  325. package/dist/styles/instrument-chassis.css +107 -2
  326. package/dist/styles/menu.css +127 -0
  327. package/dist/styles/scroll-choreography.css +300 -0
  328. package/dist/styles/segmented-tabs.css +188 -86
  329. package/dist/styles/select.css +50 -0
  330. package/dist/styles/theme/bridges.css +22 -1
  331. package/dist/styles/theme/literals.css +11 -2
  332. package/dist/styles/theme/radius.css +6 -1
  333. package/dist/styles/tokens/color-radius.css +40 -13
  334. package/dist/styles/tokens/dark-arm.css +200 -20
  335. package/dist/styles/tokens/glass-deep.css +75 -0
  336. package/dist/styles/tokens/glass-fx.css +333 -0
  337. package/dist/styles/tokens/glass.css +95 -315
  338. package/dist/styles/tokens/light-dark.css +64 -22
  339. package/dist/styles/tokens/offsets.css +116 -0
  340. package/dist/styles/tokens/on-glass-fg.css +39 -0
  341. package/dist/styles/tokens/property-regs.css +130 -10
  342. package/dist/styles/tokens/scale-paper.css +155 -84
  343. package/dist/styles/tokens/scheme-motion.css +102 -46
  344. package/dist/styles/tokens/scroll-tokens.css +123 -0
  345. package/dist/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
  346. package/dist/styles/tokens.css +9 -3
  347. package/dist/styles/transitions.css +7 -7
  348. package/dist/styles/typography/scale.css +153 -0
  349. package/dist/styles/typography/semantic.css +220 -0
  350. package/dist/styles/typography/utilities.css +174 -0
  351. package/dist/styles/typography.css +23 -507
  352. package/dist/styles/utilities/a11y-overrides.css +33 -4
  353. package/dist/styles/utilities/animate.css +27 -24
  354. package/dist/styles/utilities/base-misc.css +255 -0
  355. package/dist/styles/utilities/base.css +100 -138
  356. package/dist/styles/utilities/btn.css +21 -202
  357. package/dist/styles/utilities/metal.css +189 -0
  358. package/dist/styles/utilities.css +14 -7
  359. package/dist/styles/view-transition.css +4 -1
  360. package/dist/switch.js +1 -1
  361. package/dist/tabs.js +275 -191
  362. package/dist/timeline.js +2 -2
  363. package/dist/toast.js +1 -1
  364. package/dist/toggle-chip.js +3 -1
  365. package/dist/toggle-group.js +1 -1
  366. package/dist/tooltip.js +1 -1
  367. package/dist/typewriter.js +1 -1
  368. package/dist/{useAnimatedNumber-C5I3wWd8.js → useAnimatedNumber-BfUq2bUM.js} +1 -1
  369. package/dist/useCanvas2D-B8w_E3Rr.js +83 -0
  370. package/dist/useConfiguratorState-DNlOh6c8.js +161 -0
  371. package/dist/useDragMorph-DgxnsVJz.js +102 -0
  372. package/dist/{useGlobalDark-yhL4Wp-s.js → useGlobalDark-C28t0VWJ.js} +22 -3
  373. package/dist/useLiquidPress-kfb4KX79.js +39 -0
  374. package/dist/usePointerVelocityField-JbRd5CrM.js +137 -0
  375. package/dist/{useRAFLoop-Bxv0o6L5.js → useRAFLoop-UYa4zoiN.js} +1 -1
  376. package/dist/useSpring-C0jyvEJB.js +40 -0
  377. package/dist/useSpringMount-q1amq1SJ.js +71 -0
  378. package/dist/useSpringPress-BsqPr7FJ.js +34 -0
  379. package/dist/useSurfaceAxis-g0NloYEF.js +7 -0
  380. package/dist/{useTouchGate-Dg7MQI1G.js → useTouchGate-CBZTD4SD.js} +1 -1
  381. package/dist/vReveal-Czsb7zQC.js +10 -0
  382. package/dist/vSpecular-CQFmLNzA.js +68 -0
  383. package/dist/vendor-CKmzio-i.js +226 -0
  384. package/dist/watercolor-dot.js +12 -5
  385. package/package.json +193 -25
  386. package/src/styles/animations.css +40 -31
  387. package/src/styles/border-progress.css +109 -0
  388. package/src/styles/cards.css +76 -0
  389. package/src/styles/configurator.css +35 -0
  390. package/src/styles/critical-partition.mjs +140 -0
  391. package/src/styles/dock/density.css +64 -0
  392. package/src/styles/dock/layers.css +54 -30
  393. package/src/styles/dock/morph.css +124 -7
  394. package/src/styles/dock/overflow.css +31 -2
  395. package/src/styles/dock/rail-extend.css +168 -71
  396. package/src/styles/dock/section.css +59 -0
  397. package/src/styles/dock/shell.css +83 -16
  398. package/src/styles/dock-controls/icon-button.css +11 -1
  399. package/src/styles/dock-controls/tab-button.css +24 -83
  400. package/src/styles/dock-controls/triggers.css +7 -0
  401. package/src/styles/dock.css +38 -3
  402. package/src/styles/drawer.css +123 -35
  403. package/src/styles/feedback-tone.css +104 -0
  404. package/src/styles/glass/deep.css +44 -0
  405. package/src/styles/glass/ladder.css +154 -52
  406. package/src/styles/glass/material.css +78 -15
  407. package/src/styles/glass/reveal.css +136 -0
  408. package/src/styles/glass/rim.css +100 -0
  409. package/src/styles/glass/surface-axis.css +113 -0
  410. package/src/styles/glass/surfaces.css +189 -15
  411. package/src/styles/glass-refract.css +96 -44
  412. package/src/styles/glass-specular-track.css +7 -0
  413. package/src/styles/glass.css +8 -2
  414. package/src/styles/hover-popover.css +7 -6
  415. package/src/styles/icon-chip.css +211 -0
  416. package/src/styles/index.css +78 -4
  417. package/src/styles/instrument-chassis.css +107 -2
  418. package/src/styles/menu.css +127 -0
  419. package/src/styles/scroll-choreography.css +300 -0
  420. package/src/styles/segmented-tabs.css +184 -84
  421. package/src/styles/select.css +50 -0
  422. package/src/styles/theme/bridges.css +22 -1
  423. package/src/styles/theme/literals.css +11 -2
  424. package/src/styles/theme/radius.css +6 -1
  425. package/src/styles/tokens/color-radius.css +40 -13
  426. package/src/styles/tokens/dark-arm.css +200 -20
  427. package/src/styles/tokens/glass-deep.css +75 -0
  428. package/src/styles/tokens/glass-fx.css +333 -0
  429. package/src/styles/tokens/glass.css +95 -315
  430. package/src/styles/tokens/light-dark.css +64 -22
  431. package/src/styles/tokens/offsets.css +116 -0
  432. package/src/styles/tokens/on-glass-fg.css +39 -0
  433. package/src/styles/tokens/property-regs.css +130 -10
  434. package/src/styles/tokens/scale-paper.css +155 -84
  435. package/src/styles/tokens/scheme-motion.css +102 -46
  436. package/src/styles/tokens/scroll-tokens.css +123 -0
  437. package/src/styles/tokens/{offsets-sizing.css → sizing.css} +88 -89
  438. package/src/styles/tokens.css +9 -3
  439. package/src/styles/transitions.css +7 -7
  440. package/src/styles/typography/scale.css +153 -0
  441. package/src/styles/typography/semantic.css +220 -0
  442. package/src/styles/typography/utilities.css +174 -0
  443. package/src/styles/typography.css +23 -507
  444. package/src/styles/utilities/a11y-overrides.css +33 -4
  445. package/src/styles/utilities/animate.css +27 -24
  446. package/src/styles/utilities/base-misc.css +255 -0
  447. package/src/styles/utilities/base.css +100 -138
  448. package/src/styles/utilities/btn.css +21 -202
  449. package/src/styles/utilities/metal.css +189 -0
  450. package/src/styles/utilities.css +14 -7
  451. package/src/styles/view-transition.css +4 -1
  452. package/dist/CardAction-Cj2eycQ2.js +0 -157
  453. package/dist/DialogContent-Dl9WkAoS.js +0 -100
  454. package/dist/Notification-DdwNxIrI.js +0 -100
  455. package/dist/NumberFieldContent-CqaN-SvN.js +0 -145
  456. package/dist/PopoverContent-BYwt2-4x.js +0 -121
  457. package/dist/TabsList-Dttss653.js +0 -105
  458. package/dist/Toaster-D6q4HtXu.js +0 -263
  459. package/dist/button-ChXMfsud.js +0 -81
  460. package/dist/check-njhk-vfu.js +0 -7
  461. package/dist/chevron-down-DKkxb4VV.js +0 -7
  462. package/dist/chevron-right-CPXbqQQz.js +0 -7
  463. package/dist/chevron-up-n_24SqI-.js +0 -7
  464. package/dist/components/custom/underline/GlassUnderline.vue.d.ts +0 -84
  465. package/dist/components/custom/underline/index.d.ts +0 -2
  466. package/dist/components/custom/underline/types.d.ts +0 -56
  467. package/dist/components/ui/carousel/CarouselDots.vue.d.ts +0 -4
  468. package/dist/createLucideIcon-DydS2qgk.js +0 -43
  469. package/dist/minimize-2-BV31Ob_h.js +0 -38
  470. package/dist/search-BSGrf2Sk.js +0 -12
  471. package/dist/sheet-1fChZjtw.js +0 -214
  472. package/dist/underline.d.ts +0 -1
  473. package/dist/underline.js +0 -85
  474. package/dist/useCanvas2D-ClrQuZtp.js +0 -96
  475. package/dist/useConfiguratorState-DAoeHVue.js +0 -287
  476. package/dist/useSpecularTracking-Bo5su68i.js +0 -32
  477. package/dist/useSpringMount-CI2jOstM.js +0 -108
  478. package/dist/vReveal-CqaCz_mC.js +0 -44
  479. package/dist/x-BUwTKe50.js +0 -10
  480. /package/dist/{CollapsibleContent-CP9qF1v4.js → CollapsibleContent-68dEXIAl.js} +0 -0
  481. /package/dist/{InstrumentChassis-UUJX0-mW.js → InstrumentChassis-Bx0F_q5g.js} +0 -0
  482. /package/dist/{Label-r3WzWrsj.js → Label-C2ejNWeC.js} +0 -0
  483. /package/dist/{ModalOverlay-DVLI2VRr.js → ModalOverlay-D1VrWyoi.js} +0 -0
  484. /package/dist/{PaperBackdrop-DIXTtVq6.js → PaperBackdrop-Vf3tlpvd.js} +0 -0
  485. /package/dist/{SelectGroup-aumMgWLs.js → SelectGroup-DwwjicPY.js} +0 -0
  486. /package/dist/{SelectSeparator-BQ_1Fcbp.js → SelectSeparator-DXswVdRz.js} +0 -0
  487. /package/dist/{Separator-0JE6LtNu.js → Separator-pKF0oA4M.js} +0 -0
  488. /package/dist/{_plugin-vue_export-helper-ok8pgSl5.js → _plugin-vue_export-helper-C1je1s0u.js} +0 -0
  489. /package/dist/{badge-UILT_3pZ.js → badge-D9XWW4GT.js} +0 -0
  490. /package/dist/{color-CUYeFbgd.js → color-DweYl7pE.js} +0 -0
  491. /package/dist/{constants-CS75AWHG.js → constants-BPOqYJAm.js} +0 -0
  492. /package/dist/{createContext-BM46COQ-.js → createContext-CpBNTRMI.js} +0 -0
  493. /package/dist/{prng-D27-B3tK.js → prng-Za0Rmgag.js} +0 -0
  494. /package/dist/{resolveCanvasColor-BBiYfp8g.js → resolveCanvasColor-CUyHr5Uu.js} +0 -0
  495. /package/dist/{springPresets--YdWTHtm.js → springPresets-CFQGQfdl.js} +0 -0
  496. /package/dist/{useIntersectionPause-Cc-H9ees.js → useIntersectionPause-Bj4sPkMh.js} +0 -0
  497. /package/dist/{useInterval-iHludrxk.js → useInterval-CvK1mL92.js} +0 -0
  498. /package/dist/{useKeyboardShortcuts-Be3w_Rwk.js → useKeyboardShortcuts-BXWXOZ-9.js} +0 -0
  499. /package/dist/{useLiquidFlex-BL0lLLN2.js → useLiquidFlex-mZPMiNXh.js} +0 -0
  500. /package/dist/{useResizeObserver-BhgdhOIj.js → useResizeObserver-Bpoi7tRE.js} +0 -0
  501. /package/dist/{useResolveTokenColor-Dvn2RZJW.js → useResolveTokenColor-vAylyR0x.js} +0 -0
  502. /package/dist/{useScrollProgress-Dlvx-L3v.js → useScrollProgress-D7bYU2RK.js} +0 -0
  503. /package/dist/{useSortable-muI29agz.js → useSortable-DHjtZSEd.js} +0 -0
  504. /package/dist/{useTextHighlight-DmRYkOBx.js → useTextHighlight-CWEi25hf.js} +0 -0
  505. /package/dist/{useTimer-Dzarvzuk.js → useTimer-BHJOKr35.js} +0 -0
  506. /package/dist/{useUserInvalidAria-B2h6jAM_.js → useUserInvalidAria-y5namzeE.js} +0 -0
  507. /package/dist/{useViewportReady-B40FK4Pa.js → useViewportReady-anbac3m6.js} +0 -0
@@ -0,0 +1,116 @@
1
+ /* tokens/offsets.css
2
+ §9 animation offsets — hover-lift offsets, the layout tokens, the public
3
+ --fade-scroll-width ramp, the dock content-overflow caps, the chassis
4
+ max-block-size/mobile dial-reserve, the popover width, the panel inner-padding
5
+ rung, the chart geometry.
6
+ Carved (BB.W-CARVE3) from the former tokens/offsets-sizing.css §9/§10 split;
7
+ @import-ed by tokens.css at offsets-sizing's old cascade slot, immediately
8
+ before sizing.css — adjacent same-selector :root blocks resolve identically,
9
+ so the dist is byte-isomorphic. See docs/precepts/design-idioms.md
10
+ §cohesion-aware partials. */
11
+ :root {
12
+ /* ═══════════════════════════════════════════════
13
+ §9 ANIMATION OFFSETS
14
+ ═══════════════════════════════════════════════ */
15
+ /* Hover lift offsets */
16
+ --lift-sm: -1px;
17
+ --lift-md: -2px;
18
+ --lift-lg: -4px;
19
+
20
+ /* Layout tokens */
21
+ /* BA.W-FADING-SCROLL — `--fade-scroll-width` is the public edge-fade ramp
22
+ width knob for `<FadingScroll>` (inheriting, retunable on any ancestor).
23
+ It superseded the scroll-BLIND `.scroll-fade-*` static masks' knob
24
+ `--mask-fade-width`, which retired in a CLEAN BREAK (no alias) at the
25
+ 4.1.0 cut — BB.W-SCROLL-FADE-RETIRE — alongside the static utilities. */
26
+ --fade-scroll-width: 1rem;
27
+ /* J.W3.C — dock content overflow caps. When dock content exceeds
28
+ these dimensions, the inner `.dock-layers` (horizontal) /
29
+ `.glass-dock.vertical` (rail) container scrolls with a
30
+ `.scroll-fade-{x,y}` mask-fade so the boundary feathers rather
31
+ than cliffs. Defaults clamp to 80vw / 80vh capped at sensible
32
+ desktop widths; consumers override per-dock by setting either
33
+ token directly on a `.glass-dock` instance. User findings 1 + 5a. */
34
+ /* AX.W04 — `--dock-max-inline-size` is the canonical inline cap EVERY overflow
35
+ strategy reads: `overflow="scroll"` scrolls past it, and `overflow="wrap"`
36
+ wraps to N rows on the over-cap crossing (the dock shrink-wraps to content,
37
+ `max-inline-size` caps that intrinsic width at this token). The prior
38
+ `--dock-overflow-bp: 640px` viewport-breakpoint token (the magic-640
39
+ snap-back) is DELETED — the wrap is content-driven, not viewport-coupled, so
40
+ there is no breakpoint threshold to name. */
41
+ --dock-max-inline-size: min(80vw, 64rem);
42
+ --dock-max-block-size: min(80vh, 48rem);
43
+
44
+ /* AB.W1.T1 — chassis max-block-size guardrail.
45
+ Maximum block size a centred consumer-app card may consume while
46
+ preserving the inline dock footprint. The recipe subtracts the
47
+ consumer-owned `--dock-footer-space` (dock height + dock inset +
48
+ card-edge inset) and `--page-padding-top` from the dynamic viewport,
49
+ then takes one further rem of breathing room so the card never
50
+ butts the dock — the user mandate is `≥ 1rem visible gap above
51
+ dock`. Both consumer tokens carry safe fallbacks for callers that
52
+ have not declared them.
53
+
54
+ Consumers should shrink internal regions (meter, readout, timeline)
55
+ before falling back to scroll. This token is a guardrail against
56
+ chassis overflow, NOT a license to make the card scroll as the
57
+ default solution; clamp-first / no-scroll-first is the canon.
58
+ See DESIGN.md `## Chassis sizing — dock-adjusted viewport`. */
59
+ --chassis-max-block-size: calc(
60
+ 100dvh
61
+ - var(--dock-footer-space, 5.75rem)
62
+ - var(--page-padding-top, 0rem)
63
+ - 1rem
64
+ );
65
+ /* R0G-2 (AO.W3/W4) — chassis mobile dial-reserve canon. instrument-
66
+ chassis.css's mobile breakpoint reserves the dial's final box from
67
+ frame 0 via these vars (with the same values as inline fallbacks, the
68
+ safety net). Token-first home so the vars resolve canonically. */
69
+ --instrument-dial-min-height-mobile: 24rem;
70
+ --instrument-dial-meter-reserve-mobile: minmax(0, 1fr);
71
+ /* BB.W-DESKTOP-RESERVE (B3) — the chassis WIDE-AXIS (desktop) dial reserve
72
+ canon, the complement of the mobile rung above. The mobile reflow
73
+ reserves the dial box from frame 0 via the rung above; the WIDE box axis
74
+ had NO library reserve, so on desktop a `1fr` meter row collapsed to its
75
+ pre-hydration intrinsic `<canvas>` size and grew on hydration, pushing
76
+ the results card + dock down (the measured desktop-1440 CLS the speedtest
77
+ App.vue interim authored a local `min-block-size` to cure). This rung is
78
+ the library home: the dial cell reserves its settled height from frame 0
79
+ on the wide axis, so the inner card mounts into an already-correct
80
+ envelope (CLS≈0, no post-hydration growth).
81
+
82
+ The default IS `--chassis-max-block-size` — the library's own
83
+ chassis-sizing guardrail (the dock-adjusted dynamic-viewport budget a
84
+ centred consumer card clamps to), a pure CSS calc that resolves at first
85
+ paint with NO JS. This is the DESKTOP DIAL: a consumer whose meter is a
86
+ different block-size retunes THIS token (the speedtest-specific value
87
+ stays in speedtest — presets-in-consumers). A consumer deletes its local
88
+ App.vue wide-axis interim once it consumes this rung. Both knobs are CSS
89
+ custom properties (token-first), the inline fallback in
90
+ instrument-chassis.css carries the contract if the token is unset. */
91
+ --instrument-dial-min-block-size-desktop: var(--chassis-max-block-size);
92
+
93
+ --max-width-input: 24rem;
94
+ --input-min-width-sm: 5rem;
95
+ --min-width-input-sm: var(--input-min-width-sm);
96
+ /* AU.W8b.4 — canonical popover width (Combobox list + anchor). Lifts the
97
+ `w-[200px]` arbitrary-value wrap to the `w-popover` @theme utility. */
98
+ --popover-width: 200px;
99
+ /* AZ.R5-4 — the ONE panel inner-padding rung (the consumer-verified "the
100
+ popover/dropdown content reads TIGHT" finding). The floating-panel +
101
+ DropdownMenuContent recipes read THIS token for their inner pad instead of
102
+ the prior hand-set `p-1`/literal, so a consumer retunes every teleported
103
+ menu/panel surface from one override. The comfortable default is `0.375rem`
104
+ (a half-rung over the prior 0.25rem tight floor — comfortable both modes
105
+ without over-padding a dense menu list). BB.W-CARD-PAD — the dead
106
+ `--panel-padding-roomy` (1rem) is DELETED here (clean break, no alias): it
107
+ had ZERO `var(--panel-padding-roomy)` consumers (the prose-popover register
108
+ it claimed to back never read it — PopoverContent paints `p-4` directly), so
109
+ it was an orphan declaration the golden-padding cut prunes. */
110
+ --panel-padding: 0.375rem;
111
+ --chart-height-compact: 15rem;
112
+ --chart-height-default: 22.5rem;
113
+ --chart-height-large: 25rem;
114
+ --chart-margin: 1.25rem;
115
+ --paper-texture-size: 200px 200px;
116
+ }
@@ -0,0 +1,39 @@
1
+ /* tokens/on-glass-fg.css
2
+ The surface-aware FOREGROUND register (BB.W-ON-GLASS-FG — N13). Carved out of
3
+ tokens/glass.css to keep that partial under the no-god-module bound; @import-ed
4
+ by tokens.css in cascade order AFTER glass.css (the rungs derive against the
5
+ glass-bg-quiet composite, so they must resolve after the §8 ladder). Same :root
6
+ cascade context as its sibling token partials.
7
+
8
+ A THREE-RUNG on-glass family whose contrast TARGET is the COMPOSITED content-
9
+ tier glass FILL, not the canvas. The glass-first MAXIMAL default (AX.W54) makes
10
+ a caption/well/track rendering over a TRANSLUCENT content plate the common case;
11
+ --muted-foreground (= --neutral-5, "AA vs page") collapses on its OWN surface
12
+ (the speedtest ask measured 1.15-3.29:1 in dark theme — the "whisper collapse").
13
+
14
+ This is the THIRD state the BA adaptive-glass seam never expressed (the SAME
15
+ --glass-tint-* cascade context, NOT a fork): (a) bright/darkened plate → full
16
+ ink (the @container bright bucket + the overlay band, shipped — glass/ladder.css);
17
+ (b) opaque canvas → page-muted (--neutral-5, kept); (c) THIS — calm translucent
18
+ glass plate → a register BETWEEN page-muted and full-ink (legible-AND-subordinate;
19
+ a caption stays quieter than body ink WHILE clearing AA on the composited plate).
20
+
21
+ The values are DERIVED against the LIBRARY composite (--card over --neutral-0
22
+ through --glass-bg-quiet at --glass-tint-strength-floor), warm-amber (the BA.W-
23
+ NO-GRAY identity, OKLab gray floor cleared at the warm hue) — NOT copied from
24
+ the slides deck.css §1 reference (the deck's NC-State-red warm-cream literals
25
+ hsl(24 6% 44%)/hsl(45 12% 64%) are a CONSUMER divergence; the library re-derives).
26
+ NO ppmycota/demo hue. The page-muted register (--muted-foreground/-strong) is
27
+ UNTOUCHED — the on-glass rungs are NET-NEW; the glass/ladder.css calm-tier rule
28
+ re-points --muted-foreground → these on the engaged plate, no per-site edit.
29
+
30
+ PLAIN PER-MODE ARM idiom (light here, dark in tokens/dark-arm.css) — NOT
31
+ light-dark(): the house pattern every explicit-color token follows (a re-
32
+ resolution under .dark, not a single-declaration light-dark() that an inset-
33
+ shadow downstream could collapse — the light-dark() inset-shadow trap). */
34
+ :root {
35
+ --on-glass-muted: hsl(30 26% 35%); /* the muted caption rung over the composited cream plate (5.76:1 vs plate; darker than --neutral-5 L40) */
36
+ --on-glass-muted-strong: hsl(28 28% 28%); /* the -strong secondary rung, one step more present (7.79:1 vs plate) */
37
+ --input-on-glass: hsl(36 40% 92%); /* the form-well fill over glass — grounded warm so the input TEXT (--foreground) reads against a stable base (14.9:1) */
38
+ --progress-track-on-glass: hsl(34 24% 84%); /* the recessed meter track over glass — a warm channel distinct from the fill silhouette */
39
+ }
@@ -30,10 +30,9 @@
30
30
  wrapper that reads it for a sympathetic tint (matches the
31
31
  `--phase-color` inheritance pattern).
32
32
 
33
- • --ripple-radius (length) — the `btn-audacious` press ripple
34
- radial. `inherits: false` because each button owns its own
35
- ripple state (a hovered parent must not push a ripple-radius
36
- onto a non-pressed child).
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).
37
36
  ═══════════════════════════════════════════════ */
38
37
 
39
38
  @property --progress-crescendo {
@@ -42,16 +41,25 @@
42
41
  initial-value: 0%;
43
42
  }
44
43
 
45
- @property --phase-tint-amount {
44
+ /* BB.W-BORDER-PROGRESS — the masked-conic BORDER ring's sweep fill. The conic
45
+ gradient (border-progress.css) reads `--border-progress-fill` as the swept
46
+ extent (`conic-gradient(…, transparent var(--border-progress-fill), …)`), so a
47
+ determinate progress INTERPOLATES the border ring (a bare unregistered var()
48
+ snaps the sweep; the registered typed <percentage> lets the engine animate the
49
+ gradient stop). `inherits: false` — each ring owns its own fill (the per-surface
50
+ ownership the specular cohort uses; a ringed parent must not push its fill onto a
51
+ child). `initial-value: 0%` is the safe resting ring (the unregistered fallback
52
+ paints it; the cross-fade collapses to it on a non-supporting engine). */
53
+ @property --border-progress-fill {
46
54
  syntax: "<percentage>";
47
- inherits: true;
55
+ inherits: false;
48
56
  initial-value: 0%;
49
57
  }
50
58
 
51
- @property --ripple-radius {
52
- syntax: "<length>";
53
- inherits: false;
54
- initial-value: 0px;
59
+ @property --phase-tint-amount {
60
+ syntax: "<percentage>";
61
+ inherits: true;
62
+ initial-value: 0%;
55
63
  }
56
64
 
57
65
  /* ═══════════════════════════════════════════════
@@ -98,6 +106,71 @@
98
106
  initial-value: 0;
99
107
  }
100
108
 
109
+ /* BB.W-LENSING — the per-surface EDGE-glint angle channel. `--specular-angle` is
110
+ the pointer angle-from-center the edge-glint conic sweep reads (material.css);
111
+ `useSpecularPointer` writes it (the angle feed). `inherits: false` — the
112
+ per-element ownership discipline of the specular cohort above (each pseudo owns
113
+ its typed value; a parent's angle must never bleed into a child glass surface).
114
+ `initial-value: 0deg` is the static rest position (the rim glint sits top when
115
+ unwired — no ambient drift, no blowout). */
116
+ @property --specular-angle {
117
+ syntax: "<angle>";
118
+ inherits: false;
119
+ initial-value: 0deg;
120
+ }
121
+
122
+ /* BB.W-LENSING `--glass-refract` axis — RETIRED (DDR-LENS-BAKE, glass-refract.css).
123
+ The axis drove the `feDisplacementMap` `scale` by splicing `var(--glass-refract)`
124
+ between a head/tail `url()` pair. That construction never parsed as a
125
+ `backdrop-filter` (it emitted three tokens, not one url) AND broke consumer bundlers
126
+ (the tail `url("'…")` mis-resolved as a file path); a CSS url() string token cannot
127
+ carry a substituted `var()`, so a dynamic `scale` inside the mandatory single
128
+ self-contained data-URI is structurally impossible. The `scale` is now BAKED at 28
129
+ (the resting bend, byte-identical) — no axis, no `@property` reg. */
130
+
131
+ /* BB.W-GLASS-ACCENT — the THIRD disjoint glass axis: the per-INSTANCE
132
+ CHROMATIC-RIM tint. `--glass-accent` is a complete `<color>` (a consumer DATA
133
+ hue) that OKLab-tints a glass surface's RIM (the `--glass-material-rim` inset
134
+ ring + the per-rung `--glass-border-*`) and the `::before` specular catch-light
135
+ CORE — so the §F1 data-keyed colored hover (a chart cell whose surface glows
136
+ with that datum's series hue) is a ONE-LINE seam (`--glass-accent: <hue>;
137
+ --glass-accent-strength: <N%>` on the instance), not a hand-threaded
138
+ `border-color` + inline catch-light per consumer.
139
+
140
+ DISTINCT-not-fork of W55's `--glass-tint-source` (the WHOLE-PLATE BACKGROUND
141
+ legibility darken toward `--glass-tint-ink`): the accent is the RIM+GLINT
142
+ chromatic DECORATION axis (toward a consumer DATA hue, per-instance), it NEVER
143
+ writes the W55 cohort and NEVER tints the plate background. Three disjoint glass
144
+ axes: LEVEL (opacity+blur, AX.W54) · TINT (whole-plate legibility, W55) · ACCENT
145
+ (per-instance chromatic rim+glint, this wave).
146
+
147
+ • --glass-accent (<color>) — the consumer data hue. `inherits: true` (the
148
+ `--glass-level`-style cascading scalar — a host sets it on an ancestor to tint
149
+ a sub-tree; a consumer sets it per-INSTANCE on the surface). `initial-value:
150
+ transparent` is the NEUTRAL IDENTITY: a `color-mix(in oklab, X, transparent N)`
151
+ is byte-identical X at the resting end, so an UNSET surface paints exactly
152
+ today's warm-ink rim + warm-cream catch-light (the W2 neutral-fallback floor).
153
+
154
+ • --glass-accent-strength (<percentage>) — the bounded knob. `inherits: true`
155
+ (rides the accent down the same sub-tree). `initial-value: 0%` so the mix is a
156
+ provable no-op when unset (`color-mix(in oklab, X, <accent> 0%)` === X). The
157
+ consumer-set ceiling is a WHISPER at the rim, not a flooded plate — the demo
158
+ specimens engage ~40-55% (the rim/glint reads the hue while the warm-cream core
159
+ + the AA legibility survive; the `--glass-tint-strength-aa` ≤24% bounding
160
+ precedent, lifted here because the accent rides the THIN rim/glint not the
161
+ whole plate). A malformed override CLAMPS to 0% (the typed fail-safe). */
162
+ @property --glass-accent {
163
+ syntax: "<color>";
164
+ inherits: true;
165
+ initial-value: transparent;
166
+ }
167
+
168
+ @property --glass-accent-strength {
169
+ syntax: "<percentage>";
170
+ inherits: true;
171
+ initial-value: 0%;
172
+ }
173
+
101
174
  /* AX.W54 — the GLASS-FIRST single knob. `--glass-level` is the ONE clarity
102
175
  scalar threaded through BOTH glass ladders at their single sites (the
103
176
  `--glass-bg-*` opacity recipe + the `--glass-blur-*` radii). It is a typed,
@@ -121,6 +194,27 @@
121
194
  initial-value: 1;
122
195
  }
123
196
 
197
+ /* BB.W-DEEP-GLASS — the OPT-IN deep-glass DEPTH scalar. `--glass-depth` is the
198
+ `--glass-level` TWIN for the deep tier: a typed INHERITING <number> so a host
199
+ sets it on any ancestor to retune the deep tier's depth (the cascading-scalar
200
+ idiom, distinct from the per-element `inherits: false` specular cohort). The
201
+ deep recipe (tokens/glass-deep.css) LERPs both the blur radius AND the saturate
202
+ between the calm `floating` endpoint (depth 0 ≡ the calm ceiling) and the Apple-
203
+ deep endpoint (depth 1 ≡ saturate 1.5 / blur 16px), so the deep blur is
204
+ `--glass-depth`-DRIVEN (the D1 axis assert — never a baked literal) and animates
205
+ smoothly. `initial-value: 1` is the resting deep magnitude: a `.glass-deep`
206
+ surface paints at the full Apple-deep register by default; a consumer dials
207
+ `--glass-depth: 0.5` to land it half-way to the calm floating rung. SEPARATE
208
+ from `--glass-level` (opacity+blur clarity), `--glass-tint-*` (legibility), and
209
+ `--glass-refract` (lens displacement) — the disjoint depth axis. The deep tier
210
+ COMPOSES `--glass-level` too (the deep blur scales it), so the opaque escape +
211
+ the a11y brackets reach the deep plate through the ONE level path. */
212
+ @property --glass-depth {
213
+ syntax: "<number>";
214
+ inherits: true;
215
+ initial-value: 1;
216
+ }
217
+
124
218
  /* AX.W51 D18 — the master comfortable-sizing scalar registered typed. The
125
219
  `<number>` syntax guarantees `calc(<base> * var(--ui-scale))` is always valid (a
126
220
  malformed override CLAMPS to the initial value 1, not an invalidated calc — the
@@ -159,6 +253,13 @@
159
253
  --glass-specular-intensity-rest: 0;
160
254
  --glass-specular-intensity-hover: 0.1;
161
255
  --glass-specular-intensity-active: 0.16;
256
+ /* BB.W-BUTTON-GLASS (d) — the BUTTON-SCOPED hover gleam bump. The lit glass
257
+ button should read a notch brighter at the grazing edge than the global
258
+ hover whisper (0.10). `.btn-glass` re-points its own
259
+ `--glass-specular-intensity-hover` to this knob (surfaces.css), so ONLY the
260
+ button lifts — the global cohort above is UNTOUCHED. A consumer retints the
261
+ button gleam from this ONE override. */
262
+ --glass-specular-btn-hover: 0.14;
162
263
  }
163
264
 
164
265
  /* Over the deep canvas `plus-lighter` still lifts, so the dark arm runs a touch
@@ -166,4 +267,23 @@
166
267
  .dark {
167
268
  --glass-specular-intensity-hover: 0.08;
168
269
  --glass-specular-intensity-active: 0.12;
270
+ /* The button bump rides a touch softer in dark too (the dark hover is 0.08;
271
+ the button reads ~0.11, still a notch above the global whisper). */
272
+ --glass-specular-btn-hover: 0.11;
273
+ }
274
+
275
+ /* BB.W-BUTTON-GLASS (b)/(e) — the press DRIVE scalar. ONE typed 0..1 custom
276
+ property Button.vue writes off the `useSpringPress` spring (0 released → 1
277
+ pressed, with the ~5% overshoot the spring carries). It is the SINGLE drive the
278
+ press SQUISH (the `useLiquidFlex` reciprocal X/Y deform), the coupled specular/
279
+ brightness lift, and the optional `.glass-refract` lens-swell all read — the "one
280
+ drive, the glass deforms under press" read. Registered typed so a `transition`/
281
+ downstream `calc()` interpolates the VALUE (number), not the text. `inherits:
282
+ true` so the host-written value reaches the `.glass-material::before` pseudo +
283
+ the coupled rules. `initial-value: 0` so an unwired/SSR button is the static
284
+ rest frame (the no-JS CSS `.tap-squish` scale floor still presses). */
285
+ @property --glass-btn-press-t {
286
+ syntax: "<number>";
287
+ inherits: true;
288
+ initial-value: 0;
169
289
  }
@@ -51,6 +51,14 @@
51
51
  wants a whisper of squish, not a bounce. A consumer dials the elasticity
52
52
  (or to 1 for none) without touching source. */
53
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);
54
62
  --opacity-disabled: 0.5;
55
63
  --opacity-icon-muted: 0.8;
56
64
 
@@ -59,6 +67,20 @@
59
67
  0 0 8px color-mix(in srgb, var(--ring) 15%, transparent);
60
68
  --focus-ring: var(--focus-ring-shadow);
61
69
 
70
+ /* BB.W-INVALID-RING — the destructive twin of --focus-ring-shadow. The
71
+ aria-invalid ring is ONE register: every form control (Input/Textarea/
72
+ NumberField via `.input-pill`, SelectTrigger, ComboboxInput, TagsInput)
73
+ reads `box-shadow: var(--invalid-ring)` instead of re-spelling the recipe
74
+ inline. ONE geometry (the SAME `--focus-ring-width`), ONE tint knob
75
+ (`--invalid-ring-tint`, the documented retint axis), resolving
76
+ `var(--destructive)` so a dark `--destructive` re-anchor flows through. A
77
+ consumer retints every invalid ring library-wide from a single
78
+ `:root { --invalid-ring-tint: … }` override — the token-first axis
79
+ `--focus-ring-shadow` already grants the focus ring. */
80
+ --invalid-ring-tint: 35%;
81
+ --invalid-ring: 0 0 0 var(--focus-ring-width)
82
+ color-mix(in srgb, var(--destructive) var(--invalid-ring-tint), transparent);
83
+
62
84
  /* ═══════════════════════════════════════════════
63
85
  §12 PAPER TEXTURES
64
86
  ═══════════════════════════════════════════════ */
@@ -72,6 +94,45 @@
72
94
  --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");
73
95
  --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");
74
96
 
97
+ /* BB.W-PAPER-GRID-TEXTURE — the GEOMETRIC half of the paper-cascade, the
98
+ peer of the organic turbulence above. Where `--paper-*-texture` are
99
+ feTurbulence grain fields, this is a two-frequency engineering-paper
100
+ grid: a 32px MINOR cell + a 128px MAJOR rule (the 4×-major blueprint
101
+ vocabulary the demo `.story-bg-grid` speaks, re-expressed as a library
102
+ token so a document-register card can opt its INTERIOR ground into the
103
+ line-field, not only the page margin). Unlike the organic SVG textures
104
+ (a baked-at-parse `opacity` URI), the grid is a STATIC `background-image`
105
+ gradient-STACK — a one-time compositor-cached paint, NEVER a per-frame
106
+ repaint. The line INK reads a `color-mix(… var(--foreground) N%, …)` so
107
+ it composes against the warm ink identity and re-tints with `--foreground`
108
+ in lockstep — never a hardcoded `hsl()` (the no-gray / token-first
109
+ floor). The ambient through-card strength is the ONE knob
110
+ `--paper-grid-opacity` (~0.08, the ask's "felt THROUGH the card ~0.08"):
111
+ the MINOR line ink scales off it directly and the MAJOR rule rides
112
+ `* 1.6` (the demo's 7%→12% engineering-paper weight step), so a consumer
113
+ retunes the whole grid from the single strength knob. (The strength lives
114
+ in the ink alpha, not a layer `opacity`, because the utility paints the
115
+ grid on the card's HOST `background-image` to avoid the two-pseudo-budget
116
+ contention with the grain `::after` / specular `::before` — see
117
+ cards.css.) */
118
+ --paper-grid-opacity: 0.08;
119
+ --paper-grid-texture-size: 32px;
120
+ --paper-grid-line: color-mix(
121
+ in srgb,
122
+ var(--foreground) calc(var(--paper-grid-opacity) * 100%),
123
+ transparent
124
+ );
125
+ --paper-grid-line-major: color-mix(
126
+ in srgb,
127
+ var(--foreground) calc(var(--paper-grid-opacity) * 160%),
128
+ transparent
129
+ );
130
+ --paper-grid-texture:
131
+ linear-gradient(to right, var(--paper-grid-line-major) 1px, transparent 1px),
132
+ linear-gradient(to bottom, var(--paper-grid-line-major) 1px, transparent 1px),
133
+ linear-gradient(to right, var(--paper-grid-line) 1px, transparent 1px),
134
+ linear-gradient(to bottom, var(--paper-grid-line) 1px, transparent 1px);
135
+
75
136
  /* ═══════════════════════════════════════════════
76
137
  §13 GOLD (accent family kept for consumers using it)
77
138
  ═══════════════════════════════════════════════ */
@@ -92,6 +153,68 @@
92
153
  --color-gold-dark: var(--gold-dark);
93
154
  --color-gold-deep: var(--gold-deep);
94
155
 
156
+ /* ═══════════════════════════════════════════════
157
+ §13b SILVER (the structure metal — BA.W-ATLAS-RECONCILE C-3, d6 register C)
158
+ ═══════════════════════════════════════════════ */
159
+ /* The cool polished-steel STRUCTURE quad — gold's mirror for the industrial
160
+ housing register (the InstrumentChassis `variant="structure"` consumer #2).
161
+ Gold ships; the structure metal never did. The cascade EXACTLY mirrors gold's
162
+ (scale-paper raw → bridges `--color-silver*` alias → both dark arms).
163
+
164
+ BA.W-NO-GRAY NAMED EXCEPTION (the ONE sanctioned cool-neutral). W-NO-GRAY
165
+ moved the library's NEUTRAL ladder to a warm OKLab H~70° register (no gray).
166
+ Silver is DELIBERATELY COOL near-achromatic (hue ~255, the blue-steel of a
167
+ milled panel) — it is NOT a neutral, it is a brand METAL identity (like gold).
168
+ Calibrated AGAINST the new warm floor: the very-low chroma (C ≤ 0.016) reads
169
+ as polished metal, not a tinted cast, and the cool hue distinguishes it from
170
+ the warm-cream glass plate so the structure register reads as a DIFFERENT
171
+ material, not a desaturated default. Recorded as the warm-floor exception in
172
+ the W-ATLAS-RECONCILE DELTA. */
173
+ --silver: oklch(0.760 0.012 255);
174
+ --silver-light: oklch(0.902 0.010 255);
175
+ --silver-dark: oklch(0.582 0.014 255);
176
+ /* The mode-INVARIANT deep structure plate (mirrors `--gold-deep`'s contract —
177
+ a fixed dark cool-steel so a white label clears ≥4.5:1 in BOTH modes; it does
178
+ NOT flip with `--foreground`). The would-be saturated CTA twin of the metal. */
179
+ --silver-deep: oklch(0.462 0.016 258);
180
+
181
+ --color-silver: var(--silver);
182
+ --color-silver-light: var(--silver-light);
183
+ --color-silver-dark: var(--silver-dark);
184
+ --color-silver-deep: var(--silver-deep);
185
+
186
+ /* ═══════════════════════════════════════════════
187
+ §13c BRONZE (the THIRD brand-metal — BB.W-METAL-SHIMMER)
188
+ ═══════════════════════════════════════════════ */
189
+ /* The warm-brown patina quad — the third member of the gold·silver·bronze
190
+ brand-metal TRIAD (the medal triad, the gilt/aged "third place" figure, the
191
+ record-badge register). Gold (warm-yellow ~84°) + silver (cool-steel ~255°)
192
+ are the two poles; bronze is the warm-amber-brown ~54° register between them.
193
+ The cascade EXACTLY mirrors gold's and silver's (scale-paper raw → bridges
194
+ `--color-bronze*` alias → both dark arms); `-deep` is mode-invariant.
195
+
196
+ BA.W-NO-GRAY brand-metal EXCEPTION — bronze is the THIRD metal on the SAME
197
+ sanction silver carries (the ONE cool-neutral exception). Bronze is a WARM
198
+ metal identity with chroma ABOVE the warm floor: each rung resolves OKLab
199
+ C 0.072-0.112 (far above the STRONG_FLOOR 0.020) at hue ~49-60°, so it reads
200
+ as polished bronze MATERIAL, never a desaturated brown CAST (the W-NO-GRAY
201
+ "warm-not-tinted" bar). It is NOT a neutral — a low-chroma bronze would BE a
202
+ neutral and break the brand-metal read; the chroma is the metal. The hue sits
203
+ between gold and red-orange so it distinguishes from a dark gold at the rim. */
204
+ --bronze: oklch(0.620 0.092 54.0);
205
+ --bronze-light: oklch(0.760 0.112 60.0);
206
+ --bronze-dark: oklch(0.500 0.082 50.0);
207
+ /* The mode-INVARIANT deep bronze plate (mirrors `--gold-deep`/`--silver-deep`'s
208
+ contract — a fixed dark bronze so a white label clears ≥4.5:1 in BOTH modes;
209
+ it does NOT flip with `--foreground`). 8.36:1 white in light / 4.79:1 in dark
210
+ on the dark-arm-lifted rungs. The would-be saturated CTA twin of the metal. */
211
+ --bronze-deep: oklch(0.430 0.072 50.0);
212
+
213
+ --color-bronze: var(--bronze);
214
+ --color-bronze-light: var(--bronze-light);
215
+ --color-bronze-dark: var(--bronze-dark);
216
+ --color-bronze-deep: var(--bronze-deep);
217
+
95
218
  /* ═══════════════════════════════════════════════
96
219
  §14 RAINBOW PALETTE — oklch (AV.W16 TW2; mode-independent, no .dark
97
220
  mirror; hue preserved from the prior hsl() cadence)
@@ -229,6 +352,32 @@
229
352
  --metric-row-label-clamp-cqi: 5cqi;
230
353
  --metric-row-label-clamp-max: 2.75rem;
231
354
 
355
+ /* BB.W-CONTROL-TOKENS — the two CONSUMER-reach knobs (the no-`:deep`
356
+ precept, Design Axis 2). MetricRow internals a consumer must reach are
357
+ exposed as tokens, never an internal a `:deep()` overrides.
358
+
359
+ • `--metric-row-label-align` — the label `text-align`. Default `left`
360
+ (byte-identical to the prior render). A cert-grid consumer building a
361
+ labelled ledger sets `right` at `:root`/a parent/per-row for a
362
+ right-aligned fixed seam — cascades into `.metric-row__label` with no
363
+ `:deep()`.
364
+ • `--metric-row-icon-color` — the leading-glyph ink (the MetricCell
365
+ `iconColor`→IconChip precedent, mirrored as a token since MetricRow
366
+ ships a raw `<component :is>`). The per-row `phaseColor` prop seeds it
367
+ inline so today's consumers paint unchanged; un-set, the component
368
+ fallback (`inherit`) keeps the icon on the inherited cascade. A consumer
369
+ wanting a DISTINCT icon ink from the phase tint overrides it directly.
370
+
371
+ Both carry their byte-identical defaults — `left` (the prior render) /
372
+ `inherit` (the prior un-tinted glyph). Declaring them here keeps the
373
+ `--metric-row-*` family discoverable in one home; the component-level
374
+ `var(…, fallback)` read preserves the same default if the token is ever
375
+ un-declared (the defense-in-depth back-compat floor). A per-row
376
+ `phaseColor` prop still wins over the `:root` `--metric-row-icon-color`
377
+ (inline cascades higher), so today's phase-tinted icons are unchanged. */
378
+ --metric-row-label-align: left;
379
+ --metric-row-icon-color: inherit;
380
+
232
381
  /* ═══════════════════════════════════════════════
233
382
  §2.D INSTRUMENT-CLUSTER COMPOSITION RHYTHM
234
383
 
@@ -279,88 +428,10 @@
279
428
  --table-head-h: calc(3rem * var(--table-density));
280
429
  --table-head-px: calc(1rem * var(--table-density));
281
430
 
282
- /* ═══════════════════════════════════════════════
283
- §20 PLATFORM MOTION (AQ.W5)
284
-
285
- The native-platform motion substrate axes. Three families, each read
286
- by a `@supports`-gated CSS recipe in `scroll-driven.css`,
287
- `animations.css` (§TOP-LAYER), and `view-transition.css` — every visual
288
- knob a token so a consumer retunes without editing library source.
289
-
290
- SCROLL-DRIVEN (scroll-driven.css). Values mirror the JS-fallback
291
- composable defaults (`useScrollProgress` / `useStaggerReveal`) so the
292
- native CSS path and the fallback path read identically — no visual seam
293
- at the `@supports` boundary.
294
-
295
- TOP-LAYER (animations.css §TOP-LAYER). The `@starting-style` entry/exit
296
- grammar for native `<dialog>` / `[popover]` glass surfaces. The backdrop dim
297
- uses the house alpha-derivative `color-mix(in srgb, var(--background) Npct,
298
- transparent)` (AZ.W-ADAPTIVE-AUTO A5-1). It is NOT the `hsl(var(--background)
299
- / α)` channel form: `--background` is a COMPLETE `hsl()` color
300
- (`= hsl(48 12% 98%)`), so `hsl(var(--background) / α)` double-wraps to
301
- `hsl(hsl(…) / α)` — invalid, never paints (the modal dim was silently dead).
302
- The genuine channel form would require `--background` declared as a bare
303
- `H S% L%` triple, which it never is — hence the alpha-derivative mix.
304
-
305
- VIEW-TRANSITION (view-transition.css). The shared `.gl-list-item` group
306
- recipe + the `--vt-*` axes the `useViewTransition` substrate consumers
307
- (dock layer swap, muster J's verdict re-rank) tune their swap against.
308
- ═══════════════════════════════════════════════ */
309
- --scroll-progress-scroller: root;
310
- --scroll-reveal-rise: 6px;
311
- --scroll-reveal-range-end: 60%;
312
-
313
- --top-layer-enter-scale: 0.96;
314
- --top-layer-backdrop-blur: 8px;
315
- --top-layer-backdrop-dim: 0.5;
316
-
317
- --vt-duration: var(--duration-normal);
318
- /* AX.W05 — ONE iOS-spring vocabulary: every spring-flavored transition reads
319
- a governed `--spring-*` register. The legacy apple-spring cubic-bezier
320
- (+27.5% overshoot) was a SECOND authority beside the regen `--spring-*`
321
- cohort; it is EXCISED. Its emphatic-overshoot register maps to the playful
322
- `--spring-bouncy` (the closest `linear()` overshoot stop-set), so the VT
323
- default + the cards/top-layer transitions share one spring primitive
324
- (CPU + GPU sample the same curve). No cubic-bezier fallback seed survives —
325
- the `linear()` spring degrades to `ease` where `linear()` is unsupported. */
326
- --vt-ease: var(--spring-bouncy);
327
- --vt-rise: 8px;
328
-
329
- /* AT.W6-dock-c / AU.W8 — the dock layer-swap morph timing, minted ONCE so
330
- both engine paths are timing-IDENTICAL: the FLIP fallback (via
331
- `--dock-motion-resize`), the native View-Transition group (its
332
- `animation-timing-function`), AND the runtime SpringProgress driver
333
- (AU.W8.3) consume this same `(0.32, 0.7)` source curve. Retires the AQ.W6
334
- fork where the VT path ran `--vt-ease` (apple-spring, +27.5% overshoot)
335
- while the FLIP ran the snappy spring. `--vt-ease` still defaults the
336
- other VT recipes (`.gl-list-item`).
337
-
338
- AU.W8 — RETARGET snappy → dock. `--spring-snappy` (ζ=0.65, +6.8%) read as
339
- mechanical: a stiff plateau at ~48% with too little overshoot to feel
340
- alive ("not iOS-smooth"). AW.W2 then retuned the dock spring to the
341
- iOS-control register: `--spring-dock` ((0.32, 0.7), ~+4.6%) settles snappy
342
- with a restrained overshoot — the felt iOS dock morph, off the prior
343
- playful +18.5% register. The runtime driver's DOCK_SPRING const MIRRORS the
344
- (0.32, 0.7) PRESETS row, so the CSS token and the JS-driven morph are
345
- bit-identical. */
346
- --dock-resize-spring: var(--spring-dock);
347
-
348
- /* AT.W7-dock-b — dock-control press micro-feedback spring. A TRANSFORM-ONLY
349
- spring (`scale`/`rotate`) the dock controls apply to their hover/press
350
- activation so the squish reads with a touch of spring-back rather than a
351
- flat ease. STRICTLY transform-scoped: it must never touch the surface-tier
352
- `[data-held]` fades (background/border/box-shadow), which stay on
353
- `--duration-fast var(--ease-standard)`. The duration pairs with
354
- `--duration-fast`; consumers retune the whole feel via this one token.
355
-
356
- AY.W-DOCK2 (D6) — the register is `--spring-smooth`, the §6 easing-doctrine
357
- transform-press register (tokens.css §2: transform hover/press/active →
358
- `--spring-smooth`/`--spring-snappy`, NEVER `--spring-bouncy`; a press must
359
- settle, never overshoot into a visible bounce). The prior `--spring-bouncy`
360
- ROOT default was off-doctrine, shadowed for the four named controls by a
361
- per-surface re-point in dock-controls.css — the exact per-surface fork the
362
- doctrine kills. The re-point is now a DEAD byte-identical redeclaration and is
363
- DELETED; the ROOT token IS the doctrine register, so any other consumer of
364
- `--dock-press-spring` inherits the correct smooth register. */
365
- --dock-press-spring: var(--duration-fast) var(--spring-smooth);
431
+ /* §20 PLATFORM MOTION (AQ.W5) — the scroll-driven/choreography + TOP-LAYER +
432
+ VIEW-TRANSITION + dock-spring motion knobs — carved WHOLE to
433
+ tokens/scroll-tokens.css at BB.W-CARVE4 (a contiguous tail carve at the §19/§20
434
+ seam; §20 is the file's last section, so the partial @import-s IMMEDIATELY
435
+ AFTER this one — the dist is byte-isomorphic). The paper/control/display/metal/
436
+ timeline/metric/table families above stay. */
366
437
  }