@mkbabb/glass-ui 4.0.1 → 4.2.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 (606) hide show
  1. package/dist/{CardAction-CW7a0m8M.js → CardAction-DlVP2evz.js} +72 -53
  2. package/dist/{CommandShortcut-DvZNQ_HF.js → CommandShortcut-By-VQcLO.js} +25 -14
  3. package/dist/{ConfiguratorRow-BR4l-ixA.js → ConfiguratorRow-YMXdINHx.js} +14 -14
  4. package/dist/ContextMenuContent-CMWn6huB.js +90 -0
  5. package/dist/{ContextMenuSubContent-xol4sD2q.js → ContextMenuSubContent-DvwWCUc0.js} +16 -16
  6. package/dist/{DataTable-CuKwF7wr.js → DataTable-C4tG3eIJ.js} +4 -4
  7. package/dist/DialogContent-D8U9ZfWS.js +121 -0
  8. package/dist/DialogFooter-DoLy0ewI.js +80 -0
  9. package/dist/DialogScrollContent-BMekN7gq.js +93 -0
  10. package/dist/{FadingScroll-DI6hQhT9.js → FadingScroll-P8B30rAD.js} +1 -1
  11. package/dist/HoverCardContent-DAmGYglo.js +88 -0
  12. package/dist/{HoverPopover-CbqbNwgU.js → HoverPopover-DYpBOzzF.js} +1 -1
  13. package/dist/{IconChip-BTD-nay5.js → IconChip-CQa7XZYc.js} +7 -5
  14. package/dist/{IconTooltip-Bl8gFZ8d.js → IconTooltip-_df8M3xm.js} +1 -1
  15. package/dist/Input-CyU4_hIC.js +57 -0
  16. package/dist/{MetricBadge-RHdBP72w.js → MetricBadge-DQt_dGah.js} +1 -1
  17. package/dist/{Notification-VUwexFUf.js → Notification-BlSPJhtZ.js} +4 -4
  18. package/dist/NumberFieldContent-Z3VxGu_6.js +140 -0
  19. package/dist/PagerDots-CYlqVFd4.js +196 -0
  20. package/dist/PaperBackdrop-DYWgrnh8.js +42 -0
  21. package/dist/{PopoverContent-DL7E6vJP.js → PopoverContent-BuKyHZSz.js} +2 -2
  22. package/dist/{Progress-DctG61iZ.js → Progress-C9SsdwIZ.js} +1 -1
  23. package/dist/{ScrollingText-yOpBzFYq.js → ScrollingText-DY3W1Jfh.js} +2 -2
  24. package/dist/SelectScrollDownButton-3mFHX_R-.js +260 -0
  25. package/dist/{SelectSeparator-DXswVdRz.js → SelectSeparator-CNRGG7Ew.js} +1 -1
  26. package/dist/Separator-Cf9-JFgi.js +44 -0
  27. package/dist/Switch-uf-UKPA2.js +49 -0
  28. package/dist/{Toaster-Bw4xR8xV.js → Toaster-ozrsR4mP.js} +2 -2
  29. package/dist/{ToggleGroupItem-pEM9vIhs.js → ToggleGroupItem-BpzaVzNm.js} +6 -6
  30. package/dist/TooltipProvider-QQVM_80r.js +109 -0
  31. package/dist/animated-digit.js +2 -2
  32. package/dist/api/index.d.ts +16 -32
  33. package/dist/api/types-extra.d.ts +33 -0
  34. package/dist/api.js +2 -2
  35. package/dist/aurora.js +629 -269
  36. package/dist/badge-Bt14yURi.js +72 -0
  37. package/dist/badge.js +1 -1
  38. package/dist/border-progress.js +49 -57
  39. package/dist/button-D1W9PrzI.js +130 -0
  40. package/dist/button.js +1 -1
  41. package/dist/canvas.js +2 -3
  42. package/dist/card.js +1 -1
  43. package/dist/carousel.js +235 -106
  44. package/dist/chipVariants-BJQ0I2kB.js +18 -0
  45. package/dist/collapsible.js +1 -1
  46. package/dist/color-B9jZdhJX.js +116 -0
  47. package/dist/color.js +2 -2
  48. package/dist/command.js +1 -1
  49. package/dist/completion-seal.d.ts +1 -0
  50. package/dist/completion-seal.js +89 -0
  51. package/dist/components/custom/aurora/Aurora.vue.d.ts +10 -5
  52. package/dist/components/custom/aurora/composables/color.d.ts +13 -0
  53. package/dist/components/custom/aurora/composables/frameLoop.d.ts +9 -0
  54. package/dist/components/custom/aurora/composables/glSetup.d.ts +1 -1
  55. package/dist/components/custom/aurora/composables/runtime.d.ts +12 -0
  56. package/dist/components/custom/aurora/composables/uniformBridgeWGPU.d.ts +12 -3
  57. package/dist/components/custom/aurora/composables/wgpuSetup.d.ts +8 -0
  58. package/dist/components/custom/aurora/constants/presets.d.ts +47 -0
  59. package/dist/components/custom/aurora/constants/renderMode.d.ts +16 -8
  60. package/dist/components/custom/aurora/constants/shaders/aurora-mediums.wgsl.d.ts +1 -0
  61. package/dist/components/custom/aurora/constants/shaders/aurora.wgsl.d.ts +1 -1
  62. package/dist/components/custom/aurora/index.d.ts +1 -1
  63. package/dist/components/custom/border-progress/composables/spectrum-walk.d.ts +25 -0
  64. package/dist/components/custom/border-progress/composables/useBorderSpectrum.d.ts +14 -18
  65. package/dist/components/custom/border-progress/index.d.ts +1 -1
  66. package/dist/components/custom/completion-seal/CompletionSeal.vue.d.ts +21 -0
  67. package/dist/components/custom/completion-seal/composables/useCompletionSeal.d.ts +37 -0
  68. package/dist/components/custom/completion-seal/constants.d.ts +46 -0
  69. package/dist/components/custom/completion-seal/index.d.ts +4 -0
  70. package/dist/components/custom/concentric/Concentric.vue.d.ts +15 -12
  71. package/dist/components/custom/concentric/composables/concentricGLSetup.d.ts +12 -0
  72. package/dist/components/custom/concentric/composables/concentricWGPUSetup.d.ts +13 -0
  73. package/dist/components/custom/concentric/composables/levelField.d.ts +50 -0
  74. package/dist/components/custom/concentric/composables/uniformBridgeWGPU.d.ts +7 -3
  75. package/dist/components/custom/concentric/composables/useConcentric.d.ts +3 -3
  76. package/dist/components/custom/concentric/constants.d.ts +69 -24
  77. package/dist/components/custom/concentric/index.d.ts +2 -2
  78. package/dist/components/custom/concentric/shaders/concentric.glsl.d.ts +2 -2
  79. package/dist/components/custom/concentric/shaders/concentric.wgsl.d.ts +1 -1
  80. package/dist/components/custom/configurator/Configurator.vue.d.ts +23 -2
  81. package/dist/components/custom/configurator/index.d.ts +1 -1
  82. package/dist/components/custom/confirm-dialog/ConfirmDialog.vue.d.ts +3 -3
  83. package/dist/components/custom/constellation/Constellation.vue.d.ts +5 -4
  84. package/dist/components/custom/constellation/composables/constellationGLSetup.d.ts +10 -0
  85. package/dist/components/custom/constellation/composables/constellationWGPUSetup.d.ts +19 -0
  86. package/dist/components/custom/constellation/composables/uniformBridgeWGPU.d.ts +66 -0
  87. package/dist/components/custom/constellation/composables/useConstellation.d.ts +3 -10
  88. package/dist/components/custom/constellation/constants.d.ts +33 -0
  89. package/dist/components/custom/constellation/constellationField.d.ts +31 -1
  90. package/dist/components/custom/constellation/constellationInteraction.d.ts +23 -14
  91. package/dist/components/custom/constellation/constellationRender.d.ts +25 -0
  92. package/dist/components/custom/constellation/constellationTypes.d.ts +38 -0
  93. package/dist/components/custom/constellation/constellationWell.d.ts +15 -0
  94. package/dist/components/custom/constellation/index.d.ts +5 -5
  95. package/dist/components/custom/constellation/shaders/constellation-lines.glsl.d.ts +2 -0
  96. package/dist/components/custom/constellation/shaders/constellation-lines.wgsl.d.ts +1 -0
  97. package/dist/components/custom/constellation/shaders/constellation-points.glsl.d.ts +2 -0
  98. package/dist/components/custom/constellation/shaders/constellation-points.wgsl.d.ts +1 -0
  99. package/dist/components/custom/deck/DeckPager.vue.d.ts +29 -0
  100. package/dist/components/custom/deck/composables/useDeck.d.ts +27 -0
  101. package/dist/components/custom/deck/composables/useDeckKeyboard.d.ts +25 -0
  102. package/dist/components/custom/deck/composables/useDeckSpring.d.ts +22 -0
  103. package/dist/components/custom/deck/constants.d.ts +14 -0
  104. package/dist/components/custom/deck/index.d.ts +8 -0
  105. package/dist/components/custom/dock/DockDropdownTrigger.vue.d.ts +4 -3
  106. package/dist/components/custom/dock/DockIconButton.vue.d.ts +22 -0
  107. package/dist/components/custom/dock/DockPopoverTrigger.vue.d.ts +19 -0
  108. package/dist/components/custom/dock/DockStack.vue.d.ts +78 -0
  109. package/dist/components/custom/dock/GlassDock.vue.d.ts +21 -3
  110. package/dist/components/custom/dock/composables/dockMorphContext.d.ts +18 -32
  111. package/dist/components/custom/dock/composables/dockMorphMeasure.d.ts +78 -67
  112. package/dist/components/custom/dock/composables/index.d.ts +3 -0
  113. package/dist/components/custom/dock/composables/railProjection.d.ts +45 -0
  114. package/dist/components/custom/dock/composables/useDockContextSilhouette.d.ts +192 -0
  115. package/dist/components/custom/dock/composables/useDockFission.d.ts +158 -0
  116. package/dist/components/custom/dock/composables/useDockItemDrag.d.ts +18 -0
  117. package/dist/components/custom/dock/composables/useDockSearch.d.ts +85 -0
  118. package/dist/components/custom/dock/composables/useDockShellProps.d.ts +49 -0
  119. package/dist/components/custom/dock/constants.d.ts +32 -17
  120. package/dist/components/custom/dock/index.d.ts +8 -2
  121. package/dist/components/custom/dot-flow-field/DotFlowField.vue.d.ts +15 -11
  122. package/dist/components/custom/dot-flow-field/composables/flowField.d.ts +69 -6
  123. package/dist/components/custom/dot-flow-field/composables/flowGLProgram.d.ts +8 -0
  124. package/dist/components/custom/dot-flow-field/composables/flowSetupGL.d.ts +9 -0
  125. package/dist/components/custom/dot-flow-field/composables/flowSetupGLFlow.d.ts +12 -0
  126. package/dist/components/custom/dot-flow-field/composables/flowSetupWGPU.d.ts +7 -0
  127. package/dist/components/custom/dot-flow-field/composables/uniformBridgeWGPU.d.ts +50 -9
  128. package/dist/components/custom/dot-flow-field/composables/useDotFlowField.d.ts +6 -5
  129. package/dist/components/custom/dot-flow-field/composables/useFlowParticles.d.ts +23 -9
  130. package/dist/components/custom/dot-flow-field/constants.d.ts +92 -20
  131. package/dist/components/custom/dot-flow-field/index.d.ts +2 -2
  132. package/dist/components/custom/dot-flow-field/shaders/flow-field.compute.wgsl.d.ts +1 -1
  133. package/dist/components/custom/dot-flow-field/shaders/flow-field.glsl.d.ts +31 -18
  134. package/dist/components/custom/dot-flow-field/shaders/flow-field.render.wgsl.d.ts +2 -1
  135. package/dist/components/custom/dot-matrix/DotMatrix.vue.d.ts +43 -0
  136. package/dist/components/custom/dot-matrix/composables/dotMatrixField.d.ts +89 -0
  137. package/dist/components/custom/dot-matrix/composables/uniformBridgeWGPU.d.ts +61 -0
  138. package/dist/components/custom/dot-matrix/composables/useDotMatrix.d.ts +34 -0
  139. package/dist/components/custom/dot-matrix/composables/useDotSphere.d.ts +34 -0
  140. package/dist/components/custom/dot-matrix/constants.d.ts +72 -0
  141. package/dist/components/custom/dot-matrix/index.d.ts +5 -0
  142. package/dist/components/custom/dot-matrix/shaders/dot-matrix.glsl.d.ts +4 -0
  143. package/dist/components/custom/dot-matrix/shaders/dot-matrix.wgsl.d.ts +1 -0
  144. package/dist/components/custom/easing/EasingPicker.vue.d.ts +2 -2
  145. package/dist/components/custom/easing/composables/useEasingPicker.d.ts +5 -0
  146. package/dist/components/custom/expandable-container/ExpandableContainer.vue.d.ts +11 -0
  147. package/dist/components/custom/fourier-field/FourierField.vue.d.ts +44 -47
  148. package/dist/components/custom/fourier-field/composables/fourierFieldGLSetup.d.ts +24 -0
  149. package/dist/components/custom/fourier-field/composables/fourierFieldWGPUSetup.d.ts +31 -0
  150. package/dist/components/custom/fourier-field/composables/uniformBridgeWGPU.d.ts +56 -0
  151. package/dist/components/custom/fourier-field/composables/useFourierField.d.ts +61 -37
  152. package/dist/components/custom/fourier-field/constants.d.ts +114 -4
  153. package/dist/components/custom/fourier-field/index.d.ts +23 -18
  154. package/dist/components/custom/fourier-field/shaders/fourier-field.compute.wgsl.d.ts +1 -0
  155. package/dist/components/custom/fourier-field/shaders/fourier-field.glsl.d.ts +4 -0
  156. package/dist/components/custom/fourier-field/shaders/fourier-field.render.wgsl.d.ts +1 -0
  157. package/dist/components/custom/goo-blob/GooBlob.vue.d.ts +9 -1
  158. package/dist/components/custom/goo-blob/composables/easing.d.ts +1 -0
  159. package/dist/components/custom/goo-blob/composables/useBlobSatellites.d.ts +1 -0
  160. package/dist/components/custom/goo-blob/constants.d.ts +26 -1
  161. package/dist/components/custom/goo-blob/index.d.ts +1 -1
  162. package/dist/components/custom/goo-blob/shaders/metaball-noise.wgsl.d.ts +1 -0
  163. package/dist/components/custom/goo-blob/shaders/metaball-palette.wgsl.d.ts +1 -0
  164. package/dist/components/custom/goo-blob/shaders/metaball-uniforms.glsl.d.ts +1 -1
  165. package/dist/components/custom/goo-blob/shaders/metaball.wgsl.d.ts +1 -1
  166. package/dist/components/custom/goo-blob/types.d.ts +86 -1
  167. package/dist/components/custom/goo-dot-matrix/GooDotMatrix.vue.d.ts +49 -0
  168. package/dist/components/custom/goo-dot-matrix/composables/gooDotLattice.d.ts +24 -0
  169. package/dist/components/custom/goo-dot-matrix/composables/gooDotSetup.d.ts +79 -0
  170. package/dist/components/custom/goo-dot-matrix/composables/uniformBridgeWGPU.d.ts +45 -0
  171. package/dist/components/custom/goo-dot-matrix/composables/useGooDotMatrix.d.ts +31 -0
  172. package/dist/components/custom/goo-dot-matrix/constants.d.ts +115 -0
  173. package/dist/components/custom/goo-dot-matrix/index.d.ts +5 -0
  174. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.frag.d.ts +13 -0
  175. package/dist/components/custom/goo-dot-matrix/shaders/goo-dot.wgsl.d.ts +4 -0
  176. package/dist/components/custom/goo-filter/GooFilter.vue.d.ts +22 -0
  177. package/dist/components/custom/goo-filter/index.d.ts +1 -0
  178. package/dist/components/custom/handmark/brush.d.ts +17 -17
  179. package/dist/components/custom/handmark/constants.d.ts +28 -8
  180. package/dist/components/custom/handmark/geometry.d.ts +34 -1
  181. package/dist/components/custom/handmark/index.d.ts +1 -1
  182. package/dist/components/custom/icon-chip/types.d.ts +10 -0
  183. package/dist/components/custom/labeled-field/LabeledField.vue.d.ts +21 -2
  184. package/dist/components/custom/metric-stack/MetricRow.vue.d.ts +15 -0
  185. package/dist/components/custom/pager-dots/PagerDots.vue.d.ts +9 -0
  186. package/dist/components/custom/pager-dots/index.d.ts +2 -0
  187. package/dist/components/custom/pager-dots/pagerWindow.d.ts +9 -0
  188. package/dist/components/custom/paper-backdrop/PaperBackdrop.vue.d.ts +18 -0
  189. package/dist/components/custom/paper-grid/PaperGrid.vue.d.ts +42 -0
  190. package/dist/components/custom/paper-grid/composables/paperGrid.d.ts +105 -0
  191. package/dist/components/custom/paper-grid/composables/paperGridGLSetup.d.ts +18 -0
  192. package/dist/components/custom/paper-grid/composables/paperGridWGPUSetup.d.ts +21 -0
  193. package/dist/components/custom/paper-grid/composables/uniformBridgeWGPU.d.ts +16 -0
  194. package/dist/components/custom/paper-grid/composables/usePaperGrid.d.ts +31 -0
  195. package/dist/components/custom/paper-grid/constants.d.ts +95 -0
  196. package/dist/components/custom/paper-grid/index.d.ts +5 -0
  197. package/dist/components/custom/paper-grid/shaders/paper-grid.glsl.d.ts +4 -0
  198. package/dist/components/custom/paper-grid/shaders/paper-grid.wgsl.d.ts +1 -0
  199. package/dist/components/custom/search/FuzzySearch.vue.d.ts +8 -2
  200. package/dist/components/custom/search/SearchBar.vue.d.ts +8 -0
  201. package/dist/components/custom/search/index.d.ts +2 -0
  202. package/dist/components/custom/search/searchVariants.d.ts +19 -0
  203. package/dist/components/custom/selectable-chip/SelectableChip.vue.d.ts +50 -0
  204. package/dist/components/custom/selectable-chip/chipVariants.d.ts +39 -0
  205. package/dist/components/custom/selectable-chip/index.d.ts +2 -0
  206. package/dist/components/custom/selectable-chip/selectableChipVariants.d.ts +15 -0
  207. package/dist/components/custom/split-chars/SplitChars.vue.d.ts +39 -0
  208. package/dist/components/custom/split-chars/index.d.ts +1 -0
  209. package/dist/components/custom/tabs/SegmentedTabs.vue.d.ts +8 -6
  210. package/dist/components/custom/tabs/constants.d.ts +28 -2
  211. package/dist/components/custom/timeline/ScrubberTimeline.vue.d.ts +16 -0
  212. package/dist/components/custom/timeline/geometry.d.ts +0 -8
  213. package/dist/components/custom/toggle-chip/index.d.ts +15 -4
  214. package/dist/components/custom/watercolor-dot/WatercolorDot.vue.d.ts +32 -17
  215. package/dist/components/custom/watercolor-dot/useWatercolorBlob.d.ts +10 -5
  216. package/dist/components/ui/_shared/index.d.ts +2 -0
  217. package/dist/components/ui/_shared/useControlSize.d.ts +46 -0
  218. package/dist/components/ui/_shared/useSurfaceAxis.d.ts +17 -3
  219. package/dist/components/ui/badge/Badge.vue.d.ts +14 -0
  220. package/dist/components/ui/badge/index.d.ts +1 -0
  221. package/dist/components/ui/button/Button.vue.d.ts +1 -0
  222. package/dist/components/ui/button/index.d.ts +1 -1
  223. package/dist/components/ui/card/Card.vue.d.ts +46 -1
  224. package/dist/components/ui/card/ScrollCard.vue.d.ts +1 -1
  225. package/dist/components/ui/card/index.d.ts +1 -1
  226. package/dist/components/ui/carousel/CarouselContent.vue.d.ts +2 -4
  227. package/dist/components/ui/carousel/CarouselNext.vue.d.ts +1 -1
  228. package/dist/components/ui/carousel/CarouselPrevious.vue.d.ts +1 -1
  229. package/dist/components/ui/command/CommandDialog.vue.d.ts +9 -3
  230. package/dist/components/ui/command/CommandList.vue.d.ts +3 -0
  231. package/dist/components/ui/context-menu/ContextMenuContent.vue.d.ts +5 -1
  232. package/dist/components/ui/dialog/DialogContent.vue.d.ts +9 -0
  233. package/dist/components/ui/drawer/Drawer.vue.d.ts +33 -14
  234. package/dist/components/ui/drawer/constants.d.ts +8 -6
  235. package/dist/components/ui/drawer/index.d.ts +12 -2
  236. package/dist/components/ui/dropdown-menu/DropdownMenuContent.vue.d.ts +4 -0
  237. package/dist/components/ui/hover-card/HoverCardContent.vue.d.ts +3 -0
  238. package/dist/components/ui/input/Input.vue.d.ts +3 -0
  239. package/dist/components/ui/number-field/NumberFieldInput.vue.d.ts +6 -1
  240. package/dist/components/ui/select/SelectContent.vue.d.ts +12 -0
  241. package/dist/components/ui/slider/Slider.vue.d.ts +9 -0
  242. package/dist/components/ui/switch/Switch.vue.d.ts +2 -0
  243. package/dist/components/ui/textarea/Textarea.vue.d.ts +3 -0
  244. package/dist/components/ui/tooltip/TooltipContent.vue.d.ts +3 -0
  245. package/dist/composables/color/index.d.ts +2 -0
  246. package/dist/composables/color/useAccentTone.d.ts +34 -0
  247. package/dist/composables/dom/index.d.ts +1 -0
  248. package/dist/composables/dom/useDragVelocity.d.ts +46 -0
  249. package/dist/composables/glass/useVizChoreography.d.ts +123 -0
  250. package/dist/composables/glass/wave/index.d.ts +4 -0
  251. package/dist/composables/glass/wave/waveField.d.ts +115 -0
  252. package/dist/composables/glass/wave/waveField.glsl.d.ts +1 -0
  253. package/dist/composables/glass/wave/waveField.wgsl.d.ts +1 -0
  254. package/dist/composables/glass/webgl/createCanvasLifecycle.d.ts +105 -2
  255. package/dist/composables/glass/webgl/shaders/flow.wgsl.d.ts +1 -0
  256. package/dist/composables/glass/webgl/useWebGLCanvas.d.ts +40 -2
  257. package/dist/composables/glass/webgpu/index.d.ts +2 -1
  258. package/dist/composables/glass/webgpu/useGpuSubstrate.d.ts +65 -7
  259. package/dist/composables/glass/webgpu/useWebGPUCanvas.d.ts +50 -2
  260. package/dist/composables/glass/webgpu/webgpuDevice.d.ts +42 -0
  261. package/dist/composables/motion/core/index.d.ts +7 -0
  262. package/dist/composables/motion/core/useHaptic.d.ts +48 -0
  263. package/dist/composables/motion/core/writeVelocityWeight.d.ts +31 -0
  264. package/dist/composables/motion/index.d.ts +2 -0
  265. package/dist/composables/motion/scrollReader.d.ts +25 -0
  266. package/dist/composables/motion/springPresets.d.ts +19 -1
  267. package/dist/composables/motion/suite.d.ts +2 -2
  268. package/dist/composables/motion/useBloomUp.d.ts +97 -0
  269. package/dist/composables/motion/useCelebrationBurst.d.ts +50 -0
  270. package/dist/composables/motion/useCharStagger.d.ts +44 -0
  271. package/dist/composables/motion/useDockCtaReceive.d.ts +29 -22
  272. package/dist/composables/motion/useGooMorph.d.ts +72 -0
  273. package/dist/composables/motion/useLiquidFlex.d.ts +18 -0
  274. package/dist/composables/motion/useLiquidMorph.d.ts +108 -0
  275. package/dist/composables/motion/useLiquidPress.d.ts +12 -0
  276. package/dist/composables/motion/useLiquidReveal.d.ts +7 -4
  277. package/dist/composables/motion/useMorphField.d.ts +157 -0
  278. package/dist/composables/motion/useScrollChrome.d.ts +58 -0
  279. package/dist/composables/motion/useScrollPin.d.ts +49 -0
  280. package/dist/composables/motion/useScrollScene.d.ts +67 -0
  281. package/dist/composables/motion/useScrollTrigger.d.ts +67 -0
  282. package/dist/composables/motion/useSpringPress.d.ts +5 -5
  283. package/dist/composables/motion/useStaggerReveal.d.ts +24 -0
  284. package/dist/composables/sidebar/index.d.ts +4 -1
  285. package/dist/composables/sidebar/types.d.ts +68 -3
  286. package/dist/composables/sidebar/useClickDelegate.d.ts +4 -0
  287. package/dist/composables/sidebar/useLazyLoader.d.ts +5 -0
  288. package/dist/composables/sidebar/useScrollTo.d.ts +5 -0
  289. package/dist/composables/virtual/index.d.ts +4 -0
  290. package/dist/composables/virtual/useVirtualSectionWindow.d.ts +72 -0
  291. package/dist/composables/virtual/useWindowedStore.d.ts +43 -0
  292. package/dist/composables/virtual/virtualSectionLayout.d.ts +103 -0
  293. package/dist/concentric.js +552 -309
  294. package/dist/configurator.js +2 -2
  295. package/dist/confirm-dialog.js +62 -47
  296. package/dist/constellation.js +635 -235
  297. package/dist/context-menu.js +2 -2
  298. package/dist/controls.js +2 -2
  299. package/dist/createCanvasLifecycle-CuCrGRfq.js +173 -0
  300. package/dist/dark.js +1 -1
  301. package/dist/data-table.js +1 -1
  302. package/dist/deck.d.ts +1 -0
  303. package/dist/deck.js +105 -0
  304. package/dist/dialog.js +4 -3
  305. package/dist/dock.js +1320 -631
  306. package/dist/dockContext-gFVS2gMg.js +18 -0
  307. package/dist/dom.js +7 -6
  308. package/dist/dot-flow-field.js +1268 -387
  309. package/dist/dot-matrix.d.ts +1 -0
  310. package/dist/dot-matrix.js +774 -0
  311. package/dist/dotMatrixField-CRO0ZFk4.js +48 -0
  312. package/dist/drawer.js +106 -96
  313. package/dist/{dropdown-menu-CofSZuk8.js → dropdown-menu-CCfcCQ68.js} +83 -79
  314. package/dist/dropdown-menu.js +1 -1
  315. package/dist/easing.js +188 -176
  316. package/dist/expandable-container.js +43 -21
  317. package/dist/fading-scroll.js +1 -1
  318. package/dist/flow.glsl-DqEGRpl4.js +4 -0
  319. package/dist/forms.js +64 -62
  320. package/dist/fourier-field.js +1069 -178
  321. package/dist/fourier-math.js +1 -1
  322. package/dist/glass-panel.js +2 -2
  323. package/dist/glass-ui.css +1 -1
  324. package/dist/glass-ui.js +164 -119
  325. package/dist/goo-blob.js +175 -1230
  326. package/dist/goo-dot-matrix.d.ts +1 -0
  327. package/dist/goo-dot-matrix.js +811 -0
  328. package/dist/handmark.js +137 -94
  329. package/dist/header-ribbon.js +1 -1
  330. package/dist/hover-card.js +1 -1
  331. package/dist/hover-popover.js +1 -1
  332. package/dist/icon-chip.js +1 -1
  333. package/dist/icon-tooltip.js +1 -1
  334. package/dist/index.d.ts +5 -0
  335. package/dist/instrument-chassis.js +1 -1
  336. package/dist/keyboard.js +1 -1
  337. package/dist/label.js +1 -1
  338. package/dist/labeled-field.js +70 -60
  339. package/dist/metric-badge.js +1 -1
  340. package/dist/metric-cell.js +1 -1
  341. package/dist/metric-stack.js +12 -3
  342. package/dist/motion-core.js +59 -34
  343. package/dist/motion-curves.js +30 -14
  344. package/dist/motion.js +231 -96
  345. package/dist/notification.js +1 -1
  346. package/dist/number-field.js +1 -1
  347. package/dist/pager-dots.js +2 -91
  348. package/dist/paper-backdrop.js +1 -1
  349. package/dist/paper-grid.d.ts +1 -0
  350. package/dist/paper-grid.js +761 -0
  351. package/dist/paperGrid-CXCSMbZ1.js +191 -0
  352. package/dist/popover.js +1 -1
  353. package/dist/{presets-BW2b-fr1.js → presets-QvYgnFIZ.js} +14 -13
  354. package/dist/{procedural-color.glsl-CIFsJhwI.js → procedural-color.wgsl-C1Y5PkM6.js} +2 -2
  355. package/dist/progress.js +1 -1
  356. package/dist/pulse.js +2 -2
  357. package/dist/reactive.js +2 -2
  358. package/dist/{useCanvas2D-B8w_E3Rr.js → resolveCanvasColor-DsSJk06I.js} +16 -6
  359. package/dist/scrollReader-rc3Ns_NM.js +42 -0
  360. package/dist/scrolling-text.js +1 -1
  361. package/dist/search.js +162 -306
  362. package/dist/select.js +3 -3
  363. package/dist/selectable-chip.d.ts +1 -0
  364. package/dist/selectable-chip.js +48 -0
  365. package/dist/separator.js +1 -1
  366. package/dist/{sheet-tZMg0E0w.js → sheet-DUCIoOe0.js} +4 -4
  367. package/dist/sheet.js +1 -1
  368. package/dist/sidebar.js +216 -114
  369. package/dist/slider-CcICPe3u.js +149 -0
  370. package/dist/slider.js +1 -1
  371. package/dist/sortable-list.js +3 -3
  372. package/dist/spectrum-walk-cBNSx_zm.js +33 -0
  373. package/dist/springPresets-DfoQ6XRY.js +64 -0
  374. package/dist/stacked-icons.js +54 -39
  375. package/dist/styles/animations.css +13 -3
  376. package/dist/styles/cards.css +271 -2
  377. package/dist/styles/completion-seal.css +131 -0
  378. package/dist/styles/components.css +1 -4
  379. package/dist/styles/configurator.css +221 -1
  380. package/dist/styles/critical-partition.mjs +66 -11
  381. package/dist/styles/deferred.css +4 -0
  382. package/dist/styles/dock/adaptive-legibility.css +119 -0
  383. package/dist/styles/dock/cta-seat.css +87 -0
  384. package/dist/styles/dock/density.css +167 -6
  385. package/dist/styles/dock/fission-bridge.css +552 -0
  386. package/dist/styles/dock/layers.css +90 -78
  387. package/dist/styles/dock/morph-bridge.css +67 -18
  388. package/dist/styles/dock/morph.css +57 -118
  389. package/dist/styles/dock/overflow.css +12 -0
  390. package/dist/styles/dock/search.css +68 -0
  391. package/dist/styles/dock/shape.css +250 -0
  392. package/dist/styles/dock/shell.css +24 -8
  393. package/dist/styles/dock/stack-rail.css +352 -0
  394. package/dist/styles/dock-controls/dark-mode-toggle.css +17 -4
  395. package/dist/styles/dock-controls/icon-button.css +46 -0
  396. package/dist/styles/dock-controls/triggers.css +23 -1
  397. package/dist/styles/dock-controls.css +18 -0
  398. package/dist/styles/dock.css +27 -2
  399. package/dist/styles/drawer.css +166 -0
  400. package/dist/styles/glass/accent-tone.css +66 -0
  401. package/dist/styles/glass/control-surfaces.css +167 -0
  402. package/dist/styles/glass/glass-atom.css +244 -0
  403. package/dist/styles/glass/glass-capsule.css +143 -0
  404. package/dist/styles/glass/glass-chip.css +215 -0
  405. package/dist/styles/glass/ladder.css +67 -17
  406. package/dist/styles/glass/liquid-enter.css +252 -0
  407. package/dist/styles/glass/liquid-morph.css +850 -0
  408. package/dist/styles/glass/material.css +70 -1
  409. package/dist/styles/glass/reveal.css +22 -2
  410. package/dist/styles/glass/rim.css +31 -9
  411. package/dist/styles/glass/surfaces.css +81 -150
  412. package/dist/styles/glass.css +21 -0
  413. package/dist/styles/icon-chip.css +45 -0
  414. package/dist/styles/index.css +26 -0
  415. package/dist/styles/jubilance.css +65 -0
  416. package/dist/styles/motion/morph-field.css +229 -0
  417. package/dist/styles/paper.css +230 -14
  418. package/dist/styles/scroll-choreography.css +135 -78
  419. package/dist/styles/scroll-chrome.css +123 -0
  420. package/dist/styles/scroll-driven.css +38 -0
  421. package/dist/styles/segmented-tabs.css +110 -40
  422. package/dist/styles/select.css +151 -0
  423. package/dist/styles/theme/bridges.css +22 -0
  424. package/dist/styles/theme/radius.css +18 -1
  425. package/dist/styles/tokens/color-radius.css +14 -4
  426. package/dist/styles/tokens/dark-arm.css +94 -12
  427. package/dist/styles/tokens/glass-deep.css +33 -4
  428. package/dist/styles/tokens/glass-fx.css +122 -1
  429. package/dist/styles/tokens/glass.css +226 -34
  430. package/dist/styles/tokens/light-dark.css +3 -3
  431. package/dist/styles/tokens/offsets.css +27 -0
  432. package/dist/styles/tokens/property-regs.css +277 -0
  433. package/dist/styles/tokens/scale-paper.css +86 -30
  434. package/dist/styles/tokens/scheme-motion.css +106 -133
  435. package/dist/styles/tokens/scheme-spring.css +239 -0
  436. package/dist/styles/tokens/scroll-tokens.css +15 -15
  437. package/dist/styles/tokens/shadow.css +73 -13
  438. package/dist/styles/tokens/sizing-config.css +110 -0
  439. package/dist/styles/tokens/sizing.css +55 -104
  440. package/dist/styles/tokens.css +14 -2
  441. package/dist/styles/typography/semantic.css +18 -5
  442. package/dist/styles/utilities/a11y-overrides.css +20 -5
  443. package/dist/styles/utilities/base-misc.css +52 -0
  444. package/dist/styles/utilities/btn.css +84 -3
  445. package/dist/styles/utilities/components.css +31 -6
  446. package/dist/styles/utilities/metal.css +26 -0
  447. package/dist/switch.js +1 -1
  448. package/dist/tabs.js +199 -182
  449. package/dist/timeline.js +241 -206
  450. package/dist/toast.js +1 -1
  451. package/dist/toggle-chip.js +14 -41
  452. package/dist/toggle-group.js +1 -1
  453. package/dist/tooltip.js +1 -1
  454. package/dist/typewriter.js +2 -2
  455. package/dist/uniformBridgeWGPU-BCse1SHU.js +1268 -0
  456. package/dist/{useAnimatedNumber-BfUq2bUM.js → useAnimatedNumber-BntskVdQ.js} +1 -1
  457. package/dist/{useConfiguratorState-DNlOh6c8.js → useConfiguratorState-22BcULzF.js} +41 -38
  458. package/dist/useControlSize-DAZ062x7.js +9 -0
  459. package/dist/useDockCtaReceive-DX7RDb6_.js +88 -0
  460. package/dist/{useDragMorph-DgxnsVJz.js → useDragMorph-DGLSewwB.js} +4 -4
  461. package/dist/useDragVelocity-CjcfX3dA.js +57 -0
  462. package/dist/useFuzzySearch-0fTYOhS4.js +177 -0
  463. package/dist/useGooMorph-Cs13NgYL.js +104 -0
  464. package/dist/useGpuSubstrate-Ceet70xq.js +347 -0
  465. package/dist/useHaptic-CPz5BT9I.js +134 -0
  466. package/dist/{useLiquidFlex-mZPMiNXh.js → useLiquidFlex-Cc6PjVJD.js} +8 -3
  467. package/dist/useLiquidPress-CtOQ8Z0_.js +43 -0
  468. package/dist/useMorphField-ogBM7ubT.js +141 -0
  469. package/dist/usePointerVelocityField-BrkqZFhj.js +91 -0
  470. package/dist/useScrollChrome-JuImi1DM.js +258 -0
  471. package/dist/{useSpringMount-q1amq1SJ.js → useSpringMount-DFxtzmkR.js} +1 -1
  472. package/dist/useSpringPress-VM9RgVq3.js +36 -0
  473. package/dist/{useSurfaceAxis-g0NloYEF.js → useSurfaceAxis-Ci7Dnaw2.js} +1 -1
  474. package/dist/{useTouchGate-CBZTD4SD.js → useTouchGate-B1Lf9XqN.js} +1 -1
  475. package/dist/{vendor-CKmzio-i.js → vendor-B2qOlYY3.js} +24 -11
  476. package/dist/virtual.d.ts +1 -0
  477. package/dist/virtual.js +225 -0
  478. package/dist/watercolor-dot.js +107 -74
  479. package/dist/writeVelocityWeight-Bh83xZfs.js +19 -0
  480. package/package.json +140 -9
  481. package/src/styles/animations.css +13 -3
  482. package/src/styles/cards.css +271 -2
  483. package/src/styles/completion-seal.css +131 -0
  484. package/src/styles/configurator.css +221 -1
  485. package/src/styles/critical-partition.mjs +66 -11
  486. package/src/styles/dock/adaptive-legibility.css +119 -0
  487. package/src/styles/dock/cta-seat.css +87 -0
  488. package/src/styles/dock/density.css +167 -6
  489. package/src/styles/dock/fission-bridge.css +552 -0
  490. package/src/styles/dock/layers.css +90 -78
  491. package/src/styles/dock/morph-bridge.css +67 -18
  492. package/src/styles/dock/morph.css +57 -118
  493. package/src/styles/dock/overflow.css +12 -0
  494. package/src/styles/dock/search.css +68 -0
  495. package/src/styles/dock/shape.css +250 -0
  496. package/src/styles/dock/shell.css +24 -8
  497. package/src/styles/dock/stack-rail.css +352 -0
  498. package/src/styles/dock-controls/dark-mode-toggle.css +17 -4
  499. package/src/styles/dock-controls/icon-button.css +46 -0
  500. package/src/styles/dock-controls/triggers.css +23 -1
  501. package/src/styles/dock-controls.css +18 -0
  502. package/src/styles/dock.css +27 -2
  503. package/src/styles/drawer.css +164 -0
  504. package/src/styles/glass/accent-tone.css +66 -0
  505. package/src/styles/glass/control-surfaces.css +167 -0
  506. package/src/styles/glass/glass-atom.css +244 -0
  507. package/src/styles/glass/glass-capsule.css +143 -0
  508. package/src/styles/glass/glass-chip.css +215 -0
  509. package/src/styles/glass/ladder.css +67 -17
  510. package/src/styles/glass/liquid-enter.css +252 -0
  511. package/src/styles/glass/liquid-morph.css +850 -0
  512. package/src/styles/glass/material.css +70 -1
  513. package/src/styles/glass/reveal.css +22 -2
  514. package/src/styles/glass/rim.css +31 -9
  515. package/src/styles/glass/surfaces.css +81 -150
  516. package/src/styles/glass.css +21 -0
  517. package/src/styles/icon-chip.css +45 -0
  518. package/src/styles/index.css +26 -0
  519. package/src/styles/jubilance.css +65 -0
  520. package/src/styles/motion/morph-field.css +229 -0
  521. package/src/styles/paper.css +230 -14
  522. package/src/styles/scroll-choreography.css +135 -78
  523. package/src/styles/scroll-chrome.css +123 -0
  524. package/src/styles/scroll-driven.css +38 -0
  525. package/src/styles/segmented-tabs.css +110 -36
  526. package/src/styles/select.css +151 -0
  527. package/src/styles/theme/bridges.css +22 -0
  528. package/src/styles/theme/radius.css +18 -1
  529. package/src/styles/tokens/color-radius.css +14 -4
  530. package/src/styles/tokens/dark-arm.css +94 -12
  531. package/src/styles/tokens/glass-deep.css +33 -4
  532. package/src/styles/tokens/glass-fx.css +122 -1
  533. package/src/styles/tokens/glass.css +226 -34
  534. package/src/styles/tokens/light-dark.css +3 -3
  535. package/src/styles/tokens/offsets.css +27 -0
  536. package/src/styles/tokens/property-regs.css +277 -0
  537. package/src/styles/tokens/scale-paper.css +86 -30
  538. package/src/styles/tokens/scheme-motion.css +106 -133
  539. package/src/styles/tokens/scheme-spring.css +239 -0
  540. package/src/styles/tokens/scroll-tokens.css +15 -15
  541. package/src/styles/tokens/shadow.css +73 -13
  542. package/src/styles/tokens/sizing-config.css +110 -0
  543. package/src/styles/tokens/sizing.css +55 -104
  544. package/src/styles/tokens.css +14 -2
  545. package/src/styles/typography/semantic.css +18 -5
  546. package/src/styles/utilities/a11y-overrides.css +20 -5
  547. package/src/styles/utilities/base-misc.css +52 -0
  548. package/src/styles/utilities/btn.css +84 -3
  549. package/src/styles/utilities/components.css +31 -6
  550. package/src/styles/utilities/metal.css +26 -0
  551. package/dist/ContextMenuContent-uWnVxDab.js +0 -85
  552. package/dist/DialogContent-DcKK8k9i.js +0 -103
  553. package/dist/DialogFooter-BZNX5aVr.js +0 -165
  554. package/dist/HoverCardContent-b2uaAMRR.js +0 -83
  555. package/dist/Input-h9v5LeXf.js +0 -55
  556. package/dist/NumberFieldContent-Cq7EzX-U.js +0 -138
  557. package/dist/PaperBackdrop-Vf3tlpvd.js +0 -31
  558. package/dist/SelectScrollDownButton-CrA8F0iV.js +0 -252
  559. package/dist/Separator-pKF0oA4M.js +0 -37
  560. package/dist/Switch-CwYNf8bo.js +0 -47
  561. package/dist/TooltipProvider-rzvnXz60.js +0 -104
  562. package/dist/badge-D9XWW4GT.js +0 -53
  563. package/dist/button-DYCUa-tH.js +0 -126
  564. package/dist/color-DweYl7pE.js +0 -86
  565. package/dist/components/custom/concentric/composables/ringField.d.ts +0 -44
  566. package/dist/components/custom/constellation/composables/useConstellationPointer.d.ts +0 -35
  567. package/dist/components/custom/constellation/constellationDraw.d.ts +0 -30
  568. package/dist/components/custom/dock/DockRail.vue.d.ts +0 -89
  569. package/dist/createCanvasLifecycle-CHD5XrDW.js +0 -82
  570. package/dist/dockContext-BNfyPLe9.js +0 -17
  571. package/dist/procedural-color.wgsl-CToRHugY.js +0 -224
  572. package/dist/resolveCanvasColor-CUyHr5Uu.js +0 -11
  573. package/dist/slider-DVb4HXU-.js +0 -142
  574. package/dist/springPresets-CFQGQfdl.js +0 -40
  575. package/dist/styles/dock/rail-extend.css +0 -397
  576. package/dist/useLiquidPress-kfb4KX79.js +0 -39
  577. package/dist/usePointerVelocityField-JbRd5CrM.js +0 -137
  578. package/dist/useRAFLoop-UYa4zoiN.js +0 -109
  579. package/dist/useSpringPress-BsqPr7FJ.js +0 -34
  580. package/src/styles/dock/rail-extend.css +0 -397
  581. /package/dist/{CollapsibleContent-68dEXIAl.js → CollapsibleContent-D7UNsXQr.js} +0 -0
  582. /package/dist/{InstrumentChassis-Bx0F_q5g.js → InstrumentChassis-UUJX0-mW.js} +0 -0
  583. /package/dist/{Label-C2ejNWeC.js → Label-B_HPqi_q.js} +0 -0
  584. /package/dist/{ModalOverlay-D1VrWyoi.js → ModalOverlay-DfAf7o15.js} +0 -0
  585. /package/dist/{SelectGroup-DwwjicPY.js → SelectGroup-Dcczq44n.js} +0 -0
  586. /package/dist/{_plugin-vue_export-helper-C1je1s0u.js → _plugin-vue_export-helper-gLzyemvl.js} +0 -0
  587. /package/dist/{compile-CQEFRTmx.js → compile-INR_tPk_.js} +0 -0
  588. /package/dist/{constants-BPOqYJAm.js → constants-BWj7DkMn.js} +0 -0
  589. /package/dist/{createContext-CpBNTRMI.js → createContext-Cd23P9j0.js} +0 -0
  590. /package/dist/{math-BINYmg5z.js → math-5RcIgCB4.js} +0 -0
  591. /package/dist/{menuItemVariants-D8VNHq22.js → menuItemVariants-DAXquKja.js} +0 -0
  592. /package/dist/{prng-Za0Rmgag.js → prng-B5tIXTtj.js} +0 -0
  593. /package/dist/{useGlobalDark-C28t0VWJ.js → useGlobalDark-B4HO9LXG.js} +0 -0
  594. /package/dist/{useIntersectionPause-Bj4sPkMh.js → useIntersectionPause-DO8Vl4gs.js} +0 -0
  595. /package/dist/{useInterval-CvK1mL92.js → useInterval-BVUI-sez.js} +0 -0
  596. /package/dist/{useKeyboardShortcuts-BXWXOZ-9.js → useKeyboardShortcuts-BEut54Tk.js} +0 -0
  597. /package/dist/{useResizeObserver-Bpoi7tRE.js → useResizeObserver-DdEn3v2f.js} +0 -0
  598. /package/dist/{useResolveTokenColor-vAylyR0x.js → useResolveTokenColor-ChOnCckA.js} +0 -0
  599. /package/dist/{useScrollProgress-D7bYU2RK.js → useScrollProgress-A0M6qRl7.js} +0 -0
  600. /package/dist/{useSortable-DHjtZSEd.js → useSortable-DQV_UNDw.js} +0 -0
  601. /package/dist/{useTextHighlight-CWEi25hf.js → useTextHighlight-Bma3UlKA.js} +0 -0
  602. /package/dist/{useTimer-BHJOKr35.js → useTimer-BBLGPXR8.js} +0 -0
  603. /package/dist/{useUserInvalidAria-y5namzeE.js → useUserInvalidAria-EmmwWPOl.js} +0 -0
  604. /package/dist/{useViewportReady-anbac3m6.js → useViewportReady-C9pYnn7K.js} +0 -0
  605. /package/dist/{vReveal-Czsb7zQC.js → vReveal-CT1KtwZA.js} +0 -0
  606. /package/dist/{vSpecular-CQFmLNzA.js → vSpecular-EX7loENl.js} +0 -0
@@ -15,6 +15,16 @@
15
15
  so it sits at the perceptual floor. Dark companion drops 0.06 →
16
16
  0.045 below to keep the soft-light blend alive without stippling. */
17
17
  --glass-grain-opacity: 0.025;
18
+ /* BD.W-PAPER-MORPHISM — the PAPER grain is its OWN register (~3× the glass grain):
19
+ paper texture is MEANT to READ (the user: "I don't see any paper grain or grit
20
+ anywhere"), not sit at the glass perceptual floor. ONE token retunes paper grit
21
+ library-wide WITHOUT coarsening the subtle glass-material grain (the split keeps
22
+ glass calm + paper tactile). The dark arm (dark-arm.css) lifts it for soft-light. */
23
+ /* BD.W-PAPER-MORPHISM — re-calibrated to the JND floor for the CORRECTED coarse
24
+ tooth + multiply blend (std ≥ 4.5 light, the no-squint floor): multiply on the
25
+ cream pole is GENTLE so it needs MORE alpha. The prior 0.08 rode a blend
26
+ (overlay) that was mathematically incapable of moving a near-white pixel. */
27
+ --paper-grain-opacity: 0.22;
18
28
  /* BB.W-LIQUIDHOVER — the grain ENGAGE clock: a hover/active grain lift cross-fades
19
29
  the grain `::after` OPACITY on this thin ~120ms linear write while the
20
30
  `background-image` stays ALWAYS PRESENT (never a none→image swap — the one-frame
@@ -33,6 +43,20 @@
33
43
  --hairline-under-shadow: 0 0.5px 0 0 rgb(0 0 0 / 0.04);
34
44
  --border-hairline: var(--hairline-catch-light), var(--hairline-under-shadow);
35
45
 
46
+ /* BC.W-AX-METAL-GLOW — the brand-metal catch-light DEFAULTS (the consumer
47
+ retune seam). The metal-shimmer family (`.metal-{gold,silver,bronze}`,
48
+ metal.css) halos the text-clip with a `drop-shadow` of the metal's OWN base
49
+ hue at this radius + strength — the gold reads as LIT metal, not a flat fill.
50
+ Shared by the loop sweep AND the one-shot headline (the W-AX-COMPLETION-SEAL
51
+ seal glint reads `--metal-glow-blur`/`--metal-glow-opacity` — the ≥2-consumer
52
+ register). The defaults are a soft warm WHISPER bounded by the warm-cream
53
+ identity — a halo radius proportional to the text (0.5em) at a low strength
54
+ (0.35), NOT a neon bloom (the §6 calm register; the disco family stays gone).
55
+ A garish high-opacity glow is the consumer's preset choice, never the default;
56
+ a consumer who wants NO glow sets `--metal-glow-opacity: 0`. */
57
+ --metal-glow-blur-default: 0.5em;
58
+ --metal-glow-opacity-default: 0.35;
59
+
36
60
  /* Specular catch-light — 1.5px-tall top-edge highlight that swaps in for
37
61
  --glass-highlight on interactive moments (e.g. primary-action hover).
38
62
  Reads as a real catch-light on a curved surface. The `-dark` companion
@@ -54,6 +78,56 @@
54
78
  on text. The `-dark` companion is overridden inside `.dark` mirroring
55
79
  the `--glass-specular-dark` precedent. */
56
80
  --glass-edge-light: inset 0 0 0 0.75px hsl(0 0% 100% / 0.18);
81
+
82
+ /* BC.W-BLACK-BAR D2 — the DIRECTIONAL rim register (the iOS-27 glass-thickness
83
+ physics: light catch-light rims the TOP, a faint warm shadow grounds the
84
+ BOTTOM, so the plate reads as a physical pane lifted off the page — NEVER a
85
+ dark full-perimeter ink hairline). This RETIRES the load-bearing dark-rim role
86
+ of the per-rung `--glass-border-*` (now ≤5% α, glass.css): the silhouette is
87
+ carved by these two stops, not by the perimeter ink.
88
+ --glass-rim-top: the BRIGHT catch-light on the top edge (the kevinbism
89
+ `inset 0 1px white` motif; 0.30 α = apple-ios27.md §1.3 community value
90
+ rgba(255,255,255,0.3)). Subsumes the old omnidirectional white rim RING.
91
+ --glass-rim-bottom: the FAINT warm under-shadow grounding the plate (the
92
+ warm-ink that used to ring the whole perimeter, now only the bottom, at a
93
+ whisper 6% — riding --foreground so it stays warm-not-grey, BA.W-NO-GRAY).
94
+ Plain per-mode arms — NEVER an inset fragment inside light-dark() (the dark arm
95
+ re-declares both in dark-arm.css; light-dark() round an inset computes the WHOLE
96
+ box-shadow to none). The dark arm lifts the top to 0.40 (dark glass glows where
97
+ light passes) + keeps the bottom under-shadow at 6%. */
98
+ /* BD.W-GLASS-KEY-EDGE — the cel KEYSTONE. ONE light vector (the 1940s cel
99
+ upper-right key) drives WHICH edge of the existing two-stop directional rim
100
+ reads LIT vs SHADE, in lockstep with the shipped `.shadow-cartoon-*` down-LEFT
101
+ cast (shadow.css `-Npx Npx` → key upper-right). The key is expressed NOT as a
102
+ `-58deg` angle with sign-inverted cos()/sin() trig (the glass-material sign
103
+ trap — banned here), but as two PLAIN per-axis sign tokens the rim stops read
104
+ directly: the LIT catch wraps the key-facing edges (top + right), the SHADE
105
+ under-shadow grounds the opposite edges (bottom + left). A consumer re-points
106
+ `--glass-key-lit-x`/`--glass-key-lit-y` to move the key (e.g. upper-LEFT →
107
+ `1px`/`1px`) and the rim re-reads off it with ZERO new layer, ZERO new conic,
108
+ ZERO new DOM node. The key's SIGN tokens below are the wired form (the
109
+ upper-right keystone). */
110
+ --glass-key-lit-x: -1px; /* the lit catch sits on the RIGHT edge (key-facing) */
111
+ --glass-key-lit-y: 1px; /* …and the TOP edge — the upper-right key */
112
+ --glass-key-shade-x: 1px; /* the under-shadow grounds the LEFT edge */
113
+ --glass-key-shade-y: -1px; /* …and the BOTTOM edge — opposite the key */
114
+ /* BC.W-BLACK-BAR D2 + BD.W-GLASS-KEY-EDGE — the two-stop directional rim, now
115
+ KEY-DRIVEN: the bright catch-light `--glass-rim-top` rides the lit (key-facing)
116
+ edges, the faint warm under-shadow `--glass-rim-bottom` rides the shade edges.
117
+ Which edge each lands on is `--glass-key-{lit,shade}-{x,y}` so the rim and the
118
+ cartoon cast AGREE on one light source (the cel coherence). At the default
119
+ upper-right key these resolve byte-compatibly to the shipped top-lit/bottom-shade
120
+ silhouette (top catch + bottom under-shadow) PLUS the key-facing side stops, so
121
+ the lit edge reads as a real lit pane corner, not a flat omnidirectional halo.
122
+ The accent (BB.W-GLASS-ACCENT) still mixes onto the lit ink in rim.css — at 0%
123
+ strength byte-identical. Plain per-mode arms — NEVER an inset fragment inside
124
+ light-dark() (the dark arm re-declares both in dark-arm.css). */
125
+ --glass-rim-top:
126
+ inset 0 var(--glass-key-lit-y) 0 hsl(0 0% 100% / 0.30),
127
+ inset var(--glass-key-lit-x) 0 0 hsl(0 0% 100% / 0.18);
128
+ --glass-rim-bottom:
129
+ inset 0 var(--glass-key-shade-y) 0 color-mix(in srgb, var(--foreground) 6%, transparent),
130
+ inset var(--glass-key-shade-x) 0 0 color-mix(in srgb, var(--foreground) 4%, transparent);
57
131
  /* BA.W-DARK-MATERIAL scope 2 — the dark edge/rim is the PRIMARY silhouette device in
58
132
  dark. The light register's fill+shadow carry the plate; in dark the fill barely
59
133
  separates (the deep page is near-black), so the EDGE + the transmitted glow carry the
@@ -83,6 +157,29 @@
83
157
  --glass-tint-source: var(--card);
84
158
  --glass-tint-strength: 0%;
85
159
 
160
+ /* BD.W-TAB-IOS-CAPSULE — the `.glass-capsule` warm-floor (C6). `--card` itself
161
+ is too pale to clear the meanChroma ≥ 0.02 floor (its own OKLab chroma is
162
+ ~0.015), so the capsule composes a SMALL fixed floor toward an explicitly
163
+ WARM oklch source — a warm cream/amber that carries real chroma. This is the
164
+ build-trap-(d) safe form (a warm color, never bare `transparent`). At the 16%
165
+ floor the painted capsule fill clears chroma ≥ 0.02 with negligible L lift
166
+ (stays near-white). Mode-invariant warm (the oklch reads warm on both the
167
+ light cream page and the dark canvas — the warm-floor is a property of the
168
+ LOZENGE, not the page); the floor is INDEPENDENT of the `--glass-tint-strength:
169
+ 0%` adaptive default (which is zero-delta at rest, lifting only under the
170
+ bright bucket). Both are composed in `.glass-capsule`'s fill. */
171
+ --glass-capsule-warm: oklch(0.88 0.1 75);
172
+ --glass-capsule-warm-floor: 16%;
173
+
174
+ /* BD.W-TAB-IOS-CAPSULE — the `.glass-capsule-track` recess ink (the iOS-27
175
+ sunken-well inner-top edge). A PLAIN per-mode pair — this light arm + the dark
176
+ arm in `tokens/dark-arm.css`. NEVER a `light-dark()` fragment: an inset-shadow
177
+ leg inside `light-dark()` computes the WHOLE `box-shadow` to `none` (the
178
+ binding MEMORY lesson) and the recess would silently vanish. Bounded warm ink
179
+ so it darkens the inner-top edge without re-coloring the warm fill (no gray
180
+ well). */
181
+ --tab-track-recess-ink: color-mix(in srgb, var(--foreground) 7%, transparent);
182
+
86
183
  /* AX.W55 — adaptive glass legibility (the iOS-26/27 "locally darken the glass
87
184
  over light content" move; G2). There is NO web API that reads the pixels
88
185
  painted BEHIND a `backdrop-filter` element, so the backdrop-luminance signal
@@ -120,8 +217,32 @@
120
217
  bucket blocks drive to; the live 4.5:1 readback (proof:adaptive-glass π arm)
121
218
  ratifies the exact value. */
122
219
  --glass-backdrop: dark;
123
- --glass-backdrop-luma: ;
124
220
  --glass-tint-ink: var(--foreground);
221
+
222
+ /* BD.W-DOCK-CORE (D1) — the warm-CHROMATIC dock tint ink (the keystone, RESEARCH-3).
223
+ The dock self-engage (dock/morph.css) mixes its thin ~0.42-alpha plate toward the
224
+ near-black `--foreground` (chroma ≈ 0.0062) → it darkens L with chroma DEAD-FLAT (the
225
+ gray dock the user reports). This dock-SCOPED ink extracts the foreground's warm
226
+ hue/chroma via `oklch(from …)` (the BB.W-DARK-INK-WARM idiom — NOT a new mechanism),
227
+ LIFTS the chroma to 0.05 (well above foreground's 0.0062), and DROPS L to 0.42 (the
228
+ darken anchor). At the bright-bucket AA engage the composited plate yields a WARM
229
+ material darken (C ≈ 0.016, ~2× HEAD, H ≈ 62°) — never gray. The OUTER mix stays
230
+ `color-mix(in oklab)` (the glass-tint family, AW.W26 in-srgb fence untouched); this
231
+ `oklch(from)` is only the INK SOURCE. The GLOBAL `--glass-tint-ink` above is FROZEN
232
+ (W-DARK-MATERIAL's whole-system register) — this is a NEW dock-scoped token read ONLY
233
+ by the dock self-engage (file-line-disjoint, no-dual-path). */
234
+ --glass-tint-ink-dock: oklch(from var(--foreground) 0.42 0.05 h);
235
+
236
+ /* BC.W-ADAPTIVE-RECONCILE — the ONE retune knob for the continuous observer
237
+ driver. `--glass-backdrop-luma` (the measured sampled relative-luminance the
238
+ useGlassBackdropLuminance observer WRITES, registered typed in property-regs.css)
239
+ is now READ on the RHS of the `--glass-tint-strength` clamp (glass/ladder.css +
240
+ dock/morph.css): below this knee the plate holds the calm warm-cream floor; above
241
+ it the strength ramps CONTINUOUSLY toward the ≤24% AA ceiling (the iOS-27 dynamic-
242
+ range shift, apple-ios27.md §1.5 ~0.6 light threshold). The dead-knob is closed —
243
+ the loop READS. A consumer raising the knee darkens LATER (a brighter backdrop is
244
+ tolerated before the lift); the ONE override point for the whole adaptive axis. */
245
+ --glass-backdrop-luma-knee: 0.6;
125
246
  /* AZ.W-ADAPTIVE-AUTO Arm 1 — recalibrated 18% → 20%. The bump strengthens the
126
247
  G2 surface-SILHOUETTE darken (ΔL ≈ 0.40 over synthetic white, the plate is
127
248
  distinguishable from a bright page behind) while staying bounded ≤ 24% (the
@@ -91,12 +91,45 @@
91
91
  opacity-only register. */
92
92
  --glass-blur-dock-radius: 9px;
93
93
 
94
+ /* ── Per-rung SATURATE — the CANONICAL named saturate register (BC.W-GLASS-
95
+ LEGIBILITY-MEASURED, the speedtest-AX BC-W10 fold) ───────────────────────
96
+ The saturate term is the LOAD-BEARING glass knob (research/apple-glass.md §4:
97
+ the apple.com nav rides `saturate(1.8)` — the highest term, blur moderate).
98
+ Each `--glass-saturate-{tier}` is the library's canonical saturation for that
99
+ rung — a NAMED, `:root`-overridable input the composed `--glass-blur-{tier}`
100
+ reads THROUGH, the SAME substitution-vs-redeclaration discipline as the
101
+ `--glass-opacity-{tier}` alpha register above. A `:root { --glass-saturate-
102
+ quiet: … }` override re-resolves the rung's saturation with ZERO recipe edit
103
+ (the speedtest "dark cards" chronic + the apple-glass saturate-as-load-bearing
104
+ lever). The values here ARE the W52-D19 bake (wash/quiet/resting 1.05,
105
+ floating 1.18, overlay 1.2) become the token defaults — so the composed blur
106
+ is BYTE-IDENTICAL to the old baked literal (proof:glass-cal / proof:card-tier-
107
+ alpha stay GREEN by construction). The deep-tier `--glass-saturate-deep` 1.8
108
+ ceiling (glass-deep.css) is the upper bound; no rung saturate exceeds it. The
109
+ dark arm (tokens/dark-arm.css) re-declares this register with the W-DARK-
110
+ MATERIAL luminosity lift — the SAME named tokens, per-mode (the plain per-mode
111
+ pair idiom). The brightness() companions stay baked (this fold mints ONLY the
112
+ saturate knob). Machine-locked by `proof:glass-legibility` L7. */
113
+ --glass-saturate-wash: 1.4;
114
+ --glass-saturate-quiet: 1.4;
115
+ --glass-saturate-resting: 1.4;
116
+ --glass-saturate-floating: 1.6;
117
+ --glass-saturate-overlay: 1.6;
118
+ /* W-NAV-DOCK-FIX — the dock's named light-concentration saturate. The dock is a
119
+ calm chrome strip (the wash/quiet/resting register 1.4, NOT the floating 1.6).
120
+ Mirrors the dark arm's dock saturate; the single retune knob in both modes. The
121
+ light dock was the ONLY light surface with no saturate companion — over the flat
122
+ warm-cream page the un-saturated backdrop-filter pulled the cream toward neutral
123
+ (the flat-slab gray read). */
124
+ --glass-saturate-dock: 1.4;
125
+
94
126
  /* AX.W54 — each blur radius is scaled by the ONE `--glass-level` scalar (in
95
127
  lockstep with the opacity seam above): level=1 byte-identical; level=0 →
96
128
  blur(0) (the clean solid floor with the opacity); level>1 → more diffusion.
97
- The per-rung `saturate()`/`brightness()` companions are UNTOUCHED (the level
129
+ The per-rung `saturate()` companion reads the named `--glass-saturate-{tier}`
130
+ knob (BC.W-GLASS-LEGIBILITY-MEASURED); `brightness()` stays baked (the level
98
131
  scales the RADIUS, not the saturation — W52's calm light-concentration). */
99
- --glass-blur-wash: blur(calc(var(--glass-blur-wash-radius) * var(--glass-level))) saturate(1.05);
132
+ --glass-blur-wash: blur(calc(var(--glass-blur-wash-radius) * var(--glass-level))) saturate(var(--glass-saturate-wash));
100
133
  /* AV.W15 M1 — the `quiet` rung gained `saturate(1.05) brightness(1.02)`
101
134
  so the lower ladder reads with the same saturation life as `resting`+
102
135
  (Apple: Liquid Glass concentrates light, it does not desaturate). The
@@ -104,34 +137,93 @@
104
137
  between bare `wash` and `resting` without over-brightening the rung.
105
138
  The `prefers-reduced-transparency: reduce` bracket at glass.css maps
106
139
  `--glass-blur-quiet: none`, so this whole chain drops with the blur. */
107
- --glass-blur-quiet: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(1.05) brightness(1.02);
108
- --glass-blur-resting: blur(calc(var(--glass-blur-resting-radius) * var(--glass-level))) saturate(1.05);
140
+ --glass-blur-quiet: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(var(--glass-saturate-quiet)) brightness(1.02);
141
+ --glass-blur-resting: blur(calc(var(--glass-blur-resting-radius) * var(--glass-level))) saturate(var(--glass-saturate-resting));
109
142
  /* AX.W52 D19 — the floating/overlay backdrop saturate tamed from 1.4/1.5 to a
110
143
  gentle ~1.18/1.2 (real liquid glass concentrates light ~1.1–1.2×; the prior
111
144
  1.4–1.5× over-juiced the bleed-through into a garish smear over a colored
112
145
  substrate). wash/quiet/resting already sit at 1.05 — untouched. */
113
- --glass-blur-floating: blur(calc(var(--glass-blur-floating-radius) * var(--glass-level))) saturate(1.18);
114
- --glass-blur-overlay: blur(calc(var(--glass-blur-overlay-radius) * var(--glass-level))) saturate(1.2);
146
+ --glass-blur-floating: blur(calc(var(--glass-blur-floating-radius) * var(--glass-level))) saturate(var(--glass-saturate-floating));
147
+ --glass-blur-overlay: blur(calc(var(--glass-blur-overlay-radius) * var(--glass-level))) saturate(var(--glass-saturate-overlay));
115
148
  /* Dock blur composes blur() only — no saturate. */
116
- --glass-blur-dock: blur(calc(var(--glass-blur-dock-radius) * var(--glass-level)));
117
-
118
- /* AX.W52 — the GLASS BUTTON blur. The `glass`/`glass-wash` button variants
119
- compose the `.glass-wash` tier (`--glass-blur-wash` = blur(1px)) — a
120
- sub-perceptual diffusion authored for a small detail TILE, not a button
121
- the user reads as "glass." A button is a hero control: it wants a real
122
- glass blur. `--glass-blur-btn` lifts the variant onto the `quiet`-tier
123
- radius (10px — a genuine liquid-glass diffusion) with the same gentle
124
- `saturate(1.05) brightness(1.02)` light-concentration the quiet rung
125
- carries (NOT a colour-juice). The wash TILE tier (MetricCell et al.) keeps
126
- its 1px — only the glass BUTTON variants reach for this. */
127
- --glass-blur-btn: blur(calc(var(--glass-blur-quiet-radius) * var(--glass-level))) saturate(1.05) brightness(1.02);
149
+ /* W-NAV-DOCK-FIX — the dock concentrates light like every other tier (apple-glass
150
+ §4): the saturate lifts the warm-cream chroma THROUGH the plate, the small
151
+ brightness is the light-concentration the quiet rung carries. The blur RADIUS is
152
+ untouched (the W-GLASS-CAL dial). Compositor-only (backdrop-filter is a paint op);
153
+ the prefers-reduced-transparency bracket maps --glass-blur-dock: none, so the
154
+ saturate drops with the blur (no separate carve owed). */
155
+ --glass-blur-dock:
156
+ blur(calc(var(--glass-blur-dock-radius) * var(--glass-level)))
157
+ saturate(var(--glass-saturate-dock))
158
+ brightness(1.02);
159
+
160
+ /* AX.W52 → BC.W-GLASS-LEGIBILITY-MEASURED — the GLASS BUTTON blur, lifted to
161
+ the FLOATING-tier "more glass" register. The `glass`/`glass-wash` button
162
+ variants compose the `.glass-wash` tier (`--glass-blur-wash` = blur(1px)) — a
163
+ sub-perceptual diffusion authored for a small detail TILE, not a button the
164
+ user reads as "glass." A button is a hero control: it wants a real glass blur.
165
+ The AX.W52 landing sat at the quiet-tier 8px/saturate(1.05) — "quieter than
166
+ even the calm floating tier" (apple-ios27.md §4.2). This wave lifts it to the
167
+ FLOATING-tier register (apple-ios27.md §5 bake-table "button blur lift to
168
+ 10-13 / 1.18"): the floating radius (13px, in the 10-13 band) + the named
169
+ `--glass-saturate-floating` knob (1.18) — a genuinely MORE-glass transmissive
170
+ capsule revealing the craft beneath (the apple-glass SUPERSET: apple.com's web
171
+ CTA is a SOLID blue capsule, zero blur — research/apple-glass.md §1.4). The
172
+ `brightness(1.02)` light-concentration the quiet rung carried is KEPT (no
173
+ colour-juice). Clean break — the old 8px/quiet value is GONE, no alias. The
174
+ wash TILE tier (MetricCell et al.) keeps its 1px — only the glass BUTTON
175
+ variants reach for this. Machine-locked by `proof:glass-legibility` L3. */
176
+ --glass-blur-btn: blur(calc(var(--glass-blur-floating-radius) * var(--glass-level))) saturate(var(--glass-saturate-floating)) brightness(1.02);
128
177
 
129
178
  /* Dock-specific opacity (0.42) — lighter than `resting` (0.65) so the dock
130
179
  reads as a translucent overlay rather than a panel, backdrop bleed
131
180
  visible through it. Consumed by `.glass-dock` via `--glass-bg-dock`. The
132
181
  value holds the surface register against the tightened 11px blur so the
133
182
  dock reads as painted chrome, not a frosted ghost. */
134
- --glass-opacity-dock: 0.42;
183
+ /* BD.W-DOCK-CORE (D3) — the dock base alpha lifts 0.42 → 0.50 (margin-insurance for
184
+ the warm-chromatic darken: the base composite chroma closes a notch before any tint
185
+ engages). Stays the lightest chrome tier (below resting 0.65), mode-invariant. */
186
+ --glass-opacity-dock: 0.50;
187
+
188
+ /* Dialog-specific opacity (0.68) — BC.W-DIALOG-GLASS. The iOS-27 control-
189
+ center modal register: SEE-THROUGH frosted glass that reveals the page
190
+ beneath, NOT the floating-tier near-opaque slab (0.80 read as "NOT glassy
191
+ at all"). 0.68 sits between `resting` (0.65 — transparent enough to read
192
+ through) and `floating` (0.80 — opaque enough for AA legibility against
193
+ the bright bucket), so the modal floats with the FLOATING-tier lift (edge/
194
+ rim/under-shadow) while reading at the RESTING-tier transparency. The
195
+ LIBRARY iOS-modal identity (presets-in-consumers — a consumer retunes
196
+ `--glass-bg-dialog` via :root). Consumed by DialogContent.vue, which re-
197
+ declares `--glass-bg-floating: var(--glass-bg-dialog)` on the dialog scope
198
+ (the self-re-point recipe, the dock precedent — NOT a raw rung override
199
+ that won't re-compose). */
200
+ --glass-opacity-dialog: 0.68;
201
+
202
+ /* Sheet-specific opacity (0.74) — BE.W-SHEET-TRANSLUCENT. The iOS-27 bottom-
203
+ sheet register: SEE-THROUGH frosted glass whose lifted crown reveals the
204
+ page/album grid beneath, NOT the near-opaque overlay slab (0.95 read as "not
205
+ glassy"). 0.74 sits BETWEEN the dialog 0.68 (transparent enough that the
206
+ backdrop reads through) and the overlay 0.95 (opaque enough for AA body text
207
+ against a busy grid) — a sheet is content-bearing, so it sits a hair above the
208
+ dialog. The composed `--glass-bg-sheet` rides the SAME oklab-tint-wrapped
209
+ recipe `--glass-bg-dialog` speaks, so the W55 bright-bucket darken + the
210
+ `--glass-level` opaque escape + the dark-arm saturate companions reach the
211
+ sheet with ZERO new compositing seam. Drawer + Sheet self-re-point onto it.
212
+ Presets-in-consumers — a consumer retunes `--glass-opacity-sheet` via :root. */
213
+ --glass-opacity-sheet: 0.74;
214
+
215
+ /* Clear-specific opacity (0.58) — BE.W-CLEAR-VARIANT. The Apple-Clear MAXIMALLY
216
+ translucent register — the clearest rung the library ships, BELOW the dialog
217
+ 0.68 (the now-playing pill, the Control-Center clear tile: the album grid
218
+ bleeds genuinely through). It is STRUCTURALLY coupled to a MANDATORY legibility
219
+ scrim (the `surface="clear"` decoration carries a `::before` backdrop-dim whose
220
+ strength derives from the sampled `--glass-backdrop-luma`) — a scrim-less clear
221
+ plate is FORBIDDEN by construction (the Apple Clear contract: near-transparent →
222
+ the text needs a scrim floor). 0.58 sits in the Apple-Clear band (clearer than
223
+ the modal 0.68, still a plate not a ghost — > 0.45). The composed
224
+ `--glass-bg-clear` rides the SAME oklab-tint-wrapped recipe so the W55 darken +
225
+ the `--glass-level` escape reach it. Presets-in-consumers — retune via :root. */
226
+ --glass-opacity-clear: 0.58;
135
227
 
136
228
  /* Dock foreground over an animated backdrop. A dock floating over an
137
229
  aurora/animated surface (`value.js` dock-over-aurora, a slides routed
@@ -178,22 +270,73 @@
178
270
  second hand-rolled recipe. */
179
271
  --glass-bg-dock: color-mix(in oklab, color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-dock)) * var(--glass-level)) * 100%), transparent), var(--glass-tint-source) var(--glass-tint-strength));
180
272
  --glass-bg-chassis: color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-chassis)) * var(--glass-level)) * 100%), transparent);
273
+ /* BC.W-DIALOG-GLASS — the dialog plate bg, composed the SAME oklab-tint-wrapped
274
+ way the dock self-re-points (so the BC.W-ADAPTIVE-RECONCILE darken reaches the
275
+ modal over a bright backdrop without a second hand-rolled recipe). The 0.68
276
+ opacity is the iOS-27 control-center register (see `--glass-opacity-dialog`).
277
+ DialogContent.vue re-declares `--glass-bg-floating: var(--glass-bg-dialog)` on
278
+ the dialog scope (the documented retune path — the self-re-point, NOT a raw
279
+ rung override) so the floating edge/rim/under-shadow LIFT survives the
280
+ transparency drop. */
281
+ --glass-bg-dialog: color-mix(in oklab, color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-dialog)) * var(--glass-level)) * 100%), transparent), var(--glass-tint-source) var(--glass-tint-strength));
282
+ /* BE.W-SHEET-TRANSLUCENT — the bottom-sheet plate bg, composed the SAME oklab-
283
+ tint-wrapped way the dialog self-re-points (so the W55 darken + the dark-arm
284
+ saturate companion reach the see-through sheet without a second hand-rolled
285
+ recipe — byte-isomorphic to `--glass-bg-dialog`, only the opacity token
286
+ differs). Drawer + SheetContent re-declare `--glass-bg-floating:
287
+ var(--glass-bg-sheet)` on their scope (the self-re-point recipe — NOT a raw
288
+ rung override that won't re-compose) so the floating edge/rim/under-shadow LIFT
289
+ survives the transparency drop. */
290
+ --glass-bg-sheet: color-mix(in oklab, color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-sheet)) * var(--glass-level)) * 100%), transparent), var(--glass-tint-source) var(--glass-tint-strength));
291
+ /* BE.W-CLEAR-VARIANT — the maximally-translucent Apple-Clear plate bg, composed
292
+ the SAME oklab-tint-wrapped way (so the W55 darken reaches the clear plate).
293
+ The `surface="clear"` decoration reads this fill AND couples its MANDATORY
294
+ `::before` legibility scrim (the scrim dims the BACKDROP — distinct from this
295
+ PLATE tint; the two axes stay disjoint). Byte-isomorphic to `--glass-bg-dialog`,
296
+ only the (lower) clear opacity differs. */
297
+ --glass-bg-clear: color-mix(in oklab, color-mix(in srgb, var(--card) calc((1 - (1 - var(--glass-opacity-clear)) * var(--glass-level)) * 100%), transparent), var(--glass-tint-source) var(--glass-tint-strength));
298
+
299
+ /* ── BE.W-TINTED-CHIP — the per-INSTANCE PLATE-FILL tint axis (`--glass-fill-tint`
300
+ / `--glass-fill-strength`) ──────────────────────────────────────────────────
301
+ The THIRD per-instance chromatic axis (BESIDE the rim `--glass-accent` and the
302
+ whole-plate legibility `--glass-tint-source`): `--glass-fill-tint` tints the
303
+ plate BACKGROUND BODY toward a consumer DATA hue, so a glass surface reads as
304
+ COLORED GLASS (a green chip, a violet facet) without re-declaring the composed
305
+ `--glass-bg-*` token. DISTINCT-not-fork of `--glass-accent` (which tints only the
306
+ RIM + the `::before` specular CORE — file-line-disjoint): the fill writes the
307
+ plate body, the accent writes the rim; a chip may carry BOTH. The mix is `in
308
+ oklab` (the perceptual glass-tint family — NOT the in-srgb `--surface-tint-*`
309
+ brand-overlay fence, AW.W26). It rides ON TOP of the W55 legibility composite
310
+ (the plate still darkens-over-light for AA AND carries the data hue — additive,
311
+ never a replacement). At the `@property` defaults (transparent + 0%) the body is
312
+ byte-identical to today (`color-mix(in oklab, X, transparent 0%)` ≡ X — the no-op
313
+ floor). `<GlassChip :tone>` is the first-class consumer (BE.W-TINTED-CHIP
314
+ component) — the fill is read on the surface, never written into a `--glass-bg-*`
315
+ token here. The `@property` registration is below (the typed no-op floor). */
181
316
 
182
- /* Composed borders — foreground-tinted. BA.W-NO-GRAY L3 — the warm RIM
183
- re-anchor (G9). The rim IS warm (it rides --foreground, hsl-24 warm ink),
184
- but at 8-12% α over a near-white plate it was a near-invisible hairline —
185
- the plate had no carved silhouette, reading as a borderless gray rectangle
186
- (the user's "no gray ... for cards"). The α lifts a few points per rung so
187
- the warm hairline CARVES the silhouette (the WWDC25 "rim that defines the
188
- silhouette" device, on the warm-ink register). Still bounded low — the rim
189
- is a whisper that defines the edge, never a hard rule. The source stays
190
- --foreground (the warm-ink tint, NOT a new color); only the presence lifts. */
191
- --glass-border-wash: color-mix(in srgb, var(--foreground) 11%, transparent);
192
- --glass-border-quiet: color-mix(in srgb, var(--foreground) 13%, transparent);
193
- --glass-border-resting: color-mix(in srgb, var(--foreground) 16%, transparent);
194
- --glass-border-floating: color-mix(in srgb, var(--foreground) 19%, transparent);
195
- --glass-border-overlay: color-mix(in srgb, var(--foreground) 22%, transparent);
196
- --glass-border-dock: color-mix(in srgb, var(--foreground) 14%, transparent);
317
+ /* Composed borders — foreground-tinted. BC.W-BLACK-BAR D2 — the perimeter
318
+ hairline is RETIRED as the silhouette device. The old 11-22% warm-ink rung
319
+ borders rode --foreground (oklab L 0.216, near-black warm ink); over a
320
+ near-white cream plate the full-perimeter hairline read as the user's "wtf
321
+ is this black bar" — worst on the TOP edge where the bright white catch-light
322
+ ring sat just inside a dark border (a bright rim and a dark line at war on the
323
+ SAME edge). The silhouette is now carved by the directional rim
324
+ (--glass-rim-top catch-light + --glass-rim-bottom under-shadow, glass-fx.css),
325
+ NOT by this perimeter ink. So each rung drops to ≤5% α — the warm hue stays
326
+ --foreground (the warm-not-tinted identity, BA.W-NO-GRAY), only the PRESENCE
327
+ falls below the read-threshold so the hairline can never read as a bar. The
328
+ +1% on the two heaviest rungs (floating/overlay) holds a faint tier-presence
329
+ ordering without crossing the threshold (apple-ios27.md §5 "top ≤4%" target). */
330
+ --glass-border-wash: color-mix(in srgb, var(--foreground) 4%, transparent);
331
+ --glass-border-quiet: color-mix(in srgb, var(--foreground) 4%, transparent);
332
+ --glass-border-resting: color-mix(in srgb, var(--foreground) 4%, transparent);
333
+ --glass-border-floating: color-mix(in srgb, var(--foreground) 5%, transparent);
334
+ --glass-border-overlay: color-mix(in srgb, var(--foreground) 5%, transparent);
335
+ /* W-NAV-DOCK-FIX — the dock is FLOATING chrome over an UNKNOWN backdrop (unlike a
336
+ content card on the page), so it earns a readable warm-INK hairline (the iOS-27
337
+ edge-rim layer). 8% warm-ink is still a whisper, never a black bar (--foreground
338
+ H≈56° → a WARM rim, never a gray line). */
339
+ --glass-border-dock: color-mix(in srgb, var(--foreground) 8%, transparent);
197
340
  --glass-border: var(--glass-border-quiet);
198
341
 
199
342
  /* ── The control REST register (BA.W-SURFACE-AXIS scope 7) ────────────────
@@ -218,3 +361,52 @@
218
361
  under-shadow/overlay-scrim) lives in tokens/glass-fx.css (carved at BB.W-CARVE4
219
362
  — the next adjacent :root{} block in the cascade). */
220
363
  }
364
+
365
+ /* ── BE.W5 foundation — the typed per-instance axes (the @property no-op floors) ──
366
+ Registered HERE beside the §8 glass tokens (the canonical @property idiom home is
367
+ tokens/property-regs.css; these foundation axes live with the §8 ladder they
368
+ compose so the BE Tier-0 foundation is one self-contained partial). Each mirrors the
369
+ `--glass-accent`/`--glass-accent-strength` registration shape: a `<color>` HUE +
370
+ a `<percentage>` STRENGTH, both `inherits: true` (a host sets them on any ancestor
371
+ to retune the sub-tree) with the NEUTRAL no-op identity (`transparent` / `0%`) so
372
+ an unset surface is byte-identical to today — `color-mix(in oklab, X, <hue> 0%)` ≡ X.
373
+ A malformed override CLAMPS to the initial-value (the typed fail-safe). */
374
+
375
+ /* BE.W-AMBIENT-TINT — the backdrop hue the glass absorbs. `useGlassBackdropLuminance`
376
+ writes a sampled `oklch()` modal hue here (at a FIXED sub-perceptual chroma — a HUE
377
+ event, never the backdrop's saturation); a gray backdrop writes `transparent` (the
378
+ room tints nothing). The `transparent` initial-value is the neutral identity. */
379
+ @property --glass-ambient-hue {
380
+ syntax: "<color>";
381
+ inherits: true;
382
+ initial-value: transparent;
383
+ }
384
+
385
+ /* The opt-in ambient bias knob — the EXISTING `--glass-tint-source` self-engage
386
+ re-point biases toward `--glass-ambient-hue` at this strength (bounded ≤ 8% in the
387
+ cascade — sub-perceptual under the W55 `--glass-tint-strength-aa` bound). `0%`
388
+ default is the no-op floor (the un-biased `--glass-tint-ink`); the dock wires it on. */
389
+ @property --glass-ambient-strength {
390
+ syntax: "<percentage>";
391
+ inherits: true;
392
+ initial-value: 0%;
393
+ }
394
+
395
+ /* BE.W-TINTED-CHIP — the per-INSTANCE PLATE-FILL tint. A complete `<color>` data hue
396
+ the plate BODY mixes toward (`in oklab`, ON TOP of the W55 legibility composite —
397
+ DISTINCT from the rim `--glass-accent`). `transparent` is the neutral identity (the
398
+ no-op floor: `color-mix(in oklab, X, transparent 0%)` ≡ X). */
399
+ @property --glass-fill-tint {
400
+ syntax: "<color>";
401
+ inherits: true;
402
+ initial-value: transparent;
403
+ }
404
+
405
+ /* The fill-tint bounded strength — `0%` default (an unset surface carries no fill
406
+ tint, byte-identical to today). A consumer (`<GlassChip :strength>`) dials it for a
407
+ louder colored-glass chip; the body ink stays legible (the W-ON-GLASS-FG floor). */
408
+ @property --glass-fill-strength {
409
+ syntax: "<percentage>";
410
+ inherits: true;
411
+ initial-value: 0%;
412
+ }
@@ -98,8 +98,8 @@
98
98
  BA.W-NO-GRAY L1 — the LIGHT arm DECOUPLES off the near-achromatic page onto the
99
99
  warm-cream plate hsl(36 48% 97%) (LOCKSTEP color-radius.css --card) so the light
100
100
  glass plate reads warm-not-gray; the dark arm is UNCHANGED (W-DARK-MATERIAL's). */
101
- --card: light-dark(hsl(36 48% 97%), hsl(24 8% 16%));
102
- --popover: light-dark(hsl(36 48% 97%), hsl(24 8% 16%));
101
+ --card: light-dark(hsl(30 85% 96%), hsl(26 22% 17%));
102
+ --popover: light-dark(hsl(30 85% 96%), hsl(26 22% 17%));
103
103
  --surface-public-data-panel: light-dark(hsl(44 16% 96%), hsl(36 9% 18%));
104
104
 
105
105
  /* BA.W-DARK-MATERIAL scope 4 — the chromatic dark --primary (legendre-violet house
@@ -131,7 +131,7 @@
131
131
  --section-color-2: light-dark(oklch(0.484 0.163 265.5), oklch(0.718 0.107 268.4));
132
132
  --section-color-3: light-dark(oklch(0.542 0.089 222.8), oklch(0.767 0.091 219.9));
133
133
  --section-color-4: light-dark(oklch(0.551 0.088 171.1), oklch(0.776 0.105 172.6));
134
- --section-color-5: light-dark(oklch(0.623 0.124 69.6), oklch(0.813 0.109 78.2));
134
+ --section-color-5: light-dark(oklch(0.530 0.124 69.6), oklch(0.813 0.109 78.2));
135
135
  --section-color-6: light-dark(oklch(0.579 0.201 30.4), oklch(0.693 0.151 28.1));
136
136
  --section-color-7: light-dark(oklch(0.532 0.180 317.5), oklch(0.739 0.134 318.1));
137
137
  --section-color-8: light-dark(oklch(0.520 0.176 8.4), oklch(0.709 0.142 2.3));
@@ -108,6 +108,33 @@
108
108
  it claimed to back never read it — PopoverContent paints `p-4` directly), so
109
109
  it was an orphan declaration the golden-padding cut prunes. */
110
110
  --panel-padding: 0.375rem;
111
+
112
+ /* BC.W-OVERLAY-UNIFORM — the token-BACKING of the raw floating-overlay
113
+ literals (the token-beats-prop seam). Each defaults to the byte-identical
114
+ HEAD magnitude so a bare overlay is pixel-unchanged; a consumer retunes
115
+ EVERY overlay's min-width / max-block / tooltip type / select chevron from
116
+ ONE `:root` override (the uniformity payoff). These are token-backings of
117
+ EXISTING raw literals (`min-w-32` / `max-h-[60vh]` / tooltip `text-sm` /
118
+ chevron `opacity-50`) — NOT a new compositing register (the `surface` axis
119
+ + the φ `--overlay-pad-*` ladder are THREADED, not re-minted). */
120
+ /* `min-w-32` = 32 × 0.25rem = 8rem — the dropdown/select/context-menu min-width. */
121
+ --overlay-min-width: 8rem;
122
+ /* The collision-bounded max-block ceiling the dropdown (`max-h-[60vh]`) +
123
+ command list (`max-h-[300px]`) read. Defaults to 60vh — the viewport-
124
+ relative ceiling so a long menu scrolls inside the overlay rather than
125
+ running off-screen. (The Select precompiled `[data-slot="select-content"]`
126
+ max-height in select.css is the BA.W-EMISSION consumer-reach floor — KEPT,
127
+ not threaded here; see the census on-the-line row.) */
128
+ --overlay-max-block: 60vh;
129
+ /* The tooltip type rung — the golden quiet caption register (√φ ladder), the
130
+ token-backing of the bare `text-sm` on TooltipContent (the overlay share of
131
+ class 3). Defaults to `--type-caption` so the compact tooltip chip reads the
132
+ house caption scale; a consumer retunes the tooltip type from `:root`. */
133
+ --tooltip-text: var(--type-caption);
134
+ /* The Select trigger chevron opacity — the token-backing of the bare
135
+ `opacity-50` so a consumer retunes the affordance prominence from `:root`. */
136
+ --select-chevron-opacity: 0.5;
137
+
111
138
  --chart-height-compact: 15rem;
112
139
  --chart-height-default: 22.5rem;
113
140
  --chart-height-large: 25rem;